Brian’s Brain

I Need a Tagline

Next Steps for the Frozen Photon Academy

I spent a lot of time on my vacation planning the next steps for the Frozen Photon Academy. This is different from many of my side projects, which usually involve me just sitting and programming. Frozen Photon Academy needs programming, to be sure, but it also needs a lot of content. One of the three pillars of the Frozen Photon Academy is providing you with instruction and inspiration to get out and create pictures every day. That means I need to spend a lot of time writing English over the next few weeks instead of Objective-C.

It’s a bit of a scary prospect, to be honest. I know how to write code, and I know I’m good at it. Writing English is hard and it’s time-consuming. Plus, who in their right mind would listen to me about photography? I’m just a computer programmer with a camera, not a professional artist. Now, watch me use a Jedi mind trick. I’m just a programmer with a camera? That’s awesome, because it means that if I can understand how to make photographs that work, then so can you!

The first content I’m working on is loosely inspired by Michael Freeman’s book The Photographer’s Eye. This is the book that taught me what “composition” meant – I never really understood before. I thought it was just a pretentious word that high school art students threw around to scare off the people who were better at math. If you don’t have this book and you’re interested in improving your photography, go buy it now. You’ll get seventy short topics, all beautifully illustrated, and when you’re done reading it (and studying the photographs, which teach more than the words), you’ll understand the elements of composition that go into each photograph. His book is going to be much better than anything I’ll be able to write – but my work will fit in your pocket!

So, what’s coming next are early drafts of photo projects. I’m going to put this in a mobile-optimized website so you can carry these projects in your pocket, just like you will be able to do with the finished application. When I have something worth sharing, I’ll send it along to the folks who signed up on the Frozen Photon Academy website. I look forward to brutal feedback!


This is an old photo of mine that I used to illustrate an earlier book review of The Photographer’s Eye that I wrote. I took this photo shortly after finishing the book for the first time. I like it for the repetition of curves, the contrast of silver & black, and the exaggerated perspective from my wide angle lens. I even think I achieved some interesting dynamic tension with Alex’s eye line going to the lower left, but the repetition of curves pulls the to the lower right corner. Before reading The Photographer’s Eye, I wouldn’t have even had those concepts in my head. So I doubt I would have recognized the possibility in the scene, and therefore I wouldn’t have balanced precariously on the top of the climbing structure to get the shot…

I Survived WWDC!

WWDC iPads

