<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>I create iPhone apps, make music, and take photographs. I also make words and put them on here. You can follow me on Twitter if you like.</description><title>Collin Donnell</title><generator>Tumblr (3.0; @collindonnell)</generator><link>http://collindonnell.com/</link><item><title>Who would buy these?</title><description>&lt;img src="http://27.media.tumblr.com/tumblr_kyzttbjhZY1qzbucro1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Who would buy these?&lt;/p&gt;</description><link>http://collindonnell.com/post/435877856</link><guid>http://collindonnell.com/post/435877856</guid><pubDate>Mon, 08 Mar 2010 18:33:55 -0800</pubDate></item><item><title>Microsoft set to destroy Apple in every games market</title><description>&lt;p&gt;Yes. The answer is yes.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;a href="http://www.downloadsquad.com/2010/03/07/microsoft-set-to-destroy-apple-every-games-market/"&gt;Microsoft set to destroy Apple in every games market&lt;/a&gt;: “Steve Jobs has announced Apple’s intent to move into mobile gaming, but can you really see developers siding with the iPhone when Windows Phone 7 is just around the corner?”&lt;/p&gt;
  
  &lt;p&gt;(Via &lt;a href="http://www.downloadsquad.com"&gt;Download Squad&lt;/a&gt;)&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://collindonnell.com/post/435724829</link><guid>http://collindonnell.com/post/435724829</guid><pubDate>Mon, 08 Mar 2010 17:22:00 -0800</pubDate></item><item><title>Getting excited about 360iDev</title><description>&lt;p&gt;Was thinking yesterday that &lt;a href="http://360idev.com"&gt;360iDev&lt;/a&gt; is probably the most fun you can have with your clothes on… around iPhone programmers… in San Jose on April 11th through the 14th. Which is still saying something, so if you haven’t yet you should go &lt;a href="http://360idev-CollinD.eventbrite.com/"&gt;buy your ticket right now&lt;/a&gt;. You’ll learn something and probably meet some cool people too.&lt;/p&gt;</description><link>http://collindonnell.com/post/435711662</link><guid>http://collindonnell.com/post/435711662</guid><pubDate>Mon, 08 Mar 2010 17:16:34 -0800</pubDate></item><item><title>Really should have said command + z.

curvedwhite:

“Ctrl+Z, I’m...</title><description>&lt;img src="http://27.media.tumblr.com/tumblr_kymcxcstcf1qatctmo1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Really should have said command + z.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://curvedwhite.com/post/433237322/ctrl-z-im-sorry-letterpress-card-by-elizabeth" class="tumblr_blog"&gt;curvedwhite&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;“&lt;a href="http://www.etsy.com/view_listing.php?listing_id=39939145"&gt;Ctrl+Z, I’m Sorry&lt;/a&gt;” letterpress card by &lt;a href="http://www.etsy.com/shop/PaperWheel"&gt;Elizabeth Weil&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;</description><link>http://collindonnell.com/post/433526953</link><guid>http://collindonnell.com/post/433526953</guid><pubDate>Sun, 07 Mar 2010 17:13:51 -0800</pubDate></item><item><title>Was watching Soul Train clips the other day and thought to...</title><description>&lt;img src="http://27.media.tumblr.com/tumblr_kyxu63HFeb1qzbucro1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Was watching Soul Train clips the other day and thought to myself how most of the people on this show probably went on to later become somebodies mom or dad and that made me smile. There’s beauty in the strangest places if you’re open to seeing it.&lt;/p&gt;</description><link>http://collindonnell.com/post/433472760</link><guid>http://collindonnell.com/post/433472760</guid><pubDate>Sun, 07 Mar 2010 16:46:53 -0800</pubDate></item><item><title>Made, Is Making, or Will Make? - @drbarnard</title><description>&lt;p&gt;Really enjoyed this post by Dan Bernard on estimating App Store sales.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://davidbarnard.com/post/425488663/made"&gt;Made, Is Making, or Will Make? - @drbarnard&lt;/a&gt;: “Properly conjugating a verb helps distinguish among past, present, and future events.  Mobile developers and the tech press seem to have an awful time with conjugation, often making bad decisions or writing misleading headlines on account of that apparent confusion.”&lt;/p&gt;</description><link>http://collindonnell.com/post/427699163</link><guid>http://collindonnell.com/post/427699163</guid><pubDate>Thu, 04 Mar 2010 21:12:39 -0800</pubDate></item><item><title>jessieshmessie:


