Bits and Bikes http://bnb.poseur.com Ideas, digital, analog, and pedal-driven. posterous.com Sun, 03 Apr 2011 12:04:00 -0700 Packing my bags for a new blog http://bnb.poseur.com/packing-my-bags-for-a-new-blog http://bnb.poseur.com/packing-my-bags-for-a-new-blog

If you're here, and you want to see my more recent stuff, you might want to check out Bits, Books, and Bikes. I decided to switch from Posterous to Tumblr because it feels like a more cozy place to write.

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/846191/me-coffee-office.jpg http://posterous.com/users/4aGcQS03JbI5 Edwin Watkeys Edwin Edwin Watkeys
Fri, 04 Mar 2011 16:45:37 -0800 Standard Tap, Friday night http://bnb.poseur.com/standard-tap-friday-night http://bnb.poseur.com/standard-tap-friday-night
Photo

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/846191/me-coffee-office.jpg http://posterous.com/users/4aGcQS03JbI5 Edwin Watkeys Edwin Edwin Watkeys
Fri, 25 Feb 2011 09:14:00 -0800 Why Java (and almost every other programming language) sucks http://bnb.poseur.com/why-java-and-almost-every-other-programming-l http://bnb.poseur.com/why-java-and-almost-every-other-programming-l

Originally written September 8, 2005, updated December 27, 2005.

One of the big new features of Java 5.0 is a new syntax for iterating over collections. Instead of tediously typing the following:

for (Iterator i = c.iterator(); i.hasNext(); ) {
    String s = (String) i.next();
    ...
}

you can now, thanks to the fabulous new iteration syntax along with the introduction of generic types, substitute the following code:

for (String s : c) {
    ...
}

That’s clearly a lot less keyboard pounding. But a question begs to be answered: Why did it take ten years to introduce this feature? Let’s forget about that important question for now and look at another programming language, Python.

Python is in many ways a much nicer language to program in. And it evolves more quickly than Java. For example, generators were introduced in Python 2.2. A generator is a function that can produce multiple values, maintaining state between each call. Here’s a simple example:

def counter(n):
  while True:
    yield n
    n = n + 1

Because this function definition contains the keyword yield, Python knows it’s a generator. You use the counter generator like this:

c12 = counter(12)
c12.next()
c12.next()

The first line creates an instance of the generator that starts counting at twelve. The second line tells the generator to run until it yields a value. The third tells the generator to resume running until it yields another value. The first two values yielded by this generator are the integers twelve and thirteen.

This is a cool feature: It lets programmers write simple code that without generators would be complex and error-prone. Why can’t Java be more like Python?

Lets put this second question aside and think about how me might implement Python’s generators in a language used by some of the most smug weenies in the world, Scheme. Scheme is a dialect of Lisp that’s been around in one form or another for about thirty years. Lisp has been around in one form or another for almost fifty years.

Here’s the best Scheme implementation I could come up with that works like the Python counter generator:


An aside for experienced Lisp programmers: The procedure I’m about to show you is far more complicated than the canonical example of an accumulator, because I’m duplicating the semantics of Python’s generators.


(define (counter n)
  (letrec ((generator
            (lambda (yield)
              (let counter ((n n))
                (call-with-current-continuation
                 (lambda (continue)
                   (set! generator (lambda (k)
                                     (set! yield k)
                                     (continue n)))
                   (yield n)))
                (counter (+ n 1))))))
    (lambda () (call-with-current-continuation
                (lambda (yield)
                  (generator yield))))))

“OMFG!” you must be saying to yourself. OMFG indeed! In the original version of this scrap, I said writing this wasn’t so so difficult. I then found a bug that would lead to an infinite loop when the counter was used in certain non-trivial ways. So I’m going to come out and admit it: People shouldn’t have to write procedures like this if they simply want to write a function that acts like a Python generator. On the plus side, this monstrosity can be used very simply by client code:

(define c12 (counter 12))
(c12)
(c12)

The first line defines c12 to be the result of the procedure counter called with twelve as its sole argument. The second and third lines call c12 with no argument and return, just like the Python examples, the values twelve and thirteen. But this is all academic, because no sane person would write procedures like this on a regular basis.

