Archive for the ‘Geekstuff’ Category

Filed Under (Geekstuff, Stuff, Technology) by Sean on June-14-2009

As many of you may already know, I’m a beneficiary of Ford’s recent aggressive social media public relations efforts. I was initially contacted by a social media consultancy out of Canada, retained by Ford, through my blog early last month. My first reaction was one of disbelief, thinking this had to be some sort of grand social engineering phishing experiment. With mild trepidation, I responded with an indication if interest. My choices were the Ford Escape and the Lincoln MKS. Being a huge fan of SUVs, I opted for the 2009 Lincoln MKS (plus, I get to experience my brother’s Escape Hybrid every time I visit Florida). I was supposed to get the 2010 version of the MKS, which is all-wheel drive and sports a twin-turbocharged 355 horsepower, 350 lb-ft torque V6, but a shortage of media fleet cars made this impossible. My 2009 version sports a 273 horsepower, normally-aspirated V6 instead. In any case, I’ve been promised by Ford that they will get me a 2010 to drive as soon as one is available. They’ve also promised to get me the new 2011 Ford Fiesta to drive as well!

The Lincoln MKS

Many of you who haven’t known me that long may not know I’ve always been a huge car enthusiast (though it has waned a bit over the years and my current Ford Taurus would certainly give you no indication). I started as a young teenager by going out on a Saturday with my father and test driving just about everything we could get our hands on – sports sedans, luxury autos, exotics, the works. As a card carrying member of the SCCA, I used to participate in various auto sporting events as well. Cars I’ve owned over the years have run the gamut: a VW, a BMW, 2 Mercedes, 5 Hondas, a Porsche, and a Ford.

Herein I will outline some initial impressions of the Lincoln MKS after having it for a few days. Over that time, I’ve managed to spend hours navigating big city traffic, taking a road trip and running high speed laps around the Nuremberg town. I’ve also satiated my inner geek (ok, maybe outer geek) by diving into the Microsoft Sync platform equipped in this car. This post will discuss my initial impressions of Sync; future posts will go into driving impressions and other aspects of the MKS.

Before I do that, however, I will sum up my reactions to the car as pros and cons:


  • snappy performance for the size/class of car
  • good balance of ride firmness; corners and tracks well but doesn’t rattle your spine when driving over potholes and railroad tracks
  • good transmission; really responsive at down-shifting quickly. Manual mode available as well. Auto mode good at down-shifting before corners and engine braking when slowing down – something I’ve never seen in an American car. It seems engineers are doing their homework in studying German sports sedans!
  • decent ergonomics; comfortable and usable interior; sporty seats are suitable for long cross-country trips
  • seamless bluetooth integration with your phone and media device (could be the same device or two separate devices)
  • GPS NAV with real-time traffic, weather and other helpful travel information (e.g., gas prices)
  • QUIET. This car is almost devoid of wind noise even at 90+ mph
  • Air. Conditioned. Seats. It’s like lying down on a huge bag of ice. Gone are the sweaty backs Houston summers made famous.
  • SYNC system receives software upgrades and updates through an in-car USB interface where you can download the update on your computer to a USB drive (or your smart phone’s storage) and initiating the upgrade while connected to the car


  • though the car sports very nice interior trim, the excessive amount of “shiny chromeplastic” is a little off-putting. The simulated brushed metal helps to counter that, however.
  • center console cup holders can’t accommodate two grande coffees (seems really bizarre the Germans have this figured out while the guys that invented the cup holders don’t!). See picture below.
  • beltline and cowl are really high; you can’t even comfortably rest your arm on the windowsill it’s so high. Obviously this is styling driven and at least there is a rear camera to assist you while you’re backing up since you can’t see shit out the rear window
  • I can’t use certain features of the NAV while driving (yes I know it’s an insurance thing or whatever, but it’s completely silly and promotes even worse behavior for reasons I’ll give below)
  • NAV system doesn’t have proper ICAO or FAA airport codes to use as destination or waypoint; I tried to use KGLS as the destination but it only knew “Scholes Galveston Airport” or selecting Airport point of interest