everythinginthesky:

Vers Audio iPad cover -...</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_kyq9octiGH1qz4vmto1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;a href="http://jessieshmessie.tumblr.com/post/424888366/everythinginthesky-vers-audio-ipad-cover" class="tumblr_blog"&gt;jessieshmessie&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://everythinginthesky.com/post/424884026/vers-audio-ipad-cover-80"&gt;everythinginthesky&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://versaudio.com/"&gt;Vers Audio&lt;/a&gt; iPad cover - $80&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;WANT.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I wonder what sensors are being obstructed here. The ambient light one for sure. Great design guys.&lt;/p&gt;</description><link>http://collindonnell.com/post/425427474</link><guid>http://collindonnell.com/post/425427474</guid><pubDate>Wed, 03 Mar 2010 19:21:44 -0800</pubDate><category>Usability</category></item><item><title>Vintage Pants</title><description>&lt;p&gt;One thing I’ve learned from buying vintage: men wore their pants a &lt;em&gt;a lot&lt;/em&gt; higher in the 60’s.&lt;/p&gt;</description><link>http://collindonnell.com/post/424957814</link><guid>http://collindonnell.com/post/424957814</guid><pubDate>Wed, 03 Mar 2010 15:23:50 -0800</pubDate></item><item><title>Cover of “Take It Easy” by Bright Eyes. Recorded...</title><description>&lt;embed type="application/x-shockwave-flash" src="http://collindonnell.com/swf/audio_player.swf?audio_file=http://www.tumblr.com/audio_file/423424588/tumblr_kyotwtG4vt1qzbucr&amp;color=FFFFFF" height="27" width="207" quality="best"&gt;&lt;/embed&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Cover of “Take It Easy” by Bright Eyes. Recorded directly into the microphone on my Macbook Pro.&lt;/p&gt;</description><link>http://collindonnell.com/post/423424588</link><guid>http://collindonnell.com/post/423424588</guid><pubDate>Tue, 02 Mar 2010 20:02:00 -0800</pubDate></item><item><title>"The older I get the more I realize; cool is not giving a fuck."</title><description>“The older I get the more I realize; cool is not giving a fuck.”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;Collin Donnell&lt;/em&gt;</description><link>http://collindonnell.com/post/423247791</link><guid>http://collindonnell.com/post/423247791</guid><pubDate>Tue, 02 Mar 2010 18:38:00 -0800</pubDate></item><item><title>40 Seconds</title><description>&lt;p&gt;“Oh wow, you actually live on the 6th floor?” I began speaking to the cute girl in the red coat playing with her phone as I simultaneously pulled out my earbuds with a somewhat vigorous tug on the cord and stuck the earphone ends into my pocket leaving a loop hanging. “Yeah,” she smiled at me, “I’ve only seen like one other person on my floor… down the hall.” I smirked slightly, probably imagining myself to be much cooler than anyone ever really sees me. “The fifth floor is where its at. All the cool people live on the fifth floor.”&lt;/p&gt;

&lt;p&gt;“Which one are you?”&lt;/p&gt;

&lt;p&gt;“Five.”&lt;/p&gt;

&lt;p&gt;“Just five? I’m in 601.”&lt;/p&gt;

&lt;p&gt;“Oh, I’m in 512.”&lt;/p&gt;

