<?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:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/" version="2.0">
    <channel>
        <title>wayne hartman</title>
        <link>http://blog.waynehartman.com/Default.aspx</link>
        <description>Tech, News, Life, Etc.</description>
        <language>en-US</language>
        <copyright>Wayne Hartman</copyright>
        <generator>Subtext Version 2.5.1.20</generator>
        <image>
            <title>wayne hartman</title>
            <url>http://blog.waynehartman.com/images/RSS2Image.gif</url>
            <link>http://blog.waynehartman.com/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/WayneHartman" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="waynehartman" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
            <title>Is blogging dead?</title>
            <category>Laugh, It's Funny</category>
            <link>http://blog.waynehartman.com/archive/2013/04/30/is-blogging-dead.aspx</link>
            <description>Tweets are so much satisfying and without the guilt of trying to fill a page worth of content. &lt;img src="http://blog.waynehartman.com/aggbug/265.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Wayne Hartman</dc:creator>
            <guid>http://blog.waynehartman.com/archive/2013/04/30/is-blogging-dead.aspx</guid>
            <pubDate>Wed, 01 May 2013 00:41:44 GMT</pubDate>
            <comments>http://blog.waynehartman.com/archive/2013/04/30/is-blogging-dead.aspx#feedback</comments>
            <wfw:commentRss>http://blog.waynehartman.com/comments/commentRss/265.aspx</wfw:commentRss>
        </item>
        <item>
            <title>TODOn't: Productivity needs a bit of honesty.</title>
            <category>Laugh, It's Funny</category>
            <category>iLike</category>
            <category>Apple</category>
            <category>iPhone/iPad</category>
            <link>http://blog.waynehartman.com/archive/2012/10/26/todont-productivity-needs-a-bit-of-honesty.aspx</link>
            <description>&lt;p&gt;In a world so pent-up with task lists, To Do's, and an over-dependence on this concept of being productive, it's ironic that it's easy to forget that life isn't about lists, To Do's, and fitting into a world view of 'productivity'. What's important to you, the individual, will naturally get done.  Everything else, if it doesn't get done, wasn't that important. You don't need apps, you don't need checklists, just a determination to put things into their proper order: what's *really* important to you and letting everything else drop off.  It's really hard to let go, but all it really gets down to is self-discipline.  Am I, or am I not, going to get this thing done?&lt;/p&gt;

&lt;p&gt;One of my favorite games from way-back-when was Magic: The Gathering, a deck building card game.  Gameplay was fun, artwork was superb.  After a while, though, it seemed like the series was kind of full of itself, and well, perhaps a little too serious.    Wizard's of the Coast released &lt;a href="http://en.wikipedia.org/wiki/Unglued"&gt;Unglued&lt;/a&gt;, a card set designed for a bit of comic relief.&lt;/p&gt;

&lt;p&gt;And that's where we're at today with To Do lists: a need for some comic relief and a bit of catharsis:&lt;/p&gt;

