Computing gadgets don't last long enough. I wanted to write a lot about this, but since I don't have good answers, I figured I might as well just pose some questions.

All the time, we're throwing out something that still works, because there's something new that works better.

Working better is great! Faster chips and better screens and cameras make our lives easier and help us make cool new stuff.

I used to work near people designing processors, so I know it's plenty hard just to keep that part of the system progressing. And I know that newer stuff will use less energy, which is great. I know that people designing data centers think hard about their efficiency, and upgrade ruthlessly to improve it.

But how carefully are we considering the impact of getting rid of all that old equipment? How do we compare whether it's really, globally, ethically, better to improve speed & efficiency vs. just keep using old stuff? How do we factor in things like resources mined in conflict zones?

I recently remodeled a house, and among all the advice I read, I remember this best: "The greenest building material is the one that's already there." (It was about floors. We put in new bamboo anyway. That old parquet was awful, but I hope the new stuff stays there for a hundred years or more.)

I know that designing e.g., a great modern smartphone, is extremely difficult, even 'only' considering functionality, space and power constraints. Designing something that small and integrated that could still be upgraded partially, keeping around parts that still work, sounds near impossible, but wouldn't it be great? It sounds like a fun challenge.

'Editor Wars'

An idea I'd like to see: Editor Wars, the game of hacking at code.

Hackers compete on how fast they can complete code editing tasks from a variety of languages, with results plotted and dissected on a web leaderboard. The idea is not to evaluate language understanding or design, but simply editing skill and speed in the kind of thing that editor flame wars start over.

The tasks could be simple refactorings, like renaming a function throughout a source tree, or extracting code into a method. I'd expect this would show advantages of specialized refactoring tools in some IDEs. Other tasks might be more complex, like writing a new set of functions, a whole class, or adding functions to a class to conform to a protocol or interface. Good template support and autocomplete might be an advantage here. Or maybe you want to add conditional debug logging around a set of functions, with each call having a separate hardcoded counter value? Surely powerful macros win this task? Naturally, new tasks could be submitted by the public, and voted on. Each task would have a "correct" answer, but if you're really clever you could always suggest a better correct answer.

Use of extensions and custom macros would be happily encouraged, as long as you can share what you've used.

You'd need either an editor plugin or at least something that watches files efficiently to get the split-second timing your contestants will demand. Ideally you'd be able to record keystrokes and grab the source for any macros you call, then the site would be able to show a replay for the viewing public.

It'd be fascinating to learn how other people use your favorite editor by watching the best of the best compete. Not to mention, just imagine the forum threads arguing over the graphs from the vast database of editor timings.

Anyone want to build this?

Selected Links from this April

Since my new blogging setup doesn't automatically pull pinboard links into summary posts like before, I'm going to run through my bookmarks manually. Sound like fun? Let's go:

  • Our approach to replication in computational science - "bioinformatician makes code and all analyses available. very admirable, and yet a little worrying that this is so rare. It is also rare in computer science, where it is arguably easier to share."
  • ModSquadHockey Forums - good reviews of equipment with painful forum UI. BTW, yes, a Bauer Concept II full shield will definitely fit a Stealth S19 (2010 model) helmet. You're welcome.
  • Hockey Helmet Cage/Visor Compatibility Charts - really useful, but sadly not fully complete. An impossible task.
  • Opengazer: open source gaze tracker for ordinary webcams - Presented without comment. Have you used this?
  • Storm Python ORM - Python ORM from Canonical, used in launchpad.
  • What it takes to build great machine learning products - I think the answer was careful definition of the problem domain?
  • A calculator that only shows the answer after you give a suitable estimate - Really cool idea. The magic is in how to adjust the tolerance so it seems fair. Linked to the HN post because the comments are so polarized - it's interesting to swatch people violently miss the point.
  • GNU Parallel - Well if you don't know, now you know: "GNU parallel is a shell tool for executing jobs in parallel using one or more computers." Super useful. You don't have to use GNU parallel if you like something else that's similar, but you should probably know at least one tool for this stuff.
  • GNOME + Do - quicksilver for gnome. I left out the part in the page title that says "Crazy Delicious" because come on, people. These are computers.
  • Field visualization software - "An environment for writing code to rapidly and experimentally assemble and explore algorithmic systems" - A really fascinating project. It looks like big ball of squeak, python, and processing that Bret Victor rolled up. I wanted to try it out in April but haven't had a chance.
  • circa - A programming language that lets you manipulate the AST and do round trips. I forget what I meant by that exactly. I also wrote that 'state is first class'. You'd better go look at the page if that sounds interesting. Don't ask me!

That's it for April. Look for May's bookmarks sometime in 2014.

My last wordpress upgrade

My last wordpress upgrade was a long time ago, and it's going to stay that way.

These posts about blogging are really only interesting years later, and only to me, when I look back and think about what I was doing that I thought I had time to mess with blogging software.

Last time I made a major change was switching to wordpress from blosxom back in December 2005, over Christmas break. I was at my parents' house and had nothing to do after everyone went to bed at 9pm.

These days I can't remember the feeling of having nothing to do, but I went ahead and switched things up anyway, exactly because I don't have time to mess with things like upgrading wordpress.

So I'm going with octopress on github user pages. I like generating a static site from text files, and github pages are sort of convenient. (sort of)

Links: Hacking, Music in Python, Rust & unitasking

My shared links for April 5th through April 6th:

Links: Flattr, Haskell, Haskell QuickCheck, and Stuart Cheshire (of Bolo fame)

My shared links for April 4th:

Sounds great but I have never seen a button, unless it's been hidden among many other warts.

Links: Haskell, Music OCD Tools, Terrorism, Probability for Ranking things

My shared links for March 30th through April 3rd:

Because beets is designed as a library, it can do almost anything you can imagine for your music collection. Via plugins, beets becomes a panacea:

Embed and extract album art from files' tags. Listen to your library with a music player that speaks the MPD protocol and works with a staggering variety of interfaces. Fetch lyrics for all your songs from databases on the Web. Manage your MusicBrainz music collection. Analyze music files' metadata from the command line. Clean up crufty tags left behind by other, less-awesome tools. Browse your music library graphically through a Web browser and play it in any browser that supports HTML5 Audio.

Links for mid-March see scalable python around corners. And Future Spies on Facebook!

My shared links for March 18th through March 26th:

Links: JS, LaTeX, Live drawing and sound.

My shared links for March 5th through March 17th:

  • CodeMirror - "CodeMirror is a JavaScript library that can be used to create a relatively pleasant editor interface for code-like content ― computer programs, HTML markup, and similar. If a mode has been written for the language you are editing, the code will be coloured, and the editor will optionally help you with indentation."

  • Latexian: A LaTeX Editor for Mac OS X - Nice looking latex editor with live preview.

10.6 or higher so I can't try it just now.