Tag Archives: Unix

Server as Furniture

A day or two ago, an idea hit me. I have a computer on my desk (an old laptop with a dead screen, which I have bolted to a monitor to create a Franken-iMac), which acts as my backup, web, and ssh server. The trouble with having a desktop always on in my room is that it’s loud, and generates quite a bit of heat, but I can’t turn it off, because that defeats the purpose of having a server. I wanted to get my server out of my room. I also have a Raspberry Pi which I have been patiently waiting to assign to a suitable task.

The idea that hit me last night was to put the Raspberry Pi, along with my external hard drive, into an empty drawer in the end table next to my couch. That way it would have access to my modem via Ethernet, and I could migrate all my servers onto it. It would be quiet, generate hardly any heat, and – most importantly – be out of my room.

So I imaged an SD card, hooked up the Raspberry Pi, and had it all set up in around 15 minutes. Everything works as it did before, but now all my servers are on the Pi. And it looks pretty nifty, if I do say so myself.

Server Cabinet

The Raspberry Pi's new home.

The Raspberry Pi’s new home.

Programming with Vim: Why I Don’t Use IDEs

When I first started programming in Java, I used Netbeans, since it was the IDE recommended by the Teach Yourself book I was reading at the time. This was probably ten years ago, when the industry hadn’t gone entirely Java crazy just yet. Netbeans was cool, but it had that clunky, sluggish, default Java UI feel to it. Eventually I found out about Eclipse, and started using it. Code completion was an amazing feature when I was learning Java. Only having to type the first few letters of the hugeUnnecessarilyLongCamelCaseObjectNames that Java is so fond of felt like a blessing at the time. But as my coding progressed, I realized that the IDE was taking something away from me. I was becoming dependent on it.

What I realized is that by actually typing out the names by hand, I was 1) practicing my typing skills (which actually degrade surprisingly quickly if you don’t pay attention to them), and 2) learning the full names more effectively. When you type out the names yourself, you learn and remember them better.

So I switched to vim. By doing a lot of the typing myself, I save myself time having to fix things Eclipse thinks I want, but that I don’t actually want. But also, I’m more engaged in the code I’m writing. You are always, always, always learning when you’re coding, and by letting an IDE complete all your code, you deprive yourself of the opportunity to get that new code into your brain so you remember it next time. The last time I needed to write a Swing interface, I hadn’t done so in at least three years. But when I started coding, the lines flowed like water out of my fingers, and I was surprised by how easily I remembered how to do it.

It’s true, typing out long objects in Java is annoying (I dare you to try to use the Java Date object; after 20 minutes of struggling, you’ll code it yourself). There’s an easy solution to that: don’t use Java. I kid, of course, Java is a nice, versatile language, and it’s the language with which I have the most experience, but the aforementioned annoyinglyLongCamelCaseObjects and the horribly pedantic usage of object orientation really annoys me sometimes.

But no matter what language you’re programming in, sometimes a return to the command line is a good experience. And there’s very little Eclipse can do that you can’t do with make, git, and vim.