Last time I made 3 prototypes as part of a single project. This time was a bit more modest, just a simple experiment with some new tech, but I was pretty happy with it. I've missed having regular prototypes as a way to keep trying out new things, but I'm hoping to ramp them back up soon as things stabilise with my writing.
I've wanted to try out AWS Lambda for a while, since it seems like an interesting way of shrinking the smallest unit of code. I thought I'd take my Floyd-Steinberg prototype and make it run as a Lambda function that dithers any image you upload to a particular S3 bucket. Rust was pretty neat for that, because it just spits out a static binary so I didn't have to worry about dependencies. I did have to wrap it in a little node script to handle the AWS side of things though, which seemed like a bit of a waste.
Unfortunately, as with many things AWS, the core offering is pretty cool but everything around it was really hard work. I wanted anyone to be able to upload, but you can't do that and limit the file size, so I would have been on the hook for someone uploading their favourite Linux distribution images or whatever. I also had some difficulty with my version of libc being different than the one on the Lambda machines, but in the end the right answer was to just spin up a micro with the right AMI and compile it there, and everything was fine after that.
All said and done, though, I think it turned out well. Lambda seems like an interesting technology and the pricing is ridiculously good. I'm curious to try out the API Gateway/serverless stack at some point, which seems much more complicated but also more polished.
I had a fun idea for a business today: what if you offered free graffiti removal paid for by advertising?
I'm sure it's pretty annoying having to pay to get your wall cleaned whenever it gets tagged. For a large company, that might not be a huge expense, but what about for a person, or even a small business without a lot of spare cash? If your wall has graffiti on it anyway why not let us cover it up with a poster?
You'd leave the poster up for some fixed campaign length, and at the end of the run take down the poster and clean the wall it was on. The wall owner gets their nice clean wall back, and the cleaning business makes money from the advertising. Everyone wins!
The only problem would be that an unscrupulous company could deliberately graffiti attractive advertising spaces, but I think it'd be pretty easy to get caught if you were doing that, especially because most of the ideal places are pretty high-traffic. That possiblility aside, it seems like a surprisingly ethical advertising business.
Sometimes it's easy to think of your path to competence as a struggle, and in fact this is quite a common metaphor. Struggling against nature, struggling against the world, and struggling against yourself. This makes a certain kind of sense, visualising your associative self as an unruly beast that must be tamed by force. But I've been thinking about this struggle in the context of drawing bold lines, and being in the right place at the right time, and I'm starting to believe that it does more harm than good.
When you do something, there's a question of how directly you do it, how many of the actions that you take are moving you towards your goal versus how many are just extraneous, or even moving you away. When you walk, any effort that is not propelling you forward is wasted. When you draw a line, any movement that is not along the line is wasted. But the answer isn't to fight hard against this, to tense up and focus and struggle against every extraneous movement, it's simply to learn not to make those movements in the first place.
Making a decision is one activity that can often elicit unnecessary struggle. It's easy to go back and forward between the different options for ages, agonising over which one is correct. However, it's important not to forget that the decision isn't between the best option and nothing, it's between the best option and the next best option. If that difference isn't very much, then the effort you're making to decide between them should also not be very much. In many cases, struggling with yourself over every difference is wasted effort. If you just decide quickly and arbitrarily, it'll probably be fine, and if not it'll help you to make a better decision next time.
Another kind of struggle is repeatedly second-guessing decisions you've already made. This is basically what I was talking about in points of articulation. The ideal picture is that you decide a course of action, then forget the decision and just work on making it happen. But, much like drawing a straight line, there is sometimes a nearly irresistible urge to meddle with the plan once it's in motion. Sure, if things are going disastrously, maybe it's time to cut your losses and make a new plan, but just struggling with yourself about your decisions long after you've made them is yet more wasted effort.
One last one, the struggle of trying to stick to something you intend to do. It's considered normal to struggle to maintain a habit or a routine, but I don't believe this has to be the case. Often it's a matter of unnecessary tension you're putting into the situation, worrying about the consequences or feeling bad about past mistakes. Another common problem is that the plan doesn't actually make sense; it's made without understanding the mechanics of the situation, expecting some outcome without actually pushing on the right things to make it happen.
Ultimately, the right intuition isn't that you struggle and struggle and eventually subdue yourself, it's that you struggle less as your ability improves and eventually relax into easy competence. Just doing something well is hard enough without having to fight yourself at the same time.
One of my favourite games is Osmos, a sort of abstract biophysics game. You're a tiny blob, and you propel yourself around by expelling your mass in the form of even smaller blobs. A larger blob absorbs a smaller one, so you win by eating larger and larger blobs until you're the biggest blob in town. The reason I like it so much is I think it teaches a really important lesson about parsimony.
When you first start playing the game, you splurt mass all over the place trying to catch smaller blobs, but in the process you use up all your mass and end up tiny and weak. Worse still, the mass you spray around indiscriminately gets absorbed by the other blobs, making them stronger. Eventually, you learn that the best strategy is to make small, efficient movements. A little nudge here, a little nudge there, and wait.
I think this is common of all skills. Watch a child learning to walk, it's like they're in a constant struggle with gravity. An adult, on most nights, doesn't struggle at all. The difference isn't that an adult is stronger, it's that they know exactly how and when to activate the muscles in their legs and arms. The more precisely they do this, the less effort it takes to do it. It doesn't feel like it, but every time we move around we are engaged in a stunning and intricate dance of differential equations and multiple pendulums. All you have to do is move one of those pendulums in a way it doesn't expect and you can watch the whole circus come crashing down.
The key observation here is that, in all of these things, there is a kind of sweet spot, an exact right place at the exact right time. If you act then and there, it costs you nearly nothing. A little push just so, and the whole thing almost moves on its own. But if you act too early, too late, push in the wrong place or in the wrong way, everything gets difficult very quickly. You have to push harder because you're fighting the natural movement of the system, and worse still maybe you added some other extra unwanted movement that you later have to cancel out, leading to even more pushes later on.
I've been thinking about that as part of the question of how things become easy. A lot of it isn't about being able to do things more, but learning how to do them less. The idea that you will eventually develop some kind of monumental inner strength that will let you do twice as much in a given day, or work twice as hard is, I think, misguided. I mean, like with any training, you get stronger, but the strength gains are miniscule compared to the multiplier of doing things more efficiently.
I had an interesting encounter today. I was catching an Uber from my house, for some reason I couldn't find one of my shoes, and by the time I got to the car the driver was upset at being made to wait. I thought that was pretty rude; I mean, it's not like I was keeping him waiting on purpose. And anyway he should be nicer about it since I'm his customer. Guess you earned yourself a bad rating, buddy! Don't be so rude next time!
The whole situation ended up making me think about how quickly power turns into the abuse of power, even in tiny amounts. I mean, let's run through it again. Who was actually in the wrong here? I managed to offload responsibility for my missing shoe onto the universe, but in reality I was the one who lost it, and if I'd left more time to get ready it wouldn't have been an issue. All the driver did was sit outside waiting for someone who wasn't organised, and then told me he wasn't happy at being made to wait so long. But my first instinct was that it was unacceptable for him to be unhappy with me. After all, I'm the customer.
I think there's a real danger in the petty tyranny we foster in consumer culture. In some cultures, it's expected that you treat customers as deferentially as you would royalty, bowing and scraping and so on. In the west it's not so bad, but there's still an idea that a customer has a special status. It seems at some point we started paying people not just to give us goods or perform services, but to pretend we're better than them while they do it. For many people, this idea of consumer superiority is their first taste of a very particular kind of power.
And what do we do with it? Well, in my case, I wanted to use it to punish someone for speaking out of turn to me. Of course, I didn't like that he called me out for being late, but as I sat through the car ride in passive-aggressive reflection I eventually realised that he'd done the right thing. Makes you wonder, though. We all think we'd be benevolent dictators, but what happens when we feel insulted or angry, and somehow manage to convince ourselves that it's someone else's fault?
Much like control over your environment makes flaws in your judgement more dangerous for you, power over others makes flaws in your judgement dangerous for them. A benevolent dictator needs to be not only righteous but rational enough to know the difference between genuine and imagined misconduct. Is anyone strong enough?