Title photo
frugal technology, simple living and guerrilla large-appliance repair
Sun, 18 Jun 2017

Debian 9.0 Stretch is the new Stable

I don't keep up with Debian, though my sentimental feelings for the pioneering Linux distribution remain strong. My days with Debian were late Etch into Lenny, Squeeze and early Wheezy. For the release of Squeeze, I used SVG files from the desktop's awesome artwork and made a custom T-shirt that I still wear.

Not to bury the lede too far, the news of the day is that Debian 9.0 Stretch has been released as Stable. For more on Stretch, read the installation manual and release notes.

I still have an old IBM Thinkpad R32 that runs Debian -- I can't remember if it is still on Wheezy, though it probably is.

For my laptops, I started running Fedora when I got a new laptop in 2010 -- a Lenovo G555 with an AMD processor. Since I was using the proprietary Catalyst video driver, I eventually broke the installation and moved to Debian, which I ran on the laptop until it died in 2013. I began again with Fedora on my next laptop, an HP Pavilion g6, and it is still running that version of Linux (and I'm using it right now to write this post). I now have a new HP laptop, an Envy, that is still running the Windows 10 it came with, and I added the Windows Subsystem for Linux/Bash so I can have a fairly functional Linux command line.

So I'm not a current Debian user. Especially on the desktop, I want newer versions of just about everything, and I find it easier to get that in the twice-yearly releases of Fedora instead of Debian Testing or Unstable. Debian Stable, which I've used and loved, is just too "stable."

But if you think about it, I could easily run Debian Stable and add newer versions of Node, Java, Ruby and NetBeans. When a laptop is new, I find Fedora to be the easiest, quickest and best way to get the most hardware working, but after a couple of years, Debian is a very attractive option.

With newer hardware, there's always the Liquorix kernels, which I used to run so I'd always have the latest on my Debian installations.

For my programming needs, Node is certainly part of Debian Stretch, but this part of the release notes is a little worrying:

5.2.2. Lack of security support for the ecosystem around libv8 and Node.js

The Node.js platform is built on top of libv8-3.14, which experiences a high volume of security issues, but there are currently no volunteers within the project or the security team sufficiently interested and willing to spend the large amount of time required to stem those incoming issues.

Unfortunately, this means that libv8-3.14, nodejs, and the associated node-* package ecosystem should not currently be used with untrusted content, such as unsanitized data from the Internet.

In addition, these packages will not receive any security updates during the lifetime of the stretch release.

I checked the v8 package in Fedora, and it appears to be updated about every month, though not at all for the past three months. I'm not sure what to take away from this. I'd have to look at the upstream v8 before making any judgments on how well Fedora is doing with the package, plus I'd need to see how Ubuntu handles it.

Back to Debian. The Debian Project is the code that goes into it and the volunteers that make it happen. Debian is not owned by any corporation, individual or group. It'll pretty much always be there and be free.

Does Debian benefit from work done by corporations like Red Hat? Yes, it does. Free software in general and Linux in particular are coded by individuals all over the world, some of whom are paid by companies to make their contributions.

However it finally goes together, Debian is a special project.

The short version: If you can make Debian Stable work for you, it's a terrific operating system that really is stable and will last you a couple of years without a major upgrade. If you're interested, it's worth a test on your hardware before committing to a Linux distribution. On my computers, the "contenders" are Debian, Ubuntu (mainly the Xubuntu version with Xfce) and Fedora.

Eloquent Javascript, Chapter 3 (Functions) -- what the hell?

I read Chapter 3 of Eloquent Javascript some time ago, and it's a difficult one. It introduces the concept of functions. Quickly introduced are: Parameters and Scopes, Nested Scopes, Closure and Recursion.

It is too much, too fast with too few examples. I was able to do the first exercise, Minimum, but got lost in the second, Recursion.

Here is my solution for Minimum:

#!/usr/bin/env node
/* Eloquent Javascript, Chapter 3, Page 56, Exercises 
Create a function to find the minimum of two arguments

By Steven Rosenberg, 6/17/2017 */

function smallest(first_number, second_number) {
    if (first_number < second_number)
        return first_number;
    else if (second_number < first_number)
        return second_number;
        console.log("They are equal")

// Output will be the smallest of these two numbers
console.log(smallest(100, 2));

Expressing this as a function doesn't really do much. The program could just as easily have been written in a straight "procedural" format. But it's a function, and it works.

The second problem on recursion stumped me. I'm pretty sure I can figure it out, but I need more time to think (and look up more on recursion).

Tue, 13 Jun 2017

Sitepoint: How I Designed & Built a Fullstack JavaScript Trello Clone

Sitepoint: How I Designed & Built a Fullstack JavaScript Trello Clone by Moustapha Diouf.

This article and accompanying repo show how Moustapha Diouf built this React app with Express and Mongo.

Sat, 10 Jun 2017

Java and the Windows command prompt

Java and the Windows command prompt might explain why you're having issues with the java and javac commands.

Things I did in Windows 10: Add Java and Groovy, fix Geany for HD display

As much as I know I should be focusing on JavaScript, I keep feeling the pull of Java, so I got my environment together on Windows 10 for Java and Groovy, and I "fixed" the Geany text editor/mini-IDE so it's no longer blurry on my HD screen.

While the java command and the Groovy console both worked, the javac (used to compile a Java program) and groovy programs did not work until I set their paths in Windows settings (more detail later).

Why Groovy? I have a programming book by Adam L. Davis I bought on LeanPub called Modern Programming Made Easy, now published by Apress, that encourages the use of Groovy as a way for beginners to learn without all of the rules and the need for compilation of "real" Java. Groovy takes Java and presents it as a scripting-style language with much simpler syntax. I took to it right away. (More on the book and its author when I clear up the status of both.)

I like to use Geany as my text editor for Java because I can compile and run a program without leaving the editor. That's why it's called a mini-IDE. Plus I'm lazy that way. Geany will also compile and run your C++ code and run your programs in Perl, Python and Ruby. I've never gotten it to run Node. Instead, I use Visual Studio Code for Node.

I did the C++ homework for my Intro to CS class in Geany when the programs were short, moving to NetBeans when I had too many sets of brackets and wanted to take advantage of the automatic formatting, which is your very good friend when writing programs with level upon level of brackets.

Back to my Windows problems:

After a medium-strength Googling, an OpenOffice forum page gave me the trick to fixing the blurriness of this GTK app.

More details on all later ... (but if you go to the page linked above, you can probably figure it out).

Mon, 05 Jun 2017

Writing on phones and tablets sucks

If you want to write things like words and sentences, doing it on mobile phones or tablets sucks. Bluetooth keyboards and mice and their intermittent connections to phones and tablets also suck.

The same holds true for programming. Writing code on phones and tablets suck. What sucks even more is that Android's primary programming language is Java, yet it's harder to develop and run Java code in Android than it is to write Perl, Python, JavaScript and Ruby.

I even wrote C++ on an Android tablet. It was a pain in the ass, but I did it. Those languages that aren't Java are "easier," but the experience remains poor.

Even though I use a few Google Chrome "apps" for programming-like tasks (Secure Shell, which is pretty good; and Text, which is super-rudimentary), even a Chromebook is better than a tablet or phone.

Right now my laptop is so nice, I hate using my desktop computer at the office. Now it's screen seems blurry (because it is), and I hate the standard-issue Lenovo keyboard. That's a backwards way of saying that I like a nice laptop keyboard. It has to "click" a bit, meaning it can't be too mushy.

I can certainly see (and am seeing) laptops that incorporate tablet/phone hardware and software. I would absolutely welcome the "intents" present in Android apps that allow you to easily share content from one app to another. Windows now has an app store, though most of what's in it is shit. (I do like the Fitbit app for Windows, though.)

Tangents be dammed. To make things with words, you need a proper keyboard.

Tue, 30 May 2017

To run Node in Debian and Ubuntu, install nodejs and nodejs-legacy

Installing node.js in Fedora is no problem. You just run sudo dnf install node, and you're off to the JavaScript-in-the-console races. But it's slightly more complicated in Debian and Ubuntu.

Since there's an old amateur radio package called node for communicating on packet radio nodes, Debian and Ubuntu use the package name (and shell command) nodejs. So you would run nodejs when you would normally run node.

But you don't have to do this. And you don't have to resort to any Linux/Unix tomfoolery either.

Both Debian and Ubuntu have a package called nodejs-legacy that makes the symlink for you. Then you can run node by typing node in the console.

Since it looks like there is no node for amateur radio in Debian Sid or Experimental, I'm thinking that the node-vs-node.js problem will go away at some point in the near future -- when Debian declares its next release stable, and in turn when Ubuntu bases its future releases on versions of Debian that have "re-resolved" the issue. (Since I'm running Ubuntu 16.04 in the Windows Subsystem for Linux, this hasn't happened yet.)

Until then:

$ sudo apt install nodejs nodejs-legacy
Sun, 21 May 2017

Software-defined radio kits available

I just installed the Java Development (aka the JDK) and was trying to test Java in the browser by going to the WebSDR page to listen to software-defined radios over the Internet.

The last time I listened to WebSDR, you needed Java in the browser to make it happen.

I had no idea that Java in the browser is no longer a thing.

I confirmed my JDK was working via the Windows command line, and I also learned that WebSDR now uses HTML5 in place of Java.

I also learned from the KFS WebSDR site's About page that the inexpensive Softrock radios that are behind most SDR sites are available for purchase both pre-built and in kit form from Five Dash Inc..

I've also seen SDR radios in the range on eBay.

I'm tempted ...

Learn more about SDR in these two subreddits:

But the big thing I learned: no more Java in the browser.

New laptop, new OS

The women in my life gifted me with a sweet HP Envy 15-as133cl 15t laptop. I guess they saw the keys pop off of my old HP laptop a few too many times.

The new laptop has an HD screen (1920 x 1080), a lot of memory (16GB), an Intel i7 CPU (not sure of the exact model) and a 1 TB hard drive.

Right now I’m running the Windows 10 that came with it. I “auditioned” Fedora 25 with GNOME and Xubuntu 17.04, and while either one may indeed work with this hardware (the biggest problem being the HD screen and the Linux desktop environments’ inability to handle them without a lot of little tweaks), for now I’m sticking with Windows.

The main reason that I can stick with the stock OS is the Windows Subsystem for Linux (aka the WSL), which gives me a full Ubuntu-powered Bash shell that runs pretty much every Linux console program available. I’m using it to run/update my Ode blog (I still can’t get Unison in Windows to work across networks because I can’t get SSH working and am a little wary of Windows software that seems frozen in time).

As I allude to in the sentence above, adding software in Windows has it’s good and bad points. Good: You can easily run things like MS Office and the Adobe suite, though I don’t use those at all (instead opting for LibreOffice and Google Docs, and GIMP/IrfanView/Inkscape). Bad: Some things are old and unmaintained, like the ClipX clipboard manager that I rely on heavily. Plus after years of drawing on huge Linux software repositories offered by projects like Debian, Ubuntu and Fedora, having to go all over the Internet to find applications is not something I’m excited about.

That said, I have most of what I need. I’m playing with JavaScript, especially in Node, quite a bit, and I have Node installed both in the Ubuntu shell and on the Windows side.

I don’t have Ruby in the WSL or Windows since I haven’t used it in awhile, but I will probably do that in the WSL.

If/when I start dabbling in Java again, I can do that on both sides (WSL and Windows), too.

For Java and Ruby especially, I like coding with them in the Geany editor, which is like a “baby” IDE (it can execute your code, though I’ve never gotten it to work like that with JavaScript/Node). Unfortunately Geany is one of those old GTK apps that looks like hell on this laptop’s HD screen. Principally it’s blurry. So I’ve been using Notepad++ instead, which is a great text editor, though I haven’t figured out if it is capable of executing code in the languages I use (Ruby, JavaScript, Java, Bash).

I am also experimenting with Visual Studio Code, Microsoft’s “not-quite Visual Studio” editor. The “not-quite” part is OK by me, because most IDEs I’ve tried are so massive and cryptic that I’m happy to have something that’s I can understand more easily.

I already had Visual Studio Code on my old HP’s Fedora system, and now I have it in Windows 10 proper. I’ve used it for a little JavaScript. I like the syntax highlighting, and I was able to execute my code via the debugger. (If you actually know what you are talking about, I encourage you to laugh at or with me — your choice.)

In the WSL, I’m relying on Vim as my text editor, and I’m using the limitations of the WSL (most of which can be summed up as “no GUI,” though you can definitely hack one in) as an excuse to sharpen my Vim skills. I also have Vim and gVim on the Windows side. (Vim is everywhere.)

You might notice that a lot of the programs I’m using are things you’d find in Linux. I’m surprised that so many traditional Linux/Unix applications are available in Windows. Some of them are even regularly maintained.

I’ll detail all the software I’m using in Windows 10 at some future point, probably on another site, but quickly:

  • Audacity (audio editor)
  • Dropbox (file sync)
  • FileZilla (FTP)
  • GIMP (image editor)
  • Inkscape (vector graphics editor)
  • IrfanView (image editor)
  • LibreOffice (office suite)
  • Node.js (JavaScript in the console)
  • Notepad++ (text editor)
  • OpenShot (video editor)
  • PuTTY (terminal for SSH connections to servers)
  • qBittorrent (torrent client)
  • QuiteRSS (RSS reader)
  • Vim and gVim (text editor)
  • Visual Studio Code (text editor, mini IDE)
  • VLC (video editor)
  • Windows Subsystem for Linux (aka WSL aka Ubuntu for Windows aka Bash on Windows … do you think they have a branding issue?)

Things I’m relying on in the WSL:

  • Bash (which is obvious, but I use all the common Unix tools and rely on a number of scripts to automate various tasks)
  • SSH (for encrypted connections)
  • Unison (file sychronization)

Things I haven’t yet installed:

  • Geany (GTK text editor that looks a little rough in Windows 10 on this laptop)
  • Hugo (static site/blog engine)
  • JVM (the Java Virtual Machine)
  • Netbeans (IDE written in Java)
  • Ruby (programming language)

Update: I'm installing the JVM now. It's hard to find.

Wed, 17 May 2017

Fedora, SUSE and easier installation coming to Windows Subsystem for Linux

Microsoft is ticking all of the right boxes with the Windows Subsystem for Linux, announcing that it will be bringing Fedora and OpenSUSE to the WSL as well as offering installation via the Windows Store.

There will also be the option of installing the Ubuntu, Fedora and SUSE version of the WSL at the same time, though it is unclear if they will have separate filesystems, and/or the option of sharing a single Linux filesystem.

I'm not a SUSE user but am a longtime Fedora user, and having the option of Fedora is a very attractive one because it's that much easier to get newer versions of things like Node, Ruby, Java, etc., in this developer-centric distribution that is a lot more stable than you'd think.

As far as installation goes, the current way you get the Ubuntu-powered WSL on your Windows 10 system is more than a little bit hacky, and the use of the Windows Store will make it easier and more inviting for new developers as well as "new" Windows "power users" coming over from years of desktop Linux (like me).

There isn't much in the way of announcements on adding graphical capabilities to the Windows Subsystem for Linux, though Microsoft isn't discouraging those who are already adding an X server to their WSL, but I figure official support for Linux GUI software in the WSL is somewhere on the roadmap.

For now I'm happy to be using a Ubuntu-based system for the first time in a long time (after the aforementioned years of Fedora). As I've written previously, the move from 14.04 to 16.04 was pretty crucial because I was able to get away from the super-old Node.js in 14.04, though the newer Unison required me to pin the old Unison from 14.04 to maintain compatibility with the Unison on my server.

While I've been happy to learn that you can pretty much download a Ubuntu package from the archive and install it with dpkg, I haven't yet experimented with PPAs in the WSL. Might be time for that.

Changing the directory: Since the WSL is rapidly going from a Ubuntu-only offering to one that will offer Fedora and SUSE, I'm changing this directory's name from ubuntu_on_windows to linux_on_windows.