andymatuschak.org: Square Signals

This article was published on Monday, June 19th, 2006 at 1:10 am.

Pixen Postmortem

Pixen began in a dorm room. This was ideal for a couple of reasons. First, it was a relaxed atmosphere with lots of distractions. It seems counter-intuitive, but sometimes in a big project, you need distractions to do a good job. Secondly, it meant that we were able to work together in person.

I don’t think the value of working face-to-face with your teammates can be understated. I mean, yes, I’m a big open-source fanatic, and tons of these projects have gone far through years of decentralized work. So I don’t think it’s impossible to accomplish something while physically alone, but I do think it’s a lot more difficult.

Being together meant we could motivate each other, help each other out more readily, and jump directly on another’s computer when something was giving trouble. We could high-five each other when things went well or make Wookie noises with each other when things went badly. And we could take a break to grab pizza or play play Smash Brothers.

I really think it’s an ideal working environment.

Sleep deprivation and code-a-thons

But over a year or two, Joe went to college and Ian’s family moved away. We couldn’t work together in person anymore, so work on the app dropped off almost completely. We got almost nothing done for a huge period of time—it was just hard to get motivated.

A couple summers ago, Joe and Ian came back to Saint Louis to visit, and we ended up doing something completely insane. We call it a code-a-thon. I’m going to preface my description of it here by saying that it is both a really good and a really bad idea.

So on the first night, we outlined a basic list of things we wanted to get done. Then we grabbed dinner and immediately started working. At around 2 or 3, we went to bed. In the morning, we rolled over, grabbed our laptops, and kept working. We basically repeated this schedule non-stop for a week. Every once in a while we’d stop for a quick game or something. And I guess we’d eat every once in a while.

Three heavily-motivated programmers working sixteen hours a day can accomplish quite a lot, even if it’s only a week. Every time we did this, we’d have a few hundred SVN commits and about 30,000 new lines of code. Gobs of new features would be added, and bugs would be fixed left and right. On top of the productivity, these weeks are also ridiculously fun, even if I’d be totally exhausted for the week afterwards.

But it’s not all good. See, as absurd as it sounds, the average programmer writes only 6,200 lines of code a year. While this is a totally pathetic number and only really applies to unmotivated corporate programmers who have been cheerfully de-souled, the three of us writing 10,000 lines each in a week is indicative of something.

That something is really crappy code. And even when the code wasn’t awful, we were adding way too much way too quickly. So two of us couldn’t keep up with what the other was writing, which would lead to duplication, confusion, and tangles.

This leads me to to the first big principle I learned from this whole thing.

Don’t write bad code!

Don’t write bad code. I do it all the time. You do it. Even those guys who write books on how to write good code do it sometimes. Generally, we do it to save time or because we’re under deadlines. Or maybe just because we’re lazy and don’t feel like fixing something or doing it properly.

It’s all about balancing short-term versus long-term consequences, though. Yes, in the short term, you’ll get more done, but in the long term the code will be totally unmaintainable. You’ll have to rewrite vast tracts of code. It’ll get progressively harder to add new things. And a few years down the line, you’ll feel like you want to just rewrite the whole thing.

It sucks, and it ruins projects. Don’t let it happen to you. It happened to us.

The Golden Rule

The second big principle was really the huge problem with Pixen. Why I think it’s not as good as it could be. The golden rule of software!

Quality over quantity.

I first realized this when reading Panic’s excellent The True Story of Audion:

iTunes was, of course, and I’ll say this now, brilliant. It single-handedly taught us an entirely new philosophy on software design. Do you really need that Preference that 1% of your users will use? Can you find a better way to design that interface than having each function in a separate window? Can you clean this up, even if it means it’s a little less flexible? iTunes blazed the trail for clean, efficient software design for a broad audience, a design philosophy we practice actively today. It was a way to take a complicated digital music collection, and make it easy. Sure, it was limited, but man was it easy.     

