<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>this.Reflect()</title>
	
	<link>http://blog.donnfelker.com</link>
	<description>The Technology Blog of Donn Felker</description>
	<lastBuildDate>Thu, 22 Jul 2010 12:30:35 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/donnfelker" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="donnfelker" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Android For Dummies &amp; TekPub</title>
		<link>http://blog.donnfelker.com/2010/07/22/android-for-dummies-tekpub/</link>
		<comments>http://blog.donnfelker.com/2010/07/22/android-for-dummies-tekpub/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 12:30:35 +0000</pubDate>
		<dc:creator>Donn</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[android]]></category>

		<guid isPermaLink="false">http://blog.donnfelker.com/?p=517</guid>
		<description><![CDATA[My last post announced that I was writing a book &#8230; so &#8230;
What does this mean for the Introduction to Android TekPub.com series? 
Great things actually &#8211; if you prefer to learn via reading, you can do that with the book. If you prefer to learn via video, you can do that with Tekpub.com, all <a href="http://blog.donnfelker.com/2010/07/22/android-for-dummies-tekpub/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>My last post announced that I was writing a book &#8230; so &#8230;</p>
<p><strong>What does this mean for the Introduction to Android TekPub.com series? </strong></p>
<p>Great things actually &#8211; if you prefer to learn via reading, you can do that with the book. If you prefer to learn via video, you can do that with Tekpub.com, all via the same author. The book and the TekPub series cover different example applications so you&#8217;d get the most out of it by learning from both (in my opinion). Regardless, this will only enhance the learning for you by having two options &#8211; a book, or a video series.</p>
<p>More episodes of the TekPub series are coming soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donnfelker.com/2010/07/22/android-for-dummies-tekpub/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android Development For Dummies</title>
		<link>http://blog.donnfelker.com/2010/07/21/android-development-for-dummies/</link>
		<comments>http://blog.donnfelker.com/2010/07/21/android-development-for-dummies/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 12:26:21 +0000</pubDate>
		<dc:creator>Donn</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[android]]></category>

		<guid isPermaLink="false">http://blog.donnfelker.com/?p=510</guid>
		<description><![CDATA[I can finally announce it, I&#8217;m writing the first official Android Application Development for Dummies book.
I&#8217;ve been writing for awhile now and had a lot of inquiries into what I&#8217;ve been writing about. I&#8217;m glad to finally be able to say what I&#8217;m working on.
The book is slated to be released this fall.
Pre-order now by <a href="http://blog.donnfelker.com/2010/07/21/android-development-for-dummies/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.amazon.com/gp/product/047077018X?ie=UTF8&amp;tag=donnfelker-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=047077018X" target="_blank"><img class="alignleft size-full wp-image-512" title="felker_android" src="http://blog.donnfelker.com/wp-content/uploads/2010/07/felker_android.png" alt="" width="245" height="300" /></a>I can finally announce it, I&#8217;m writing the first official <a href="http://www.amazon.com/gp/product/047077018X?ie=UTF8&amp;tag=donnfelker-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=047077018X" target="_blank">Android Application Development for Dummies </a>book.</p>
<p>I&#8217;ve been writing for awhile now and had a lot of inquiries into what I&#8217;ve been writing about. I&#8217;m glad to finally be able to say what I&#8217;m working on.</p>
<p>The book is slated to be released this fall.</p>
<p>Pre-order now by clicking on the image on the left.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donnfelker.com/2010/07/21/android-development-for-dummies/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Android: ‘Must Override a Superclass Method’ Errors</title>
		<link>http://blog.donnfelker.com/2010/07/06/android-must-override-a-superclass-method-errors/</link>
		<comments>http://blog.donnfelker.com/2010/07/06/android-must-override-a-superclass-method-errors/#comments</comments>
		<pubDate>Tue, 06 Jul 2010 13:05:05 +0000</pubDate>
		<dc:creator>Donn</dc:creator>
				<category><![CDATA[Mobile]]></category>
		<category><![CDATA[android]]></category>

		<guid isPermaLink="false">http://blog.donnfelker.com/?p=507</guid>
		<description><![CDATA[I&#8217;ve been working by myself on all of my Android projects and just recently I need ed to expand my workforce to beyond that just myself. Therefore I needed to make my first hire for my company Agilevent. In doing so I needed to get my code over to another developers machine and I ran <a href="http://blog.donnfelker.com/2010/07/06/android-must-override-a-superclass-method-errors/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been working by myself on all of my Android projects and just recently I need ed to expand my workforce to beyond that just myself. Therefore I needed to make my first hire for my company <a href="http://www.agilevent.com">Agilevent</a>. In doing so I needed to get my code over to another developers machine and I ran into all kinds of problems.</p>
<p><strong>Background</strong></p>
<p>The code is stored on GitHub in a private repository and the new developer had access. They had recently set up Eclipse and the ADT with Java 1.6. Everything was working golden. We could create a new project and everything worked fine. Except &#8230; when we tried to import the recently cloned GitHub project.</p>
<p>After importing Eclipse would report &#8220;Must Override a Superslass Method&#8221; on all kinds of methods all over the place (literally 86 different places in this one app).</p>
<p><strong>Resolution</strong></p>
<p>After a ton of futzing around we found the problem. Eclipse was defaulting to Java 1.5 for the imported project. I&#8217;m learning more and more and more about Java and its idiosyncrasies every day. In Java 1.5 classes can only be decorated with @Override when overriding a superclass method. In Java 1.6 if you have classes implementing interface methods you can decorate them with @Override and everything&#8217;s golden. You cant do that in 1.5. AKA: The source of the errors.</p>
<p>So where to change it?</p>
<p>Choose Window &#8211;&gt; Preferences &#8211;&gt; Java &#8211;&gt; Compiler and ensure 1.6 is selected in the Compiler Compliance Level. If that is set and you still have problems, then in the same window, choose &#8220;Configure Project Specific Settings &#8230;&#8221;, choose the project in the chooser, and enable the project specific settings checkbox and select 1.6 in the Compiler Compliance level.</p>
<p>Fun times. Now if I could only get those two hours back &#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donnfelker.com/2010/07/06/android-must-override-a-superclass-method-errors/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Gotchas with Rooting a MyTouch Slide</title>
		<link>http://blog.donnfelker.com/2010/06/29/gotchas-with-rooting-a-mytouch-slide/</link>
		<comments>http://blog.donnfelker.com/2010/06/29/gotchas-with-rooting-a-mytouch-slide/#comments</comments>
		<pubDate>Tue, 29 Jun 2010 13:10:16 +0000</pubDate>
		<dc:creator>Donn</dc:creator>
				<category><![CDATA[Mobile]]></category>
		<category><![CDATA[android]]></category>

		<guid isPermaLink="false">http://blog.donnfelker.com/?p=505</guid>
		<description><![CDATA[I got a hold of an extra MyTouch slide for testing and wanted to root it in order to put some a different ROM on there (namely Cyanogen). The MyTouch slide root instructions are fairly well documented and have worked for a lot of people. Unfortunately they did not work for me and I got <a href="http://blog.donnfelker.com/2010/06/29/gotchas-with-rooting-a-mytouch-slide/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>I got a hold of an extra MyTouch slide for testing and wanted to root it in order to put some a different ROM on there (namely Cyanogen). The <a href="http://forum.xda-developers.com/showthread.php?t=702973">MyTouch slide root instructions</a> are fairly well documented and have worked for a lot of people. Unfortunately they did not work for me and I got stuck where 90% of most people get stuck, in the &#8220;loop&#8221;. I was stuck in this mode for a week and nearly called it quits until I found this Gem last night. I could not get the loop to recognize my device as &#8220;offline&#8221;. Well, it would, but only for a split second.</p>
<p>I then found out why:</p>
<p>The instructions don&#8217;t point this out, and maybe this case is only due to my device but here goes:</p>
<ul>
<li>With the USB unplugged from the Phone and computer, Boot into HBOOT (with the phone off, press Power + the Down Volume). Then wait a second for the boot loader to try to find some images and then once its done navigate down to &#8220;recovery&#8221; (DO NOT GO INTO RECOVERY YET), so at this point &#8220;recovery&#8221; is just <em>highlighted. </em>Plug the USB into the phone, the <strong>other end of the USB should NOT be plugged into anything</strong>. So now you should have a phone with a USB cord connected/dangling not connected to the computer. <strong>Read this through, then do it:</strong> Now you will need to start the loop. Then as soon as you can, plug the USB into the computer. As soon (I mean lightning quick here people) as you feel the USB pop into place ENTER RECOVERY MODE (hit the power button). This has to be done before your phone recognizes that its plugged into the USB. As soon as the phone recognizes its in USB mode it will change from HBOOT to HBOOT with USB (or something like that, you&#8217;ll see it at the top of the screen in blue when in HBOOT). Notice: the switch from HBOOT to HBOOT WITH USB is almost instantaneous. Its about 1/2 of 1 second, its that quick. So AS SOON AS YOU feel the USB click (gotta be super fast people), enter recovery mode.</li>
<li><strong>I had to use the stock SD card that came with the phone, not a new/replacement one.</strong> Previously I had a 4 gig card in there from an old phone which was actually bought at Micro Center (had photos/files/etc on it). I read somewhere that you needed to use a stock SD card (I guess the types are different). Long story short: The new card I had in the phone did not allow it to show up as &#8220;offline&#8221;. I used the stock SD card and magically the phone started showing up in the loop immediately.</li>
</ul>
<p>That pretty much did it for me. I was able to root the phone, install other roms and then I went full circle and brought it back to factory settings with this <a href="http://forum.xda-developers.com/showthread.php?t=705345">ClockworkMod nandroid backup</a>.</p>
<p>So key points: Be fast with plugging in the USB and entering recovery mode. Use the stock SD card not some junk you bought from Micro Center (like me). <img src='http://blog.donnfelker.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donnfelker.com/2010/06/29/gotchas-with-rooting-a-mytouch-slide/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Android App – Eventdroid Released</title>
		<link>http://blog.donnfelker.com/2010/06/28/android-app-eventdroid-released/</link>
		<comments>http://blog.donnfelker.com/2010/06/28/android-app-eventdroid-released/#comments</comments>
		<pubDate>Mon, 28 Jun 2010 13:45:40 +0000</pubDate>
		<dc:creator>Donn</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.donnfelker.com/?p=500</guid>
		<description><![CDATA[
Last week I released Eventdroid, the first Android based Eventbrite Bar code Scanner / Event Check-in App. With this app you can check in attendees to your Eventbrite app with your Android phone using a bar code scanner &#8211; or if you prefer to do it manually, you can check them in one by one <a href="http://blog.donnfelker.com/2010/06/28/android-app-eventdroid-released/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.donnfelker.com/wp-content/uploads/2010/06/screenshot_03.png"><img class="alignleft size-medium wp-image-502" title="screenshot_03" src="http://blog.donnfelker.com/wp-content/uploads/2010/06/screenshot_03-300x175.png" alt="" width="300" height="175" /></a></p>
<p>Last week I released <a href="http://www.eventdroid.com">Eventdroid</a>, the first Android based <a href="http://www.eventbrite.com">Eventbrite </a>Bar code Scanner / Event Check-in App. With this app you can check in attendees to your Eventbrite app with your Android phone using a bar code scanner &#8211; or if you prefer to do it manually, you can check them in one by one through the manual check in process.</p>
<p>You can check out Eventdroid by either installing it (scan the barcode below) or you can get more details on <a href="http://www.eventdroid.com">the official Eventdroid website</a>.</p>
<p><a href="http://blog.donnfelker.com/wp-content/uploads/2010/06/eventdroid_qrcode.png"><img class="alignleft size-full wp-image-501" title="eventdroid_qrcode" src="http://blog.donnfelker.com/wp-content/uploads/2010/06/eventdroid_qrcode.png" alt="" width="135" height="135" /></a></p>
<p>Scan the barcode to download Eventdroid</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donnfelker.com/2010/06/28/android-app-eventdroid-released/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Pruning Elmah Files with Powershell</title>
		<link>http://blog.donnfelker.com/2010/06/22/pruning-elmah-files-with-powershell/</link>
		<comments>http://blog.donnfelker.com/2010/06/22/pruning-elmah-files-with-powershell/#comments</comments>
		<pubDate>Tue, 22 Jun 2010 19:03:42 +0000</pubDate>
		<dc:creator>Donn</dc:creator>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Scripting]]></category>

		<guid isPermaLink="false">http://blog.donnfelker.com/?p=497</guid>
		<description><![CDATA[We use (and love) Elmah. Due to many reasons we decided to opt for the XML file logging to AppData. This works great and is super simple to set up. The only issue is that on our test and production servers we were filling up the AppData directory and after awhile Elmah.axd would take minutes <a href="http://blog.donnfelker.com/2010/06/22/pruning-elmah-files-with-powershell/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>We use (and love) <a href="http://code.google.com/p/elmah/">Elmah</a>. Due to many reasons we decided to opt for the XML file logging to AppData. This works great and is super simple to set up. The only issue is that on our test and production servers we were filling up the AppData directory and after awhile Elmah.axd would take minutes to load.</p>
<p>I wrote a Powershell script that we could put on a timer (Windows Schedule Task) that would delete all but the last 100 error logs. This is a pretty brute force script, but simple. Unfortunately due to some internal regulations we were not able to use the script so I&#8217;m sharing it here.</p>
<h3>How to Use</h3>
<p>Download the source below and save it as &#8220;prune.ps1&#8243;. Run it like this:</p>
<blockquote><p><em>#&gt; .\prune.ps1 -prunedirectory &#8220;c:\path\to\elmahlogs\&#8221; </em></p></blockquote>
<p>The script will keep the 100 most recent. Do you want more kept around? No problem, just change the &#8220;$numberOfFilesToKeep&#8221; variable.</p>
<p>Enjoy -</p>
<pre class="brush: powershell;">param
 (
 [string] $prunedirectory = $(throw &quot;Parameter - 'prunedirectory' is required.&quot;)
 )

$numberOfFilesToKeep = 100
$files = get-childitem $prunedirectory*.xml | sort-object -property CreationTime -descending
for($i = $numberOfFilesToKeep; $i -lt $files.count; $i++) { rm -force $files[$i].fullname }</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.donnfelker.com/2010/06/22/pruning-elmah-files-with-powershell/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Android: Db4o StackOverflowError</title>
		<link>http://blog.donnfelker.com/2010/06/21/android-db4o-stackoverflowerror/</link>
		<comments>http://blog.donnfelker.com/2010/06/21/android-db4o-stackoverflowerror/#comments</comments>
		<pubDate>Mon, 21 Jun 2010 13:25:32 +0000</pubDate>
		<dc:creator>Donn</dc:creator>
				<category><![CDATA[Mobile]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[db40]]></category>
		<category><![CDATA[wp7]]></category>

		<guid isPermaLink="false">http://blog.donnfelker.com/?p=493</guid>
		<description><![CDATA[I&#8216;m using db4o for a persistence store in an Android app since db4o allows FREE usage in Android apps I decide it would be a good fit. Until I ran into the an error I could not get around for a couple of weeks.
Over the last couple of weeks I&#8217;ve been dealing with an error <a href="http://blog.donnfelker.com/2010/06/21/android-db4o-stackoverflowerror/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>I<a href="http://developer.db4o.com/Platforms/Java/Android.aspx"><img class="size-full wp-image-494 alignleft" title="db4o_logo" src="http://blog.donnfelker.com/wp-content/uploads/2010/06/db4o_logo.png" alt="" width="250" height="124" /></a>&#8216;m using <a href="http://developer.db4o.com/Platforms/Java/Android.aspx" target="_blank">db4o </a>for a persistence store in an Android app since db4o allows <a href="http://developer.db4o.com/Platforms/Java/Android.aspx" target="_blank">FREE usage in Android apps</a> I decide it would be a good fit. Until I ran into the an error I could not get around for a couple of weeks.</p>
<p>Over the last couple of weeks I&#8217;ve been dealing with an error from hell, the StackOverflowError. I reworked the object model, I cut down the calls, trimmed up all the fat in the Android app I could find and I couldn&#8217;t find what was causing the db40 classes to throw a StackOverflow error.</p>
<p>The error that I&#8217;d get back would look like this:</p>
<pre class="brush: plain;">

06-12 18:31:06.630: DEBUG/dalvikvm(17018): newInstance failed: no ()
 06-12 18:31:06.640: INFO/dalvikvm(17018): Stack overflow, expanding  (0x41869200 to 0x41869000)
 06-12 18:31:06.640: INFO/dalvikvm(17018): Shrank stack (to 0x41869200,  curFrame is 0x41869698)
 06-12 18:31:06.640: DEBUG/AndroidRuntime(17018): Shutting down VM
 06-12 18:31:06.640: WARN/dalvikvm(17018): threadid=3: thread exiting  with uncaught exception (group=0x4001b180)
 06-12 18:31:06.690: DEBUG/dalvikvm(17018): GC freed 5995 objects /  562312 bytes in 36ms
 06-12 18:31:06.800: DEBUG/dalvikvm(17018): GC freed 3836 objects /  436456 bytes in 79ms
 06-12 18:31:06.840: DEBUG/dalvikvm(17018): GC freed 687 objects / 167288  bytes in 33ms
 06-12 18:31:06.860: ERROR/AndroidRuntime(17018): Uncaught handler:  thread main exiting due to uncaught exception
 06-12 18:31:07.020: DEBUG/Gmail(140): MailEngine.sendOrSaveMessage  messageId=1338387167469109248 refMessageId=0,  conversationId=1338387167469109248
 06-12 18:31:07.030: WARN/ActivityManager(76): Activity pause timeout for  HistoryRecord{449684b8 com.google.android.gm/.ComposeActivity}
 06-12 18:31:07.090: DEBUG/dalvikvm(17018): GC freed 3055 objects /  566504 bytes in 215ms
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):  java.lang.StackOverflowError
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.foundation.CircularLongBuffer4.remove(CircularLongBuffer4.java:73)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.internal.caching.LRU2QLongCache.produce(LRU2QLongCache.java:40)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.internal.caching.LRU2QLongCache.produce(LRU2QLongCache.java:14)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.io.CachingBin.getPage(CachingBin.java:153)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.io.CachingBin.readInternal(CachingBin.java:65)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.io.CachingBin.read(CachingBin.java:57)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.io.BinDecorator.read(BinDecorator.java:40)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.io.BlockAwareBin.blockRead(BlockAwareBin.java:90)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.internal.IoAdaptedObjectContainer.readBytes(IoAdaptedObjectContainer.java:210)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.internal.IoAdaptedObjectContainer.readBytes(IoAdaptedObjectContainer.java:201)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.internal.LocalTransaction.readPointer(LocalTransaction.java:387)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.internal.LocalTransaction.getCurrentSlotOfID(LocalTransaction.java:355)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.internal.LocalObjectContainer.readReaderOrWriterByID(LocalObjectContainer.java:437)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.internal.LocalObjectContainer.readReaderByID(LocalObjectContainer.java:415)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.internal.LocalObjectContainer.readReaderByID(LocalObjectContainer.java:419)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.internal.marshall.UnmarshallingContext.readBuffer(UnmarshallingContext.java:127)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.internal.marshall.UnmarshallingContext.read(UnmarshallingContext.java:40)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.internal.ObjectReference.read(ObjectReference.java:304)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.internal.ObjectReference.read(ObjectReference.java:290)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.internal.ObjectContainerBase.getHardObjectReferenceById(ObjectContainerBase.java:956)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.internal.marshall.AbstractReadContext.classMetadataForObjectId(AbstractReadContext.java:85)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.internal.marshall.AbstractReadContext.readObject(AbstractReadContext.java:57)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.internal.marshall.AbstractReadContext.readAtCurrentSeekPosition(AbstractReadContext.java:46)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.internal.OpenTypeHandler.read(OpenTypeHandler.java:172)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.internal.Handlers4.readValueType(Handlers4.java:313)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.internal.marshall.AbstractReadContext.readAtCurrentSeekPosition(AbstractReadContext.java:48)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.internal.marshall.AbstractReadContext$1.run(AbstractReadContext.java:38)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.internal.marshall.SlotFormat.doWithSlotIndirection(SlotFormat.java:64)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.internal.marshall.AbstractReadContext.readObject(AbstractReadContext.java:36)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.internal.handlers.array.ArrayHandler.readInto(ArrayHandler.java:381)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.internal.handlers.array.ArrayHandler.readElements(ArrayHandler.java:363)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.internal.handlers.array.ArrayHandler.read(ArrayHandler.java:355)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.internal.Handlers4.readValueType(Handlers4.java:313)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.internal.marshall.AbstractReadContext.readAtCurrentSeekPosition(AbstractReadContext.java:48)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.internal.OpenTypeHandler.read(OpenTypeHandler.java:172)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.internal.Handlers4.readValueType(Handlers4.java:313)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.internal.marshall.AbstractReadContext.readAtCurrentSeekPosition(AbstractReadContext.java:48)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.internal.marshall.AbstractReadContext$1.run(AbstractReadContext.java:38)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.internal.marshall.SlotFormat.doWithSlotIndirection(SlotFormat.java:64)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.internal.marshall.AbstractReadContext.readObject(AbstractReadContext.java:36)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.internal.marshall.AbstractReadContext.read(AbstractReadContext.java:28)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.internal.FieldMetadata.read(FieldMetadata.java:811)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.internal.FieldMetadata.activate(FieldMetadata.java:646)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.internal.handlers.StandardReferenceTypeHandler$2.processAspect(StandardReferenceTypeHandler.java:93)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.internal.metadata.MarshallingInfoTraverseAspectCommand.processAspect(MarshallingInfoTraverseAspectCommand.java:52)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.internal.metadata.StandardAspectTraversalStrategy.traverseAllAspects(StandardAspectTraversalStrategy.java:24)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.internal.ClassMetadata.traverseAllAspects(ClassMetadata.java:2086)
 06-12 18:31:07.100: ERROR/AndroidRuntime(17018):     at  com.db4o.internal.handlers.StandardReferenceTypeHandler.traverseAllAspects(St
</pre>
<p>After posting on the forums I was given some advice from Fabio (who looks to be an employee),. He advised to try the <a href="https://developer.db4o.com/Documentation/Reference/db4o-7.12/java/tutorial/docs/TransparentActivation.html#outline75" target="_blank">TransparentActivation</a> mechanism. I implemented it on my 6 classes and in the configuration of db4o as shown in an example in the previous link.</p>
<p>Magically, the error went away. So, if you get this error, implement the Activatable interface (or IActivatable in .NET).</p>
<p>NOTE: This could be vastly useful when Windows Phone 7 is released if you&#8217;re using it for .NET.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donnfelker.com/2010/06/21/android-db4o-stackoverflowerror/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Db4o’s Java Doc/Documentation/Help in Eclipse</title>
		<link>http://blog.donnfelker.com/2010/06/12/db4os-java-docdocumentationhelp-in-eclipse/</link>
		<comments>http://blog.donnfelker.com/2010/06/12/db4os-java-docdocumentationhelp-in-eclipse/#comments</comments>
		<pubDate>Sun, 13 Jun 2010 01:37:53 +0000</pubDate>
		<dc:creator>Donn</dc:creator>
				<category><![CDATA[Mobile]]></category>
		<category><![CDATA[android]]></category>

		<guid isPermaLink="false">http://blog.donnfelker.com/?p=490</guid>
		<description><![CDATA[This may be easy to remember for others (and I&#8217;m sure I&#8217;ll remember it eventually) but here is&#8230;
When I mouse over a call, I want the java-doc to be presented so that I can see what the api options/docs are. Just referencing the jar is not enough. Here&#8217;s what you have to do after you&#8217;ve <a href="http://blog.donnfelker.com/2010/06/12/db4os-java-docdocumentationhelp-in-eclipse/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>This may be easy to remember for others (and I&#8217;m sure I&#8217;ll remember it eventually) but here is&#8230;</p>
<p>When I mouse over a call, I want the java-doc to be presented so that I can see what the api options/docs are. Just referencing the jar is not enough. Here&#8217;s what you have to do after you&#8217;ve added Db4o to your build path:</p>
<ul>
<li>Expand &#8220;Referenced Libraries&#8221;branchof your project in Package Explorer.</li>
<li>Select db4o-* library, right-click and open &#8220;Properties&#8221;</li>
<li>Select Javadoc Location in the list and browse to \doc\api folder in your db4o installation (or wherever you downloaded/extracted the db4o stuff) I place mine into c:\sdk\db4o\</li>
</ul>
<p>Now you&#8217;ll get nice java docs in eclipse like this:</p>
<p><a href="http://blog.donnfelker.com/wp-content/uploads/2010/06/javadoc.png"><img class="alignleft size-medium wp-image-491" title="javadoc" src="http://blog.donnfelker.com/wp-content/uploads/2010/06/javadoc-300x107.png" alt="" width="300" height="107" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donnfelker.com/2010/06/12/db4os-java-docdocumentationhelp-in-eclipse/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A Poll: Web Api Calls</title>
		<link>http://blog.donnfelker.com/2010/06/11/a-poll-web-api-calls/</link>
		<comments>http://blog.donnfelker.com/2010/06/11/a-poll-web-api-calls/#comments</comments>
		<pubDate>Fri, 11 Jun 2010 12:14:39 +0000</pubDate>
		<dc:creator>Donn</dc:creator>
				<category><![CDATA[Api]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[MVC2]]></category>

		<guid isPermaLink="false">http://blog.donnfelker.com/?p=485</guid>
		<description><![CDATA[A couple of days ago I threw out a poll on twitter to see what people thought of a particular question I had in mind. Here it is:
 
What I&#8217;m after is pretty simple &#8230; how should one handle exceptional cases in Web Api development. Namily JSON and XML. My take on it is pretty <a href="http://blog.donnfelker.com/2010/06/11/a-poll-web-api-calls/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>A couple of days ago I threw out a poll on twitter to see what people thought of a particular question I had in mind. Here it is:</p>
<p><script src="http://twtpoll.com/js/badge.js" type="text/javascript"></script> <script src="http://twtpoll.com/badge/?twt=0m29c6&amp;b=1" type="text/javascript"></script></p>
<p>What I&#8217;m after is pretty simple &#8230; how should one handle exceptional cases in Web Api development. Namily JSON and XML. My take on it is pretty simple. If I have an API call that is a HTTP GET for the following URL: http://example.org/api/v1/users/get_orders.json</p>
<p>I feel I should get a list of orders back.</p>
<p>What if there are no orders to return (maybe this is a new account, maybe the person who owns this account deleted them all, etc)? I feel I should get back an empty list of orders. However, some API&#8217;s on the web (that shall remain nameless at this time) return this scenario as a &#8220;error document&#8221;. The problem with this is that <strong>an &#8220;error document&#8221; should be used for errors and exceptions</strong>, <strong>not known and valid use cases.</strong></p>
<p>Example: if I&#8217;m required to pass in my API KEY through the HTTP Headers and I give your API an invalid key, then I would expect that you return an error document back to the caller (my client app). That is an error! An empty list of orders is a valid use case.</p>
<p><strong>Let my client app decide what I should do, I&#8217;m consuming your data, you&#8217;re not consuming my application. </strong></p>
<p>What&#8217;s your opinion? (Please vote as well, thanks!)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donnfelker.com/2010/06/11/a-poll-web-api-calls/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The Customized Android UI Problem</title>
		<link>http://blog.donnfelker.com/2010/06/10/the-customized-android-ui-problem/</link>
		<comments>http://blog.donnfelker.com/2010/06/10/the-customized-android-ui-problem/#comments</comments>
		<pubDate>Thu, 10 Jun 2010 12:29:33 +0000</pubDate>
		<dc:creator>Donn</dc:creator>
				<category><![CDATA[Mobile]]></category>
		<category><![CDATA[android]]></category>

		<guid isPermaLink="false">http://blog.donnfelker.com/?p=481</guid>
		<description><![CDATA[There&#8217;s a problem in the Android UI world and its really starting to bother a lot of people (from what I&#8217;m reading online and from conversations I&#8217;m having with other Android users). Every company that develops Android hardware believes they can make the UI &#8220;better&#8221; then the default UI. A few of the offenders include:

HTC
T-Mobile
Samsung
&#8230; <a href="http://blog.donnfelker.com/2010/06/10/the-customized-android-ui-problem/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s a problem in the Android UI world and its really starting to bother a lot of people (from what I&#8217;m reading online and from conversations I&#8217;m having with other Android users). Every company that develops Android hardware believes they can make the UI &#8220;better&#8221; then the default UI. A few of the offenders include:</p>
<ul>
<li>HTC</li>
<li>T-Mobile</li>
<li>Samsung</li>
<li>&#8230; and I&#8217;m sure a few others.</li>
</ul>
<h2>My Problem with the UI</h2>
<p>The issue is that sometimes, as users, all we want is the vanilla install. The same goes for Android phones. A perfect example of this is on the new <a href="http://blog.donnfelker.com/wp-content/uploads/2010/06/mytouch-3g-slide.png" target="_blank">MyTouch 3G Slide</a> phone. T-Mobile and HTC have created a bastardized &#8220;<a href="http://gizmodo.com/5444557/htc-espresso-sense-ui-ported-to-droid" target="_blank">Expresso Sense UI</a>&#8221; that has shipped on all the MyTouch 3G Slide Phones. I&#8217;ve tried to disable it through the application settings, but there is some override somewhere that wont allow me to disable the Sense UI stuff (or I&#8217;m missing something &#8211; I hope I am because this UI is a PITA). Expresso Sense UI? Nah, I call it <strong><em>Express Garbage UI</em></strong>. <em>Sure, it works, but it doesnt feel like an Android Phone</em>. It&#8217;s like someone thought,</p>
<blockquote><p>&#8220;Lets take this cool piece of hardware and paint rainbows with gradient filters and glass icons all over it. Then lets add some more colors, move the menus and change the way things normally work. Yeah, that&#8217;d be awesome.&#8221;</p></blockquote>
<p>Thats pretty much happened to the MyTouch 3G Slide.</p>
<p>A lot of reviews of the 3G Slide on the web say that the UI is &#8220;a bit odd&#8221; and &#8220;takes some getting used to&#8221; but I think they (HTC and T-Mobile) just over did it. They tried to add to much. Stick with KISS people, come on!</p>
<h3>How do we fix it?</h3>
<p>As a developer and user, I&#8217;m not sure I can. But I know that the phone developers can. So here&#8217;s what I&#8217;m proposing &#8230;</p>
<p><em><strong>Give us the option of what UI we want</strong></em>. When I boot up my phone for the first time (or when I go into the phone settings) allow me to choose your fancy gradient ecstacy party UI or the standard Android UI. I think the mobile manufacturers would be surprised at how many people would PREFER the normal Android UI.</p>
<p>I know my wife, myself, and about 5 other friends would prefer the Android UI compared to the alternative.</p>
<p><em>Note: There are alternative launchers out there you can install, but sometimes all I want is the Android UI, nothing else, nothing more. </em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donnfelker.com/2010/06/10/the-customized-android-ui-problem/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
