meyerweb.com

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

Archive: November 2004

Great Big Food Show

Today, Kat and Carolyn and I spent all day at the Great Big Food Show down at the I-X Center.  This is the Food Network‘s road show, and it was held in exactly two very hip and happening cities this year: Philadelphia and Cleveland.  The show ran here for three days, and every day there were multiple appearances from Food Network stars Marc Summers, Mario Batali, Rachael Ray, and Alton Brown.  Oh, heck, who are we kidding?  The only real star in our personal cooking firmament is Alton, deeply wacky dude and hacker cook extraordinaire.  A photograph of Alton Brown with his arms around Eric and Kat.  We stood in line to get our copies of his books signed, and also to thank him for his Thanksgiving turkey recipe, which quite literally changed how we cook.  I also told him his Web site (specifically, the wonderful Rants & Raves) needs an RSS feed.  He told me he had no idea what the hell that means.  That’s all right.  Until Alton explained it on his show, I couldn’t have told you what a Maillard reaction was, let alone how it related to cooking.

So, clearly, I need a TV show, so I can return the favor.

We also saw Alton’s final stage show, where he did a sort of live-action espiode of “Good Eats” involving custards, eggnogs, ice cream, and other foam-based foods.  It was a lot of fun, with probably one or two thousand people in attendance.  I’ve heard that the other live shows were similarly popular, and with six shows a day over three days, that’s a lot of people.  Even if you figure some repeat customers, that’s still well over fifteen thousand.

What wasn’t fun was the show floor, which was far too cramped and therefore choked with crowds of attendees.  The only reason I can imagine things were so tight is that they didn’t want to pay for more floor space, because the show area was completely surrounded by empty space.  Rumor has it that next year they plan to make it even bigger, and I certainly hope that’s the case.  It was clearly a popular event, so I think they can afford to bump up the surface area.  That may mean a slight bump in ticket prices as well, but honestly, they weren’t terribly expensive so I think a small increase would be totally acceptable.  Especially if it yields more elbow room.

There were also vague promises of turning the live shows into a TV special.  I hope they make it two hours long, and call it the “Great Big ‘Great Big Food Show’ Show”.  The name actually rolls off the tongue more smoothly than you might expect.

In all, we really enjoyed ourselves.  Hopefully those of you in less-hip cities will have a chance to see the show next year.

S5 1.1a3

We’re up to 1.1 alpha 3, with the big news this time around being incremental display.  So far, the way this works is that you can class a ul or ol element, and have the bullets in that list be incrementally displayed.  This is easier to understand by seeing than by reading an explanation, so go check out the alpha testbed.  In the first slide, all the bullets are displayed incrementally; you move through them by using any “next” action (keyboard or mouse).  You can also back up using a “previous” action.  The exception to this is the next and previous controls in the lower right-hand corner of the slide.  These always move forward or backward by one slide.

On the first slide, all of the bullet points are greyed out until you advance through the slide.  On the second slide, the first point is pre-highlighted.  This is intentional; it shows the difference between the two ways of presenting an incremental list.  On the third slide, the main-level points are all normal but the sub-list is incremental.  Again, this is intentional.  The highlight effect is completely CSS-based (using the class current), so every theme can have its own incremental-display look.  I picked red because it was really, really obvious, and I was too lazy to think about what color would fit in better with the default theme.  I’ll get around to tidying that up later.

The one thing I’ve made the system do but am not sure about is that when you back up to a slide that has incremental display, it starts out looking normal and then “un-highlights” as you move backward through the points.  I’m not sure that this is desirable, but at the same time I think it could be very useful.  (Plus you can always skip back a whole slide by using the lower-right controls.)  I’d like to hear feedback on what people think about the way the incremental display works now, and how it could be better.

For those who want to play around with incremental display, you add a class of inc to a list whose items you want to be incremental.  If you want a slide to start with the first point highlighted, add psf to the class value, so you have class="inc psf".  If you want to reveal arbitrary elements one by one on a slide, individually class them with inc.

