The Engineering.

Look. We don’t have a promotional video. We don’t work in a beautiful, well-furnished office in a highly hyped location. The last time we needed company t-shirts we just hand-printed some. Some of us work on equipment considered ancient, using operating systems way past the end-of-support date. Our JTAG adapters can easily get confused with scrap electronics. Our keyboards get so filthy it’s forbidden to show photographs of them to minors in 17 states. But ask us about the product – and we’ll show you something that fucking works.

We are not cheerful, glittery and fake. We don’t give false promises. We are not your typical Kickstarter kids.

And we don’t care. We are not a marketing department; we are engineering. There’s no time for all this nonsense. We’ve got a product to build.

Burnout, pt. 2

I just came back from a week-long traditional music/dance/art workshop. It was intense; the pace so hectic I barely had time for anything. As I attended the Basic Violin class I learned enough to play several traditional songs and figure out new ones. Apart from being an almost impossibly positive experience the workshops provided a constant flow of attempt-success cycles, reducing the burnout damage I mentioned just two weeks ago.

It’s not completely gone. Coming back to my fantastic startup office I still face some degree of paralysis, but mostly it has receded. I’m going to keep reinforcing that loop, throwing task after task after task at myself – and as hell make sure the tasks are easy enough to be able to succeed with ease. Started with porting today – the new hardware revision conveniently called HW REV 1.3 just arrived and I’m applying required software changes to make it even boot.

Might as well make a schedule out of it. Three easy things, one hard. At the end of day, shuffle the list to prevent stuck tasks from stretching to days then weeks. And if it doesn’t work – toss it.


I used to be deadly afraid of burnout. Not just afraid – I was ashamed of it, as if feeling burnt out was a sure sign of some personal defect, the ultimate proof of failure.

As usual, things are not that simple. Since then I’ve learned about the reward signals and prediction errors, and it became clear to me what burnout really is: a clear signal that I’m doing something incorrectly and it’s not giving the expected result. Actually, this is the very definition of prediction error (maybe more appropriately called prediction delta): the difference between the expectations and the outcome. Positive error (unexpected success) is pleasant; negative error (unexpected failure) is anything but. These signals play crucial role in brain’s ability to learn. If you’re an engineer, they are the outputs of that +/- adders you put in front of a regulator or an opamp. The prediction error is a signal in the feedback loop, and an important one.

How it used to work: if you spent all day trying to bash a coconut with a wooden stick, it still wouldn’t break. Except that you would give up after a few tries, because the the prediction error accumulates. One large failure – like hurting yourself while trying to open that damn coconut – should be sufficient to deter further attempts – but many smaller failures are just as effective by slowly building up a feeling of failure.

Did that just ring a bell? Well it should, because that’s precisely how burnout feels. It’s a feeling that got hold of me and just wouldn’t go away – but it’s a feeling. That’s the crucial difference between one big failure – like blowing up a $1000 piece of equipment – and many small ones, like repeatedly failing to properly patch up bugs lurking in the code or wake up early in the morning. The big failures hit our rational brain; the small ones accumulate in the emotional one.

The outcome? I’m angry, sad, restless – and without a clue how to change this.

Okay, the last sentence wasn’t honestly right. I know how to cure burnout – but I’m so entrenched in it, so hopeless, I don’t quite see the way out even though it’s a big neon sign that’s been glaring inside my head for the last few weeks.


And that’s all there is.

The easiest cure for burnout is vacation. Simply stopping the repeated failed attempts stops the toxic negative feedback loop and allows the brain to return to its equilibrium. It’s not about putting our responsibilities away for a while – it’s about putting our failures away.

That’s the unintuitive key to fighting burnout: the knowledge that it comes from all these unfinished tasks we repeatedly tackle and fail, and with every attempt we try even less.

The SPI driver I wrote has some horrible timing bug that only exhibits itself once in a while. I’ve been trying to fix it for days, but it still eludes me; and with every attempt I grow even more desperate. I wish I could just put it away for a while, but we really need that driver for the next release; as a result, I try to fix it almost every day, and the progress is really slow.