&lt;p&gt;“So… close then!”, she was smiling now too. We were at my floor. “It was nice meeting you,” I didn’t ask her name. “Nice meeting you too!” I was off the elevator headed towards my apartment. As I walked I pulled a small notebook out of my left pants pocket and jotted down: &lt;em&gt;cute girl red coat 601&lt;/em&gt;. For a second after that I wondered if she had written down &lt;em&gt;cute boy blue eyes 512&lt;/em&gt; in her small brown notebook, but realized probably not because that’s something a crazy person would do.&lt;/p&gt;</description><link>http://collindonnell.com/post/421663706</link><guid>http://collindonnell.com/post/421663706</guid><pubDate>Mon, 01 Mar 2010 23:56:29 -0800</pubDate></item><item><title>cocoageek:

This is exactly how I feel about McDonald being the...</title><description>&lt;img src="http://29.media.tumblr.com/tumblr_kymdulHjjb1qachx4o1_400.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;a href="http://cocoageek.tumblr.com/post/420377090/this-is-exactly-how-i-feel-about-mcdonald-being" class="tumblr_blog"&gt;cocoageek&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;This is exactly how I feel about McDonald being the &lt;i&gt;official restaurant&lt;/i&gt; of the Olympic games. Totally ludicrous! /by &lt;a href="http://www.flickr.com/photos/lunchbreath/"&gt;lunchbreath&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;</description><link>http://collindonnell.com/post/420463720</link><guid>http://collindonnell.com/post/420463720</guid><pubDate>Mon, 01 Mar 2010 13:15:23 -0800</pubDate></item><item><title>sahil:

 Truth </title><description>&lt;img src="http://26.media.tumblr.com/tumblr_kyklg9wFv81qz5y94o1_500.gif"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;a href="http://tumblelog.motivism.com/post/418271050/truth" class="tumblr_blog"&gt;sahil&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;&lt;a href="http://www.smbc-comics.com/index.php?db=comics&amp;id=1806"&gt; Truth &lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;</description><link>http://collindonnell.com/post/418922349</link><guid>http://collindonnell.com/post/418922349</guid><pubDate>Sun, 28 Feb 2010 18:40:46 -0800</pubDate></item><item><title>"Because I always say I love you when I mean turn out the light. And I say “lets run..."</title><description>“Because I always say I love you when I mean turn out the light. And I say “lets run away,” when I just mean stay the night. But the words you want to hear, you will never hear from me. I’ll never say “happy anniversary.””&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;Stephen Merritt, “I Think I Need A New Heart”&lt;/em&gt;</description><link>http://collindonnell.com/post/418916500</link><guid>http://collindonnell.com/post/418916500</guid><pubDate>Sun, 28 Feb 2010 18:37:32 -0800</pubDate></item><item><title>"Keep away from people who try to belittle your ambitions. Small people always do that, but the..."</title><description>“Keep away from people who try to belittle your ambitions. Small people always do that, but the really great make you feel that you, too, can become great.”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;Mark Twain&lt;/em&gt;</description><link>http://collindonnell.com/post/418655465</link><guid>http://collindonnell.com/post/418655465</guid><pubDate>Sun, 28 Feb 2010 16:26:39 -0800</pubDate></item><item><title>Witnessed last night. I’m not sure I’ve ever...</title><description>&lt;img src="http://26.media.tumblr.com/tumblr_kykrmmw3Xb1qzbucro1_r1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Witnessed last night. I’m not sure I’ve ever actually seen someone pop their collar like this in real life.&lt;/p&gt;</description><link>http://collindonnell.com/post/418529057</link><guid>http://collindonnell.com/post/418529057</guid><pubDate>Sun, 28 Feb 2010 15:23:14 -0800</pubDate></item><item><title>A Different Look at Core Data</title><description>&lt;p&gt;A few blog entries that have been getting some attention were posted this week by &lt;a href="http://inessential.com/2010/02/26/on_switching_away_from_core_data"&gt;Brent Simmons&lt;/a&gt;, &lt;a href="http://www.manton.org/2010/02/i_dont_use.html"&gt;Manton Reece&lt;/a&gt;, and &lt;a href="http://blog.clickablebliss.com/2010/02/27/its-beat-up-on-core-data-week/"&gt;Mike Zornek&lt;/a&gt; about why they are switching away from Core Data in favor of using SQLite directly. It also turns out that Aperture 3 away from Core Data, which I’m pretty sure means that are currently no major Apple products which use the framework. I wouldn’t claim to be in the same league as those other developers, but I still think a good case can be made for the positive aspects of Core Data and I’m going to try to do that now.&lt;/p&gt;

