meyerweb.com

Skip to: site navigation/presentation
Skip to: Thoughts From Eric

Archive: May 2006

Memorial Day

One of my grandfathers served in the Navy during World War II.  The other worked in a critical industry and so was exempted from the draft.  After living and working in the Phillippines for a few years, he and his family left only a few weeks ahead of the Japanese.  Many of their friends and their friends’ families did not make it out in time.  Most of them spent the rest of the war in Japanese POW camps—assuming they survived that long.

A semi-distant relative worked on the Manhattan Project.  A few days after one of the test detonations, he and his children wandered the test site, picking up shards of alien glass littering the desert: bright leavings of a new technology whose more subtle dangers had yet to be identified.  All three of them eventually died of cancer.

None of them ever held a rifle.  None of them were soldiers.  They still died casualties of war.

It is they, and the countless people whose stories echo theirs, who I remember today.

Spoken Words

A couple of interviews that involved me were recently released, and I’ve been very tardy in linking to them.  Life has been like that of late: I passed a major career anniversary last week and completely failed to note it.  I was lucky not to overlook Mother’s Day, which is not really something you want to do when there are children in the house.

So anyway, the interviews:

I’ll be showing up again on the Web 2.0 show as part of an ensemble cast in their discussion of ma.gnolia, but I don’t know when.  I’ll probably linkblog it when it comes out.

Ya know, I remember when interviews were printed, not audible, which was preferable because I tend to sound more intelligent in print than I do in person.  Of course, I also remember acoustic-couple modems, so maybe it’s not that I’m less intelligent so much as more senile.

Framework Fix

“You know,” I said to the guys at the car lot, “I just don’t understand the deal with this car here.”

“Oh, it’s absolutely worth it!” they exclaimed.  For the next half-hour, they extolled the power of the engine, the smooth handling, the tight cornering, the rakish styling, and all manner of other wonderful features of the car.

“Wow,” I said.  “Thanks!  But it turns out that what I didn’t understand was how that steering wheel thingy and the foot pedals worked.”

That, in a nutshell, is what happened with the frameworks post.  Predictably, it drew a large number of detractors and supporters of various frameworks, and of the whole concept of frameworks.  Since I focused a good deal on how the tutorials and other materials (yes, including the effin’ manuals) confused me, it should have been no surprise that there’d be a whole lot of debate about the “hype” surrounding frameworks.

But here’s the thing: I didn’t get what frameworks really were.  I wasn’t complaining about the hype.  I was complaining about my lack of understanding, and to a large degree how little help I’d found in correcting that problem.  This is, as it turns out, because my problem was such an elementary misconception that no framework documentarian would think to address it.

How elementary?  My perception was that frameworks were ways of putting a simpler (or perhaps just different) syntactical front end on a language.  My belief about Ruby on Rails, for example, was that the Rails part was almost like a new interpreter that hid Ruby from the programmer.  I didn’t grasp that it was Ruby.  I thought it was a simplified or more elegant or somehow different language that generated actual Ruby on the back end, the same way Ruby or any other language interpreter eventually generates assembly language (or, if you like, a lot of ones and zeroes).

So that was the “very basic, fundamental, obvious thing” I was missing.  Hard to get much more basic than that, really.  I’m entirely not sure how I formed that perception, but there you have it.

My perception now, as I explained in a comment to my own post, is that frameworks are:

A framework… can be thought of as a collection of libraries, though in actuality a good framework is both that and a formalization of best practices, condensed into an efficient syntax and approach.

That may not be 100% accurate, but it’s a hell of a lot closer than before.  As a result, I feel like I have a much better grasp on the situation and no real reason to worry, so thanks to everyone who commented.

Oh, and I swear that Mr. Snook and I had no idea we’d be publishing on the same topic at nearly the same time.  At least, I had no idea.  If he did, then I’d like to talk to either his fortune teller or his server access logs.

Flummoxed By Frameworks

I used to be a programmer.  Way back in the day, I wrote great big heaps of BASIC and Turbo PASCAL 4.5 and worked in a few other languages of that era (I may be one of the few people left who remembers Clipper).  At one point, a high school friend and I worked on creating our own command-line environment for the C64, for no other reason than it seemed like a fun challenge.  I’ve written quite a bit of JavaScript—not like a wizard, but well enough to get some things done—and a fair amount of PHP.  These are languages that I understand, that make sense to me.  I can make them do what I want to do.

But I just don’t get all these new-fangled programming frameworks.  Is something wrong with me?  Seriously.  I have this grumpy, churlish feeling that I suspect is rather similar to the way SGML experts felt when they saw HTML becoming so popular, and that scares me.

People who’ve drunk the various kinds of framework kool-aid don’t make it any easier, though.  “Oh”, they gush, “you should absolutely try Ruby on Rails!  It’s so easy!  It’s almost like writing regular English!”  Which means they’re clearly on crack, because Ruby on Rails is so very different from a human-written language that the few ways in which it sort of resembles prose, assuming you look at it under a dim light through a heavily fractured fresnel lens, serve only to confuse me further.  I have many of the same problems with MySQL, actually:  by dint of its being sort of human-like in its syntax, I’m led into all kinds of incorrect assumptions about what I can do.  Thus I spend a lot more time screaming at opaque error messages than seems necessary, just because I thought a comma made sense when the language didn’t.

