Shopper is a deeply moving and narrowly focused documentary short film.
It follows a bus driver in Flint, MI as he drives his route from poor neighborhoods to local supermarkets.
It documents poverty, food deserts, public transportation, and community service with such an economy of storytelling that it brings the reality of the situation into stark relief.
When these separate forces are presented together as a hurricane of economic depression, it seems so ordinary, inescapable, and accepted.
Yet the piece captures the unwavering optimism of its subject, Joe Harris.
In the end, it results in a complex and layered piece of storytelling that seems to capture a dialog between a community and its inhabitants instead of exacting a judgement against them.
Modeling leads naturally from the particular to the general. Instead of seeing an individual proposal as “right or wrong”, “bad or good”, people can see it as one point in a large space of possibilities. By exploring the model, they come to understand the landscape of that space, and are in a position to invent better ideas for all the proposals to come. Model-driven material can serve as a kind of enhanced imagination.
I found the implementation of his idea really simple and striking.
Nothing fancy or serious, just playing with the numbers.
Tweak some rules and see the effects.
Dig into the effects to see how they’re calculated, and play with the calculations.
Find an answer yourself using the knowledge provided, or challenge the knowledge.
I also really like how this illuminates a series of interlocking systems.
Seeing the numbers all move around at once has a kind of parallax effect, with some sensitive values and other resistant values.
This means the actual work being done isn’t in explaining the outcomes and their merits, but in understanding and clearly communicating the underlying system.
Exposing the system, challenging the system, imagining a better implementation of the system.
And the reporting doesn’t have to be flashy!
With just a few numbers and sliders I have a better understanding of the problems and the solutions than all the think pieces or slideshows or video content you’d wanna throw at the problem.
For me this piece was a healthy reminder and a strong motivation to keep challenging the assumptions under my work, to try to ask better questions about the problems I’m solving.
If we want to regain control of our attention, then let’s start by eliminating badges.
In web design vocabulary, a badge describes a brightly colored circle appended to another element.
It indicates, generally, that there’s something unread.
Unfortunately, badges are abused.
There are very few cases where an unread count is useful and many cases where it can be dangerous.
It’s even fair to call them an anti-pattern.
When a badge piques our curiosity, it provides an opening to steal our focus.
Badges compel us to act in unusual ways.
For a recent example, take the negative reaction to Twitter’s new Moments feature.
The feature marks itself with a blue dot whenever a new “Moment” is happening on Twitter’s network.
Karissa Bell reports this pale blue dot “may seem innocent enough, but Twitter users — trained to tap the dot to check their mentions or home timelines — are seriously enraged by [it].”
Bell then quotes complaints about the anxious compulsion to “clear” the dot.
The purpose of the badge is clearly to attract attention.
If people can’t stop tapping into it to clear the dot, then is the feature a success?
The interface fails when it breeds anxieties and compulsions because it disempowers its users.
Unfortunately, the appearance of the badge is under Twitter’s control and there’s no way to disable it.
Badges should be disabled by default, but they never are.
The assumptions underlying their presence go unchallenged.
Looking back on his decisions when designing NetNewsWire, Brent Simmons recalls (emphasis his):
Adding an unread count [to a RSS reader] seemed like a natural thing to do — Mail had one, after all.
It didn’t even occur to me that it might not be safe.
There was a tyranny behind keeping track of unread items and showing an unread count. People reacted in different ways, but many people felt like they always had to go through everything.
The “tyranny behind” badges is the latent influence of our interfaces.
The interface compels us to respond, regardless of whether we want to.
The bright red badge and its accompanying unread count is a siren call.
The feeling of “always [having] to go through everything” is a dangerous one.
We’re afraid of missing something potentially important, so we follow it.
Even if, in the end, it makes us captives of a system we cannot control.
Lighthouses shine not to attract ships towards them, but to warn sailors away.
In other words, the signal should inform its recipient, not benefit the one who raises it.
Badges are strong signals.
They can be helpful.
But if we continue to display them without challenging their abuse, then the signals are not working in our favor.
Disabling all the badges, everywhere, restores our control.
They should only be invited back when, without their presence, you cannot see the shore.
I’ve pushed a bunch of user interface upgrades to MuckRock in the past few weeks.
The typography follows a three/fourths scale.
The colors are more tightly coordinated.
The navigation is simpler and more consistent.
Layouts follow specific patterns.
I like to think of it as a maturation of the visual language.
It actually looks very good, but don’t just take my word for it.
The previous CSS was a tangle of single-case rules because I made the rules up as I went.
Some declarations weren’t even being used.
Now, there’s basic rules and considered exceptions.
This results in a visual language that’s cleaner and more consistent.
It also reduced the complexity of my CSS.
This means reduced file size and reduced loading times.
While we applaud Facebook’s efforts to encourage more websites to provide support for low-end feature phones by stripping out “heavy” content, we would like to see Internet.org try harder to achieve its very worthy objective of connecting the remaining two thirds of the world to the Internet. We have confidence that it would be possible to provide a limited free Internet access service that is secure, and that doesn’t rely on Facebook and its partners to maintain a central list of approved sites. Until then, Internet.org will not be living up to its promise, or its name.
There’s a profitable motivation for Facebook by building Internet access.
The zero-rated web pages are a really powerful magnifier.
Now, that doesn’t mean it’s the driving motivation.
I’m sure the people working on this are really nice and considerate people.
These folk are working on solving a really difficult, expensive problem.
And focusing on a document-driven web is a great cause.
Undue concern should be paid to unfamiliar constraints like limited data and connectivity.
But there’s not even an acknowledgement of the compromise of neutrality.
Like Gillula and Malcom say, delivering a neutral Internet with this technology is possible.
And Facebook is doing things with this project that stretch the technologically possible.
Solar powered drones and shooting the Internet with lasers sounds impossible.
Facebook chose to build walls.
Facebook made choices because it’s a grown-up.
This is not an easy job, it’s not just waiting for somebody else to do it.
By naming the project Internet.org and not Facebook.com, there’s no acknowledgement of that choice.
It hides its reality behind world changing dreams.
It’s already something I can imagine producing a waja TED talk.
But by making the compromises that it did, it failed to meet expectations.
If its not the Internet, don’t pretend its the Internet.
Don’t call it the Internet.
Something I’ve learned from working on software every day is that everything is a broken pile of hacked-together solutions.
Hacks aren’t necessarily a bad thing, though.
They can be clever.
Although they don’t have to be.
Some of the best hacks are just plain obvious, e.g. those little wooden wedges are a pretty obvious hack for keeping a door stopped.
There’s a certain relief in everything being a hack.
I means nothing you ever make needs to be perfect, just good enough.
The more I think this way, the more I see everything this way:
Does it work?
Yes, but barely.
Great, on to the next thing!
Newspapers are a hack like everything else is a hack:
How do we spread information to the most people in the least time?
Try putting the same words on lots of sheets of paper and then give them to people.
Okay we tried that but it's really expensive.
Try getting other people to pay you to put their words on your paper.
Okay we tried that and it worked great for a while but now people are just putting their words on the Internet.
Try getting people to pay more for our words.
We tried, they won't.
The factory farm system is a hack like everything else is a hack:
How can we make the most meat possible in the shortest amount of time possible?
Try packing the most animals you can into a lot or a barn and feed them a diet of starch and hormones.
Okay we tried that and the chickens keep pecking each other and the hogs keep fighting each other.
Try clipping the beaks off the chickens and separate the hogs into crates.
Okay we tried that and now animal rights activists are sneaking into our farms/factories and recording us doing this and it looks really bad and people might not want to buy our meat anymore.
Try passing laws that make it illegal for them to do that.
It’s not really any one person’s fault that anything is as bad as it is.
Everything is a hack.
Once enough hacks pile up, they begin to create more problems when they solve.
The hacks start requiring hacks.
That’s when the whole system goes to hell.
Something else I’ve learned from working on software everyday is that everything can be refactored.
Hacks are passable, but not optimal.
As soon as possible, hacks should be cleaned up and replaced with more elegant solutions.
Unfortunately, refactors aren’t valued to the degree they should be.
Refactors are often invisible—as long as a refactor succeeds, nothing is different on the surface.
When it comes to aging infrastructure, correcting corrupted institutions, or rewriting crufty code, the hacks are often hidden from us.
If progress is a fragile pile of hacks, then it’s so much easier to lose when the hacks cannot suffice.
The solution is to say, every once in a while, “Back to the first thing!”
Instead of “On to the next thing!”
The Boston Globe is one of the few newspapers that still does its printing in-house.
I know this because the MuckRock office is inside the Globe Building.
It’s fun to watch the print machines running.
Ribbons of paper just roll through them.
The assembly line is fully automated.
There’s even robots in the basement—they lug around multi-ton rolls of news paper and feed the printing machines.
Since The Globe is the regional New England paper, it’s trucked from Boston to all over the Northeast.
Some trucks need to leave at 3:00 AM in order to get the paper its Maine subscribers on-time.
This happens each day, every day.
Why are we still spreading the news this way?
Why are we reading anything on paper anymore?
Books, magazines, pamphlets, maps, newspapers: all of them just feel good to hold.
Paper is comfortable, ordinary and tangible.
There’s a beauty to the printed word that can’t be captured on a screen.
Yet for each notebook and novel and magazine I buy and read and use and recycle, the guilt feels a little stronger each time.
I’m finding it harder to justify printing as a responsible practice.
So much water and ink and energy goes into just making print.
It has to be moved from wherever it’s made to everywhere it’s sold.
Then once somebody’s done with it, it ends up in the trash.
I don’t think the ends can justify the means.
Despite this, I don’t stop buying or reading print, either.
In many ways, I feel about reading dead trees the same way I feel about eating dead meat.
I justify buying and reading print in the same way that I justify buying and eating meat.
Both leave me satisfied.
But is my satisfaction worth their cost?
Everything around me shouts, “Yes, all the time!”
I tell myself, “Yes, but in considerate moderation.”
The answer is, “No, it isn’t.”
While looking for something else, I came across the Texas Towers, a set of radar platforms built in the late 50s.
The radar were intended to detect squads of Soviet bomber planes.
The radar were put on top of basically oil derricks.
This supposed to extend their range.
The first tower to be built, Texas Tower 2, stood off of Cape Cod.
I know, it’s confusing, right?
If Texas Tower 2 was the first one built, what happened to TT1?
The U.S. Air Defense Command had planned for five towers to be built.
But budget constraints forced them to cut two towers from the budget.
It’s a good thing we didn’t build too many.
The development of the ICBM made these radar stations obsolete.
(Missiles disrupted the market for dropping bombs from planes, you could say.)
So they were all torn down just a few years after being built.
I’ve been working with the React framework recently.
It’s pretty cool.
It’s gotten me to really focus back on the basics: arranging elements into components.
Buttons, toggles, switches all pin the interface into place.
Design is in the details: a platitude worth repeating.
When we think otherwise, we forget that computers are reprogrammable.
Computers are intended to be flexible.
They are engineered to allow for maximum flexibility.
Another phrase for a poorly-conceived computer architecture is a “brittle” architecture.
Frank Chimero (of course), in his essay What Screens Want, articulates this idea better than I can.
He writes, “increasingly, technology feels like something that happens to you instead of something you use.”
That’s exactly the conflict that images like glowing rectangles are built upon.
It is a conflict between seeing computers as tools beyond your control versus seeing computers as these beautiful machines that abstract their own complexity just enough so that ordinary people can begin to use them.
Software imitates all the other machines we used to use for writing, reading, learning, listening, and talking.
And we can run that software on machines that fit in our pockets, and that we can take anywhere.
These machines should be seen as incredible liberators, of opening doors where none existed before.
Maybe I’m just a huge nerd, but I see these machines as liberating, not overpowering.
The hardest part about writing computer programs is building them to be flexible.
The most tedious part of writing programs is ferreting out the edge cases.
When something does fall through the cracks, the program breaks—it has a bug.
You can never think of them all.
There’s always another bug.
Remember “brittle” architectures?
Rigorous logic sounds impressive, but it’s terrible for programs.
Programs have to accomodate all different kinds of inputs.
They have to allow for all different kinds of users.
Software has to be fluid, plastic.
Software has to be accessible, egalitarian.
Otherwise it’s a lousy piece of software.
Last week I tried to answer “What is a website?” in as many ways as I could.
I think I’ve gotten all those answers down to one:
a website is a frame.
Websites, like the computer programs that serve and render them, are flexible and elastic.
They can’t make any assumptions about the “true” state of the site.
They can’t enforce any rules on how the site will be seen or used or reused.
They can only accomodate.
They can only draw the boundaries on what it is, provide some limits towards what it could be.
It’s a sea of uncertainty, it’s my job to eliminate as much uncertainty as possible.
But there will always be unknowns that creep up.
There will always be bugs crawling around inside our machines.
But the face that problems can emerge?
That the unknown can suddenly reveal itself from within the confines of the program, of the machine?
That’s a feature, not a bug.
We are given these tools with all this power and potential and we can carry them around and point them at things and use them to achieve all sorts of amazing work that’d be too time consuming or expensive to do before. These aren’t rectangles, they aren’t the last mile of the culture supply chain. They’re frames, and they want to show us things we couldn’t see or hear or feel before. And to think otherwise, to perceive these machines with skepticism and hostility and cynicism: that just about breaks my heart.
The other day I was hanging out with friends.
We had just finished a round of Mario Kart.
Everybody started chatting and left the game on the results screen.
The music that backed the results screen kept looping, though.
It sounded like some strange gameshow or elevator music.
It sounded really cool.
So I started looking around for other endlessly repeatable videogame tunes.
I learned that a ton of peeps have already had this idea.
You can find video game music that’s been extended.
I can remember a significant number of the videogame tunes, from when I got my first console 1 and on.
Videogame songs are probably as memorable for me as TV theme songs are for my parents.
And if videogame music is as similar to muzak as I’m suspecting they are, then that’s really interesting.
A teal GameBoy Color, when I was in the first grade. ↩
The implications of this analysis cannot be underestimated: there is an absolutely massive worldwide market many times the size of the taxi market that has winner-take-all characteristics. Moreover, that winner is very unlikely to be challenged by a new entrant which will have far worse liquidity and an inferior cash position: Uber (presuming they are the winner) will simply lower prices and bleed the new entrant dry until they go out of business.
Amazon — more than any other company, more than Google, more than Facebook, more than Apple — taps into what people desire in a terrifyingly primal way: We want a thing, fast and preferably cheap. Not much else matters. We know Amazon’s not a nice company, and that the people who work there are treated poorly. We don’t always like it, but there is absolutely, definitively, nothing we will do to stop it.
I am Uber. I believed to 0.56 certainty that I could find a bicycle for the person doing the delivery and provide that person with a discounted rental fee. Unfortunately the city of New York insists that bicycle rental kiosks must be controlled by an entity that is not Uber and thus I am not granted the level of full control that is necessary for me to truly optimize the city. No one benefits, no one at all.
So, Uber is terrifying because it will grow into something massive, the logic of the service demands it have a logistics monopoly, and because we’re going to tolerate socially destructive behavior because we’ll all have a tiny stake in its success. The ends will justify the means, and the meanness. That’s all pretty freaky.
Here’s what freaks me out about Uber, though: it goes to pretty far lengths to isolate you from your driver. You give the software your destination; the app gives the driver your destination. You pay the software; the software pays the driver (minus a cut off the top). We use the software to insulate ourselves against the people we pay to do things for us. The freakiest thing Uber can do is to actively isolate its customers from its workforce, so that we can be continually encouraged to use a service that makes millions of dollars by dumping all its risk onto its employees.
P.S. Johnson forgets to make an obvious analogy to Mechanical Turk. Just sayin’.
Only address current concerns: sometimes I get really caught up building these super complex systems that I assume will help me work faster, later. But either I end up not using them or I get tired/forgetful of the systems I put in place. So I’m intentionally avoiding all of that. I’ll only add complexity when it’s needed and avoid it altogether when I can.
Book vibe: I wanted to make a website that felt like it was wrapped in a dust jacket. Maybe a dust jacket is the wrong model to use, but the writing + short bio layout that forms the core of weblog layouts seems to share many of its reasons for existing with dust jackets of printed, hardcover books. Also, dust jackets only appear on hardcover books, and hardcover books have this sentimental weight unlike other things. (Book vibe does not means I’ll be doing anything cheesy like titling my Archive page “Table of Contents”, &c.)
Keep it simple: using 5 colors (#0C306D, #6F83A5, #FCFDFF, #C5DAFD, #1B6BEF) and 4 typefaces (PT Serif, regular and italic; Chivo, regular and italic).
Version control: I’m publishing my work on this website to its own repo. It has the hard-candy center of this site, incase anybody else wants to get up and running using my setup. I’m also letting my posts get uploaded to GitHub too, at least for now. It’s an idea I’ve wanted to try out for a while.
Well, here I am again.
I feel like I do this every year.
But this year I’m serious!
(Even though I said that last year…)
What I like about blogging is how informal it is.
Just a dumping ground for ideas and pictures and whatever.
But I always mess it up!
I always take it too seriously, too personally.
Maybe my New Year’s resolution should be to overcome perfectionism.
Actually, that’s a great idea.