<?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>mikeyin.org</title>
	<atom:link href="http://blog.mikeyin.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.mikeyin.org</link>
	<description>nerd</description>
	<lastBuildDate>Mon, 21 Nov 2011 14:10:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>New Android App</title>
		<link>http://blog.mikeyin.org/2011/11/21/new-android-app/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=new-android-app</link>
		<comments>http://blog.mikeyin.org/2011/11/21/new-android-app/#comments</comments>
		<pubDate>Mon, 21 Nov 2011 14:10:15 +0000</pubDate>
		<dc:creator>yincrash</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.mikeyin.org/?p=31</guid>
		<description><![CDATA[Published an android port of the open source Simple Tetris Clone. You can find it on the Android Market. The plan is to implement many more features, however I&#8217;ll probably publish the current feature state as open source soon.]]></description>
			<content:encoded><![CDATA[<p>Published an android port of the open source <a title="Simple Tetris Clone" href="http://code.google.com/p/simple-tetris-clone/" target="_blank">Simple Tetris Clone</a>. You can find it on the <a href="https://market.android.com/details?id=org.mikeyin.tetromino">Android Market</a>. The plan is to implement many more features, however I&#8217;ll probably publish the current feature state as open source soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikeyin.org/2011/11/21/new-android-app/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hello again.</title>
		<link>http://blog.mikeyin.org/2011/08/31/hello-again/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=hello-again</link>
		<comments>http://blog.mikeyin.org/2011/08/31/hello-again/#comments</comments>
		<pubDate>Wed, 31 Aug 2011 19:45:27 +0000</pubDate>
		<dc:creator>yincrash</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.mikeyin.org/?p=6</guid>
		<description><![CDATA[Hi. There used to be a blog here last year. I&#8217;m in the process of retrieving the old posts and re-posting them. Update: Posts recovered! Thank you google reader for keeping them safe for me!]]></description>
			<content:encoded><![CDATA[<p>Hi. There used to be a blog here last year. I&#8217;m in the process of retrieving the old posts and re-posting them.</p>
<p><strong>Update: </strong>Posts recovered! Thank you google reader for keeping them safe for me!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikeyin.org/2011/08/31/hello-again/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nonproductive Usage of Java Generics</title>
		<link>http://blog.mikeyin.org/2010/07/15/nonproductive-usage-of-java-generics/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=nonproductive-usage-of-java-generics</link>
		<comments>http://blog.mikeyin.org/2010/07/15/nonproductive-usage-of-java-generics/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 16:00:49 +0000</pubDate>
		<dc:creator>yincrash</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://blog.mikeyin.org/?p=19</guid>
		<description><![CDATA[Check out this Java 5 code: public static &#60;T&#62; List&#60;T&#62; extractSomeStuff(Collection collection) { List&#60;T&#62; extractedStuff = new ArrayList&#60;T&#62;(collection.size()); for (Object element : collection) { extractedStuff.add((T) element); } return extractedStuff; } public static void someMethodThatIsRunning() { List integers = new ArrayList(); integers.add(1); integers.add(2); integers.add(500); List longs = extractSomeStuff(integers); long notAnInteger = longs.get(0); } Will there be [...]]]></description>
			<content:encoded><![CDATA[<p>Check out this Java 5 code:</p>
<pre>  public static &lt;T&gt; List&lt;T&gt; extractSomeStuff(Collection collection) {
    List&lt;T&gt; extractedStuff = new ArrayList&lt;T&gt;(collection.size());
    for (Object element : collection) {
      extractedStuff.add((T) element);
    }
    return extractedStuff;
  }

  public static void someMethodThatIsRunning() {
    List integers = new ArrayList();
    integers.add(1); integers.add(2); integers.add(500);

    List longs = extractSomeStuff(integers);

    long notAnInteger = longs.get(0);
  }</pre>
<p>Will there be a <code>ClassCastException</code> thrown? Yes.<br />
Do you know what line it will be on?</p>
<p>Possibly not where you expect. Java Generics are designed to be able to easily compile down to older Java versions. In essence, I could write a program in Java 5 and make it target a Java 1.4 JVM so I can run on older machines that haven’t upgraded their JVM. The way this works is by a process called type erasure which happens at compile time. Any uses of Generics are checked to make sure the types are in agreement, and after they are validated, all type information is erased.</p>
<p>At any point where you actually need to the typed object, it will be replaced with a cast at runtime, so for <code>List</code>, when <code>T get(int index)</code> is called, the result gets cast to <code>T</code>.</p>
<p>The result is that the <code>ClassCastException</code> happens at <code>long notAnInteger = longs.get(0);</code> and not at<code>extractedStuff.add((T) element);</code> because that type information is erased.</p>
<p>The moral of the story is don’t cast objects with Generic types unless you really know what you’re doing. 90% of the time, you’re probably presenting a user with a method contract that you won’t be able to fulfill, and the user will only find out several lines later in their code when they realize that their collection is filled with objects they didn’t expect.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikeyin.org/2010/07/15/nonproductive-usage-of-java-generics/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Photo Gallery Live Wallpaper</title>
		<link>http://blog.mikeyin.org/2010/01/15/photo-gallery-live-wallpaper/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=photo-gallery-live-wallpaper</link>
		<comments>http://blog.mikeyin.org/2010/01/15/photo-gallery-live-wallpaper/#comments</comments>
		<pubDate>Fri, 15 Jan 2010 16:00:10 +0000</pubDate>
		<dc:creator>yincrash</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[code]]></category>

		<guid isPermaLink="false">http://blog.mikeyin.org/?p=17</guid>
		<description><![CDATA[QR Code to App in Market My first live wallpaper. (Note: This is a live wallpaper which requires android 2.1. currently only the nexus one has it officially, but other phones should have it soon.) After choosing the live wallpaper, use the settings menu to choose what folder to pull images from and how often [...]]]></description>
			<content:encoded><![CDATA[<div><img title="QR Code to App in Market" src="http://chart.apis.google.com/chart?cht=qr&amp;chs=230x230&amp;chl=market%3A%2F%2Fsearch%3Fq%3Dpname%3Aorg.mikeyin.livewallpaper" alt="QR Code to App in Market" width="230" height="230" />QR Code to App in Market</p>
</div>
<p>My first live wallpaper. (Note: This is a live wallpaper which requires android 2.1. currently only the nexus one has it officially, but other phones should have it soon.)</p>
<p>After choosing the live wallpaper, use the settings menu to choose what folder to pull images from and how often you want the image to change.</p>
<p>If people are still having force close issues, please let me know and if possible post a log using the log collector app in the marketplace.</p>
<p>Open sourced as of v0.6! http://code.google.com/p/photogallerylivewallpaper/</p>
<p>Current features:</p>
<ul>
<li>Adjustable timer</li>
<li>User specified SD Card folder</li>
<li>Shifting when switching home pages (screen scrolling)</li>
<li>Fade transition</li>
<li>Double tap to change image</li>
</ul>
<p>Future features:</p>
<ul>
<li>more transitions</li>
<li>???</li>
</ul>
<p>Let me know what features you want!</p>
<p>Changelog:</p>
<ul>
<li>v0.7 – Accepted a bunch of changes by Dániel Kalmár.
<ul>
<li>turned stretching into scaling (keeps aspect ratio, can up&amp;down scale)</li>
<li>fixed possible bug with the image shifting randomly</li>
<li>better way to figure out if image needs rotating</li>
<li>the scaled &amp; rotated image is only generated once and cached</li>
<li>added white background to preferences screen</li>
<li>all the features should work well together in any permutation</li>
</ul>
</li>
<li>v0.6 – fixed a force closed bug with John Bibbs’ help (hopefully). Implemented double tapping to change the image.</li>
<li>v0.5 – implemented a fade transition! ability to turn on and off stretching for users that don’t want it. subsample images that cause out of memory exceptions in attempt to still use them.</li>
<li>v0.4 – put in the option to choose screen scrolling for those that don’t want it. able to choose the directory via the OI File Manager.</li>
<li>v0.3 – added screen scrolling. if the picture is smaller than the virtual width, it will be scaled horizontally.</li>
<li>v0.2 – added settings for timer and folder choice. lots of bullet proofing. if it still force closes, please let me know the circumstances, like what is in the folder you chose, or what you were doing to make it happen, as well as your phone and if you are using any special firmware. added an icon made by<a href="http://tango.freedesktop.org/Tango_Icon_Library" target="_blank">http://tango.freedesktop.org/Tango_Icon_Library</a></li>
<li>v0.1 – first release, set timer to 5s, set folder to /&lt;sdcard&gt;/wallpaperphotos</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikeyin.org/2010/01/15/photo-gallery-live-wallpaper/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>For anyone considering a Google (HTC) Nexus 1 (or has been on a T-Mobile Contract for at least a Year)</title>
		<link>http://blog.mikeyin.org/2010/01/06/for-anyone-considering-a-google-htc-nexus-1-or-has-been-on-a-t-mobile-contract-for-at-least-a-year/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=for-anyone-considering-a-google-htc-nexus-1-or-has-been-on-a-t-mobile-contract-for-at-least-a-year</link>
		<comments>http://blog.mikeyin.org/2010/01/06/for-anyone-considering-a-google-htc-nexus-1-or-has-been-on-a-t-mobile-contract-for-at-least-a-year/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 16:00:32 +0000</pubDate>
		<dc:creator>yincrash</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.mikeyin.org/?p=15</guid>
		<description><![CDATA[http://lukehutch.wordpress.com/2010/01/05/the-cheap-way-to-pay-for-a-nexus-one-think-tco/ In summary, Total Cost of Ownership of buying the full priced Nexus 1 : $2173 (can switch anytime, can cut features out of the plan to make it cheaper) TCO on buying the subsidized Nexus 1:  $2292 (must stay on plan and contract for 2 years or face ETF) edit: That article also brought [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://lukehutch.wordpress.com/2010/01/05/the-cheap-way-to-pay-for-a-nexus-one-think-tco/" target="_blank">http://lukehutch.wordpress.com/2010/01/05/the-cheap-way-to-pay-for-a-nexus-one-think-tco/</a></p>
<p>In summary,</p>
<p>Total Cost of Ownership of buying the full priced Nexus 1 : $2173 (can switch anytime, can cut features out of the plan to make it cheaper)<br />
TCO on buying the subsidized Nexus 1:  $2292 (must stay on plan and contract for 2 years or face ETF)</p>
<p>edit: That article also brought to light that if you’ve been in a T-Mobile contract for at least a year, you can switch to the non-contract plan which is $20 cheaper by paying a $35 migration fee. Over the course of a year, that’s saving $20*12 – $35 = $205. I’m doing this tonight.</p>
<p>more details in this article:</p>
<p><a href="http://androidandme.com/2009/10/carriers/t-mobile-news/new-rate-plans-for-t-mobile-start-today/" target="_blank">http://androidandme.com/2009/10/carriers/t-mobile-news/new-rate-plans-for-t-mobile-start-today/</a><br />
and<br />
<a href="http://news.cnet.com/8301-17938_105-10382707-1.html" target="_blank">http://news.cnet.com/8301-17938_105-10382707-1.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikeyin.org/2010/01/06/for-anyone-considering-a-google-htc-nexus-1-or-has-been-on-a-t-mobile-contract-for-at-least-a-year/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mario Hat Instruction Manual</title>
		<link>http://blog.mikeyin.org/2009/10/20/mario-hat-instruction-manual/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mario-hat-instruction-manual</link>
		<comments>http://blog.mikeyin.org/2009/10/20/mario-hat-instruction-manual/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 16:00:46 +0000</pubDate>
		<dc:creator>yincrash</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.mikeyin.org/?p=13</guid>
		<description><![CDATA[Photos of hat will be up later this afternoon, maybe. Mario Hat Instruction Manual]]></description>
			<content:encoded><![CDATA[<p>Photos of hat will be up later this afternoon, maybe.</p>
<div><img title="Mario(TM) Hat Instruction Manual" src="http://blog.mikeyin.org/wp-content/uploads/2009/10/2009-10-20-10.23.16-768x1024.jpg" alt="Mario Hat Instruction Manual" width="576" height="766" />Mario Hat Instruction Manual</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikeyin.org/2009/10/20/mario-hat-instruction-manual/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web Reference</title>
		<link>http://blog.mikeyin.org/2009/10/14/web-reference/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=web-reference</link>
		<comments>http://blog.mikeyin.org/2009/10/14/web-reference/#comments</comments>
		<pubDate>Wed, 14 Oct 2009 16:00:12 +0000</pubDate>
		<dc:creator>yincrash</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[code]]></category>

		<guid isPermaLink="false">http://blog.mikeyin.org/?p=11</guid>
		<description><![CDATA[To all web developers, Google is on it’s way to compiling the ultimate web reference. The project, called doctype, is a wiki containing references and links to existing references on DOM and CSS matters as well as tips and tricks and HOW TOs covering various topics such as browser compatibility or detecting when the user resizes [...]]]></description>
			<content:encoded><![CDATA[<p>To all web developers, Google is on it’s way to compiling the ultimate web reference. The project, called <a href="http://code.google.com/p/doctype/wiki/Welcome" target="_blank">doctype</a>, is a wiki containing references and links to existing references on DOM and CSS matters as well as tips and tricks and HOW TOs covering various topics such as browser compatibility or detecting when the user resizes the browser window. One of the main contributors is the dude who runs <a href="http://www.quirksmode.org/" target="_blank">quirksmode</a>.</p>
<p><strong>Update (9/3/2011):</strong><br />
Two years and a couple of websites later, I&#8217;ve realized my favorite resource for DOM / CSS / JS is the <a href="https://developer.mozilla.org/en/Web_Development" target="_blank">Mozilla Developer Network (MDN) documentation</a>. They&#8217;ve got great tutorials and really well written and easy to browse documentation on all the latest and greatest HTML5 stuff.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikeyin.org/2009/10/14/web-reference/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Blog</title>
		<link>http://blog.mikeyin.org/2009/10/13/new-blog/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=new-blog</link>
		<comments>http://blog.mikeyin.org/2009/10/13/new-blog/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 16:00:35 +0000</pubDate>
		<dc:creator>yincrash</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.mikeyin.org/?p=9</guid>
		<description><![CDATA[This is a new blog. It’ll probably be very nerdy. As in, I want to talk about code.]]></description>
			<content:encoded><![CDATA[<p>This is a new blog. It’ll probably be very nerdy. As in, I want to talk about code.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikeyin.org/2009/10/13/new-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

