Andrew Jesaitis ::

the attic of my mind

Ironing out the Kinks: Dropbox and Linux

I noticed one day that my Dropbox folder was syncing on my MacBook, but not on my Linux box. A little digging and I figured out that the Dropbox daemon doesn’t like to be started before you are assigned an IP address on the network.

So the one-off solution is to simply restart Dropbox. This is pretty worthless though as syncing is no longer automatic, negating the whole point of having Dropbox.

So the better solution is to simply ensure that Dropbox is started after your network daemon. In my case, this just meant removing the “@” preface in my daemon array in my rc.conf.

Before:

DAEMONS=(syslog-ng @network @dbus @crond @alsa @mpd @sensors)

After:

DAEMONS=(syslog-ng network @dbus @crond @alsa @mpd @sensors)

But, this still isn’t great because now your boot hangs, while DHCP assigns you an IP address. The solution is to use a static IP address. Since this is my desktop computer, I’m always connecting to the same network so this is easy.

If you’re on a laptop, I’d stick with just un-backgrounding your network daemon. Plus, you are probably using networkmanager for Wifi, so the configuration is going to differ. There should be a way to add something like

sleep 10s &&

to the autostart.sh script calling the Dropbox daemon, but I can’t find it in Gnome 3. In Openbox it should be in

~/.config/openbox/

This would be the best way to go about it on a Laptop.

So I reserved a couple IP addresses on my router and to my rc.conf file I added this to the networking portion:

interface=eth0
address=192.168.0.101
netmask=255.255.255.0
gateway=192.168.0.1

I now can put the network daemon back into the background on boot (though this doesn’t speed things up much with a static IP). And voila, fast boot and Dropbox is working from the get go.

Hopefully, this will save you 5 minutes of tinkering. Note: The configuration is specific to Arch Linux (or distros with BSD style init scripts).

Trailer Season

It’s not ski season, but this might be just enough to tide you over until the fall.

I’m bummed that Dendrite won’t be releasing another film this year, since Out of the Shadows was by far my favorite of 2010. But, it sounds like the sponsorship dollars just aren’t there. Too bad…

TGR: One for the road

MSP: Attack of La Nina

Level 1: After Dark

Weighing luck

I read an interesting article in the Washington Post this weekend by Barry Rithholz who runs the exceptional blog, The Big Picture.

“I am struck by how many very wealthy people I know — especially tech entrepreneurs – have expressed being grateful for their good luck. Again and again, I have heard the phrase: ‘Being smart is good, but being lucky is better.’” -Barry Rithholz

It reminded me of what underpins my entire world view.

More outcomes in our life than we would prefer to believe depend on luck. And while skill is obviously an essential ingredient in success, it can never flourish without luck. But, luck cuts both ways. For every entrepreneurial superstar, there is the kid who got dealt shitty genes and is diagnosed with cancer.

Doesn’t it make sense to use some of that good luck to help mitigate the effects of bad luck?

I refuse to believe that somehow bumping taxes from 35% to 40% is really going to keep that inventor on his couch. But, I can guarantee that increasing government funding for science and allowing for universal access to heath care will change lives. And it might just reverse the fortune of that unlucky kid.

Learning Colemak

This is either going to be one massive waste of time and productivity or one of the best investments in time I’ve ever made. I’m not a horrible typist be any means. I can touch type at 50 WPM with about 95% accuracy. But, when I type at my maximum speed it feels really frantic and my arms and hands tire quickly.

Enter Colemak.

Colemak is a new keyboard layout designed in 2006. Like Dvorak, your fingers stay in the home row for a much greater percentage of time. Unlike Dvorak, Colemak doesn’t move as many keys around. As a result, it is faster to learn and preserves all your favorite Ctrl + shortcuts. My goal is 70wpm with 97% accuracy.

Day 1
This is hard. It was amazingly easy to set up though…

$sudo setxkbmap us -variant colemak

That one line is sending my mind into spasms. I have these terrible mental freezes, where I kind of know what finger to use, but can’t make it do anything. Speed is now at 6 wpm. Oh and work has basically come to a standstill. Definitely not logging in Pidgin and facing the threat of an incoming IM for at least a few weeks. Really proud of myself for typing this paragraph though.

Day 2
Still seemingly impossible. Really wish there was autocomplete on the desktop. I have a huge amount of motivation so my computer becomes usable again.

Day 3
Not hating my computer quite as much today. I finished the alphanumeric characters today, but am probably only 60% accurate. The lack of accuracy is actually more annoying than the lack of speed.

Day 4
I am quickly learning how much the computer sucks if you can’t type. It really helps me understand why accessibility is such an important issue. I catch myself asking, “Where’s my key?” That thought gets old quick.

Day 5
Okay it’s starting to get really annoying. The ‘s’ and ‘y’ keys will be the end of me. Another unforeseen productivity drag is that I no longer have any excess brainpower while typing–making composing original material VERY slow.

Day 6
Finally finished the pedantic, basic exercises in Klavaro. Boring doesn’t begin to describe them–especially the later ones that are just strings of symbols. But being able to touch-type every character would be great for programming.

Day 7
I’m finally starting to feel some fluidity again, but am still too slow for me too feel like learning this was a good idea. But I’m basically committed now since my QWERTY speed has plummeted to about the same speed as my Colemak speed.

