Curated
Differently hackish keyword arguments for Ruby
maca’s arguments - keyword arguments support for Ruby, now. Wickedly clever hack that does reflection on Ruby 1.9 and uses ParseTree for Ruby 1.8. Simpler than I thought it’d be, I wish I’d thought of that.
Caveat: I haven’t tried it yet. It might punch kittens. In fact, if you think parts of Ruby are “too magical”, this definitely punches kittens.
Interviewing to seek values
Adam Wiggins, per usual, is on to something. Values:
Sharing values is the most important part of effective collaboration. If you don’t have significant overlap on values between you and your teammates, you’re going to have a tough time getting anything accomplished.
I’m starting to think that figuring what the other person puts a premium on is the most important part of a technical interview. Is the other person passionate in the same way you are? Are the things they obsess over complimentary to what you would rather gloss over? If the answer to these questions is yes, you’ll probably make awesome things together.
Infinite Jest and fanatics
Infinite Jest on patriotism, fanatics, love, attachments, and temples:
‘Your U.S.A. word for fanatic, “fanatic,” do they teach you it comes from the Latin for “temple”? It is meaning, literally, “worshipper at the temple.”‘
I found this passage striking as well. On the one hand, Wallace writes great dialog. Even when most of the dialog is a monologue with ignored interjections by the other character. On the other hand, some great etymology and word-play here.
And then there’s the point: choose your core philosophies carefully. Is it really worthwhile to identify yourself as a Rails person, a libertarian, or a connoisseur of fart jokes?
Side note: I’m doing this whole Infinite Summer thing because, at my core, I enjoy the challenge of reading books that are just too long. This is very borderline hipster, so I promise never to refer to David Foster Wallace by his initials, because that’s just confusing when you live in Dallas.
Software development requires empathy
If You Want to Write Useful Software, You Have to Do Tech Support:
It seems so obvious: if you want to develop software that’s useful to people, you’ve got to talk with them. But too many developers take the anti-social approach and consider customer support to be beneath their status. Besides, talking with customers would distract them from important code-slinging.
I have to remind myself, almost every day, that one of the the most important qualities I can possess as a developer is empathy. Primarily for the user, their cognitive load, and what they’re trying to accomplish. But further, for the developer who comes to my code when I’m done, the guy who operates it, and everyone else down the line.
Haskell modulo excess theory
My journey through Haskell is on something of a lull, but John Wiegley’s got you covered. He’s documented his own journey learning Haskell, and it’s very accessible.
John starts with simple stuff like Fibonacci sequences and splitting strings, then jumps straight into modeling Schroedinger’s cat using a monad. Next he gets pretty practical, for Haskell at least: doing text manipulation ala scripting languages to drop command-line arguments and then to MacPorts packages. Finally, he reflects on thinking lazily and using infinite streams.
If you’ve been wondering what this lazy, pure, strongly typed functional thing is all about but keep falling asleep through the intense theoretical bits (there’s a lot of it!), these are a great starting point.
A slide in the workplace
The Red Bull headquarters in London has a slide going between floors.
I want to go to there. Photo credit: Alexander K.
Super Mario motors
Too cool - Super Mario stepper motor music:
Of course, an Arduino is involved.
The joy of enigmas
...thinking about an enigma. There it is before you—smiling, frowning, inviting, grand, mean, insipid, or savage, and always mute with an air of whispering, ‘Come and find out.’
— Joseph Conrad, Heart of Darkness
Poisonous people and genius programmers
Brian Fitzpatrick and Ben Collins-Sussman have done a couple great talks on probing the important social aspects of software development, especially in the open source arena. Open Source Projects and Poisonous People talks about how to survive “that guy” joining the community of your favorite project, be it open source or not. Their most recent jam, The Myth of the “Genius Programmer”, tries to temper the romanticism that developers can magically put forth reams of brilliant code. By proceeding with humility, one can appear as a genius without all the hubris and potential for downfall.
See also: my OSCON 2007 talk on PeopleHacks.
Visualizing language trade-offs
Guillaume Marceau has done some excellent work crafting the data from the venerable Computer Language Benchmark Game into visualizations that quickly show the trade-offs of using each language. The speed, size and dependability of programming languages puts each language in a small graph that simultaneously shows the execution speed and program size of each test for every language. From there, the characteristics of each language is manifest. He then goes on to consider whether functional languages display unique performance/size characteristics.
This is a must-read. It’s also great information design, proving that programming language esoterica needn’t bore the reader.
That's the second biggest monkey head I've ever seen
A thousand times yes! The Secret of Monkey Island, revisited. My eleven-year old self is jumping with glee. Awkwardly.
See also, ScummC and The Secret of Monkey Island, The Play.
Design: it's important
Via Konigi, David Malouf:
Great design in the end will give us something to relate to, to feel connected with, and to reinforce our humanity. Tapping that right balance between emotion and logic, chaos and control, analog and digital, is the key to this success. We can no longer rely on “form follows function”. Form has to be parallel to function, as function is growing in commodity.
Enjoy some Wu
Ooh, baby, I like it raww… - Some Wu-Tang Clan for you. I’ve been finding Yes Yes Y’all [sic] an excellent source of music that I otherwise wouldn’t come across.
The non-existent tension between FP and OOP
Is the Supremacy of Object-Oriented Programming Over?:
The fact is, for a lot of these applications, it’s just data. The ceremony of object wrappers doesn’t carry its weight. Just put the data in a hash map (or a list if you don’t need the bits "labeled") and then process the collection with your iterate, map, and reduce functions.
I wish I’d had a “pocket Dean Wampler” when I was first learning Haskell and trying to reconcile idiomatic Haskell with what I’ve become so accustomed to with Ruby, JavaScript and, well, everything.
The State on DVD, finally
It would appear that, after long last, The State DVD is forthcoming. I cannot wait. The State and Daria were probably the two best works of original programming ever on MTV. (Via Coudal Partners)
Three sides of language geekery
Ted Leung’s notes on the JVM Language Summit, Dynamic Language Summit and Lang.NET. Great reading for those interested in what makes programming languages tick.