I don’t have all of the contributed code merged into the JS yet, but I’ve seen everyone’s contributions from earlier posts, so please be patient.  I’m still at a loss as to how to make the intra-slide links work in Safari, and could use help figuring out what’s wrong there.  To test it, hit the “skip to summary” link on slide 1 of the testbed.  For that matter, if you uncomment the li:after rule in pretty.css, you’ll see that Safari keeps adding “NaN” into the classes of incrementally-displayed list items when you move back and forth from one incremental slide to another.  I can’t figure that one out, either.  Help is always appreciated.

So from my original 1.1a2 to-do list, the following are still left to do:

  1. A way to choose whether to show/hide all of the navigation controls, or just the menu. Indicating the preferred behavior via a meta tag is starting to feel more like the right way to go, since it means the presentation author can decide whether he wants the controls to be visible or hidden.  The problem of exactly how to manage the behavior is as yet unresolved.
  2. Better, possibly more dynamic, theme selection.  I still don’t have a clear idea of how this would really work.  It might be better to simply write a clear description of how to associate a new theme with the presentation file, and write up guidelines for theme authors.
  3. A way to indicate the target resolution in the CSS, so that the scripts can use that for scaling purposes (and thus make the scaling more intelligent).  I’m actually leaning pretty heavily toward dropping this, because I don’t see a pressing need to include it at this stage.  For the purposes of scaling foreground iamges, it wouldn’t be much more powerful than the author managing scaling via CSS.

And there you have the current state of s5 development.  Feedback is welcome.  Ever forward!

Mailing List Community Care

Clay Shirky recently published a missive titled “Group as User: Flaming and the Design of Social Software” that I almost dropped into the Distractions list, but then realized I wanted to write about in a little more detail.  Clay talks about mailing lists as one of the oldest forms of social software, and how they tend to become clogged with flame wars.  He makes the case that since flame wars are inevitable in a group setting, there should be mechanisms that help prevent and control the fires.  For the most part, I agree with him that some mechanisms would be a good idea.  I do not, however, accept that flaming is inevitable.

I can draw on personal experience to make this claim.  I’ve been responsible for a mailing list (css-discuss) for almost three years now.  In that time, the list grew so large that it started to overload its home, and had to migrate to a more capable host.  As of this writing, the membership list stands at 5,128 subscribed accounts.  That’s not a typo.  Bear in mind that any account that is disabled due to excessive bounces gets automatically removed after a couple of weeks, so the amount of deadwood is pretty low.

So, yeah, I know what it’s like to be a part of a very large mailing list community.  Over the lifetime of the list, we’ve had very, very few flame wars.  (Most of them have centered around font sizing, unsurprisingly enough.)  And what we call a flame war would hardly even raise an eyebrow in most online fora.  By the standards of the css-d community, any thread that contains more than two agitated posts is considered a flame war.  Posts where list members actually insult each other are rare as moon cheese.  Condescension is a little more common, but not by much.

We aren’t running magic software to make this happen; the list is running on Mailman 2.1b5.  What’s made the difference is me.

Warning!  Ego alert!  Ego alert!

Actually, not at all.  From the very first, I’ve worked hard to make sure list members understand the nature of the community.  It is not a democracy, and it isn’t an anarchy.  It’s a benevolent dictatorship.  This is no secret: I’ve said so on the list at least a couple of times.  I try not to wield the Brickbat Of Administrative Correction unless necessary, and when I do, I do so in as neutral and even-handed a manner as possible.  In the end, though, I make it very clear that within the confines of that community, my word is effectively law.  I decide what’s on topic, and what isn’t, and gently make my decisions known.  End of story.  When I call for a thread to end, it ends.  Or else.  If list members ask for changes to the list’s nature, as happens from time to time, I listen to their reasoning and then make a decision.  That’s it.

Maybe that all sounds like a guy on a massive power trip, but honestly, I’d much prefer that I didn’t have to make those calls.  I’d prefer to have a community where the members keep themselves in line.  That’s actually possible so long as the community is very small, and everyone both listens and is heard.  In a large community, it’s effectively impossible.  Even if 99% of the list membership is adult, the 1% can ruin things for everyone else.  On css-d, a 1% flame rate would mean 50 members were out of line.  In absolute terms, that’s unacceptable.  Thus I actively watch and chaperone the list.  I also wrote some material enumerating the policies, how to avoid being offended, and the right way to answer questions.  People really like that material.  I’ve been asked permission to re-use that material several times.