&lt;p&gt;I present to you &lt;a href="https://itunes.apple.com/us/app/todont/id568201673?ls=1&amp;amp;mt=8"&gt;TODOn't&lt;/a&gt;: an app that really gets you to let go.  Put those 'tasks' in list, feel good about putting them somewhere.  And then nuke 'em.  Come clean and be honest about what you plan on doing with your day-to-day life and live it.&lt;/p&gt;&lt;img src="http://blog.waynehartman.com/aggbug/264.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Wayne Hartman</dc:creator>
            <guid>http://blog.waynehartman.com/archive/2012/10/26/todont-productivity-needs-a-bit-of-honesty.aspx</guid>
            <pubDate>Fri, 26 Oct 2012 23:39:08 GMT</pubDate>
            <comments>http://blog.waynehartman.com/archive/2012/10/26/todont-productivity-needs-a-bit-of-honesty.aspx#feedback</comments>
            <wfw:commentRss>http://blog.waynehartman.com/comments/commentRss/264.aspx</wfw:commentRss>
        </item>
        <item>
            <title>iOS 6 and viewDidUnload</title>
            <category>Rant</category>
            <category>Apple</category>
            <category>iPhone/iPad</category>
            <link>http://blog.waynehartman.com/archive/2012/09/19/ios-6-and-viewdidunload.aspx</link>
            <description>Now that the NDA is no longer in effect, let's talk iOS 6!  IMO, one of the more controversial changes in the new iOS release is the deprecation of the &lt;span style="font-family: Courier New;"&gt;viewDidUnload&lt;/span&gt; API in &lt;span style="font-family: Courier New;"&gt;UIViewController&lt;/span&gt;.  The main reasoning behind this removal is that, according to Apple, their tests showed that tearing down the UI in low memory situations did not actually improve memory pressure in any significant way.  I agree and disagree.  There are many instances where view controllers are not holding onto a lot of memory and so, yes, you wouldn't see much reduction in memory pressure.  I imagine that the heavy hitters will likely be the model data that your controllers are holding onto.  But this isn't always the case.&lt;br /&gt;
&lt;br /&gt;
I work on applications with very deep navigation stacks.  Think about this use case: car finding and purchasing.  There are bound to be many screens in the acquisition process until you reach your goal, any of which may force your app into a low memory situation.  You can't completely jettison the model data you have and there may be some instances where your views are holding onto expensive objects like images and web views.  These objects are not useful to keep around in a low memory situation. &lt;span style="font-family: Courier New;"&gt; viewDidUnload&lt;/span&gt; gave developers an opportunity to purge this memory space at a time where it is safe to do so, but it also provided an easy mechanism to reconstruct the UI when &lt;span style="font-family: Courier New;"&gt;viewDidLoad&lt;/span&gt; gets called.&lt;br /&gt;
&lt;br /&gt;
In our aforementioned example, we wouldn't have those hooks and have to do a bit of code gymnastics to tear down the UI and reconstitute it.  I feel that &lt;span style="font-family: Courier New;"&gt;viewDidUnload&lt;/span&gt; was a simple and straightforward way of managing those situations where maybe you *do* want to really tear down that UI.  I have developed a work around that allows you to keep your &lt;span style="font-family: Courier New;"&gt;viewDidLoad&lt;/span&gt; code in place (especially if you support an app pre-iOS 6) and be able to code defensively against low memory situations.  I am no necromancer, but we're bringing &lt;span style="font-family: Courier New;"&gt;viewDidUnload&lt;/span&gt; back to life:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];

    // only want to do this on iOS 6
    if ([[[UIDevice currentDevice] systemVersion] floatValue] &amp;gt;= 6.0) {
        //  Don't want to rehydrate the view if it's already unloaded
        BOOL isLoaded = [self isViewLoaded];

        //  We check the window property to make sure that the view is not visible
        if (isLoaded &amp;amp;&amp;amp; self.view.window == nil) {

            //  Give a chance to implementors to get model data from their views
            [self performSelectorOnMainThread:@selector(viewWillUnload)
                                   withObject:nil
                                waitUntilDone:YES];

            //  Detach it from its parent (in cases of view controller containment)
            [self.view removeFromSuperview];
            self.view = nil;    //  Clear out the view.  Goodbye!

            //  The view is now unloaded...now call viewDidUnload
            [self performSelectorOnMainThread:@selector(viewDidUnload)
                                   withObject:nil
                                waitUntilDone:YES];
        }
    }
}&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
This would be a pain to have to implement in every view controller you have; my recommendation would be to put this in a base view controller and have everything handled in there for your subclasses.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://blog.waynehartman.com/aggbug/263.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Wayne Hartman</dc:creator>
            <guid>http://blog.waynehartman.com/archive/2012/09/19/ios-6-and-viewdidunload.aspx</guid>
            <pubDate>Wed, 19 Sep 2012 23:34:07 GMT</pubDate>
            <comments>http://blog.waynehartman.com/archive/2012/09/19/ios-6-and-viewdidunload.aspx#feedback</comments>
            <wfw:commentRss>http://blog.waynehartman.com/comments/commentRss/263.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Sometimes A Dash Of Snark Is OK</title>
            <category>Rant</category>
            <category>Tech</category>
            <category>Apple</category>
            <link>http://blog.waynehartman.com/archive/2012/08/22/sometimes-a-dash-of-snark-is-ok.aspx</link>
            <description>Today I stumbled upon a fun error message when doing some iOS development.  I was accidentally calling &lt;span style="font-family: Courier New;"&gt;dateByAddingComponents:toDate:options: &lt;/span&gt;on an &lt;span style="font-family: Courier New;"&gt;NSCalendar&lt;/span&gt; object and this fun message appeared in my console:&lt;br /&gt;