I just got back from my first-ever WWDC. Not just my first WWDC – my first conference ever as an attendee. I’ve spoken at dozens of Microsoft events (most recently at //Build in 2011), but it’s different being in the audience instead of on stage. For instance, when you’re a speaker, you don’t stand in lines. When you attend WWDC, you stand in lines. LOTS and LOTS of lines. Opening keynote? People were in line at 4:00 AM for a 10:00 AM talk. When I went to get my attendee badge at 7:30 AM, the line already stretched all around the Moscone center.

Popular session? Stand in line.

Time at a lab? Stand in line.

Need to use the bathroom? Stand in line. Unless you’re a woman, of course; no lines for you.

Now that I’ve survived WWDC, here are the things I wish I knew before I went:

  • Unless you’re there for the party atmosphere, don’t try to get there early for the keynote. In fact, consider skipping the keynote altogether and instead watch a live stream. The keynote lines are insane. And there’s great visibility, even from the back… if I go to WWDC again, I might try showing up 10 minutes after the keynote starts and get a spot in the back. All the fun, no lines.

  • Don’t try to download the beta software using your hotel internet connection. It will take all night, if it finishes at all. Instead, plug into the internet connection at the Moscone center. Software downloads in minutes instead of hours.

  • All the sessions are good. Some are outstanding. If there’s a session you want to make sure you attend, show up early. I was turned away from a session on the second day because all the seats were taken.

  • Even though the sessions are good, remember that you can also watch the recordings later. If a session conflicts with something else (an interesting lab, a time in the user experience lab, a meeting), do the other thing. Catch up on the sessions later.

  • Labs are a great opportunity to work 1-on-1 with Apple designers and engineers. I spent time in both a user experience design lab and in a performance lab and picked up some great insights from both. Unlike the sessions, you can’t stream the labs over the internet later. Make time for them. And beware that the labs can be extremely popular, especially the user experience design lab… so yes, once again, be prepared to wait in line.

My big regret? I didn’t really use the time to make new connections to the iOS developer community. I’m not terribly outgoing, and it was much easier to spend my extra time digging into scrolling performance on the new Urbanspoon iPhone app, applying the new things I learned during the conference. Yet I feel like I wasted a great opportunity to meet people whom I could learn from.

Well, there’s always next year.

My Next Side Project…

Last I wrote, I made a brief mention of the importance of side projects.

Now, in spite of this, when I started working full-time as a developer for Urbanspoon, I thought I’d be less interested in side programming projects. Just as many chefs don’t like to cook at home, I thought I wouldn’t want to program at home after spending all day coding at work.

Wrong! If anything, I’m feeling a stronger itch to program because I’m feeling more confident in my skills. So I’m starting a new side project this summer, and I could use your help… if you own an iPhone, and if you consider yourself a photo enthusiast. (There’s no precise definition, but you’ll know it if you are one. Do you consciously try to make your photos more than snapshots? Have you taken a photography class? Do you own a book on photographic composition? A bookshelf of photo books? Own more than one camera? Own more than five cameras? You get the idea…)

My project this summer is to write a photography iPhone app. Unlike the other 6,500 photography apps in the app store, I’m not trying to make the iPhone a better camera. I want an app that will help make you a better photographer. As a fellow iPhone-wielding photo enthusiast, I want an app that:

  1. Provides the encouragement I need to get out and shoot every day. I know I get better with practice. With the iPhone, I have a capable camera in your pocket at all times, so there are really no excuses. And I like the idea of using my iPhone camera more and trying to improve my photography through better composition rather than better equipment.

  2. Gives me ideas, inspiration, and projects to stretch my creative boundaries. How do I break out from shooting the same kind of photos all the time?

  3. Can connect me to a core group of other photo enthusiasts, who are also trying to learn. I’m not looking for Facebook “likes”, I’m looking for people I can learn from. (And conversely, people who want to learn from me.)

As far as I know, this app doesn’t exist on the App Store, so I’m writing it. So far I’ve put together a simple website for the idea, which I’m calling the Frozen Photon Academy (which mostly just shows that I shouldn’t be allowed to name or market any product at any time).

How can you help me? If this sounds like a project you’re interested in, I’m building a mailing list that I’ll use later to try to get Beta testers. You can sign up at this link. I’ll also probably send out early screenshots to the list to gather feedback, maybe send out a survey link… you get the idea. If you join the mailing list, you can help keep me grounded in reality.

If you’re even more enthusiastic, and have your own ideas about your ideal app that would help you grow as a photographer, drop me an email (or, if you leave in Seattle, we can talk over coffee). I’d love to be able to bounce ideas around with my friends on what would make this a great app for them.

Now that I’ve got my project idea, time to start coding…!

Dear Younger Me

Autumn outside Wren

Dear Younger Me,

This is a letter from the future! This month, the 0x10 anniversary of your graduation from college passed almost without note. Almost, that is, but for this letter, scribbled down late at night and sent, via a quantum space-time discontinuity, back to the swamplands of Virginia, 1996.

I have some bad news: You just spent tens of thousands of dollars acquiring computer skills that, from my perspective in the future, are hopelessly outdated. Sorry to break it to you. Most of the cutting edge work in the future is being done with languages you haven’t heard of yet. At least you had the foresight to become proficient in C. While you soon will stop writing C programs, those memories buried deep in your lizard brain will help you when it’s time to write Objective-C.

However, all is not lost if you remember three simple truths:

  1. The most important skill you honed with all that tuition money is learning how to learn. Don’t let learning stop because you have a diploma.
  2. Programming languages change, but math, algorithms, and concurrency are forever. If you’re going to be learning, learn these. (As well as the programming languages you need to make the abstractions concrete – but the programming languages are disposable.)
  3. Make time for side projects. Every single interesting career opportunity you will have will originate with the skills you pick up on a side project.

The future is bright. Computers are remaking society, mostly for the better. Remember these tips and you’ll be part of the group that gets to change the world. Forget them and you’ll be left behind.

(Oh, and buy Apple stock. Now.)


Older, Wiser Me

4 Things Every Developer Should Know About Burnout

Here Comes Fall

(Fallen leaves on the Microsoft campus. From my Flickr stream.)

Last year, life had settled into an uncomfortable routine. Mornings, we’d drop the kids off at day care, then my wife and I would carpool to Microsoft. I’d settle into my spacious corner office in Building 9, the one with the view of the fountain and the beautiful red maple leaves each fall. Then, for the next nine hours, I’d do my small part to make my team productive. When we left to pick up the kids, I was worn out, but also wondering what I had accomplished during the day. Dinner with family was the time to relax; both my wife and I are respectable home cooks and we ate well. A glass of red wine helped. In fact, the red wine helped so much… why stop with a glass? Many weeknights I’d finish the bottle, mostly on my own. We kept our home cellar stocked with good Northwest and budget European wines, so I drank well, too. That made it easier to fall asleep, kind of numbed, and repeat the process the next day.

I decided I needed a new job. I wanted to get back in touch with my developer roots, I wanted to get more direct experience with mobile and web computing, and I wanted to experience another corporate culture. Microsoft had been my only job since leaving grad school. A friend told me that Urbanspoon was looking for an iOS developer, and with just two App Store apps under my belt I somehow convinced them to hire me.

Seven months later, I’m so happy I moved to Urbanspoon… but not for the reasons I thought were important when I took the job. Yes, I’m learning a ton, getting development experience in an area that interests me, etc., etc. I’m not looking to leave. However, look at how I described my life at Urbanspoon when I wrote about the advantages of keeping your BigCo job:

My quality of life is better than it has been in years. I’m eating better, exercising more, drinking less, and sleeping more. I feel great when I wake up in the morning and I look forward to going to work each day.

Only that last clause (“I look forward to going to work each day”) is about my new job. Everything else is about the habits that I’ve been able to establish since starting at Urbanspoon. In hindsight, it’s clear that my problem in my last 18 months at Microsoft was burnout. The repository of all truth and wisdom, Wikipedia, has an excellent summary of twelve phases of burnout. Luckily, my case wasn’t severe – no suicidal thoughts, no erratic behavior (that I know of) – but still, it made me unhappier and impaired my judgement more than I realized at the time.

My experience this past year taught me four things that every developer should understand about burnout.

  1. Burnout is real, and it can impact anyone. I’d wager a fine magnum of Walla Walla wine (I’ve no use for it now!) that if you surveyed my friends and coworkers, they’d overwhelmingly describe me as stable and cheerful. They’re my trademarks. Yet there I was, burnt out, depleted, and self-medicating. If it can happen to me, it can happen to anyone.

  2. When you’re burnt out, you’re not as rational as you want to be – so it’s better to prevent this state than recover from it. Burnout feels very much like the “ego depletion” state described in Daniel Kahneman’s superb book, Thinking, Fast and Slow. To borrow the terminology from that book, when burnt out, you won’t be able to muster the energy to perform System 2 thinking (the “slow” thinking of the title). I wish my career change had been as carefully thought through as Charlie Kindel describes in his excellent blog post. But my brain just couldn’t operate at that level. Instead, I did the “fast” thinking of: “I’m unhappy, so I should change something… anything!”

  3. The key to preventing burnout is simple: Take time to take care of yourself. Sleep. Eat well. Exercise. Spend time with friends and family. Spend time on hobbies. Stay grounded in your own values. I think there is a particular danger here for developers early in their careers to neglect this. It’s so easy and enjoyable to get lost in the etherial and pure world of bits; “wetware” is an annoying distraction.

  4. You don’t have to quit your job to be happy, but it can help. Changing jobs can catalyze the creation of new habits. As Charles Duhigg writes in The Power of Habit: Why We Do What We Do in Life and Business, habits have a powerful hold on your behavior, but habits are also triggered by cues. When you change jobs, you drastically reshuffle many of the day-to-day cues in your life. If you’re ready to take advantage of it, it’s a rare opportunity to establish new habits in bulk.

Don’t get me wrong. I’m still excited and energized by my recent job change. However, I think it’s my life change that’s going to prove more impactful in the years and decades to come.

Pholio Coder’s Guide Finished

It took me a long time, but I finally finished the Pholio Coder’s Guide!

For those who are new to this: I have a photography portfolio app on the App Store, Pholio. It was the second major project I completed in Objective-C, and I relied extensively on resources on the Internet to complete the app. So, as a thank you to the Internet, I open-sourced the app under the Apache license so others can learn from it.

The Pholio Coder’s Guide explains how the code works. I just completed the last part, which explains how I do unit testing (Short answer: Google Toolbox for Mac). I also describe the coding conventions I settled on in the app.

As the hardest part of using Google Toolbox for the Mac is just getting all of the right files into your project, I also whipped up the iOS Minimalist, which is an empty project all configured for Google Toolbox for Mac and TestFlight.


Worth a Look

One of the things I’m wrapping my head around at Urbanspoon is how to analyze, process, and visualize large data sets. Here are some tools that I want to check out:

  • Cube – will let us put time-series data in MongoDB for later analysis.
  • Cubism.js – Javascript visualization library. Among other sources, it can consume data from Cube.
  • D3 – Looks like an excellent Javascript library for building visualizations. Cubism.js is built on D3.
  • ColorBrewer – for picking good color schemes for visualizations.

We’re living in a data renaissance and I love it.

How’s the Job?

I get this question a lot. I had a thirteen year, successful program management job at Microsoft. I helped ship six versions of Windows. Then, one day, I surprised everybody – including myself – by leaving Microsoft to do iOS development for Urbanspoon. Now, when I run into family members, or friends, or old coworkers, the first question always is, “How’s the job?”

Until recently, I didn’t have a good answer to that question. Yes, working at Urbanspoon energizes me, but every new job is bright and shiny and awesome. And the small-company experience is just so different from Microsoft that I couldn’t really compare them. It’s apples and elephants.

But now that I’m finishing my seventh month at Urbanspoon, I feel like I’m finally wrapping my head around the full scope of the change, good and bad. I can give a nuanced and long-winded answer to the question: How’s the job?

The short version: My quality of life is better than it has been in years. I’m eating better, exercising more, drinking less, and sleeping more. I feel great when I wake up in the morning and I look forward to going to work each day.

However, I also wouldn’t give up one day of my Microsoft experience. The Internet seems filled with people trying to encourage you to quit your BigCo job and enter the exciting world of startups. You don’t need another person telling you that. Instead, as someone who’s worked in both places, I’m going to tell you why you should keep and enjoy your BigCo job. (To quote Joss Wheedon: This doesn’t make me a hypocrite. It just means I have layers.)

Why you should keep your BigCo job

  1. You’ll get more practice dealing with people. Computer legends abound of the lone geniuses who, armed with just their keyboards, build projects that change the world. Every computer science grad dreams of being the next Tim Berners-Lee, or Steve Jobs, or Mark Zuckerberg. But however brilliant these people may be, they did not change technology on their own. They changed technology by getting lots of other people to believe in their vision and help them realize it. If you want to leave your mark on this world, you’ll need to master people as well as technology. Working at a big company gives you tons of experience working with people.

  2. It’s the easiest way to experience a new time horizon: years / decades. I admire the “lean” philosophy, and I like experimentation / quick iteration. But while you want your discover your bad ideas quickly to weed them out, your successful ideas will live a long time. (You do want to have a few successful projects, right? Right?) Working at a big company gives you hands-on experience with the engineering work that must happen to build something that lasts. I was just a few years out of college when I started program managing features in NTFS. That code base was about twelve years old when I started working on it. It’s now well over twenty years old, runs on over a billion computers, and is responsible for the data in probably a few trillion files. Working with NTFS (and Windows in general) taught me what it takes to engineer software that lasts.

  3. You’ll get to be part of something important and impactful. Big companies become big because they have businesses that are important and make a difference. You can’t beat the rush that comes from shipping products that improve millions of lives, even if it’s just in tiny ways.

  4. It’s the simplest way to achieve financial security for your family. God bless the founders and employees of Instagram. I’m as captivated with their story as everybody else. But please, don’t mistake a good story with the real world! If you’re a good engineer, the lowest-risk way to achieve financial security is to work at a large, successful company. My years at Microsoft didn’t make me a billionaire, but I’m still amazed and humbled I could provide for my family by doing nothing more dangerous than wiggling my fingers over a keyboard.

In short, a BigCo job will teach you success — as well as the problems of success. Yes, big companies have bureaucracies and internal politics, but that’s what happens when you have people — lots and lots of messy, imperfect people. Yes, big companies use outdated technology, but that’s what happens when you build something that’s still relevant and important after a decade. There are many problems that come with being big and successful, and if you don’t solve those problems you’ll stop being big and successful. It’s simple. But these are the problems you want to have.

How’s the job? I’m excited, energized, and learning every day with the problems I get to work on at Urbanspoon. I’m doing everything I can to make Urbanspoon succeed. And I know that when Urbanspoon succeeds, I’ll be drawing on my experience at Microsoft for ways to deal with the problems of success.

Announcing Pholio 2.2

Pholio 2.2 is live on the App Store!

Pholio 2.2 brings a new, simple feature that I’m proud of: Tiles. With this release, Pholio will use tiles to show the galleries in your portfolio. The tiles give a bigger, bolder look to your galleries. I think you’ll like it! Make sure to grab Pholio from the App Store.

New tile display of photo galleries