Writing procedures like counter regularly leads to cramped fingers and a head ready to explode. But it’s interesting to note that it is possible to write counter, and that, to the outside world, the Scheme generator is easier to use than the Python version, because the Scheme version returns a procedure, which can be called like any other procedure, unlike Python generators, which return generator objects, which require programmers to call the next method.

(An aside: The designers of Python’s generators could have opted to implement generator objects in such a way that the next value could be retrieved via c12() and c12.next(), but they didn’t. The decision doesn’t make any sense to me. And while I love many things about Python, there’s a sort of ugliness that pervades the non-trivial corners of the language.)

Back to Scheme… The error-prone tedium of writing these generators in Scheme would seemingly make them impractical, but they’re not, because Scheme includes a feature that Python and Java lack: the ability to extend the syntax of the language. If you can manage to write the Scheme version of counter, it isn’t much more effort to create a macro that makes this feature available in an accessible way. Here’s the macro code I wrote that does just that:

(define-syntax define-generator
  (syntax-rules ()
    ((define-generator (NAME ARG ...) YIELD-PROC E1 E2 ...)
     (define (NAME ARG ...)
       (letrec ((generator
                 (lambda (yield)
                   (let ((YIELD-PROC
                          (lambda v
                            (call-with-current-continuation
                             (lambda (continue)
                               (set! generator (lambda (k)
                                                 (set! yield k)
                                                 (apply continue v)))
                               (apply yield v))))))
                     (let NAME ((ARG ARG) ...)
                       E1 E2 ...)))))
         (lambda () (call-with-current-continuation
                     (lambda (yield)
                       (generator yield)))))))))

Once you have this macro, the Scheme version of the counter generator looks like this:

(define-generator (counter n) yield
  (counter (+ 1 (yield n))))

Not bad, eh? The only thing that bothers me about this version is that I need to specify the name of the yield procedure. But one could argue that it gives programmers flexibility to give the procedure whatever name make most sense given the context of the code. (Again, experienced Lispers will know that this “feature” could be fixed by using non-hygenic macros, but we’re sticking to standard, R5RS Scheme here.)

If you compare the first and second versions of counter, you might notice that I did something tricky in the new, define-generator version: the yield procedure returns the value that it yields, so it can be used in the recursive call to counter. And you can’t do that with Python’s generators.

So why can’t Java be more like Python? The answer is Java is a lot like Python: Python users had to wait around for about ten years before they got generators. I added support for generators in Scheme in a few hours of playing over three days. We can argue that generators, as well as other recent features of Python, like list comprehensions, make Python a more pleasing language to work in — and I wholeheartedly agree with that argument — but fundamentally, Java and Python are alike in that you can’t modify the language itself.

Java, Python, and nearly every other non-Lisp language in existence put you at the mercy of language designers. You need to wait for them to implement the language features at the top of your wish list. And when they do manage to scratch your itch, who’s to say you’ll like the result?

So why did it take ten years for the enhanced iteration syntax to make its way into Java? It took so long because in Java, as in most other programming languages, syntax is a big deal. You just don’t go changing a language’s syntax. It’s hard to do, and only a select few have the skills to do it. And when it happens, expressiveness and clarity take a back seat to preserving backwards compatibility.

In Scheme, adding syntax is relatively easy, and can be done on a per-problem basis, so you don’t have to worry about coming up with the ideal-for-all-time solution. This ability to build the language up to a problem trumps any concern over writing in a language that uses a lot of parentheses.

Links

Schemers.org
Scheme resources
Lisp resources
Python Generators in Ruby

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/846191/me-coffee-office.jpg http://posterous.com/users/4aGcQS03JbI5 Edwin Watkeys Edwin Edwin Watkeys
Thu, 24 Feb 2011 06:23:00 -0800 Coming soon: Truckulent.com http://bnb.poseur.com/coming-soon-truckulent http://bnb.poseur.com/coming-soon-truckulent

Truckulent-tall

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/846191/me-coffee-office.jpg http://posterous.com/users/4aGcQS03JbI5 Edwin Watkeys Edwin Edwin Watkeys
Sat, 12 Feb 2011 11:37:00 -0800 Microsoft Just Bought Nokia. Now What? http://bnb.poseur.com/microsoft-just-bought-nokia-now-what http://bnb.poseur.com/microsoft-just-bought-nokia-now-what