I also participate in the community as best I can, setting an example for how questions should be answered and list members should act.  Of late, I’ve been too swamped to offer more than token participation on the list, which is why I just yesterday selected four list members to be moderators.  They’ll be helping with administrivia, but more importantly, will be helping to keep things on-topic and civil, although I honestly don’t expect them to have to work very hard at that last part.  Heck, I’ve been an absentee dictator for a couple of months now, and things have stayed mostly on-topic and very civil.  Basically, having put the effort into rolling this massive boulder in a certain direction, it kept going that way even when I stopped actively pushing for a while.  Just recently, things have started to deteriorate a bit.  That was a major impetus to get off my keister and pick some moderators.

So I guess my point is that there’s more to a community than its members.  The founder’s influence is strong, and if the community has someone (or several someones) actively in charge who can make my-way-or-the-highway decisions but still be reasonable about them, it can be kept very nearly flame-free.

Still, some of the ideas Clay discusses would be very useful, even in an already-civil environment like css-d.  He proposes, for example, adapting features of the Slashdot karma/moderation system to mailing lists.  In the css-d context, such a system would probably function more like the eBay “Rate This Seller” feature; for us, it would be a “Rate This Member” mechanism that could communally identify those who are helpful, knowledgeable, and so on.  Similarly, a “Rate This Thread” could be used to identify topics of interest as well as topics that nobody wants to hear about.  (Like font sizing.)  I believe that by getting distributed, evolving community input of that kind, the list would be strengthened and enriched.

It would be interesting to add such features, but in the current environment, I don’t see a way to do so—and, let’s face it, I’m not the world’s most proficient programmer.  Right now it’s mostly something to keep in mind for the future.  Especially if you happen to be working on mailing list software.

S5 1.1a2

I’ve posted an update to the testbed file that incorporates the new font-scaling routines from Michaël, and also a slightly corrected version of the internal-link slide routines contributed by Henryk Plötz back in the 1.0b2 days.  These routines all seem to work fine, except the internal-link routines don’t seem to work at all in Safari.  I tried several times to fix it, but I can’t figure out the problem.  So fixing that is now on the to do list.

Speaking of which, here’s the current to-do list for S5 1.1, categorized by their importance.  Any of these are, of course, subject to modification, deletion, and so forth.

  1. A way to trigger simple in-slide changes by hitting “next”.  For example, having a list of bullet points appear one at a time as the space bar (or other “next” action) is hit, and then moving on to the next slide.
  2. The ability to cleanly list multiple authors in the metadata.  I’ll get back to this in just a minute.
  3. Better, possibly more dynamic, theme selection.  I don’t know how yet, nor am I sure how it might impact the outline/slide show view toggling.
  4. A way to choose whether to show/hide all of the navigation controls, or just the menu.  Ordinarily, I’d say “do it in the CSS!” and you can in fact do that right now… as long as you don’t care that the behavior won’t be quite right in Internet Explorer.  The problem is that I’m not quite sure how to manage this in a fully cross-browser fashion, short of scanning the CSS files for certain rules, and firing JS based on that.  Which, frankly, sounds kind of ooky.  Adding that information via a meta tag doesn’t seem like the right answer, but maybe I’m wrong.
  5. A way to indicate the target resolution in the CSS, so that the scripts can use that for scaling purposes (thus making the scaling more intelligent).  I’m not really sure this is needed, and I’m open to being convinced one way or the other.

If there’s anything missing, let me know.  Also feel free to comment on what you think of the above plans.

Now for the metadata situation.  As I understand things, having read RFC 2068, you can have multiple HTTP headers that share a name so long as they’re interpreted as a comma-separated list of values associated with that name.  (Apologies if I’m mangling terminology, but HTTP headers aren’t really my thing.)  So given the following:

<meta name="author" content="Eric Meyer" />
<meta name="affiliation" content="Complex Spiral Consulting" />
<meta name="author" content="Joe Public" />
<meta name="affiliation" content="ConHugeCo Corp." />

…this is an equivalent construction:

<meta name="author" content="Eric Meyer, Joe Public" />
<meta name="affiliation" content="Complex Spiral Consulting, ConHugeCo Corp." />

I find this to be a long way from ideal.  In addition, since commas are the default value separator, if I understand the situation correctly,  I can’t really do something like this:

<meta name="authors" content="Eric Meyer, Complex Spiral Consulting; Joe Public, ConHugeCo Corp." />

…because that ends up as equivalent to:

<meta name="authors" content="Eric Meyer" />
<meta name="authors" content="Complex Spiral Consulting; Joe Public />
<meta name="authors" content="ConHugeCo Corp." />

That’s even further from ideal.  So here’s my current thinking for a way to represent multiple authors and affiliations:

<meta
 name="authors"
 content="Eric Meyer - Complex Spiral Consulting, Joe Public - ConHugeCo Corp." />

Anyone have a better idea than what I’ve proposed?  I’d love to hear it.  As part of said proposal, please keep in mind possible expansion of the information carried in the meta element.  For example, titles might be added, which in my current thinking would go like this:

<meta
 name="authors"
 content="Eric Meyer - Principal Consultant - Complex Spiral Consulting, 
          Joe Public - VP of IF - ConHugeCo Corp." />

It isn’t pretty, but it conforms to my understanding of meta value syntax.  As I say, I’d be very happy to be shown a better way of forming the meta values.

Behind The Beauty, Cracks Appear

This one is going out to all the social conservatives in the room.

Congratulations, people!  You’ve managed to strike a blow for the promulgation of promiscuity and the diminishment of the American dream.  That was the point, wasn’t it?

Yes, I’m referring to the eleven state issues that passed a week ago, each and every one declaring marriage to be the union of a man and a woman, period, move to France if you don’t like it, end of story.  Here in Ohio, we passed one of the most stringent versions by amending our state constitution to define marriage that way, and also to prohibit the granting of equivalent legal status to any other kind of union.  Which means that not only can gays not get married in Ohio, but their domestic partners can’t be granted any of the rights and priveleges that marriage confers even by means of a civil union or some other not-marriage-in-name-only device.  The same is true for heterosexual domestic partners.  You’re either married, or you’re out of luck.  And if you’re gay, well, it would seem you’re just plain out of luck.

So yes, that’s right, oh noble defenders of morality, by enshrining your discomfort with homosexuality, you’ve done your level best to promote continued homosexual promiscuity.  After all, American society is pretty clearly telling gays that they shouldn’t ever hope to have a long-term committed relationship recognized by the state.  So is it any wonder that they don’t tend to form such relationships?  There are, of course, exceptions; I know of at least one gay couple that’s been together for a decade and a half now.  But they aren’t legally married, nor can they be so long as they live in this state, or really almost anywhere in this country.  The message is loud and clear.

As for the American dream, well, your crusade has tarnished that as well.  Remember “life, liberty, and the pursuit of happiness”?  So much for the last of the three.  When two people love each other enough to commit their lives to each other, why should anyone else stand in the way of their happiness?  And yet we do, as a society.  In the name of our discomfort, we impair their happiness.  Life and liberty are still mostly assured, although it’s likely Matthew Shepard would choose to disagree, if only he could.

I know that I’m generalizing here, but at the same time, this is what our democratic process has delivered.  If a vote is the voice of the people, they’re saying something that tastes like ashes to me.  It’s the same process that blocked interracial marriages for so many years.  It’s about as right now as it was then.

You know, according to the CIA World Factbook, the population of the United States in 2003 was 290,809,777.  According to the ratios documented in multiple studies, approximately 29,080,977 of those Americans are homosexual.  The total membership of the largest Baptist churches in the United States, by comparison, was about 29,553,000—roughly the same size as the homosexual population.  (And of couse there are people who are members of both sets.)  Since we’re all apparently willing to prohibit small minorities from marrying, I say we define marriage to be a union between a man and a woman, neither of whom is Baptist.  Sound fair?

Yeah, I thought you’d feel that way.

  (Ed. note — it has been pointed out that the 10% figure is no longer accepted.  Unfortunately, there is not much in the way of firm data on the actual percentage of homosexuals in the American population.  One source describes research which gives a variety of numbers that can, depending on one’s definition of “gay”, yield figures anywhere from 4.2% to 13.4% of the population.  The abstract point being made still stands regardless of the exact numbers, but the original inaccuracy is regretted.)

