July 2002

« June 2002 | Main Index | Archives | August 2002 »
Link found on diveintomark, Margaret Berry's Don't Be Rude: Part 1, Kindness.

On airplanes, the people with books or headphones are using them to avoid interaction. Please do not attempt to draw these people into conversation by using their social shields as conversational bait for your opening line. ‘Hey, great book!’ or ‘What are you listening to?’ are utterances properly met with tight-lipped smiles.

Too bloody right.

XML-RPC e-mail. Would the developers of the world have any interest in using a XML-RPC based API to send and receive e-mails? XML-RPC email would be nifty, but SOAP email would rock. Using Glue and James this would take a weekend to build. 'course IMHO a bigger problem is that there are no clients for it [rebelutionary]

Whenever I see something like this, I apply the "problem" test. What problem does this solve?

We already have three widely implemented protocols for dealing with mail, one for mail-transfer (SMTP), one for remote mailbox access (POP3), and one for distributed mailboxes (IMAP). The protocols are ubiquitous. POP3 is so simple you can write a basic POP client in under an hour (I did that once to check my mail from work). If you want security, you can tunnel them over SSL (And most clients support that, too)

While none of the protocols are perfect, there is nothing inherently better about XML-RPC as a platform that would improve them in ways that enhancing the existing protocols in a backwards-compatible manner wouldn't do better. At the same time, XML-RPC would complicate the wire protocol (the ability to do a POP3 or SMTP request by typing in a telnet session is a god-send sometimes), while adding the additional complexity of XML-RPC's inherent statelessness. Aside from buzzword-compliance, what problem would be solved through the use of XML-RPC?

For any Java nerds out there, I posted a list of five books a Java programmer should read to my nerd blog.

Two pet peeves.

  1. "4am in the morning". As opposed to what, 4am in the afternoon? I'm quite happy with "PIN number", "ATM Machine" grates slightly, but for some reason, "AM in the morning" is the equivalent of nails on a blackboard. Amy committed this one regularly, so it's probably good that things never worked out for us - she'd have slowly sent me mad, too.
  2. TV advertisements that have modem noises in them. It's turned into the signifier of "Internet" in your advert to have the sound of a modem handshake in the background. My modem is right next to the TV, so I keep thinking the damn thing is redialling when it isn't.

