Transactions as a service

Database transactions are pretty awesome.  They’re useful in all sorts of scenarios, from concurrency to exception handling.  Software-Transactional-Memory is similarly awesome — transactions for memory.

I want transactions for everything.

Imagine doing this in the shell:

$ begin transaction
$ echo "volatile value" > some_file.txt
$ git add . && git commit -m "volatile commit"
$ git push heroku master
$ end transaction

There are all sorts of reasons this  won’t work.  Imagine all the possible scenarios you’d need in order to make this happen — what happens if I “`curl -X POST “`?  Can I undo a POST?

Yeah it would be really hard.   But it wold *rock*.

I learned Java without a computer


I can recall being with my family in southern ohio on a pontoon boat, on a lake in the woods.  There was a strict “no technology” policy enforced ruthlessly by my parents.  Of course I hated it, and the next best thing I was allowed to do was bring my programming books with me.

“Teach yourself java in 21 days” was an incredibly well-written book.  I read this book so much and so often that the flimsy paper cover lost its plastic and ended its life with a barely recognizable cover in the ACM office at UIUC.  I believe it’s still there.

But what’s remarkable to me is that I didn’t have a computer when I learned the guts of my java knowledge.  This was probably 8th or 9th grade.  I’d played with VB for a year or two, and before that made my own little html/css/javascript web pages on angel fire in middle school.  It’s fascinating to me to look back and see how my programming skills and knowledge accumulated.  It was, almost 100%, for fun.  All of it.  I’ve had several discussions about “why” people want to code.  And holy hell, are people different.  Some people want jobs.  Some people chose CS when they got to college because it looked neat.  Some people learned from classes, others from digging into open source projects.  Some people attended lectures, others read books.  Some people loved the idea of building something functional out of nothing.  Others just want to make some money.  Some want to be famous hackers, others are content bit twiddling in their basements.

I remember fuzzy things about my Java learning experience.  I first read an antiquated Java 1.1 book that probably cost $3 on the bargain shelf at border’s, and then finally acquired the 21-days java 2 book.  I remember the first time I understood what GridBagLayout meant, and I absolutely remember the first time the “interface” idea caught on, with respect to java’s class ideology.  Class inheritance?  Lightbulb moment.  How event handlers worked?  Done.

All of these lightbulb moments occurred many miles away from the nearest computer. That fact hasn’t detracted from my ability to acquire new programming skills and understand different ways of thinking about code.  I’m certainly not saying it’s helped, but I suspect it has.

It’s been so long since I “learned” how to program that these memories are starting to surface.


Emotions feel physical. They feel like concrete, intrinsic things of their own accord. “Feeling” is something every human being on the planet can relate to.

Take catharsis, for example. It is a very real phenomenon. Crying literally seems to “release” emotions. Sadness, stress, and the like are literally made up, on the inside, of hormones in our bodies. What causes them? Our consciousness causes them.

When you get angry, it’s because of your mind. You have comprehended something that has triggered in your mind a feeling of anger, which underneath is just a combination of chemicals coursing through your blood.

Emotions are quite literally the link between consciousness and the physical underpinnings by which such consciousness arises.