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

<channel>
	<title>A Noted Path</title>
	<atom:link href="https://www.theodorenguyen-cao.com/feed/" rel="self" type="application/rss+xml"/>
	<link>https://www.theodorenguyen-cao.com</link>
	<description>Personal blog of Theodore Nguyen-Cao</description>
	<lastBuildDate>Sat, 10 Sep 2016 20:49:14 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.7.15</generator>
	<xhtml:meta content="noindex" name="robots" xmlns:xhtml="http://www.w3.org/1999/xhtml"/><item>
		<title>no such file to load — openssl (RuntimeError)</title>
		<link>https://www.theodorenguyen-cao.com/2011/05/20/no-such-file-to-load-openssl-runtimeerror/</link>
					<comments>https://www.theodorenguyen-cao.com/2011/05/20/no-such-file-to-load-openssl-runtimeerror/#comments</comments>
		
		<dc:creator><![CDATA[Theo]]></dc:creator>
		<pubDate>Fri, 20 May 2011 12:43:52 +0000</pubDate>
				<category><![CDATA[geekery]]></category>
		<guid isPermaLink="false">http://theodorenguyen-cao.com/?p=316</guid>

					<description><![CDATA[I was trying to deploy an older Rails 2.2.2 app to a new server and when I started up the application, I ran into the following error: in `require_frameworks': no such file to load -- openssl (RuntimeError) Hmm&#8230;my app doesn&#8217;t even use SSL. Whatever&#8230;(think this is because capistrano is involved?) To fix this, I installed [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>I was trying to deploy an older Rails 2.2.2 app to a new server and when I started up the application, I ran into the following error:</p>
<pre class="console">
in `require_frameworks': no such file to load -- openssl (RuntimeError)
</pre>
<p>Hmm&#8230;my app doesn&#8217;t even use SSL.  Whatever&#8230;(think this is because capistrano is involved?)</p>
<p>To fix this, I installed openssl by running</p>
<pre class="console">
sudo apt-get install libopenssl-ruby1.8
</pre>
<p>Success!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.theodorenguyen-cao.com/2011/05/20/no-such-file-to-load-openssl-runtimeerror/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Changing video playback speed</title>
		<link>https://www.theodorenguyen-cao.com/2010/09/12/changing-video-playback-speed/</link>
					<comments>https://www.theodorenguyen-cao.com/2010/09/12/changing-video-playback-speed/#respond</comments>
		
		<dc:creator><![CDATA[Theo]]></dc:creator>
		<pubDate>Sun, 12 Sep 2010 22:22:42 +0000</pubDate>
				<category><![CDATA[geekery]]></category>
		<category><![CDATA[tutorials]]></category>
		<guid isPermaLink="false">http://www.theodorenguyen-cao.com/?p=372</guid>

					<description><![CDATA[I was using iMovie &#8217;08 to do some video editing and I wanted to turn a one hour long video into something shorter. It turns out iMovie &#8217;08 doesn&#8217;t support a slow/fast motion effect even though previous versions supported this. I struggled to find a good alternative that allowed me to speed up playback of [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>I was using iMovie &#8217;08 to do some video editing and I wanted to turn a one hour long video into something shorter.</p>
<p>It turns out iMovie &#8217;08 doesn&#8217;t support a slow/fast motion effect even though previous versions supported this.  I struggled to find a good alternative that allowed me to speed up playback of my video.</p>
<p>I ended up using two command line tools. <a href="http://www.ffmpeg.org/">FFmpeg</a> and <a href="http://mjpeg.sourceforge.net/">MJPEG Tools</a>.</p>
<p>I installed both using <a href="http://www.macports.org/">MacPorts</a>:</p>
<pre class="console">sudo port install ffmpeg
sudo port install mjpegtools</pre>
<p>The command to create a fast motion video was:</p>
<pre class="console">ffmpeg -i [input_file] -f yuv4mpegpipe - | yuvfps -s [frame_rate] -r [frame_rate]  | ffmpeg -f yuv4mpegpipe -i - -b 57600k -y [output_file]</pre>
<p>where</p>
<ul>
<li>input_file &#8211; the original source file</li>
<li>frame_rate &#8211; the resulting frame rate (X:Y)</li>
<li>output_file &#8211; the output file</li>
</ul>
<p>The key here is the frame_rate value.  Assuming your original video file is X and you want your video to play N times faster, you should sent your new frame rate to be (X*N):1 For example, if your video has a frame rate of 25 fps and you want to increase playback by 4 times, you should use 100:1 for your frame_rate value. You can use the same command to create a slow motion movie. If you wanted to slow the video down to about half speed, you would use 12fps or 13fps for a 25 fps movie.  You can find the current fps of your video by running</p>
<pre class="console">ffmpeg -i [input_file]</pre>
<p>What I did to turn a 50 min movie to a ~12 min video:</p>
<pre class="console">ffmpeg -i video.m4v -f yuv4mpegpipe - | yuvfps -s 100:1 -r 100:1  | ffmpeg -f yuv4mpegpipe -i - -b 57600k -y result.avi</pre>
<p>It&#8217;s been awhile since I played around with video editing. I forgot how long video processing takes. I need a new computer.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.theodorenguyen-cao.com/2010/09/12/changing-video-playback-speed/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Follow Me</title>
		<link>https://www.theodorenguyen-cao.com/2010/07/21/follow-me/</link>
					<comments>https://www.theodorenguyen-cao.com/2010/07/21/follow-me/#respond</comments>
		
		<dc:creator><![CDATA[Theo]]></dc:creator>
		<pubDate>Wed, 21 Jul 2010 15:40:42 +0000</pubDate>
				<category><![CDATA[web]]></category>
		<guid isPermaLink="false">http://www.theodorenguyen-cao.com/?p=367</guid>

					<description><![CDATA[AddThis just launched a new Labs project, AddThis Follow. Super simple to get setup. You can see I already added it to the side bar of my blog. Allows users to easily follow me and AddThis will provide the analytics on those of you stalking me from my blog. Good stuff. Learn more about it [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><iframe loading="lazy" width="560" height="315" src="https://www.youtube.com/embed/0Gjx-ZQuQ_Y" frameborder="0" allowfullscreen></iframe></p>
<p>AddThis just launched a new Labs project, <a href="http://addthis.com/labs/follow" target="_blank">AddThis Follow</a>.  Super simple to get setup. You can see I already added it to the side bar of my blog. Allows users to easily follow me and AddThis will provide the analytics on those of you stalking me from my blog. Good stuff.</p>
<p>Learn more about it from the <a href="http://www.addthis.com/blog/2010/07/21/attract-more-facebook-and-twitter-followers-with-addthis-follow/">official blog post</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.theodorenguyen-cao.com/2010/07/21/follow-me/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Running IntelliJ 9 Public Preview Community Edition on Mac OSX</title>
		<link>https://www.theodorenguyen-cao.com/2009/10/15/running-intellij-9-public-preview-community-edition-on-mac-osx/</link>
					<comments>https://www.theodorenguyen-cao.com/2009/10/15/running-intellij-9-public-preview-community-edition-on-mac-osx/#respond</comments>
		
		<dc:creator><![CDATA[Theo]]></dc:creator>
		<pubDate>Thu, 15 Oct 2009 20:56:30 +0000</pubDate>
				<category><![CDATA[geekery]]></category>
		<category><![CDATA[java]]></category>
		<guid isPermaLink="false">http://www.theodorenguyen-cao.com/?p=334</guid>

					<description><![CDATA[JetBrains just announced they are open sourcing IntelliJ in a community edition with a subset of features from their commercial product. Having used Eclipse almost exclusively in my Java work, I was interested in trying it out and went to download the .dmg file. I unpacked everything and tried to run the poorly named Maia-IC-90.94.app [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>JetBrains just <a href="http://blogs.jetbrains.com/idea/2009/10/intellij-idea-open-sourced/">announced</a> they are open sourcing IntelliJ in a community edition with a subset of features from their commercial product.</p>
<p>Having used Eclipse almost exclusively in my Java work, I was interested in trying it out and went to <a href="http://www.jetbrains.com/idea/nextversion/free_java_ide.html">download the .dmg</a> file. I unpacked everything and tried to run the poorly named Maia-IC-90.94.app</p>
<p>Nothing came up. Lame.</p>
<p>I dug into the package and executed idea.sh which prompted me that I need to set the environment variable IDEA_SDK or JDK_HOME.</p>
<p>Ah ha!</p>
<p>In my .bash_profile, I set</p>
<pre class="console">export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
export IDEA_JDK=$JAVA_HOME</pre>
<p>And ran idea.sh again and IntelliJ came up.</p>
<p><a href="/wp-content/uploads/2009/10/Picture-1.png"><img loading="lazy" class="aligncenter size-full wp-image-336" title="Picture 1" src="/wp-content/uploads/2009/10/Picture-1.png" alt="Picture 1" width="450" height="270" /></a></p>
<p>Running Maia-IC.90.94.app still doesn&#8217;t run the app but at least now I can play around with IntelliJ.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.theodorenguyen-cao.com/2009/10/15/running-intellij-9-public-preview-community-edition-on-mac-osx/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Linode API for Java</title>
		<link>https://www.theodorenguyen-cao.com/2009/10/11/linode-api-for-java/</link>
					<comments>https://www.theodorenguyen-cao.com/2009/10/11/linode-api-for-java/#comments</comments>
		
		<dc:creator><![CDATA[Theo]]></dc:creator>
		<pubDate>Sun, 11 Oct 2009 06:06:36 +0000</pubDate>
				<category><![CDATA[geekery]]></category>
		<category><![CDATA[java]]></category>
		<guid isPermaLink="false">http://www.theodorenguyen-cao.com/?p=331</guid>

					<description><![CDATA[I&#8217;ve been really happy with my recent move over to http://www.linode.com.  I was checking out their API and noticed there wasn&#8217;t any Java client.  I wanted a do a small pet project so I took a couple hours this weekend and wrote a Java client for the API. The API leverages Apache HTTP Client and [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>I&#8217;ve been really happy with my recent move over to <a href="http://www.linode.com/?r=742e79d1ce5f2a9cf8f7f0fe34d858d7ec99ada5">http://www.linode.com</a>.  I was checking out their <a href="http://www.linode.com/api/">API</a> and noticed there wasn&#8217;t any Java client.  I wanted a do a small pet project so I took a couple hours this weekend and wrote a Java client for the API.</p>
<p>The API leverages <a href="http://hc.apache.org/httpclient-3.x/index.html">Apache HTTP Client</a> and <a href="http://json.org/java/">JSON.org Java</a> libraries and is built using <a href="http://maven.apache.org/">Maven</a>.</p>
<p>The project source code can be found <a href="http://github.com/theo/linode-api">here</a>.</p>
<p>If anyone runs into any problems with using it, please feel free to ping me! </p>
<p><strong>Update:</strong> Linode was nice enough to update their <a href="http://www.linode.com/api/">API page</a> with a reference to my project.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.theodorenguyen-cao.com/2009/10/11/linode-api-for-java/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Recursive Remote Login</title>
		<link>https://www.theodorenguyen-cao.com/2009/10/04/recursive-remote-login/</link>
					<comments>https://www.theodorenguyen-cao.com/2009/10/04/recursive-remote-login/#respond</comments>
		
		<dc:creator><![CDATA[Theo]]></dc:creator>
		<pubDate>Sun, 04 Oct 2009 17:38:00 +0000</pubDate>
				<category><![CDATA[geekery]]></category>
		<guid isPermaLink="false">http://www.theodorenguyen-cao.com/?p=325</guid>

					<description><![CDATA[Trippy.]]></description>
										<content:encoded><![CDATA[<p><a href="https://www.theodorenguyen-cao.com/wp-content/uploads/2009/10/recursive-remote-login.png"><img loading="lazy" class="aligncenter size-full wp-image-326" title="recursive-remote-login" src="/wp-content/uploads/2009/10/recursive-remote-login.png" alt="recursive-remote-login" width="350" height="263" /></a></p>
<p>Trippy.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.theodorenguyen-cao.com/2009/10/04/recursive-remote-login/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Terracotta acquires Ehcache</title>
		<link>https://www.theodorenguyen-cao.com/2009/08/18/terracotta-acquires-ehcache/</link>
					<comments>https://www.theodorenguyen-cao.com/2009/08/18/terracotta-acquires-ehcache/#respond</comments>
		
		<dc:creator><![CDATA[Theo]]></dc:creator>
		<pubDate>Tue, 18 Aug 2009 19:40:16 +0000</pubDate>
				<category><![CDATA[geekery]]></category>
		<guid isPermaLink="false">http://www.theodorenguyen-cao.com/?p=323</guid>

					<description><![CDATA[Pretty big news in the Java world today. Open-source with a business model company, Terracotta, acquired Ehcache, the very popular caching library. The creator and maintainer of Ehcache, Greg Luck, had these things to say about the acquisition: What this means for Ehcache Users Ehcache remains under the Apache 2 license New feature development is [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Pretty big news in the Java world today.</p>
<p>Open-source with a business model company, Terracotta, acquired Ehcache, the very popular caching library.</p>
<p>The creator and maintainer of Ehcache, Greg Luck, had these things to say about  the acquisition:</p>
<blockquote><p>What this means for Ehcache Users</p>
<ul>
<li><span style="background-color: #ffffff;">Ehcache remains under the Apache 2 license</span></li>
<li><span style="background-color: #ffffff;">New feature development is accelerated with the addition of a team of engineers working full-time on Ehcache</span></li>
<li><span style="background-color: #ffffff;">I am full-time on Ehcache. I have not had the time I would have liked to devote to Ehcache (I have been doing a miserly 10-15 hours per week for the past 6 years) but now I do. Look out!</span></li>
<li><span style="background-color: #ffffff;">Ehcache extends its standards support. There are multiple emerging standards in this area and I plan to work with the community to lead further standardisation efforts. A lack of time has been my biggest obstacle in doing more on this to date.</span></li>
<li><span style="background-color: #ffffff;">Ehcache gets new hosting at ehcache.org with state-of-the-art forums, source control and bug reporting. The changes will happen slowly and carefully.</span></li>
<li><span style="background-color: #ffffff;">File release at sourceforge.net is retained</span></li>
<li><span style="background-color: #ffffff;">Maven deployment to oss.sonatype.org and Maven Central is retained.</span></li>
<li><span style="background-color: #ffffff;">Distributed caching via Terracotta is seamless. Ehcache users can have full confidence that they can start single node and scale as high as they need to with Enterprise features.</span></li>
<li><span style="background-color: #ffffff;">Enterprise support, training and professional services for Ehcache. I have provided these for a few years now, but now we will have the full Terracotta organisation behind them with the usual SLAs.</span></li>
</ul>
<p>What this means for Terracotta Users</p>
<ul>
<li><span style="background-color: #ffffff;">Ehcache APIs will replace Terracotta distributed cache APIs as a single caching interface / standard for Terracotta distributed caching</span></li>
<li><span style="background-color: #ffffff;">a single-node version of Terracotta ala Ehcache will be available for the first time</span></li>
<li><span style="background-color: #ffffff;">Full freedom to run on the latest version of Ehcache at all times, knowing it will work with Terracotta</span></li>
<li><span style="background-color: #ffffff;">Single vendor support structure for caching interfaces / libraries as well as their scalability / reliability runtime.</span></li>
<li><span style="background-color: #ffffff;">the investment protection of standards</span></li>
</ul>
</blockquote>
<p>It&#8217;s pretty cool to see open source companies like SpringSource (recently acquired by VMWare) and Terracotta making big moves. I look forward to seeing what&#8217;s next for these guys.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.theodorenguyen-cao.com/2009/08/18/terracotta-acquires-ehcache/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>The JSON Saga</title>
		<link>https://www.theodorenguyen-cao.com/2009/08/14/the-json-saga/</link>
					<comments>https://www.theodorenguyen-cao.com/2009/08/14/the-json-saga/#respond</comments>
		
		<dc:creator><![CDATA[Theo]]></dc:creator>
		<pubDate>Fri, 14 Aug 2009 20:40:43 +0000</pubDate>
				<category><![CDATA[geekery]]></category>
		<guid isPermaLink="false">http://www.theodorenguyen-cao.com/?p=319</guid>

					<description><![CDATA[Working with JSON all day and implementing my own URL shortening app, diminutiveurl.com using Base32 encoding, I really admire Douglas Crockford&#8217;s smart and simple approach to these topics. I stumbled upon Crockford&#8217;s talk on the JSON Saga, where he tells the story of how JSON came about. He is a really smart guy and a [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Working with <a href="http://www.json.org">JSON</a> all day and implementing my own URL shortening app, <a href="http://www.diminutiveurl.com">diminutiveurl.com</a> using <a href="http://www.crockford.com/wrmg/base32.html">Base32 encoding</a>, I really admire Douglas Crockford&#8217;s smart and simple approach to these topics.</p>
<p>I stumbled upon Crockford&#8217;s talk on the JSON Saga, where he tells the story of how JSON came about.  He is a really smart guy and a talented speaker. Check out the video:</p>
<p><iframe loading="lazy" width="560" height="315" src="https://www.youtube.com/embed/-C-JoyNuQJs" frameborder="0" allowfullscreen></iframe></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.theodorenguyen-cao.com/2009/08/14/the-json-saga/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Oh yeah! I got married!</title>
		<link>https://www.theodorenguyen-cao.com/2009/08/05/oh-yeah-i-got-married/</link>
					<comments>https://www.theodorenguyen-cao.com/2009/08/05/oh-yeah-i-got-married/#comments</comments>
		
		<dc:creator><![CDATA[Theo]]></dc:creator>
		<pubDate>Thu, 06 Aug 2009 01:49:53 +0000</pubDate>
				<category><![CDATA[personal]]></category>
		<guid isPermaLink="false">http://www.theodorenguyen-cao.com/?p=309</guid>

					<description><![CDATA[It&#8217;s been awhile since I updated this and big things have happened since. Cutting to the chase: On June 20th, 2009 I married the lady of my dreams, Patcharee Phongsvirajati. The wedding ceremonies took place at our houses and the reception was held at Foxchase Manor. Check out some photos taken by a few of [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>It&#8217;s been awhile since I updated this and big things have happened since.</p>
<p>Cutting to the chase: On June 20th, 2009 I married the lady of my dreams, Patcharee Phongsvirajati.  </p>
<p>The wedding ceremonies took place at our houses and the reception was held at <a href="http://www.foxchasemanor.com/">Foxchase Manor</a>.</p>
<p>Check out some photos taken by a few of the many photographers:</p>
<p>Photography by <a href="http://www.phamphotography.com">Mac Pham</a>, my cousin:<br />
<object width="400" height="300"><param name="flashvars" value="offsite=true&#038;lang=en-us&#038;page_show_url=%2Fphotos%2Fmacpham%2Fsets%2F72157620881995332%2Fshow%2F&#038;page_show_back_url=%2Fphotos%2Fmacpham%2Fsets%2F72157620881995332%2F&#038;set_id=72157620881995332&#038;jump_to="></param><param name="movie" value="https://www.flickr.com/apps/slideshow/show.swf?v=71649"></param><param name="allowFullScreen" value="true"></param><embed type="application/x-shockwave-flash" src="https://www.flickr.com/apps/slideshow/show.swf?v=71649" allowFullScreen="true" flashvars="offsite=true&#038;lang=en-us&#038;page_show_url=%2Fphotos%2Fmacpham%2Fsets%2F72157620881995332%2Fshow%2F&#038;page_show_back_url=%2Fphotos%2Fmacpham%2Fsets%2F72157620881995332%2F&#038;set_id=72157620881995332&#038;jump_to=" width="400" height="300"></embed></object></p>
<p>Photography by the Pros:<br />
<object width="400" height="300"><param name="flashvars" value="offsite=true&#038;lang=en-us&#038;page_show_url=%2Fphotos%2Ftheodorenguyen-cao%2Fsets%2F72157620814936735%2Fshow%2F&#038;page_show_back_url=%2Fphotos%2Ftheodorenguyen-cao%2Fsets%2F72157620814936735%2F&#038;set_id=72157620814936735&#038;jump_to="></param><param name="movie" value="https://www.flickr.com/apps/slideshow/show.swf?v=71649"></param><param name="allowFullScreen" value="true"></param><embed type="application/x-shockwave-flash" src="https://www.flickr.com/apps/slideshow/show.swf?v=71649" allowFullScreen="true" flashvars="offsite=true&#038;lang=en-us&#038;page_show_url=%2Fphotos%2Ftheodorenguyen-cao%2Fsets%2F72157620814936735%2Fshow%2F&#038;page_show_back_url=%2Fphotos%2Ftheodorenguyen-cao%2Fsets%2F72157620814936735%2F&#038;set_id=72157620814936735&#038;jump_to=" width="400" height="300"></embed></object></p>
<p>Photography by Cau Duc, my uncle:<br />
<object width="400" height="300"><param name="flashvars" value="offsite=true&#038;lang=en-us&#038;page_show_url=%2Fphotos%2Ftheodorenguyen-cao%2Fsets%2F72157620909272179%2Fshow%2F&#038;page_show_back_url=%2Fphotos%2Ftheodorenguyen-cao%2Fsets%2F72157620909272179%2F&#038;set_id=72157620909272179&#038;jump_to="></param><param name="movie" value="https://www.flickr.com/apps/slideshow/show.swf?v=71649"></param><param name="allowFullScreen" value="true"></param><embed type="application/x-shockwave-flash" src="https://www.flickr.com/apps/slideshow/show.swf?v=71649" allowFullScreen="true" flashvars="offsite=true&#038;lang=en-us&#038;page_show_url=%2Fphotos%2Ftheodorenguyen-cao%2Fsets%2F72157620909272179%2Fshow%2F&#038;page_show_back_url=%2Fphotos%2Ftheodorenguyen-cao%2Fsets%2F72157620909272179%2F&#038;set_id=72157620909272179&#038;jump_to=" width="400" height="300"></embed></object></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.theodorenguyen-cao.com/2009/08/05/oh-yeah-i-got-married/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Google App Engine adds Java support (Review)</title>
		<link>https://www.theodorenguyen-cao.com/2009/04/08/google-app-engine-adds-java-support-review/</link>
					<comments>https://www.theodorenguyen-cao.com/2009/04/08/google-app-engine-adds-java-support-review/#comments</comments>
		
		<dc:creator><![CDATA[Theo]]></dc:creator>
		<pubDate>Wed, 08 Apr 2009 20:30:32 +0000</pubDate>
				<category><![CDATA[geekery]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[appengine]]></category>
		<category><![CDATA[review]]></category>
		<guid isPermaLink="false">http://www.theodorenguyen-cao.com/?p=293</guid>

					<description><![CDATA[Last night Google announced Java support on Google App Engine. After a bit of toying around, here are my findings. The Eclipse plugin is pretty slick. Deploying and build is simple. The dev server that you spin up locally looks to be jetty under the hood. Objects intended for storage are JDO annotated and after [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Last night Google <a href="http://googleappengine.blogspot.com/2009/04/seriously-this-time-new-language-on-app.html">announced</a> Java support on Google App Engine.</p>
<p>After a bit of toying around, here are my findings.</p>
<p>The Eclipse plugin is pretty slick. Deploying and build is simple.</p>
<p>The dev server that you spin up locally looks to be jetty under the hood.</p>
<p>Objects intended for storage are JDO annotated and after compiling, you run the .class files through the DataNucleus Enhancer which adds additional metadata so Google can map it to BigTable.  The Eclipse plugin automatically performs this step for you after compiling. The examples provide a bunch of ant macros to help facilitate building/deploying.</p>
<p>One issue that I had was that the project was building with Java 1.6 and I would get an error after compiling:</p>
<pre class="console">Caused by: java.lang.UnsupportedClassVersionError: Bad version number in .class file</pre>
<p></p>
<p>Even though they say they support Java 1.5 and 1.6, I guess this doesn&#8217;t work on the Java 1.6 for the Mac.  Switching the build to 1.5 allows the DataNucleus Enhancer to run successfully. </p>
<p>Even though they are using JPA, some features have not yet been implemented or supported ( see <a href="http://code.google.com/appengine/docs/java/datastore/usingjpa.html#Unsupported_Features_of_JPA">http://code.google.com/appengine/docs/java/datastore/usingjpa.html#Unsupported_Features_of_JPA</a>)</p>
<p>Overall, I like what I see so far and think this would be great for quick prototypes of web apps/services.</p>
<p>Going through the tutorial, my awesome <a href="http://notedpath.appspot.com/guestbook.jsp">Guestbook</a> application has been created and deployed.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.theodorenguyen-cao.com/2009/04/08/google-app-engine-adds-java-support-review/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
	</channel>
</rss>