&lt;br /&gt;
&lt;p style="padding: 0 5% 0 5%; font-style:italic;"&gt;-[__NSCFCalendar dateByAddingComponents:toDate:options:]: date cannot be nil&lt;br /&gt;
I mean really, what do you think that operation is supposed to mean with a nil date?&lt;br /&gt;
An exception has been avoided for now.&lt;br /&gt;
A few of these errors are going to be reported with this complaint, then further violations will simply silently do whatever random thing results from the nil.&lt;br /&gt;
Here is the backtrace where this occurred this time (some frames may be missing due to compiler optimizations):&lt;/p&gt;
A bit snarky there, Apple, but that's OK. :)&lt;img src="http://blog.waynehartman.com/aggbug/262.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Wayne Hartman</dc:creator>
            <guid>http://blog.waynehartman.com/archive/2012/08/22/sometimes-a-dash-of-snark-is-ok.aspx</guid>
            <pubDate>Wed, 22 Aug 2012 21:13:55 GMT</pubDate>
            <comments>http://blog.waynehartman.com/archive/2012/08/22/sometimes-a-dash-of-snark-is-ok.aspx#feedback</comments>
            <wfw:commentRss>http://blog.waynehartman.com/comments/commentRss/262.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Quick Review: Google Nexus 7</title>
            <category>Rant</category>
            <category>Tech</category>
            <category>Reviews</category>
            <link>http://blog.waynehartman.com/archive/2012/07/17/quick-review-google-nexus-7.aspx</link>
            <description>&lt;p&gt;After playing with the Nexus 7 this evening, I think there are more questions that I have than answers.  First and foremost, I'm an iOS geek and haven't really spent a ton of time with Android.  There are a number of reasons for this, but at its core I haven't found Android to be as compelling--both from a consumer and development perspective.&lt;/p&gt;