Also, I finally got my Linux box to maintain the Colemak layout between boots!

First, you need to set your keymap in your rc.conf:

KEYMAP="colemak/en-latin9"

This gives you the Colemak layout at console prompts and in your desktop manager.

Then just set your keymap in your window manager (In Gnome 3 it’s System Settings->Region and Language->Layout and pick English (Colemark)). Don’t bother trying to set it though your xorg.conf, as you’ll run into issues with hotplugging among other things.

Day 8
Today was hard. I had alot of work and it’s still hard to compose while typing. It really feels like a 2 paragraph email is some kind of torture test.

Day 9
Speed is starting to pick up. I’ve noticed that I’m about 5 WPM faster on tests made up of random words than real sentences.

Day 12
Uggh. Don’t know why 30 WPM seems like such a brick wall. But looking at my error patterns, I think I’m going to have a big break soon. I’ve noticed that a lot of my errors come in strings of 3-5 letters. I think that somewhere around 30 WPM you start typing words instead of letters. That is you fire off a burst of typing and if you skip a letter or insert a space you miss all the letters of that burst.

I’ve learned a few things that should be incorporated into all typing software:

  1. Don’t teach numbers or symbols until you can type at your target speed on only letters–otherwise you are encouraging peeking and destroying the flow
  2. Count hitting the wrong shift key as an error
  3. Analyze what letters are frequently missed and drill those
  4. Drill common idoms and words to increase burst speed and accuracy
  5. Look at inserted/skipped letters and don’t count the string of correct offset letters as an error–this is the way you actually correct and view typos

Day 13
I feel like the faster I try to go the more mistakes I make and the slower my speed. I think it is due to the fact that whenever I mistype something, it breaks my concentration. This momentary lapse is especially bad because you eye is a few characters ahead of your fingers and then it takes a few seconds for everything to reset and develop your rhythm again.

Day 14
All I have to say is that changing passwords with keys mislabeled is a real test of faith in your touch typing skill.

Day 23
I got busy and wasn’t able to do much concerted practice, but I was programming which seemed to account for something. I read recently that unless you are typing at least 60 wpm you are wasting a lot of time at your computer.

Day 37
Not too much to report. I haven’t been practicing as diligently as I should be because I’ve had a couple big projects the last couple weeks. Also, typing at 40 wpm is workable in day to day life. Obviously, it’s not as fast as I’d like, but I no longer feel like Colemak is preventing me from working. In any case, I’m still shooting for 70 wpm.

Day 46
Still stuck in the 40-45 WPM range, but in fairness I cut my left index finger a couple days ago and that is slowing me down. I want to break 50 wpm by the end of July.

Day 51
Broke 45 WPM the other day, but I really need to practice more. I downloaded Amphetype to give me some key specific stats to see where I am weakest. Let’s go 50!

User Experience: The Cardinal Rule

Recently, I installed linux on my main, desktop computer. After it booted back up into Ubuntu 10.10, I was like, “Damn, linux has come a long way in the last 5 years.” It was fast, had a good window manager, most programs I use have a native linux equivalent, and it worked out of the box.*

However, that little asterisk is the rub. My wifi cut out after 15 minutes, dual monitor support wasn’t great, DRM keeps me from streaming Netflix and playing movies I bought on iTunes. To cap it off, I had to spend close to a full day configuring programs and settings at the command line. But, for me it was actually a step up in user experience. I can quickly set up sandboxed development environments, look for problems more quickly because all my settings are in flat text files, have a full range of open source tools that can be tailored to my specific needs, and it NEVER crashes.

I realize though that most people can’t and, more importantly, don’t want to deal with these issues. They just want their computer to work. And this is why I am such a proponent of Apple. In fact, I think the user interface is so good on Macs, that I themed my Linux desktop to act like one. But, Apple takes an approach that is antithetical to the way Linux is developed.

Apple keeps the Mac universe under lock and key for a reason. By controlling the production of a computer for start to finish, they can preserve the user experience. Why do mac’s have fewer hardware compatibility problems? Because their engineers only have to worry about a few hardware combos. Why is iTunes such a seamless experience? Because they can simplify operations by designing for a small iUniverse of devices. They can guarantee that you have a machine that feels solid in front of you because there isn’t another manufacturer who is going to cheap-out on a plastic case and cruddy display. In essence they have traded flexibility for quality. For 99% of users this is a good choice.

What I see often happening (especially in the hardcore computer science world, but it is creeping into the web as it matures) is that software is clearly designed by an engineer. Engineers by their very nature are feature-hungry. They want to design software that is the epitome of flexibility. Their software is probably wickedly powerful, but makes absolutely no sense in terms of operation.

This practice was painfully obvious at my previous job where all our bank operations software was designed in house. I knew a couple of the programmers in software development and they were insanely smart. If you wanted to do some really esoteric transaction you could do it, but you probably had to click through a 15 pages of dialogs with 30 settings each (I’m not exaggerating). It had a tremendously steep learning curve that bred ineffiecency and mistakes.

Those engineers had forgotten the cardinal rule–the rule that I think makes Apple so great.

More important than the functionally of the software or device, is the ease of use by the end user. If you forget this concept you are bound to upset the very person you are trying to help. Not only did you just lose a customer, but you just defeated the very purpose of your software: to help someone.