Re:Engineer

I write software and ponder stuff. This is where I can be wrong about all of that. Publicly and frequently.

*tap* *tap*

Is this thing on? Almost two years since my last post but I’ve been getting annoyed with how many incomplete posts I have sitting in my Drafts folder. Let’s try this again…

Designing a Team

I was surprised to hear the news that Push Pop Press is joining Facebook.

I misread the acquisition of Sofa two months ago but there’s no misinterpreting this latest move: Facebook is serious about building a world-class design team. As such, I’m not surprised by Facebook’s move but by Push Pop Press’s acceptance. They started out with lofty goals of shaking up the publishing industry and their only product, Our Choice, is definitely impressive. What happened to those goals? It’s a shame that we won’t get to see what their tools and technology could have become. In any case, I am looking forward to seeing the results of Facebook’s new focus.

Related: Matt Drance asks a very good question about Facebook’s recent moves. It will be interesting to see how long they can hold their new design team together.

Persona

I just discovered Persona and it caught my attention. (I guess the news is a couple weeks old but I was on vacation) There are some really interesting ideas in there!

My first thought after watching the video, however, is that it would work best with filtered email. Certainly, the majority of the email that I get daily is automatically generated: updates/receipts about stuff I’ve ordered online, software & website update notifications, mailing list digests, etc. And that’s just the email I want to receive; add in spam and phishing attempts that slip through the server filters and it gets even noisier.

Since it’s only a video and some screen shots right now, I will withhold judgement until I can I actually use it. Unfortunately, it appears that they’ve put development on hold for now so it will be some time before I can try it. (if it materializes at all) Too bad, email is so staid and is in desperate need of fresh ideas.

Appsterdam

I’m really, really intrigued by what Mike Lee is kicking off with Appsterdam. It’s clear from the response that it’s received that a lot of people have been waiting for something like this to happen. Whether it’s enough to establish critical mass or whether it will just be a flash in the pan, remains to be seen. I certainly hope it succeeds.

I don’t feel that I’m in a position to move halfway around the world right now, although it sounds incredibly attractive at times, but I’m definitely keeping an eye on this.

Bad Expectations

GitHub recently released their own Mac GUI client. I had originally started a blog post about it (with the snarky title of “‘You got your DVCS in my Twitter!’ ‘You got your Twitter in my DVCS!’”) but abandoned it unfinished, as I do with so many posts. Just as well, as it turns out, since many of the questions I had about the project were answered in a recent blog post by Kyle Neath.

However, his post raised other issues, one in particular, that I feel compelled to address. But first I want to lay out a few points of reference:

  1. Web apps, almost universally, use a completely custom UI. There are libraries which provide suites of UI components but they exist primarily because “the web” doesn’t provide you with much out of the box. The variability between OSs and browsers mean that even something as simple as a default button has very little consistency. As a result, sites build their UI as a part of their brand; they design every button, every drop down, every shade of color, every bit of text. This creates a feedback loop where the specifications and the tools reinforce and encourage that approach, while that approach demands such flexibility in the specifications and the tools.

  2. OS X does not evolve as fast as the web (or even iOS - there has only been one major release, 10.6, since the iPhone SDK appeared). Its UI isn’t static (just look at screenshots of 10.1) but it does change at a relatively slow pace. The tradeoff, though, is that OS X provides an incredible rich set of built-in UI components. The common use of those components, in turn, produces a high degree of consistency between applications. You’re not required to stick with those controls but, for the most part, you are intended to.

  3. OS X ≠ iOS ≠ Windows ≠ Web. Each platform is different and you should try to approach each one with as few preconceived ideas as possible. Comparisons between platforms/frameworks/languages/whatever are useful after the fact and provide valuable guidance going forward, but learning a new platform by shoehorning it into an existing conceptual framework does a disservice to both yourself and the platform. It is a perfectly natural reaction but there’s no guarantee that a 1:1 mapping between the platform and your existing mental model exists. There is a huge difference between “this doesn’t work the way I expected it to” and “I don’t understand why this works the way it does”.

That brings us to my point: I think Neath brought a bad expectation with him when entering this project. My interpretation of his complaints is that he approached it like a web app, designing an almost completely custom UI, and was then surprised that it was hard work to implement. I’m not saying that a custom UI is bad, I’ll leave that debate to Gruber, but I am saying that you’re wrong if you expect OS X to make it easy for you. That has never been a goal of OS X.

UPDATE: To be clear, I don’t think that Kyle Neath is flat out wrong. Some of his criticisms are spot on (e.g. the lack of dynamic layout support) and represent real holes in the development platform. However, complaints like the lack of a theming engine display a complete misunderstanding of the history and design intention of OS X and that’s what I wanted to point out.