I’ve looked at all kinds of different intros and tutorials and “for regular folks” resources, most of which I get from Simon‘s linkblog, for a number of different frameworks.  They serve only to confuse me.  The CakePHP 15-minute blog tutorial?  Didn’t get it, and remember, I can write PHP relatively well (I wrote all of An Event Apart‘s registration stuff using PHP and MySQL, for example).  The oft-recommended Tutorial in Ruby on Rails?  Lost me, Coach.  Even Jeff Croft’s Django for Non-Programmers left me in the dust.

All these frameworks’ proponents say “Just write in this totally simple and obvious way and the messy details will be magically handled for you!” but that’s just not how it works.  You have to write in a very specific and unintuitive way, and unless you know specific magic words and what roles they can take then nothing will happen except the return of an error message.  This is no different than any computer language, of course.  What I think bothers me is that the cheerleaders always seem to believe, or at least pretend, otherwise.

Maybe it’s just that the tutorials never seem to clearly state what’s a piece of built-in magic that I’ll learn about later, what’s something that I’m building myself, or whatever.  I mean, look partway through Jeff’s Django piece.  I don’t mean to pick on Jeff, because he’s not doing anything worse or even different from the other stuff I’ve read; it’s just the one I happened to read most recently.  Anyway, he says, and I quote:

These four lines create a very pretty admin area…. with appropriate entry fields for all of your fields.  The “pub_date” field will automatically get a pop-up calendar for choosing a date. The “enable_comments” field automatically knows to use radio buttons for its interface. The “lead_image” field will be a browser-based upload tool. Et-cetera. Without doing a thing, you’ll get an admin interface the likes of this…

That whole interface just magically happens?  How and why?  Is it part of the Django core?  Why?  Is it useful for other stuff besides what we’re doing here?  How?  Did all this happen based on the class I created, or the variables I defined, or the values I gave them?  How can I tell?  Where can I find a list of the magic things?  How can I re-use them; or, put another way, how far will the magic things stretch?

I feel like there’s some very basic, fundamental, obvious thing that I’m missing, but I don’t even have the necessary level of knowledge to frame the right question.  Or questions.  See?  I don’t even know how little I know.  Is it that I spent too much time doing old-style programming, and so I’m too suspicious of anything I didn’t write myself?  (In which case you’d think I’d be an assembly-language kind of guy, but I’m not.  At all.)  Is it that for years I taught myself programming languages using reference manuals, so I need that kind of function listing before my mind will start to absorb a new language?  Is it just that I’m too old now and my mind isn’t sufficiently elastic to take in radically new concepts?

Basically, my nose is telling me that I’m up a putrescent watercourse and I lack a means of locomotion.  Maybe I’m not alone there, but sometimes it sure seems like it.

Presentation Remotes

This one will be of interest to the dozen or so of you who regularly give presentations that involve some sort of (Powerpoint, Keynote, S5, whatever) slide show.

Just before An Event Apart Philadelphia, I went out and bought a Keyspan Presentation Remote.  I picked this particular make and model because I’d used one at Web Essentials 05 and it’s programmable, which always hooks me.  It also has the ability to control the mouse pointer, change the audio volume, and more.  So I bought one.

Bad move.  As attendees of An Event Apart can tell you, we had problem after problem with the damn thing, both with the default settings and with the customized configuration I’d set up.  It turns out the remote has two “modes”, and the default mode can be only partly reprogrammed.  Sadly, it won’t stay in the alternate mode.  If you don’t interact with the remote for a minute or so, it goes back to default mode, which means it stops doing what it’s supposed to do (advance slides).  We ended up just not using it.

While I was at IceWeb, I borrowed Molly‘s (or maybe it was Andy‘s) Kensington Pocket Presenter to deliver my talk.  This little baby is simple as anything: largish back and forth keys that map to Page Up and Page Down, a red button for the laser pointer, and a “stop” button that blanks the screen in supporting applications.  That’s it.  And that’s what makes it great.  Even better, the USB receiver slides into a storage slot in the remote itself, and doing so turns the whole thing off, is pure genius.  It fits easily in the hand, both in terms of size and shape.  It’s the iPod of presentation controllers, designed to do one thing and do it very well.  It’s enough to make me reconsider my whole “one device to rule them all” stance.

I picked one up at the Apple Store the other night for not much more than it costs at your favorite online discount e-store, and I couldn’t be happier.  The one little quirk I noticed was that the first time I plugged one of these into my PowerBook (running Tiger), the system said I was plugging in a new keyboard.  I dismissed the dialog box, and it’s worked without a hiccup ever since.

So: Keyspan remote bad, Kensington remote good.  Of course, if you really need a presentation remote that can do a convincing impression of a slow-moving mouse driven by an Etch-A-Sketch interface, then you may disagree with me on this one.  Me, I’d rather just have a slide controller, and if I need to do something with the mouse, I’ll walk over to the computer and use the mouse.  Shocking!

May 2006
SMTWTFS
April June
 123456
78910111213
14151617181920
21222324252627
28293031  

Archives

Feeds

Extras