Why programming is so hard

While a computer is simply a machine that takes in a series of instructions and executes them in order, most people have a hard time understanding this fact. As Arthur C. Clarke wrote

Any sufficiently advanced technology is indistinguishable from magic.

My observations from my own experiences appear to stand as evidence of the above statement.

more ...

Metaprogramming in Ruby

Recently, I developed a configuration DSL that would populate a database. I found myself writing a lot of repetitive code to handle the DSL syntax, and thought that this would be a good case to programatically generate the methods.

more ...

Working with tmux

At my workplace, my laptop is little more than a glorified mailbox and thin-client. All my development is done on a shared Linux cluster, due to the nature of the build environment needing special compilers and tools. Up until a few years ago, I was logging into a VNC session to keep my sessions active. As I started to telework more, I was annoyed by the slow refresh rates. That's when I realized that, since all my work was done with console Vim and a console, if I could move to a console interface, I'd wind up with a much faster workflow.

more ...

Peanut Powder

When I was growing up, my grandmother would make a spiced peanut powder, which I could eat as a side dish to dosa or idli, or more likely, just by itself. Considering that companies like PB2 make something similar, I thought about how hard can it be to make some at home.

more ...

Switching to Middleman

After fiddling around a bit with Octopress, I figured it was time to give other static site generators a try. This time, I figured I'd try using Middleman and port the content over from Octopress.

more ...

magicJack and Blocked Numbers

So I got the magicJack service for $30 a year, which is way cheaper than any other service, and serves my purpose for the most part. There's just one hiccup. I can't call my office conference call number without making additional payments to magicJack, i.e., I need ...

more ...

Random text plugin for Octopress

Why a random text plugin? Just because I can. It's easy enough to implement and with just a little knowledge of Ruby and knowing how to search the internet for some JavaScript, it's a piece of cake.

more ...

Handling 404 errors with Octopress

Building a blog with Octopress can be a bit of a hassle at times. Having converted from Wordpress, I miss the "Page not found" error that Wordpress provides when you get a request for an invalid URL. Thankfully, with Apache, htaccess and a touch of code, you can create your own 404 page.

more ...

Semantic Versioning

Version numbering is a field on which you could talk for hours on end and still not make any sense out of it. Take package managers for instance; you have a package foo, that depends on package bar - now if it was as simple as that, we'd have no problems. It's more likely that you'd wind up with version x of foo depending on version y of bar, which in turn depends on version z of baz. So far, so good. Now, let's update baz to version z1 - OOPS! There are some changes to version z1 that break version y of bar, which means we need to revert to version z.

more ...

Stardates

Stardates are common usage in the Star Trek universe. You'd easily hear Captain Picard talking in the intro scene, "Captain's log, stardate 41325.9". These combinations of numbers are meant to give the viewer a sense of the future, without explicitly stating the exact timeframe in which the show occurs. Of course, we know that Star Trek: The Next Generation is set in the 24th century, but that's beside the point.

more ...