Of course, I love gadgets and toys. Consequently, I’m always interested in the latest state of automotive technology. Growing up, I benefited from my father being a huge gadget and car freak as well. I’m pretty sure he got the first car on Earth with built in NAV. I have certainly seen how not to implement car gadgetry. In-car technology has developed much of the way consumer electronics has: no standards, no interoperability, black-box proprietary systems and the like. Computer and technology companies have done most of the heavy lifting in changing the status quo in the consumer electronics industry, e.g., Apple. Now they’re attempting the same in the automotive space. I think that Sync is as close as I’ve seen to how it should be done (on another note, technologies based on other platforms such as Google’s Android could be coming to a car near you soon).

The car was delivered to my office by Becky, a super friendly Communications and Media Fleet Manager from Ford. She handed me the keys and said, “Enjoy! We look forward to reading what you have to say!” The first thing I did after parking it in my office parking garage downtown was pair up my G1 via bluetooth. I figured if I could make hands free phone calls and listen to my media library through the car’s audio system within a couple of minutes without opening a manual, that would be a good sign of things to come. That’s just what happened. I chose Phone from the console, selected the Add Devices button from the bright color touch screen, and a woman with what seemed like a slightly British accent instructed me to enter the PIN displayed on the screen when prompted by my phone when pairing with SYNC. Voila! The screen displayed a message asking me if I wanted my phonebook and call history to be loaded. I selected Yes. Not content to stop there, I then chose the Media button on the console. Within about 3 seconds the audio system started playing the current playlist on my G1. Sweet. While delighting in all this, the phone rang. On the color touch screen, the Caller ID and phone book entry of the caller is displayed along with a choice to answer or deny the call. The weird thing about this was it was my phone’s ring tone playing in stereo on top of the slightly-reduced-in-volume music through the stereo. It was a business call, so I answered and carried on the discussion for a few minutes before deciding I needed to continue this conversation on the way to my desk. I turned the key off, opened the door, and the call seamlessly transferred to my handset without the slightest hiccup. Too cool. In a similar vein, if I’m rocking out to some streaming music through my phone through bluetooth and turn off the car, remove the key and open the door, the phone automatically pauses the media stream. When you get back in the car and start it, the music automatically resumes once the bluetooth connection is reestablished. Similarly, if you’re talking on your handset and get in and start the car, the phone conversation seamlessly transitions to hands-free mid sentence without hesitation. You have the option to choose privacy mode where the phone call continues on your handset. Someone really paid attention to usability when designing this system.

The GPS-based NAV is one of the best I’ve seen. Adding to its touch-screen ease of use is the fact that it gets real time traffic information via Sirius satellite, even if you don’t pay for a Sirius subscription (Ford apparently hadn’t paid for it in this car, which I thought was somewhat puzzling). The first thing you do is choose a destination by pushing the DEST button on the dashboard and selecting the destination through a variety of methods (nearest points of interest, street address, yellow page categories, phone book) or selecting the voice command button on the steering wheel and using voice commands to tell the system where you would like to go (and you don’t even need to train the system for your voice!). You then choose the shortest or fastest route and you’re on your way. The system provides you with turn-by-turn directions along with graphical depictions of each turn on the display. For upcoming turns, the screen is split with a map on the left and the detailed turn depicted on the right (see the photos below for an example). Additionally, it counts down the distance to the next turn or waypoint and displays a progress timer bar to help you determine your arrival to the next instruction. The bottom of the display shows your current location and speed limit, if available. If an accident or other incident happens along your route, a notice is displayed on the screen where you can review details  of it and choose an option to avoid at which point it accordingly reroutes you. One of the exercises I like to do is test out how resilient a NAV system is when you inadvertently (or purposely) miss a turn. Some of them incessantly complain and ask you to make a U-turn to get back on track. The system in the Lincoln, however, doesn’t miss a beat. Virtually the instant after you miss a turn instruction, it recalculates the route such that you can continue your general direction of travel. It’s so seamless that if you blinked you may have missed that anything happened at all. Information available at your fingertips also includes the weather (forecast, satellite images) and gasoline prices at nearby gas stations (see photos below).