Five books I think you should read if you hack Java:

  • Design Patterns, Gamma, Helm, Johnson, Vlissides. (the Gang of Four).

    There are four stages of pattern-awareness. Ignorance (What is a pattern?), Denial (Oh, patterns are stupid), Over-enthusiasm (Let's use Singleton here! And Visitor here!), and finally enlightenment (That looks like an Adapter... Hmm...) Reach stage four.

  • Refactoring, Fowler

    Keep your code beautiful. An amazingly clear book, very easy to read, with good examples and sage advice.

  • The Pragmatic Programmer Hunt and Thomas.

    An entertaining book. Where I learned about boiled frogs. Some of the advice in this book may seem obvious to you. So why aren't you doing it? Why? Sometimes it takes someone else reminding you what you've always believed to convince you that you've been right all along.

  • Object Oriented Design Heuristics Riel.

    A harder read, far more dry than the last three. But it's the best advice I've read about OOAD yet. Good advice on how to compose your objects, divide responsibilities, and structure inheritance.

  • Effective Java Joshua Bloch.

    The only Java-specific book on the list. If you program Java, you must read this book. Now.

Brett Morgan asks what happened to JavaSpaces? My two cents is that Javaspaces is a really neat solution in search of a problem. It stores data, but it's not a database. It sends messages but it's not a message-queue. It's networked shared memory, but there's always some more convenient, more familiar solution. One day, I'll find a problem that JavaSpaces is more suited to than anything else, but I'm yet to find it.

Oh, and on top of that, the overhead of working through Jini is decidedly non-trivial.

Semantics, in my book, does cover abstraction. There is a trick I use while designing. If I cannot come up with a clear, simple name for a class or method, I probably have a bad design. Confusing names are a sign of a confusing design.Interesting thoughts from Bob. [Hard Werken], quoted in [rebelutionary]

One very useful XP practice (and one of the more difficult) is the adoption of a system metaphor. You model the system you are building on something that is similar in function that already exists. The metaphor helps a great deal with naming things, because you can relate the thing you are building back to the metaphor.

One project we worked on involved receiving data from a number of clients wrapped in some crypto (we had to write the client, too), passing the data on to a third party, and billing the sender. Early in the design stage, we caught on to the idea of having a courier service as our metaphor. Immediately, we had a naming scheme - the crypto became the envelope, the checksum was its seal, the envelope was "weighed" to determine its cost, and then passed to the dispatcher.

Also, the metaphor helped a lot with scoping the project. Once you understand a project in terms of something real and simple to understand (like a courier), you could realise that some features that were on the list would never be used (because nobody would ask their courier to do that), or that some things that weren't on the list were vital.

Of course, coming up with the metaphor in the first place can be really, really tough.

A long-lost verse of Revelations, only recently rediscovered:

And thou shalt know the apocalypse has come, for it shall be writ in words of fire,

Broadcast message from God (pts/1)

The universe is going DOWN to maintenance mode in 5 minutes !!

I want to disembowell my apartment building's Body Corporate with a rusty knife.

They're having the halls and staircase repainted. I don't mind this, I don't even begrudge them the paint-fumes, but why the hell are they only bringing the painters in on the weekend? Both days of this weekend, I've been woken up before 9am by guys on a ladder outside my front door talking too loudly. Waking up before 9am on a weekend is not my preferred mode of existence.

Bastards.

Daily Zen

One narrow path surrounded by a dense forest;
On all sides, mountains lie in darkness.
The autumn leaves have already fallen.
No rain, but still the rocks are dark with moss.
Returning to my hermitage along a way known to few,
Carrying a basket of fresh mushrooms
And a jar of pure water from the temple well.

Ishkur's Guide to Electronic Music is actually pretty nifty.

I saw a really good play tonight. It's amazing, but you wouldn't think something with three actors, two and a half hours long, about Heisenberg and Bohr meeting during World War Two would be quite as gripping as it was.

On the way back from the bank this afternoon, I popped into the bookshop and looked at Bitter Java by Bruce Tate. While the book contains a lot of good advice, there's really nothing more satisfying than looking through a book of Antipatterns and thinking "I already don't do that".

Here's how it works. Brett Morgan asks about a Mozilla-based blogging client, and I point to Mozblog from my nerd blog. A couple of hours later, I happen to notice a link scroll by in my apache logs at www.pastiche.org, pointing to my inset-header CSS trick, which I'm pretty sure I only ever posted to my livejournal, not my nerd blog.

I follow the referrer back, and find that inset header being used (with credit, thankyou!) by Mike Lee, who also linked back to my nerd blog. (in a post dated about an hour before I posted about Mozblog)

Mike runs the Mozblog project. As Eddie the Shipboard Computer would say, "Improbability sum now complete."

Zaphod: Ford, this is Trillian. Hi. Trillian, this is my semi-cousin Ford who shares three of the same mothers as me. Hi. Trillian, is this sort of thing going to happen every time we use the Infinite Improbability Drive?
Trillian: Very Probably
Zaphod: Zaphod Beeblebrox, this is a very large drink. Hi.

Here's how it works. Brett Morgan asks about a Mozilla-based blogging client, and I point to Mozblog. A couple of hours later, I happen to notice a link scroll by in my apache logs at www.pastiche.org, pointing to my inset-header CSS trick, which I'm pretty sure I only ever posted to my livejournal, not this blog.

I follow the referrer back, and find that inset header being used (with credit, thankyou!) by Mike Lee, who also linked back to this blog. (in a post dated about an hour before my post about Mozblog. Mike is, guessing from his link to UWS, in Sydney)

Mike runs the Mozblog project. As Eddie the Shipboard Computer would say, "Improbability sum now complete."

Zaphod: Ford, this is Trillian. Hi. Trillian, this is my semi-cousin Ford who shares three of the same mothers as me. Hi. Trillian, is this sort of thing going to happen every time we use the Infinite Improbability Drive?
Trillian: Very Probably
Zaphod: Zaphod Beeblebrox, this is a very large drink. Hi.

I'm watching a documentary about vicious attack squirrels. I'm glad I didn't know quite how much danger I was in at the time. :)

Update: Actually, it was about one particular squirrel who had a grudge against humanity and was going around town attacking people. The next story in the doco was about a man who was attacked by a parakeet in Walmart.

Thought of the day. Make a blog ui based on Mozilla's mail/news client. [Brett Morgan's Insanity Weblog]

