Archive for the ‘work’ Category

Where is San Francisco?

Posted on: 1 Comment

The mailing list for a local tech Meetup sometimes includes posts from recruiters. Here’s a typical one, received this Monday:

Subject: Looking for a rockstar Ruby Developer in Brisbane
Message: Our client is looking for a ROR developer for a contract opportunity in San Francisco for shopping cart features.

Well, following that was the customary dogpile about the word “rockstar.” Tuesday’s digest was full of amusing responses, and it was almost worth getting such a carelessly worded near-spam to generate that discussion. But something else really bothered me about this recruiter’s post–and, well, about a whole bunch of tech recruiters’ posts:

Where is San Francisco?

Here’s where I think San Francisco, California is:

San Francisco

And here’s where I think Brisbane, California is:

Brisbane by way of Oakland

I have to get directions to Brisbane since I don’t go there much–notice how heinous it is to get there from Oakland on transit? Google suggests I take three trains and one taxi to arrive on a weekday by 9AM. Like, as if.

A lot of recruiters seem afflicted by the ignorance of geography demonstrated in the quote above. A few years back one assured me that I had an interview at the “San Francisco office” for her client–and then directed me to downtown Mountain View. Whoa, whoa–not so fast!

Mountain View is not San Francisco. Nor is Palo Alto. Nor are Sans Bruno, Mateo, Carlos, José. Not even South San Francisco is San Francisco. And Brisbane sure as heck isn’t San Francisco.

Like resorting to the “rockstar/guru/ninja/pirate/cowboy” clichés in a job posting, assuring candidates that the job site is in “San Francisco” when it really isn’t only makes a recruiter look incompetent and/or untrustworthy. Please re-read that last sentence. Got it? Good. Don’t make me post about this again.

Here’s a quick tip on how to assess whether a job site is in the real San Francisco or in recruiters’ “San Francisco”: if there is a landline for your client’s job site, what is the area code?

The area code for the city of San Francisco, as well as for Marin County, is 415.

Yes, there is a danger of Sausalito or San Rafael masquerading as “San Francisco,” but tech hasn’t been exactly a white-hot industry up there, so the volume of misdirected cold-calls and near-spam is tolerably low. If the area code formula above isn’t something you can memorize, I’ve prepared this table you can print out and carry with you:

Is this job really located in San Francisco?
Area code for the job site’s landline Is in San Francisco
650 NO
408 NO
707 NO
510 NO
925 NO
916 NO

What’s the furthest “San Francisco” from San Francisco you’ve seen in a job posting?

What not to buy in 2011

This is the time of year when the Interwebs are flooded with “what to buy…” consumer guides. In contrast, the things I discuss below are much cheaper, saving you both time and money, because in the end you won’t be shopping for them at all.

(An aside to Web services freelancers: you know, if we stop offering these things, people will stop thinking they can obtain them. Give it a thought.)

What not to buy in 2011

  • Support for IE 6. Freelancers–put a clause in your contracts that requires a $10,000 deposit before you even start up IETester or the like.
  • Meetings requiring developer attendance.

    "Sunday," © Peter Paul Jacques

    Described variously as “toxic,” “a disaster,” and “the biggest productivity killers for programmers,” meetings are relics from the twentieth century which have as much relevance to your technology projects as do carbon paper and stenography.
  • The cost of a stern “butts-in-chairs” policy. Savvy, experienced developers know what conditions make them productive, and these are various. Nobody lists compulsory enclosure in a cube farm among those conditions.
  • Huge office spaces. Since you’re not having meetings, and you’re letting your team co-work or telecommute, you don’t need all that much space anymore.
  • Fake work.
    Fake Work: Why People Are Working Harder than Ever but Accomplishing Less, and How to Fix the Problem

    This should be obvious, but somebody had to write a whole book about it to expose the problem.

  • Expensive conference fees. As Rebecca Murphey noted, the most useful conferences for Web technology seem to be ones organized by and for practitioners, who aren’t always bankrolled by deep-pocketed corporations.
  • Tag soup, nouvelle cuisine style. Regrettably, HTML5 provides just as many opportunities for lousy markup (“<div>-itis,” overuse of class and ID attributes) to the novice and/or the unconcerned, as  did earlier HTML standards.