As has been reported, Microsoft has all but taken over Nokia. The gist? Both companies recognize that a vertically integrated approach is a necessity for anyone who wants to make products that matter—product ecosystems that matter—in the mobile world.

But isn't Nokia notorious for being an engineering focused organization, and doesn't Microsoft have to keep up the pretense of the arms-length, just-another-partner relationship? How is this going to lead to the creation of game-changing products, even if there are world class engineers, designers, and business people on both sides of this collaboration? And a game-changing product—a series of products, really—is what's needed if either of these companies hopes to be even remotely relevant.

The Next crew was able to charge the gangplank and take over the Apple mothership, because Next was the seat of Apple's government in exile, Steve Jobs's Saint Helena (to mix metaphors). Mid-nineties Apple had lost its mojo, its soul, and the prospect of a takeover was invigorating.

If anyone believes that there's any analogy to deploy with Microsoft and Nokia, they're crazy. I didn't even want to put that sentence in the previous paragraph, the idea's so crazy.

There's also the small problem that is Microsoft's doomed-to-fail iPad-response-slash-tablet-strategy. What are they going to put there in the middle, between their dominant Windows PC operating system and their relatively well-reviewed most-recent phone OS? That iOS, previously "the iPhone OS," could Provide a good user experience was an open question, and I'd need to be convinced that Windows Phone 7 can work on a tablet. (Does anyone seriously think it would?)

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/846191/me-coffee-office.jpg http://posterous.com/users/4aGcQS03JbI5 Edwin Watkeys Edwin Edwin Watkeys
Thu, 10 Feb 2011 13:40:54 -0800 Why not print on the inside of these? http://bnb.poseur.com/why-not-print-on-the-inside-of-these http://bnb.poseur.com/why-not-print-on-the-inside-of-these

I was staring out the window at the southeast corner of Broad and Sansom, wondering where I was going to get my mid-afternoon americano—not my early afternoon or late afternoon americano, my mid-afternoon one—when I noticed the food cart below. It makes good, inexpensive breakfast sandwiches; you should check it out.

But it was not the cart's food that caught my attention, it was the umbrellas. It occurred to me that customers probably spent plenty of time gazing, dazed and hungry, at the inside of those umbrellas. A wonderful communication opportunity. Was this opportunity seized by those who had paid for, or at leash subsidized, these umbrellas?

Capogiro, that is where I would go for my americano. Coffee. That's the important thing. Stay focused. Maybe swing by—swing under?—the umbrellas on my way to liquid mental clarity.

And so I did. And it turns out that they didn't. The umbrella subsidizers, they didn't print anything on the interior of the umbrellas. How could they. It's almost as bad as forgetting to put something on the butt of a pair of girl's sweatpants.

What is wrong with America?

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/846191/me-coffee-office.jpg http://posterous.com/users/4aGcQS03JbI5 Edwin Watkeys Edwin Edwin Watkeys
Tue, 08 Feb 2011 15:34:06 -0800 Copperplate--on a freakin' pillow! http://bnb.poseur.com/copperplate-on-a-freakin-pillow http://bnb.poseur.com/copperplate-on-a-freakin-pillow I've got a huge backlog of Copperplate sightings, but this one is so vile I need to share it immediately.

Photo

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/846191/me-coffee-office.jpg http://posterous.com/users/4aGcQS03JbI5 Edwin Watkeys Edwin Edwin Watkeys
Fri, 04 Feb 2011 19:48:23 -0800 One pair of glasses, three people http://bnb.poseur.com/one-pair-of-glasses-three-people http://bnb.poseur.com/one-pair-of-glasses-three-people

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/846191/me-coffee-office.jpg http://posterous.com/users/4aGcQS03JbI5 Edwin Watkeys Edwin Edwin Watkeys
Fri, 04 Feb 2011 16:03:02 -0800 In an emergency, remember the three types of emergencies... http://bnb.poseur.com/in-an-emergency-remember-the-three-types-of-e http://bnb.poseur.com/in-an-emergency-remember-the-three-types-of-e Here they are: Plain emergencies, emergencies that require evacuation, and critical emergencies requiring that you be familiar with the definitions of "parlor" and "vestibule," which aren't shown in the diagram.