Less is more. Especially when it comes to features and interface. The way to make a really amazing application is to have a few good features that are really polished, really unique, and really awesome. Figure out the ways that make your app stand out. What features do you have that no one else has? Emphasize those, make those awesome, and don’t worry about trying to satisfy everyone.

Every feature you want to publicize or emphasize should be polished, polished, polished! Like to the point where all the paint and varnish has come off, and your friends ask you if you could please put down the rag and come out for dinner.

Try the app yourself over and over again. Make sure any given task is as easy and takes as few clicks as possible. Give it to other people who don’t know anything about computers and see if they can figure out how to do things without any kind of help. If they can’t, then you need to simplify things, because users are dumb.

And if something isn’t good enough, if something fails the usability test, then cut it. Seriously. Your users will forgive you someday. The worst thing you can do is to take feature requests too seriously. We were so excited to get requests from people that we would grant them, even if they were things that would basically only appeal to one person.

I’m Done

I hope this was at least somewhat useful to you. I’ve talked about all the mistakes we made, but a lot of it worked pretty well. Pixen’s got a lot of flaws, and it’s definitely not all I hoped it would be, but I’m still proud of it.

Now I need a new app to write.

The Conversation {24 comments}

  1. Andy Matuschak 06 September, 07 @ 9:03 am

    Test comment! Ooga booga hoo.

  2. anthony l. harris 25 November, 07 @ 6:45 pm

    hello andy,

    to come to the point, would something so crass, unfeeling and non-creative as hard, cold cash be incentive enough for you to “complete” a leopard version of pixen?

  3. Andy Matuschak 25 November, 07 @ 10:21 pm

    Err… yes, maybe. More on that soon.

  4. anthony l. harris 26 November, 07 @ 9:40 am

    i’m glad to hear the possibility exists. alas, i’m not smart enough, at the moment, to undertake it myself or i would have tried by now. but i am a burgeoning game designer and artist and i have scowered all the resources at my command to find an app that even comes close to what this app delivers for spriters, artists and game designers. suffice it to say there are none. but what i did find all over the net was a despairing outcry for this app to be usable with leopard and if possible even more stable. so, in an effort to help me, as well as all the others who love this app, i will glady give/donate the one thing us almost 40, still single, no children having, no debt carrying people usually have in abundance…money.

    what else is cash good for if not to illicit the creation of joy bringing…stuff.

    for all of us who love your program i hope you consider it.

  5. Scotty at stooryduster 20 August, 08 @ 12:56 pm

    I bookmarked pixen a year or two ago when I was on a really old Mac that couldn’t run it. Now I’m on a new Mac and it looks like I’ve leapfrogged the OS that I could have played with it on. Tsk! bad grammar. (who would have thought they’d see that comment on the web). Anyway this is one thing I think the Mac community is lacking and pixen looked like it fitted the bill.

    I even buttonholed some UK Apple execs and asked them if Apple was planning a simple animation package for the man on the street. I was told ‘watch this space’. But I think he was winding me up. Build a great version of Pixen and get Apple to buy it. It’s an app families with kids would love.

  6. cr 28 August, 08 @ 10:19 pm

    But pixen is almost absolutely perfect! The interface decisions you made, also with regard to where you placed all the interface elements… I usually hate drawers, but layers in a drawer is brilliant, since layers are something that only relate to one specific image, it makes sense to have it there.

    I had no idea it was a dead product. It’s unbelievable to me.
    But I’ve found that it runs on lepard without a hitch. Has someone picked up on developing it, or has apple just improved compatibility?

  7. mutantvisions 19 September, 08 @ 7:44 pm

    Hi. Is Pixen v3.1b compatible with Leopard?

    Also, this blog post: http://blog.zacharcher.com/2008/07/03/fixin-for-a-pixen/
    mentions that Pixen v4 is in the works. Is it true? I really hope so as the app looks great.

  8. Andy Matuschak 19 September, 08 @ 8:46 pm

    Yep, Pixen 3.1b is compatible with Leopard.

    Pixen 4 has a little bit of code written for it, but it’s a long way off, I’m afraid. I’m not working on it, but one of the other guys is in his spare time.

  9. anthony l. harris 03 October, 08 @ 10:21 am

    hello andy,

    the possiblity of a pixen 4 is great news. is this ‘other’ guy, someone that was part of the original program or someone new?

    would donating to the paypal link on your pixen site help in any way to speed the spare time development?

    hope you are doing well with your studies and thanks for the update.

  10. Andy Matuschak 03 October, 08 @ 12:45 pm

    Nope, he’s Joe from the original team.

    You shouldn’t donate; that just makes us feel really guilty. We should take that link down.

    Thanks!

  11. angelday_true 05 October, 08 @ 10:27 pm

    I’m sad to hear this project has started to disappear. Stating the obvious, but I think the public would benefit if someone forked the project.

  12. harrio... 16 March, 09 @ 6:15 pm

    any tidbits about pixen v.4?

  13. Dylan 04 April, 09 @ 7:18 pm

    Need a new Pixen!!

  14. harrio... 07 June, 09 @ 10:27 am

    bump, about v4?

  15. Andy Matuschak 02 July, 09 @ 11:04 pm

    No news on v4, sorry. No work’s really been done on it, and I don’t see it happening.

  16. avv3lenato 28 August, 09 @ 1:31 am

    Pixen do not work at all on Snow Leopard… Please HELP!

  17. Kasper 01 September, 09 @ 5:41 am

    Oh man, I really, really loved Pixen but now it doesn’t work anymore on Snow Leopard!

  18. avv3lenato 01 September, 09 @ 11:20 pm

    SOLUTION!!!
    Version 3.1b2 is now compatible with Snow Leopard…

    A BIG THX!

    DL Link:

    http://opensword.org/Unstable/Pixen/Pixen%203.1b2.zip

  19. harrio 02 September, 09 @ 5:10 am

    awesome, thank the sprite gods. i’m almost certain they are polytheistic.

  20. Kasper 03 September, 09 @ 3:44 am

    I’ve got only one thing to say: Woohoo!

  21. avv3lenato 04 September, 09 @ 12:28 am

    The last update make Pixen Snow Leopard compatible but remove the ability to move/copy/drag the cel from the upper film strip.
    Now it is impossible to do even the simplest operation… as drag a cel back and forward.

    I found three more bugs… Just for your information: Hi CPU usage when idle, “Export to image sequence…” not working anymore (ex. BMP export) and “Save as Gif” export only one layer of a layered animation sequence (it’s an old bug; you have to manually merge all layers and then export)

    Hope this will help you guys ;-)

  22. darkfall gold 19 September, 09 @ 5:14 pm

    t can also answer really mundane questions such as what is the time in Sydney.

  23. boco 05 May, 10 @ 2:54 pm

    Pixen bug report:
    Why is it that when I merge two layers Pixen thinks “Oh, I should make all the colors look like crap!”?

    To reproduce: Start a new image, make a new layer, draw something bright and vibrant, then merge it down into the original layer. If you’re too lazy to draw, try cutting and pasting for the same result.

    Why is it changing the colors at all? I’m changing the layers, not the palette. Blending isn’t the problem since the base layer is entirely blank. Shouldn’t _I_ have control over whether the colors change?

  24. Wiley 15 June, 10 @ 10:44 am

    I’d happily pay for a new version of pixen that works.

Leave a Comment

Currently you have JavaScript disabled. In order to post comments, please make sure JavaScript and Cookies are enabled, and reload the page.

You can follow any responses to this entry via its RSS comments feed.

If you're looking for something specific then give the search form below a try:

RSS Wordpress Grady (theme) Return to the Top ↑