What’s dropped off your 2011 shopping list?

A Timeline for Treating Burnout

Posted on: 2 Comments

You’ve reached a state of burnout when:

  • you can’t socialize after work, or on weekends, because the only thing you’re prepared to do in your state of numbness is to get drunk alone;
  • you hear about layoffs at your workplace…and are bitterly disappointed you weren’t among the people let go;
  • you’re riding your bicycle to work, all the while wishing a car would hit you, because then you wouldn’t have to go to work that day.

Photo © americusian

A Timeline for Treating Burnout

0-3 months:

  • Don’t feel ashamed.

    Burnout is common in the tech industry, yet still regarded as some kind of shameful personal weakness rather than a normal human response to irrational working conditions.

    Fortunately, some courageous people are starting to discuss burnout openly.

  • Say “no.”

    Stop “learning to say no.” Just do it. Do NOT say “maybe.” People think “maybe” means “yes,” especially when women say it.

  • Stop volunteering for now.

    Yes, there are worthy causes all over relying on volunteer efforts. But when you are in burnout, you are in crisis mode. You might have arrived here by giving away your time and expertise. While it’s certainly flattering to be told a project will fail without your unique, uncompensated work on it, remember that anything depending on a single person is unsustainable.

4-6 months:

  • Step away from the screens.

    I know I’ll sound like a crank, but I really do believe there’s something physiologically harmful about lengthy exposure to computer monitors, and we burn out more readily when working with them. It’s been established that light shining in our faces affects our circadian rhythms, which is probably why, after hours, days, weeks, of this treatment, you feel as jumbled as you would from the jetlag of a nonstop flight from LAX to Heathrow.

    Get away from the TV, the laptop, the iPad, and so on to reset your clock.

  • Get your house in order.

    I’m not using a metaphor–I mean your actual, physical dwelling place. A dirty, cluttered living environment is both a symptom of burnout (you’re too weary to wash the dishes or hang up your clothing) and a contributor to it (your place isn’t relaxing or pleasant to be in). Counter your packrat or slovenly tendencies with some re-education and a fresh, wetted sponge.

7-9 months:

  • Simplify, simplify.

    When a painter reaches an unsatisfying point in her work, she might recharge her enthusiasm by painting with a reduced palette. Removing the burden of choice frees you from yet one more thing to do–and exposes how many of the options posed to us make no difference in how our days proceed. Stop dithering over things which don’t really matter.

    You don’t have paint en grisaille, but you must set yourself more confining limits than usual to realize the benefits of this practice. Type “voluntary simplicity” or “minimalist living” into a Web search engine to receive much more information than you really need to start living with less.

  • Risk being called “unsupportive.”

    Many of us, especially women, reached our limits by taking on the burdens of others. We’ve been the caretakers and companions of people who dumped on us…because we let them. For some reason we fear being called “unsupportive” for not concerning ourselves with these people’s endless problems. I’m not talking about being unsympathetic to genuine tragedy, but rather about defending yourself from these vampires.

    You know how the flight attendants on commercial flights instruct parents to put on their own oxygen masks before attending to their children’s?

    Consider your recovery from burnout just like this scenario–you’re of no help to anyone else until you have your own air supply secured.

10-12 months:

  • Take on one well-defined project.

    By “well-defined,” I mean a project with a start date, a definite list of tasks, and (this is important) an end date. Just as you recover from a physical injury by assuming only gradually heavier duties, you recover from burnout by taking on shorter projects with less complexity, then gradually moving into either longer or more complex projects–so long as you still feel enthusiastic about the work.

    Do not join a vaguely defined project. What you need at this stage in your recovery from burnout is reassurance that, however stressful a particular moment can be, that moment passes. Open-ended projects can persuade us that nothing changes, time has stopped, this reality is the only one, and the stressful moments are endless–sending us right back into burnout.

  • Schedule a regular digital sabbatical.

    Get away from the Web, IM, e-mail, RSS, blog, podcasts–all of them. To update Timothy Leary’s slogan, turn off, tune out, and drop in. If you’re so addicted to constant electronic distractions you can’t envision an entire weekend without them, then begin with shorter absences–thirty minutes, an hour, two hours or even twelve.

How have you recovered from burnout?

So long, Vox.com