I’ve had some friends ask me when I’ll be moving, and I can no longer answer “I don’t plan to”, because I’m just not sure any more.  The problem isn’t Cleveland, of course.  Sure, we have problems hereabouts, but this is a relatively tolerant corner of the state.  The particular suburb in which I reside, Cleveland Heights, had the first voter-approved domestic partner registry in America.  Our street had about two dozen Kerry signs and one Bush sign, but so far as I know nobody gave the Bush folks a hard time.  Heck, the guy who mowed “BUSH” into his lawn the next street over was talked about with neighborly amusement and a touch of admiration toward his level of dedication.  Nobody proposed running him out of town.  We didn’t even call him names, or speak with derision.  We generally live and let live around here.  That’s kind of a liberal trait, actually—at least, among the liberals I know.  And I know a lot of them.

The problem isn’t even Ohio.  Yes, this state collectively told gays (and unmarried heterosexual couples) that we don’t much like their kind.  So did ten other states.  Right now, the same would happen just about anywhere in America.  So the problem seems to be America, or maybe just Americans.  Either way, there’s something about homosexuals getting married that a whole lot us just can’t stomach.  I don’t know what it is about this issue that has everyone’s panties in a bunch, and to be frank I’m not sure I much care.  When I’m this far out of touch with so many of my fellow countrymen, maybe it’s time to consider leaving.  After all, if the majority is always sane, then I’m the one who’s wrong here.

It isn’t that easy, of course.  I have no real wish to leave behind the country of my birth; I have great affection for America, and deeply believe in the principles on which it was founded, in a time when so many people seem to feel otherwise.  It grieves me to think of my country as being on the wrong track, but I do.  And then there’s my family to think about, but that actually deepens the quandry.  I don’t exactly want to ask them to move over a point of principle, but at the same time, I’m not at all sure I want to raise my children in a country that seems to have become so shamefully intolerant and narrow-minded.  Kat and I will set for them the best example we can, but when it’s us against the body politic, well, we’re just a little outnumbered.  We might be better served to find a society that will support our beliefs, instead of one that opposes and belittles them.

This isn’t an attack on America, and it isn’t a promise to leave, and it isn’t a story with any kind of decent ending.  It’s a glimpse into one citizen’s inner disappointment.  It’s an attempt to exorcise some of my frustration, and to plead a case, however clumsily.  It’s a lament for a noble dream, one we seem to have forgotten in the heat and noise of our harried, fearful lives.

I wish I could end with a flourish, or even better, with an answer, a call to action.  All I have is a sorrowful shake of my head and a small shrug of resignation.

S5 1.1a1

I’m working on S5 1.1, and want to keep people involved in moving it forward.  So I’ve put up a testbed slide show file, which is simply a copy of the introductory presentation file that points to a new UI directory.  The current state of things, which I’ll call 1.1a01, adds two new features:

  1. An author can indicate whether or not the file should default to slide show or outline view.  The default is slide show.  If you want it to default to outline view, you add:

    <meta name="slideshow" content="no" />
    

    The other possible content value is, obviously, “yes”.  This should be useful to professors who want to present notes in class as a slide show, and then post the same file to the class Web site in outline view.  The toggle key and button will both still flip between outline and slide show views, so you aren’t trapped in one or the other.  You just get to choose how the file will load up.

  2. When in slide show view, the font size automatically scales based on the window size.  This means that if you’re expecting 1024×768 and get 800×600, the slides won’t become impossibly long.  Note, however, that this scales text—not images.  I’m not up to that yet, given that I have to think about how to (or even if I want to) handle them.  I’m using an onresize event handler to scale the fonts if you change the window size, as well as firing the scaling function when the slides are first loaded.  In outline view, the scaling is suppressed.

    In adding this, however, I’ve come up against the same problem that prevented font scaling from appearing in S5 1.0: Gecko-based browsers mangle the layout when the font scales.  To see what I mean, toggle the slide view off and then back on.  Text separation, and the widths of inline elements, will not be recalculated when the slide view is restored.  The same kind of thing happens if you change the window size.  Once you’ve settled on a new size or toggled back to slide view, just hit Reload and all is well.  So it seems to be a case of not consistently redrawing element boxes when font sizes change; force them to be redrawn with a reload, and things are drawn as they should be.

    I can’t figure out how to fix this short of firing a reload event in the fontScale() routine, which I’d really rather avoid.  I suppose I could suppress scaling for Gecko browsers on resize (and fire a reload after toggling back to slide view) but I’d like to find a more elegant way to fix the problem.  For that matter, if anyone wants to make my scaling logic more elegant, go for it.  The frustration of cross-browser incompatibilities in manipulating styles came to the fore when I wrote that routine.