There were a few hiccups in the system. Every now and again my phone would become “un-paired” or stop playing audio. Sometimes the device got out of sync where I would be listening to audio on my phone through  wired ear buds, and upon starting the car the phone would pair and stop the stream; I would have to start it up again manually (apparently the command to autoplay/autostop is a change of state and not discreet play/stop commands). It is important to note that you must have an A2DP capable media device in order to stream bluetooth audio through the audio system. If your device isn’t capable, you won’t be able to pair it at all as an audio device (this doesn’t impact the phone pairing, however). I learned this the hard way after I replaced my G1 under warranty that had an older version of the OS before they added AD2P extensions. There is a mini-phono jack if you want to connect an older iPod or mp3 player. My main complaint is that you cannot browse the phonebook while the car is moving over 15 mph or so, which seems silly since that requires you to pick up your phone an lookdown and scroll through its phonebook instead (yes I know you shouldn’t do either). At least you can use voice commands to make calls.

Microsoft SYNC definitely adds huge value to the MKS. Ford and Microsoft mention in some of their public relations material that SYNC is increasingly becoming a major contributing factor in the car purchasing decision process. I don’t quite know how exclusive the arrangement is between Microsoft and Ford, but I could see how SYNC would tip your decision towards a Ford or Lincoln when comparing makes of cars. It will be exciting to see what other manufacturers do in adopting future competing systems as well as what those competing systems will look like. The connected automobile is here and here to stay. After my experience with this car, I can see where having the capabilities SYNC provides makes your life easier and would be a driver in choosing a particular car over another. In today’s hyper-connected world where your information is living in the cloud and accessible through your smart phone, this Lincoln is not only a pleasure to drive but can help keep your connected world, dare I say it, in sync.

That’s it for the first installment! Look for my driving impressions coming soon. Check out some of the pictures below.

Lincoln MKS

NAV System

Travel Information

Cup Holders


Filed Under (Geekstuff, Internet, Social Media, Technology) by Sean on December-21-2008

I wanted to post this brief update about a new feature I discovered recently by accident while testing Twitter clients for my Android-based G1 smart phone. “@Replies” on Twitter now picks up tweets that are addressed to multiple people in a chain. These replies also appear to follow the same rules I pointed out in my previous post about Twitter in how @Replies work (alas it still appears most people don’t understand these important points, however). For example, if you send a tweet as follows: “@bob @jane @jim @jesus @mary @joseph have a good holiday,” then each and every person in that chain of addressees will have the tweet appear on their @Replies page! Note, however, if you interrupt the chain in any way, it breaks this behavior, e.g., “@bob @jane and @jim are you coming to my party,” @jim in this case will not get the tweet on his @Replies page. As noted, the rules from my previous post apply. In my first example, even if @mary doesn’t follow the person who sent the tweet, she will still get it in her @Replies tab nevertheless. Clients that use the Twitter API to track @Replies also follow these rules, as I found my accident when testing nanoTweeter for my G1.


Filed Under (Geekstuff, Internet, Social Media, Technology) by Sean on June-15-2008

Since Twitter‘s popularity is ever accelerating, resulting in it almost becoming a utility, not unlike email, I wanted to take a moment to lay out some details about how communication takes place using it. I still find many do not realize how @ replies work and as a result their tweets are not received by their intended audience.

The problem arises when a twitter user tweets about what another twitterer is doing, e.g., “@ted is kicking my ass in Wii Tennis.” Let’s say that @bill is the sender of this tweet. Let’s assume that both @bill and @ted have @sue as a follower. @sue will get the above tweet on her twitter stream, as intended. Let’s also assume that @betty follows @bill, but not @ted. Here is where things get dicey. @betty will not get this tweet on her twitter stream, even though she follows @bill who sent it! It will still appear on the public timeline. The problem is that Twitter assumes that all tweets that begin with @username are intended as a tweet directed at that user. In this case, Twitter assumes that @bill’s tweet above is being sent to @ted, when that is clearly not the intention. An additional unintended consequence is that this tweet will appear in @ted’s replies tab when @ted is logged into twitter through the web.

The lesson to be learned here is to never begin a tweet with a @user unless it is intended as a reply or tweet to that user.

How do we get around this such that we re-frame this tweet so its original intent is realized? Simply insert a word, character or space before the @user as appropriate, or, better yet, exercise those elementary school grammar muscles and rephrase the tweet altogether, e.g., “getting my ass kicked by @ted in Wii tennis.”