We were so proud. It was through such a vale of tears that we, the engineering group at Six Apart, traveled to get to that wonderful point at which Vox.com, the world’s niftiest hosted blogging service (prove to me it wasn’t), went live.

All those hours of mandatory overtime. All those foosball games and trips to the office coffeemaker. All that back-and-forth between the Perl dudes, the JavaScript kids, the CSS ladies, and the visual design goddesses. All those fake blog posts made on the testing server (weary of typing “lorem ipsum,” I resorted to scraping content from Hungarian Wikipedia pages, which provided nice long strings to test word-wrap in layouts). All, it seems now, for naught.

Vox.com will go offline on Sept. 30, 2010. It had been withering for years; I know my posts to my own Vox blog dropped off in frequency around 2008. When I did post, most of the comments I received were obvious spam, not filtered by the server (of all the great ideas we put into this product, why not something like Akismet?) What’s left of Vox now seems like one of those grotesque, abandoned amusement parks you’ll see in dystopian sci-fi movies: a brightly colored playground that somehow feels menacing. Are those zombies hiding behind the Ferris wheel?

Vox-er Patty Mitchell captures how this apparently necessary closing is more than releasing a domain name:

The loss is one of community and connection. That was the magic of Vox. The way this platform used to make it so easy to post with different privacy levels and to share our lives as we chose with friends, families and even…gasp!…strangers. The magic was in how trust was built and how sometimes those “strangers” became our real friends over the course of time and circumstances.

Why this? How could such an easy-to-use, attractive, AJAX-charged product not contend successfully with old-style clunkers like Blogspot and WordPress?

Chris Balz, one of Vox’s JavaScript maestros, has this insight:

Vox finds its home with the NPR set and similar demographics. Yet with a shrinking middle class, the audience for these types of ventures is smaller and not as spendy. So “social” went almost wholly to brief “status” messages and not to Vox’s social blogging.

In both Patty’s and Chris’s remarks are hints of what I think the real problem for Vox was. That problem was the rapid expansion of Facebook’s popularity outside its original niche user population of affluent college students. When we were building Vox, the refrain seemed to be, “let’s build a blogging service for grown-ups.” And–I don’t just believe, I know–we succeeded. For a time. For a rather short time…until the Baby Boomers, the Gen Xers, the parents of Millennials all turned to Facebook, despite that service’s apparent disdain for such uncool olds.

I remember two phone conversations I had in August 2005. One was with an engineering manager desperate to hire a front-end dev. The product was unfamiliar but intriguing to me, and I already knew one of the engineers. Everything sounded great except the commute–it would’ve taken me two or even three hours’ travel each way. Sorry, no dice. So I was more enthusiastic about my second phone call, to a recruiter for a blogging software company. I wouldn’t know anybody there, and the product was not fully defined, but the commute was reasonable. I took that project.

Yes, the first conversation was with Facebook, and my second, with Six Apart, about Vox. I’ve asked myself, “What if…?” ever since.

Productivity System Smackdown: FlyLady vs. GTD

Many of us, it seems, meet day’s end with disappointment, not satisfaction. We started ambitiously, worked steadily–at something. But what is there to show for that? A barely diminished to-do list, and a burden for tomorrow.

I confess that my favorite way to procrastinate is to read productivity blogs. It’s by way of this habit (bad or good? Let me know) that I’ve learned about the following productivity systems. Readers familiar with both might be astonished that I’m comparing these, since they’re oriented towards such different audiences and spheres of activity–but having used and experienced both, I think they’re ultimately about the same subject, which is reaching that thrilling moment when your to-do list is blank.


GTD

Contender #1: Getting Things Done, a.k.a. GTD

Who:
David Allen
How:
the book (Getting Things Done ), the seminars, the applications, the fans.
What:
GTD© is the productivity system outlined by David Allen in his 2001 bestseller. Allen proposes that a profound gain in one’s productivity follows from writing things down, rather than keeping them in one’s memory. Much of GTD centers on organizing that written data into recognizable prompts for action.
Ritual object:
Many items hold great importance in the GTD system, such as daily calendars, notebooks, and PDAs, but when I read GTD, nothing seemed more crucial for the system’s implementation than the File Folder.
Pros:
  • As you can see from the options above, there are many sources of information about this system. Any practitioner seems ready to pounce on your least little question about how to use the system.
  • Held in great esteem in the US corporate workplace. Casually mentioning your reliance on GTD practices in a job interview will probably score you points.
  • Several of the principles are quick to implement and easy to remember (I expect Allen would prefer we make notes about them down instead).
