The Joy of Hardware

Last year Jfokus ran an embedded systems track alongside the main conference, and this was met with considerable enthusiasm. It was a friendly refuge from corporate keynotes and enterprise bloatware seminars, a place where you could escape the buzzwords and marketing people. I discovered that the Raspberry Pi was an actual thing that existed and could be ordered from the internet, and within 60 minutes I had done just that.

Apart from putting together the odd PC back in the late 90’s, I’m generally clueless about hardware. I don’t know what the state of the art for RAM or CPUs are nowadays; in fact I don’t even know how many cores the MacBook I’m typing this on is running. Hardware is a nuisance; the problems that interest me all lie deep into software country.

However, the Raspberry Pi has awakened my curiosity for circuit boards, ports and capacitors. I want to learn about microcontrollers, I want to find out how GPIO works. God help me, I want to solder.

Karin from r-pi.se had a table at the conference, and seemed to be doing a brisk trade. This photo was taken during a lull in traffic, but usually it was so crowded you couldn’t even see the table.

I couldn’t resist getting a PiFace board; I’ve been wanting to add a display to my pi as I tend to run it headless and it would be nice to have some way of displaying status information. And adding a wi-fi dongle seemed like a good idea for a machine like this.

Admittedly, these are toys. Pure indulgence, a guilty pleasure, as I still don’t know what I will do with the Pi. It will be interesting finding out, though.

Emacs Protip: Org-mode

Man, where do I start? org-mode is Emacs’ Killer Application. It started out as an very capable outlining tool, but has grown and mutated and now people use it for time management, blogging, presentations, spreadsheets, GTD, you name it. Org-mode is the reason I returned to Emacs after several years as an Eclipse refugee. I needed a system for handling my ToDos, and after hearing good things about org-mode I installed Emacs again and gave it a go. And here I am several years later and I pretty much live and breathe Emacs now.

In other words: if you haven’t tried org-mode, you’re probably missing out. Here, have a look at this screencast. It’s short and sweet and you know you want to.

Emacs Protip: Ido-mode

If you are using emacs for anything more involved than editing config files every now and then you owe it to yourself try out a productivity enhancer like ido-mode. It lives in the minibuffer and provides way better completion for file names, emacs commands, buffers, you name it. Seriously, check it out if you haven’t already.

In all fairness, I should probably point out icicles as well as it seems to provide much of the same functionality as ido-mode. But since I’ve never used it I can’t really comment on it.

My Best Friend

My best friend was a sometimes melancholy brown cat called Yojimbo. That wasn’t his actual name, but it was the one that stuck in my head as we pulled into the driveway to collect him. He was twelve weeks old.

We took him to the summer house. This was the first time in his life he had been outdoors. He sat petrified beside me on the porch for fifteen minutes before demanding to be let in again.

Yojimbo

When my best friend was six months old he decided to leap out into a stairwell, plunging two floors and landing on concrete. I will never forget that moment. We took him to the vet, worried about concussion or internal bleeding. She said he had bruised a toe, but that was about it.

My best friend caught a cold, which developed into a nasty cough. It never seemed to get better. Turned out it was asthma. Turned out it was treatable. Two times a day we helped him breathe into a special inhaler. If we were late, or forgot, he would gently remind us.

My best friend had faults. He was a coward, but despised weakness in others. He could be downright mean to other animals. He methodically destroyed our sofa. But we loved him, and he loved us.

He was in an accident and crushed his paw. A very talented surgeon put everything back in place. He wore a cast for two months. Every ten days we would get in the car and drove for 90 minutes to get his foot X-rayed and the cast changed. We went to physiotherapy and did exercises. He didn’t understand, but accepted it. He was three years old.

We moved to another town. Our new place had a garden. My best friend would spend hours lying in wait under the big fir in the back. Once he was chased by a Rottweiler, and was gone for four hours. I wondered if he would find his way back home.

My best friend had an enemy. A large red cat that lived three houses away. They had a huge fight in our garden shed, and then a fragile truce.

Our oldest cat got very ill. One day we had to take her to the vet and she didn’t come back with us. My best friend was upset, and searched for her everywhere. We cried often that summer.

I would go away on business trips. When I packed my bags he ran away and hid. He hated goodbyes. When I got back I was ignored at first, then quickly forgiven.

My best friend got constipated. We tried laxatives and massage. He wouldn’t eat. He grew weak. Again we took him to the vet. Turned out it was a tumour. Turned out this time there was nothing we could do for him. My best friend died on the operating table. It was a very bleak february. He was just about to turn six.

Inbox

It’s funny how things change. I used to hang out on a lot of mailing lists back in the day, some pretty high-volume ones. Two that come to mind were the Belle and Sebastian fan list and an extremely casual chat list for bored young IT professionals. I had my email client of choice (mutt) fired up and checked it obsessively throughout the day.

I could get hundreds of emails in one day, most of the fairly uninteresting. But I read them all none the less. In a way, this was social networking before orkut, friendster and facebook.

A couple of years ago things started to shift. I noticed this at first when going through the inbox of my new email client of choice (gmail). Most of my traffic were just notifications about interactions happening elsewhere. Someone wants to friend you och Facebook. You’ve got a PM on Twitter. Someone endorsed your XML skills on LinkedIn.

