The New Worst-Thing-Ever
January 4th, 2011
The latest in awful single-purpose tumblrs: Muppets With People Eyes.
To get that terrible metaphorical taste out of your mouth, here’s the much better Vladimir Putin Action Comics. Still pretty bad, but, you know, better.
Tower
January 4th, 2011
I’m not sure that there’s really a big market for a graphical Git client, but if there is, Tower might fill it. The UI’s lovely, and it’s free to try out while the project’s in beta.1
This would probably redundant for developers, who most likely already have a terminal open and know the guts of git, but a drop-dead simple VCS interface might be really handy for a lot of designers, writers, and other media/creative types who regularly revise files. There’ve been some stirrings from that community lately regarding git, so I think there’s potential there. Tower and other extant GUIs might be overkill for most people, though, despite their comparatively lovely interfaces. There could be a market for a non-technical VCS, something with a sufficiently-well-chosen sub-set of git’s functionality and the UI of Time Machine. Someone who knows Cocoa should go build that. =)
1 Providing free shilling for a for-profit feels a little uncomfortable, so for balance let me also point out the open-source GitX.
How Did I Not Buy This
January 1st, 2011
Saw this in a grocery store. Thought everyone should probably be aware.
Regional Dialects
December 28th, 2010
If you consult this map of American dialects, you’ll find that Midland is objectively the best dialect. It’s also a fundamental truth that on rhymes with dawn.
You may also be interested in the famous pop vs. soda debate.
Python Closures
December 18th, 2010
I don’t exactly make my passionate, sexy-times love affair with Lisp a secret. Imperative languages have their strengths, but every time I have to give up my functional programming perks a little part of me cries.
I’ve recently started seriously digging into Python, though, and I think it’s going to be the Imperative Language That Makes Me Cry The Least. It’s got the holy higher-level trinity of map, reduce, and filter, syntactically-sugary list comprehensions, lambda expressions, and it even uses ** as the exponentiation operator, as God and Fortran intended.1 It also has closures, which are magic if you haven’t seen them before, so I’m going to yammer on about them for a bit.
To be fair, I’m probably not the best person in the world to tell you about lexical closures. You really want Wikipedia. In brief, though, a closure is a function that can access and change state in the environment in which it was defined. Kinda like object-oriented programming without the objects: the way methods can access private data is kind of analogous. Let’s just look at an example: 2
def makePowerFn (power):
def powerFn (base):
return base ** power
return powerFn
cube = makePowerFn (3)
print map (cube, [1, 2, 3, 4, 5])
Executing the above code applies our cube function to every item in the list and prints out [1, 8, 27, 64, 125].3 Neat, right? The magic part is that cube was effectively able to access power because it was defined within the enclosing lexical scope.
The concept of closures is pretty deeply embedded in serious-business functional languages like Haskell and the various dialects of Lisp,4 but lots of relatively modern mostly-imperative languages like Ruby and JavaScript have adopted them, too. I seem to recall that there’s been a ongoing attempt to get closures into Java, but I’m not going to hold my breath.
Anyway, closures! Now you know!
1 Python still can’t make metaprogramming trivial the way Lisp does, though. But I guess we can’t have everything. =P
2 Example adapted from defmacro’s rather nice functional programming discussion (near the bottom).
3 Notice how I got to use both map and ** in there? Awww, yeah.
4 “Haskell and the Lisps” would be an awesome band name, you guys.
Untranslatable Words
December 9th, 2010
You might enjoy this short list of untranslatable words. It includes classics like schadenfreude, wabi-sabi, and l’appel du vide, as well as my personal favorite mamihlapinatapai, but there are a few other good ones in there, too.
- Jayus
- Indonesian — “A joke so poorly told and so unfunny that one cannot help but laugh.”
- Torschlusspanik
- German — “Translated literally, this word means “gate-closing panic,” but its contextual meaning refers to “the fear of diminishing opportunities as one ages.” “
- Iktsuarpok
- Inuit — “To go outside to check if anyone is coming.”
Link shamelessly stolen from swiss-miss.
Crab Canon Visualized
November 24th, 2010
And here’s the accompanying GEB dialogue.
games, math, music, video | No Comments »
Mazes & Labyrinths
November 23rd, 2010
I recently finished reading William Goldbloom Bloch’s The Unimaginable Mathematics of Borges’ Library of Babel. As was the case with the Atlas of Remote Islands, most of my reading time was spent beaming at the very unlikeliness of the book’s existence. Borges’ work could be described as “literary nerd-sniping,” so the notion of a mathematician devoting a book to an analysis of one of his stories makes perfect sense — it’s just so rare to see those spheres overlapping.
The mathematics the book employs isn’t terribly difficult, since it’s written for the interested layman. Conversely, if you did your undergrad degree in math (or something else sufficiently mathly) you’ll probably find yourself skimming occasionally, but there’s still quite a lot in there to enjoy. The book is very good at communicating the pleasure of doing mathematics for its own sake, and that aspect really struck a familiar chord with me. Who doesn’t enjoy discovering that The Library would contain enough books to fill 10 ^ 1,834,013 universes?
Finally, any writer who in the preface defines his intended audience as “Umberto Eco” has won a fan for life.
Linear Chess
November 22nd, 2010
If you like chess but think it has too many dimensions, one of these one-dimensional chess variants might be the game for you. You might also want to avoid certain other variants, unless you’re a pretty serious Star Trek fan.
I’ve seen references to four- and five-dimensional chess (which look like they might still be borderline-human-playable games), but a search for “n-dimensional chess” shows that not a lot of progress has been made for the general case. It seems like it wouldn’t be too hard to develop rules… rooks could move an arbitrary distance on paths parallel to the basis vectors, bishops could move diagonally on any plane, etc. Certainly the number of pieces would have to scale up, and it might be tricky to prove that checkmate is possible for all n, but someone who wasn’t prepping for finals could probably develop a consistent set of “playable” rules without too much trouble.
The real trick, of course, would be a consistent set of rules for chess in Hilbert space, which I think I should leave to the real mathematicians.
chess, games, math | No Comments »




