Progress Ratchets

Let’s just get this out of the way:

  • Ratchet (device), a mechanical device that allows movement in only one direction

When going back to play an old video game with blocky polygons and low framerates, or watch an old movie with badly lit CG, or when looking at an older monitor with a lower resolution, the advances we’ve made for these technologies are obvious.

But when we first saw higher framerates, fewer polygons, better lighting or higher resolutions, it typically wouldn’t stand out as “exceptionally good”. When watching my first 720p HD video, I didn’t think “wow, this is so high res!” Similarly, not much later when watching 1080p for the first time, I just enjoyed the content.

These types of changes are only noticeable in one direction — improvement in framerate, resolution, etc. are nearly imperceptible, but degradation in the same is obvious. We experience discomfort now trying to play Smash Bros 64 with its slow, laggy gameplay, but when we first saw Smash Bros Melee, no one said “whoa this is too smooth!”

Did 480i->1080p change our lives? No, but we’d be unhappy to go back. Did 2004-era cellphones change our lives? They seemed important, but it wasn’t a huge deal when they were off — people just missed calls or texts. Compare that to 2014-era cellphones: many people express feeling alone or lost if their phone drops its network connection, let alone turns off.

A caveat to this could be something like 48 or 60fps video. It looks noticeably different, and (to my eyes) noticeably bad. There’s something about the way objects track and light looks at that rate that doesn’t sit right. Perhaps it’s an uncanny valley effect where film is now so realistic it starts to convince us it’s really real, but fails to finish that job and leaves us unsettled.

My personal bet is that a century of making films at lower speeds has led to techniques in lighting, editing, framing and motion that applied well to 24 frames per second and helped to craft the cinematic feel. Those tools and techniques just haven’t had time to be adequately adapted to higher frame rate filming, but they will be eventually. What I think we’re experiencing discomfort over isn’t the frame rate change itself (or an uncanny valley because it’s all too real), but more likely the failure of our tooling and techniques to keep up with this change, which has produced a noticeably, objectively inferior product.

Any change could be bucketed:

  1. noticeable going forward or backward
  2. noticeable only forward
  3. noticeable only backward
  4. totally beneath notice

Innovations that are only noticeable going forward may be things that sound like a big deal, but if you regress you probably wouldn’t notice a qualitative difference. One could further differentiate changes that depend on other advances to be useful, as with 24->48fps film relying on new techniques, or old vs. new cell phones relying on big screens and small, high capacity, fast-charging batteries.

There are implications here for innovators. When working on something, innovators aim to create value — if that value is not noticeable at a glance, it will require much more convincing to get it into the hands of users. If that value is not noticeably lost when slipping back, it’s unlikely to be an innovation with staying power. If it’s obviously better at a glance, and you notice it missing right away, it’s likely a pretty big deal. And if there’s some other thing missing which an innovation requires, now may be an opportunity to get ahead of the game by working on that missing thing, or setting the stage for when it becomes available.

good code is legacy code upon instantiation

This is a pretty good post (rambling, but give it some license):

http://programmingisterrible.com/post/139222674273/write-code-that-is-easy-to-delete-not-easy-to

I got there from here, also a decent read:

https://medium.com/@rdsubhas/10-modern-software-engineering-mistakes-bc67fbef4fc8

I think the first one gets across what I was going for with “Write Once, Copy Once, Refactor Once” more effectively and with an increased breadth of vision beyond the scope of what I was considering. The ideas and arguments in each should be balanced against one’s innate desire to build a temple — after all, life under any lone paradigm of thought is abominable tyranny. 🙂

In other news, wow, it is snowing a lot today.

On Distractions and Tools

I’m writing this blog post to relate the following:

I’m planning a reading tour through the American Revolution, probably starting with Ideological Origins of the American Revolution, by Bernard Bailyn. It stood out most to me after perusing multiple pages for good starting points.

Truthfully, I’m writing this blog post to relate why I’m planning a reading tour through the American Revolution. It was instigated by my sudden desire to get a grasp of the basics of the Revolution and the people and ideas around it. That came out of peeking into an IRC channel full of my American friends. Which happened because I opened my chat terminal session. Because I’d just logged on to my server.

I logged onto the server to change my status page from working.gif to dancing.gif. I was doing that because I had just visited my own blog and seen the status-page post on it. I visited to… write a brief post, about doctype vs DOCTYPE in html5 documents. I was writing that post to relate some amusing and interesting facts that came out of researching it. [1]

I found those facts after an instance of “DOCTYPE” in Bootstrap’s examples set me off reading about why people prefer the different casings and whether they matter at all.

That’s all because I sat down half an hour ago, thinking, “I should make a quick stab at building my list-webapp page, or at least think about it.” I’ve since been like a ping pong ball zooming back and forth between making and consuming, flung by inspiration and curiosity. Continue reading

How to properly build what you want to build.

To build something you really want to build, and build it right, you need time and expertise. You may need money. You will likely need more of all of them than you’ve currently got, unless you are Bill Gates and it’s the mid-1980s.

Time is non-replenishable. You can’t get more, so use what you’ve got well. Expertise is readily available from other people, who’ve spent all of their time becoming experts, but they will only give you their time in exchange for money. True experts often need a lot of money, maybe because they spent a lot of time. Money can come by a variety of means:

Let’s discount finding it in a ditch, and you probably already know that you haven’t inherited it. You can borrow a very limited amount of it with sufficient collateral, but then you must repay a larger amount. You could have it invested in you by investors, but they also want a larger pile to come back, and building something really properly isn’t a surefire way to do that. Plus, they don’t know you or what you’re capable of, so they’d probably never give you the huge sum of money you need. You’ll probably need to get paid, by a large number of people. Preferably on a recurring basis. So you’ll have to have something lots of people want.

Discounting finding that in a ditch (ditches are not the treasure trove modern media may lead one to believe) you’re going to have to make it yourself. Again, you need time, money, and expertise, but less of each than before. You can free up your work-time by having money. A loan is still an option, but betting collateral on your business is a recipe for disaster. So maybe try for a smaller investment–you’ll have less to prove than for the larger sum, so you may just need a solid track record, a good reputation, and to pound the pavement. (Plot hole: let’s ignore nepotism, groupthink, and social status.) You could try to skimp on time by continuing to work, which would free you from the investment.

Expertise in this case is ‘just’ knowing what people want, and how to build it well enough that it doesn’t anger them–usually easier than really building something right. This also comes back to a track record. A track record is just a history. It’s building things, time and time again.

How do you build things? Decide on something that you do not already have, then dream up a possible way to make it, and set to work. You don’t have to know exactly how when you set out. You probably won’t need to learn how either. You will quickly figure out what things you really need to learn by trying to do what you want, and failing.

So try. Go start now.

Try something out, learn what you need to learn by making mistakes, and build what you want to build by actually doing it. Don’t do a tutorial, don’t look up background research, don’t read an introduction to the language. Don’t open Hacker News. Don’t reinvent things–use the tools, frameworks, and freebies that flood the internet. Get out there and script-kiddie-lego-monkey-duct-tape-copycat it until you absolutely can’t go further. Then fix just enough of the hole in your knowledge so that you can keep going, and get right back to it. There are no barriers to doing something now.

And don’t worry, I promise you you’re learning things, no matter how janky your stuff is. Building it properly will come later. Building anything comes now.

What’s next after starting? Well, that’s another hard part: continuing. You have to keep building your thing. Then you have to finish it, which is also hard. Then you have to move on and start again, and do the whole thing over, preferably something pretty different. Then do it over again, and over, and over, for a long time. None of the things you make will be the track record on its own, and none of them will impress investors, or customers, or even necessarily you. Until one day, something you made does impress somebody. It won’t happen until it has, but as you work, the chances go up and up.

Why is continuing so hard?

Because it means not going out tonight. It means not sleeping in tomorrow, and not going to sleep now even though you’re tired. Not seeing your family right now, or catching up with your friends this time. Not working on your other hobby. Not eating healthy, or keeping up on exercise. It means not reading, not writing, nor volunteering, not staying at work late because you zoned out a bit that day and just need to finish one more little thing. It means not getting home and turning on Netflix. It means seriously choosing not to lose track of time scrolling through social media feeds.

It hopefully doesn’t mean all of that, or even most of it–if it means most of it for you, it’s getting unhealthy. But it does mean some of that, sometimes, and which bits is different for all of us. Honing the skill of continuing is going to be more of that bad stuff than you want it to be.

So, continuing is hard. It’s a trade where you decide what you want more, what you think is worth more to you: building things, or other stuff. For most of us, other stuff ought to be more important. You can and should try to find a balance, but be honest at the outset: if you want to do something difficult, you will have to make real sacrifices, and do real work.

It’s also hard because continuing means facing yesterday’s choices. It means a lot of boring fixing and tweaking and hitting your head against a wall. It means doing the things you haven’t already done before, and the things you didn’t do first out of sheer excitement. It sometimes means closing doors on ideas, and admitting you made mistakes. It is by definition hard work. Much harder than starting.

Why is finishing hard?

It’s everything that was hard about continuing, taken to the extreme. The last mile is nearly totally populated by boring minutia. It’s also got those really hard, annoying problems you managed to avoid solving. It’s all polish and review and stupid bugs you thought you fixed, and it takes an impossibly long time. It’s full of people not liking your baby, complaining about things outside of your control, and using your stuff wrong.

So, finishing means being devoted, empathetic, and humble. It’s done by understanding the flaws in your own work and splitting that work away from your ego, and just gritting your teeth and doing every little thing that needs to be done. It will never really be done–nothing ever really is, but at some point you will find it receives more use than abuse. More compliments than complaints. While we’re here, be careful about glowing comments from loved ones. You pretty much have to entirely discount their happy opinions on this. Only angry internet strangers’ approval matters, because theirs is the hardest to win. They are the people you want to pay you some day.

Some day, after you start, and continue, and finish, and build a track record, and (maybe) take money, and build something people want. Then, you can hire people who are really experts, and build what you want to build, and build it right.

So, why is starting hard?

It isn’t. People only think it is.

People see all the stuff above, and get caught up worrying about where or whether they’ll fail. Sometimes they wisely discover that there are other paths, or that they care more about building things properly than choosing what to build (maybe they’ll become an expert). Maybe they simply value the rest of life more. Some people spend years or decades planning to start, and just never really do it, or they never start what they think they wanted to.

But it is actually easy to start. You just start.