It should also be noted that some his complaints are already being addressed in Lion and iOS 5, presumably to appear in OS X down the road.

Acqhire?

So, facebook acquired Sofa. That is… surprising. When I first saw the news I immediately assumed that Facebook would be absorbing their products which made no sense to me. After reading their blog post, it’s clearer that Facebook wanted the team. In other words, they were “acqhired”.

Still, it doesn’t make that much sense to me. Buying a successful company and moving an entire team from Amsterdam seems like a ton of money & work. Is Sofa that awesome? (certainly possible, I have no first hand experience to say either way) Is local talent that hard to come by? I can’t help but feel that there might be something more going on - that Facebook has some new project cooking for which Sofa is perfect. I also can’t help but feel that I’m talking out of my proverbial posterior and that the Sofa team will simply be folded into the rest of the company.

Whatever the reason, whatever happens, I wish them the very best. The Sofa team is clearly talented and they have done some fantastic work. I just hope that Versions and Kaleidoscope find a good home as they are both great products.

Update: MG Siegler says it’s about acquiring design talent. That makes a lot more sense to me. I was thinking primarily from an engineering talent perspective.

WWDC

So, WWDC sold out in only 9 hours! I was sure that it would sell out faster than the 8 days last year but I figured it would last ~24 hours. That’s pretty incredible. Sadly, I will not be there this year. I debated buying a ticket but with my recent transition I just couldn’t justify the expense at this time.

If the current trend continues, next year will sell out before it goes on sale. I wonder what the future holds? Will Apple move it to a larger venue? East Coast and West Coast conferences? Will smaller, unofficial conferences like NSConference and SecondConf satisfy some of the demand?

New Frontiers

I quit my job this week.

In an unusual step for me, I don’t have another job lined up. I’ve decided to try my hand at something completely new: self employment. I want to build a business making and selling my own software as well as doing contract development work. That is to say, I’m going indie.

This change is something I’ve been thinking about for quite some time now. I’ve gone back and forth on the “best” way to start. Should I write software on the nights and weekends? Try to expand my social and business networks first? Go big or go home? I was pondering these questions and more when I attended SecondConf last October. The experience, aside from the great content, was simultaneously inspiring and demoralizing. It was inspiring to meet so many people who are doing what I want to do. Developers making a living writing software that they want to make, developers working on interesting client projects, developers in charge of what they do. It was also demoralizing because I felt like a fraud. I wasn’t doing work that I enjoyed, I wasn’t doing work that I could be proud of, I wasn’t doing work that mattered to me. I was just punching a time clock and being miserable while doing it.

Now, I don’t want to give the impression that punching a time clock is bad, per se. I have no problem with being an employee, so long as I’m an employee in a challenging and rewarding environment that values the same qualities in software and its creation that I do. I just didn’t feel that I was in that kind of environment. So I decided that I needed to create it for myself.

The major revelation that struck me while at SecondConf is that I am unusually situated to jump in with both feet. I am unencumbered by children or a spouse and free of significant debt or long term commitments like a mortgage. I can afford to downsize my life, live off of instant ramen and peanut butter sandwiches and pursue my dream. I may end up pursuing my dream while living in a van permanently parked down by the river but at least it will be for a good reason. And, if I fail to make a sustainable business, I won’t be much worse off than I am now. A bit poorer, perhaps, but at least I will have gained valuable experience and hopefully have a body of work I can point to with pride as I apply for a job (one I will be happier at than the one I left).

April 15th is my last day at work. Since I will no longer be tied to Northeast Ohio for a job, I will be moving to Indiana shortly thereafter so I can be closer to my family. After that, my life is a gigantic question mark. That is simultaneously exhilarating and incredibly terrifying.

There is a lot to do as I head down this path. I want to form better connections with others in the community by blogging more, tweeting more (or maybe “micro-blogging" more), going to my soon-to-be-local CocoaHeads. I need to write and release both software and code to build a portfolio (and ideally a positive reputation as well). There are new technologies I need to learn, ideas I want to explore and projects with which I want to experiment. I expect to make a lot of mistakes while doing this. I expect to make big mistakes. But I also expect to learn. And grow. If I’m really lucky, I’ll get to write a blog post a year from now talking about how excited I am to begin year 2 of my adventure.

In the meantime, if you know of any opportunities for an experienced OS X and iOS developer eager to prove himself as a contractor…

If you set your goals ridiculously high and it’s a failure, you will fail above everyone else’s success.