Photo

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/846191/me-coffee-office.jpg http://posterous.com/users/4aGcQS03JbI5 Edwin Watkeys Edwin Edwin Watkeys
Fri, 04 Feb 2011 06:57:17 -0800 Logos inspired by the at-sign http://bnb.poseur.com/logos-inspired-by-the-at-sign http://bnb.poseur.com/logos-inspired-by-the-at-sign

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/846191/me-coffee-office.jpg http://posterous.com/users/4aGcQS03JbI5 Edwin Watkeys Edwin Edwin Watkeys
Mon, 31 Jan 2011 19:55:00 -0800 Further Thoughts on Dandelion http://bnb.poseur.com/further-thoughts-in-dandelion http://bnb.poseur.com/further-thoughts-in-dandelion I recently posted a message on Twitter (https://twitter.com/edw/status/32234616412708865) about the bar situation at Dandelion, Starr's new restaurant on the northwest corner of 18th and Sansom Streets, across from Tria in Rittenhouse Square. I sent that missive before I was seated on the second floor for dinner, and I have to say I had a completely different experience upstairs. It was cozy, which is European for "pleasantly tight". The food was good, especially the devilled eggs, which were made with curry. I can also report that the bread, fries, fish and chips, shepherd's pie, and coffee were all also excellent. This is the best Starr restaurant I've ever been to. He seems to have matured, as the decor doesn't self-consciously scream "I am a high-concept dining experience!" the way each of his previous establishments does. My problem was with the clientele at the bar. They skew toward old, loud, oafish white men with overdeveloped senses of entitlement. I passive aggressively asked the bartender, loudly, if perhaps some of his patrons mistook this new establishment for the Happy Rooster, which is only a couple of blocks away and specializes in serving these sorts of embarassments to manhood and humanity. But again, the second floor is a wonderful place. If I go again, and I probably will, I would refuse to sit anywhere on the first floor, where the bloviations of a mere half dozen bad apples can resonate throughout. Bear in mind that yhis is coming from me, an inveterate bar eater and bar book reader. Anyway, I wanted to set the record straight, or at least provide some more context, as Starr and his collaborators deserve a lot of praise for their efforts.

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/846191/me-coffee-office.jpg http://posterous.com/users/4aGcQS03JbI5 Edwin Watkeys Edwin Edwin Watkeys
Sun, 30 Jan 2011 10:20:13 -0800 Project Gutenberg is Killing the Books I Love http://bnb.poseur.com/project-gutenberg-is-killing-the-books-i-love http://bnb.poseur.com/project-gutenberg-is-killing-the-books-i-love If you flick through the ebook stores of Apple and Amazon, you may notice the relative dearth of classic literature offered by traditional publishers. Instead you will find free versions made available by Project Gutenberg along with Dover's offerings and low-cost "clones" published by digital-only publishers. Not a problem, right?

Actually, it is a problem. Not for fans of Dickens or Melville or Milton, but very much so for readers of any part of our Western heritage that wasn't originally written in English. Which is most of it.

Nietzsche had a public relations problem in the first half of the Twentieth Century. You may have heard about Hitler and the Nazis. You may have seen Hitchcock's ROPE. You may even have a dim awareness of Leopold and Loeb. What do Hitler, Hitchcock, and Leopold and Loeb have in common? An understanding of Nietzsche informed primarily by Elisabeth Förster-Nietzsche, Friedrich's sister and, more importantly, a racist proto-Nazi eugenicist. In Förster-Nietzsche's hands, the philosopher's work was molded to suit her and her husband's ideology. This worked its way into the English translations, and the Nietzsche that English readers came to know was very much her's, the wife of a man who started a utopian Aryan community in Paraguay, Neuva Germania.

This would all be very academic if tragic history if not for Project Gutenberg, because anyone looking for Nietzsche in ebook form is far more likely to encounter a translation authorized by Elisabeth than they are to find something translated by Hollingdale or Kaufmann, the even-now dated translations that I read when I was discovering Nietzsche in the early '90s.

Translations do not age well. Nor do they travel particularly well. THE STRANGER that I read in 1990, the then-new translation by Vintage, was radically different from THE STRANGER that was previously available. In many ways it was objectively better, but in other ways it was simply better suited to the suburban American white kid I was than the previous standard translation, which carried a much more English sensibility.[1]