&lt;p&gt;A little background: I’ve been developing Cocoa apps full time for two years and a year before that non-professionally. So that means 10.4 era on the Mac and since the iPhone SDK first became available. Every project I did for the iPhone previous to 3.0 used straight SQLite, either through the C API or FMDB. Since 3.0 every new project that I’ve started has used Core Data with great success and very few gotchas. I’m definitely a big believer in using the right tool for the job, and would also would agree with Brent that 95% of the time Core Data is the right choice. I think he made a pretty excellent case for when direct SQLite is going to make more sense (the example of needing to update lots of rows at once is pretty hard to argue with). So with that being said, I’d like to look at what makes it the right choice for that other 95%.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclaimer: This is going to be slanted towards iPhone.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;Displaying Lists of Data and Fetch Requests&lt;/h3&gt;

&lt;p&gt;If large parts of your app essentially consist of displaying lists of data in table views and you &lt;em&gt;don’t&lt;/em&gt; need to update lots of objects all at once (1000+) in the database (note: this is &lt;em&gt;a lot&lt;/em&gt; of apps) using the &lt;strong&gt;NSFetchedResultsController&lt;/strong&gt; has made it pretty much brainless with Core Data. Set up an &lt;strong&gt;NSFetchRequest&lt;/strong&gt; with the type of entity you want to fetch, optionally define a predicate (‘parent = %@’, for example), fill in a couple of table view delegate/datasource methods and you have a way to display a list that can be added and removed from, complete with animations and automatic UI updating if you implement a few delegate methods. This is completely analogous to doing a query against your SQLite database, except that everything comes out as an object that be used immediately. This saves a ton of code that is essentially total busy work converting back and forth between C types and objects and less code equals less bugs.&lt;/p&gt;

&lt;p&gt;Of course that’s a bit mitigated when using something like FMDB, because a string will come back as a string, but you still have to then take each thing allocate the model object you need and set each property. This hits on one of the greatest parts about something like Core Data in that you never have to stop thinking of your objects as objects. They’re objects in the database, they’re objects in memory. It’s all basically made irrelevant to you. You ask for them when you need them and thats it. I don’t completely buy the argument of wanting to feel more in control, because I’ve always been told part of being a Cocoa developer is learning to lean on and trust the frameworks. And I don’t really feel as though Core Data is “black magic” because I can think about it and feel as though I understand what’s probably going on behind the scenes (which admittedly I’m sure is a lot).&lt;/p&gt;

&lt;h3&gt;Multiple Managed Object Contexts&lt;/h3&gt;

&lt;p&gt;In apps that I’ve written, I tend to follow a pattern that Apple showed in one of their examples where when you are displaying a view which is essentially a “new object screen,” you can create a separate managed object context for this task and create any new entities that you need within that context. When the user hits &lt;em&gt;cancel&lt;/em&gt;, throw the whole context away and it’s gone forever. Otherwise when they hit &lt;em&gt;save&lt;/em&gt; you can merge the two MOC’s together which will force an update of your UI when using an &lt;strong&gt;NSFetchedResultsController&lt;/strong&gt;. Easy, customizable, and does exactly what you want. You can do the same thing pretty easily for an edit screen as well.&lt;/p&gt;

&lt;h3&gt;Multiple Persistent Stores&lt;/h3&gt;

&lt;p&gt;This maybe doesn’t come up in a lot of apps, but I’ve written at least one where being able to manage an in memory and a SQLite store concurrently and make fetch requests against both was a huge benefit.&lt;/p&gt;