There is an exception to the behavior that I’ve outlined above. On your Settings page, there is a Notices tab. Contained within that tab is a section called “@ Replies.” The default setting (and recommended setting if you follow more than a few dozen people) is “@ replies to the people I’m following.” If you select the “all @ replies” setting, then you would get all @ messages from someone you follow even if you don’t follow the user to whom the tweet is addressed. If @betty above had this setting chosen in her settings, she would get @bill’s tweet above in the second paragraph. If @betty followed 400 people, however, and each person sent an average of only 3 tweets per day addressed to people @betty didn’t follow, she would get an additional 1,200 tweets per day! I personally wish Twitter would allow you to set the @ reply settings on a per followee basis. For example, if @betty followed @bill as above, and @bill was a very clever twitterer or A-list twitterati who communicated with followers that @betty would perhaps also be interested in following, then she could optionally select a custom @ reply setting for @bill such that she would see all his tweets, even if they were directed at people she didn’t follow. Likewise, she could decide that she doesn’t want to see @willy’s @ replies if they aren’t directed at her or people she follows.

I hope I’ve accomplished my mission of clearing up how @ replies work in Twitter, and more importantly, compel twitterers to stop starting tweets with @ if they aren’t directed at that person!

Filed Under (Geekstuff, Life, Technology) by Sean on March-13-2008

This is my first blog post (of many, to be sure) about South by Southwest interactive, a large media and technology conference in Austin, Texas. This is the second SXSWi I have ever attended, the first having been 10 years prior, when I was a panelist on one of the first interactive panels ever, covering successful entrepreneurs under 30 and lessons learned. Boy has SXSWi grown!! I really had no idea as to the magnitude of the interactive portion of the conference; had I known, I would have been a veteran by now. Suffice it to say, I will not miss another.

I’m going to keep this initial post very short since I just got back to Houston and am tired as hell and need a few days to recoup and recall everything. For the sake of brevity, I’ll highlight some things I learned about SXSW, in no particular order of importance:

  • twitter is essential to knowing what is going on and where it’s happening
  • beer is served promptly starting at 3 pm in the bloghaus (critically important)
  • the numerous parties are on the schedule until 4 am and very much a part of the event (as are flash mob parties through twitter)
  • you know people more by their twitter handle than their real names
  • you don’t sleep; show up with a huge sleep surplus or bring some Provigil
  • the tone of the conference is irreverent and raw; people cuss during sessions and keynotes
  • bring comfortable shoes
  • bring extra phone batteries or have your charger with you (twitter drains it quickly through SMS if you’re tracking a lot of things)
  • don’t track “zuckerberg” through twitter and SMS during his keynote; your phone will experience epic fail
  • hallway conversations are as important (or more so) than sessions
  • network and get to know as many people as possible (I failed a little bit in this regard due to severe sleep deprivation and my usual shyness, or “closet extroversion” as Dan Light brilliantly put it – not next time!)
  • take business cards with you next time, dumb ass!
  • Guy Kawasaki is the most kick-ass, easy going, VC ever. Period.
  • Hugh MacLeod got a kick out of my last name (but added I didn’t look like a stoner . . .)
  • spend lots of time in the bloghaus blogging, playing guitar hero, eating, drinking and tweeting
  • you drink a lot (no really, a lot)
  • keep your laptop charged at all times!
  • Macs outnumber PC laptops 30 to 1 (at least)
  • twitter!! (again) – it is an important back channel, or the conversation of the collective consciousness
  • don’t let Sarah Lacy interview you if you’re doing a keynote and you’re a young billionaire
  • even if you don’t own a computer and can’t spell blog, this conference is still the deal of the century with all the great people, films, venues, music, booze and food you can enjoy
  • Geek and good-looking are not mutually exclusive (quite the contrary methinks, especially when you’re doubly turned on by someone with looks and brains)
  • the conference is completely casual and everyone is approachable no matter their status

I could go on and on. I have many post motifs drafted from the conference which I will flush out soon, once my sleep patterns have recovered and my long term memory is functional. In the meantime, I urge everyone to read Daniel Light’s most kick-ass post about the show. I think it nails it on the head. Until next time!

Filed Under (Geekstuff) by Sean on March-7-2008

