Posts in the Tech Category

S5Project.org

Published 18 years, 11 months past

Over the past year-plus-a-half, S5 has grown from a small hack of a compact slide show script written by Tantek Çelik into a relatively complex bit of work.  In the beginning, there was simply a way to take a single document and turn it into a series of slides.  I added basic keyboard controls, a navigation menu, and the ability to have the navigation controls show and hide, and then threw it out into the public eye.  People loved it, and with a lot of help from a lot of people, all manner of features were added: slide bookmarks, much better keyboard controls, incremental progress, a notes view, and more.

Despite all this community involvement, though, the code base was in a single set of hands: mine.  Anything that was added to the “official” S5 code was done by me, as time and understanding allowed.  As anyone could have predicted, this has slowed the advancement of S5 over time, and of late it’s brought advancement to a near standstill as I’ve struggled to keep up with other demands.  The only thing I’ve added since 1.2a2 is the ability to blank the screen by hitting the “B” key, and that change has yet to become public.

Of course, the code is explicitly in the public domain, so anyone can add to S5—and many have.  ZohoShow, for example, outputs S5 1.1 code.  I’ve seen S5 used for product tours of medical software and board games.  Jonathon Snook added a “live preview” version of the notes view, which I totally want to see in the primary code base.  David Goodger made a bunch of useful Docutils-compatibility additions that I never managed to fold in.  I also know of four different implementations of remote-control functionality, where one person runs a slide show and changes are reflected in remote copies.  This is a feature perfect for distance learning, corporate netconferences, and other situations.

And all this time, there was still no way to have those enhancements, or any others, “come home” to the source of S5 unless I did it myself.  Until now.

Thanks to Ryan King, we now have S5 Project, which will be the official home of S5.  Besides the blog and mailing list S5-discuss, there will be a wiki, a source code repository, and a bug-and-feature-request tracking system.  If you’re an S5 hacker, or even a frequent user, please do join the mailing list (I know, I know—another one?) or at least subscribe to the S5Project RSS feed to keep track of what’s going on.  I expect the mailing list to become the place for coders to talk about additions they want to make and bugs they’re trying to squash, even after the bug-tracking software gets set up, and it will be a primary source of content for the wiki-to-come.

While it’s been the case that anyone may add to S5 in their own way, for whatever purpose they see fit, now there will truly be community access to what’s always been a community project.  I hope you’ll join us there!


Forgetful Flickr

Published 19 years, 1 week past

Jeffrey wrote yesterday about some Flickr problems he’s having, and while he’s found resolution, his post brought to my forebrain some problems I’ve been having with Flickr.  So I’ll record them here.  Wooo!  Flickr pile-on!

Actually, I really only have one problem, but it manifests itself in multiple ways.  The problem is this: any photo with a privacy setting other than “Public” doesn’t ever show up in Flickr RSS feeds.

Here’s why that’s a problem, instead of a good thing:

  • If one of my contacts has marked me as a Friend, and they post a photo that’s visible only to Friends & Family, that photo does not appear in my RSS feed of photos from my friends and family.  These same pictures show up if I go to the “Photos from your Contacts” page on the Flickr site.  In the feed, they’re entirely absent.

  • If I post a photo that’s visible only to Friends & Family, any comments made on that photo do not appear in my “Comments on your photos and/or sets” feed.  So I don’t know what anyone’s saying about pictures of my wife and child unless I go to the “Recent activity on your photos” page on the Flickr site.

  • Bonus related limitation: only comments appear in my recent activity feed; things like added tags and favorite-photo designations don’t show up in the feeds either.  In fact, the feed link on the Flickr site says “Subscribe to recent activity on your photos” but the only activity shown in the feed is comments on public photos.

There may be other, even more subtle hindrances in that vein, but those are the ones that have annoyed me the most.

So why is it that stuff I want to know about—in fact, the stuff that I probably want most to know about—is only available on the actual web site, and not in the RSS feeds?  Flickr knows exactly what it can show me and what it can’t when I visit the site, but when viewed through the lens of RSS, it suddenly forgets what non-public access I’m allowed to have.  To steal a perfectly appropriate line from Jeffrey’s post:

A user experience mistake like this feels quadruply wrong precisely because user experience is what Flickr typically gets so right.

Update: it seems to be a security thing, as a few people have already commented.  I guess I understand the concern, but it’s hard for me to give it a whole lot of credit: if I were that paranoid about people seeing photos I consider truly private, I wouldn’t put them on a central server that anyone can visit in the first place.  Yes, I’ve withheld some photos from being fully public, but that privacy effort is one security breach or late-night coding goof away from total failure.  (Remember when Amazon accidentally showed the real names of reviewers instead of their account names, thus exposing some authors as having slammed books competing with their own?)  So if my personal “recent activity on your pictures” and “photos from your contacts” feeds were based on long randomly generated tokens, and not the discoverable user IDs, that would seem to be private enough—for me, anyway.  Your paranoia may vary.


@media Impressions

Published 19 years, 3 weeks past

I’m back home from @media 2006, and as much as I’m happy to be reunited with my family, I’m very glad I made the trip to London.  All the people I met (and I met far too many to have any hope of naming them all) were great, very enthusiastic and passionate about what they do.  Forget the “reserved Englishman” (or woman) stereotype: if I were to create a single composite image to represent my experience, it would be a warm, wide grin.

