Hung Truong: The Blog!

  • April 29, 2011

    Delayed Gratification in Engineering and Entrepreneurship

    I read a blog post about Engineers and Delayed Gratification a while ago from ex-Googler and ex-Microsoftie Ninane Wang that made me think. She says that new engineers (like straight from school) have a hard time adjusting to the real world because they expect to be rewarded immediately for their work. In the real world, you don’t see rewards for your work for months, or even years! Her solution is to have managers provide instant feedback to their reports so they get at least some acknowledgment of their work.

    Since quitting Microsoft and setting out on my own (and even before that), I’ve had to trust that the stuff I am working on is meaningful and worthwhile. This is hard sometimes, especially if the thing I’m working on seems like a gamble. Having done the whole independent hacking thing for a while, I think I’ve built up the rolling reward cycle that Niniane mentions. Some days I’ll feel like I’m underachieving or working on something that no one will find useful. Then I’ll get a donation from someone for Instascriber (this actually happened!!!) or see another 5 star review for my Threadless app and get re-encouraged.

    At the end of the day, I think what really separates the employees from the entrepreneurs is the willingness to be unsure about something and still do it. The uncertainty is much greater when you’re working on an unproven idea, business model, or whatever, but then so are the potential rewards, too. And even if you end up failing, you learn something and are better for it.

    In some ways, delaying gratification even sort of makes sense. If you immediately were rewarded for doing something innovative, you might lose the passion (like Rocky did) and stop innovating so you can enjoy your riches. While I can’t say that delaying gratification indefinitely would be a good idea, accepting that there will be a delay is probably healthy.

  • April 25, 2011

    The Internet Is For… Downtime.

    These last few weeks have been really, really bad for the internet. I mean, in general. What with Media Temple going down due to their nameservers, Amazon EC2 going down, and also the Playstation Network refusing to let me log in… You’d think there was a cyberattack going on or something.

    My websites did not manage to dodge all of the bullets either. A few sites were down from the Media Temple thing. I also inadvertently broke a few sites here and there. After the Media Temple downtime, I wanted to try updating a few Ruby Gems to get Passenger Phusion working. Unfortunately my rails apps hadn’t been updated in forever, so updating things broke backwards compatibility. I’ve been working on getting Anime Nano back to full capacity on the newest version of Rails. I think the whole experience was a bit stressful, but probably ended up being good in the long run.

    I was also surprised to see Mapskrieg going down late last week. Apparently I hadn’t verified the domain for Google Apps and Google decided to close my account. The one that was serving Mapskrieg via App Engine. This was really annoying since all of the “act now or we’ll delete your account” emails were classified as spam in gmail and I am pretty sure I had verified the account previously. If Google doesn’t want my money then screw them. I figure I can actually serve the site for cheaper than App Engine since a few other apps live on the same server. The App Engine thing was a fun experiment but there are still too many limitations in the datastore to base a real app on it. Specifically, datastore writes cost way too much and indexes take way too much overhead in disk space (which you eventually need to pay for).

    So now I’m back to running most sites on Media Temple, though I may diversify in case Media Temple continues to have downtime issues. It was a stressful few days, but at least I got to practice my sysadmin skills a bit and update my server in the process.

  • April 08, 2011

    Mapskrieg iPhone/iPad App Launch!

    It’s been about 4 years since I announced the launch of Mapskrieg, my Google Maps and craigslist mashup web app. Since then, I’ve gone to school (again), worked for Microsoft and quit, and made a few apps. Today, I’m happy to announce the launch of my newest app, Mapskrieg for iOS!

    I’ve been working on this app for a few weeks, and I think it’s ready for public consumption. It’s basically Mapskrieg, but developed natively for the iPhone and iPad. In the past, I’ve taken a sort of iterative approach of releasing fairly minimal apps and improving on them. For example, I released Threadless as an iPhone only app and later added the iPad support. I wanted to release Mapskrieg on both platforms so the launch would have a little more bang. Plus I think the iPad app is the better of the two, and I really wanted that one to stand out for the release. I’ve been getting much more comfortable with mobile development, and I’m very happy with the rate at which I was able to conceive and release this app.

    That’s not to say I didn’t struggle or learn anything new with it. While a lot of the concepts are borrowed from my Threadless iPad app, I had to do a lot of stuff I hadn’t done before. For example, since Mapskrieg is going to rely on iAds to make money, I decided that both the iPad and iPhone versions would support iAd. Apple, in their infinite wisdom, made the split view controller a very useful and now, standard, design paradigm. Unfortunately, they don’t provide any support for using it with iAd at all. What the fucking fuck, Apple!? So I had to basically recreate the Split View (well, the landscape mode at least) in order to support iAds. It’ll be well worth it if I can rake in some iAd dough, though!

    This post also comes almost 1 year after I quit my job at Microsoft. That milestone probably deserves its own post, but I’ll just say that I have not yet regretted my decision in the very least so far. This is as fun as it gets, folks!

  • April 06, 2011

    Google, Bing, and SERP Copying: Additional Evidence?

    In the beginning of February this year there was some mild uproar about Google setting up an elaborate sting operation against Bing to prove that Bing was copying search results pages directly from Google using the Bing Toolbar. I personally thought it was a bit childish of Google to do this. All’s fair in gathering user-generated data, right?

    Fast forward to a few weeks ago. I put some code on Mapskrieg that would auto-detect a mobile device using the useragent string and show a mobile friendly site. I thought this was clever, but apparently Google thought it was cloaking. Oops! My bad. I took a hit on my Google search rankings. Once I fixed the issue my hits from Google have been coming back up slowly.

    I looked at Google Analytics to see how the organic search referrals had changed, and I noticed something interesting. Not only had the referrals from Google gone down, the ones from Yahoo and Bing did as well. Perhaps Yahoo and Bing noticed the “cloaking” behavior, too (Yahoo is just using Bing results in their SERPs now). If so, then Bing was a bit slower than Google. See the charts below:

    I started getting punished by Google around the 15th of March. Bing seems to have taken a few days to lower my rankings (and thus the # of clicks). My website’s recovery from punishment shows a similar upward trend, even though the site was no longer “cloaking” for about a week before that recovery. This suggests (at least, to me) that Bing really is copying Google’s search results pages. Otherwise they have a very similar method of cloaking detection, a similar policy for punishment, and a similar timeline for reducing the punishment for cloaking… At this point I feel that there are too many coincidences for this to be mere chance.

    I was previously on Bing’s side because I figured that the Google data was just one data point out of many that they use. This example makes it seem like Google’s data is THE data point, or at least a major, major part of their “algorithm.”

    Having stated all of this, my experience is only a sample size of 1, but I’m sure other webmasters have similar data sitting around. I’d be interested in seeing if there’s more evidence for Google’s stance. If I were Google, I’d be analyzing data from Google Analytics on other websites to see if they agree (I have a feeling they’re allowed to use this data anonymously).

    Full Disclosure (because why not?): I used to work for Microsoft AdCenter, but I haven’t been involved with their operations for over a year now. I have a can of Bing soda water on my shelf but I mostly use Google (unless I want to use Bing ironically).

    Edit: I’ve gotten some really great comments from Hacker News. I thought I’d paraphrase a few and write my comments on them. If you want to see the actual comments, go directly to my submission.

    Comment: How could Bing get SERP info from just the toolbar?

    My response: 1) My site drops from many SERP listings, Bing Toolbar stops getting click info for my site so the listings drop from Bing as well.

    Comment: It might not be cloaking punishment. It could just be an outside factor, like people generally searching for the site’s keywords less or a competitor coming in and being better.

    My response: The traffic to Mapskrieg is pretty darn regular and this was a significant drop for both search engines. Through trial and error the only thing that changed my rankings back was fixing the user agent thing.

    Comment: Google suggested that the changes to SERPs took months to propagate and this data only took about a day.

    My response: Okay, that’s a good point!

    The response from Hacker News has been great and really made me think more about the issue. I’m not sure if Bing really is copying from Google, but I thought this was a worthwhile data point to look at. Maybe someone else has some data they’d like to share as well.

  • March 23, 2011

    ♥s Threadless for iPad Release!

    About a week ago I thought about working some more on ♥s Threadless, my fan made iPhone app. I originally designed it for the small iOS devices like the iPhone and iPod touch, and figured I would do the proper iPad version later. I got the itch, so I got to work figuring out what an app on the bigger screen would look like.

    I knew that I wanted a grid-y layout as opposed to the list-y one of the iPhone/iPod, which was partly the reason why I hadn’t done the iPad version yet. Lists on iOS are easy because they’re given to you for free. Grids are a whole other beast. Luckily, I ran into a framework (AQGridView) on GitHub that does grid layouts in a tableview-y sort of paradigm. The framework was still a little beta (or alpha) as I had to go in and change a few things that were crashing, but it did succeed in making my job a lot easier overall. I’d like to try contributing to that code to improve it, but I guess that’s another post altogether.

    After getting the grid stuff working, I decided to use a modal pop up view to display the images and sharing options all in one view. Since the iPad has much more screen real estate, it’s easy to design things without running into space issues. You don’t, however, want to just stick a billion buttons in because you can. I think this design does a good job of showing enough stuff to the user, but not too much stuff too soon.

    I still have some bugs to fix, mainly with memory management due to the grid view stuff. If you have any suggestions, feel free to comment on this blog!

    Hopefully the iPad app continues the mission of the iPhone app, which is to provide a really easy and fun way to browse and share awesome Threadless designs! I may have been an early iPad doubter, but I really believe that it’s a great device for consuming content. Even on my iPad 1, the designs and colors just pop on the app. At least I think so. But you don’t have to take my word for it!

    Get the app if you don’t have it already!