&lt;p&gt;I ordered a Nexus 7 because I have found the 'phablet' form factor to be interesting just because it grants greater real estate than what a phone currently offers, but isn't as bulky as a 10" iPad.  Not that the iPad is a problem carrying around, per se, but the Nexus 7 is something in between.&lt;/p&gt;
&lt;h4&gt;Software&lt;/h4&gt;
&lt;p&gt;I think it's worth repeating, but it's really, really hard to be objective.  There are so many things that I feel iOS does well that are really, truly fundamental to the mobile computing experience that for some reason Android just hasn't mastered.  I think it directly points to the foundational flaws in the Android OS, but why can't we get smooth scrolling?  If Jelly Bean is the pinnacle of Google's operating system and we have some fairly decent hardware, why, oh why can't I scroll down an item list without it being all herky-jerky?  Why can't I double tap on a paragraph on a web page and have it zoom smoothly in?&lt;/p&gt;
&lt;p&gt;Something new to me is this whole concept of widgets: little mini-apps that live on your home screen with limited functionality.  These have been nothing but annoying to me, at least the ones that come preinstalled.  There's a "My Library" widget that stores a number of pre-installed media items, like music, magazines, and movies, but I can't remove it.  I don't want it on my screen, but Google has seen fit to make sure it's there, a reminder that they have gifted me those things.  I can't arbitrarily add things, like apps, to it.  They also show recommended media and apps, which IMO are glorified advertisements on home screen.  Can't remove those, either. (If I could figure out how to take a screenshot, I'd toss one in, but...)&lt;/p&gt;
&lt;p&gt;Coming from an iOS background, I find the OS very confusing and impersonal.&lt;/p&gt;
&lt;h4&gt;Hardware&lt;/h4&gt;
&lt;p&gt;The hardware is pretty slick.  The front face reminds me of...an iPad?, only smaller and sans a home screen button.  There is a front facing camera so that I can unlock it with my face (fun gimmick, BTW), but no rear facing camera.  The headphone jack is on the bottom of the device, which I actually like, as is the micro-USB connector.  There's a speaker grill on the back that is centered on the bottom of the device, but is pretty weak like the iPad.  The backing is made of a textured, non-slip material and is comfortable to hold.  The Kindle Fire can't hold a candle to the Nexus 7 in this regard.&lt;/p&gt;
&lt;p&gt;I have two things that I really, really dislike about the Nexus 7 hardware wise.  First, the power and volume buttons.  I'm glad that there is a hardware volume rocker, but it has the same shape and texture of the power button right next to it.  I accidentally turned my device off several times because I kept hitting the power button.  Bad experience.&lt;/p&gt;
&lt;p&gt;Second, I feel that the display is complete, utter garbage.  Obviously, Google isn't going to pack a Retina-like display in a cheap device like this, but the color seems off and gradients look truly awful.  The first generation iPad did not look this poor.&lt;/p&gt;
&lt;h4&gt;Conclusion&lt;/h4&gt;
&lt;p&gt;I'm still learning the user ins-and-outs of how Android works, but the one thing that kept lingering in my mind was this:  Is this the best Google could do?  This was their first foray into the tablet space and this is how they chose to leave their mark?  I think Samsung has done far better, but even they have fallen short of the gold standard.&lt;/p&gt;
&lt;p&gt;If you're still holding your breath for a good tablet in a small form factor, I don't think this one is it.  Amazon is supposedly going to be releasing a refresh to the Fire within a couple of months, but I wouldn't get my hopes up, either.  The Nexus 7 is a decent product, but falls far, far short of where it needs to be to compete in any fashion with the iPad.  There is no grading on a curve here.&lt;/p&gt;
&lt;h3&gt;&lt;a name="followup"&gt;Follow-up&lt;/a&gt; 31 JUL 8:45:33pm&lt;/h3&gt;
&lt;p&gt;After even more use I find that the Nexus 7 has a nice strong point for reading content (pretty much Instapaper), but it has one flaw that pretty much ruins it for doing something as simple as a typing a blog post.  Consider the keyboard layout and soft-keys below it. Any guess what happens when I do some extensive typing on Android???&lt;/p&gt;
&lt;p style="text-align:center;"&gt;&lt;img alt="" src="http://img600.imageshack.us/img600/243/screenshot2012073120402.png" style="1px solid #000;" /&gt;&lt;/p&gt;
&lt;p&gt;That's right, I frequently find myself being exited out of my apps.  It's an infuriating experience and extremely disruptive to trying to lay down complete thoughts.  This a an absurd usability problem and since this is a system-wide 'feature' there's really not a good way to solve this.  Fail.&lt;/p&gt;&lt;img src="http://blog.waynehartman.com/aggbug/261.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Wayne Hartman</dc:creator>
            <guid>http://blog.waynehartman.com/archive/2012/07/17/quick-review-google-nexus-7.aspx</guid>
            <pubDate>Wed, 18 Jul 2012 01:57:28 GMT</pubDate>
            <comments>http://blog.waynehartman.com/archive/2012/07/17/quick-review-google-nexus-7.aspx#feedback</comments>
            <wfw:commentRss>http://blog.waynehartman.com/comments/commentRss/261.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>