(Side note: I never use LinkedIn. The only time I go there is to dutifully accept someone’s network request, and this happens once every six months or so. I suspect I’m not the only one doing this. LinkedIn is where social interaction goes to die.)

Anyway, I realized that my email inbox was slowly being turned into a dumping ground for online services while at the same time most of my actual interactions were moving elsewhere. I found it easier to just fire off a Facebook or Twitter PM than taking the time to compose an email. Which is kind of ironic considering how a decade earlier email had killed off regular letter writing in much the same fashion.

What came next was that I started dreading getting email. I still haven’t figured out the the reason behind this. All I know is that opening my inbox filled me with anxiety. The emails I got were mostly spam for products I didn’t want or sad status notifications from services I no longer used. And there were all the mass mailings about Good Causes (WSPA, Avaaz, Sea Shepherds); well-intended but very depressing. What few actual human interactions I still had got buried in this crap. And it made me shy away from the medium that I used to love and spend every waking moment on.

When Google rolled out their recent gmail changes that split your inbox into separate buckets for the important stuff (Primary) and the rest (Social, Promotions, Forums, etc.) and then applied their strange cloud powers to create an automatic categorization scheme that actually worked, I was delighted. It sounded perfect. It felt as if they built this feature just for me. The wheat got separated from the chaff and it all worked! Well, most of the time anyway.

It’s not enough, though. As long as the other buckets fill up with messages I’ll still feel anxious that I’m missing something. There’s a compulsion to read them all, even though I know I don’t have the motivation or capacity to act on them in any meaningful way. I’m still unhappy and stressed out.

I’ve started a new email regimen:

  1. Unsubscribe mercilessly. Unsubscribe from the product updates, the marketing emails, the service notifications. You don’t need them. Unsubscribe from mailing lists you haven’t read in a while; you can always resubscribe later. Unsubscribe from charity mass mailings; if you really want to contribute there are better ways than sitting at your computer, feeling impotent.

  2. Filter what you cannot unsubscribe. Create rules that automatically mark stuff as read, or send it directly to trash. Train your spamfilter like a rabid pitbull.

  3. Delete what you cannot filter. Seriously. You ain’t gonna need it.

Emacs Protip: Sexp Commands

After having internalized the other-window commands, I’m now focusing on commands working with balanced expressions (or s-expressions). Depending on the current buffer mode, this can be a word, a string literal, an XML tag or a LISP expression. The ones I’ve found most useful are:

forward-sexp (C-M-f)

### backward-sexp (C-M-b)

Move forward or backward over a balanced expression. Feels way more intuitive than forward-word/backward-word when navigating code.

kill-sexp (C-M-k)

Kill the balanced expression in front of the cursor (i.e. the one you would jump over with forward-sexp. I find this a lot more efficient than repeating kill-word over and over.

transpose-sexps (C-M-t)

I admit I haven’t used this a lot. It’s like transpose-chars, but works on balanced expressions.

GOTY

I finished Fire Emblem: Awakening yesterday, and let me tell you: that is one fine game. My first impulse was starting over and playing it again, only with a strict ‘no reset’ policy (I admit I cheated a bit here and there the first time around). There’s also a comprehensive selection of DLC and post-game content that will keep me occupied for quite a while.

I love this series, and played the hell out of both [Fire Emblem][emblem] and [The Sacred Stones][stones] back in the day on my GameBoy Micro. These games are perfectly polished little pearls. The animations are silky smooth, the story and characterization is surprisingly deep, and the combat system is as engaging as it is unforgiving.

Compared to the older games in the series I felt that the story of Awakening was a little meh. Not bad, just a bit too generic fantasy for my taste. As soon as you heard Grima, the Fell Dragon mentioned in the beginning you pretty much knew where the story was headed. Granted, there is some very interesting stuff happening before that, but overall I wasn’t too impressed.

However, gameplay-wise the polish has been taken to a new level. Characters will help each others out in combat as long as they stand next to each other, so you have to consider who to put where. You can also let two characters pair up on the same square, which makes them stronger and also provides shelter for weak units like healers and fliers when there are bowmen about. Another big thing is the abundance of disposable enemies that start popping up a bit into the game. This makes levelling up weak characters a lot more doable than in earlier games, and you don’t have to worry about ‘wasting’ XP on characters with a low payoff (i.e. Marcus in Fire Emblem).

This was a lot of fun. We’ll se what happens when I get my hands on Etrian Odyssey 4, but right now Fire Emblem is Game of the Year for me.

Afternoon Walk

One of the nice things about working from home and living out in the sticks is that when you’re done for the day you take a walk around the fields and meadows and take pictures like this.

Books of Yore

I’m cleaning out a lot of old rubbish from my office; I need the space. These books are all going to the recycling plant unless I find someone interested in them (I probably won’t).

The idea of IT literature as massive paper volumes feel a bit dated now. A book like ‘Pro Spring’ will be antiquated in two years tops, and I can find out anything I ever wanted to know about Perl or XML by just going online.

I’m keeping the classics (SICP, The C Programming Language) and the ones I find myself going back to (Programming Pearls, Beautiful Code), but this lot is going. Whatever books I buy in the future will most likely be ebooks, unless I really, really want something to display on the shelf.