Cons:
  • Though Allen does include non-workplace examples, his is not a system to apply in all situations. I can’t imagine how blue-collar or domestic workers would use some of the GTD principles.
  • Generates more physical artifacts than I find comfortable. For instance, Allen suggests making file folders to organize even unique documents. Having joyously reduced my own files to just one letter-size box, I’m reluctant to add to their bulk again.
  • Has no apparent built-in protections against tipping into obsession. Taken to its limits, GTD could easily absorb all that time one used to spend in leisure or paying work.

FlyLady

Contender #2: FlyLady

Who:
Marla Cilley, the “FlyLady” (the moniker comes from her love of fly fishing)
How:
the Website, the online discussions, the publications, the occasional workshops
What:
The FlyLady’s system treats domestic concerns almost exclusively. Practitioners receive daily emails from the FlyLady reminding them to undertake various household chores in small (5- or 15-minute) chunks of time. The emails include testimonials from grateful participants, and homespun pep talks from the FlyLady.
Ritual Object:
The Shiny Sink, maintained nightly by faithful practitioners, though the Timer, the Calendar, and the Control Journal assume almost as much importance
Pros:
  • Very easy to implement and follow. Much of the system establishes routines. One can begin them at any time.
  • Corny as they are, the FlyLady’s pep talks do address self-defeating behaviors such as perfectionism and procrastinating.
  • Many of the FlyLady principles can apply to other than domestic work.
Cons:
  • The very feminine and very folksy tone of FlyLady messaging is likely to irritate most men and not a few women
  • Nearly all FlyLady emails will contain exhortations to buy one or more of the housecleaning tools for sale through the FlyLady Website
  • Since it is a system used by one of the most despised, “uncool” sectors of the population (middle-aged, middle-class, nonurban women), you probably won’t garner job interview points for mentioning it.

The Winner

The FlyLady.

Yes, really. Why? Because her system is simpler, doesn’t leave a lot of stuff behind (among her frequent themes is reducing clutter), and really addresses why we don’t Get Things Done: it’s because 1) we think we have to do them perfectly; and 2) we think they will take more time to accomplish than they really will. Though Allen does have the rule about working immediately on any task which will take fewer than two minutes, FlyLady combats procrastination by not even requiring one to assess which tasks those are.

As other systems are discovering, one’s best tool for productivity is a timer. Set the timer for an easy-to-accommodate sliver of your day, and work on one task, whether it’s decluttering your sock drawer, making cold calls, or even writing blog posts. The timer rings; you stop–and there’s one less thing to do.

How to demoralize your front-end developers

Posted on: 4 Comments

Stop failing at this apparently necessary chore; I’m here to help.  I can verify that all the following techniques have worked on for me.