Neither of these translations of THE STRANGER are in the public domain, so Project Gutenberg does not (yet) endanger those who wish to read Camus.

Pragmatically speaking, how might we go about solving this problem? There is a broader problem: with the easy availability of public domain classics in dated translations, how are new translations—such as the new Madam Bovary, which I am in love with, if only halfway through—going to get made? As a child, I had to buy a Tale of Two Cities and innumerable other books that I read in high school, thereby underwriting to some extent the work of writers and translators that make the world's literature relevant to the times.

As I write this I cannot help but wonder what, if anything, America's literature departments are doing to make literature relevant let alone vital to the lives of people.

But back to the high schools: there are projects afoot to recreate the textbook, for good reasons. But what happens when these special-purpose iPad-like devices (or iPad applications?) draw their content from the archives, from the likes of Project Gutenberg?

As I recently wrote of Silicon Valley, they're a bunch of autistic philistines. They measure literature in gigabytes.[2]

It may be easy to laugh of sneer at Steve Jobs as he flips the virtual pages of Winnie the Pooh, but at least he understands the magic of a book and is trying to capture it. Would you rather read the beautiful full-color, large format edition of THE LITTLE PRINCE to a child, or a acrid mass-market, black and white mass-market paperback? Just as much as books are important, presentation is important.

One of the most important books of my childhood, COSMOS by Carl Sagan, was as important for its physical beauty as it was for the words it contained. As an adult, I purchased a paperback version to replace my old copy, which is somewhere in my parents' house. It was a pale shadow of my original, and I soon hunted down an original hardcover copy of the book.[3]

It is a depressing irony that Project Gutenberg takes its name from a man who made his mark by creating bibles that were every bit as beautiful as the hand-copied manuscripts that he obsolesced. Project Gutenberg's books have all the charm of a invoice.

NOTES

1: It is in this way that I think the Vintage translation is objectively better, as THE STRANGER was written by Camus as a (failed, in his mind) exercise in Hemingway-esque brusqueness. A faithful translation of the novel into English should respect Camus's basic intent.

2: Academics already understand this, as many are concerned about what Google Books, with its unreliable and incomplete metadata.

3: I would love to see COSMOS updated to reflect current science and re-issued, because while it's filled with interesting tidbits about astronomy and the Cosmos, it's really an intellectual history of the West and a manifesto for secular humanism.

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/846191/me-coffee-office.jpg http://posterous.com/users/4aGcQS03JbI5 Edwin Watkeys Edwin Edwin Watkeys
Sat, 29 Jan 2011 12:32:00 -0800 Three Months in the Valley aka the Solipsistic, Autistic Dystopia http://bnb.poseur.com/three-months-in-the-valley-aka-the-solipsisti http://bnb.poseur.com/three-months-in-the-valley-aka-the-solipsisti

In “Silicon Valley is Broken. Should We Even Bother to Fix It?” Erica Douglass relates her Silicon Valley experiences. It reminded me of my three months in Silicon Valley.

I originally flirted with moving out to the Bay Area in 1997, to work for Inktomi. I flew out for an interview and got an offer, but they wanted me to work for about twenty percent more than I was making here in the Philadelphia area. I owned a house and had an $800 a month mortgage. In the area where we wanted to live, $2,300 a month apartments were typical. So we stayed on the East Coast.

Ten years later, everything was different. I was a principal at a design firm. I moved out to the West Coast, the official story was, to be closer to our biggest client. I spent a lot of time on CalTrain and BART and in local coffee shops. I hated it.

In Philadelphia, we have several big industries—pharmaceuticals, banking, some ad agencies, Comcast—but nothing dominates. When I meet someone, it's as likely they're a painter as a programmer or lawyer or bike mechanic. In the Valley, it feels like all conversation is about Deals. Everyone's sitting around working on a slide deck. Or in Eclipse or TextMate.

You couldn't sit in a Starbucks and not hear someone give an elevator pitch or explain how, "Yes, money is important, but if the _concept_ isn't there, I don't think I can get really excited about a position." (I cannot describe how superficial and robotic and calculating the woman was who I watched deliver this little speech.)

The Valley is a solipsistic, autistic dystopia. And that would be fine if what we think of as a technology product hadn't changed since 1980, but it has, profoundly so. If you aspire to create something that real people use to solve real problems, there's no need to be there. In fact, being there distorts your sense of reality. It takes a genius to resist the prevailing mindset.