The right course of action, however, isn’t to try harder: it’s to do something different. Our ancestor didn’t have this dilemma with the coconut and the stick: if it didn’t work, he would either try a different way (say, a rock) or just give up. We can’t. We have deadlines, bosses and internalized sense of obligation to do things we don’t have to do. We believe we are stuck; it’s a society thing.

What’s the way out, then?

First: learn to recognize the symptoms early on. In my case, the most obvious symptom is feeling like shit. It’s hard to correlate it with anything – especially since that feeling doesn’t encourage further thinking – but it’s still important to know it and react a-s-a-p.

Second: bail out. If you’ve been trying to fix that damn driver for two weeks and it’s still broken, just stop. Ask someone else to write it from scratch. Copy an example. Ditch the interrupts, use DMA, polling, whatever. Maybe just stash it. Just don’t stay in the hopeless position.

Third: Force yourself to postpone further attempts until a few days have passed. Mark the date in your calendar. You just gained a few days to use in a productive way. Use them to do something else. Use them to succeed. Enjoy!

Fourth: Come back and reevaluate. The hopeless position is no longer hopeless, so look for other choices right now. You’d be amazed by how much the scenery has changed since you left.


Yet another contraption built and then forgotten: the 65noisebox. I should really consider building a case for it some day – It’s way too fragile in the current state.

It’s one of my weak points: my devices are in permanent prototype state. I think I have one (!) self-built device which is more-or less completed, with a plastic case, battery compartment et cetera – the rest is just a pile of PCBs in a shoebox. They really deserve a better life.


Note: this post was written more than a week ago and forgotten somewhere deep inside the drafts folder. I edited it before publishing, removing all the embarrassing details and leaving just the conclusion.

I noticed a pattern a few days ago and now I can’t unsee it, so I’m going to share it with you. The thing is about job quality. The first job in my career was like this (back in 2007):

Position: one of the project fathers: admin, coder, hardware guy. You’re a one-man orchestra when you’re a founding father.

Employment: part-time (¼), mostly remote (but with epic meetings from time to time).

Mode: Hardcore startup – we actually did build our first server in the garage (I have photos if you don’t believe me).

People: Great people, lots of freedom, tons of experience.

Freedom: Choose whatever you think will work best.

Trust: It was fundamental to trust each other. We did review each other’s work if it was essential from security point of view.

Extras: The only job I ever had that paid for business travels – I even visited Amsterdam once and the company rented a vehicle for me – it was a bicycle, of course, but bike is The Way to move around in Amsterdam.

Fame: It was 5 years ago and people still recognize me as that Kosma from that project.

And there’s the last one (don’t cross-reference with LinkedIn or you’ll come to completely wrong conclusions):

Position: backend coder/architect.

Employment: full-time, office.

Mode: Young company, yet with surprisingly strict approach to processes and procedures. Worked on one of many projects.

Freedom: Barely any. Consensus-based EVERYTHING. Mandatory code review procedures, annoying git branching model, work time tracking, no root access for developers.

Trust: each change was reviewed by three people. We had to send daily reports (scrum, anyone?).

People: I didn’t bond with the team at all. They spent 8 hours a day staring at their screen, saying nothing.

Extras: quarterly bonuses.

Fame: Signed an NDA so I can’t tell you anything about that project. I think I’m allowed to mention the name.


This change didn’t happen from job to job; it was a gradual process of losing control, losing trust, becoming a sweatshop worker and earning more and more money I didn’t really wanted to spend because I was so tired, bored, almost depressed.

To make things clear: this is not the employers’ fault; the mistake is mine. Somewhere along the way I forgot what my priorities are. Chasing the stupid dream of earning more and more money, I betrayed my hacker ideals and sold myself – losing the integrity and becoming a whore.

Where do I go from here? The answer is simple: back. Not to the same employers, obviously – you can’t step back into the same river – but to the same kind of job: a place where your talent is put to the test via technological challenges, not via pleasing the management and passing Git hooks.

Working on a little hardware project I’ve been postponing for the last few years: a next-generation darkroom meter/analyzer. First it was meant to be a hobby thing, then I wanted to monetize it, then it almost became my thesis project, then it was scraped. And then I got back to doing darkroom work and realized I just need a device like this to make prints quickly.