How to Demoralize Your Front-end Developers

  1. Constantly change requirements. It’s, what, the day before the scheduled launch?  And the product doesn’t include that absolutely requisite feature you didn’t think to require until now?  Well, shoot, just demand it!  And make drastic changes to the visual and interaction design as well–where’s the glory in completion?
  2. Constantly change the visual design. You took that one-day course in CSS and remember only that it was a way you could change all of a site’s visual elements from one file.  Okay, then, let’s start by making all the blue things red, and all the red things green–but only on Tuesday–wait, change them back again, make the old red things red again–and oh, all the gray things white and the white things gray, and the grayish-white things brown, on alternate weekdays.  And all the wide things “smaller” and the narrow things “a little bigger” and the tall things “a smidge shorter” and… just marvel  how enthusiastic your front-end dev grows.
  3. Give them a lousy setup. Cram your developers into a spot at an unergonomic table in between the gal who has the obnoxious sound themes enabled on her workstation and the guy who spends his entire work day shouting into a speaker phone. Don’t let your devs use their preferred operating systems or software–point out that you’ve generously provided work computers exactly like your own, with that reliable ten-year-old OS and the proprietary groupware that cost you a bundle.
  4. Decide midway that you need pixel-perfection in IE 6 after all. So you visited your hermit, anti-consumerist brother-in-law living in a shanty with a hand-me-down Gateway 2000 accessing the Web over intermittent dial-up, and you looked like a putz because your beta site didn’t render perfectly in Internet Explorer 6.  Well, crack the whip so he can enjoy those rounded corners, PNGs with alpha transparency, and painstakingly mitered grid layouts.
  5. Critique the browser rendering against one in a different medium. Different media, you say?  Hardware?  Pshaw!  Do as I’ve actually witnessed:  hold a paper print-out of the intended design up to the monitor, and compare the rendered page unfavorably to the PDF print-out.  Remark on the differences in proportion and color.  Watch your devs writhe in either agony or amusement at your request to make the two formats identical.
  6. Assign visual design tasks to your developers. Get rid of that pesky professional, and go with a leaner team equipped with mere adequacy in Web design.  Start with vague instructions to your front-end devs (“This area of the page needs to really say ‘breathy,’ but not ‘vaporous’”), and end with your looming over them, jabbing at the display of a competitor’s site on a monitor, and shouting, “See? See?!  Like this–only different!”
  7. Pit your developers against each other. Break up that predictable day with a bout of office politics as bloody as any combat in the Colosseum!  Let one developer bully another, favor the least productive developer over the others, and disclose important project details only to the dev most likely to hoard the information.  When one dev leaves at 6pm to tend to the rest of his life, assign all his duties to the other one still in the office. Whatever you do, don’t let these people end up liking each other.
  8. Constantly interrupt with phone calls, e-mails, IMs, or in-person meetings. You know, if you give your developers the chance to concentrate, to get into the flow of working, there’s no end of disaster which could happen:  they might  finish the tasks you’ve assigned to them, or write bug-free scripts, or finish a work day with a sense of accomplishment.  Then you’d all miss an important feature of the Development Drama:  the climactic battle in which each side slays the other in murderous frenzy.
  9. Ridicule their professional opinions. Don’t listen to the nay-sayers when you describe that pop-up with autoplay Flash, animated GIFs, and blinking text you’re confident will add loads of appeal to the application.  Show them your teenaged son’s MySpace page and pointedly ask why they can’t make something like that if he can.
  10. Don’t use a bug tracking system. Sheesh, you already send all those e-mails.  Why repeat yourself in some persnickety little data entry form with those dropdown things which force you to prioritize the issue?  Just repeat: everything’s critical and of highest priority.  See, easy to remember.

Hmmm, something’s missing.  What have I left out?

A visit with HTML 5

Now that HTML 5 has been declared victorious over XHTML 2, the last six to eight weeks have yielded a bouquet of tutorials, introductions, cheatsheets, and blog postings about it. I guess we’re so excited about anything new in markup we’ll even cheer a draft proposal. I can’t excuse myself from the mob, having joined it on a recent project for a future-minded client who encouraged me to take up the fashion for <!DOCTYPE html>.

On first and even second glances, the HTML 5 element list seems conservative, not much of a change. There are the intriguing new tags like <canvas>, but with limited cross-browser support. <menu>returns from, what, HTML 3.2?, but this time dressed up as a way to group form inputs (easy to confuse with how we’ve been using <fieldset>). Other elements, such as <header>, <footer>, and <section>, are good substitutions for the over-worked <div>, which lingers in HTML 5 for your block element needs. <article> is interesting–it’s supposed to enclose “standalone” content. <nav> is easy to type and remember.

However, some of these tags seem to presume usage in rather old-fashioned situations. For instance, which of the navigational blocks on your application screen will you exalt with <nav>? No fair using it more than once–it’s supposed to designate your primary navigation. And which of your content blocks are <section>s and which are <aside>s, especially if the user can rearrange them?

Where HTML 5 seems more ambitious, seems to pose more of a learning curve, is on attributes and APIs. Form elements seems especially enriched in this specification. I didn’t use any of these on this project, but I’m eager to try them when the browser support is sufficient. Many of the proposals will remove tedious DHTML chores, if ever supported; for instance, this block will replace all those unordered lists distorted by CSS and JavaScript into popup menus:

<menu type="popup">
    <command  label="Check messages" icon="messages.gif"/>
    <command  label="Logout" icon="logout.gif"/>
</menu>

By now I expect you’re asking, “But what about IE?”

Yeah, what about that? Hmmm.

I was blessed to have a client who’d discarded concern for IE 6. Problem solved, you think?

Not at all. IE 7 ignored even the most basic HTML 5 tags–even <section> proved uncharismatic. To the rescue, JavaScript; more specifically, the “HTML5 Shiv” (love the name, which captures the mood of destructive exasperation IE inspires) script popularized by John Resig and Remy Sharp.

Overall, it was an enjoyable stroll through HTML 5′s more accessible areas. Maybe XHTML 2 would’ve been a more thrilling excursion, but I’m content. Shiv or not, it looks to be sunny ahead.

6 Things to Know About Developers

Posted on: 2 Comments

No surprises here, or none for techs, anyway. A lot of the following sounds like banal repetition of common sense. But the thing about common sense is that it isn’t…common. And so, even after twenty years of Dilbert cartoons, I feel compelled to list a few points I want my non-tech colleagues to remember.

6 Things to Know About Developers

  1. We hate lengthy, freeform meetings.
    I’m really disappointed I have to write this it at all. I thought all the books, blog posts, satire, and research results had convinced everyone with at least functional literacy of the total buzzkill, the utter torment, the massacre of productivity, that the typical business meeting means for programmers and developers. And format doesn’t matter–don’t think that conference call is any less loathed.

    Solution: schedule only short meetings (<1 hour) with strict agendas, if you must schedule any at all.

  2. We really don’t need to see all of the marketing presentation.
    I don’t question that the marketing people worked really, really hard on what is just about the world’s best preso, the one that’s gonna reap all the financing and press attention. But I’d prefer to take your word for it; I’m about as enthusiastic and informed an audience for this material as the marketing people are for, let’s say, a prolonged discussion of JavaScript debugging tools.
  3. We require specifics.
    We can tell you’re excited about your idea, and it sounds to us like a good idea, and sure, let’s build it. But we can’t act on the sparse outline of it that you’ve provided: “It’s like MySpace–only for dogs!!” says nothing to us about where you want to start.
  4. We have specialties.
    Yes, there certainly are many people who can design an application, copywrite its content, write all the HTML/CSS/JavaScript for the interface, and develop all the scripting that communicates to an optimized, secure database. The people who can do all these things well are scarce. In fact, they’re usually not for hire since they’re too busy speaking at conferences or writing books.

    Scrupulous developers often qualify their self-descriptions with terms like “software,” “application,” “Java,” “Flash,” “user interface,” or “front-end” prefixed to the noun “developer.” You’ll save a lot of bother noting this qualifier, since it’ll keep you from asking software devs about JavaScript and front-end devs about Java.

  5. Not all of us are white, 20-something nerdboys.
    I don’t know why this stereotype persists. Many, perhaps even most, developers of my acquaintance fail to embody at least one of the qualities listed above. Maybe I just know a select coterie of middle-aged, female, humanities-educated, and/or non-Caucasian techs. Anyway, few of us seem anticipated by the majority of tech firms, who try to lure us into their employ with promises of foosball and all-you-can-drink Red Bull.

    Snore.

  6. We need fresh air and sunshine too.
    So many tech workplaces seem fashioned by prison architects: no windows, horrible, glaring fluorescent overhead lighting that is about a million times brighter than necessary, and even gray cubicle walls subdividing the room into a bunch of sensory deprivation chambers.


    How come you want to work from home?
    Photo by cackhanded

    Ask yourself if you could spend 8+ hours working where your devs do. Even better, take a high school algebra or trigonometry textbook, and try to work out the solutions to every problem in the textbook while seated in one of these spaces. If you can’t, it might not be entirely due to a failure in your math abilities.


What do you want everyone to know about developers?

Elements of a productive work day

Having spent the past few weeks playing Whac-a-mole on a project, and waking this day with some leftover sanity and a lot of work done, I think I’ve arrived at a framework.

