John Lam on Software

  • About me
  • Motorola DROID Review

    • 11 Dec 2009
    • 16 Responses
    •  views
    • Misc Geek
    • Edit
    • Delete
    • Tags
    • Autopost
    Media_httpwwwtelefoni_bteja
    Yesterday, I left my iPhone and the AT&T network behind and switched to Verizon. In no particular order, here are the set of things that I was unhappy with:
    • Spotty AT&T network. In most of the places where I used my phone, things tended to work. Except of course for the times when they don’t.
    • Draconian App Store approval process that kept Google Voice out of the App Store and kept other app updates running at a snail’s pace.
    • Lack of multitasking (notifications don’t count).
    • Paying $10 / month for SMS on our two lines
    • Paying for a home phone line so that I could get cheap calling to Canada where our extended families live.
    Yesterday, I went out to the local Verizon Wireless store and moved both of our family’s phones over to Verizon. It was a completely painless process – I just had to give the Verizon rep, Pete, my AT&T account number and they moved both of our phone numbers to Verizon in under 5 minutes. I wound up purchasing the Motorola DROID, and the HTC Eris phones. I've heard good things about Verizon’s network, and I put it to the test today. I used the New York Times homepage as the test and raced a few folks at the office who have iPhone 3G and 3GS’s. The DROID beat them hands down at page load times. I don’t have timing numbers, but it was a very noticeable difference.

    Hardware

    The DROID is a sturdy and surprisingly small phone. It’s just a bit thicker than my iPhone 3G, and quite a bit heavier. I really wanted to have a phone that does not have a physical keyboard since the DROID’s keyboard is more-or-less unusable. It doesn’t have staggered keys, and you have to move your fingers too far and too deliberately to type. I can type much faster and more accurately using the on-screen keyboard. One gripe about the on-screen keyboard: I can type faster than it can react. If you hit two keys too closely together in time, it will ignore both keystrokes. If I slow down my typing just a bit, my accuracy improves tremendously. With the iPhone, however, I never had to slow down – it totally nails the experience. Hopefully a future software update for the DROID will fix this. The Android 2.0.1 update that just arrived while I was typing out this review definitely improves things quite a bit. The jury’s still a bit out on how close to the iPhone typing experience it is. The screen is gorgeous. How could a 267 PPI display not be gorgeous? At 854 x 480, text is incredibly legible, even at small point sizes. It looks like this resolution is going to be fairly standard on high-end smart phones next year if the leaked HTC roadmap is to be believed. The AMOLED displays on those HTC phones should be fantastic too.

    OS

    Multi-tasking is something that I didn’t realized I missed on my iPhone until I experienced what it could be like on Android. The modal notifications system on the iPhone is pretty useless, especially when the notification text runs long, or if there are a bunch of notifications batched together. On Android, there’s this ‘window shade’ UI concept which shows you a list of notifications, as well as a series of icons on the task bar that tell you there’s more information in the Window Shade. One thing I really like is having the current outside temperature displayed on the task bar, something that just isn’t possible using the iPhone. However, multi-tasking is a mixed blessing. If I notice the DROID running hot, I’ll have to run my Advanced Task Killer app to kill any offending apps running in the background. This is annoying, and I look forward to better job quota support for background tasks to help maximize battery life in the future. The turn-by-turn navigation feature is great. My car dock arrives tomorrow so I’ll be able to better put it through its paces then. But in my tests today, I was able to speak the name of my destination to the phone, click on “Get Directions” followed by the Navigation button and I was on my way to my destination. I don’t own a GPS, but it’s at least as good as Scott Hanselman’s Garmin Nuvi that got us lost on the way to Foo camp a couple of years ago :)

    Contacts

    This is one area where Android totally nails the user experience. Your contacts are now a union of your Exchange, Gmail and Facebook contacts. For each contact on your list, they will display all possible forms of communication with them, and integrate things like their current Facebook status directly into the contact page! If you interact with a contact anywhere else in the OS (in a email message, a SMS etc.) you can just double tap on the contact and you’ll get a popup menu with a list of all possible ways that you can interact with that user (call, email GTalk SMS etc.) Google Voice Integration This was the feature that I really wanted. I got a taste of how good it could be on my iPhone, but Android really makes this feature sing. For my family in Canada, if I call them (via my contact list) the DROID will automatically route that international call through Google Voice. For Canada it’s free, and for other countries it’s substantially lower than Verizon’s existing rates. You get to call people without having to dial an access number first, which was how you had to do things on the iPhone. But for me this lets me cancel my home phone # that will save me around $30 / month. I just got a Google number (you can get one through your Google Voice settings page if you were like me and picked the “I want to keep my existing wireless number option”). Now I can send and receive SMS messages for free ($10 / month). Note that this only applies to SMS messages sent to my new Google number and not my existing wireless number. Sometime in the future Google Voice will offer # portability, so I’m hopeful that I can bounce my number then. The voicemail feature of Google Voice is awesome. It does speech-to-text conversion for you. In the Google Voice app, you can playback the message and watch as it highlights the words that it transcribed in real-time. Fantastic feature.

    Applications

    The iPhone App Store is not as big of a moat for Apple as I once thought. Here are the apps that I really loved on my iPhone:
    • Now Playing
    • Shazam
    • Page Once Personal Assistant
    • TweetDeck
    • Facebook
    • Weather Bug Elite
    • Red Laser
    • Amazon
    • Kindle
    • The Best Camera
    Of these, only The Best Camera, TweetDeck, Red Laser and the Kindle app are not available for Android. But reasonable substitutes were available: I substituted Twidroid for TweetDeck (not quite as good, but certainly a more than capable Twitter client). Google Goggles is definitely superior to Red Laser on my non-autofocus iPhone 3G. Not sure yet what a good camera app is for the Android; The Best Camera was a fantastic app for the iPhone. The only app that I don’t have an equivalent for today is the Kindle app. But I’d be shocked if Amazon didn’t fill that hole in early next year. I’m happy that the iPhone has real competition with the DROID + Android combination (although as a MSFT shareholder I’m less happy that we’re not the real competition here). I suspect the Android app store is going to be quite disruptive to Apple since apps update much faster and appear much faster than on the iPhone app store. Price What’s the bottom line here? I can sell my used iPhone 3G 8GB for about $250 on Craigslist. My new DROID cost $50 after rebates using my MSFT employee discount. My phone bill rises to $118 / month from $100, but I’m getting a second data line and an additional 250 anytime minutes. Keep in mind that I’m also canceling my home phone # which should save about $45 / month. So net savings of around $27 / month and my iPhone will pay for my early termination fees from AT&T. I’m also eligible to upgrade my primary line’s hardware every year as opposed to the 20 month policy in AT&T. That’s freaking incredible.
  • Disable that annoying beep on Thinkpads when resuming from Sleep

    • 2 Jan 2009
    • 8 Responses
    •  views
    • Misc Geek
    • Edit
    • Delete
    • Tags
    • Autopost
    It’s under the Power Manager settings:
    Media_httpiunknowntyp_fvder
  • Hello, 2009

    • 1 Jan 2009
    • 11 Responses
    •  views
    • Misc Geek
    • Edit
    • Delete
    • Tags
    • Autopost
    Happy New Year! It’s been a hectic holiday season here in the Pacific Northwest. We were snowed in over here for somewhere in the neighborhood of 10 days or so. I wanted to spend most of my time with family, but I’m sneaking away for a few hours today to prepare for the new year. I’m writing this post from my office in my new chair that I picked up from Plush over at the Redmond Town Center:
    Media_httplb5znetiu60_glicj
    No that’s not me :) It’s a fantastic chair. I wanted an alternative place to work that wasn’t just my desk (which is a great setup, but a bit of variety is a good thing). I got the fur cover which makes it feel like I’m sitting on a giant teddy bear. I’m writing this post on my Lenovo X200s, which finally arrived after deciding to take a tour of Canada for a week:
    Media_httpnotebookita_yehdo
    This is a fantastic laptop. The keyboard is hands-down the best keyboard that I’ve used. It’s significantly better than the T61p that I have, and I’m finding that I prefer the feel of its keyboard over my 17” MBP as well. I’m loving the fact that I now have the extra keys that I’ve been missing on the Mac. Form Follows Function. My top criteria around laptops are: 1) Screen quality – this thing has a 1440 x 900 LED backlit display which is fantastic. A good compromise considering the laptop weighs in at around 3.2 lbs with the 9-cell battery that I have installed. 2) Battery life – this thing has crazy battery life. I have the screen set at max brightness right now, and my battery meter shows 7 hours remaining at 88% charge. 3) Emissions – heat and sound. This thing is quiet and is not hot at all. This was the thing that annoyed me the most with the MBP – it was hot *and* loud. Playing a movie on it without headphones on was an exercise in frustration. 4) Performance. This thing is plenty fast with the 1.86GHz Core 2 Duo. It rates 4.9 on the Vista CPU perf, but that doesn’t tell the whole story. It has 6MB L2 Cache, but I also paired the laptop up with the most excellent Intel X25-M SSD. The Intel SSD was the thing that turned this into a very special laptop. There are no annoying pauses at all while working. My system is instantly responsive after logging on – which certainly isn’t the case with my quad core desktop because of all of that contention for the HDD head. It boots really quickly, shuts down fast. Now that I’m all geared up for the new year, I’m looking forward to the goals that I’ve set for myself: 1) Ship IronRuby. 2) I want to make it just as easy for an external developer to work on IronRuby as someone who sits down the hall from me. 3) Work on the fit and finish that will make IronRuby a great experience for .NET developers. Integration with ASP.NET MVC, fixing our interop bugs, fixing our startup and working set issues, and getting some quality docs out there. 4) Refactoring me. I’m going to fix a bunch of things that I’m not happy with. I’m turning into a fatso again and that’s not cool. Part of this is admitting that I have a problem, and then figuring out that I don’t have to do it alone. I’m not going to do crazy things like my brother is doing (40” vertical in 2009!) but I should be able to hit 150 lbs this year. I hope you all have a great year!
  • My Dev Kit

    • 1 Sep 2008
    • 14 Responses
    •  views
    • Misc Geek
    • Edit
    • Delete
    • Tags
    • Autopost

    Media_httpfarm4static_jcasr

    Update: Added missing profile.ps1 file.

    The IronRuby team is getting ready for another major push for the PDC. To get ready for this (be careful what you wish for!) I'm upgrading my laptop's hard drive from the stock 160GB that it came with to a brand-spanking new Black Scorpio 320GB drive.

    This also means that I'm repaving my Boot Camp partition (I had previously allocated a measly 40GB on the old drive). While waiting for software to install, I figured that folks out there might be interested in what my setup is for a computer. So, here it is:

    Operating System and general productivity tools:

    I run Windows Vista SP1, 32-bit. I had tried to get Windows Server 2008 64 bit installed in the BootCamp partition, but it was a lost cause. The combination of my pre-Santa Rosa 17" MBP hardware and the general lack of 64 bit drivers made it virtually impossible to do a native OS install on the Boot Camp partition. I should be able to get 64 bit Windows Server 2008 installed in a Fusion virtual machine. I'll report later how that goes.

    I do have a mildly pimped out Vista Sidebar. I'm a huge fan of Christian's widgets. I use his CPU, Memory, and Network Traffic meters. I run WeatherBug, and Drive Activity as well. I don't find it nearly as useful on my laptop as I do on my desktop where I have two 21" panels.

    I use Internet Explorer quite a bit, especially for browsing internal Microsoft sites. I leave it set as my default browser, since I've always loved its startup time vs. Firefox. I'm currently using IE 7, but I do have IE 8 Beta 2 installed on one of my desktops at the office.

    I use Firefox 3 quite a bit as well, especially since it has Vimperator, which adds VI key-bindings to Firefox. IE should seriously consider building a Firefox compatible plug-in API so that it can run Firefox plug-ins.

    I'm a big fan of PicLens, and I have it installed on both IE and Firefox.

    As you might imagine, I spend a lot of time in Outlook 2007. While I have a hard time understanding why it needs to use 36 threads and open 3,319 OS handles to do its thing, it works quite well once I've pimped it out a bit with my three basic macros.

    I use Windows Live Writer to compose all of my blog posts. It works great with TypePad, who is my blogging hosting provider. Life is too short to run your own blog engine on some random hosting provider (I used to use Dreamhost back in the day). I want it to be somebody else's problem to solve if my site goes down.

    I use GridMove as a tiling window manager using its 2-part grid vertical template. CTRL-ALT-1 moves the active window to the left *half* of the screen, and CTRL-ALT-2 moves the active window to the right *half* of the screen. On my desktop, CTRL-ALT-3 moves the active window to the left half of monitor 2 and CTRL-ALT-4 moves the active window to the right half of monitor 2. It's easily the most useful utility that I've added in a long time.

    Developer Tools

    I use Visual Studio 2008 Team System, SP1. I configure it via a custom vssettings file that I've carried around from machine to machine.

    I use multiple enlistments so that I can do work in parallel. Some of the devs on my team have 6 enlistments(!) Such is life when you have to battle the Troll to get your changes committed into the source repository.

    I use ViEmu to enable VI key bindings in Visual Studio. Developer Division at Microsoft has a site license for it, but I'd definitely pay my own money for this.

    My primary text editor is vim. I have a custom .vimrc file that I've carried around from machine to machine. It's not as pimped out as some other folks' vim setup, but it works for me.

    I use Windows PowerShell for my day-to-day work. I have a mildly pimped out PowerShell console that uses a directory that I cloned from Scott Hanselman's machine. Like a lot of folks, I can't work without a good set of aliases. Those can be found in my profile.ps1.

    I have a Tools directory that I carry around from machine to machine. There's lots of stuff in it, but here's a general breakdown of the tools I use most often:

    • Keith Brown's Password Minder
    • Most of Mark Russinovich's Sysinternals Tools
    • Notepad 2 - it's awesome for viewing integrated diff files.
    • Lutz Roeder's Reflector
    • Beyond Compare 2.0
    • AGREP
    • RemapKey from the Windows Server Resource Kit (I remap Caps Lock to CTRL via this, reverse the Windows / ALT key mapping on the left side and re-assign my right Command key to DEL).

    IronRuby uses Subversion for our external-facing source control. Our SVN repo lives on RubyForge, and I use a combination of Tortoise SVN and the command-line tools to do my day-to-day work.

    IronRuby is using GIT for a few of our sub-projects. Eventually we'll be moving the primary source repository from SVN to GIT. Like most folks using GIT these days, we use the awesome github service. I use the MSysGit implementation on Windows with the option to run GIT from the Windows Command Prompt enabled.

    The Cloud

    More and more of my life is moving to the cloud. Here's a list of the services that I use, and the places where I go.

    I use flickr for posting my photos. I've been a Pro member for quite some time. For $25 / year it's a bargain. I don't really use flickr as a social network like some other folks, but I'm quite happy with how well it works for me.

    I use twitter to post random bits of status. The 140 character limit encourages posting. I'm pretty much only using the blog to post longer pieces.

    I use Google Reader to consume my RSS feeds. I use multiple computers every day, and I like the fact that read / unread status is stored in a central location.

    I use Google Apps for my domain for my personal email. I used to run my own Exchange Server back in the day, and the day I switched was an awesome liberating moment for me. I no longer run any servers in my house.

    I have a facebook account that I don't use all that much. It's pretty much at the bottom of my list of places to go. My status updates are via twitter, which makes it look like I'm on facebook a lot more than I actually am.

    What about you?

    As you might have figured out by now, I'm a big fan of minimalist UI, black backgrounds and keyboard-driven UI's. What's in your dev kit, and why do you love it?

  • Steve Yegge on Interviewing

    • 13 Mar 2008
    • 5 Responses
    •  views
    • Misc Geek
    • Edit
    • Delete
    • Tags
    • Autopost

    Media_httpfarm2static_kuavp

    Sorry, Steve for dragging out that lovely photo of yours that I took at Foo Camp. But hey, it's the only one that I have :)

    I've been interviewing a bunch of folks for our 4 open positions (a nice fellow just accepted our IronRuby SDET position). Some of the other folks I would like to believe would have done better if they had read Steve's Get that job at Microsoft blog post [1].

    I've told folks that my MS interview was on par in difficulty as my Ph.D. candidacy oral examination, partly due to the fact that it was much, much longer. (A Ph.D. oral exam is done by 3-5 professors vs. you in a room and they decide whether you continue in your studies or whether they kick you out). Mine started at 10am and ended at 6:30pm or so when I sat down with Scott Guthrie at the end of my loop.

    Steve has a lot of good tips (including bring your own dry-erase markers - my last interview candidate actually ran out of ink and I wound up running down the hall to get some more for him). It's essentially a syllabus on what to study for a technical interview. 

    [1] At least that's what IE on MS CorpNet shows me :)

  • About

    I create software tools for scientists and engineers in the Technical Computing Group at Microsoft. Before that, I was a founding member of the IronRuby team.

    115687 Views
  • Archive

    • 2011 (4)
      • February (1)
      • January (3)
    • 2010 (13)
      • December (12)
      • November (1)
    • 2009 (5)
      • December (1)
      • November (1)
      • May (1)
      • January (2)
    • 2008 (30)
      • October (1)
      • September (2)
      • July (1)
      • June (2)
      • May (1)
      • April (2)
      • March (9)
      • February (8)
      • January (4)
    • 2007 (59)
      • July (4)
      • June (16)
      • May (23)
      • April (2)
      • March (6)
      • February (4)
      • January (4)
    • 2006 (214)
      • December (2)
      • November (2)
      • October (8)
      • September (12)
      • August (34)
      • July (29)
      • June (23)
      • May (34)
      • April (15)
      • March (23)
      • February (23)
      • January (9)
    • 2005 (46)
      • December (22)
      • November (17)
      • October (7)

    Get Updates

    Subscribe via RSS
    Twitter