The guys at Common Craft have done it again. Trying to explain to people what twitter is is pointless. They look at me like I’m growing two heads. I’ll admit, when I first heard about it, I thought it was the most ridiculous thing I had ever heard. Now, however, things are different. Very different. I’m a non-stop twittering machine! I find it serves a social purpose and a business purpose. It helps you develop the brand that is you, and keeps friends posted on what is going on in your life. Likewise, it allows you keep up with others whom you may find interesting. You may be following someone with which you share interests, or someone who’s an expert in a field of interest. Perhaps you want to follow an up to the minute news source or a presidential candidate. It also can notify followers of updates to your blog as well as update your blog with your tweets (twitter messages are called tweets) in real time (see Nanoblog in the right column). Enough of my piss poor explanation – on with the video!

Filed Under (Geekstuff, Linux, My Music) by Sean on March-3-2008

This is a follow up to the previous post located here.

Well I finally decided to get down and dirty once again and dive into the innards of real time kernel tuning. As I reported last time, I was getting some latency which was evident through the sound card as a very nasty buzzing sound. Here I’ll report some basic findings which hopefully will help anyone attempting to set up a real time system set up for use as a DAW.

My system is running Ubuntu Gutsy Gibbon. You may recall where I had some serious trouble installing the Ubuntu Studio real time Ubuntu kernel; the initrd image was severely anemic to the point where I couldn’t even boot up. Instead, I decided to download the latest kernel source and roll my own so I knew everything would be just the way I wanted.

Before I go into the step by step process of how that was done, allow me to report some updated findings that may clear up some confusion. One issue is deciding what method to use to grant realtime scheduling to users (so you don’t have to run programs as root, which is a very bad idea). The old way of doing things was to use the realtime-lsm kernel patch and module. The problem I was running into with this method along with the latest 2.6.24 kernels is the fact that you can no longer configure your kernel with CONFIG_SECURITY_CAPABILITIES as a module! The kernel maintainers have decided that it introduces some serious security vulnerabilities, so the only options now are built into the kernel or not at all. This is a serious problem when using realtime-lsm since presumably the capability module does not support stacking and needs to be unloaded when the realtime-lsm module is loaded. This is not completely true as pointed out by the Debian Kernel Team, but the realtime-lsm module patches I was using have not been modified to correct this. In any case, realtime-lsm has been deprecated in favor of the newer PAM rlimits method of granting realtime scheduling priority to userspace programs. It is important to note that realtime-lsm will still give you superior performance over the rlimits method for really heavy multimedia work, but in 99% of cases the rlimits method should suit most users just fine. The rlimits method works by configuring priority scheduling limits in /etc/security/limits.conf.

Let’s get to the meat of how I configured my system. I’m going to list all the steps in order with a very brief explanation of each.

First we get the latest kernel source tarball. In my case this was


Then we get the latest realtime kernel patch. Make sure the patch version matches your kernel version above. Get the latest rt version if there is more than one for your kernel. In my case this was patch-


Copy the files to your kernel source tree, un-tarball them and patch the kernel. Be sure to use the proper version numbers below in place of these as applicable from your download.

cd /usr/src/

tar zjfv ~/linux- linux- .

ln -s linux- linux

cd linux

bzcat ~/patch- | patch -p1

Get your current working config if you have one.

zcat /proc/config.gz > .config


cp /usr/src/linux-`uname -r`/.config ./.config

From the existing .config, if you have one, update the settings from it. If there are any new features from the last config file, you may be asked some configuration questions.

make oldconfig

Get your favorite editor out and modify the config file to match the following settings. If they don’t exist just add them to the end of the config file. Another option is to make menuconfig (or xconfig, gconfig, config, etc.) and set the values that way.

vi .config







Now we can recompile and install our kernel. Below is the Debian/Ubuntu way of doing it. You can use the old school make && make modules && make modules_install technique as well. The Debian way does it all for you and packages the kernel image and headers as .deb packages in /usr/src and even installs the new kernel into GRUB!

make-kpkg --initrd --append-to-version=-rt_custom kernel_image kernel_headers