&lt;h3&gt;Performance and Memory Usage&lt;/h3&gt;

&lt;p&gt;This is one of the places where for specific use cases using direct SQLite might make a lot of sense. Like Brent said, if you need to update &lt;em&gt;a lot&lt;/em&gt; of rows all at once Core Data is going to be slower for that. I also agree that on a Mac this probably wouldn’t have caused unacceptable performance due to having more horsepower. I think that the example of an RSS reader is one where this really stands out as making sense. Its sort of hard to think of to many other places where you might end up in the situation of needing to update thousands of rows in the database all at once and if you do then more power to you.&lt;/p&gt;

&lt;p&gt;The fact is that in most cases for the kinds of things most developers are needing to do I think they’re going to see the same or better performance out of Core Data with a lot less work. Core Data’s batching mechanism for example allows you to keep from fully loading objects into memory for as long as possible. In one app I worked on where we needed to make thousands of records available at launch, we were able to lower the load time before the UI came up from several seconds to under a second just by implementing batching and a fetch limit. While the case of changing a large number of objects can be slow, reading can be very fast without very much work. I think more often than not you’re reading large amounts of data than writing it.&lt;/p&gt;

&lt;h3&gt;Conclusion&lt;/h3&gt;

&lt;p&gt;I could go on about Core Data for a while. The point of this post isn’t to point out where I think anyone else is wrong or why you shouldn’t use SQLite directly, but more to shed some light on what some of the reasons Core Data could be so good for that other 95%. I’m going to stick with saying that you should always use the right tool for the right job (that seems obvious), but in my experience Core Data is the right tool an awful lot of the time.&lt;/p&gt;</description><link>http://collindonnell.com/post/416877817</link><guid>http://collindonnell.com/post/416877817</guid><pubDate>Sat, 27 Feb 2010 21:06:12 -0800</pubDate></item><item><title>Good design is...</title><description>&lt;p&gt;&lt;a href="http://52weeksofux.com/post/415490651/good-design-is" class="tumblr_blog"&gt;52weeksofux&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p class="sketch"&gt;&lt;img src="http://media.tumblr.com/tumblr_kyh069OKe51qz7ace.jpg"/&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Good design is innovative.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Good design makes a product useful.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Good design is aesthetic.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Good design makes a product understandable.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Good design is unobtrusive.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Good design is honest.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Good design is long-lasting.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Good design is thorough down to the last detail.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Good design is environmentally friendly.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Good design is as little design as possible.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;—Dieter Rams&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://collindonnell.com/post/416027175</link><guid>http://collindonnell.com/post/416027175</guid><pubDate>Sat, 27 Feb 2010 13:03:42 -0800</pubDate></item><item><title>merlin:



  Used to be “Merkwürdigeliebe.”


Seven-twenty...</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_kyhj89xGAP1qz4rlzo1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;a href="http://www.kungfugrippe.com/post/414771697/used-to-be-merkwurdigeliebe-seven-twenty" class="tumblr_blog"&gt;merlin&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;blockquote&gt;
  &lt;p&gt;Used to be “Merkwürdigeliebe.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="http://www.kungfugrippe.com/photo/1280/414771697/1/tumblr_kyhj89xGAP1qz4rlz"&gt;Seven-twenty glorious p&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://collindonnell.com/post/414795849</link><guid>http://collindonnell.com/post/414795849</guid><pubDate>Fri, 26 Feb 2010 21:42:13 -0800</pubDate></item><item><title>Sally: Women don't just assume you're dumping them when you promise you'll call.&#13;</title><description>Sally: Women don't just assume you're dumping them when you promise you'll call.&lt;br /&gt;&#13;
Patrick: I know, that's the beauty of it ;-)</description><link>http://collindonnell.com/post/414558058</link><guid>http://collindonnell.com/post/414558058</guid><pubDate>Fri, 26 Feb 2010 19:36:00 -0800</pubDate></item></channel></rss>
