The reasonable man adapts himself to the world: the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man.
— George Bernard Shaw
We are not the fastest animals on the earth, nor are we strongest, the biggest, the hardiest or even the prettiest. But we are the most adaptible. You might argue that we're the smartest, but I think that smartness is only useful evolutionarily because of how quickly it let us adapt. Rather than wait for the slow cycles of our genetic adaptation, our intelligence acts as its own evolutionary engine, which can out-adapt nearly everything else.
You can find humans in just about every environmental niche across the planet. We live in heat and cold, on mountains, underground, under water, and in the air. Sure, you might find tardigrades in space, but you'll find us in space too, and we're the only ones playing guitar up there. It would seem we can put up with just about anything – but should we?
Often, getting something done requires just putting your head down and working, and not worrying too much about the bigger picture. You might experience inconveniences or other problems that slow you down, but rather than going meta and trying to fix them, it's sometimes more productive to just endure them and do the best you can. Otherwise you'll spend so much time fixing the meta-problems that you never get to the problem you set out to solve.
However, if you get too used to that attitude, how will you recognise when you need to stop enduring and fix your situation? Our ability to adapt is not the same thing as an obligation to adapt, and sometimes the most important thing we can do is recognise that it's not ourselves that need to change, but the things around us. Finding a way to just make it work can be beneficial, but it's dangerous to make it a habit. The problem isn't that you'll be unable to stand up when the time comes, but that the time will come and go without you even noticing.
You can't fight every battle, but you can fight some. I think it's important to figure out which battles are yours. What is important enough to you that you won't let it be bad just so that something else can be good? What won't you endure?
Last week I made 3 prototypes, and this week I also made 3.
I had an amusing thought while I was looking at one of my Github projects: web startups often have big obnoxious name-drop banners that list all the companies using their software. Why can't I do the same for my projects? So I thought it'd be funny to make a tool to automatically generate such a banner by pulling down the list of people who starred your post and cross-referencing it with the logos of the places they work. So this was the first part, grabbing the list of starring companies. I used plain ES6 now that NodeJS has nearly full support, and it was much nicer than having to use the whole Babel transpiler toolchain.
I took a quick break to work on a Go tool to deal with the issues I had with GOPATH last week. I realised that if the compiler "needs" your project to be in GOPATH to satisfy whatever rubber stamp idiocy it has internally, I could just make a a tool to generate a fake GOPATH and symlink the project in there (I called it golinkyourself). Predictably, that didn't work because of issues with symlinks and paths and the Go tool, but I eventually made a variant (called goly) that symlinked the vendor directory instead, which seems to work well enough. I of course wrote these tools in Go, which continues to be very enjoyable to write despite its incomprehensible tooling decisions.
Back to my Github starring adventure. I wanted to get the logo images of the most popular organisations on Github, on the assumption that they would correlate well to companies trendy enough to feature in a name-drop banner. Github's API doesn't really support this, but there is another site called Github ranking that collects this information from Github. So I re-collected it from them; it's the circle of life! I wrote this in Go using a jQuery-like HTML parser called GoQuery, which was quite nice to use.
I've been thinking recently about how to avoid getting burned out with the things I'm doing. I think there is something about the combination of a daily habit of writing and of prototyping that interacts badly, specifically that because both habits are (by design) inflexible, they draw from the same resources and fail in the same ways. But more generally, I think there is a problem with obligations tending to stack up and leave you with no unobligated time.
It's a very dangerous situation to be constantly behind, which is something I came to realise recently. Beyond just its implications for spoiling the value of failure as a signal and its tendency to lead to "what the hell"-style giving up, you also build the wrong kind of habits. You need a different kind of engine to keep going vs getting off the ground in the first place, and being behind tends to stress that short-term system.
But maybe the biggest danger is that I think you need time and space to come up with ideas, to feel spontaneous and creative. It's important to cultivate that sense of freedom and instability to allow you to remain creative, and that can't happen if you're always under the gun. And yet stability and structure are important too, and with those inevitably comes pressure. How do you strike the balance?
I don't know yet, but I can tell when I'm getting it wrong, so I guess the best thing to do is just try things and see how they work. So I'm starting with an idea I call Done O'Clock. Done O'Clock is when all your obligations are fulfilled for the day. It's when, if you feel like it, you can just go to sleep or watch TV or stare at the sky for as long as you want without affecting your plans in any way. Done O'Clock is when you make the transition from high to low pressure, from work to play, and from creation to creativity.
Historically, I don't think I've believed in Done O'Clock that much. I would tend to leave things like writing or prototyping until late in the evning, something I actually flagged earlier but never really dealt with. I would schedule stuff right up to bedtime, on the assumption that one time was as good as another. But the problem with not having a Done O'Clock is that you can never really relax because you know there's still something else to do. Your leisure time is an illusion because you've still got an eye on the clock.
So I'm endeavouring to treat each day as a race to Done O'Clock. It might be early in the day if I don't have a lot on, it might be late, but there will always be a point where I'm finished. That's not to say I won't have fun before Done O'Clock, or won't work afterwards, but when Done O'Clock passes I'll know I've completed what I set out to do.