Galaxy S (“T-Mobile Vibrant”) Tethering

Seeing Tim Bray’s post on how much he loves tethering his Nexus One reminded me that I wanted to document that this does, indeed, work on a rooted Galaxy S. The day after I wrote up my experience with [STRIKEOUT:hacking]fixing my Galaxy S, I left for a four day trip to Washington, DC. The trip was great, but the best part was not paying for wifi at Washington Dulles while I waited for my return flight. Because I had rooted my phone (ridiculously easy these days; go, do it, even if you don’t apply the other fixes), I was able to install android-wifi-tether (2.0.5-pre8, to be specific). For some reason the Galaxy S doesn’t work in infrastructure mode yet, but after setting up a connection profile with a static IP in the correct range (192.168.2.x, by default), setting the gateway (, by default) and Google’s DNS servers (they’re easy to remember), I was able to get right online.

I love the graph of the stock price of navigation companies when Google announced they were doing turn by turn navigation for free. I wonder if we’ll ever have the joy of seeing a similar graph for Boingo, et al. Probably not — there will still be lots of people with devices that only have a wifi chipset — but a guy can dream.

date:2010-08-29 15:56:18
tags:android, galaxy s, tether, wifi

Improving a Samsung Galaxy S

I stood in line almost two years ago for the G1. And earlier this year I finally got around to rooting it and experimenting with custom ROMs. The G1 served me well for a long time, but last month I decided it was time for an upgrade, and picked up the “Samsung Vibrant”, T-Mobile’s version of the Galaxy S.

I love the display on the Vibrant, but Samsung’s custom skin — TouchWiz, or “iPhone for Android”, as I think of it — leaves a lot to be desired. AWN.Launcher goes a long way, but the presence of an icon to watch the included version of Avatar — an icon you can’t remove — continued to gall me every time I opened the application list. The real problem, though, is the lag issue. According to the specifications, there’s no reason this phone shouldn’t hum along without complaint. But I was consistently seeing lags, pauses, and stutters when opening or switching applications. Samsung’s “online support” wasn’t exactly helpful — “why don’t you wipe the phone clean?” Ridiculous.

Ridiculous, yes, but that is what I did yesterday afternoon. Of course, I wiped it in preparation for rooting, applying a “lag fix”, and generally ripping pieces out. While there’s not a Cyanogen ROM for the Galaxy S yet, the community has been industrious. In the end I followed a couple of different guides on the path to fixing my phone:

  1. I rooted the phone using theinstructions in the Cyanogen wiki
  2. I followed most of the “How to make the Vibrant software not suck” tutorial (in a slightly different order — I rooted and installed Clockwork Mod Recovery first). This included fixing GPS. (Guess I won’t have to wait until September to use Maps effectively.)
  3. I applied this experimental lag fix (more on that below).
  4. I ripped out lots of the bundled crap, including Telenav, Avatar, Layar, and the TouchWiz widgets
  5. I installed the Desk Clock, Calendar, and Music applications from the Nexus One. As someone pointed out, the included Desk Clock doesn’t even have a clock. And the bundled Calendar is just a little to, uh, vibrant for my taste.

So far everything seems to be working fine. The lag fix, in particular, makes the phone seem to live up to its promise. According to the xda forums, it would appear that the issue has to do with the filesystem Samsung is using for the internal storage, RFS. In particular the fact that it doesn’t do write buffering. The fix creates an EXT-2 formatted loopback device and moves much of the important bits onto it. With all the caveats about benchmarks, Quadrant showed nearly a 3 times improvement in performance, and it feels like it, too.

Thanks to @GalaxySsupport for suggesting I wipe the phone: it was indeed the first step to massive improvements. And while I may no longer have a warranty, I now have a phone that works great.

The funny thing about that icon is that it’s apparently just a symlink to the included microSD card; replace the card with a larger one (like I did), and the icon just pops up a “file not found” message when you click it.

Samsung should be particularly embarrassed by the TouchWiz Dual Clock widget. Yes, you can show two clocks. And yes, even though you tell it what time zone to display (and it knows the date), you have to manually adjust for Daylight Saving Time. Do I have to wind it daily, too?

date:2010-08-22 14:45:51
tags:android, cyanogen, galaxy s, samsung, vibrant

CI at CC

I wrote about our roll-out of Hudson on the CC Labs blog. I wanted to note a few things about deploying that, primarily for my own reference. Hudson has some great documentation, but I found Joe Heck’s step by step instructions on using Hudson for Python projects particularly helpful. We’re using nose for most of our projects, and buildout creates a nosetest script wrapper that Hudson runs to generate pass/fail reports.

Setting up coverage is on the todo list, but it appears that our particular combination of libraries has at least one strange issue: when cc.license uses Jinja2 to load a template, coverage thinks it’s a Python source file (maybe it uses an import hook or something? haven’t looked) and tries to tokenize it when generating the xml report. Ka-boom. (This has apparently already been reported.)

Another item in the “maybe/someday” file is using Tox to run the tests using multiple versions of Python (example configuration for Tox + Hudson exists). I can see that this is a critical part of the process when releasing libraries for others to consume. We have slightly less surface area — all the servers run the same version of Python — but it’d be great to know exactly what our possible deployment parameters are.

Overall Hudson already feels like it’s adding to our sanity. I just received my copy of Continuous Delivery, so I think this is the start of something wonderful.

date:2010-08-20 10:37:43
category:cc, development
tags:cc, CI, coverage, Hudson, python, sanity