Cultural Sync

Like a lot of other people, I’ve been watching the Netflix original series “House of Cards“. It’s pretty good. Not HBO good, but definitely AMC good, and that’s a hell of an achievement for a first effort.

Hopefully it’s the beginning of a lot of original content from Netflix. I don’t think there are very many people cheering on the traditional big entertainment companies. Netflix can create content, then play with essentially every aspect of traditional series distribution.

We all know there are some things the existing television networks do because they’re greedy. I wonder, though, if some of the traditions in television are also because they’ve been doing it for a long time and they know what people need.

Every episode of House of Cards was available day 1. On 2/1/2013, the entire season was released to Netflix at once. If you wanted to, you could watch them back-to-back and finish the series in a weekend.

It’s awesome that Netflix is re-considering all of the facets of distributing a series. A lot of it was broken. However, I don’t think everything was.

We don’t just watch a single episode a week because we’re beholden to megacorporate masters; it’s also kind of fun.

I think there’s more to the magic of FX, AMC, or HBO than just creating good content. There’s also something to be said for everyone being on the same page at once. With a weekly series, everyone is waiting for the same cliffhangers. Everyone sees the same reveal on the same night.

Finales are events, not just the 13th hour of a weekend marathon.

When The Sopranos was at its peak, you could strike up conversations with random strangers at dinner and they were watching it. They had opinions about the plot. They had favorite characters. They were concerned about outcomes. We were all waiting for the next thing. That’s not a broken model. That’s a culture on the same page.

To a smaller degree and in smaller groups, you can experience a similar effect now with Breaking Bad and Mad Men.

That’s the sort of buzz that would really benefit Netflix: an enduring season of fans evangelizing your product. Netflix has the opportunity to do this globally. They’ve got the chance to create synchronized cultural events, not just a month of fanatical buzz.

I hope that as Netflix’s portfolio of original content grows, they reconsider some of the time-tested formulas used by other networks. They’ve been doing this for a long time, and I don’t know that we have to throw out every method we associate with them.

Those First Steps

beginnerI was in a bookstore recently, and I walked past the “Special Orders” shelf.

I glanced at the books, and noticed someone had ordered a copy of “PHP & MySQL for Dummies”.

Look at that title. Could it be any more naked? The intent of it is just so evident and bare.

Someone wanted to build stuff, and they ordered a Dummies book. A physical book, from a physical store. So they could learn how to use a constantly-derided scripting language to talk to a constantly-derided open source database. So they could build apps for the plain-old dying-ass web.

It’s all so damned uncool.

When I think about those first steps, they don’t strike me as quaint or naive. I’m not patronizing this person. I’m jealous.

They’re about to figure out the potential you have with just a text editor and a $10 hosting account. They’ll see that through creating software, you get to create cool things that help or entertain people, and you just make the stuff out of thin air.

You don’t get to experience that realization two times in your life. Once you know it, you can’t un-know it, but learning it for the first time is really special.

They’re on the other side now. They have this idea that there are people out there who can make stuff, but it all seems so esoteric. They’ll work through the examples in that book and see how simple it really can be.

Perhaps some of it will be over-simplified, but I’m thankful that there’s such a raw, direct path for the uninitiated. Let them type stuff into text files and then see those changes in the browser.

When it’s just right on top of the nerves like that, it’s even cooler to see the output of your work.

Let them see how cool and simple it is to POST a form for the first time. Later, we can tell them about how you really can’t just do that, and you need a CSRF token. And there’s a DELETE method that’s more appropriate. And they’re incorrectly using the session.

There’ll be time later for over-engineered asset pipelines, Varnish, message queues, premature optimization, and bullshit language war drama.

Just let them play, because it’s the thing that drew most of us to this anyway.

Later, maybe they’ll read 500 stupid articles about how PHP sucks and only 100 stupid articles about how Python sucks, and they’ll decide to start building awesome Django apps, and that’s cool.

Or they’ll keep learning and build big badass PHP apps, and that’s cool too.

They’ll learn about testing and why everyone won’t shut up about it. They’ll face serious load for the first time and they’ll learn about optimizing.

They may even graduate to pretentious conversations about mutability and the horrors of shared state.

The journey is powerful and legitimately rewarding in ways it’s easy to forget once you’re in the thick of it.

If they stay the course, I’m excited for this person for the mental shift they’re about to experience.

Pagination is lazy

Most software has to list things. Recipes, used cars, invoices, customers, whatever you’re modeling, you usually end up providing a list of the things.

And over time, the number of these things will grow. If you’re building an invoicing application, it’s a reasonable expectation that the number of invoices will grow arbitrarily.

Eventually, there will be far too many invoices to simply list out.

By far, the most common solution to this design challenge is pagination. When it becomes impractical to list every invoice, list the first N, and give the user some indication of how many pages you’ve broken it into.

You can’t easily fit 100 line items on a page, but you can show 10 pages of 10. Problem solved.

Wait, what’s the problem?