I came back to Philadelphia and while there's a lot to gripe about here—the people who talk big about doing start-ups but don't even know what a start-up is, the winters, the summers, the trash, oh I could go on—there's a diversity here that makes it easier to put technology (and life) in perspective. Even NYC is better than the Valley, because there's so much there that nothing dominates: the bigness does.

I recommend you go read Ms. Douglass's piece; it provides a dose of harsh reality to anyone who thinks that success awaits all those who choose to move to Silicon Valley.

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/846191/me-coffee-office.jpg http://posterous.com/users/4aGcQS03JbI5 Edwin Watkeys Edwin Edwin Watkeys
Fri, 28 Jan 2011 12:31:59 -0800 Best. Genius. Playlist. Ever. (Gang of Four's "I Love a Man in Uniform") http://bnb.poseur.com/best-genius-playlist-ever-gang-of-fours-i-lov http://bnb.poseur.com/best-genius-playlist-ever-gang-of-fours-i-lov

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/846191/me-coffee-office.jpg http://posterous.com/users/4aGcQS03JbI5 Edwin Watkeys Edwin Edwin Watkeys
Sat, 22 Jan 2011 15:22:02 -0800 Science Center Kinetic Wave Art?! http://bnb.poseur.com/science-center-kinetic-wave-art http://bnb.poseur.com/science-center-kinetic-wave-art
IMG_2891.MOV Watch on Posterous

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/846191/me-coffee-office.jpg http://posterous.com/users/4aGcQS03JbI5 Edwin Watkeys Edwin Edwin Watkeys
Tue, 18 Jan 2011 06:03:00 -0800 The world is a fine place and... http://bnb.poseur.com/the-world-is-a-fine-place-and http://bnb.poseur.com/the-world-is-a-fine-place-and

At least one person[1] thinks Steve Jobs has accomplished all he can hope to in the technology industry and won't return to Apple, regardless of his health. The line of thinking behind this notion is symptomatic of the condition that afflicts the technology industry. Namely, it thinks of itself as the technology industry.

Twenty-five years ago, one could have said that Steve Jobs could, anachronistically, unfurl the Mission Accomplished banner even as he was being squeezed out of Apple. After all, he had convinced the entire industry that it must adopt the wussified GUI—originally a term of derision: a "gooey"—if it hoped to find users beyond people like my father and me, people who thought that a green phosphorous screen was already a window into a fascinating universe.

Not only that, but he had also created, with the help of a pre-Macromedia, pre-sucking Adobe, desktop publishing with the LaserWriter printer. And simple networking with AppleTalk. In 1986 the revolution was well under way, and technology was being transformed so that the rest of you could use it.

It is now 2011 and I can understand how dumb, unambitious people can again think that Steve Jobs can crack his knuckles, dust off his palms, and contentedly walk away from Apple.

Steve Jobs is one of ten most important people in my life—and yours. He is the single most important force influencing the way technology is brought to bare on the human condition. As a programmer, I would list him, along with John McCarthy, Ken Thompson and Dennis Ritchie, and Bob Metcalfe as one of the most important figures in computing's modern history.[2,3]

Programming makes progress by creating abstractions that paper over the unimportant details the come between programmers' intentions and the lines of code that deliver on those intentions. Apple under Jobs's leadership has tended to make human progress by papering over the technological details that separate people from their desires. And we will never be free of the need for people like Steve Jobs, because we can not help but reach for what we cannot grasp.

Yes, many human desires are trivial, and Apple's products have made it easier for trivial people to do trivial things, but there is nothing new here: Sturgeon's Law will not yield. But more fundamentally, human desire is simple: We yearn to eat, sleep, and get laid.[4] To love and be loved. To have children. To feel a sense of belonging. To feel useful. Technology helps us do these things. Full stop. That is why technology exists. Humanity is not your grad school thesis project.[5]

Jobs is an exemplary humanist, if not always an exemplary human being. We may not all be Keynsians now, and we're definitely not all humanists now, secular or otherwise, but of those of us who do proudly embrace the term, I think—I hope—that most of us realize that contrary to some of the more optimistic dreamers of the Enlightenment, humanity is not perfectible. Perfection doesn't exist except as some hazy vision in our minds. And that's why I don't think Steve Jobs will ever finish the task that he has set for himself. You should hope to have a task like that. Fortunately, you have the power to choose what you're going to do with your time here with us, and I hope some of you set your sights on a goal that is at least one tenth as significant as Steve Jobs has.


1. I long ago flipped the bozo bit on Farhad Manjoo. He's an embarrassment to Slate.

2. If you don't know who these people are, you are in no position to critique this quite critiqueable list.

3. Can you tell that I'm a smug Mac-Unix-Lisp weenie? But seriously, just as the Mac embodies the humanist spirit, Unix embodies the spirit of practicality and Lisp does the same for spirit of programming-as-communing-with-the-mind-of-Einstein's-God.

4. I am reminded of Jobs's critique of the Microsoft Zune's ability to "squirt" music. The anecdote is important and funny enough to point you to a 37signals blog post. (Jason Fried is too similar for me not to hate him.)

5. I write this with Emacs running, editing Clojure and Javascript source files. I see HTML source code there in the back. I've been paid to write assembly language. If you want to engage in some sort of technology pissing match, to you I say game fucking on, asshole.

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/846191/me-coffee-office.jpg http://posterous.com/users/4aGcQS03JbI5 Edwin Watkeys Edwin Edwin Watkeys
Thu, 13 Jan 2011 13:44:45 -0800 Two companies, one and a half logos http://bnb.poseur.com/two-companies-one-and-a-half-logos http://bnb.poseur.com/two-companies-one-and-a-half-logos

Shazam-v-squarespace

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/846191/me-coffee-office.jpg http://posterous.com/users/4aGcQS03JbI5 Edwin Watkeys Edwin Edwin Watkeys
Wed, 29 Dec 2010 12:50:00 -0800 A Proper Solution to Project Euler Problem Sixteen http://bnb.poseur.com/a-proper-solution-to-project-euler-problem-si http://bnb.poseur.com/a-proper-solution-to-project-euler-problem-si

Here's my solution to Project Euler problem sixteen, written in Clojure. I'm a bit offended by most of the solutions in the message thread because they require bignum support, which is basically a pathetically easy way to solve this problem.

(defn carry [coll]
    (reverse
     (loop [c coll extra 0 acc '()]
       (if (nil? c)
         (if (zero? extra) acc (cons 1 acc))
         (let [v (+ extra (first c))]
           (recur (next c) (int (/ v 10)) (cons (mod v 10) acc)))))))
  
  (defn dbl [coll]
    (carry (map (partial * 2) coll)))

  (defn eul-16 [iters]
    (reduce + 0
            (loop [n 0 acc '(1)]
              (if (= n iters)
                acc
                (recur (inc n) (dbl acc))))))

  (eul-16 1000)

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/846191/me-coffee-office.jpg http://posterous.com/users/4aGcQS03JbI5 Edwin Watkeys Edwin Edwin Watkeys
Mon, 20 Dec 2010 14:25:00 -0800 Google's awkward admission of Android's Achilles heel http://bnb.poseur.com/googles-awkward-admission-of-androids-achille http://bnb.poseur.com/googles-awkward-admission-of-androids-achille

Consider for a moment this ad:

Unadulterated-android

Want to avoid Android phones filled with pointless shovel-ware, over-branding, and gratuitous UI “innovations”? Get Google's Android phone, the one that maybe doesn't suck. If I couldn't use AT&T’s network—say because I lived in the burbs—or otherwise couldn’t get an iPhone, this ad might make me thing, “Huh, maybe there’s hope that my experience with this phone won’t too closely resemble trying to surf Verizon’s black and red walled-garden subset of the web on a Motorola RAZR circa 2002.”

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/846191/me-coffee-office.jpg http://posterous.com/users/4aGcQS03JbI5 Edwin Watkeys Edwin Edwin Watkeys
Sat, 11 Dec 2010 17:47:04 -0800 Philly, you need to step up, because you're bringing me down. http://bnb.poseur.com/philly-you-need-to-step-up-because-youre-brin http://bnb.poseur.com/philly-you-need-to-step-up-because-youre-brin
Photo

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/846191/me-coffee-office.jpg http://posterous.com/users/4aGcQS03JbI5 Edwin Watkeys Edwin Edwin Watkeys