Hung Truong: The Blog!

  • January 01, 2011

    Prediction for 2011: Death of the Phone

    It’s January, which means it’s time for really misinformed predictions that will just look silly in hindsight! I’ve been reluctant in the past to use Google Voice because of integration issues, but I think 2011 is the year that I’ll start relying on it more, especially if I end up changing my real phone number (I’ll just give out my Google Voice # and forward calls).

    I recently bought an Android phone and was thinking of what I could use it for. With Google Voice and Skype, I could make “calls” and send text messages wherever I have an internet connection. If Google eventually enables making voice calls over wifi (like in Google Chat, and I predict they will some time this year), I think the big phone companies will start hurting, because people will want data-only plans so that they can call with Google.

    This “cable cutting” has already happened with landlines (my Mom has a dedicated phone device that does VoIP) and cable tv. So it makes sense that wireless phone providers will soon feel the effects as well. I’d really love to set up the HTC Hero that I ordered as a dedicated “landline” phone that I use with my internet connection at home.

    Of course, most people will still probably continue to use the standard bundled minutes + texts (+ data) phone plans, but I feel early adopters are just itching to pay one monthly data bill for all of their infrastructure needs. It’ll only be a matter of time before the mainstream begins to head in that direction. I think that the phone as we know it (how ridiculous is it to pay a phone plan based on the number of minutes in the plan?) will begin to die in 2011, with more emphasis on bandwidth as the infrastructure requirement.

  • December 31, 2010

    2010: A Hung Truong Year In Review

    Looking back at 2010, this year has been one of change and growth for me. I’d like to take a post and look back at what I did this year.

    January and February were kinda uneventful. I was pretty nose down trying to become a good PM at Microsoft. Oh, and I was busy making troll posts about how the iPad was gonna suck and I wrote a lot of book and music reviews.

    In March, I attended SXSW and moderated a panel that I had submitted the year before on Student Startups. I met many of my friends who I hadn’t seen in a while and met a lot of cool new people. It was from that experience that I decided I needed to stop doing what I was currently doing and change course so that I could do what I was “meant” to do. Also in March, I was rejected from the one PhD program I had applied to. In hindsight, this was probably a good thing. I’m used to rejection anyway!

    SXSW Panel

    In April I officially resigned from Microsoft as a PM after only about 7 months (and 5 managers!) on the job. I knew this was a serious decision. In hindsight, I’m glad I did it. Quitting let me focus on other cool stuff that I was meaning to get into, like iPhone (now iOS) development. In the same month I finally released an app to the iTunes App Store, something I had wanted to do for years.

    In May, I moved back to Ann Arbor to be near to my GF, which required me to pack all my crap into my Corolla and drive the whole way. I also flew to New Mexico for a wedding and got to hang out with my family. This probably explains why I have no blog posts for May 2010.

    In June I mostly basked in the glory of my funemployment and took it easy (read: I marathoned Lost). I also tinkered with my existing iPhone app and enhanced it a bit, building up my Obj-C chops. I interviewed for some jobs here and there to test out the waters, but none ended up being fruitful. The incompetence of HR departments never ceases to amaze me, but I suppose that’s a topic for a different post.

    In July I looked for some more opportunities to work with other companies. I didn’t end up teaming up with anyone, but a conversation I had during an “interview” led me to start development on Checkmate, my second app for the iPhone. I spent a fair amount of July developing and testing Checkmate. I also took a cool part-time gig with the coolest boss in history.

    August saw the release of Checkmate, which was featured in a story on Mashable! Thanks, Pete Cashmore! While Checkmate wasn’t (and it still isn’t) the perfect app, I learned a ton from developing it and gained a lot of confidence as well. I also discovered the NPR news story of that time I went on a chocolate factory tour in Seattle!

    My September was mostly spent improving Checkmate and learning about how to handle a paid app in the App Store. Doing a paid app is a quite a bit different than a free one. I also spent some time looking for an old printing press and finally scored one on craigslist!

    In October, I started working on another app that eventually became ♥s Threadless. This was the biggest undertaking I’ve done so far on iOS, and it also required me to do more complicated work in App Engine than I had done before. I also spent October tracking down supplies for my Letterpress machine, and ended up doing my first prints ever: Giraffe Coasters!

    I split my November into days where I’d work on getting better at printmaking (and coming up with stuff like these letterpress business cards) and days where I’d work on the Threadless app. I finally ended up releasing the Threadless app at the end of November. The reception of the app has been great! So far the app has 6 perfect reviews and one 4-star review. That makes me incredibly happy.

    This brings us to the current month, December. I started another app engine project that’s not quite ready for public beta yet (though I feel it will be really soon). Because of the app, Threadless was super cool and invited me to their Chicago headquarters. I finally realized one of my lifelong dreams of becoming a Threadless t-shirt model! I’ve also been hanging out in Albuquerque and spoiling my nephew rotten for a few weeks.

    And that is my 2010 year in review. One surprising thing is that many times during 2010, I was really down on myself. But looking back, I actually accomplished some neat stuff! I think it boils down to the fact that there’s still a lot of uncertainty in my life, and that’s hard to manage. But I think I’m getting better at managing it every day. In retrospect, 2010 was a great year, maybe even the best (so far).

    Looking at 2011, I see a lot of opportunity. I’m going to continue to remind myself that minor setbacks are just that. I’ll push through them and accomplish even more than I did in 2010! My role model for 2011 is this guy:

    Hopefully I’ll have some good stuff to report in a year or so!

  • December 27, 2010

    Hung Truong: Threadless Model!

    Last week I took a train out to visit Chicago for a meeting with my favorite company, Threadless! Since I wrote that app I’ve been in contact with the founder et al, and they thought it would be cool for me to check out their offices. I won’t talk about what discussions went on (I’m being held by a “frieNd-DA“), but I can say that the Threadless office is mega sweet!

    I got to hang out with some of the developers on Threadless and talked about the site and other random stuff (like t-shirt quality through the ages). I pointed out something that actually ended up being a bug that one of the dudes fixed almost immediately! Talk about transparency. At some point we were talking about how the Threadless t-shirt models are picked. Ivan (super nice guy) mentioned that the photographer might be looking for someone to model a shirt. He ended up replying and I got to model a brand new Threadless shirt in the cold, cold December Chicago air. The shirt’s called …To The Birds. Buy it today!

    The Threadless office itself is pretty nice. They moved in relatively recently so it still looks a little bare. Apparently they have big plans for decorating. I was, once again, super star struck by seeing people who I feel I know very well through their pictures on the Threadless site. I met the beard guy, Red the dog (I think it’s a Shiba Inu) and other assorted celebrities. One of the developers I met was the guy in the Mr Tee photo and another was Mario in another shirt (I couldn’t figure out which one). Oh, and I said hi to Colleen and Kristen, who I first met at SXSW!

    They let me go down to the warehouse and pick out some shirts to take home. It kind of took all the willpower in my being not to clean them out (they probably would not have let me). I got Upso, Mister Mittens and Houndstooth. I also got a cool I ♥ Threadless shirt that they don’t really sell anymore. Limited edition!

    This is probably already obvious, but Threadless is an awesome place with some awesome people making awesome things (mostly shirts). I had a blast meeting the people behind it and I hope I can come back again really soon!

  • December 06, 2010

    Letterpress Cactus Holiday Card

    Yesterday I printed out some fun cactus holiday cards and today I put them on Etsy. This is my first time making cards using a decent quality paper (Arturo Stationery from Hollander’s). I got the cactus print block from Ebay and hand-set the type that says “Happy Holidays!”

    I’m pretty happy with the result. I may end up buying the supplies to use photopolymer plates (a metal base) because this is way, way fun!

  • December 01, 2010

    Conditional GETs in App Engine

    I’m currently working on an app in Google App Engine that polls feeds periodically and then does stuff with them. I suppose I could use that pubsubhubbub thingy but I have a feeling that most feeds aren’t using this yet.

    Anyway, I did a quick naive implementation of polling about every hour or so. Apparently the feed parser I’m using is pretty inefficient because it’s eating up a lot of resources (relatively speaking) on App Engine. I remembered that the http protocol is pretty smart, and there’s a way to figure out if stuff has changed since the last time you grabbed it.

    Google’s urlfetch doesn’t seem to support conditional GETs (someone tell me if I am wrong). I looked around and found a few tutorials on how to accomplish this in Python using urllib2. The tutorials weren’t exactly what I wanted, so I had to change a few things here or there. Here’s a snippet of code that I’m using:

    import urllib2
    feed = Feed.get() #my feed object has a etag, last_modified and url property
    req = urllib2.Request(url)
    if feed.etag:
        req.add_header("If-None-Match", feed.etag)
    if feed.last_modified:
        req.add_header("If-Modified-Since", feed.last_modified)
    try:
        url_handle = urllib2.urlopen(req)
        content = url_handle.read()
        headers = url_handle.info()
        feed.etag = headers.getheader("ETag")
        feed.last_modified = headers.getheader("Last-Modified")
        feed.put()
    except Exception, e:
        logging.info(e) #just says 304 didn't change
        return
    dostuffwith(content)
    

    This handles my use case, which is doing work if the feed is new, and ignoring it if it hasn’t been modified. I could probably wrap this into a function that returned false if it the file hadn’t changed, and the content if it was new… Probably will do that next.