Like MozBlog?

  1. Write the test first
  2. Never write a test that succeeds the first time
  3. Start with the null case, or something that doesn't work
  4. Don't be afraid of doing something trivial to make the test work
  5. Loose coupling and testability go hand in hand
  6. Use mock objects

Read the rest of this entry…

From EFnet #java, discussing why the drop-down picker-thingy is called JComboBox

[Carlton] I've always believed a combo-box is a drop-down picker that you can also type into.
[SamBecket] i always thought of a combo box as a box containing Combo brand snacks
[Carlton] Sam: But if you pay a few bucks extra, you get a bucket of fried chicken.
[SamBecket] Carlton: That would be a bucket o' chicken, a very different UI component
* Carlton nods. But according to the UI guidelines, you should avoid fried chicken in anything but thick-clients.
[Carlton] For a thin client, you'd use Lean Cuisine[tm] instead.

That vindaloo last night was a little stronger than usual.

Conversation at work, that will only make sense if you've used Websphere Application Developer or Eclipse:

[David P] Every so often, I just get a GPF and it vanishes.
[Neville] (referring to a big piece of paper from a previous project that we used to tick every time VisualAge crashed) We need another one of those posters with the check-marks.
[David R] Or a dartboard with a picture of WSAD...
[Charles] Yeah, that'd be a good idea. Except every time you threw a dart at it, it'd land in the wrong perspective.

Back to Brett.

I feel the sudden need for a new xml file format that we can put our web pages which details which books are in our libraries, various meta-data, including a rating. Would make getting an instant understanding of the strengths and weeknesses of another geek fairly instantaneous.

(head in clouds mode on) That would be neat. It'd have to be very simple, though. Title, Author, Publisher, ISBN. You could then have a "book aggregator" that monitors blogs of nerds with similar tastes, and notifies you when one of them has read a new book.

[Later...] Being serious for a moment (HAH!), I suspect a problem with trying to write a book just about XUL is the role XUL appears to play in Mozilla. XUL appears to be an xml'ified and application specific .xresources file, with the addition of javascript to make things fun.

I've never done X programming - to me an xresources file was just where I chose what colour things should be, so I can't comment on its similarity with XUL. XUL is to Mozilla as Swing is to Java - it's the whole front-end.

But yes, that's the problem with the book. It shows you how to lay out a GUI, how to style it and make it do things with Javascript, how to write a skin for Mozilla, even how to bind your XUL to an RDF document using XBL. But it's very light on how to use XUL to make Mozilla do interesting things. Which in one way is fair enough - you buy a Swing book to explain Swing, not to tell you how java.io works. But on the other hand, it would be different if there was no book on how java.io works that you could get instead.

According to google, my nerd weblog is the 16th most influential page about naked desktop people

Referrer logs are wonderful things. According to google, I am currently the 16th most influential page about "naked desktop people". 16 is a little disappointing though. But you can help! Just add the following code to your page:

Charles Miller is a leading authority on <a href="http://radio.weblogs.com/0100190/2002/07/22.html#a175">naked desktop people</a>

Oh, and Brett, the XUL book is pretty good as an introduction to XUL, but it's a bit confusing here and there, and could do with a little more depth. It's one of those books where after you've done the examples, you really feel you can... er... do the examples.

