<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Hung Truong: The Blog!</title>
	<atom:link href="http://www.hung-truong.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.hung-truong.com/blog</link>
	<description>I say potato, you say potato...</description>
	<lastBuildDate>Fri, 03 May 2013 03:06:25 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Hacking Google&#8217;s Text To Speech &#8220;API&#8221;</title>
		<link>http://www.hung-truong.com/blog/2013/04/26/hacking-googles-text-to-speech-api/</link>
		<comments>http://www.hung-truong.com/blog/2013/04/26/hacking-googles-text-to-speech-api/#comments</comments>
		<pubDate>Sat, 27 Apr 2013 01:44:46 +0000</pubDate>
		<dc:creator>Hung</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Hack]]></category>

		<guid isPermaLink="false">http://www.hung-truong.com/blog/?p=2665</guid>
		<description><![CDATA[When I was at my previous job, one task I had was localizing a large set of phrases to multiple languages, both in text and audio files. I did this by using the awesome Google Translate API. The Google Translate &#8230; <a href="http://www.hung-truong.com/blog/2013/04/26/hacking-googles-text-to-speech-api/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>When I was at my previous job, one task I had was localizing a large set of phrases to multiple languages, both in text and audio files. I did this by using the awesome <a href="https://developers.google.com/translate/">Google Translate API</a>.</p>
<p>The <a href="http://translate.google.com/">Google Translate</a> website has features for translating text and playing audio of it in the translated language. There&#8217;s no official API for getting audio, though. Luckily, I&#8217;ve never let a lack of an official API stop me before. </p>
<p>I had read a few old blog posts about how Google&#8217;s undocumented TTS API could be used, albeit with a 100 character limit. Going over 100 characters would result in a truncated audio file. Some of the text I needed to output to audio was longer than that. It turns out that with a little bit of Chrome web inspector, I could replicate the functionality of the Google Translate site.</p>
<p>The first thing to check out is the url scheme of the audio files, which looks like this:</p>
<pre class="prettyprint"><code>http://translate.google.com/translate_tts?ie=UTF-8&#038;q=hello%20world&#038;tl=en&#038;total=1&#038;idx=0&#038;textlen=11&#038;prev=input
</code></pre>
<p>Breaking down the parameters, &#8220;ie&#8221; is the text&#8217;s encoding, &#8220;q&#8221; is the text to convert to audio, &#8220;tl&#8221; is the text language, &#8220;total&#8221; is the total number of chunks (more on that later), &#8220;idx&#8221; is which chunk we&#8217;re on, &#8220;textlen&#8221; is the length of the text in that chunk and &#8220;prev&#8221; is not really important.</p>
<p>The Google Translate site itself gets around its own character limit by breaking big blocks of text into &#8220;chunks&#8221;. It seems to try and break along punctuation, but for super long sentences it will also break in the middle of a sentence, which ends up sounding pretty weird. Using the Gettysburg Address as an example, Google makes a request for the chunk &#8220;civil war&#8221;. </p>
<p><a href="http://www.hung-truong.com/blog/wp-content/uploads/2013/04/Gettysburg-Address.png" rel="lightbox[2665]"><img src="http://www.hung-truong.com/blog/wp-content/uploads/2013/04/Gettysburg-Address-500x92.png" alt="Gettysburg Address" width="500" height="92" class="aligncenter size-medium wp-image-2675" /></a></p>
<p>In order to download audio files for longer chunks of text, I wrote up a python script that broke the text down and made separate requests to Google. The script would write all of the files to one file, and somehow, it worked! Just to be safe, I also set my script up to use Google&#8217;s Flash player as the referer (sic) and set the user agent to a version of Firefox. </p>
<p>At the time, I didn&#8217;t want to release the code as it was being used for some uber top secret stuff. But since I&#8217;m not working on that project anymore, I refactored the original code into a command line Python script. Along the way I had to learn how to use Python&#8217;s <a href="http://docs.python.org/dev/library/argparse.html">argparse</a>, which is a pretty neat way of parsing command line arguments. </p>
<p>The project is available on Github right now, so <a href="https://github.com/hungtruong/Google-Translate-TTS">go grab it and try it out</a>. If you&#8217;re curious what the output sounds like, here&#8217;s a recording of female Abraham Lincoln reciting the <a href="http://www.hung-truong.com/blog/wp-content/uploads/2013/04/Gettysburg.mp3">Gettysburg Address</a> (yes, she mispronounces some words). One fun thing to try out is outputting clashing input and output languages. Here&#8217;s Female Japanese Abraham Lincoln reciting <a href="http://www.hung-truong.com/blog/wp-content/uploads/2013/04/Gettysbaago.mp3">the same speech</a> (she just seems to be spelling words, slacker).</p>
<p>If you enjoyed this hack, let me know and I could post some other ones I&#8217;ve been working on. And if you find a way to improve the code (probably not difficult at all) go ahead and submit a pull request on Github. And if you&#8217;re from Google, please don&#8217;t shut down my Gmail and Adsense accounts.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hung-truong.com/blog/2013/04/26/hacking-googles-text-to-speech-api/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
<enclosure url="http://translate.google.com/translate_tts?ie=UTF-8&amp;q=hello%20world&amp;tl=en&amp;total=1&amp;idx=0&amp;textlen=11&amp;prev=input" length="4896" type="" />
<enclosure url="http://www.hung-truong.com/blog/wp-content/uploads/2013/04/Gettysburg.mp3" length="404640" type="audio/mpeg" />
<enclosure url="http://www.hung-truong.com/blog/wp-content/uploads/2013/04/Gettysbaago.mp3" length="878548" type="audio/mpeg" />
		</item>
		<item>
		<title>Google Reader and Skating to Where The Puck Used To Be</title>
		<link>http://www.hung-truong.com/blog/2013/03/15/google-reader-and-skating-to-where-the-puck-used-to-be/</link>
		<comments>http://www.hung-truong.com/blog/2013/03/15/google-reader-and-skating-to-where-the-puck-used-to-be/#comments</comments>
		<pubDate>Fri, 15 Mar 2013 21:43:24 +0000</pubDate>
		<dc:creator>Hung</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Google Reader]]></category>

		<guid isPermaLink="false">http://www.hung-truong.com/blog/?p=2653</guid>
		<description><![CDATA[I just wrote a couple of tweets about this, but maybe this is a better blog post subject. Google Reader is shutting down, apparently because its user base is shrinking and Google wants to focus on fewer products. Because of &#8230; <a href="http://www.hung-truong.com/blog/2013/03/15/google-reader-and-skating-to-where-the-puck-used-to-be/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I just wrote a couple of tweets about this, but maybe this is a better blog post subject.</p>
<p>Google Reader is shutting down, apparently because its user base is shrinking and Google wants to focus on fewer products. Because of the huge void this will leave, many startups are rushing to fill the space that Google Reader took up. So far I&#8217;ve heard of plans from Digg, Flipboard, Zite (whatever that is), Feedly, and maybe some others.</p>
<p>While this might be a good opportunity for those startups, it strikes me as odd. There&#8217;s a concept called being a &#8220;fast follower&#8221; where you copy some innovative company&#8217;s product immediately after they release it. Think of Facebook&#8217;s clone of that Snapchat app. What we&#8217;re seeing now is sort of the &#8220;slow(est) follow.&#8221; </p>
<p>I suppose it makes sense to go into a space that you know is going to swell up with demand, but honestly, how much longer does the classic Google Reader style app have left? How much of the original Google Reader market are you going to get? Will you be able to re-create the community that the sharebros loved so much? On top of that, do any of these new products have a solid plan on monetization?</p>
<p>To put it another way, what is the opportunity cost of rebuilding Google Reader (even if it&#8217;s a &#8220;reimagined&#8221; version) versus putting time into another product that might actually be new and useful? At this point, it&#8217;s probably not worth it considering how many others are eager to clone Reader.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hung-truong.com/blog/2013/03/15/google-reader-and-skating-to-where-the-puck-used-to-be/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iOS Photo Editing Controls With A Custom Camera Overlay</title>
		<link>http://www.hung-truong.com/blog/2013/01/23/ios-photo-editing-controls-with-a-custom-camera-overlay/</link>
		<comments>http://www.hung-truong.com/blog/2013/01/23/ios-photo-editing-controls-with-a-custom-camera-overlay/#comments</comments>
		<pubDate>Wed, 23 Jan 2013 17:22:41 +0000</pubDate>
		<dc:creator>Hung</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[iOS]]></category>

		<guid isPermaLink="false">http://www.hung-truong.com/blog/?p=2647</guid>
		<description><![CDATA[This is one of those blog posts that&#8217;s basically for me and anyone else who cares to Google these search terms, so yeah. I&#8217;m currently working on an app that does camera capture. Instead of using the normal Apple control, &#8230; <a href="http://www.hung-truong.com/blog/2013/01/23/ios-photo-editing-controls-with-a-custom-camera-overlay/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>This is one of those blog posts that&#8217;s basically for me and anyone else who cares to Google these search terms, so yeah.</p>
<p>I&#8217;m currently working on an app that does camera capture. Instead of using the normal Apple control, I&#8217;m using a custom overlay. Typically to do this, you do two things: set the UIImagePickerController&#8217;s &#8220;allowsEditing&#8221; to YES and add your overlay view to the controller&#8217;s &#8220;cameraOverlayView&#8221; view. Oh, and you also set the sourceType to UIImagePickerControllerSourceTypeCamera, obviously.</p>
<p>I learned through searching about 10 StackOverflow questions and doing my own testing that the custom photo editing control only shows up when you show the normal apple camera controls. So unless you want to do some weird hacking to get your overlay to show up over the normal controls and then have them disappear when the photo is taken, it&#8217;s not possible to use a custom overlay and still get the built in photo editing tool. </p>
<p>Unless someone wants to correct me&#8230;</p>
<p>The annoying part is this is not captured in Apple&#8217;s official documentation (or anywhere, really). So hopefully this blog post helps someone who is trying to use a custom overlay and the built-in Apple photo cropping tool.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hung-truong.com/blog/2013/01/23/ios-photo-editing-controls-with-a-custom-camera-overlay/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pharma Hack Update: Finally Gone</title>
		<link>http://www.hung-truong.com/blog/2013/01/13/pharma-hack-update-finally-gone/</link>
		<comments>http://www.hung-truong.com/blog/2013/01/13/pharma-hack-update-finally-gone/#comments</comments>
		<pubDate>Sun, 13 Jan 2013 19:57:58 +0000</pubDate>
		<dc:creator>Hung</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Meta]]></category>

		<guid isPermaLink="false">http://www.hung-truong.com/blog/?p=2644</guid>
		<description><![CDATA[A good while ago, I wrote a blog post about how my blog was pharma hacked, and I thought I had gotten rid of it. I was actually extremely wrong, and it&#8217;s taken about half a year of off/on again &#8230; <a href="http://www.hung-truong.com/blog/2013/01/13/pharma-hack-update-finally-gone/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>A good while ago, I wrote a blog post about how my blog was <a href="http://www.hung-truong.com/blog/2012/06/21/pharma-hacked/">pharma hacked</a>, and I thought I had gotten rid of it. I was actually extremely wrong, and it&#8217;s taken about half a year of off/on again fiddling to get rid of the infection for good. I thought I&#8217;d write up what I did in case anyone else has issues with this hack.</p>
<p>In order to remove it, I tried searching for solutions from other bloggers. They got me to a certain point, but after following the directions and letting my blog sit for a week or so, I&#8217;d use the Google Webmasters feature to &#8220;fetch as Googlebot&#8221; and find that my site was reinfected.</p>
<p>Here&#8217;s a step by step summary of what I had to do to finally get rid of the nasty pharma hack.</p>
<p>I downloaded the latest tar.gz from WordPress <a href="http://wordpress.org/download/">here</a> and extracted it to my root web directory. My blog lives in the subfolder &#8220;/blog/&#8221; so I just moved the wp-config.php file from /blog/ to the /wordpress directory, then I renamed the blog folder to something else and renamed wordpress to blog. I found that I&#8217;d also have to re-set the permalink settings to get pages besides my home page to show up correctly.</p>
<p>My main mistake was copying the wp-contents subfolders back to the /blog/ directory. I assumed that the main infected file (wp-loads.php) was the only culprit. It turned out that I also had multiple php backdoors in my wp-contents directories, in /plugins, /themes, and even /uploads.</p>
<p>I basically had to re-download anything in plugins and themes so that I knew those directories would be fresh. I ran a command to delete anything in /uploads that was a .php file, as that was how the backdoor worked. I believe it was something like</p>
<p><code>find /path/to/uploads -name "*.php" | xargs rm</code></p>
<p>but you probably want to double check that before running it on your server.</p>
<p>I also noticed that some backdoors existed in the root of my web directory, where I keep my portfolio. If you have other directories besides your blog in your web root, it&#8217;s probably worthwhile to check those out.</p>
<p>At this point I was pretty close to having a clean WordPress install. But for some reason my site would still eventually fall to the pharma hack. I checked my server logs and it looked like someone was modifying header.php in my theme directory from the admin panel. This was pretty surprising because I thought I had my password locked down pretty tight. I am actually still not sure whether the password was compromised, or some other feature in php (or a cookie) allowed the hacker to access the admin theme editor. Either way I&#8217;m pretty sure the header.php was hacked to write a new backdoor file which would then create other backdoors. Pretty smart!</p>
<p>To fix this, I put another layer of security on my wp-admin directory with a .htaccess and .htpasswd file. I also updated my password to a 40 character random string that even I can&#8217;t remember. Finally, I just erased the file that does theme editing in the admin interface since I never use it and it seems like a really weak vulnerability.</p>
<p>So far, the pharma hack hasn&#8217;t resurfaced and it&#8217;s been about two weeks. I&#8217;m going to say that I&#8217;m slightly confident it won&#8217;t return (unless there&#8217;s another vulnerability in WordPress that pops up).</p>
<p>I feel like I learned quite a bit about security while playing whack-a-mole with this hack. I got to look at the backdoor files and figure out how they were hidden and obfuscated, and eventually found what I think was the root of the problem in the WordPress theme editor. I also hacked together some scripts to show recently modified files (hacked together from stuff I found doing some searches). If I end up getting hacked like this again, I&#8217;ll probably be able to remove it faster. </p>
<p>For a while, I was considering moving to Jekyll for my blog. But that seemed like a bit too much work moving posts and comments, and learning a new blogging system, especially for how infrequently I blog nowadays. For now, I will stick with WordPress with all of its vulnerabilities, which have hopefully been mitigated with the few extra precautions I&#8217;ve added.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hung-truong.com/blog/2013/01/13/pharma-hack-update-finally-gone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Winning at Jeopardy</title>
		<link>http://www.hung-truong.com/blog/2012/12/12/winning-at-jeopardy/</link>
		<comments>http://www.hung-truong.com/blog/2012/12/12/winning-at-jeopardy/#comments</comments>
		<pubDate>Wed, 12 Dec 2012 15:57:50 +0000</pubDate>
		<dc:creator>Hung</dc:creator>
				<category><![CDATA[Dream]]></category>

		<guid isPermaLink="false">http://www.hung-truong.com/blog/?p=2638</guid>
		<description><![CDATA[I just had another dream that felt very real up to the moment when I checked my phone and realized I hadn&#8217;t won on Jeopardy. I might need to start up a series on my blog about weird dreams if &#8230; <a href="http://www.hung-truong.com/blog/2012/12/12/winning-at-jeopardy/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I just had another dream that felt very real up to the moment when I checked my phone and realized I hadn&#8217;t won on Jeopardy. I might need to start up a series on my blog about weird dreams if this keeps up.</p>
<p>There was a news story on AnnArbor.com yesterday about a local <a href="http://annarbor.com/entertainment/jan-rishoi-ann-arbor-jeopardy/">Ann Arbor guy appearing on Jeopardy</a> that I tweeted from my parody account, so that&#8217;s probably what fueled this weird dream. </p>
<p>For some reason I&#8217;m on the Jeopardy website, checking out the hall of fame. I vaguely recall having been on Jeopardy. This is cool because my old friend Susan was always trying to get onto Jeopardy and now I can brag to her that I was on it. I investigate further and realize that not only did I appear, but I won! My total winnings amounted to around $21,000 in June of 2011. At this point I&#8217;m wondering why I never got the check from Alex.</p>
<p>The first thing I did was search for &#8220;jeopardy&#8221; in my gmail (this is also what I do in real life if I need to remember something). This was harder than I expected, because spelling &#8220;jeopardy&#8221; in a dream is harder than in real life. That only brought up two random emails, so I checked the hall of fame webpage again. It listed that my email address on file was &#8220;hungtron@gmail.com.&#8221; So apparently a typo was all that stood in the way of me and my prize money. </p>
<p>The website had an email form to fill out (as well as a fax number) for corrections, etc. I didn&#8217;t really question why the public-facing website had so much information on it. As I raced to fill out my correct information &#8220;I regret to inform you that you have not paid me yet, and I am the Hung Truong who won back in 2011&#8243;, I woke up to the sobering reality that I was never a Jeopardy winner.</p>
<p>That&#8217;s always the hardest moment. Realizing that you didn&#8217;t win at Jeopardy, don&#8217;t have an awesome dog, etc. sucks. But I guess I can take consolation in the fact that today is a new day where literally anything is possible (except for winning at Jeopardy, obviously).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hung-truong.com/blog/2012/12/12/winning-at-jeopardy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Weird Dream Starring Cameron Diaz and Ellen Page</title>
		<link>http://www.hung-truong.com/blog/2012/12/10/weird-dream-starring-cameron-diaz-and-ellen-page/</link>
		<comments>http://www.hung-truong.com/blog/2012/12/10/weird-dream-starring-cameron-diaz-and-ellen-page/#comments</comments>
		<pubDate>Mon, 10 Dec 2012 15:28:12 +0000</pubDate>
		<dc:creator>Hung</dc:creator>
				<category><![CDATA[Dream]]></category>

		<guid isPermaLink="false">http://www.hung-truong.com/blog/?p=2634</guid>
		<description><![CDATA[I had a weird dream that won&#8217;t fit into Twitter, so I might as well write it down here since my blog hasn&#8217;t seen much love lately. This was the sort of dream where I&#8217;m watching a movie. The movie &#8230; <a href="http://www.hung-truong.com/blog/2012/12/10/weird-dream-starring-cameron-diaz-and-ellen-page/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I had a weird dream that won&#8217;t fit into Twitter, so I might as well write it down here since my blog hasn&#8217;t seen much love lately.</p>
<p>This was the sort of dream where I&#8217;m watching a movie. The movie starred <a href="http://www.imdb.com/name/nm0000139/">Cameron Diaz</a> and <a href="http://www.imdb.com/name/nm0680983/">Ellen Page</a> as two roommates (or some people living in the same house) who have recently become zombified. Apparently they&#8217;re fighting to survive in a dream/cyber world with other people in the same predicament. Now that I think of it, the plot resembles a modern <a href="http://www.imdb.com/title/tt0094721/">Beetlejuice</a>.</p>
<p>For some reason, <a href="http://www.imdb.com/name/nm0275486/?ref_=fn_al_nm_1">Tina Fey</a> was cast as their PR specialist. In one scene, Page and Diaz dump off Fey at the beach, along with one of their boyfriends. Apparently they don&#8217;t want their significant others and family worrying about the fact that they&#8217;re zombies now, so they leave without a word. I wasn&#8217;t sure how the family didn&#8217;t notice the smell (maybe they were being polite).</p>
<p>If someone can get this green-lighted I&#8217;m sure I can fill in the rest of the details.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hung-truong.com/blog/2012/12/10/weird-dream-starring-cameron-diaz-and-ellen-page/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SXSW Panel Idea: Mashups &#8211; Noble Bootstrapping or Downright Stealing?</title>
		<link>http://www.hung-truong.com/blog/2012/07/22/sxsw-panel-idea-mashups-noble-bootstrapping-or-downright-stealing/</link>
		<comments>http://www.hung-truong.com/blog/2012/07/22/sxsw-panel-idea-mashups-noble-bootstrapping-or-downright-stealing/#comments</comments>
		<pubDate>Mon, 23 Jul 2012 02:09:23 +0000</pubDate>
		<dc:creator>Hung</dc:creator>
				<category><![CDATA[Mashup]]></category>
		<category><![CDATA[SXSW]]></category>

		<guid isPermaLink="false">http://www.hung-truong.com/blog/?p=2623</guid>
		<description><![CDATA[I checked SXSW today and noticed that the deadline for panel proposals is tonight. I originally wasn&#8217;t going to post anything, but I sat and thought for a bit about things I know enough about to propose/speak about at a &#8230; <a href="http://www.hung-truong.com/blog/2012/07/22/sxsw-panel-idea-mashups-noble-bootstrapping-or-downright-stealing/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<div id="attachment_2624" class="wp-caption aligncenter" style="width: 510px"><a href="http://www.hung-truong.com/blog/wp-content/uploads/2012/07/mashe.jpeg" rel="lightbox[2623]"><img src="http://www.hung-truong.com/blog/wp-content/uploads/2012/07/mashe-500x332.jpeg" alt="" title="masher" width="500" height="332" class="size-medium wp-image-2624" /></a><p class="wp-caption-text">Some rights reserved by Adam Mulligan</p></div>
<p>I checked SXSW today and noticed that the deadline for panel proposals is tonight. I originally wasn&#8217;t going to post anything, but I sat and thought for a bit about things I know enough about to propose/speak about at a conference. I remembered the whole craigslist incident and thought it would be interesting to propose a panel discussion about the state of mashups today.</p>
<div id="attachment_2626" class="wp-caption aligncenter" style="width: 510px"><a href="http://www.hung-truong.com/blog/wp-content/uploads/2012/07/potato.jpeg" rel="lightbox[2623]"><img src="http://www.hung-truong.com/blog/wp-content/uploads/2012/07/potato-500x334.jpeg" alt="" title="potato" width="500" height="334" class="size-medium wp-image-2626" /></a><p class="wp-caption-text">Some rights reserved by elana&#8217;s pantry</p></div>
<p>In the past, mashups were held to a pretty high opinion. The proper mashup might be able to take two things and simplify a process to critical acclaim. I think in those days, mashups weren&#8217;t thought of as startups or businesses, just small tools that people could use. Flash forward to today and sites like Mapskrieg and Padmapper (and others like AirBnB) are being C&#038;Ded for their terms of use violations. Something happened in the startup world that made mashups into a viable threat, which the bigger players did not approve of.</p>
<p>While the term &#8220;mashup&#8221; seems a bit archaic now, I think it would be interesting to revisit that term and see what it means today. Take some pioneers of mashing up and some new startups and get them talking about stuff.</p>
<div id="attachment_2627" class="wp-caption aligncenter" style="width: 510px"><a href="http://www.hung-truong.com/blog/wp-content/uploads/2012/07/2270212058_13b4ef1e73_z.jpeg" rel="lightbox[2623]"><img src="http://www.hung-truong.com/blog/wp-content/uploads/2012/07/2270212058_13b4ef1e73_z-500x333.jpeg" alt="" title="" width="500" height="333" class="size-medium wp-image-2627" /></a><p class="wp-caption-text">Some rights reserved by 427</p></div>
<p>In other news, it looks like the Panel Picker requires some kind of &#8220;visual resource&#8221; like a video or slideshow or something. I don&#8217;t see how my proposal could be improved by that (it&#8217;s pretty cut and dry) so I&#8217;ll probably just link to this blog post and insert a lot of unrelated pictures of things being mashed up. CC licensed, of course.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hung-truong.com/blog/2012/07/22/sxsw-panel-idea-mashups-noble-bootstrapping-or-downright-stealing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>On Mapskrieg and craigslist Cease and Desist Requests</title>
		<link>http://www.hung-truong.com/blog/2012/06/24/on-mapskrieg-and-craigslist-cease-and-desist-requests/</link>
		<comments>http://www.hung-truong.com/blog/2012/06/24/on-mapskrieg-and-craigslist-cease-and-desist-requests/#comments</comments>
		<pubDate>Mon, 25 Jun 2012 03:14:37 +0000</pubDate>
		<dc:creator>Hung</dc:creator>
				<category><![CDATA[MapsKrieg]]></category>
		<category><![CDATA[Eulogy]]></category>

		<guid isPermaLink="false">http://www.hung-truong.com/blog/?p=2600</guid>
		<description><![CDATA[As I mentioned on Twitter a while back, I got a cease and desist request from craigslist a couple of weeks ago for Mapskrieg (my craigslist + Google Maps mashup for web and iOS). This request came at a pretty &#8230; <a href="http://www.hung-truong.com/blog/2012/06/24/on-mapskrieg-and-craigslist-cease-and-desist-requests/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.hung-truong.com/blog/wp-content/uploads/2007/05/logo.png" rel="lightbox[2600]"><img src="http://www.hung-truong.com/blog/wp-content/uploads/2007/05/logo.png" alt="" title="MapsKrieg" width="287" height="59" class="aligncenter size-full wp-image-554" /></a></p>
<p>As I mentioned on Twitter a while back, I got a cease and desist request from craigslist a couple of weeks ago for <a href="http://www.hung-truong.com/blog/2007/05/06/mapskrieg-craigslist-google-maps-mashup-launch/">Mapskrieg</a> (my craigslist + Google Maps mashup for web and iOS). This request came at a pretty bad time (right before I was to move from Chicago to Ann Arbor). I quickly agreed to it and removed the app (I didn&#8217;t really have time or money to fight a lawsuit). I also added a passive-aggressive note on <a href="http://www.mapskrieg.com/">mapskrieg.com</a> that you can still read if you&#8217;d like. I contacted a reporter at PandoDaily since I had seen a few other tweets about C&#038;Ds from craigslist. He proceeded to write a pretty badly researched article (he originally was going to post that I made housingmaps.com) that got very little attention.</p>
<p>Fast forward to Friday and I got a tweet that Mapskrieg&#8217;s competitor, <a href="http://www.padmapper.com/">Padmapper</a>, also got a C&#038;D. The internet erupts in anger and I realize that I forgot to write a eulogy for Mapskrieg! While I won&#8217;t get too deep into the politics of the current situation (I kinda think it&#8217;s like complaining about getting a speeding ticket after successfully speeding for 5 years without being caught), I will write a bit about Mapskrieg since it&#8217;s kind of a nostalgic topic for me.</p>
<p>The success of Mapskrieg was largely an accident. It wasn&#8217;t born out of a desire to build a business or anything like that. I built it because 1) I had just been <a href="http://www.hung-truong.com/blog/2007/03/27/google-college-days-interview-and-visit-impressions-verdict/">rejected for a job at Google</a> and wanted to prove to them that I was a false negative and 2) I accepted an offer to go to Michigan for my Master&#8217;s degree and I needed to find a place to live. Mapskrieg killed two birds with one stone.</p>
<p>While I had intended for Mapskrieg to simply show me apartment listings in Ann Arbor (something that housingmaps.com didn&#8217;t and still doesn&#8217;t do), I found that the scraper I wrote could just as easily apply to any of the other craigslist areas in the US and Canada. I decided to go large scale and slap some Google Adsense ads on there to help pay for the server. I sent a message to Mashable and they were nice enough to do a writeup of the service. This led to other stories from <a href="http://lifehacker.com/258969/find-an-apartment-with-google-mapscraigslist-mashup">Lifehacker</a> and other cool blogs. Apparently this bootstrapped Mapskrieg to the point where it had enough Google juice to show up in a lot of search engine results pages. I learned quite a lot about SEO and advertising from running Mapskrieg as a result. I won&#8217;t go too far in detail about how much it ended up making, but at one point it made enough to pay for my rent, which was pretty sweet.</p>
<p>During grad school, I was too busy to add any improvements to Mapskrieg. After my first semester I realized that the page loads were getting slower and slower. Mapskrieg was slowly losing visitors. This was because I foolishly kept all listings in the database and pretty much never cleaned up or deleted old ones. The database got to millions and millions of rows or something equally ridiculous. I wrote a script that automated the process of pruning listings. Aside from a few random modifications (including porting Mapskrieg to Google App Engine, then reverting it), that was the last update I made to Mapskrieg. While Mapskrieg started to show its age (using technology from 2007 that I wrote when I was a noob), a new competitor came along that made it even more crappy looking: Padmapper. </p>
<p>(This is starting to sound like some kind of History Channel documentary).</p>
<p>While I could&#8217;ve attempted to go head on with Padmapper, I was instead having fun doing other projects like Troubadour Mobile and working at random places like Microsoft and Threadless. Mapskrieg was a really good source of passive income but I always figured that craigslist would contact me to have it taken down some day. I didn&#8217;t really want to put a lot of work into something that I had a feeling would eventually be sued. My hunch was correct as I got that cease and desist request last May.</p>
<p>I&#8217;m sad to see craigslist taking this kind of action against Mapskrieg, Padmapper and other sites, but I can&#8217;t say it&#8217;s too surprising. Probably the most surprising part is how long it took them to actually do it. I don&#8217;t think these sites ever operated in some kind of legal gray area; they had always been violating terms. My personal defense is that Mapskrieg was always a search engine. If craigslist wants to order Mapskrieg to cease and desist, they should also order Google to do the same. Actually, maybe Google should take the initiative and remove craigslist from their search index preemptively.</p>
<p>Mapskrieg holds a special place in my heart, partly because it was the one my biggest successes (so far). Also partly because the name is ridiculous. I have a feeling that putting Mapskrieg on my resume opened up doors that would&#8217;ve been closed to me otherwise. Mapskrieg did what it was supposed to do and never really evolved, but I never expected it to. If we can find a way to remember Mapskrieg in our hearts, then it will never truly be dead (plus I have a backup of it somewhere on another server).</p>
<p>Mapskrieg: rest in peace. </p>
<p>Born: May 6th, 2007.<br />
Died: May 21st, 2012.</p>
<p>(P.S. If you&#8217;re interested in reading about how I made Mapskrieg, read this series of blog posts. It&#8217;s kind of an interesting look into the work ethic of 5-years-ago Hung):</p>
<p><a href="http://www.hung-truong.com/blog/2007/04/05/craigslist-and-google-maps-mashup-thingy-day-1/">Part 1</a><br />
<a href="http://www.hung-truong.com/blog/2007/04/06/craigslist-and-google-maps-mashup-thingy-day-2/">Part 2</a><br />
<a href="http://www.hung-truong.com/blog/2007/04/08/craigslist-and-google-maps-mashup-thingy-day-3/">Part 3</a><br />
<a href="http://www.hung-truong.com/blog/2007/04/08/craigslist-and-google-maps-mashup-thingy-day-4/">Part 4</a><br />
<a href="http://www.hung-truong.com/blog/2007/04/10/craigslist-and-google-maps-mashup-thingy-day-5-cakephp/">Part 5</a><br />
<a href="http://www.hung-truong.com/blog/2007/04/12/craigslist-and-google-maps-mashup-thingy-day-6-mysql-refactoring/">Part 6</a><br />
<a href="http://www.hung-truong.com/blog/2007/04/21/craigslist-and-google-maps-mashup-thingy-day-7-asynchronous-javascript-and-xml/">Part 7</a><br />
<a href="http://www.hung-truong.com/blog/2007/04/22/craigslist-and-google-maps-mashup-thingy-day-8-cakephp-routing-and-caching/">Part 8</a><br />
<a href="http://www.hung-truong.com/blog/2007/04/25/craigslist-and-google-maps-mashup-thingy-day-9-css-foo-and-cakephp-helpers/">Part 9</a><br />
<a href="http://www.hung-truong.com/blog/2007/04/28/craigslist-and-google-maps-mashup-thingy-day-10-custom-controls-and-housekeeping/">Part 10</a><br />
<a href="http://www.hung-truong.com/blog/2007/04/29/craigslist-and-google-maps-mashup-thingy-day-11-more-random-code/">Part 11</a><br />
<a href="http://www.hung-truong.com/blog/2007/05/01/craigslist-and-google-maps-mashup-thingy-day-1213-dot-com-and-cities/">Part 12</a><br />
<a href="http://www.hung-truong.com/blog/2007/05/02/craigslist-and-google-maps-mashup-thingy-day-14-getting-jquery-and-prototype-to-work-together/">Part 13</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.hung-truong.com/blog/2012/06/24/on-mapskrieg-and-craigslist-cease-and-desist-requests/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Pharma Hacked!</title>
		<link>http://www.hung-truong.com/blog/2012/06/21/pharma-hacked/</link>
		<comments>http://www.hung-truong.com/blog/2012/06/21/pharma-hacked/#comments</comments>
		<pubDate>Fri, 22 Jun 2012 02:55:48 +0000</pubDate>
		<dc:creator>Hung</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.hung-truong.com/blog/?p=2594</guid>
		<description><![CDATA[I noticed that the Google results for my blog have been showing ads for pharmaceuticals. I am not actively trying to sell drugs, so I figured this was a hack. I ended up nuking the wp directory for this blog &#8230; <a href="http://www.hung-truong.com/blog/2012/06/21/pharma-hacked/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I noticed that the Google results for my blog have been showing ads for pharmaceuticals. I am not actively trying to sell drugs, so I figured this was a hack. </p>
<p>I ended up nuking the wp directory for this blog and re-installing plugins/images. I think the site&#8217;s clean now but it&#8217;s hard to tell since the &#8220;fetch as Googlebot&#8221; feature in Google Webmaster tools seems to show stale data. I&#8217;m not sure whether to blame Cloudflare, Google or myself.</p>
<p>Hopefully my Google results for this blog clear up in a few days or so. The weird part of the hack is that normal visitors are not affected. So the malware writers are apparently trying to sell stuff to Google. Of course, they&#8217;re just trying to raise their Google rank by inserting links and not being caught by being too obvious. But it&#8217;s interesting that the hack is transparent to normal people unless you check the Google cache.</p>
<p>Oh and sorry if you came here looking for the pharmaceuticals. You&#8217;ll just have to get them somewhere else.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hung-truong.com/blog/2012/06/21/pharma-hacked/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yet Another Employment Announcement (And More Moving)</title>
		<link>http://www.hung-truong.com/blog/2012/05/09/yet-another-employment-announcement-and-more-moving/</link>
		<comments>http://www.hung-truong.com/blog/2012/05/09/yet-another-employment-announcement-and-more-moving/#comments</comments>
		<pubDate>Wed, 09 May 2012 04:18:36 +0000</pubDate>
		<dc:creator>Hung</dc:creator>
				<category><![CDATA[Job]]></category>
		<category><![CDATA[Life]]></category>
		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://www.hung-truong.com/blog/?p=2572</guid>
		<description><![CDATA[I wrote in my New Year&#8217;s Retrospective that my greatest fear for 2012 was that I would not get as much done as in previous years due to working a regular job for the first time in years. That concern &#8230; <a href="http://www.hung-truong.com/blog/2012/05/09/yet-another-employment-announcement-and-more-moving/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.hung-truong.com/blog/wp-content/uploads/2012/05/imustgo.gif" rel="lightbox[2572]"><img src="http://www.hung-truong.com/blog/wp-content/uploads/2012/05/imustgo.gif" alt="" title="I must go; my people need me" width="450" height="359" class="aligncenter size-full wp-image-2574" /></a></p>
<p>I wrote in my <a href="http://www.hung-truong.com/blog/2012/01/03/2011-a-hung-truong-year-in-review/">New Year&#8217;s Retrospective</a> that my greatest fear for 2012 was that I would not get as much done as in previous years due to working a regular job for the first time in years. </p>
<p>That concern turned out to be quite prescient as within a couple of months, things quickly changed. While I enjoyed increasing my proficiency in Django and hanging out with cool co-workers, I found that I couldn&#8217;t break into areas that I was really interested in, specifically mobile. I decided to look for a new opportunity where I could grow as a mobile developer.</p>
<p>I&#8217;m happy to announce that I&#8217;ve accepted a new gig with Canopy (whose name is going to change soon), a spinoff of a company called LanguageMate. Canopy is based in Ann Arbor and specializes in language applications for medical professionals. I&#8217;m working on a neat tool that helps nurses and doctors communicate with patients who might not speak the same language. I think it&#8217;s an interesting space and presents a lot of interesting challenges in interface design, marketing, end user support, and other aspects that revolve around mobile development.</p>
<p>I believe this will be a better fit as I&#8217;m now able to work on a startup that is investing heavily in mobile. On top of that, I think it&#8217;s great that the app actually does something meaningful. Sure, a photo sharing app might sell for a billion dollars, but has it ever saved a person&#8217;s life?</p>
<p>Right now I&#8217;m in the middle of another move. If all goes according to plan, I&#8217;ll be back in Ann Arbor (for the 4th time) on Friday. I&#8217;m looking forward to hanging out there again, spending more time with Emily, and eating at BTB every day.</p>
<p>I am really thankful for all the friends I made at Threadless, and I feel bad leaving them so soon. Having said that, I am really looking forward to making a big impact at a small startup that really needs my skills. Here&#8217;s to an interesting second half of 2012!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hung-truong.com/blog/2012/05/09/yet-another-employment-announcement-and-more-moving/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
