Hotkey app launching and terminal in OS X and Linux

There are a couple of neat utilities in Mac OS X that a lot of advanced users / UNIX geeks love to use that I too have recently embraced.

The first is Visor. Visor is a terminal window that pulls down from the top of a Mac OS X system’s screen when triggered by a hotkey. If you’ve ever played a game like Quake and remember the drop-down console view triggered by hitting tilde (technically, backtick), then you know what this looks like. Instead of a game’s console, however, it’s a UNIX terminal (specifically, an instance of the OS X Terminal.app application).

Visor 300x187 Hotkey app launching and terminal in OS X and Linux

I prefer to use iTerm for my normal OS X terminal emulator, and unfortunately, there’s no way to make Visor use iTerm instead of Terminal.app. But I find this to be of little concern. Visor is for running a quick UNIX command, something that doesn’t demand I move off of my current desktop space to the one where I have iTerm/tmux running.

The other utility is Quicksilver. Quicksilver is an application launcher. Instead of clicking icons in the Dock or browsing through the Applications folder in Finder, users can trigger Quicksilver with a keystroke, begin to type part of the application’s name, then hit Enter to launch the app when Quicksilver has matched your typing to the specific app. In practice, users typically need to only type a few letters in the app’s name for Quicksilver to properly figure out which one it is that the user is seeking.

500x quicksilver 300x253 Hotkey app launching and terminal in OS X and Linux

So, these things are great in OS X, but I hate having utilities like this on OS X and lacking them on Linux. Luckily, both of these tools are faithfully replicated by Linux software.

The counterpart to Quicksilver is GNOME Do, which is quite frankly almost a note-for-note re-creation of Quicksilver in Mono. I have no hang-ups on using Mono software, and I greatly prefer following the Quicksilver look and behavior as closely as possible, so this works great for me.

gnomedo interface Hotkey app launching and terminal in OS X and Linux

A Visor replacement was harder to find. I tried Tilda but just opening and closing it was very error prone. Twitter user @mrf clued me in to Guake, which works nearly as well as Visor. I also like how Guake is transparently named after its gaming inspiration.

guake shot 300x223 Hotkey app launching and terminal in OS X and Linux

My hotkeys for these apps are control-backtick for Quicksilver/GNOME Do, and alt-backtick (or command-backtick) for Visor/Guake.

I don’t know why it took me so long to come around on these tools. I’ve known about Quicksilver and Visor for some time. I suppose it’s because I’ve become more of a keyboard-dominant UNIX user, and these tools provide some nice functionality for making use of the keyboard within a GUI environment. Particularly in OS X, I’m making far less use of the Dock as an application launcher.

That’s The Kind Of Stuff I Think About

I dig the NAPA Know-How redhead girl

Linux USB Bootable Stick Netinstall That Works

Today, I spent a lot of time fussing with bootable USB thumbsticks, trying to set one up that would boot the new backup server I just built at work. The machine has no optical drive, so I just wanted to boot a simple netinstall and have the system pull everything it needs from remote mirrors.

The supposed easy method was to use Unetbootin. Everything about it was easy, except for the part where the bootable USB sticks it created didn’t work. Every boot attempt was met with “Boot error” or “Missing operating system”.

Since I am on Ubuntu, I tried to use Ubuntu’s usb-creator. Also a nice app, except for the fact that it too failed to work. In usb-creator’s case, the failure was to even get started. I would browse to the ISO that I wanted to use as the image for my boot stick, and the app refused to load it, or any ISO. No error, the app simply didn’t respond to the input.

So, two piece-a-junk GUI apps down. After a little digging, I found the methods that created working USB sticks on the first try.

For CentOS:

1. Download diskboot.img from a CentOS mirror’s centos/(version)/os/(arch)/images folder.
(I used the kernel.org mirror and i386 arch, so my diskboot.img was located at: http://mirrors.kernel.org/centos/5.5/os/i386/images/)

2. Insert USB stick (I’ll assume it’s /dev/sdb, adjust instructions to fit your system), format to FAT32 (I used Gparted for this)

3. Run:

dd if=diskboot.img of=/dev/sdb

4. Remove USB drive, stick into machine that’s getting the CentOS install, and boot
When asked for installation media, select HTTP. Use the website and folder path of the mirror you’re using.
So, from my example:
Website name: mirrors.kernel.org
CentOS directory: centos/5.5/os/i386

Proceed through installer as normal.

For Debian:

1. Download boot.img.gz from /debian/dists/(version)/main/(installer-arch)/current/images/hd-media folder
(I did i386 stable from Debian’s US mirror, so boot.img.gz was located at: http://ftp.us.debian.org/debian/dists/stable/main/installer-i386/current/images/hd-media/)

2. Download Debian netinstall ISO (I used: http://cdimage.debian.org/debian-cd/5.0.5/i386/iso-cd/debian-505-i386-netinst.iso)

2. Insert USB drive (again I’ll assume /dev/sdb) and format to FAT32

3. Run:

zcat boot.img.gz > /dev/sdb

4. Remove and re-insert USB drive. Copy the netinstall ISO to the USB drive.

5. Stick USB into machine getting the Debian install, boot, and run through installer.

I imagine these instructions will probably stay good for a long time. You’ll just need to adjust for mirror location, arch and release numbers, but the URLs I’ve provided here should give you a good clue as to where to find the necessary files on the mirror you’re using.

Why Brightkite is Pissing Me Off

brightkite Why Brightkite is Pissing Me Off

Brightkite is one of those location-based social net services, the ones where you “check in” at places and see where other people check in. It’s like Gowalla and Foursquare, except (IMO) not quite as good.

The one compelling feature of Brightkite, however, is group SMS. It allows users to create an SMS “party line”, which works with any SMS-capable phone. Chatters don’t even have to be part of the service – they can simply be invited by phone number.

This, however, creates weird Brightkite “garbage” accounts (my term), which creates issues when that phone number goes and becomes a full-blown Brightkite member. In my family’s little group text, for example, there’s one of these garbage accounts which corresponds to a phone number that is now a number associated with a real Brightkite account. But other than polluting our chat’s user list, this is mostly harmless.

Less harmless is the fact that the friends list appears completely broken. My wife and I, for example, just sat next to each other, on our respective MacBooks, typing in each other’s username and real names, trying to pull up each other’s profile so that we can friend each other.

Every search, zero hits.

We were finally able to figure out that we could see each other’s profile by clicking on each other’s name in the group chat userlist. However, when we attempted to friend each other, the service said that we’re already friends.

Yet, when we look at our own friends list, neither of us appear on the other’s friend list.

This is just the latest way in which Brightkite has shown itself to me to be a bit of a wreck. Unfortunately, I have found no other service that gives us the ability to do this sort of group SMS that works with any SMS user (we’ve found things that work with all iPhones, for example, but my parents aren’t on iPhones yet. If anyone knows of other services that do this, please let me know).

Brightkite: For God’s Sake, Sort Yourself Out.

Back Online

Migrated this site from Dreamhost to my VPS at prgmr.com. After running our own servers at work for the past year, I couldn’t put up with a shared host anymore. I put myself on prgmr’s waiting list and picked up a 512MB slice when they finally started selling some again (they’re out of everything again).

Eventually I’m going to get Nginx + PHP5-FPM to run this WordPress install, but for now, it’s Apache2 + mod_php. Definitely looking at using Nginx + Passenger for Rails deployments at work, need to get some practice setting that up too.

Turn an Android Handset into a Free Wifi Phone with Google Voice

screenshot sip Turn an Android Handset into a Free Wifi Phone with Google Voice

My wife and I recently abandoned our T-Mobile G1′s to become iPhone people. As much as it pained me to (temporarily, at least) abandon a nice open platform I had followed for some time, I have to confess that the new iPhones hit a sweet spot in a way that the previous three generations of iPhone simply did not (for me, at least).

But that is a post for another time. This post is about what we did with our G1′s once that service icon turned into an “X”.

The G1 is a wifi-enabled device. Even without traditional mobile phone service, it can be used with VOIP services. There are a number of paid SIP (Session Initiation Protocol)-based VOIP services which you can pair with a SIP application on the phone to create a fully-functional wifi phone.

But, that costs money. What about something you can use for free? Well, that’s where Google Voice comes in.

To understand how this works, you just need to know two things:
1. There are a number of SIP providers that give you free incoming (domestic) calls, while charging for outbound calls.
2. Google Voice traditionally works by calling your phone number, and then connecting you to the outbound number you intend to call (in other words, it turns an outbound call into an incoming one)

See where I’m going with this?

With a Google Voice account, a SIP service account, and the right Android apps to interoperate with each, you can have an Android handset that gives you free incoming calls, and free outbound calls by way of Google Voice’s method of connecting you.

The phone, obviously, must be in range of (and connected to) a wifi network to be able to make and receive calls. Well, my house’s wifi network is always on. So by setting up my wife’s old G1 this way and plugging it into its AC adapter in the wall, we’ve turned that G1 into an always-on, free “home phone line”. One with voicemail transcription and SMS, even.

The following instructions explain how I set this up with a phone that I wiped and started from scratch with. You should have no problems creating the same setup on an existing Android phone without wiping everything – I just wiped everything so that my G1 would be clean and not running any other junk that might slow the (easily slowed) phone down.

These instructions are geared primarily toward my use case of adding VOIP to an Android phone that no longer has active cell service. You can also add free VOIP calling to a phone that has service. If you have no data service, you can use VOIP entirely on wifi like I am. If you have 3G or EDGE data service, you have the option to have your VOIP service still be active when outside of wifi reach. You may have to make a couple of slight adjustments to these instructions for a phone that still has cell service, but they should mostly be obvious.

Phase 1: Getting Online with Freshly Wiped. Has-No-Service Phone
(skip if you’re just adding wifi calling to your active Android phone)

  1. Skip Google Account setup for now. With no service, it can’t connect to the Internet anyway, until we have wifi running.
  2. Set time settings (remember to set time zone – it’s not detected if you have no phone service)
  3. Settings -> Wireless Networks
    • Wi-Fi (check to enable)
    • Wi-Fi Settings -> pick your wireless network (and if you’re like me, type in painfully long, random character encryption key!)
      • Type the key in again because you did it wrong the first time
    • Mobile Network Settings
      • Data enabled (uncheck to disable)
      • Data roaming (uncheck to disable)
  4. Settings -> Accounts & Senc
    • Now that we are on wifi, we can add our Google account
    • Click “Add account”, enter Google account info as prompted

Phase 2: Download Required Apps from Market

  1. Log in to Google Talk (especially if you’re on wifi only – downloading from Market often fails if you’re not logged into Google Talk)
  2. Download Google Voice
  3. Download Google Voice Call Free
  4. Download sipdroid
  5. Download KeepWiFi

Phase 3: sipgate and Sipdroud

  1. Go to http://www.sipgate.com/one and click Sign Up Now and create an account (you will need a mobile phone with SMS to receive the confirmation text)
  2. When you have the account all set up and logged in, go to My Settings and click the “SIP Credentials” link way on the far right of the page. Keep this handy in a browser tab.
  3. Configure Sipdroid to use your new sipgate number:
    • Menu Button -> Settings -> SIP Account Settings
    • Enter the following Sipdroid settings with the information from the sipgate.com SIP Credentials
    • Authorization Username = SIP-ID
    • Password = SIP-Password
    • Server or Proxy = sipgate.com
    • Domain = (leave blank)
  4. Configure Sipdroid to use the connections you want
    • Settings -> Call Options
    • For a phone with no cell service, just have Use WLAN checked
    • If you have cell service with data, it’s up to you whether you want to Use 3G and Use EDGE as well.

Phase 4: Google Voice

  1. Go to http://voice.google.com and create a Google Voice account (you will need an invite to Google Voice if you don’t yet have an account)
  2. You will be required to input a phone number to have GV forward to. You can input your sipgate number.
  3. Have Google Voice call you to confirm, enter confirmation number
  4. Launch Google Voice app
    • Select Do not use Google Voice to make any calls. We will be using the Google Voice Call Free app to do the dialing.
      • If you’re on a phone that still has normal call service, you’ll probably want to set this to Always Ask instead.
    • If you have phone service, you can set GV to take over as the phone’s voicemail provider. If you have no service, ignore this option. Voicemail will come via the GV app.
    • After setup, go to Settings -> Sync and Notifications, and enable Synchronize Inbox (and disable Notifications via text message).
  5. Launch Google Voice Call Free app
    • Select Use GV to make all calls under Enable Callback
    • Enter your Google Voice account info
    • Enter your sipgate.com phone number for the Callback Number

Phase 5: Keep WiFi Running

Android phones (at least, the ones I’ve used) put the wifi connection to sleep when the phone screen goes off. We want to stop this from happening if we want the phone to sit on wifi ready to receive VOIP calls all day.

  1. Launch KeepWifi
  2. Enable it!

Phase 6: Enjoy Your New WiFi Phone!

Dial phone calls as normal. Google Voice Call Free will “intercept” the outgoing dial, and call your phone. Answer, and then GV will connect you to the number you dialed.

Missed calls will appear in the normal Android dialer.

Voicemails will appear in Google Voice. As long as you have Synchronize Inbox set, it will receive a push notification when a voicemail is received, and will give you the transcription and an audio file to listen to.