Well, sort of. I mean, it’s been solved, but it’s an imaginary problem.

The problem isn’t that you can’t show 100 items at once. The problem is that you’re trying to show 100 items at once.

The most useful thing to do is never to show 100 of anything. If you aren’t building an actual database table browser, this is never the thing your users want.

When you choose to paginate a list, you’re essentially saying “The set I’ve given the user to work with is too large to work with. I’d better break it up.”

They don’t want to be shown 100 things, they want to be shown the correct things. There aren’t 100 correct things. There are probably less than 10.

If you feel like it will be a common case that users are expected to comprehend 50, 100, or 1,000 data items, you’ve made other UI mistakes that got you there.

Everything in moderation.

Pagination isn’t in itself a disease. There are probably even legitimate uses, like the case of bulk operations. It’s not something to be avoided wholesale, but it looks pretty lazy when it’s the workhorse of a segment of your app.

Think of it as a UX smell, A symptom that perhaps working with this section of the UI has become unwieldy.

Perhaps you’ve not thought through the common operations on these models. Maybe you’re exposing too much of your underlying database structure to your users like virtually every CRM product ever?

Consider things generally regarded as elegant and useful (like Basecamp), and look at effectively they show you the items you want to work with.

Next time you’re building something, and you’re considering showing 500 receipt images, examine why you’re about to offer to your users a list you know they’ll never consume.

My 2013 Resolutions

It’s that time of year where we all eat and drink too much, then promise ourselves not to wind up fat drunks like our parents.

I’m in.

But first, we have to call our shots. You can’t say “I resolve to be a better person in 2013″, because I can’t measure that. We need data. It has to be something at which you can fail publicly, so everyone can bear witness and feel better about their own failure.

These commitments here, these are the standards by which you’re free to judge me in the coming year.

Stop arguing with people

There is nothing with so rich a track record of failure as arguing. I’ve done it countless times, and I don’t think I’ve ever even come close to changing someone’s mind. I know no one has come close to changing mine.

This is an extremely low return on investment. I can’t think of any other area where I waste so much time with a virtually-guaranteed zero return.

I will strive to listen, and to understand, and even express my opinion, but fuck arguing. It’s a massive waste of time.

Write honestly

I like to write, but it comes out all bullshitty when I do it for a purpose. I’m going to try and take the stuff that happens in my head and put it in writing.

If something seems fake, bust my balls about it publicly.

My writing honestly will be of tremendous value to the 4 people worldwide who are on the same page.

Lose zero pounds

I reached a sort of fatzen in 2012.

I realized that my shortness of breath and inability to run even limited distances is key to the balance of power.

Without these shackles, I’d tower over you all a beautiful and angry god. I am not a just man. This mustn’t be allowed. Fetch me a calzone, boy, and tell your mother I said “hello”.

I resolve to weigh on 12/31/13 as much I do today. If you catch me eating a salad, poison it.

There you have it. Recorded for eternity unless I later subtly change it in ways you wouldn’t notice.

What was the matter with PDF?

I’m on the hunt for a decent Google Go book. I usually prefer a Manning text, but their Go book is a little incomplete at the moment.

I settled on The Way To Go, and saw that Kindle edition was a steal at ~$3, so I snagged it. This was a mistake.

In fact, my every Kindle purchase of a technical book has been a mistake. It’s not just wonky fonts or off colors. They’re a god damned repaginated mess. They’re usually downright unreadable.

And code examples. Christ. The person who wrote them can’t tell what the fuck they do.

They look as if you gave a troubled child a pair of scissors and a complex book and said “Hey kid, somehow make this fit a smaller screen.”

I get it. There are challenges with fitting a wide range of devices.

You know what seemed to handle that OK, though? PDFs. Remember those? What the fuck was wrong with PDFs? Paginated to the original specifications of the publisher. Full color. Beautiful fonts. Legible.

This problem was solved in 1993.

The Red Hot Chili Peppers won a Grammy for “Give it Away” in 1993. They could have gone back to their dressing room and enjoyed a beautiful Ruby book on their shared Hewlett Packard desktop. Why the fuck are we worse off going into 2013?

I purchase a Kindle book every few months to sort of check in. I says to myself, “Self, they’ll get this worked out eventually. There are very big companies involved. Other people have this problem.”

But I’m starting to wonder if technical books were just forgotten in the transition.

I mean, who gives a shit about some nerds when you’re moving bazillions of copies of books that help teens or moms explore new facets of their sexuality?

I’m assuming it’s more accurate to blame the publishers. Maybe it’s just not worth the effort to put in the extra design work. If they put out a shitty version for the kindle, they’ll still make sales because of the popularity of the platform. There are probably even people with crappy-enough taste not to care.

Don’t tolerate it. It’s unacceptable.

Next time you’re about to grab an ebook, compare the Kindle sample to the PDF sample from the publisher. You’ll spend a big chunk of your career reading about your craft. Why suffer through another hollow digital representation?

Use PDF and enjoy the luxurious amenities the early 90′s had to offer.