Elements of a productive work day

  1. Turning off clients for IM, IRC, and e-mail. The benefits of working without distractions have been well-publicized.  I’ve long detested trying to work with IM and IRC anyway; this time I decided to enjoy hours of even deeper productivity by turning off e-mail as well except for an hour at 9am, 12pm, and 5:30pm.  Regrettably, many customers/project leads haven’t modernized to this way of working, so expect indignation when you try this.
  2. Queueing up the right tunes in Last.fm.  I prefer instrumental music when I work, since I won’t drift away into parsing lyrics.  Normally, I’m indifferent to classical music, but I like working to it, since it reminds me of being in a classy bookstore, instead of being huddled at a desk sweating over support for :hover in IE7. Strangely, both middlebrow “light” classical and less favored experimental works (try typing in “Delibes” and “Xenakis” into  Last.fm‘s artist search) seemed acceptable background music.
  3. Configuring LeechBlock. I’ve got Firefox hot-rodded with loads of add-ons, and one of the newest to me, and most valuable, is LeechBlock.
    Get back to work

    Get back to work

    It works by blocking your browsing to certain sites after a given time period.  I set mine to a reasonable 25 minutes spent on my favorite time-wasting Web properties.  It’ll probably become a boast or social marker to confess which sites you find so compelling you require LeechBlock to take them away from you.  For the record, mine are Netvibes, Facebook, Twitter, Wikipedia, and the New York Times.

  4. Water. Seems so obvious, but a lot of people forget to drink water.  Granted, I’m lucky to have good tap water piped straight from the California mountains, so it’s not hard to choke down.  It also helps to have a glass you like.  Mine is an imperial pint that I refill four times, and which gets re-purposed for a good IPA at the end of the workday.

Think I skipped over something?  Add your suggestions in the comments.

I Still (Heart) RichInStyle

I’ve been perusing a lot of job postings, which is, I know, inefficient, if my goal is to find a job, but it’s interesting to see what employers are putting in their requirements.

More and more frequently I’m seeing a call for skill with frameworks–not just for Ruby on Rails or Prototype, but also for CSS. There are by now a few of these to choose from: the skins for the Yahoo! User Interface Library, Blueprint, Nicole Sullivan’s “Object Oriented CSS” (excellent work, but oh! for a less trendy name), and so on. All of them: good to use. But it depresses me that employers don’t want to hire someone who can develop CSS by hand.

Hand tailoring
Photo by Bradley Allen

I’ve barely used any of the frameworks; I haven’t needed to. I guess I’m like a Savile Row tailor in preferring to make my own measurements and to follow my own procedures. But I can’t really say “my own,” since I was the benefactor of other CSS developers, those who worked in the earliest days of the technique—Web 0.9?—and discovered its patterns.

One of these pioneers was Matthew Brealey, who contributed to the W3C CSS discussion list. In between posts he maintained RichInStyle, a one-man compendium of frontend development tips and tutorials; I had it bookmarked, if not always open in a separate browser window. Brealey somehow had the time to investigate the browser support for every proposal in the CSS 1 specification; generously, or self-aggrandizingly, he posted his findings.

He also devised a way of writing a stylesheet that, with few adjustments, I still use. Brealey’s “Masterclass” show signs of age (remember uppercase element names?), but outlines one of the most logical ways to write CSS I’ve seen yet.

A couple of his most enduring principles are, simply:

  1. Use the cascade. Start with the most general rules at the top (HTML elements), and only then follow with those for classes and IDs. Put the toughest cases–the most obstreperous browser hacks–at the bottom of the CSS text, processed last.This rule seems obvious, but I can’t believe how many stylesheets I see beginning with class or ID rules.
  2. Ease human usage of the stylesheet with alphabetization. Brealey wrote before we had Firebug, or even View Formatted Source. Yes, we were flying with instruments in those days; you never knew where that pesky text color was coming from, nor why your document’s h3s were in italics. But a stylesheet organized as Brealey proposed gave up its secrets more readily: the rule for h3, for instance, would be reliably beneath that for a and above that for p, and its font-style would be beneath border and above margin. Maybe the importance of this approach has diminished as far as debugging goes, but it still shows thoughtfulness, the developer’s hand.

Developed by hand, old-fashioned; an artifact, not a commodity. Sure, I’m biased in favor of hand-tailored CSS, but then I’ve seen nothing but benefits from its skilled usage. Note “skilled.” It’s thanks to Matthew Brealey and others like him that I know what that means.