I wrote about my "Java Peeves", Brett Morgan linked to some more issues, so I thought I'd add a few more logs to the fire and point to Jamie Zawinski's "Java Sucks" page, which starts off like this:

I think Java is the best language going today, which is to say, it's the marginally acceptable one among the set of complete bagbiting loser languages that we have to work with out here in the real world. Java is far, far more pleasant to work with than C or C++ or Perl or Tcl/Tk or even Emacs-Lisp. When I first started using Java, it felt like an old friend: like finally I was back using a real object system, before the blights of C (the PDP-11 assembler that thinks it's a language) and C++ (the PDP-11 assembler that thinks it's an object system) took over the world.

...and then proceeds to put the boot in. (Note, the article was written in 1997, so some things like the speed of the virtual machine, and the lack of ability to iterate over Strings and set weak references have been fixed since)

This is why I shouldn't be allowed anywhere near Dymocks any more.

Scarily funny, and well-written to boot: True Porn Clerk Stories

From IRC

[Carlton] CVS is a drug. You start off just trying it in doses, then suddenly you find your entire life is in CVS.
[Carlton] And it's pushy. It keeps asking you to commit.
[Carlton] "But I'm not ready! Can't I just checkout some other projects? We can still update!"

Coming soon: The "Charles Needs a Life" fund.

In an attempt to push the boundaries of optimistic insanity, I've updated my Amazon wishlist.

Oh, and while I'm on a posting spree, I pre-ordered a copy of Jaguar this morning. I'll let you know if it's any good when it arrives (in the middle of August, apparently).

This documentary is going to make me paranoid. On the other hand, isn't it rather fitting that the most successful mammal after Man is the rat?

The problem with that is that some people have already built mental models that include where the data is on why physical device. I have used "dumbed down" systems where things like this were completly hidden, and it led to a feeling of vertigo as I couldn't find where said program was putting my files. Made me want to reach for find. But this was win3.1, not linux. :) [Brett Morgan's Insanity Weblog, "Dumbing down can be dumb"]

I expect you also know what a hard drive looks like, and even what hard drive platters look like. My mother, on the other hand, went through a long period where I would occasionally be called on to "find" all her documents, because Word wasn't opening the Open dialog in the same directory that it used to.

You have a feeling of vertigo because you don't know where your files are going, and you don't trust the program to be able to find them for you if you need them. But the concept of "where your files are" is already an artificial one. You're used to your files being "somewhere" in a directory tree. Do you also worry about which inodes your files are using up, or pay specific attention to how each file is fragmented on the disk?

The heirarchical filesystem will never go away, because it's a very efficient way to sort files, and it's a very convenient organisational model for programmers. Power-users are also used to the filesystem, and would feel lost if it vanished. What needs to be done is more work to shield the user from the confusing things that the programmer and power-user like.

I'd like to see a world where the heirarchical filesystem is like the Unix shell in OS X. If you know what it does, it's a powerful and useful thing to be able to use directly, but if you don't know what it does, you can safely ignore that it even exists.

