<?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>Dizzy Technology</title> <atom:link href="http://dizzytechnology.com/feed/" rel="self" type="application/rss+xml" /><link>http://dizzytechnology.com</link> <description>Are you spinning yet?</description> <lastBuildDate>Thu, 06 Oct 2011 00:24:05 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.1</generator> <item><title>★ Here&#8217;s to the Misfits</title><link>http://dizzytechnology.com/2011/10/05/heres-to-the-misfits/</link> <comments>http://dizzytechnology.com/2011/10/05/heres-to-the-misfits/#comments</comments> <pubDate>Thu, 06 Oct 2011 00:17:49 +0000</pubDate> <dc:creator>Zachary Waldowski</dc:creator> <category><![CDATA[Uncategorized]]></category> <guid
isPermaLink="false">http://dizzytechnology.com/?p=146</guid> <description><![CDATA[Here's to the crazy ones.  The misfits.  The rebels.  The troublemakers.  The round pegs in the square holes....]]></description> <content:encoded><![CDATA[<blockquote><p>Here&#8217;s to the crazy ones.  The misfits.  The rebels.  The troublemakers.  The round pegs in the square holes.</p><p>The ones who see things differently.  They&#8217;re not fond of rules.  And they have no respect for the status quo.  You can quote them, disagree with them, glorify or vilify them.</p><p>About the only thing you can&#8217;t do is ignore them.  Because they change things.  They invent.  They imagine.  They heal.  They explore.  They create.  They inspire.  They push the human race forward.</p><p>Maybe they have to be crazy.</p><p>How else can you stare at an empty canvas and see a work of art?  Or sit in silence and hear a song that&#8217;s never been written?  Or gaze at a red planet and see a laboratory on wheels?</p><p>We make tools for these kinds of people.</p><p>While some see them as the crazy ones, we see genius.  Because the people who are crazy enough to think they can change the world, are the ones who do.</p></blockquote><p><a
href="http://www.youtube.com/watch?v=rFD2_U-BV5I"><em>The</em> Definitive Ad Campaign</a></p><p>It&#8217;s a creedo, if nothing else.  It is an idea, a love of the intelligent, of the rational, of the sane.  It is the audacity to keep hoping past hope, when the chips are down and when you&#8217;re out of the game.  It is the drive, the stubbornness, that keeps us pushing ahead, time after time.  As an industry.  As a society.  As a race.  As a planet.</p><p>I&#8217;m a terrible blogger, probably a crappy coder, but hell if I&#8217;m not opinionated.  Steve Jobs was a visionary.  If not for him, the computer industry would be nothing like it is today.  Nothing.  He was an asshole.  A stubborn one.  But a driven, creative, wonderful one.  He will be missed, but not just for that enigmatic paternal influence.  But because there&#8217;s nobody else like him.</p> ]]></content:encoded> <wfw:commentRss>http://dizzytechnology.com/2011/10/05/heres-to-the-misfits/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>★ BlocksKit:  A Rationale</title><link>http://dizzytechnology.com/2011/07/17/blockskit-a-rationale/</link> <comments>http://dizzytechnology.com/2011/07/17/blockskit-a-rationale/#comments</comments> <pubDate>Mon, 18 Jul 2011 04:39:58 +0000</pubDate> <dc:creator>Zachary Waldowski</dc:creator> <category><![CDATA[Projects]]></category> <category><![CDATA[iOS]]></category> <category><![CDATA[iphone]]></category> <category><![CDATA[libraries]]></category> <category><![CDATA[open source]]></category> <guid
isPermaLink="false">http://dizzytechnology.com/?p=137</guid> <description><![CDATA[Nick Paulson and Tristan O'Tierney introduced BlockKit today.  I can't even pretend to be offended by its similarity to BlocksKit:  the things they've come up with are brilliant, and get at UIKit and CoreGraphics quite a bit better than we do.  Since a number of things introduced by them are on my internal roadmap for BlocksKit, I will soldier on.  For driving future development of BlocksKit, I set forth a few guidelines for what BlocksKit entails as a project.]]></description> <content:encoded><![CDATA[<p>Nick Paulson and Tristan O&#8217;Tierney, both by far more skilled than myself, introduced BlockKit today.  I can&#8217;t even pretend to be offended by the similarity to BlocksKit:  the things they&#8217;ve come up with are brilliant, and get at UIKit and CoreGraphics quite a bit better than we do.  (Though, the large-egoed student whines, I would&#8217;ve liked to trend on GitHub, too.)</p><p><span
id="more-137"></span></p><p>A number of things were introduced by them that are on my internal roadmap for BlocksKit.  So, we will soldier on.  BlocksKit is a fundamentally open project, and it will continue to expand.  I&#8217;m going to go ahead, adding and adapting things that are on my list for development, such as the NSURLConnection functionality Igor Evsukov added this morning.</p><p>For driving future development of BlocksKit, I set forth the following guidelines for what BlocksKit entails as a project.</p><h2>Conciseness is key.</h2><p>BlocksKit isn&#8217;t meant to be something that you should <em>need</em> to go through the documentation to figure out (but, unlike many other Foundation extensions, we have documentation!).  While many of its operations are just shorter versions of provided Apple methods, this is intentional.  Objective-C programming is already pretty easy, and I want BlocksKit to make that easier.  No guessing at method names or having to rely on autocompletion to get you there.  This will take some work with the more in-depth functionalities in, for example, NSURLConnection, or bringing in something like the the awesome-but-gruesome UIView swizzling hackery done in BlockKit.</p><p>The idea of BlocksKit isn&#8217;t to move all of your UI interaction code into viewDidLoad.  It might just happen that way, but it&#8217;s not the goal.  There is a balance to be had between making everything a delegate and making everything a block.  A UITableViewDataSource utility will not make its way into BlocksKit for a variety of reasons, most of them involving the sheer number of methods required for a proper table view.  Miss one and you&#8217;re in trouble; protocols make sure you have an implementation that is correct.</p><p>Of course, I&#8217;ll sheepishly point out that <a
href="https://github.com/zwaldowski/ModelTableView">I have a fork of YXModelTableView</a> that does add all the fancy block-based model tables to UITableView.  Working on that made it clear to me that that is not what BlocksKit is for.</p><h2>Delegates aren&#8217;t dead.</h2><p>There is still a good place for delegation in Objective-C.  While they cover a good bit of the same bases as blocks, block handlers are not replacements for delegation.  Blocks are good for shortening up more common uses of delegates.  The logic of dealing with those systems isn&#8217;t very difficult.  That&#8217;s what BlocksKit is for.  Likewise, the collection additions take some of the guesswork out of sorting through arrays and dictionaries.  By and large, BlocksKit delegate replacement is great for classes where the delegates don&#8217;t have too many methods.  Those are what are already implemented with, for example, UIWebView.</p><p>Having block handlers account for large delegates like NSURLConnectionDelegate and UITableViewDataSource/UITableViewDataSource don&#8217;t work for us because they save very little actual code.  In fact, this is where the downside to blocks comes out:  it&#8217;s just a sea of curly braces.</p><p>I&#8217;ll talk more about UITableView below, but there&#8217;s also a reason why I&#8217;m keeping (with some modification) Igor&#8217;s NSURLConnection additions.  His unique implementation allows for simultaneous use of the classic delegation and new delegation &#8211; while fixing the annoying part of NSURLConnection where the delegate has to be set in the init method.  His method is so clever that I might consider using it in the future with other classes.  Though BlocksKit as it is still has block handlers for authentication challenges, I <strong>plan on</strong> removing them for the pure reason that they save no code at all and, in practicality, make these situations more difficult to program for.</p><h2>No new classes.</h2><p>Whether it&#8217;s by swizzling or associated objects, BlocksKit will not create new macros, functions, methods, or classes to use.  We purely extend other classes.  This doesn&#8217;t mean BlocksKit has no classes of it&#8217;s own, but it means that you, our user, doesn&#8217;t have to learn to use any new classes.  We abide by Apple&#8217;s naming conventions in order to be concise and, ultimately, more functional for you.</p><p>If you need to still subclass something (or utilize someone else&#8217;s subclass) to use blocks functionality, something is wrong &#8211; it&#8217;s wasteful and unnecessary when there are almost always better ways to do it.  If your code is all bunched into one method, something is wrong &#8211; that&#8217;s against the design of Objective-C and is, quite frankly, very ugly.  Methods shouldn&#8217;t be very long, and blocks shouldn&#8217;t be more than a few lines.</p><p>There is a fine line between the kind of code that should be within blocks and be within methods.</p><p><strong>If you have a block that is long enough to be its own method, it should be.  If a delegate callback is only a handful of lines or merely daisy-chains to another method -then you should be using a block.  And that&#8217;s what BlocksKit </strong>(with the &#8216;s&#8217;, I suppose I&#8217;ll be saying from now on)<strong> is for.</strong></p> ]]></content:encoded> <wfw:commentRss>http://dizzytechnology.com/2011/07/17/blockskit-a-rationale/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>★ Make Old Apps Roar on Lion with FullSteam</title><link>http://dizzytechnology.com/2011/07/03/make-old-apps-roar-on-lion-with-fullsteam/</link> <comments>http://dizzytechnology.com/2011/07/03/make-old-apps-roar-on-lion-with-fullsteam/#comments</comments> <pubDate>Sun, 03 Jul 2011 21:16:46 +0000</pubDate> <dc:creator>Zachary Waldowski</dc:creator> <category><![CDATA[Uncategorized]]></category> <category><![CDATA[fullsteam]]></category> <category><![CDATA[lion]]></category> <category><![CDATA[mac]]></category> <guid
isPermaLink="false">http://dizzytechnology.com/?p=131</guid> <description><![CDATA[A friend and I were discussing the fullscreen feature in OS X Lion. Despite what many have said, we came to the conclusion that it is, in fact, useful; it&#8217;s just a different take on the Spaces mechanism, that uses less physical desktop space on the whole. Games on OS X have often glitchy handling [...]]]></description> <content:encoded><![CDATA[<p>A friend and I were discussing the fullscreen feature in OS X Lion.  Despite what many have said, we came to the conclusion that it is, in fact, useful; it&#8217;s just a different take on the Spaces mechanism, that uses less physical desktop space on the whole.</p><p>Games on OS X have often glitchy handling of their fullscreen status, usually due to the previously-poor handling the OS did of it.  There&#8217;s pop-in of windows, losing your game, not having the game in Exposé or Mission Control, and so on.  The one true solution to this is in Lion, which handles fullscreen apps handle perfectly.  It&#8217;s great.  But, sadly, most developers (if they&#8217;re even still maintaining the app) won&#8217;t do it for a long time.<a
href="http://content.dizzytechnology.com/uploads/2011/07/mine.jpg"><img
class="alignright size-thumbnail wp-image-134" title="Minecraft in FullScreen!" src="http://content.dizzytechnology.com/uploads/2011/07/mine-150x150.jpg" alt="" width="150" height="150" /></a></p><p>So, I wrote FullSteam.  It&#8217;s a simple hack that kindly tells and app to shut up and go fullscreen, natively, beautifully, and just a little bit sexily (that&#8217;s a joke, for newcomers to my writing style).</p><p><span
id="more-131"></span></p><p>Simply download the DMG and follow the 2-step instructions on it, which involve clicking, dragging, and double-clicking.  Really difficult stuff.</p><h2 style="font-size: 22px;"><strong><a
href="https://github.com/downloads/zwaldowski/FullSteam/FullSteam%201.0.dmg">Download it here.</a></strong></h2><p>Currently, the only apps supported by FullSteam are Source games (Half-Life 2, Portal 2, L4D, etc.) and Minecraft.  No, it currently doesn&#8217;t do Steam, but who can give up such a punny name?</p><p>Adding support for other apps is trivial.  If you know one you&#8217;d like to add, get the bundle identifier (right-click app, Show Package Contents, Info.plist, CFBundleIdentifier) or the executable name (Show Package Contents, MacOS, name of the hacky-looking black boxy thing).  Tweet me <a
href="http://twitter.com/zwaldowski">@zwaldowski</a> or communicate with me in some other fashion.</p><p>For the more technical folk, this code is open source! <a
href="https://github.com/zwaldowski/FullSteam">Find it on GitHub</a>.</p> ]]></content:encoded> <wfw:commentRss>http://dizzytechnology.com/2011/07/03/make-old-apps-roar-on-lion-with-fullsteam/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>★ Funky-Fresh Native Scrolling</title><link>http://dizzytechnology.com/2011/06/26/funky-fresh-native-scrolling/</link> <comments>http://dizzytechnology.com/2011/06/26/funky-fresh-native-scrolling/#comments</comments> <pubDate>Sun, 26 Jun 2011 19:23:15 +0000</pubDate> <dc:creator>Zachary Waldowski</dc:creator> <category><![CDATA[Web]]></category> <category><![CDATA[iOS]]></category> <category><![CDATA[javascript]]></category> <category><![CDATA[web design]]></category> <category><![CDATA[webkit]]></category> <guid
isPermaLink="false">http://dizzytechnology.com/?p=123</guid> <description><![CDATA[Apple may or may not have introduced in iOS 5 that support native overflow scrolling in WebKit.  (That covers me on the NDA, right?)  I've hacked up Scrollability to equalize this across mobile platforms, read on to see the details.]]></description> <content:encoded><![CDATA[<p>Apple may or may not have introduced an update to iOS 5 that could maybe possibly have implemented a CSS property that could have the potential effect of introducing native scrolling onto HTML elements with [ilc]overflow: scroll[/ilc].  That covers me on the NDA, right?</p><p>Okay, yes, there is a new CSS property, [ilc]-webkit-overflow-scrolling[/ilc].  It exists.  In the grand scheme of things, it&#8217;s minor, which is why I find it fit to mention.  However, for web apps on mobile devices, it&#8217;s nothing short of revolutionary.  While I don&#8217;t consider this here blog a webapp (he types while pointing sheepishly at your &#8220;Add To Home Screen&#8221; button), I do think it&#8217;s an important enough change to demonstrate. <em>*cough* </em>Because I can. <em>*cough</em>*</p><p><span
id="more-123"></span></p><p>Of course, if you&#8217;re going to be OCD like me and say, well, fine, let&#8217;s make the whole damn site scrollable, there&#8217;s the ever-so-minor of anybody using a mobile device that doesn&#8217;t have native overflow scroll support, like any other iOS device on the planet.  And, from what I hear, Android support for it is spotty.  (I&#8217;ll refrain from making a snarky joke about that.)  Before this property came out, the world was abuzz with a tiny JavaScript sample by <a
href="http://www.joehewitt.com/">Joe Hewitt</a> (of Facebook fame; would you call it fame?  I just recognize his name) called <a
href="http://joehewitt.github.com/scrollability/">Scrollability</a>.  After 4 years, it finally gets an inertial scrolling algorithm right.</p><p>I decided to pair these up, both for use in general and here on Dizzy Technology.  I&#8217;ve made an approximately 15-line change that cancels all the Scrollability stuff if you&#8217;re on a platform that supports WebKit overflow scrolling.  The results are really cool, and you likely already see them if you&#8217;re reading this post.  I encourage you to try the site on an iPad, because it&#8217;s pretty cool.  It&#8217;s still pretty neat on a browser without overlay scrolling, too.</p><p>The code changes to Scrollability <a
href="https://github.com/zwaldowski/scrollability">are available at my GitHub</a>.  I would also link to a code sample, but this site does it really well (I&#8217;m OCD about web semantics, too!); just pull it up in Web Inspector.</p> ]]></content:encoded> <wfw:commentRss>http://dizzytechnology.com/2011/06/26/funky-fresh-native-scrolling/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>★ Having It All With Xcode 4 Static Libraries</title><link>http://dizzytechnology.com/2011/06/11/having-it-all-with-xcode-4-static-libraries/</link> <comments>http://dizzytechnology.com/2011/06/11/having-it-all-with-xcode-4-static-libraries/#comments</comments> <pubDate>Sat, 11 Jun 2011 20:00:53 +0000</pubDate> <dc:creator>Zachary Waldowski</dc:creator> <category><![CDATA[Mobile]]></category> <category><![CDATA[blockskit]]></category> <category><![CDATA[psfoundation]]></category> <category><![CDATA[relief]]></category> <category><![CDATA[xcode4]]></category> <guid
isPermaLink="false">http://dizzytechnology.com/?p=118</guid> <description><![CDATA[It&#8217;s been a long, annoying road to getting a usability balance with libraries in Xcode 4. Well, strike that. iOS static libraries have always been a little hellish experience-wise, whether it was your app crashing if that library had categories or the compiler not being able to find headers. In Xcode 4, we got another [...]]]></description> <content:encoded><![CDATA[<p>It&#8217;s been a long, annoying road to getting a usability balance with libraries in Xcode 4.  Well, strike that.  iOS static libraries have always been a little hellish experience-wise, whether it was your app crashing if that library had categories or the compiler not being able to find headers.</p><p>In Xcode 4, we got another obnoxious facet to this issue:  auto completion, or, in Apple Magic™ terms, Code Sense.  Long story short, Code Sense does not like external headers.  It really doesn&#8217;t.  Sometimes it just won&#8217;t index those external headers, making the experience for using, say, BlocksKit incredibly annoying.  In working on PSFoundation, I ran into a much bigger issue where Xcode decides it just won&#8217;t highlight your code <em>at all.</em></p><p>As most can guess, when things are a crapshoot like this, actually being able to compile and use your code was the primary issue over getting autocomplete to work.  After weeks of investigation and toying around, I feel like I&#8217;ve worked things out.</p><p><span
id="more-118"></span></p><p>The most common way to get headers working (without autocompletion) is to have the headers install to a named folder instead of /usr/local/include, so, properly: <code
class="codecolorer text default"><span
class="text">/Users/zwaldowski/Library/Developer/Xcode/DerivedData/Filemator-&lt;udid&gt;/Build/Products/Debug-iphonesimulator/PSFoundation</span></code>.  A good way to get headers working (with autocompletion, but not always compiling properly) is to jump <em>out</em> of the proper Xcode scheme, e.g., <code
class="codecolorer text default"><span
class="text">Build/Products/PSFoundation</span></code>.</p><p>Three20 does something like this, and I&#8217;ve followed them:  in your static library target, set both &#8220;Private Headers Folder Path&#8221; and &#8220;Public Headers Folder Path&#8221; to <code
class="codecolorer text default"><span
class="text">&quot;/../$(PRODUCT_NAME)/$(PRODUCT_NAME)&quot;</span></code>.  Now, instruct your users to set their set their header search path to <code
class="codecolorer text default"><span
class="text">&quot;$(BUILT_PRODUCTS_DIR)/../--project name--&quot;</span></code>.  From then on, they use <code
class="codecolorer text default"><span
class="text">#import &quot;--project name--/--main header--.h&quot;</span></code>, like <code
class="codecolorer text default"><span
class="text">#import &quot;PSFoundation/PSFoundation.h</span></code>.  Their code will light up like a Christmas tree, things will autocomplete, <strong>and</strong> it will build.</p> ]]></content:encoded> <wfw:commentRss>http://dizzytechnology.com/2011/06/11/having-it-all-with-xcode-4-static-libraries/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title><![CDATA[»  I Like Startups Now, Startups Are Cool]]></title><link><![CDATA[http://thestartupfoundry.com/2011/05/23/why-two-engineers-left-apple-to-build-a-flash-alternative-the-hype-yc-w11-story/]]></link> <comments>http://dizzytechnology.com/2011/05/25/i-like-startups-now-startups-are-cool/#comments</comments> <pubDate>Thu, 26 May 2011 02:35:09 +0000</pubDate> <dc:creator>Zachary Waldowski</dc:creator> <category><![CDATA[Links]]></category> <category><![CDATA[html5]]></category> <category><![CDATA[mac]]></category> <guid
isPermaLink="false">http://dizzytechnology.com/?p=108</guid> <description><![CDATA[From an interview with the developers with Hype: I had always wanted to have my own company; I suppose its “in the blood.”  &#8230;  It was always in the back of my mind that for any technology shift you’d need tools to help out.  I’m really a tools guy, though we tend to call them [...]<p><a
href="http://dizzytechnology.com/2011/05/25/i-like-startups-now-startups-are-cool/" rel="bookmark" title="Permanent link to 'I Like Startups Now, Startups Are Cool'" class="glyph">✔</a></p> ]]></description> <content:encoded><![CDATA[<p>From an interview with the developers with <a
href="http://tumultco.com/hype/">Hype</a>:</p><blockquote><p>I had always wanted to have my own company; I suppose its “in the blood.”  &#8230;  It was always in the back of my mind that for any technology shift you’d need tools to help out.  I’m really a tools guy, though we tend to call them “apps” nowadays.  I was faced with the decision of continuing to work with the great people on my team on a clearly high impact project, living with the “what if” syndrome, or trying to forge my own path.  ”Regret Minimization” is what should win out in life, so it did.</p></blockquote><p>&#8220;Jumping ship,&#8221; so to speak, for a startup isn&#8217;t always cast in a positive light by society or by people on the Internet.  We in general are very corporation-biased, and a lot of us online take something like leaving Google (after being talented enough to get there in the first place) as some kind of arrogant statement or something against the company itself.  It means a lot to hear positive things about the &#8220;independent&#8221; lifestyle.</p><p>This may or may not be me testing my new linked list system.  Shh.</p><p><a
href="http://dizzytechnology.com/2011/05/25/i-like-startups-now-startups-are-cool/" rel="bookmark" title="Permanent link to 'I Like Startups Now, Startups Are Cool'" class="glyph">✔</a></p> ]]></content:encoded> <wfw:commentRss>http://dizzytechnology.com/2011/05/25/i-like-startups-now-startups-are-cool/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>★ Say Hello To BlocksKit</title><link>http://dizzytechnology.com/2011/05/18/say-hello-to-blockskit/</link> <comments>http://dizzytechnology.com/2011/05/18/say-hello-to-blockskit/#comments</comments> <pubDate>Wed, 18 May 2011 06:05:25 +0000</pubDate> <dc:creator>Zachary Waldowski</dc:creator> <category><![CDATA[Mobile]]></category> <category><![CDATA[iphone]]></category> <category><![CDATA[libraries]]></category> <category><![CDATA[open source]]></category> <category><![CDATA[uikit]]></category> <guid
isPermaLink="false">http://dizzytechnology.com/?p=53</guid> <description><![CDATA[While working on and being generally OCD with my branch of PSFoundation, I came upon a revelation that most Objective-C developers hit at some point in their experiences:  blocks are flipping amazing. However, the only issue with blocks to someone obnoxiously obsessive like me is that they aren't everywhere.
Today I'm introducing BlocksKit, which gathers a number of blocks-based extensions for Foundation and UIKit that I've stumbled upon over the last couple of weeks.  These class extensions are open source and extensively documented.]]></description> <content:encoded><![CDATA[<p>While working on and being generally OCD with my branch of <a
href="https://github.com/steipete/PSFoundation/tree/refactor">PSFoundation</a>, I came upon a revelation that most Objective-C developers hit at some point in their experiences:  blocks are <em>flipping amazing. </em>However, the only issue with blocks to someone obnoxiously obsessive like me is that they aren&#8217;t <strong>everywhere</strong>.</p><p>Today I&#8217;m introducing BlocksKit, which gathers a number of blocks-based extensions for Foundation and UIKit that I&#8217;ve stumbled upon over the last couple of weeks.  These class extensions are open source and extensively documented.  The (surprisingly simple) code is <a
href="https://github.com/zwaldowski/BlocksKit">available on my GitHub</a>.  Online documentation is <a
href="http://dizzytechnology.com/data/BlocksKit">available right here on this site</a>, and you can add a documentation set to Xcode 4 using <a
href="http://www.dizzytechnology.com/data/com.dizzytech.BlocksKit.atom">this feed URL</a>.</p><p><span
id="more-53"></span></p><p>Some might not really know what blocks are.  Like I said, Apple doesn&#8217;t have them ubiquitous quite yet, and the places where it is used are abstracted away by Xcode 4 autocompletion.  Blocks are a language extension to C, C++, Objective-C, and Objective-C++ introduced by Apple in 2009 with the release of Mac OS X Snow Leopard.   Blocks are, essentially, C functions with the added benefits of &#8220;absorbing&#8221; the context of whatever function/selector it is executed in and relatively easy storage and use as a variable.</p><p>Though the two aren&#8217;t completely hand-in-hand, blocks are crucial to the design and implementation of Grand Central Dispatch, which also was introduced in Snow Leopard (and iOS 4.0).  GCD is, for all intents and purposes, a library that makes multithreading easy &#8211; even downright simple &#8211; to execute on multicore processors.  The implementation of blocks in the Objective-C runtime makes use of GCD, but blocks do not otherwise depend on GCD.  The most obvious upshot of blocks on Mac and iOS is that it&#8217;s all asynchronous processing.  This allows code to be more flexible, faster, and generally won&#8217;t responsive, as you have the potential to not worry about the process freezing of heavily synchronous code.</p><p>This move is of huge benefit to iOS, where the delegation pattern and callback design can sometimes be slower, if not just uglier to code with.  UIKit doesn&#8217;t natively support bindings like AppKit does, and offers few openings for OS X-like KVO.  We&#8217;re essentially left with just the target/selector form of messaging.  While this isn&#8217;t necessarily bad or by any means bad design, it&#8217;s where Objective-C got a bad reputation for being excessively verbose when outside developers tried their hand at iOS development.</p><p>Lots of useless code exists in Objective-C classes, as far as I can see, for holding onto references (ivars or properties) for things that are usually only needed once.  Tons of UIGestureRecognizer code, including Apple&#8217;s samples, keep a reference around in the form of an ivar just to verify things later on.  If this wasn&#8217;t necessary, a UIGestureRecognizer could be instantiated, configured, added to a view, and released in an initializer or awakeFromNib:/viewDidLoad:.</p><p>iOS 4.0 introduced a number of block mechanisms, most notably for things like much speedier UIView animations.</p><p>Ideally, a block mechanism should be available everywhere where you would find:</p><ul><li>a callback-based delegate mechanism (UIAlertView)</li><li>a target/selector pattern is used (UIControl, UIGestureRecognizer)</li><li>a common, repeatable, but not contextual utility (NSArray looping)</li><li>an arbitrary selector must be used (NSObject -performSelector:withDelay:)</li></ul><p>BlocksKit was developed with this in mind, and I&#8217;m constantly trying to imagine better and more ways to throw in blocks.  I encourage you to check it out and maybe even add some code to it yourself.</p> ]]></content:encoded> <wfw:commentRss>http://dizzytechnology.com/2011/05/18/say-hello-to-blockskit/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>★ What&#8217;s your development setup?</title><link>http://dizzytechnology.com/2011/04/10/what-is-your-development-setup/</link> <comments>http://dizzytechnology.com/2011/04/10/what-is-your-development-setup/#comments</comments> <pubDate>Sun, 10 Apr 2011 14:49:31 +0000</pubDate> <dc:creator>Zachary Waldowski</dc:creator> <category><![CDATA[Uncategorized]]></category> <guid
isPermaLink="false">http://dizzytechnology.com/2011/04/10/whats-your-development-setup-is-os-and-hardware-specs/</guid> <description><![CDATA[My main (and only, I hate duplicating effort) development computer is a June 2009 13&#8243; MacBook Pro running Snow Leopard.  This was my first Mac, and it&#8217;s held up solidly.  I&#8217;m extremely impressed for it. 2.26 Ghz C2D, 4GB RAM, 500GB HDD, and an the Nvidia GeForce 9400M. For web development, I shuffle between Photoshop [...]]]></description> <content:encoded><![CDATA[<p
class="formspringmeAnswer">My main (and only, I hate duplicating effort) development computer is a June 2009 13&#8243; MacBook Pro running Snow Leopard.  This was my first Mac, and it&#8217;s held up solidly.  I&#8217;m extremely impressed for it. 2.26 Ghz C2D, 4GB RAM, 500GB HDD, and an the Nvidia GeForce 9400M.</p><p>For web development, I shuffle between Photoshop and Coda. For iOS development, I have an iPhone and iPad usable for testing. I always run the latest and greatest OS available (beta too), preferably jailbroken.</p><p
class="formspringmeFooter"><a
href="http://www.formspring.me/zwaldowski?utm_medium=social&amp;utm_source=wordpress&amp;utm_campaign=shareanswer">Ask me anything</a>!</p> ]]></content:encoded> <wfw:commentRss>http://dizzytechnology.com/2011/04/10/what-is-your-development-setup/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>★ What do you think about apple?</title><link>http://dizzytechnology.com/2010/12/17/what-do-you-think-about-apple/</link> <comments>http://dizzytechnology.com/2010/12/17/what-do-you-think-about-apple/#comments</comments> <pubDate>Fri, 17 Dec 2010 23:22:02 +0000</pubDate> <dc:creator>Zachary Waldowski</dc:creator> <category><![CDATA[Uncategorized]]></category> <guid
isPermaLink="false">http://dizzytechnology.com/2010/12/17/what-do-you-think-about-apple/</guid> <description><![CDATA[They are, like any other corporation, evil and money-obsessed, by very design. However, they are fantastic engineers that surpass, in my opinion, the technological design of any other technology leader. I feel they create fantastic user interfaces, maybe not in the whole &#34;Minority Report&#34;-cool kind of way, but, &#34;holy cow, this is easier than my [...]]]></description> <content:encoded><![CDATA[<p
class="formspringmeAnswer">They are, like any other corporation, evil and money-obsessed, by very design.  However, they are fantastic engineers that surpass, in my opinion, the technological design of any other technology leader.  I feel they create fantastic user interfaces, maybe not in the whole &quot;Minority Report&quot;-cool kind of way, but, &quot;holy cow, this is easier than my refrigerator&quot;-way.  Some call them dictatorial, and to an extent they are &#8211; it&#8217;s what happens when you have a dictator XD &#8211; but I also feel that they have an impressively high standard for quality and expect a lot out of the programmers and designers who work for them and work for them on their platforms.  (Except iTunes.  iTunes fucking sucks.)  They make a lot of money for a lot of people and will continue to do so for the foreseeable future.</p><p
class="formspringmeFooter"> <a
href="http://formspring.me/zwaldowski?utm_medium=social&#038;utm_source=wordpress&#038;utm_campaign=shareanswer">Ask me anything</a></p> ]]></content:encoded> <wfw:commentRss>http://dizzytechnology.com/2010/12/17/what-do-you-think-about-apple/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> </channel> </rss>
<!-- This Quick Cache file was built for (  dizzytechnology.com/feed/ ) in 0.58863 seconds, on Feb 4th, 2012 at 5:44 pm UTC. -->
<!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on Feb 4th, 2012 at 6:44 pm UTC -->
