Practical Elegance

"Elegance is not a dispensable luxury." - Edsgar Dijkstra

Hackers Need Our Own Everything

When I conceived of this post, it was going to be about how damn awesome Octopress is. And it certainly is awesome; it powers this blog, and makes writing it a joy, whereas trying to use Wordpress, Blogger, or even newer alternatives like Tumblr or Posterous was downright painful. But what I’m more interested in is the growing trend among apps, services, and even operating systems that has made projects like Octopress necessary.

The Tragedy of Google

For such a long time, Google did search better than many of us ever dreamt possible in the pre-Google days. But it wasn’t just the intelligence of the search algorithms, or the massive cache and index behind Google search. Google made it possible to craft a finely-honed query from the front page, with excellent support for literal strings, boolean operators, required inclusion/exclusion, etc. And then came Google+.

Google’s commitment to search had been on the decline for a while, it seems… the only new features search had acquired in years were fairly useless things like page previews and, briefly, Twitter integration. Because that’s integral to search.

But when Google launched its abortion of a social network, usable search had to go. Not only did they kill one of the most useful search operators (Boolean +), but they also started filtering search results based on social connections in Google+. While this doesn’t always end in having to re-search without “personal” results, I have a feeling that’s only because I’m connected to so many developers on Google+. But if Google+ hadn’t been such an abject failure, my mom might be on there, and we typically search about very different kinds of “cookies.” The situation with Google is so bad at this point, that I often get better results from Duck Duck Go, which wraps a ton of different search engines and websites, and attempts to break the “filter bubble” by presenting hte same results to everyone. I like this in principle, but I miss Google’s synchronized search history and habit of learning what results are relevant to me to (usually) provide better results.

Blogging for Hackers

So, let’s face it: unless you wanted to host your own blog, and either write your own engine, or tweak one into submission, keeping an attractive, maintainable, and useful blog was either an expensive or losing proposition. Sadly, this isn’t a recent change like the other phenomena addressed in this post, but it’s still an issue.

What’s slightly alarming is the trend away from traditional blogging engines like Wordpress and Blogger, which, while not exactly hacker-friendly, were oriented toward content creation. The newer generation of blogging services are much more oriented toward the re-posting of content. While I’m okay in principle with re-posting (and I think “remix culture” is awesome), when your priority is saturation with “viral content” rather than the creation of OC, it makes it easy to ignore the creation of tools which lend themselves to the creation of content.

Octopress is awesome because it doesn’t try to be everything to everybody. Billed as “A blogging framework for hackers,” Octopress is basically a set of rake tasks and plugins for Liquid and Compass, all wrapped up with the tasty goodness of Jekyll, the static site generator that powers Github Pages.

In a nutshell, this means I can use my favorite text editor (lately, either Vim or Sublime Text 2, depending on my mood) to create my posts in Markdown, Textile, or Haml, and have Octopress generate pretty-styled HTML, CSS and JS, and deploy my blog to Github Pages (or Heroku) with a rake task. Even for non-programming power users, or anyone frustrated with Wordpress, really, Octopress is worth checking out.

Apple to Developers: “Go Fuck Yourselves”

Okay, slight hyperbole. But it feels that way sometimes. I’ve been using TextMate on OS X for Ruby (and Perl, and C, and Clojure, you get the picture…) for such a long time now, that I’m really loathe to change my workflow. Even though, conceptually, I prefer the idea of using Linux on all the things. But since Apple is now blatantly trying to turn my worsktation into a tablet, I’m forcing myself to use the Lubuntu box sitting next to my iMac as much as possible.

It’s not just the “aesthetic” changes that chafe. I can deal with annoying UI crap, especially when it’s optional. But Apple is also changing the developer ecosystem, first with the Mac App Store, then with Gatekeeper, which will warn against installation of software not signed with an Apple developer account by default. It has been pointed out that this behavior is fairly straightforward to alter, but I still find the whole process dubious and, for me at least, it’s another straw on the OS X camel’s back. I’m not arguing that no one should use OS X, I’m just saying it’s less and less attractive to me as a development platform.

The whole allure of OS X was that it was a stable, supported, POSIX-compliant operating system that was enjoyable to use but afforded the user all of the power and flexibility of Unix. It looks like those days are over, and the days of creating powerful tools for developers and designers to create whatever they could imagine are over. The Mac is turning into an overpowered tablet, suited for content consumption rather than creation.

Apple is not alone in its efforts to neuter the desktop. Not to be outdone in locking down the OS and polluting the developer ecosystem, Microsoft is scrambling to release Windows 8 so that Windows users can be as disoriented as possbile. Although there are good arguments that Windows 8 holds the threat of finally toppling the waning Microsoft hegemony, I’m actually jealous of Windows 8 in one way: Windows 8 includes an almost-workalike Windows 7 compatibility mode. I wish Lion had a “act like Snow Leopard” mode. Although one of the articles I just cited laments the loss of the Start menu in Win7 mode, I don’t think it’s that much of a loss, if PowerShell is still included (or better yet, Cygwin).

I use Windows as little as possible, so I’m less annoyed about Windows 8 than I am Lion. But the trend is disturbing, and is even being echoed to a degree (a greatly diminished degree) in GNOME 3 and Ubuntu Unity. But on Linux, at least, I have the option of using whatever window manager and desktop environment works best for me (or none at all).

I realize that commercial operating system vendors need to target the widest possible user base. But the much-ballyhooed rise of the developer-centric economy would seem to suggest that pissing off developers is a bad idea. Apple and Microsoft spent the better part of the 1980’s and 1990’s competing not only for market-share, but for developer mind-share. The movement toward locking us into proprietary toolchains and ecosystems (XCode for Apple, VisualStudio for Microsoft) looks like little more than a cynical attempt to chain down developers in a walled garden. Hopefully, we don’t fall for it.

For Us, By Us

It’s been The Year Of Linux On The Desktop since at least 2000. I’m not going to be the next one to make grand proclamations (other than “total world domination soon”). But for me… right now, my primary development machines are a 27” iMac running Snow Leopard, and a 15” MacBook Pro, also running Snow Leopard. I won’t be upgrading to Lion, and I’ll miss the pretty Apple hardware. But when these are ready for replacement… let’s just say I really hope Project Sputnik is a huge success for Dell.

Although it’s commercial software, targeted toward business users (and consumers) that pays the bills for most of us, I think it’s important to remember that the people who make those tools are an important audience, too. I want to see more software of all kinds (web, desktop, and CLI) created by developers, for developers. Preferably open-source tools we can tweak and extend and continue to make better. I think that’s my goal for this year, anyhow. I’m going to focus my efforts on projects that make it more fun to be a hacker, whether that’s something like making blogging easier, creating build tools, or Linux desktop enhancements that are friendly to those of us who spend most of the day switching between an editor, a shell, and a web browser. I hope others have the same itch, and see the same need, and push back against the disturbing trend of hostility toward open systems and (by extension) the developers who use them.

Update: Thanks to the discussion on this reddit thread, as well as the comments, I made a couple of corrections, particularly re: Duck Duck Go and Gatekeeper. Thanks to everyone who commented.

Comments