BeOS made a good start in this direction by adding rich meta-data, and database-like querying to the fs. You didn't have to organise your mp3s into directory by artist and album like I've done on my Windows machine (although I'm sure people did anyway), because you could tell the filesystem to just grab and sort all the mp3s by artist and album.

It's no coincidence that iTunes and iPhoto hide the filesystem, as does every non-Unix email program in existence. The problem is that because the capability to make a better way of finding files is not built into the underlying OS, it is different from application to application, which makes those apps that hide the filesystem harder to use the moment you want to copy data between them, or open a file in an application it wasn't created in.

I am sitting at work, hitting myself over the head with a plastic dinosaur called 'Fluffy'. Fluffy is our release token. You have to be holding him to integrate your code into source-control.

In a previous project, the release token was a big blue plastic head full of {Australia: lollies, UK: sweets, USA: candy}, but I gained several pounds during that project so it probably wasn't too good an idea.

I wanted to get a rubber chicken instead of a dinosaur, but the only place we could find one was in Gowings, and they were asking $AU25 for it. I still think we should have bought it, just for the fun of expensing "$25: Rubber chicken".

I just upgraded to Ximain GNOME Desktop on my office workstation. Cleverly, it spotted all the SMB shares I had mounted in /mnt, and put them all on my desktop as icons. The icons were stylized drawings of HD platters.

The Mac does it little better - the default HD icon on my OS X TiBook was a very nice drawing of a hard drive, another thing that your average user isn't likely to recognise. I know, I've done tech support. 75% of the people I did end-user support for when I worked at Q-Net thought "hard drive" meant "That big off-white box thingy with all the computer stuff in it. Windows 9x represent drives as plastic things that seem to represent external hard drive cases, something that's not exactly been common for PC users since the early 90's.

I spent a while thinking about this, and the reason we can't come up with a good metaphor for drive arrangement that doesn't assume the user knows what a hard drive is, and what one looks like. I then hit myself on the forehead and realised I was thinking the wrong way around.

All our icons for hard drives suck because... the hard drive is not a concept that the UI should be exposing to the user. Until we abstract the filesystem to the point at which it is invisible to the user, and the user just thinks in terms of organising and sorting their various bits and pieces, filesystem programmers and desktop UI designers haven't done their job properly.

I liked this one:

Do you remember the original Batman movie? I think whenever MacWorld is on Bill Gates becomes the Joker. I picture him sitting at home watching the keynote (on Quicktime of course) saying "Where does he get those wonderful toys?" (WAV)

[rebelutionary]

Where does he get those wonderful toys?".

Do you remember the original Batman movie? I think whenever MacWorld is on Bill Gates becomes the Joker. I picture him sitting at home watching the keynote (on Quicktime of course) saying "Where does he get those wonderful toys?" (WAV)

[rebelutionary]

*laughs* That fits..

dewhitton posted the list of 100 albums you should remove from your collection immediately.. Out of those 100, I own the following.

(note: the list will not display properly in any browser (such as Mozilla) that parses SGML comments correctly. I had to use Netscape 4. Boo.)

Those albums from the list that I own, still listen to, and won't give up, so nyeah.

  • Nirvana - Nevermind
  • Nine Inch Nails - Pretty Hate Machine
  • White Stripes - White Blood Cells
  • Radiohead - I Might be Wrong
  • Hole - Live Through This
  • Pink Floyd - Dark Side of the Moon
  • The Beatles - Sgt. Pepper's Lonely Heart's Club Band
  • Bob Marley & the Wailers - Legend
  • The Prodigy - Music for the Jilted Generation

Albums I own, don't listen to any more, but still want to keep, so nyeah.

  • R.E.M. - Out of Time
  • Violent Femmes - Violent Femmes

Those albums from the list that I own, but wouldn't mind not owning.

  • Chemical Brothers - Dig Your Own Hole
  • Smashing Pumpkins - Mellon Collie and the Infinite Sadness
  • Offspring - Smash
I'm dreading work.

Since I got suckered in to project management, every day I'm being asked to perform a role for which I am totally unsuited, that I feel incompetent in, and that I know I will end up doing badly.

I hate doing things badly. I hate incompetence. I don't tolerate it in others, and when I find it in myself, it affects me on a personal level that I can't just leave in the office when it's time to go home.

I normally feel a degree of inadequacy when I work - I always feel "not quite good enough", but usually that's a spur for me to work harder and be more impressive, because it's in a field I know I can improve in every day. Project management requires me to have time management skills, to be able to delegate, to be really interested in paperwork and minutae. These aren't things I'm "not good enough" at, they're things I'm just plain bad at.

There's a possibility of another job, but I'm not sure I should go for it - it seems rather risky.

Damn, things are sucking.

Java Peeves

  • 10:28 PM
I got annoyed today and wrote about a few Java Peeves.

Read the rest of this entry…

ljreviewreview

  • 10:43 AM
My journal would get an incredibly low score in ljreview. Luckily for me, I think the whole system of lj-review is, bluntly, a load of crap. I shall apologise in advance if I offend those people on my friends list who've had journals reviewed - you're on my friends list because I like to read you, after all.

Read the rest of this entry…

I've got my memories updated to the present day, now.

At the prompting of lonita, I went for a walk this lunch-hour and took a lot of pictures of Circular Quay, and its rather famous postcard-adorning landmarks. Most of the pictures of the bridge didn't work because the sun was too bright behind it. Oh well.

Addendum: You may notice how absolutely beautiful the weather was today.

I Will...

  • 2:48 PM

During a discussion on IRC about the merits of helping people, I remembered something I wrote years ago on the subject.

I Will...

  • I will help people who are willing to help themselves.
  • I will help people who respond to advice critically, and demonstrate that they understand what was said, and can extrapolate further from it, and possibly teach me something.
  • I will contribute advice to a forum, since that way I get back far more than I give.
  • I will offer my opinions to anyone who is stupid enough to listen.
  • I will help friends, secure in the knowledge that if I don't have time to help, or it's getting annoying, I can just say so, and a friend will be considerate enough to stop asking.
  • I will help anyone who pays me enough. However, I don't do a similar deal for aggravation and personal abuse.
  • I'll aggravate and personally abuse people for free. :)
I added a BlogChalk to my template. Rather than make a post about it so the search engines will notice (after all, the post will eventually drop off the bottom of the world and I'll be re-indexed), I tried putting the required page text in a div that gets hidden by CSS. I'll see how it works - it's quite possible that Google recognises display: none and refuses to index that as well.

From an otherwise boring letters page on The Register (although I did learn that C# and Db are actually slightly different frequencies, which I never knew before):

Just to let you know, # is also the abbreviation for fracture in medicine ( can't speak for the US though). For example C-Spine # = fracture of the cervical spine ( a broken neck). So the new M$ product C#, accordingly is either paralysed or dead, says Pete W.

I like this turn of phrase. It appeals to the nerd in me.

The meal “Lunch” has unexpectedly departed, because an error of type SevereStomachBug occurred.

To avoid further problems, you should remove other meals and restart the digestive system.

[mpt]

I have just gone through all the posts I made to my journal in 2000 and 2001, and put a few of them into Memories.

The Register tells us Windows 2000 has nine months to live. This is a great pity - Win2k is the only decent OS Microsoft have ever produced, and given the user-hostile directions they're going with XP and Palladium, this situation is unlikely to change. So this means my current copy of Win2K is the last Microsoft OS I will ever purchase. That is, unless Palladium turns into a reality and locks us all firmly in the Microsoft trunk for all time, gasping our last breath in Bill Gates' leaky carbon monoxide.

After I'd posted "Salami, boiled frogs and broken windows.", I remembered there's also another name for this phenomenon that's a trifle less complimentary. It's the Slippery Slope Fallacy, and you learn about it in first-year Philosophy. It's also known as the Fallacy of the Beard, because the fallacy can be seen in the following examples:

If you pull a single hair out of somebody's beard, it's not going to make any difference at all. Therefore, since any individual hair-pulling isn't making a difference, you can keep doing it forever.

Or...

The act of pulling out a single hair could be the difference between having a beard, or not having a beard. Since we can't define the exact point at which the change occurs, we must say that any hair-pulling will destroy the beard.

We mustn't lose sight of the fact that the single slice of salami isn't thick, the slight change in temperature won't in itself kill the frog.

Mike Cannon-Brookes writes an essay on what he calls The Salami Effect, in essence the way small things can add up to be big things if you don't watch out.

In programming, I've seen this concept described in two forms, as the Boiled Frog effect, or as Broken Windows. Often the two are presented together, as they are in Andy Hunt and David Thomas' rather impressive book, The Pragmatic Programmer.

The Boiled Frog analogy comes from the (disputed) theory that if you place a Frog directly in boiling water it will jump out, whereas if you put it in cold water and then slowly raise the temperature, the frog will never notice it's getting too hot until too late. Result, one boiled frog.

The Broken Windows theory comes from an (also disputed) theory of public policy usually used to justify "zero-tolerance" crime policies. The theory is that a single broken window left unfixed in a neighbourhood is an attractant to further vandalism - it gives the impression that nobody cares about the neighbourhood, and thus the area is ripe for bad elements to move in.

What does this mean for programming? Well, it turns out that even though both theories have been discounted in their original forms, they make a lot of sense when coding, especially as part of a large project. Every time you choose to do something in your code that is inelegant, perhaps for the sake of hitting your deadline, the individual effect may be small, and you may be like the boiled frog and not notice how the rot is spreading through the whole codebase.

And likewise, if you leave something bad in your code, a co-worker will see it and say "Well, Charles did it like this, so it must be OK". One broken window becomes many, with the same result.

The solution? To refactor mercilessly. If you see a broken window? Fix it immediately. Keep a careful eye on the temperature of the water, because while it may not seem too hot now, and a few bits of ugly code may help you in the short term, overhauling a rotting code-base is never fun, and usually costs you far more time and effort than you'd have spent getting it right when it was just one cracked window.

While watching the Wimbledon final, I wrote a long-ish essay on why the current state of Instant Messaging is Bad and Wrong.

Read the rest of this entry…

While watching the Wimbledon final, I wrote an essay about "The State of Instant Messaging" which perhaps should be titled "Why IM is Bad and Wrong".
From the phew, that was close department:

Salon's gossip column writes:

Look out, Britney Spears, Sarah Michelle Gellar's got it in for you.

Gellar tells the U.K. Sun that she personally put the old kibosh on talks between Spears and the producers of "Buffy, the Vampire Slayer" about Spears appearing on the show.

"She was floating a lot of ideas," Gellar tells the British tab. "Our producers were saying she was gonna do it and I was saying, 'I don't think so.'" Easy there, killer.

Mike Cannon-Brookes took my list of things I want in a job, and adapted some of it to be his I want my company to be... list, so I thought I'd better clarify some of my self-indulgence.

The list I wrote was purely selfish - which is why I included things like mandating my musical tastes, and deciding the place should be full of young, happening, unattached people. I realise in the sober light of day that the latter is possibly insulting to a lot of poeple, but I was thinking socially, not professionally on that point.

I'm now debating whether I should delete the whole list and replace it with "somewhere staffed entirely by attractive women with a thing for nerds"

I'd also like to add that I really am quite happy with my current job, although if you run a company staffed entirely by attractive women with a thing for nerds, and you need a Java programmer, just let me know. ;)

I want to work...

  • somewhere I can innovate. Where ideas count
  • somewhere I'm doing more than taking stuff out of a database and showing it on a screen, taking stuff from a form and putting it in a database
  • somewhere I'm not wasting my time keeping up with the bleeding edge
  • somewhere 90% of the company isn't older than me and married
  • somewhere my pretty extensive knowledge of Ruby, Perl, Cocoa, Linux, HTML, CSS, Crypto, Jini, Jabber doesn't seem useless
  • somewhere that owning a copy of Stevens Unix Network Programming Volume 1 doesn't make me feel like an weirdo
  • somewhere I can feel that someone has looked at something I've coded and thought "I'm glad that exists"
  • somewhere Open Source isn't just a bunch of free tools to make use of
  • somewhere I can play The Chemical Brothers and not be looked at strangely
  • somewhere I don't constantly feel like I'm in a battle against the client
  • somewhere I can make at least as much money as I'm making now
  • somewhere I can go out with my co-workers on a Friday night
  • somewhere that won't try to make me a manager, do sales or answer the phone
  • somewhere I don't feel like in ten years time I'll be the next generation of COBOL programmer
Mark Pilgrim, 30 Days to a More Accessible Weblog, Day 16: Do not have your links open new windows.

Here, here. It's got to be one of the most annoying things on the web.