There are several ideas and suggestions from the 1.0 release that have yet to be implemented: be patient!  We’re on 1.1a01, remember, and S5, for all its promise, remains a “free time” project.  (My editors will no doubt be dismayed to hear that I think I even have free time.)  If I get time, I’ll write up a concrete to-do list so you can see what’s planned.  For now, if you’d like to help, please just focus on the problems I mentioned, or new problems caused by these features that I didn’t find.  Speaking of which, if any of you IE/Mac wizards can figure out what I’ve done that breaks S5 in that browser, I’d very much appreciate it.

Look Who’s Walking Now

This past Tuesday, and by that I mean three days ago, Carolyn stood unsupported for the first time, wobbling in place for five seconds.  She stood on her own a few more times Wednesday and Thursday, gaining a little more experience and confidence each time.

This morning, she started walking.  They’re tentative, almost spastic steps, but she can get from one person to another without any support at all.  Her facial expression as she does so is a bizarre mixture of pure concentration and pure joy–almost as if she knows this is really, really hard, and yet loves to do it so much that she can barely breathe.

Remember, this is the little girl who didn’t even start crawling until about six weeks ago.  Now she’s walking, and she’s started crawling up the stairs to boot.  I can hardly believe it.  It’s almost like she was uninterested in mobility until she twigged onto the fact that she could actually move from place to place on her own… and once she figured that out, well, Katy bar the door.

And honestly, I’m not sure who’s more excited, her or us.  Yeah, I know, she’s walking now and that means our lives will never be the same, we’ll wonder why we were ever excited about this, blah blah parental scare stories blah.  You know what?  I will never wonder why I was excited about this.  As she’s moved through every stage, I’ve cherished and enjoyed where she was on each day, and how she’d changed from the past.  Kat has as well.  I think we’ll be free of the wistful regrets that so many other parents have talked about, saying things like, “Oh, I just couldn’t wait for little Joey to start talking, but now he just won’t stop with the chattering and I wonder why I ever wanted him to change!”  No matter how jovial the tone or wry the expression, there always seems to be an undercurrent of seriousness, as if they really do wish that little Joey would just shut up… or, at the least, that they’d fully appreciated the pre-talking stage.

I don’t know that we’ll ever understand that view, and I can’t say that bothers me.  Every time Carolyn makes a developmental advance, it’s a new and fascinating time.  But more immediately, every single day is exciting and wonderful, as we watch her figure out this thing or that; just share playtime with her; or take her for a walk in the yard to touch the trees’ bark, pull up tiny handfuls of the grass, and tilt back to look at the sky with storm-gray eyes full of awe.

Now she walks.  Soon, she’ll start signing to us.  A few months from now, she’ll begin to really talk; she’s already starting to assemble the rudiments of language, imitating things we say as best she can.  One day, she’ll go to kindergarten, and later to grade school.  In the farther future, she’ll become a teenager, and then a woman.  At every turning point, we’ll celebrate who she is and what she’s doing, and never regret the times that have passed into memory.

Keep walking, little one.  We’re right behind you.

Uncollapsing Margins

At long last, I’ve published a new article at Complex Spiral: “Uncollapsing Margins“.  In it, I explore how margin collapsing can lead to weird behaviors, why these behaviors arise, and ways to work around it when you want a different result.  If you’ve ever tried to figure out why a heading’s top margin seems to disappear when it’s the first thing in a div, this article will be of interest.

Oh, and if you were having trouble reaching meyerweb in the last 24 hours, we done got Slashdotted.  They posted an article about S5, and the ensuing geek stampede crushed my bandwidth like it was an overripe grape.  An overripe grape run over by a steamroller.  Once the article fell off the Slashdot home page, things got back to normal.

November 2004
SMTWTFS
October December
 123456
78910111213
14151617181920
21222324252627
282930  

Archives

Feeds

Extras