dpkg -i ../*deb

Now we grant realtime scheduling to the user group audio. Be sure your user account is part of this group. Here we set a max priority of 99 (RT), nice value of -10 (not very nice :) ) and memlock value of 512MB.
sudo cat "@audio - rtprio 99" >> /etc/security/limits.conf
sudo cat "@audio - nice -10" >> /etc/security/limits.conf
sudo cat "@audio - memlock 512000" >> /etc/security/limits.conf

Verify everything looks good in GRUB and reboot. Verify you’re running the new kernel. Look for PREEMPT RT in the version.

uname -ar

Linux ubuntu #1 SMP PREEMPT RT Sun Mar 2 22:06:11 CST 2008 i686 GNU/Linux

Great! Now you can run qtjackctl and select the appropriate realtime setting. You can launch your other studio applications with these settings as well and modify them in real time using the chrt command. You can check on the status of a process with ps -eo rtprio,comm.

ps -eo rtprio,comm | grep jack

chrt -p 99 <process id>

I will follow up with some more details and howtos regarding working with your DAW. Feel free to comment below if you have any questions or email me using the email icon at the top of the page. Enjoy!

Filed Under (Geekstuff, Rants, Technology) by Sean on February-28-2008

This is a very minor update to my series of rants about Microsoft’s crappy software.

So as mentioned in the last rant, I was backing up all the data on my Dell laptop before I wipe it clean and install Ubuntu. I left the office yesterday after starting the backup process. I came in today expecting it to be complete. Nope! Guess what? Yep, Microsoft decided it was a better idea to reboot my machine after some very important updates instead of complete my backup. It only backed up 1.7 GB, so now I’ve got to start again . . . . sheesh . . .

Filed Under (Geekstuff, Rants, Technology) by Sean on February-27-2008

If I had a dime for every time . . . . I find myself muttering that often while sitting there waiting for Windows to finish some inane task, whether it’s giving the hard drive a good workout (aka thrashing), wanting to reboot for no good reason, or upon start up where 67 applications combat each other for the computer’s attention thinking they are more important than me, the user. Microsoft Windows is basically a playground for poorly written software that pays no attention to what the user actually wants to accomplish. Literally, while writing this post, my old Windows laptop I’m copying files from before I wipe the drive clean and install Linux has prompted me with no fewer than 4 dialogs insisting I reboot (and I’m not referring to the incessant “Windows must reboot” dialog after a Windows update either).

Some of my favorite work interruptions: “New Wireless Networks found!” [Click the X to close] Ten seconds later “No, really!! New Wireless Networks found! Aren’t you curious?” [click to close again] “No Wireless Connection found.” Christ! Go the fuck away will you?? Even more fun: after manually shutting off the wifi hardware on your laptop, presuming that, uh, you really want it, uh, off, “No Wireless Networks found.” No shit?!? “There’s a new Java Upate!” “Windows required an update to fix one of a gillion vulnerabilities in its shitty software and decided the hell with you and what you were working on and rebooted anyway.” “Warning! Are you sure you want to quit this crappy software? It provides an essential crappy service and should you decide you wanted to use it, it wouldn’t be hogging all your memory and thrashing your hard drive!” Or my favorite quick-launch executables that run at startup so the programs will launch faster: “Hey if you want Word to startup in less time than it takes to run to Starbucks and get coffee, we recommend you run this quick launch utility, also useful in taking up an inordinate amount of memory. This will only add about 23 minutes to your computer’s start up time.” Or “Macafee SuperVirus has decided you were working on something important so it decided to perform some updates and thrash your hard drive so it could squash competing viruses.” I’ve always liked this one with trying to kill wayward processes: “Haha got you! We displayed this task manager process list to make you think you had control over your machine, but the joke is on you. We’ve decided you’re incapable of making decisions and have determined that the process taking up all your memory, hogging your CPU to the point you could scramble eggs on it, and trashing your hard drive within an inch of its life is in fact a process you cannot Kill at this time. Go wash your car or something and check back later.” I love it when you scan the local network to find a Windows share and Windows basically locks up while searching the network for computers; my Ubuntu box does a faster and more thorough job of finding Windows shares than Windows does which is amusing to say the least. Or my very, very favorite: since I usually am on the go, I close my laptop up putting Windows in standby (which works only part of the time – the other part it just stays on and runs down the battery until it’s dead). It’s safe to say when you turn your computer on or bring it out of standby you may actually want to do something really quick, like look up something on the Internet, shoot off a quick email or read a document. Well you can forget that! When I open up the computer and pray to the Steve Ballmer lunatic gods it will come on at all, it’s pretty much a free for all between various programs deciding that there are much more important things to do that don’t involve me at all (again, usually involving intense hard drive, memory and CPU exercise).

This is the first part of many, delving into the innumerable serious deficiencies regarding Microsoft software at a high level. I promise it won’t only be ranting; I will also discuss specific solutions to each of my rants should Mr. Ballmer and his team read my insights. I’ll touch on ideas that would eliminate the above gripes and discuss further annoyances.

Shit, another dialog box. No I do not want to fucking reboot now and will let you know when I do, so please stop asking!

Filed Under (Geekstuff, Linux) by Sean on February-26-2008

No, I’m not talking about the strings from theoretical physics here, just plain old strings in computer programming.

So, let’s say you need to generate a truly random string for a password, encryption key salt, or some other purpose. For this purpose the best thing is to use the /dev/random or /dev/urandom device on your computer. If your system doesn’t have a hardware random number generator (e.g., palm devices, phones, embedded systems), you can use alternative techniques such as using Lava Lamps, WiFi background noise, Space or live Keno results from Vegas to generate truly random data.

Computers cannot, by themselves, generate truly random data. Most random algorithms are based on pseudo-random number generation, which are basically data that appear random but are actually generated from a completely deterministic process, making them not random at all by definition. The /dev/random device, which first appeared in Linux, uses environmental noise to generate its entropy pool from which random data can be created. Environmental noise includes keyboard and mouse use, device driver interrupt timing, and other non-deterministic data. The generator also stores the number of bits of noise that exist within the entropy pool. Thus when accessing /dev/random, if there isn’t sufficient entropy, the device will block until entropy is available. For example, if you call for a specific length string, and there isn’t sufficient entropy, it will generate what it can and wait for more entropy. You can generate entropy by using your computer’s mouse and keyboard (or do what I do and write a blog post or send out a tweet on twitter). If you cannot wait for the entropy pool to fill back up, the /dev/urandom device is available which is non-blocking since it reuses bits from the entropy pool to generate pseudo random bits (however sufficiently random for cryptographic use).

How do we create a random string then? Let’s say you need a 12 character string consisting of alpha numeric characters. This is the command I would use at a shell prompt (only type bold characters):

linux$ od -a -A n /dev/random | head -1 | tr -d ' ' | tr -d '\n' | sed 's/[^a-zA-Z0-9]//g' | awk '{print substr($0,1,12)}'

You can replace /dev/random with /dev/urandom if you don’t need truly random data. If you need a longer string, you should increase the number used with the head command and modify the number in the substring (substr) function. Additionally, you can include symbols and other non-alphanumeric characters by eliminating the sed statement. If you need just numbers, you can use a different argument to od. Here are some examples of these in order:

linux$ od -a -A n /dev/random | head -30 | tr -d ' ' | tr -d '\n' | sed 's/[^a-zA-Z0-9]//g' | awk '{print substr($0,1,256)}'

linux$ od -a -A n /dev/random | head -1 | tr -d ' ' | tr -d '\n' | awk '{print substr($0,1,12)}'

linux$ od -d -A n /dev/random | head -1 | tr -d ' ' | tr -d '\n' | awk '{print substr($0,1,12)}'

I hope you find this information informative. By typing this post, I’ve succeeded in filling back up my entropy pool!

Filed Under (Geekstuff) by Sean on February-21-2008

“Ooh, sexy title,” is what you’re thinking, I know. Anyway, with my compulsive habit these days of installing WordPress plugins, I downloaded Social Bookmarks Reloaded. A great start, mind you, but lacking in a couple of areas. The great thing about open source is you don’t have to sit around griping about software not doing what you want. You can go in and fix it to make it do what you want! In this case, my complaints were really nit picks. I didn’t like the fact that the mouse over text (i.e., the alt text) for each bookmark was hard-coded and basically said the same thing for each site (e.g., “Add this to Digg” “Add this to D…e.l.i.c..i..o.u….s…”). I wanted the Digg bookmark to say, “Digg this,” for example. So I added an extra parameter to the xml file that described the bookmarking sites which allows you to put in your own alt text if you wish. Then I invoked the mighty Vi and made code changes to the plugin to incorporate the new parameter and dynamically create the new alt text for each image. Voila! I’ve got lots more changes I want to make to the plugin, such as adding this description interface to the plugin options interface, and a way to edit the bookmarking sites dynamically, among other things. Once I’m done I’ll re-release the plugin so others can take it and add even more functionality. Vive la Open Source!