From all the commentary, it would seem that people very much enjoyed my keynote, “A Decade of Style”, and several people commented on its similarity to last year’s keynote by Jeffrey Zeldman.  I knew he’d talked about the Web Standards Project, but I didn’t fully appreciate the danger of topical overlap.  Fortunately, this doesn’t seem to have hurt its reception, and I’m glad people found my little trip down amnesia lane to be of interest.  Personal narratives can be highly compelling, but they can also be unimpressive or (even worse) boring.

Of course, there was plenty of love for other talks, but you can understand why I might have been most concerned about how my talk was received, it being the one for which I was responsible and all.  I don’t get nervous about speaking in front of audiences, but I do fear boring or annoying them.  If there’s one thing I strive not to be, it’s a waste of others’ time.

As usual, there’s a quickly expanding body of photos over at Flickr.  I just have two things I’d like to suggest that @media photo taggers please do (or don’t):

  1. While I appreciate the photogenicity of London, pictures of Big Ben or Heathrow airport don’t really deserve the tag “atmedia”.  The venues, sure; the attendees, absolutely.  But a picture that shows all of the seats on your flight to UK were full isn’t really about the conference.  And do we really need to see what you ate for dinner each night?  I say thee nay.  (But then I totally don’t understand the impulse to habitually take pictures of one’s dinner, so maybe I’m a tad off base there.)

  2. If a person is depicted in your photo and you know their name, you should put that in your photo’s tags.  Whether you use the proper format (“Joe Person”) or the compressed version (“joeperson”) is irrelevant, since Flickr treats them as being equivalent.  But it’s nice to be able to find all the photos of, say, Jon Hicks by a convenient name-tag.

    I’ve also seen people tagged with both their name and URL, so a photo of Jon Hicks might be tagged both “jonhicks” and “hicksdesign“.  That’s a decent bit of design redundancy and probably worth doing, but at the very least, tag the names.  I’m going to go clean up my omissions on that score this evening, so as to flesh out the semantic gooness of my own photo stream.

Just my two bits of tagging advice; take ’em for whatever you think they’re worth.  In the meantime, if you’ve ever wanted to see me wearing a suit, or with my fangs partially extended in anticipation of a fresh meal, well then—I guess it’s just your lucky day, innit?


Mail Mishandling

Published 19 years, 3 weeks past

As much as I detest IMAP, I have to admit that it makes testing new mail clients a heck of a lot simpler.  So after an extended period of using Thunderbird, I decided to try out Mail 2.  I quickly found myself in a familiar place:  wishing I could combine the best features of two programs.

There are things about Mail that I completely love, such as its smart folders.  Thunderbird’s “saved searches” never really seemed to work right; when I set up an “all unread in the Inbox” folder, the count jumped around more randomly than an Amazon sales ranking, and didn’t keep up with changes in the actual unread count in the Inbox.  I’ve also been completely underwhelmed by Thunderbird’s offline archiving.  It’s a major pain that any folder I want to have archived offline I have to configure individually in Thunderbird via “Properties…” and that I have to tell the application I’m going offline before it bothers to archive anything locally.  Compare all that to just saying (as in Mail) that I want to keep “All messages and their attachments” and then having the program do just that as the mail comes in.  Yes!  That’s what I want.  Why doesn’t Thunderbird allow that?

On the flip side, it’s a lot easier in Thunderbird to do things like navigate mailboxes with the keyboard.  It lets me highlight an arbitrary number of messages, hit command-R, and thus open a reply to each one.  It has labels like “important”, which are useful for helping messages stand out in a large mailbox, and allows the labels to be set with unmodified keystrokes.  In order to even get close to that in Mail, I had to install Mail Act-On, which is way cool, but also fundamentally hampered by what Mail allows filters to do.  Compared to Thunderbird, that honestly isn’t much.

When I’m in Mail, I also miss little touches like alternate-row highlighting in mailbox views.  Maybe there’s a way to make that happen with a plugin or something, but I couldn’t find one.  And what I really miss is the ability to define per-account behaviors.  In Thunderbird, I can say that one account should have all its outgoing mail bcc:ed to a given address, while another should not.  In Mail, that’s a universal setting—the very thing I like about its archiving configuration, ironically, I dislike here.

Mail seems a lot snappier than Thunderbird, that’s for sure.  But it has enough limitations for someone like me that I don’t think I can stick with it.  I’m probably not part of its target audience.  My biggest clue of that was the fact that there’s no setting (I can find) to have the text insertion point placed below the quoted text when replying.

If a mail client is going to try to force me to top-quote, then that’s no client for me.


Sweet Home Chicago

Published 19 years, 1 month past

As Jeffrey said, An Event Apart Chicago was fantastic.  There was a great energy in the room—not only in the speakers, but in the audience as well.  The old talks felt like they had more punch, and the new material was crisp and fresh.  We got a lot of really sharp questions during our talks, and even the between-session chatter crackled with high-level insight and ideas.

There have been some great shots posted in the Flickr group, which includes a few humble efforts from yours truly.  Several of them give an idea of how packed the house was, and still there was a sense of intimacy.  For this, I give a great deal of credit the venue itself; as Jason said, I just want to take it with us wherever we go.

Thanks to all who made the day so great.  With the energy charge of Chicago still humming in my head, I’m looking forward to AEA New York more than ever.


Spoken Words

Published 19 years, 1 month past

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

Published 19 years, 1 month past

“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

Published 19 years, 2 months past

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.


Browse the Archive

Earlier Entries

Later Entries