<?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>NilObject</title>
	<atom:link href="http://nilobject.com/index.php/feed/" rel="self" type="application/rss+xml" />
	<link>http://nilobject.com</link>
	<description>Random geek-outs from a developer and all around nice guy.</description>
	<lastBuildDate>Fri, 21 May 2010 13:58:24 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>My first day on Android</title>
		<link>http://nilobject.com/index.php/2010/05/21/my-first-day-on-android/</link>
		<comments>http://nilobject.com/index.php/2010/05/21/my-first-day-on-android/#comments</comments>
		<pubDate>Fri, 21 May 2010 13:58:24 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://nilobject.com/?p=44</guid>
		<description><![CDATA[I&#8217;ve never been satisfied with how Apple has been running the iPhone developer program, and when I had the opportunity to investigate Android for my startup, I fell in love with the idea of what they were trying to achieve. I also enjoyed the SDK. While I have a few gripes with some of the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve never been satisfied with how Apple has been running the iPhone developer program, and when I had the opportunity to investigate Android for my startup, I fell in love with the idea of what they were trying to achieve. I also enjoyed the SDK. While I have a few gripes with some of the API designs, I also have gripes with nearly every SDK I&#8217;ve ever used. Overall, I enjoyed the platform and vision.</p>
<p>Last summer while in Santa Fe, my AT&#038;T service absolutely sucked. I could rarely make a phone call at the house we were staying at, and I used it as an excuse to get a used G1 off of Craigslist. T-mobile&#8217;s service in Santa Fe was very good, and I enjoyed using the G1. But compared to my 3GS, it was just too sluggish. I decided that if I were to get a significantly faster phone, I would be happy with Android. This was back when Android was at 1.5.</p>
<p>When Apple did the <a href="http://nilobject.com/index.php/2010/05/14/my-thoughts-on-section-3-3-1/">3.3.1 fiasco</a>, I decided I should switch when I could monetarily afford to do so. I finally made the plunge last Saturday, activating my T-mobile service on my G1 and inquiring with a friend about a <a href="http://google.com/phone">Nexus One</a> I knew he was wanting to sell.</p>
<p>He dropped off the phone at my house on Wednesday, and I immediately began tweaking and setting it up, finding replacements for my software on the iPhone. I <a href="http://jonathanjohnson.com/index.php/2010/05/20/how-my-new-nexus-one-led-to-the-police-visiting-my-house/">had a little misunderstanding that led to the police showing up at my house</a>, but other than that, it&#8217;s been smooth sailing, and I&#8217;m currently happy with my switch. However, this would be a boring blog post if I didn&#8217;t give some sort of report with some details. So let me comment on the overall experience as well as my software finds.</p>
<h2>Android 2.1 Experience</h2>
<p>Android is a great platform for geeks, and probably an OK platform for non-geeks. We&#8217;ll find out for sure when I switch my wife over in the coming months. I originally felt that the settings app exposed a little too much, but as I was looking for a good example, I&#8217;m actually backtracking.</p>
<p><img src="http://c0138891.cdn.cloudfiles.rackspacecloud.com/android-tech/settings.png"/></p>
<p>This is typical of all of the settings menus. There is a large title that is pretty clear, and then a line of descriptive text underneath. If it weren&#8217;t for the descriptive text, settings would be a little too geeky. But as I looked for a good example of something that was just too technical for the lay person, I realized that the help text alleviates most of the confusion.</p>
<p>Let&#8217;s consider the lock screen in 2.1:</p>
<p><img src="http://c0138891.cdn.cloudfiles.rackspacecloud.com/android-tech/lock.png"/></p>
<p>The lock screen provides several pieces of information to you. The obvious is the date and time, as well as battery status. The notification bar at the top is visible, showing you the status of the networks as well as any notifications you have. For example, if you have any new emails, the gmail icon will show up in the top left. I was listening to a podcast while I took this screenshot, and you can see the little Play icon.</p>
<p>There are two widgets on the screen in the lower third. The lock icon is dragged to the right to unlock the screen, and the sound icon is dragged to the left to toggle silent mode.</p>
<p>One of the confusing features that I alluded to above is that there are two silent modes. One still allows for the phone to vibrate, while the other completely silences the phone. This widget completely silences the phone, and there is no way to configure the device to never go into completely silent mode. However, I can see the usefulness of going completely silent at a moments notice.</p>
<p>On the iPhone, there is a physical switch for this setting. I kind of miss that, but a tap of the physical lock button and a single swipe isn&#8217;t really that big of a deal.</p>
<p>The real power of Android for me comes from widgets. Here&#8217;s my current home screen:</p>
<p><img src="http://c0138891.cdn.cloudfiles.rackspacecloud.com/android-tech/home.png"/></p>
<p>I absolutely love the live wallpapers, which allow the wallpaper to be animated, and the one that I chose is called <a href="http://www.androlib.com/android.application.fishnoodle-spacescapewallpaper_free-tzww.aspx">Galactic Core</a>. Next, I installed <a href="http://www.androlib.com/android.application.com-levelup-beautifulwidgets-jtDA.aspx">Beautiful Widgets</a> which provides the large clock, date, and weather widget at the top of the screen.</p>
<p>This widget is powerful. Tapping the time will open the Clock app. Tapping the date will open the Calendar app. Tapping the weather will open your choice of weather app. So, not only do I have instant access to the useful information, I also am not losing much real estate on my default screen because it acts as 3 launcher buttons that I would commonly use.</p>
<p>The next widget you see is my agenda. It&#8217;s a free download called <a href="http://www.androlib.com/android.application.com-roflharrison-agenda-zFBn.aspx">Android Agenda Widget</a>. It&#8217;s extremely customizable, but what you see is a fairly stock version of it. The buttons for add (+), settings, and refresh look like they&#8217;re too small to accurately hit. However, I have absolutely no problem hitting them. So not only can I tap on a meeting to bring up its details, I can add a new item directly from my home screen very easily.</p>
<p>Finally, you&#8217;ll see the collection of my software. This is the next thing I want to highlight.</p>
<h2>Does the Marketplace have good software?</h2>
<p>The short answer is, Yes. Here&#8217;s a list of software I know I routinely use:</p>
<ul>
<li><a href="http://www.groceryiq.com/groceryiq/index.html">Grocery IQ</a>: This application is what my wife and I used on our iPhones to manage our shopping list. I could create a list, and my wife would instantly have it on her phone. The first time I launched the Marketplace on my Nexus One, Grocery IQ was featured. I downloaded it, tested syncing between my iPhone and Nexus One, and it worked flawlessly.</li>
<li><a href="http://newsrob.blogspot.com/">NewsRob</a> is a great Google Reader client for Android. It downloads articles for offline access, and correctly syncs unread/read back with Google Reader. Not much else to say about it. It&#8217;s software that &#8220;just works.&#8221;</li>
<li><a href="http://voice.google.com/">Google Voice</a>: GV is the main reason I wanted an Android phone. I use Google voice to allow myself to answer calls on my computer, get transcribed voicemails, block unwanted callers, and send text messages. On Android, Google Voice is directly integrated, and it works wonderfully. Every call I make goes through my GV number. The only downside I&#8217;ve noticed is that occasionally text messages don&#8217;t arrive immediately.</li>
<li>Online services: Evernote, reQall, WordPress, Twitter, Reddit*, Facebook, and TripIt all sport their own native clients, and they all work very well. (*Reddit is Fun isn&#8217;t an official client)</li>
<li><a href="http://www.snoggdoggler.com/?q=node/59">DoggCatcher</a> is a very powerful, and pretty decently designed podcast client. It can automatically download new podcasts, or you can manually choose what to download. I don&#8217;t have many complaints about it &#8212; it works really well.</li>
</ul>
<p>Overall, the software choices in the Marketplace are pretty dang good. However, I have to still voice that the Marketplace isn&#8217;t as conducive to finding great software as it could be. I&#8217;ve found searching without a specific app name in mind can make it hard to get good search results. When I&#8217;m looking for a solution to a problem, I&#8217;m better off hitting google first, and then finding someone recommending a piece of software rather than directly consulting the marketplace.</p>
<h2>Conclusion</h2>
<p>It may have only been one full day, but I&#8217;m still enjoying my Nexus One. I also am enjoying the ability to make calls from my house reliably and with good sound quality. I&#8217;m happy with my decision so far, and I only see Android becoming more popular throughout the year with more and more devices across more and more carriers. If you&#8217;re a developer and you aren&#8217;t at least watching the Android platform, I think you&#8217;re going to end up behind the curve. While Marketplace may not be a guaranteed boon today, it&#8217;s in Google&#8217;s best interest to continue to improve the experience, and with the increasing size of the user base, I see it as an inevitability that the Marketplace will be a viable business center in the near future.</p>
]]></content:encoded>
			<wfw:commentRss>http://nilobject.com/index.php/2010/05/21/my-first-day-on-android/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android vs. iPhone Development: Navigation Differences</title>
		<link>http://nilobject.com/index.php/2010/05/16/android-vs-iphone-development-navigation-differences/</link>
		<comments>http://nilobject.com/index.php/2010/05/16/android-vs-iphone-development-navigation-differences/#comments</comments>
		<pubDate>Sun, 16 May 2010 19:16:05 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://nilobject.com/?p=42</guid>
		<description><![CDATA[A couple of months ago, I began looking at the Android SDK to see what life was like. I was confronted with Activities, Packages, Layouts, and many other concepts that were foreign to me. I ordered a great eBook and hunted for videos. I found this gem titled &#8220;Interaction and Visual Design with Android&#8221;:

It&#8217;s really [...]]]></description>
			<content:encoded><![CDATA[<p>A couple of months ago, I began looking at the Android SDK to see what life was like. I was confronted with Activities, Packages, Layouts, and many other concepts that were foreign to me. I ordered a great <a href="http://www.pragprog.com/titles/eband3/hello-android">eBook</a> and hunted for videos. I found this gem titled &#8220;Interaction and Visual Design with Android&#8221;:</p>
<p><object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/wdGHySpipyA&#038;hl=en_US&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/wdGHySpipyA&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object></p>
<p>It&#8217;s really long, and I&#8217;m going to attempt to summarize while comparing to what the iPhone offers.</p>
<h2>A new paradigm</h2>
<p>I&#8217;m not an expert on operating system designs, so I could be attributing Google with innovation where someone else is warranted. However, from my limited experience, Google is innovating down to how applications are defined and run.</p>
<p>In the olden days, an application was expected to define a start function. The operating system would take care of the details of properly setting up a separate process, memory space, etc, and then would look in the binary to find the exported start function. It would then jump to that address, and begin executing. This leaves all of the logic up to the programmer, to define what happens once the app launches. For example, if this was launched with command line arguments, the programmer would be in charge of parsing said arguments.</p>
<p>Google thought hard about how a mobile device was used, and what paradigms you would want when applications are nearly always full-screen. What they came up with was an elegant solution that removed a lot of work from the developer: activities.</p>
<p>An activity at its most core-sense is like a UIWindow. It defines a full screen &#8220;activity&#8221; that the user is going to interact with. Usually each new view you see on an Android application is a different activity. In some ways, it&#8217;s a mesh of both a UIWindow and a UIViewController with an implied UINavigationController. To better understand the comparison, let&#8217;s look at an example:</p>
<p><img src="http://c0138891.cdn.cloudfiles.rackspacecloud.com/androidiphone1.png"/></p>
<p>In this simple todo application, the todo list is the main window that the user expects to see when they enter the application. From there, you can add a todo, or you can export your list.</p>
<p>In the iPhone world, this would most likely be done with this structure:</p>
<ul>
<li>UIWindow whose view is a UINavigationController</li>
<li>Todo List would be a UITableViewController subclass. It would have two buttons in the UINavigationBar, one to open the &#8220;new todo&#8221; and &#8220;export&#8221; functions.</li>
<li>New Todo would be defined as a UIViewController subclass, and would be presented as a modal view controller in the main navigation controller. This would provide the slide-up visual that is common when adding items. Cancel would be the left button, and Save would be the right button.</li>
<li>Export would also be defined as a UIViewController, and probably would be pushed onto the UINavigationController&#8217;s stack, providing the slide-in visual cue. Without any extra work, the navigation controller automatically adds the &#8220;Back&#8221; button as the leftBarButtonItem</li>
</ul>
<p>A lot of things are going on in the iPhone to make this setup work. The UINavigationController is a staple that you see in many large applications on the iPhone. Let&#8217;s look at how this would be structured on Android:</p>
<ul>
<li>Todo List would be defined as a ListActivity, and it would have the intent to be a Launcher (more on intents later). Because Android has a hardware menu button, it is common to put the New Todo and Export buttons in the menu, leaving the full screen for the activity at hand.</li>
<li>New Todo would be defined as an Activity, no intents would be defined. Save button would be at the bottom of the form. Because of Android&#8217;s hardware &#8220;back&#8221; button, you don&#8217;t need to define a cancel button.</li>
<li>Export would also be defined as an Activity with no intents. Export button would be at the bottom of the form.</li>
</ul>
<p>Now, the iPhone adds sexiness to the mix in that it does fancy transition between UIViewControllers when you&#8217;re using the UINavigationController. Android doesn&#8217;t have these transitions.</p>
<p>Instead, Android has a level of consistency that I really like. On the iPhone, once you&#8217;ve invoked a modal view controller, you can&#8217;t invoke another one without jumping through lots of hoops. It&#8217;s not something you want to do all the time, but I have run into the desire before. This sort of complexity in how the app navigates is a constant source of frustration in how to design your apps behaviors.</p>
<p>On the iPhone, you have one physical hardware button that Android also has &#8212; Home. The home button on both platforms will take you straight to your dashboard.</p>
<p>But Android adds the back button. This always-there button always works in the way you expect it to. It always takes you to the place you were at last. A common thing you see in many iPhone applications is in-application browsing. Twitter clients actually embed their own browser to ensure the user doesn&#8217;t have to leave their application to view a link someone pasted in their feed.</p>
<p>On Android, there&#8217;s no such worry. Launching a URL is just like launching any other activity on the phone. It adds the new activity to the stack, and when the user hits the back button, it will take you back to your application. This offers unbridled user experiences, allowing them to do what they want, how they want, and have a consistent way to get back to where they were before.</p>
<p>Now, iPhone OS 4.0, multitasking is here. I haven&#8217;t played with the 4.0 betas yet, and even if I had, many specifics I probably couldn&#8217;t blog about yet. However, I think it&#8217;s clear from the public presentations that multitasking brings us closer to the desktop behavior of how applications work, rather than focusing on how the user uses the device.</p>
<h2>How do you use your device?</h2>
<p>Google&#8217;s design is based around the idea that when the user is on the dashboard, they are going to launch an application with the intent on doing something specific. I brought up Twitter, so let&#8217;s examine that workflow:</p>
<ul>
<li>User launches twitter client.</li>
<li>Reads tweets, occasionally replies to a tweet or two</li>
<li>User clicks on interesting links, it launches the browser.
<ul>
<li>User either hits back because they&#8217;re done, or,</li>
<li>they continue browsing the site
<ul>
<li>Potentially causing memory to become low, causing background apps to be quit.</li>
<li>Even if the background twitter app has been quit, back will still take you back to the same activity in the twitter app that launched the browser.</li>
</ul>
</ul>
</li>
</ul>
<p>On the iPhone and on your computer, switching between multiple applications can distract you from your original intent. Let&#8217;s say you went Twitter -> Browser -> App Store/Market. At this point on the iPhone, you may have forgotten you were in the middle of reading twitter. However, on Android, you just hit back twice, and you&#8217;re in the twitter client again, regardless of low-memory situations.</p>
<h2>Intents</h2>
<p>I feel this topic is part of navigation, so I wanted to address it briefly. Intents are a way to express what an activity is used for. I already mentioned &#8220;Launcher&#8221; above, which means that this activity should be shown as a button on the dashboard.</p>
<p>Additionally, you can expose activities with intents such as receiving a picture. By doing this, you can make your application show up in the list of things to do after you take a picture using the built in camera application. This sort of seamless integration is something you just cannot achieve on the iPhone. </p>
<p>On my G1, I can press the camera button to make the camera interface come up (regardless of application I&#8217;m in). I take the picture, and then click &#8220;Share&#8221;. A menu pops up asking me what I would like to use to share it. In this list, I have several built-in options, as well as application like Evernote and Twidroid. I can click Twidroid and it will launch, use the picture, and let me type in a tweet. I hit post, and then I&#8217;m back at the camera interface. I hit back again since I don&#8217;t need to take any more pictures, and I&#8217;m back in the app I was using before I noticed that squirrel showing the cat who wears the pants.</p>
<p>That&#8217;s a picture perfect example of how I want my device to behave.</p>
<h2>My conclusion</h2>
<p>The differences may be subtle, but I honestly feel Google approached this problem from a clean slate perspective instead of focusing on how things have worked in the past. Apple&#8217;s UI is more &#8220;fun&#8221; and sexy, but from a practical standpoint, it forces developers to adopt specific behaviors that can lead to nightmares in design because of the way it boxes you into a corner.</p>
<p>When developing on the iPhone, I found myself fighting the UINavigationController to do specific things in an attempt to keep true to the way that Apple designed their applications. Beyond the UINavigationController, you still run into issues when interacting with multiple applications.</p>
]]></content:encoded>
			<wfw:commentRss>http://nilobject.com/index.php/2010/05/16/android-vs-iphone-development-navigation-differences/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>My thoughts on Section 3.3.1</title>
		<link>http://nilobject.com/index.php/2010/05/14/my-thoughts-on-section-3-3-1/</link>
		<comments>http://nilobject.com/index.php/2010/05/14/my-thoughts-on-section-3-3-1/#comments</comments>
		<pubDate>Fri, 14 May 2010 21:16:37 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://nilobject.com/?p=40</guid>
		<description><![CDATA[I&#8217;ve been out of commission for a bit, so I&#8217;m only now getting around to commenting on the debate over 3.3.1. As a person who used to help develop REALbasic, a cross-platform IDE, and a person who enjoys dreaming up and writing compilers in my spare time, I think you can see which side I&#8217;m [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://jonathanjohnson.com/index.php/2010/05/06/where-ive-been-for-the-last-2-5-weeks/">I&#8217;ve been out of commission for a bit</a>, so I&#8217;m only now getting around to commenting on the debate over 3.3.1. As a person who used to help develop <a href="http://www.realsoftware.com/">REALbasic</a>, a cross-platform IDE, and a person who enjoys dreaming up and writing compilers in my spare time, I think you can see which side I&#8217;m going to end up on.</p>
<p>My startup creates cross-platform software the hard way right now. We have Objective-C, modern Java (Android), &#8220;meh&#8221; Java (BlackBerry), and Ruby (web). There are chunks of our application that I&#8217;ve been dreaming up using Lua or some other embedded language to control, which would allow us to abstract out core logic to share across platforms. It&#8217;s a common tactic, most closely resembling the <a href="http://en.wikipedia.org/wiki/Bridge_pattern">bridge pattern</a>. To elaborate, the platform layer would define the abstraction layer in which the Lua code can execute, and then the Lua code would make calls into this layer as it made its calculations of what should happen.</p>
<p>It&#8217;s all a great dream, but because of 3.3.1, I can&#8217;t do it. It&#8217;s not about me wanting to make all of my UIs the same across all of the platforms. It&#8217;s about me wanting to abstract business-logic type decisions into some common layer.</p>
<p>Now, being a resourceful person, my thoughts shifted from using an embedded language to code generation. What if I turned a higher level language into both Objective-C and Java? That would do the trick. But the language choices in 3.3.1 expressly prohibit it, because it requires code to &#8216;originally&#8217; be written in Objective-C.</p>
<h3>Beyond my personal desires</h3>
<p>In <a href="http://daringfireball.net/2010/04/why_apple_changed_section_331">Gruber&#8217;s writeup</a>, I&#8217;m taken aback by some of his reasoning. Since Steve Jobs <a href="http://www.taoeffect.com/blog/2010/04/steve-jobs-response-on-section-3-3-1/">supposedly referenced this writeup</a>, let me spend a little time dissecting it.</p>
<blockquote><p>So what Apple does not want is for some other company to establish a de facto standard software platform on top of Cocoa Touch. Not Adobe’s Flash. Not .NET (through MonoTouch). If that were to happen, there’s no lock-in advantage. If, say, a mobile Flash software platform — which encompassed multiple lower-level platforms, running on iPhone, Android, Windows Phone 7, and BlackBerry — were established, that app market would not give people a reason to prefer the iPhone.</p></blockquote>
<p>This argument falls flat. It turns Apple from relying on superior hardware design and OS design, and framework design into someone who worries that it can&#8217;t compete on those elements alone. Apple is no stranger to this &#8212; these are the reasons many people prefer Macs over PCs. These are the reason that there are UI guidelines that good developers follow.</p>
<p>If you require vendor-lock-in, your business model is flawed. People don&#8217;t like to be forced. There&#8217;s a reason why democracy spread, why open-source grew, and why people switch between vendors. People enjoy choice and the ability to pick what works for them best. When you remove the option, people grow tired. </p>
<p>I don&#8217;t expect people to give up their iPhones quickly in revolt, and it&#8217;s not because applications are written in Cocoa Touch. It&#8217;s because iPhones are great devices, and people genuinely enjoy using them. If you&#8217;ve invested in applications, you also may have to re-purchase the apps when you switch to a new platform, just like if you switch from a Nikon DSLR to a Canon DSLR, you have to purchase new glass. Sufficiently motivated people will switch, but many aren&#8217;t unhappy enough to want to switch.</p>
<p>In other words, Apple already has a lock-in. This can&#8217;t be where their concern is.</p>
<h3>Expanding iPhone platforms can be supported</h3>
<blockquote><p> And, obviously, such a meta-platform would be out of Apple’s control. Consider a world where some other company’s cross-platform toolkit proved wildly popular. Then Apple releases major new features to iPhone OS, and that other company’s toolkit is slow to adopt them. At that point, it’s the other company that controls when third-party apps can make use of these features.</p></blockquote>
<p>Not necessarily true. I haven&#8217;t used Mono Touch, but C# does have the ability to call native methods directly. As did REALbasic. As do ruby and python (via ffi). Additionally, many languages have Objective-C bridges. What does this mean? It means that even if there&#8217;s not an already-wrapped class, I can still gain access to those features. Sure it&#8217;s a little more work than waiting for someone else to do the work, but it&#8217;s still *possible* which is my point. All it takes is for a vibrant community to have a few expert users, and reusable code arises. I noticed this when I worked at REAL Software. I was one of the many people in the community who would happily create easy-to-use wrappers around native functions/classes and share them with the community.</p>
<h3>User experience is a self-regulating measure</h3>
<blockquote><p> Flash CS5 and MonoTouch aren’t so much cross-platform as meta-platforms. Adobe’s goal isn’t to help developers write iPhone apps. Adobe’s goal is to encourage developers to write Flash apps that run on the iPhone (and elsewhere) instead of writing iPhone-specific apps. Apple isn’t just ambivalent about Adobe’s goals in this regard — it is in Apple’s direct interest to thwart them.</p></blockquote>
<p>The same argument applies for Macs, but Apple isn&#8217;t sweating. Why not? There&#8217;s the problem of look and feel. Even more important than on the computer, placement and look and feel of common elements are a necessity. We have such fine-tuned muscle control on a touch-screen device that when something isn&#8217;t quite right, it bugs the hell out of us. Now, either these meta platforms use native controls under the hood, which encourages proper application design, or they will suffer constantly as the platform evolves.</p>
<p>But&#8230; even if we agree that applications written in other environments might not behave &#8220;properly,&#8221; I must point out that there&#8217;s a lot of crappy software in the store right now. What&#8217;s the harm in allowing platforms entry to the store as long as the platforms *can* create applications that live up to the user experience guidelines? We already have plenty of apps that don&#8217;t meet the guidelines, so the argument that restricting everyone to Cocoa Touch will make everything better overall is just false.</p>
<h3>Apple is negatively impacting themselves</h3>
<blockquote><p>So consider how this change affects the various parties involved:</p>
<p>APPLE: Good, they maintain complete control over native iPhone OS app development.</p></blockquote>
<p>It also negatively impacts them in how it makes many developers feel. <a href="http://rentzsch.tumblr.com/post/592949476/c4-release">Wolf</a> gave up on C4 because of the continued feeling of &#8220;we don&#8217;t care&#8221; that Apple is giving developers. It breaks developers&#8217; spirits. The iPhone journey has been far from ideal from the standpoint of developers. The main reason people support it is not because they enjoy the restrictions Apple has placed, but that they see the financial opportunities and enjoy the devices. Many developers, if answering honestly, will agree that they don&#8217;t like the app review process or the restrictive agreements.</p>
<p>But we put up with it, because we can make a living off of it and the enjoyment of having our software running on the devices helps mitigate the negatives felt from Apple. However, draconian and arbitrary rules and enforcement of said rules are a recipe for revolution. Look at the American Revolution, French Revolution, etc. While I don&#8217;t literally expect developers to take up arms, I expect that Apple is running the relationship thin, and that Apple, the company, has stopped being a reason to stay on the platform. I remember when I used to be <b>proud</b> that I supported Apple, the Mac, and the iPhone. That feeling is pretty much gone, replaced with a good feeling that my apps are good and solve people&#8217;s problems. Apple as a company has been removed from my positive feelings for the platform and has become a negative for the platform. I know I can&#8217;t be alone in my feelings on this.</p>
<h3>From suggestions to requirements</h3>
<blockquote><p>IPHONE DEVELOPERS: No change. If you’re a developer and you’ve been following Apple’s advice, you will never even notice this rule. You’re already using Xcode, Objective-C, and WebKit. If you’re an iPhone developer and you are not following Apple’s advice, you’re going to get screwed eventually. If you are constitutionally opposed to developing for a platform where you’re expected to follow the advice of the platform vendor, the iPhone OS is not the platform for you. It never was. It never will be.</p></blockquote>
<p>The problem here is that it changed from being advice. It&#8217;s a brute force policy change that is legally binding. If Apple just kept giving advice, I wouldn&#8217;t have problems. They could say, &#8220;I told you so,&#8221; when the meta platforms break and are slow to update, or other problems arise. But instead they switch to a draconian policy which stifles innovation.</p>
<p>It&#8217;s like using a UITableViewController&#8217;s deprecated methods. The compiler warns you that it&#8217;s deprecated, which means it&#8217;s going to break at some point. But Apple doesn&#8217;t have a rule preventing you from submitting an application that uses deprecated APIs. If Apple is so concerned about making sure applications continue working, they would check for deprecated APIs and reject any application using them. They have the technology to do it, the only reason they don&#8217;t is that it would be too draconian, and developers wouldn&#8217;t put up with it. But unlike Section 3.3.1, forcing developers to adopt current APIs instead of deprecated ones would actually have an arguable benefit, yet Apple isn&#8217;t draconian in this area. Why not?</p>
<p>There are problems that Objective-C is not the best designed to deal with, and people already know this. Games often use shaders, written in their own language. Parsing standardized input can often make use of a grammar, in which case tools like Bison/Antlr/Yacc/etc are helpful. Interfacing with objects stored in a dictionary can be made easier through tools that use a definition file to auto-generate wrapper classes. Snippets of code may be optimized by hand using assembler. All of these things make developer&#8217;s life better, yet they all share something in common: they&#8217;re prohibited by 3.3.1.</p>
<p>Because the developer originally wrote their grammar in the format that Bison uses, it was not originally written in C. Bison generates C files from its grammar. Anyone who is using Bison to help parse something on the phone is in violation of the letter of this agreement. The word &#8220;originally&#8221; is the problem here.</p>
<p>Likewise, anyone who rolled their own <a href="http://en.wikipedia.org/wiki/Object-relational_mapping">ORM</a> that generates wrapper classes automatically is also in violation. Again, the word &#8220;originally&#8221; makes this an issue.</p>
<p>Of course Apple can&#8217;t really distinguish what was originally written in C/Objective-C and what was generated automatically, unless they start inspecting symbol tables for offending tools they don&#8217;t like. For example, if they wanted to prohibit Bison, they could look for some of the common symbols the generated parsers export.</p>
<p>But here we get to the crux of the problem. Apple is just playing favorites again. I guarantee you that we won&#8217;t see any games from EA or other big companies be removed from the store or rejected because they are based on a game engine that utilizes a scripting language to define the gameplay. Yet unlike other situations, we know that this is a common practice in the gaming world. We <em>know</em> that many games are structured this way, yet Apple won&#8217;t take action.</p>
<p>Because of Apple turning their back and allowing this blatant violation of the agreement in these cases, I think it shows why Apple is doing this. It&#8217;s not to make the platform better. It&#8217;s to spite flash specifically, and Apple is so hell-bent on keeping flash off the platform that it will go to previously unthinkable lengths.</p>
<h3>Poisoning the Well</h3>
<p>Because when the argument boils down to this final point by Gruber:</p>
<blockquote><p>My opinion is that iPhone users will be well-served by this rule. The App Store is not lacking for quantity of titles.</p>
<p>Consider, for one example, Amazon’s Kindle clients for iPhone OS and Mac OS X. The iPhone OS Kindle app is excellent, a worthy rival in terms of experience to Apple’s own iBooks. The Mac Kindle app is a turd that doesn’t look, feel, or behave like a real Mac app. The iPhone OS Kindle app is a native iPhone app, written in Cocoa Touch. The Mac Kindle app was produced using the cross-platform Qt toolkit.</p></blockquote>
<p>You get down to anecdotal stories, and the logical fallacy known as <a href="http://www.nizkor.org/features/fallacies/poisoning-the-well.html">poisoning the well</a>. Just because current development systems make it hard to create cross-platform applications that look and feel great on all target platforms doesn&#8217;t mean there *couldn&#8217;t* be a future platform that does. I could point out that there are web apps that look and feel great both on Android and the iPhone, showing that it&#8217;s possible. But we all know web apps are lacking in many regards, and so instead of retorting, &#8220;Well, just write web apps then,&#8221; we should push back as developers and get Apple to encourage innovation rather than shut it down.</p>
<p>I really don&#8217;t see a strong argument for Section 3.3.1. Popular apps are already surfacing on both platforms. For example, Dropbox, Facebook, Pandora, Flixter, Facebook, Flickr, OpenTable, etc. all have clients for both Android and iPhone. Section 3.3.1 isn&#8217;t preventing companies from supporting multiple platforms, it&#8217;s just stifling innovation that might some day make it easier to support multiple platforms. As these companies are showing, while it requires extra effort to support more platforms, they feel its worth the effort, and with Android&#8217;s shipping numbers growing, it&#8217;s shaping up to be a viable platform for businesses to support. Don&#8217;t take my word for it, take all of the above companies and more&#8217;s actions as support for the Android platform. Companies and individuals are adopting the Android SDK, regardless of Section 3.3.1.</p>
<p>So what&#8217;s the harm in removing the new clauses in 3.3.1? Honestly, the harm is that Flash will be allowed on the phone. You have to ask yourself, is that really such a horrible prospect that it warrants such a draconian action?</p>
]]></content:encoded>
			<wfw:commentRss>http://nilobject.com/index.php/2010/05/14/my-thoughts-on-section-3-3-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Joys of SEO</title>
		<link>http://nilobject.com/index.php/2009/08/11/the-joys-of-seo-4/</link>
		<comments>http://nilobject.com/index.php/2009/08/11/the-joys-of-seo-4/#comments</comments>
		<pubDate>Tue, 11 Aug 2009 11:40:46 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[seo]]></category>
		<category><![CDATA[websites]]></category>

		<guid isPermaLink="false">http://nilobject.com/index.php/2009/08/11/the-joys-of-seo-4/</guid>
		<description><![CDATA[So I&#8217;ve done two family business websites, and Google was kind to one of them, but not the other. This post, I&#8217;m not going to lie, honestly is to lend a little of my pagerank, but it&#8217;s also to discuss the powerful nature of Google.

My brother back before the summer exchanged some free food in [...]]]></description>
			<content:encoded><![CDATA[<p>So I&#8217;ve done two family business websites, and Google was kind to one of them, but not the other. This post, I&#8217;m not going to lie, honestly is to lend a little of my pagerank, but it&#8217;s also to discuss the powerful nature of Google.
</p>
<p>My brother back before the summer exchanged some free food in exchange for a website for <a href="http://thelimestoneaustin.com/">the restaurant he is a sous chef at</a>. A great deal, in my opinion, and he&#8217;s happy with the site.
</p>
<p>My sister opened her own pediatrics office in Frisco, TX. Originally she used her community&#8217;s name and added &#8220;Pediatrics&#8221; to it. Unfortunately, smoeone had a national trademark on that name, which is why I&#8217;m sidestepping actually calling out the name. Unfortunately that meant that she needed to change domain names, and I think that&#8217;s where our problem surfaced.
</p>
<p><a href="http://bestnestpediatrics.com/">BestNest Pediatrics</a> took <em>forever</em> to get added to the index. I tried everything I could, creating sitemaps, updating meta descriptions, using the webmaster tools to initiate the &#8220;change of name&#8221; from the old name to the new name. Nothing, nada.
</p>
<p>It finally showed up in the index last night, but only partially. I did a few more tweaks, and hopefully my SEO skills have worked. But this process is a bit worrysome to me, partially because I don&#8217;t know why it took so long in the first place.
</p>
<p>This somewhat illustrates to me that without the proper knowledge, you can&#8217;t create a simple website and hope for it to show up without getting tons of incoming links. Pagerank does give nice results, but it can also hide obscure information. Additionally, because the web is so big, Google does have to pick and choose what to keep in its index. Even Google can&#8217;t store the entire internet on its massive infrastructure.
</p>
<p>Perhaps I&#8217;m worrying about nothing, but it seems like the internet has lost its accessibility to a random bloke creating a website. It seems like you must use online communities to gain any amount of notice, and slowly build your community of friends. But I don&#8217;t think this is an option for some people.
</p>
<p>What do you guys think? Has the web lost its ease of entry because of the need of SEO?</p>
]]></content:encoded>
			<wfw:commentRss>http://nilobject.com/index.php/2009/08/11/the-joys-of-seo-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Millimeter Wave Detectors in the Airports</title>
		<link>http://nilobject.com/index.php/2009/07/21/millimeter-wave-detectors-in-the-airports/</link>
		<comments>http://nilobject.com/index.php/2009/07/21/millimeter-wave-detectors-in-the-airports/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 16:01:46 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[airport]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[travel]]></category>

		<guid isPermaLink="false">http://nilobject.com/index.php/2009/07/21/millimeter-wave-detectors-in-the-airports/</guid>
		<description><![CDATA[I just passed through the first Millimeter Wave scan machine. Color me unimpressed. Instead of talking about the potential privacy concern I want to express how it just doesn&#8217;t work very well at all.

Today I was wearing somewhat baggy (aka comfortable) shorts and a white T-Shirt from shirt.woot.com. The lady in front of me was [...]]]></description>
			<content:encoded><![CDATA[<p>I just passed through the first <a href="http://www.boingboing.net/2008/08/31/millimeter-wave-scan.html">Millimeter Wave scan machine</a>. Color me unimpressed. Instead of talking about the <a href="http://www.eastvalleytribune.com/story/99337">potential privacy concern</a> I want to express how it just doesn&#8217;t work very well at all.
</p>
<p>Today I was wearing somewhat baggy (aka comfortable) shorts and a white T-Shirt from <a href="http://shirt.woot.com/">shirt.woot.com</a>. The lady in front of me was wearing a tanktop with a blouse over the top.
</p>
<p>She stepped into the machine and waited for instructions. Basically you stand with your feet apart by about 2 feet and lift your hands above your head. The device scans both the front and back of you. You then step out and wait for clearance.
</p>
<p>The lady in front of me was told, &#8220;Because your blouse has all those frills, we couldn&#8217;t get a good read so I need to pat that area down.&#8221; Yes, because her blouse had frilly outlines, she had to have her breasts patted down. Forget about the idea that her form was displayed very clearly to the operator, she then had the added humiliation of having her breasts felt up by a female TSA agent.
</p>
<p>My turn next. Keep in mind this is a <em>regular white t-shirt</em>. He doesn&#8217;t ask for permission, just reaches in and pats my sleeves down. <em>The sleeves of my plain white t-shirt</em>. If this machine can&#8217;t scan through the sleeves of a plain white t-shirt, what the hell is the use of this machine?
</p>
<p>I had the option to use the regular metal detectors, which I will be opting for from now on. If the technology worked well, I wouldn&#8217;t have as much of a problem with the privacy concerns. But when regular, all-cotton clothing (I can&#8217;t speak for her clothing) interferes with its ability to get a clear reading, something is horribly wrong.</p>
]]></content:encoded>
			<wfw:commentRss>http://nilobject.com/index.php/2009/07/21/millimeter-wave-detectors-in-the-airports/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>App Store Rejections, where&#8217;s the line?</title>
		<link>http://nilobject.com/index.php/2009/06/20/app-store-rejections-wheres-the-line/</link>
		<comments>http://nilobject.com/index.php/2009/06/20/app-store-rejections-wheres-the-line/#comments</comments>
		<pubDate>Sat, 20 Jun 2009 23:15:41 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[alacatia]]></category>
		<category><![CDATA[appstore]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://nilobject.com/index.php/2009/06/20/app-store-rejections-wheres-the-line/</guid>
		<description><![CDATA[Gruber summarized the rejection of the Commodore 64 emulator as:

Looks like an awesome app — a working C64 emulator with a gorgeous UI.

But while I hope this gets worked out and allowed into the store (I’d buy it in a heartbeat), it should not be considered a bogus/outrageous/controversial rejection. The rejection notice cites sections of [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://daringfireball.net">Gruber</a> summarized the <a href="http://toucharcade.com/2009/06/20/full-commodore-64-emulator-rejected-from-app-store/">rejection of the Commodore 64 emulator</a> as:
</p>
<blockquote><p>Looks like an awesome app — a working C64 emulator with a gorgeous UI.
</p>
<p>But while I hope this gets worked out and allowed into the store (I’d buy it in a heartbeat), it should not be considered a bogus/outrageous/controversial rejection. The rejection notice cites sections of the SDK guidelines (forbidding code emulators) which the app clearly violates.
</p>
</blockquote>
<p>While I agree that this app clearly violates that clause, I think we&#8217;re crossing an interesting line with iPhone OS 3.0 with in-app purchases. The most common example is most likely going to prove to be &#8220;levels&#8221; for games &#8212; race tracks, new RPG dungeons, etc.
</p>
<p>I can&#8217;t speak for all game engines, but in a few engines I&#8217;ve used in the past, logic can be built into the levels themselves. For example, an RPG dungeon might require you to push a block onto a switch before a door is unlocked.
</p>
<h2>Code Interpretation</h2>
<p><a href="http://en.wikipedia.org/wiki/Interpreter_(computing)">Interpreting code</a> is often a vague term, so I want to define it as the steps required:
</p>
<ol>
<li>
     <strong>Parse input</strong>: Scan &#8220;<a href="http://en.wikipedia.org/wiki/Code_(computer_programming)">code</a>&#8221; to determine its structure and order
 </li>
<li>
     <strong>Make decisions based on input</strong>: Based on the structure, perform the actions indicated
 </li>
</ol>
<p>Now I posit that there are already clear-cut violations of this agreement (assuming Apple abided by their own agreement) if taken absolutely literally. What are they?
</p>
<ul>
<li>
     Safari: Downloads, parses, and interprets (compiles in 3.0, from my understanding) Javascript code.
 </li>
<li>
     Calendar: Parses CalDAV &#8220;commands&#8221; as to delete, insert, or update your calendar items. Think it&#8217;s a stretch? I almost guarantee you that this code is written using a state machine with the equivalent of a switch statement.
 </li>
<li>
     Calculator: You may think this is a stretch, but think about it: what&#8217;s the first compiler or interpreter anyone ever writes? RPN calculator. In case you aren&#8217;t familiar, a calculator is a classic example of parsing structured input (order of operations) and performing the operations specified by the input.
 </li>
<li>
     MIDI players: These little musical machines are state machines that know several commands, like how to switch between instruments, how loud to play a pitch, and when to stop a pitch.
 </li>
<li>
     Terminal/Shell Applications: Seriously, you&#8217;re bring up a shell prompt which by their definition execute commands that you type in.
 </li>
</ul>
<p>The key here is that with Safari, Apple cannot abide by their own agreement.
</p>
<p>Clearly, all third party browsers <strong>should be banned</strong> if they don&#8217;t disable Javascript. All terminal applications <strong>should be banned</strong>.
</p>
<p>By not having a clear definition of what defines &#8220;code,&#8221; the agreement puts all applications that download or take user input, parse it, and do something special based on it. That&#8217;s all a programming language does &#8212; it takes input, parses it, and does something based on that input. Thus nearly any program that parses a file and does something interesting with it <strong>should be banned</strong>.
</p>
<h2>How can levels be viewed as interpreting code?</h2>
<p>As I mentioned before, logic can be built into the levels themselves that the host application is blissfully unaware of. This actually is another classification I would use to call something an interpreter or compiler: the application loads up unknown input, parses it, and performs actions based on the context of when the input was loaded.
</p>
<p>Now we can get into semantics, but remember that code isn&#8217;t always imperative. There&#8217;s a whole world that can be called <a href="http://en.wikipedia.org/wiki/Declarative_programming">declarative programming</a>. A common example of declarative programming is HTML. The author of HTML declares the content, and the browser must make sense of the content and display it. However, the HTML author is blissfully unaware of <em>how</em> it happens.
</p>
<p>This perfectly describes an add-on level. The level declares what it will contain. The program knows how to parse this declarative model of a level, and thus it interprets it and runs the level.
</p>
<h2>What&#8217;s the point</h2>
<p>Most people would assume that Apple has this clause for security: you don&#8217;t want programs to download code that would break your phone. However, I think this clause is actually more malicious than protective. I&#8217;m going out on a limb to accuse Apple of putting this clause in here to prevent Adobe from creating a stand-alone Flash player.
</p>
<p>With this in mind, it makes perfect sense why this would be disallowed. But think about what we&#8217;re missing out on (naming a couple off the top of my head):
</p>
<ul>
<li>
     LOGO app: The ability to teach kids how to program using a simple language like LOGO.
 </li>
<li>
     Mindstorms app: Think about the possibility of programming LEGO Mindstorms on an iPhone.
 </li>
</ul>
<p>I really feel that the code execution/interpretation clause is hurting the iPhone more than it&#8217;s helping. There is a minimal security risk, but there&#8217;s already the same security risk with <a href="http://blogs.zdnet.com/security/?p=1481">Javascript</a> and <a href="http://securityevaluators.com/content/case-studies/iphone/">media playing</a>. Beyond that, if any bug in a programmers code can exploit the phone, the kernel and sandboxing aren&#8217;t doing their job already.
</p>
<p>This really boils down to the language of the agreement. The agreement is too open to interpretation that it&#8217;s rendered useless. Apple needs to either get very specific in its definitions, or it needs to remove the clauses. There is nothing to be gained from pissing off developers. There is everything to gain from being the company who provides products that <strong>everyone loves developing for.</strong> Be that company, Apple.</p>
]]></content:encoded>
			<wfw:commentRss>http://nilobject.com/index.php/2009/06/20/app-store-rejections-wheres-the-line/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adventures in DSLR</title>
		<link>http://nilobject.com/index.php/2008/08/31/adventures-in-dslr/</link>
		<comments>http://nilobject.com/index.php/2008/08/31/adventures-in-dslr/#comments</comments>
		<pubDate>Sun, 31 Aug 2008 19:44:28 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[photography]]></category>

		<guid isPermaLink="false">http://nilobject.com/index.php/2008/08/31/adventures-in-dslr/</guid>
		<description><![CDATA[I recently decided to go away from the Point and Shoot phase of my life, where I was keen on the Canon Digital Elphs. The smallest with good quality was my desire. I had a vision of constantly taking my camera with me to snap pictures.

The reality, unfortunately, is that with any compact camera, you [...]]]></description>
			<content:encoded><![CDATA[<p>I recently decided to go away from the Point and Shoot phase of my life, where I was keen on the Canon Digital Elphs. The smallest with good quality was my desire. I had a vision of constantly taking my camera with me to snap pictures.
</p>
<p>The reality, unfortunately, is that with any compact camera, you have to sacrifice the ability to take good quality pictures. Don&#8217;t get me wrong, they&#8217;re great for just cataloging memories. However, it&#8217;s extremely rare to be able to shoot the dramatic style pictures that I so craved to take.
</p>
<p>I started researching my purchase a while ago, periodically checking in on things. A month ago, I was torn between a Nikon D60 and a Canon XSi, both at a similar price point. On twitter, I got some good feedback that Nikon was the way to go. I started reading more in-depth about the D60, and stumbled across this statement on <a href="http://www.kenrockwell.com/nikon/d60.htm">Ken Rockwell&#8217;s excellent site</a>:
</p>
<blockquote><p>The Nikon D60 is a &#8220;sucker&#8221; camera sold mostly to people who are not professional photographers, but who are impressed by meaningless megapixels. Megapixels have nothing to do with picture quality. The less expensive D40 is the same thing as the D60, but better. The D40 is the professional&#8217;s vacation camera. It&#8217;s what I take when I&#8217;m on vacation or with family, too.
</p>
</blockquote>
<p>How could I reconcile downgrading from a 12.1 MP point and shoot to a 6.1 MP Nikon D40? Flickr.
</p>
<p>Flickr has an excellent feature: it allows you to search by camera. I searched by D40 and D60, and zoomed in on the pictures that people had posted the originals of. I was stunned. The quality of the D40 is excellent. Considering I rarely print pictures, and when I do I rarely print larger than 4&#215;6, 6.1MP is fine. More impressive, however, is that when I look at the image actual size, it&#8217;s nearly perfect &#8212; very little noise. This is a drastic change from my point and shoot.
</p>
<p>So, I decided to do it. I put a Nikon D40 search into Craigslist and subscribed to the RSS. Last Thursday, a hit came up: a used camera for $350, a full $120 under the retail price. I had to check it out, and I&#8217;m glad I did. It was in perfect condition. Basically, the seller was a college student who took a beginner&#8217;s photography course, and decided he didn&#8217;t use the camera after the class enough to justify holding onto it.
</p>
<p>Within hours of getting home, my wife took Cocoa outside to play frisbee. I decided to put the camera to its first test. The results are spectacular to me. The thing that impressed me most is that with my point and shoot, capturing high motion subjects is very hard. With this, throw it into continuous mode and just snap away. I took about 150 pictures over the course of 10 minutes. Nearly every one turned out good, leaving me with the hard choice of picking out a unique set of &#8220;bests&#8221; to post to Flickr. <a href="http://flickr.com/photos/nilobject/sets/72157607015424885/">Here&#8217;s my results</a>:
</p>
<p><a href="http://www.flickr.com/photos/nilobject/2808759917/" title="Cocoa and Erin playing frisbee in the backyard by jonathanjohnson, on Flickr"><img src="http://farm4.static.flickr.com/3251/2808759917_477601252b.jpg" width="500" height="331" alt="Cocoa and Erin playing frisbee in the backyard" /></a>
</p>
<p><a href="http://www.flickr.com/photos/nilobject/2809609372/" title="Cocoa and Erin playing frisbee in the backyard by jonathanjohnson, on Flickr"><img src="http://farm4.static.flickr.com/3132/2809609372_133d150f8a.jpg" width="500" height="331" alt="Cocoa and Erin playing frisbee in the backyard" /></a>
</p>
<p><a href="http://www.flickr.com/photos/nilobject/2808758903/" title="Cocoa and Erin playing frisbee in the backyard by jonathanjohnson, on Flickr"><img src="http://farm4.static.flickr.com/3003/2808758903_b11ba7934b.jpg" width="500" height="331" alt="Cocoa and Erin playing frisbee in the backyard" /></a>
</p>
<p><a href="http://www.flickr.com/photos/nilobject/2809607678/" title="Cocoa and Erin playing frisbee in the backyard by jonathanjohnson, on Flickr"><img src="http://farm4.static.flickr.com/3260/2809607678_54d3012d35.jpg" width="500" height="331" alt="Cocoa and Erin playing frisbee in the backyard" /></a>
</p>
<p><a href="http://www.flickr.com/photos/nilobject/2809607382/" title="Cocoa and Erin playing frisbee in the backyard by jonathanjohnson, on Flickr"><img src="http://farm4.static.flickr.com/3232/2809607382_a415264695.jpg" width="500" height="331" alt="Cocoa and Erin playing frisbee in the backyard" /></a>
</p>
<p>Later that evening, I took the camera to a local Meetup group for active dogs in Austin, and I got some more great pictures.
</p>
<p>I still have a lot to learn, but I now am no longer being limited by the camera itself, and it&#8217;s a wonderful feeling. If you&#8217;ve been thinking of going DSLR, it&#8217;s totally worth it!</p>
]]></content:encoded>
			<wfw:commentRss>http://nilobject.com/index.php/2008/08/31/adventures-in-dslr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Few Great Political Documentaries</title>
		<link>http://nilobject.com/index.php/2008/08/30/a-few-great-political-documentaries/</link>
		<comments>http://nilobject.com/index.php/2008/08/30/a-few-great-political-documentaries/#comments</comments>
		<pubDate>Sat, 30 Aug 2008 13:08:44 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[politics]]></category>

		<guid isPermaLink="false">http://nilobject.com/index.php/2008/08/30/a-few-great-political-documentaries/</guid>
		<description><![CDATA[My wife and I love good documentaries, and &#8217;tis the election season. We&#8217;ve watched a few great movies that I wanted to pass along just in case you&#8217;re in the mood for a good documentary one of these days.

Free for All
This movie is an independent film that was released this year, I believe. The best [...]]]></description>
			<content:encoded><![CDATA[<p>My wife and I love good documentaries, and &#8217;tis the election season. We&#8217;ve watched a few great movies that I wanted to pass along just in case you&#8217;re in the mood for a good documentary one of these days.
</p>
<h2>Free for All</h2>
<p><a href="http://www.freeforall.tv">This movie</a> is an independent film that was released this year, I believe. The best part is that there&#8217;s a few great options for watching. If you&#8217;re cheap, you can watch the entire thing on the website for free. If you have a way to put an unprotected mp4 onto your TV, you can download it for $4.95. If you want a DVD, you can get one for $19.95.
</p>
<p>This movie is about what happened in 2000 and 2004 with voter suppressions and other election irregularities. I found the tone and narration to be funny and entertaining, while still being very serious about the problem.
</p>
<h2>Hacking Democracy</h2>
<p><a href="http://www.hbo.com/docs/programs/hackingdemocracy/">This movie</a> is an HBO film about the insecurity behind some of the most popular voting machines in America, the dishonesty of that company, and the election officials who struck deals with that company. Of course, you all know them as Diebold, but they have since renamed themselves to Premiere Election Systems. Just recently, <a href="http://www.clevelandleader.com/node/6522">Diebold admitted that there were programming flaws</a> in the machines in Ohio in 2004. Even worse, they claim it can&#8217;t be fixed before the November 4 elections this year.
</p>
<p>Additionally, the <a href="http://www.techdirt.com/articles/20080812/0206421955.shtml">state of Ohio is suing</a> Diebold over the flaws in their systems.
</p>
<p>Even though action is being taken, this movie is a great documentary covering how a group of people worked hard to uncover the truth behind the Florida and Ohio elections.
</p>
<p>If you want to watch it in browser, <a href="http://video.google.com/videoplay?docid=4463776866669054201">Google Video currently has it</a>, although I don&#8217;t know if that will continue to work.
</p>
<h2>Uncounted</h2>
<p><a href="http://www.uncountedthemovie.com/">This movie</a> I haven&#8217;t watched yet, as I just found it while searching for a few links for this post. However, the trailer looks good. If you&#8217;ve seen it, feel free to weigh in on it below in the comments.
</p>
<h2>Video the Vote</h2>
<p>Even if you&#8217;re not interested in watching a documentary, the best thing I learned from Free for All is about the organization <a href="http://www.videothevote.org">Video the Vote</a>. The idea is to organize citizens into one large video camera to monitor nearly every polling place for irregularities &#8212; voters being turned away for &#8220;improper documentation&#8221; or &#8220;not being registered&#8221; despite having a registration card. It&#8217;s definitely a program to check out.</p>
]]></content:encoded>
			<wfw:commentRss>http://nilobject.com/index.php/2008/08/30/a-few-great-political-documentaries/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Biden a good choice?</title>
		<link>http://nilobject.com/index.php/2008/08/23/biden-a-good-choice/</link>
		<comments>http://nilobject.com/index.php/2008/08/23/biden-a-good-choice/#comments</comments>
		<pubDate>Sat, 23 Aug 2008 16:29:57 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[politics]]></category>

		<guid isPermaLink="false">http://nilobject.com/index.php/2008/08/23/biden-a-good-choice/</guid>
		<description><![CDATA[So as everyone knows by now, Joe Biden was chosen as Barack Obama&#8217;s running mate. I did a little hunting through YouTube, and picked a few clips out:

Joe Biden on Iraq


Joe Biden on Berevity


Joe Biden on Guiliani


Joe is Right


My Take
I believe that the above videos show that Joe is a great speaker, knows his stuff, [...]]]></description>
			<content:encoded><![CDATA[<p>So as everyone knows by now, Joe Biden was chosen as Barack Obama&#8217;s running mate. I did a little hunting through YouTube, and picked a few clips out:
</p>
<h2>Joe Biden on Iraq</h2>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/v1op8vwF5UA&#038;hl=en&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/v1op8vwF5UA&#038;hl=en&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object>
</p>
<h2>Joe Biden on Berevity</h2>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/XberX_t-WvI&#038;hl=en&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/XberX_t-WvI&#038;hl=en&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object>
</p>
<h2>Joe Biden on Guiliani</h2>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/mPOAKXBi9Pw&#038;hl=en&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/mPOAKXBi9Pw&#038;hl=en&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object>
</p>
<h2>Joe is Right</h2>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/wbOa989IRYw&#038;hl=en&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/wbOa989IRYw&#038;hl=en&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object>
</p>
<h2>My Take</h2>
<p>I believe that the above videos show that Joe is a great speaker, knows his stuff, and will be a good asset to Obama for this election. It&#8217;s nice to have Obama paired up with someone who you has a lot of experience.
</p>
<p>Compared to McCain, Obama is a clear pick to me. To me the most important issues for us today are the economy and the war. The war directly influences the economy, in that it&#8217;s one of our greatest expenses.
</p>
<p>McCain would have you believe that the only course of action for the US to take is to stay the course, <a href="http://www.youtube.com/watch?v=VFknKVjuyNk">for up to 100 years</a>. We might even want to <a href="http://www.youtube.com/watch?v=o-zoPgv_nYg">bomb, bomb, bomb Iran</a>. He blasts Obama for not having foreign policy experience.
</p>
<p>Yet, what has happened? Obama has pushed for timetables for a long time. All the republicans kept disagreeing, including McCain. Yet, a few days ago <a href="http://www.chron.com/disp/story.mpl/headline/world/5957162.html">Secretary Rice agreed upon timetables for withdrawal</a>. Obama has been stressing how we must get back into Afghanistan before it&#8217;s just as bad as Iraq, and has been suggesting 12,000 troops. A little over a week ago, <a href="http://www.usnews.com/articles/news/iraq/2008/08/19/pentagon-plans-to-send-more-than-12000-additional-troops-to-afghanistan.html">the Pentagon decided to send 12,000 additional troops</a>.
</p>
<p>On the economy, McCain <a href="http://www.youtube.com/watch?v=kqGWTh_NZ-0">admits the economy isn&#8217;t his strong spot</a>. His own top economic advisor called us a <a href="http://www.youtube.com/watch?v=z_cTJhJZ5t8">&#8220;nation of whiners&#8221;</a>. McCain doesn&#8217;t even <a href="http://www.youtube.com/watch?v=vpmFd25tRqo">know how many houses he owns</a>. He critized Obama&#8217;s suggestion that properly inflating tires and maintaining your vehicle would save the US nearly as much oil in the short term that offshore drilling would deliver in 12 years. He even started selling $25 tire guages labelled, &#8220;Obama&#8217;s Energy Plan.&#8221; However, Obama&#8217;s statement is backed up by the Bush administration&#8217;s highway department, as well as many other independent groups. The next day, McCain went back on the record saying he didn&#8217;t disagree with Obama&#8217;s statement.
</p>
<p>Clearly, McCain is disconnected from reality when it comes to foreign policy and the economy.
</p>
<p>Living in the heart of Texas and attending an &#8220;evangelical&#8221; small-town church, I shudder at the logic of politics. Of course, one must always tread lightly, but I had an opportunity to discuss politics with someone who shared interest in a common candidate: Ron Paul. However, what shocked me was that now that Ron Paul is out, he was &#8220;most likely&#8221; going to vote for McCain. We discussed it a bit, and the true concern came out: he was worried about Obama secretly being a muslim. I did my best to dispel that rumor.
</p>
<p>I&#8217;m hopeful that Obama will be elected. Do I think he&#8217;s the epitome of my beliefs in government? No, far from it, I&#8217;m much closer to Ron Paul. Given that Texas is not a close state at all (currently 96% McCain), I have the joy of being able to vote for my heart, and not the lesser of two &#8220;evils.&#8221; On the other hand, I wish I was in a swing state in which I could attempt to make a difference.
</p>
<p>Sorry for the rant, had to get this out and in writing. Now, back to our normally scheduled geek stuff.</p>
]]></content:encoded>
			<wfw:commentRss>http://nilobject.com/index.php/2008/08/23/biden-a-good-choice/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Trip Cubby for iPhone Released</title>
		<link>http://nilobject.com/index.php/2008/08/15/trip-cubby-for-iphone-released/</link>
		<comments>http://nilobject.com/index.php/2008/08/15/trip-cubby-for-iphone-released/#comments</comments>
		<pubDate>Fri, 15 Aug 2008 19:51:13 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[appcubby]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://nilobject.com/index.php/2008/08/15/trip-cubby-for-iphone-released/</guid>
		<description><![CDATA[Yesterday afternoon, App Cubby had its first product finally launch in the iTunes store: Trip Cubby. Trip Cubby is a mileage log for tracking trips that you expect to receive tax deductions or reimbursements for. We&#8217;ve received some great feedback already. Let me quote one review:

The website offers a TRULY informative movie, presenting delightful surprises [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday afternoon, <a href="http://www.appcubby.com">App Cubby</a> had its first product finally launch in the iTunes store: <a href="http://www.appcubby.com/trip/">Trip Cubby</a>. Trip Cubby is a mileage log for tracking trips that you expect to receive tax deductions or reimbursements for. We&#8217;ve received some great feedback already. Let me quote one review:
</p>
<blockquote><p>The website offers a TRULY informative movie, presenting delightful surprises at virtually every turn as various aspects of the program are demonstrated. Dang near every feature an IRS-conscious user wants is present. And, the intelligent implementation, in both input and execution, is absolutely wondrous[...] THIS is the sort of quality business app I anticipated when news of the SDK dawned.
</p>
</blockquote>
<p>I&#8217;m really excited by this line of products we&#8217;re starting. It&#8217;s been great fun to develop, and I look forward to showing what else we have up our sleeves.
</p>
<p>If you&#8217;re interested in Trip Cubby, <a href="http://www.appcubby.com/trip/">check out the website</a> where there&#8217;s screenshots and an excellent screencast.</p>
]]></content:encoded>
			<wfw:commentRss>http://nilobject.com/index.php/2008/08/15/trip-cubby-for-iphone-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
