Programming as Play

I spent much of today revamping this here website.

The act of revamping was basically indistinguishable from what I do on a daily basis for work:

The big difference is I didn't get paid for what I did today. And what I did today didn't benefit anyone except for me. Funny how those things go together.

The other big difference is that what I did today was fun.

Which is not to say that work is not fun (it is). But this was a qualitatively different fun.

I can't readily articulate why or how this fun was different. So I'll write, to try to figure it out.


I've been enjoying the song Ellie Goulding - Burn quite a bit, along with all the "bonus tracks" of Halcyon Days:

When the lights turned down, they don't know what they heard Strike the match, play it loud, giving love to the world We'll be raising our hands, shining up to the sky Cause we got the fire, fire, fire, yeah we got the fire fire fire And we gonna let it burn burn burn burn

It's pop music, simple and catchy.

I worry about pop music these days. It seems like it's always trying so hard to be more than just pop music. With the result that it loses everything that is appealing about pop music, while simultaneously failing to capture any of the good of other sorts of music. It seems like a grasping imitation--because it is a grasping imitation. And the end result is bad pop music.


I'm not sure what that digression has to do with anything. Except for maybe just that I had the freedom to make it. And that was fun to think about it. I had absolutely no purpose in thinking about it.

So there's an idea: purposelessness is fun, refreshing, renewing.

And all this blog work today has been quite purposeless and rambling.

For instance, I finally converted github from pointing to my Jekyll source files to just pointing at the generated static files. I was driven to do so by some bug with Github Pages that mangled all my apostrophes.

But It's something I have been wanting to do for a long time. My drafts are no longer visible until they are published. (They used to be visible in the repository.) And it allows me to run arbitrary plugins and scripts to transform the source files into the published static site. I can build whatever I want on top of Jekyll.

Or not use Jekyll at all. At some point I want to transition from using the Ruby-based Jekyll to the Python-based Pelican.

Pelican is definitely something I could use at work. Ideally it will replace the whole "I'll just throw together a quick Wordpress site" that is so seductive when wanting to get some web content done and up on the Internet quickly.


Pointing my github pages repo straight at the generated static files was easy--once I had one vital piece of new knowledge about gitconfig and the core.worktree setting.

I was then able to leverage that knowledge to create a second (free) private repository on bitbucket for the blog source files. So I now have not only better publishing, but complete private version control.

And forever onwards, I can configure git however I like. I can make ten different git repos to track the same files, or track different individual groupings within one larger git repo, or whatever.


So much of programming is gaining knowledge like I gained today: random knowledge I had no direct intention of learning, knowledge I learned on accident due to a bug.

But that knowledge, no matter how accidentally gained, will permanently inform my use of git (one of the core tools of modern programming) in the future, allowing me to do things I couldn't do before.


In a vague way, I've been feeling like I've been learning less this year working as a paid programmer than I learned the previous year when I was studying on my own and working on my own random projects.

Programming-as-work vs. programming-as-play.

Are there ways to make programming-as-work more like programming-as-play?

One thing: haste can be the enemy of learning. With programming, it's easy to get to the point where "it just works" and the immediate objective has been achieved.

It takes time to explore--to explore all the configuration options, to explore alternate configurations, to explain why they don't work--or just how they work differently.

Maybe there is something about programming-as-play that simply cannot be replicated when programming-as-work.

Blog Index