Hacker News new | past | comments | ask | show | jobs | submit login
Crash-Only Software (wikipedia.org)
10 points by jstanley 7 months ago | hide | past | favorite | 4 comments

In my mid 20s I was in a serious bike accident. My shoulder was fractured and suffered repeat dislocations. One of my fingers was broken. I couldn’t work in my normal flow at a keyboard. And I was a flat broke contractor so I couldn’t afford assistive technology or downtime.

I had looked into “half keyboards” that mirror the other half of a (usually QWERTY) keyboard while holding down the space bar. But they were far out of my budget. So I mustered my strength and hobbled a software version good enough to barely work.

This was my first time building anything native for any platform (Mac in this case) and my first time writing anything that needed to account for allocating memory. It was small but riddled with bugs, and would crash with reckless abandon.

Normally I’d debug and fix it, but with it crashing I could barely code anything at all! So I just waited for it to crash and relaunched it. And then I automated that. It got me through a monthslong recovery and kept me housed and fed.

I considered open sourcing it and developing it to maturity, but there are patents involved. I didn’t want to risk it. But completely unrelated to the software itself the one lesson I learned (which sort of reflects the linked wiki page, especially mention of erlang) is that the crash-relaunch behavior was safe because my program was almost totally stateless. It was basically transparent enough for my usage that it didn’t matter whether it crashed or not (other than occasional latency).

My plan has always been to use Dvorak left or right in the case of an injury.

At one point I wondered if it would be worthwhile to learn for playing video games but never bothered.

For what it’s worth I don’t think the keyboard layout matters for this purpose. The symmetry helps as long as you already touch type. I was surprised how quickly and easily I adapted, there was a maybe 10% (rough guess) inefficiency. My hand “knew” asdf=jkl; and so on, and the spacebar was easy to adapt to as a context.

Are there some resources for exploring this topic further on the JVM? (In particular without having access to Erlang’s supervisor trees)

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact