<?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>Alex Fajkowski</title>
	<atom:link href="http://fajkowski.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://fajkowski.com/blog</link>
	<description>Software and other interesting stuff…</description>
	<lastBuildDate>Fri, 23 Jul 2010 20:20:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Build an iPad Prototype</title>
		<link>http://fajkowski.com/blog/2010/01/28/build-an-ipad-prototype/</link>
		<comments>http://fajkowski.com/blog/2010/01/28/build-an-ipad-prototype/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 20:14:12 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://fajkowski.com/blog/?p=131</guid>
		<description><![CDATA[I realized something yesterday during Steve&#8217;s keynote. For the first time, Apple is expecting third party developers to write apps targeted to a device that they have never held. If this new product was a laptop or another iPhone, this wouldn&#8217;t be a big deal. We have reference points for those. However, several of the [...]]]></description>
			<content:encoded><![CDATA[<p>I realized something yesterday during Steve&#8217;s keynote. For the first time, Apple is expecting third party developers to write apps targeted to a device that they have never held. If this new product was a laptop or another iPhone, this wouldn&#8217;t be a big deal. We have reference points for those. However, several of the audience members who used an iPad after the presentation said that <a href="http://www.stephenfry.com/2010/01/28/ipad-about/">you just don&#8217;t get it until you hold the device in your hands</a>. <a href="http://daringfireball.net/2010/01/ipad_big_picture">It&#8217;s fast</a>. It&#8217;s not a laptop. And <a href="http://daringfireball.net/linked/2010/01/28/marco">it&#8217;s not just a big iPod touch</a>.</p>
<p>If I want an app in the store on launch day, I need to know what an iPad feels like. There are roughly 59 days left before the lines form in front of Apple&#8217;s retail stores. In a <a href="http://events.apple.com.edgesuite.net/1001q3f8hhr/event/index.html">video shown during the presentation</a>, Scott Forstall described Launch Day: &#8221;…there&#8217;s going to be a whole new gold rush for developers&#8221;.</p>
<p>Back in college, <a href="http://en.wikipedia.org/wiki/Jeff_Hawkins">Jeff Hawkins</a> (the founder of Palm and Handspring) gave a guest lecture to one of my engineering classes. One of the key points he stressed—that sticks with me a decade later—was the absolute importance of building prototypes. Hawkins carved wooden and styrofoam blocks representing what would later become the Palm Pilot. He took notes on it during meetings and answered phone calls on it.</p>
<p>On the iPhone, we have been living with the devices for two and a half years. We know what they feel like. Xcode&#8217;s simulator is great, but there&#8217;s nothing like building and debugging your software on iPhone hardware. During your design phase, the <a href="http://giveabrief.com/">Briefs project</a> from Rob Rhyne is invaluable. In addition if you haven&#8217;t watched it already, check out <a href="http://www.viddler.com/explore/rentzsch/videos/26/">Craig Hockenberry&#8217;s presentation from C4[2]</a>, describing what he learned by using his software in the real world.</p>
<p>How is the iPad going to be used? On the sofa? In a coffee shop, a cramped airplane seat, in bed, on the kitchen counter, commuting on the Metro, or even on the toilet?</p>
<p>I put together a very rough, very quick iPad template based on Apple&#8217;s technical specifications page. The 9.7&#8243; diameter screen translates to a 7.76&#8243; x 5.82&#8243; rectangle (1024 x 768 square pixels). <a href="http://apparentlogic.com/design/iPad/iPadPDFTemplate.pdf">Download the PDF</a>, print out a copy and build yourself a cardboard iPad prototype. Cut out 4 or 5 layers of cardboard from a shipping box and glue them together to make the prototype 0.5&#8243; thick. Use rubber cement to put the paper stencil on the top layer.</p>
<p>Once you have this constructed, you immediately see why there is such a large black bevel around the iPad&#8217;s screen.</p>
<p style="text-align: center;"><a href="http://fajkowski.com/blog/wp-content/uploads/2010/01/ipadPrototypeFront.jpg"><img class="size-medium wp-image-133 aligncenter" title="iPad Prototype Front" src="http://fajkowski.com/blog/wp-content/uploads/2010/01/P1010693-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p style="text-align: center;"><a href="http://fajkowski.com/blog/wp-content/uploads/2010/01/iPadPrototypeSide.jpg"><img class="alignnone size-thumbnail wp-image-134" title="iPad Prototype Side" src="http://fajkowski.com/blog/wp-content/uploads/2010/01/P1010695-150x150.jpg" alt="" width="150" height="150" /></a><a href="http://fajkowski.com/blog/wp-content/uploads/2010/01/iPadPrototypeBack.jpg"><img class="alignnone size-thumbnail wp-image-135" title="iPad Prototype Back" src="http://fajkowski.com/blog/wp-content/uploads/2010/01/P1010696-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>Good luck, happy designing &amp; see you in March!</p>
<p>Download the iPad template:<br />
<a href="http://apparentlogic.com/design/iPad/iPadPDFTemplate.pdf"> http://apparentlogic.com/design/iPad/iPadPDFTemplate.pdf</a></p>
<p>or as a PDF or OmniGraffle document:<br />
<a href="http://apparentlogic.com/design/iPad/iPadGraffleTemplate.zip"> http://apparentlogic.com/design/iPad/iPadGraffleTemplate.zip</a></p>
]]></content:encoded>
			<wfw:commentRss>http://fajkowski.com/blog/2010/01/28/build-an-ipad-prototype/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenFlow: a CoverFlow API replacement for the iPhone</title>
		<link>http://fajkowski.com/blog/2009/08/02/openflow-a-coverflow-api-replacement-for-the-iphone/</link>
		<comments>http://fajkowski.com/blog/2009/08/02/openflow-a-coverflow-api-replacement-for-the-iphone/#comments</comments>
		<pubDate>Sun, 02 Aug 2009 19:47:52 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[coverflow]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[openflow]]></category>

		<guid isPermaLink="false">http://fajkowski.com/blog/?p=115</guid>
		<description><![CDATA[When I released my first iPhone app, Presenter, two months ago, Apple accused me of using their private iPhone CoverFlow API. After appealing to Apple &#038; writing a blog post about my roadblock, Apple reversed their decision. Today at iPhoneDevCamp, I am releasing OpenFlow&#8211;a free, open source replacement for Apple&#8217;s private CoverFlow API. The initial [...]]]></description>
			<content:encoded><![CDATA[<p>When I released my first iPhone app, Presenter, two months ago, <a href="http://fajkowski.com/blog/2009/05/21/clicker-app-rejected-for-coverflow-private-api-use/">Apple accused me of using their private iPhone CoverFlow API</a>. After appealing to Apple &#038; writing a blog post about my roadblock, Apple reversed their decision.</p>
<p>Today at <a href="http://www.iphonedevcamp.org/">iPhoneDevCamp</a>, I am releasing <a href="http://apparentlogic.com/openflow">OpenFlow</a>&#8211;a free, open source replacement for Apple&#8217;s private CoverFlow API. The initial release is simple, but it is also efficient and very fast, even on first generation iPhones.</p>
<p>Go get the code here:<br />
<a href="http://apparentlogic.com/openflow">http://apparentlogic.com/openflow</a></p>
<p>The API should be easy to include in your own program. The main class, <code>AFOpenFlowView</code>, is a subclass of <code>UIView</code>.<br />
To use this in your own project:</p>
<ul>
<li>Add the OpenFlow source code to your project. </li>
<li>Add the <code>QuartzCore</code> and <code>CoreGraphics</code> frameworks.</li>
<li>Import &#8220;<code>AFOpenFlowView.h</code>&#8221; &#038; interact with it as you would a normal <code>UIView</code>.</li>
<li>You should implement both the <code>AFOpenFlowViewDelegate</code> and <code>AFOpenFlowViewDataSource</code> protocols. </li>
</ul>
<p>Currently, the delegate protocol is used to let your code know when the user selected a new object. The datasource protocol is called when <code>AFOpenFlowView</code> needs a <code>UIImage</code> object. This method should be *fast*. Don&#8217;t do <code>NSURL</code> requests or even disk access in this method. See the AFOpenFlowDemo app I provided for an example how to load images from a remote server. The datasource also needs to provide a default <code>UIImage</code>.</p>
<p>At any point, you can set <code>UIImage</code>&#8216;s on your <code>AFOpenFlowView</code>. You don&#8217;t need to wait for the datasource protocol to ask you. Your <code>AFOpenFlowView</code> will start displaying images as soon as you call <code>setNumberOfImages</code>.</p>
<p><a href="http://fajkowski.com/blog/wp-content/uploads/2009/08/OpenFlowDemo.png"><img src="http://fajkowski.com/blog/wp-content/uploads/2009/08/OpenFlowDemo-300x161.png" alt="OpenFlow Demo" title="OpenFlow Demo" width="300" height="161" class="alignnone size-medium wp-image-120" /></a></p>
<p>This is an initial release of OpenFlow. I licensed it under the liberal MIT open source license.<br />
Please drop me a line to let me know what you think &#038; where you want the project to go from here.</p>
<p>The source code for both OpenFlow and the AFOpenFlowDemo project are currently available as a zip files, hosted locally. For the demo application, you will need to register for a Flickr API key and secret. If you try to compile the demo, you will quickly find the error message where your Key &#038; Secret should be added. </p>
<p>I will be moving this code to an online repository in the very near future.</p>
<p>Enjoy!<br />
-Alex</p>
]]></content:encoded>
			<wfw:commentRss>http://fajkowski.com/blog/2009/08/02/openflow-a-coverflow-api-replacement-for-the-iphone/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Mac OS X FireWire Channel Changer for EyeTV</title>
		<link>http://fajkowski.com/blog/2009/07/16/mac-os-x-firewire-channel-changer-for-eyetv/</link>
		<comments>http://fajkowski.com/blog/2009/07/16/mac-os-x-firewire-channel-changer-for-eyetv/#comments</comments>
		<pubDate>Fri, 17 Jul 2009 03:36:18 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Channel Changer]]></category>
		<category><![CDATA[EyeTV]]></category>
		<category><![CDATA[FireWire]]></category>

		<guid isPermaLink="false">http://fajkowski.com/blog/?p=97</guid>
		<description><![CDATA[EyeTV is a fantastic DVR for Mac OS X, but if you&#8217;re unlucky enough to need a set top box from your cable company, you&#8217;ll have to figure out how EyeTV is going to change channels when you&#8217;re not around. You could buy a separate infrared transmitter, but they are an additional cost &#38; don&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>EyeTV is a fantastic DVR for Mac OS X, but if you&#8217;re unlucky enough to need a set top box from your cable company, you&#8217;ll have to figure out how EyeTV is going to change channels when you&#8217;re not around. You could buy a separate infrared transmitter, but they are an additional cost &amp; don&#8217;t always work properly.</p>
<p>Almost all digital cable boxes come with an active IEEE 1394 (FireWire) port. If your Mac also has FireWire, you&#8217;re in luck. I wrote a Mac OS X System Preference pane that listens to EyeTV channel change notifications and relays them to your cable box.</p>
<p>Download the free System Preference pane at: <a href="http://apparentlogic.com/channelchanger/download">http://apparentlogic.com/channelchanger/download</a><br />
This software has been working fine for me, but it still is brand new, so please use it at your own risk!<br />
Double click the .zip file to expand. Double click the &#8220;Channel Changer.prefPane&#8221; file to install.<br />
Channel Changer runs as a launchd service in the background, listening to EyeTV&#8217;s channel change commands.</p>
<p>It&#8217;s got all the normal good stuff like:</p>
<ul>
<li>Sparkle to keep your software up-to-date</li>
<li>Log view to see what the Channel Changer service is doing in the background</li>
<li>launchd to start automatically &#038; run in the background when you reboot your computer</li>
<li>An uninstall button in case you don&#8217;t need the software anymore</li>
</ul>
<p>So far, I can only confirm it works with my Comcast-issued Motorola DCX-3200. However, it should work for most FireWire enabled cable boxes. Please drop me a line if you have any problems. Also, please let me know the make &amp; model of your cable box if it works for you! Contact me at alex at fajkowski dotcom.</p>
<p><a href="http://apparentlogic.com/channelchanger/snapshotTrimmed.png"><img src="http://fajkowski.com/blog/wp-content/uploads/2009/07/disableDoubleChannelChange.png" alt="Disable Double Channel Change" title="Disable Double Channel Change" width="410" height="28" class="aligncenter size-full wp-image-108" /></a><br />
I added an option to that disables EyeTV from setting the same channel twice on your cable box. Depending on your cable company, sending the same channel change command may cause your box to toggle into a &#8220;Television Guide&#8221; mode that looks like this:<br />
<img src="http://fajkowski.com/blog/wp-content/uploads/2009/07/tvguide.png" alt="TV Guide" title="TV Guide" width="341" height="259" class="aligncenter size-full wp-image-102" /></p>
<p>Finally, for some acknowledgements about software libraries used in &#8220;Channel Changer&#8221;.<br />
Thanks to Andy Matuschak for Sparkle, a wonderful Mac OS X software update framework.<br />
<a href="http://sparkle.andymatuschak.org/">http://sparkle.andymatuschak.org/</a><br />
And thank you to Uli Kusterer for UKKQueue, a clean &amp; powerful Cocoa wrapper for kqueue file change notifications in OS X.<br />
<a href="http://zathras.de/">http://zathras.de/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://fajkowski.com/blog/2009/07/16/mac-os-x-firewire-channel-changer-for-eyetv/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>&#8220;AFInformationView&#8221; Bubbles on the iPhone</title>
		<link>http://fajkowski.com/blog/2009/06/22/afinformationview-bubbles-on-the-iphone/</link>
		<comments>http://fajkowski.com/blog/2009/06/22/afinformationview-bubbles-on-the-iphone/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 20:17:29 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Cocoa]]></category>

		<guid isPermaLink="false">http://fajkowski.com/blog/?p=76</guid>
		<description><![CDATA[My iPhone application, Presenter, lets the user choose whether they want to swipe, tap, or use buttons to change slides. The Settings panel contains a 3 button segmented control to customize this behavior on the fly. Instead of including a help screen or inserting a large UILabel underneath the segmented control, I wrote a class [...]]]></description>
			<content:encoded><![CDATA[<p>My iPhone application, <a href="http://presenterapp.net">Presenter</a>, lets the user choose whether they want to swipe, tap, or use buttons to change slides. The Settings panel contains a 3 button segmented control to customize this behavior on the fly. Instead of including a help screen or inserting a large UILabel underneath the segmented control, I wrote a class that displays a floating UILabel on top of each button when selected.</p>
<p><a href="http://fajkowski.com/blog/wp-content/uploads/2009/06/settings.png"><img class="aligncenter size-full wp-image-79" title="Information View" src="http://fajkowski.com/blog/wp-content/uploads/2009/06/informationview.png" alt="AFInformationView in action" width="320" height="179" /></a></p>
<p>Calling this helper class is very simple. Pass in the target view, location, label text and a few other parameters.</p>
<p><code>- (void)displayInView:(UIView *)theView withText:(NSString *)displayText atLocation:(CGPoint)location width:(CGFloat)width isTriangleOnTop:(Boolean)isTriangleOnTop triangleHorizontalLocation:(CGFloat)triangleHorizontalLocation forDuration:(NSTimeInterval)duration;</code></p>
<p><code>AFInformationView</code> will fade in a multi-line, semi-transparent, black label with rounded corners &amp; a target triangle. The label&#8217;s text will wrap and grow vertically, depending on its width. After a specified amount of time, the label again fades out. If the user taps on the label, it fades out immediately.</p>
<p>I have included a sample Xcode project demonstrating its use.</p>
<p><a href="http://fajkowski.com/code/AFInformationView/AFInformationView.zip">http://fajkowski.com/code/AFInformationView/AFInformationView.zip</a></p>
<p><a title="AFInformationView sample movie" href="http://fajkowski.com/video/AFInformationView.mov">Click here to see a short video</a> of the Xcode project in use.</p>
<p>I have released the code with an MIT license. Feel free to reuse it in any project you&#8217;d like.</p>
]]></content:encoded>
			<wfw:commentRss>http://fajkowski.com/blog/2009/06/22/afinformationview-bubbles-on-the-iphone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://fajkowski.com/video/AFInformationView.mov" length="476288" type="video/quicktime" />
		</item>
		<item>
		<title>Presenter, On Sale!</title>
		<link>http://fajkowski.com/blog/2009/06/01/presenter-on-sale/</link>
		<comments>http://fajkowski.com/blog/2009/06/01/presenter-on-sale/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 14:15:08 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Clicker]]></category>
		<category><![CDATA[Cocoa]]></category>

		<guid isPermaLink="false">http://fajkowski.com/blog/?p=43</guid>
		<description><![CDATA[I&#8217;m very happy to announce that my first application is finally available on the iPhone App Store today! You can check out a description of Presenter at: http://presenterapp.net/features Presenter pairs with your Mac over WiFi to let you control Keynote &#38; PowerPoint presentations from your iPhone. Upright, view your speaker notes in Georgia 38pt, white-on-black (a [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m very happy to announce that my first application is finally available <a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=314496788&amp;mt=8">on the iPhone App Store</a> today!</p>
<p style="text-align: center;"><img class="size-full wp-image-51  aligncenter" title="iTunes Connect" src="http://fajkowski.com/blog/wp-content/uploads/2009/05/itunes-connect1.jpg" alt="iTunes Connect" width="440" height="112" /></p>
<p>You can check out a description of Presenter at: <a href="http://presenterapp.net/features">http://presenterapp.net/features</a></p>
<p>Presenter pairs with your Mac over WiFi to let you control Keynote &amp; PowerPoint presentations from your iPhone. Upright, view your speaker notes in <a href="http://fajkowski.com/blog/wp-content/uploads/2009/05/presenter_notes.png">Georgia 38pt, white-on-black</a> (a bit more attractive &amp; easier to read than <a href="http://fajkowski.com/blog/wp-content/uploads/2009/05/keynote_remote_notes.png">Helvetica 16pt, brown-on-yellow</a>, no?).</p>
<p style="text-align: center;"><a title="Click to view a short video of how this works." href="http://s3.amazonaws.com/clickerapp/ClickerFlow.mov"><img class="size-full wp-image-58 aligncenter" title="Click to view a short video of how this works." src="http://fajkowski.com/blog/wp-content/uploads/2009/05/image1.png" alt="image1" width="480" height="300" /></a></p>
<p style="text-align: left;">Turn your phone sideways, and you get a <a href="http://fajkowski.com/blog/2009/05/21/clicker-app-rejected-for-coverflow-private-api-use/">&#8216;Not Cover Flow&#8217; interface</a>, displaying high quality previews of all the slides in your stack. Flick through them to see what&#8217;s coming up, or double tap a slide to navigate to that position in your show. Check out this <a href="http://s3.amazonaws.com/clickerapp/ClickerFlow.mov">short video to see how it works.</a></p>
<p>The Mac server portion of Presenter installs as a System Preference pane. The Presenter Server runs in the background as a launchd process. Pairing is very familiar—Enter a 4 digit code from your iPhone into the Mac System Preference pane. The Presenter Server communicates with your iPhone over an SSL encrypted channel, generates strong passwords, and stores them in your Mac&#8217;s &amp; iPhone&#8217;s keychains. Once you are paired, authentication happens seamlessly to the user (thank you, Bonjour), and all communication back &amp; forth is secure. Big thanks to <a href="http://deusty.blogspot.com/">Deusty Designs</a> for the robust <a href="http://code.google.com/p/cocoaasyncsocket/">CocoaAsyncSocket</a> CFSocket &amp; CFStream wrapper library. For the Mac OS X Keychain interaction, ExtendMac has a <a href="http://extendmac.com/EMKeychain/">terrific Cocoa wrapper, EMKeychain</a>. Finally, I&#8217;m also using Andy Matuschak&#8217;s <a href="http://sparkle.andymatuschak.org/">wonderful Sparkle engine</a> to keep the System Preference pane up to date.</p>
<p>The Presenter Server talks with PowerPoint and Keynote over AppleScript. Oddly enough, generating high quality previews of each slide was one of my biggest challenges. I&#8217;ll write up a post about how I did this later, but you might notice that neither Keynote nor PowerPoint&#8217;s AppleScript libraries expose any easy-to-use slide preview generator. Some other remotes out there take screenshots of what is visible on the Mac&#8217;s screen, shrink it down, then send it to the iPhone. This isn&#8217;t good enough; it requires the user to flip through every slide on his computer before being able to see the images on the iPhone. Also unhelpful, Keynote embeds teeny-tiny, low resolution previews of its slides inside the file format. PowerPoint&#8217;s file format is&#8230;well, kind of awful.</p>
<p>Today, I&#8217;m just happy and relieved to finally have an application available on the iPhone App Store. I&#8217;m not expecting to get rich from this venture&#8230;I&#8217;m just pleased to finally be able to say that I write commercial Mac OS X software—and not a farting, tip calculator, flashlight, either. (Sorry to disappoint, Presenter does not contain <a href="http://www.atebits.com/pee/">PEE</a>, yet).</p>
]]></content:encoded>
			<wfw:commentRss>http://fajkowski.com/blog/2009/06/01/presenter-on-sale/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://s3.amazonaws.com/clickerapp/ClickerFlow.mov" length="1987246" type="video/quicktime" />
		</item>
		<item>
		<title>Clicker App Rejected for CoverFlow private API use!?</title>
		<link>http://fajkowski.com/blog/2009/05/21/clicker-app-rejected-for-coverflow-private-api-use/</link>
		<comments>http://fajkowski.com/blog/2009/05/21/clicker-app-rejected-for-coverflow-private-api-use/#comments</comments>
		<pubDate>Thu, 21 May 2009 22:14:38 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Clicker]]></category>

		<guid isPermaLink="false">http://fajkowski.com/blog/?p=18</guid>
		<description><![CDATA[UPDATE! Apple reversed their decision, and Presenter will be available on June 1st on the iPhone App Store! (Also: Jonas Salling, of &#8216;Salling Clicker&#8217; fame from 2003, kindly asked me to rename my app, Clicker, to avoid any possible confusion.) &#160; &#160; Twenty-four days after submission, I received this email today, stating that Apple has [...]]]></description>
			<content:encoded><![CDATA[<p><strong>UPDATE!</strong> Apple reversed their decision, and <a href="http://presenterapp.net">Presenter</a> will be available on June 1st on the iPhone App Store!</p>
<p>(Also: Jonas Salling, of &#8216;Salling Clicker&#8217; fame from 2003, kindly asked me to rename my app, Clicker, to avoid any possible confusion.)</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Twenty-four days after submission, I received this email today, stating that Apple has rejected <a href="http://clickerapp.com">Clicker</a> from the iPhone App Store.</p>
<blockquote><p>Hello Alex,</p>
<p>Upon review of your application, Clicker cannot be posted to the App Store due to the usage of a non-public API.  Usage of non-public APIs, as outlined in the iPhone SDK Agreement section 3.3.1, is prohibited:</p>
<p>&#8220;3.3.1 Applications may only use Published APIs in the manner prescribed by Apple and must not use or call any unpublished or private APIs. &#8221;</p>
<p>The non-public API that is included in your application comes from the CoverFlow API set.  A screenshot of this issue has been attached for your reference.</p>
<p>Regards,</p>
<p>iPhone Developer Program</p></blockquote>
<p style="text-align: center;"><img class="size-full wp-image-22 aligncenter" title="img_0142" src="http://fajkowski.com/blog/wp-content/uploads/2009/05/img_0142.png" alt="img_0142" width="480" height="320" /></p>
<p>I absolutely did not use any unpublished or private APIs. <a href="http://landonf.bikemonkey.org/code/iphone/Apple_Lesson_Huh.20081213.html">Just like</a> <a href="http://daringfireball.net/2008/12/private">several other people</a>, I wrote my own CoverFlow-like user interface completely from scratch using standard, public, Core Animation layer backed views. I was so paranoid with the approval process that I didn&#8217;t even use the Apple trademarked word, &#8220;CoverFlow&#8221;, in my app&#8217;s description.</p>
<p>Clicker controls PowerPoint or Keynote on your Mac. In Portrait mode, you can view speaker notes, change slides or control your computer&#8217;s mouse. Rotate your iPhone and in Landscape mode, you can flick through every slide in your presentation. Double tap to jump to that slide.</p>
<p>Check out this <a href="http://s3.amazonaws.com/clickerapp/ClickerFlow.mov">movie of the CoverFlow implementation in question.</a></p>
<p>I fully agree with Apple that third party iPhone apps should stick to only using Public API&#8217;s. Applications should not break because of an iPhone OS upgrade.</p>
<p style="text-align: center;"><img class="size-full wp-image-26 aligncenter" title="itunes-connect" src="http://fajkowski.com/blog/wp-content/uploads/2009/05/itunes-connect.jpg" alt="itunes-connect" width="403" height="114" /></p>
<p>I totally understand how easy it is to make a mistake like this, but I&#8217;m still frustrated Apple didn&#8217;t ask me about this earlier. (Sidenote: O&#8217;Reilley&#8217;s Safari Bookbag iPhone App was <a href="http://landonf.bikemonkey.org/code/iphone/iPhone_Private_API.20081206.html">allowed to use Apple&#8217;s private CoverFlow API</a>).</p>
<p>I&#8217;ve replied back to the iPhone Developer Program, waiting to hear what they say.</p>
]]></content:encoded>
			<wfw:commentRss>http://fajkowski.com/blog/2009/05/21/clicker-app-rejected-for-coverflow-private-api-use/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://s3.amazonaws.com/clickerapp/ClickerFlow.mov" length="1987246" type="video/quicktime" />
		</item>
		<item>
		<title>Problems with Quality of Service on DD-WRT (and a fix)</title>
		<link>http://fajkowski.com/blog/2008/05/27/problems-with-quality-of-service-on-dd-wrt-and-a-fix/</link>
		<comments>http://fajkowski.com/blog/2008/05/27/problems-with-quality-of-service-on-dd-wrt-and-a-fix/#comments</comments>
		<pubDate>Wed, 28 May 2008 01:33:15 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[VoIP]]></category>

		<guid isPermaLink="false">http://fajkowski.com/blog/?p=17</guid>
		<description><![CDATA[Following up on my previous DD-WRT post, I&#8217;ve had some problems with Quality of Service on my upgraded router. I am using an Asus WL-500G Premium which has tons of memory and processor power for the job, but occasionally QoS won&#8217;t work properly when I&#8217;m on a phone call. DD-WRT ships with two implementations of [...]]]></description>
			<content:encoded><![CDATA[<p>Following up on my previous DD-WRT post, I&#8217;ve had some problems with Quality of Service on my upgraded router. I am using an Asus WL-500G Premium which has tons of memory and processor power for the job, but occasionally QoS won&#8217;t work properly when I&#8217;m on a phone call.</p>
<p>DD-WRT ships with two implementations of Quality of Service: HTB and HTSC (known to be buggy). My experience with each over time has been that they both kind of work and then fail miserably. Part of the problem might just be that QoS really complicated, and DD-WRT hasn&#8217;t had a release in two years.</p>
<p>However, a few weeks ago, I came across something new to me called <a href="http://en.wikipedia.org/wiki/TCP_Vegas">TCP</a> <a href="http://neal.nu/uw/linux-vegas/">Vegas</a>. A lot of people have had QoS problems with DD-WRT, and <a href="http://www.dd-wrt.com/phpBB2/viewtopic.php?t=28816">one poster suggested I enter several commands</a> in the Administration section of my DD-WRT router.</p>
<blockquote><p>echo 0 &gt; /proc/sys/net/ipv4/tcp_westwood<br />
echo 1 &gt; /proc/sys/net/ipv4/tcp_vegas_cong_avoid<br />
echo 3 &gt; /proc/sys/net/ipv4/tcp_vegas_alpha<br />
echo 3 &gt; /proc/sys/net/ipv4/tcp_vegas_beta</p></blockquote>
<p>I turned QoS completely off, removed the Up &amp; Down limits on my Internet connection, and just used the four commands above. It worked! I can now download podcasts, stream video, surf the net and take phone calls without worrying about my VoIP connection occasionally messing up. Of course, my speedy DSL provider (Sonic.net) helps, too.</p>
]]></content:encoded>
			<wfw:commentRss>http://fajkowski.com/blog/2008/05/27/problems-with-quality-of-service-on-dd-wrt-and-a-fix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Amazon Kindle</title>
		<link>http://fajkowski.com/blog/2008/04/30/the-amazon-kindle/</link>
		<comments>http://fajkowski.com/blog/2008/04/30/the-amazon-kindle/#comments</comments>
		<pubDate>Wed, 30 Apr 2008 21:16:41 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[DRM]]></category>
		<category><![CDATA[Future of Technology]]></category>
		<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[Reviews]]></category>

		<guid isPermaLink="false">http://fajkowski.com/blog/?p=16</guid>
		<description><![CDATA[The Amazon Kindle, rules. I&#8217;ve had mine since February, and I use it every single day. I was skeptical when I saw the Newsweek cover article comparing Jeff Bezos&#8217; Kindle to Steve Jobs&#8217; iPod. The eBook reader looks a bit dated&#8211;like a Casio keyboard from the &#8217;80s. And $399 for a device that lets you [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://fajkowski.com/blog/wp-content/uploads/2008/04/newsweek-kindle1.jpg" alt="Jeff Bezos on Newsweek cover" border="0" width="188" height="250" align="right" /><br />
<a href="http://www.amazon.com/Amazon-com-kindle/dp/B000FI73MA/fajkowskicom-20">The Amazon Kindle, rules.</a> I&#8217;ve had mine since February, and I use it every single day. I was skeptical when I saw the <a href="http://www.newsweek.com/id/70983">Newsweek cover article</a> comparing Jeff Bezos&#8217; Kindle to Steve Jobs&#8217; iPod. The eBook reader looks a bit dated&#8211;like a Casio keyboard from the &#8217;80s. And $399 for a device that lets you spend more money on DRM&#8217;ed books from one single retailer?!?</p>
<p>The thing is, I was tired of buying heavy, bulky, dead-tree books&#8211;waiting for them to arrive via UPS&#8211;only to read them once or twice. Collecting hundreds of pounds of books is taxing over time. I read reviews of the Kindle, and with Amazon&#8217;s 30 day return policy, I convinced myself to place an order. My 3 week wait was hell! (Amazon has since caught up with demand, and the Kindle is in stock).</p>
<p>When the package arrived, I was up &#038; running in no time. I bought <a href="http://www.amazon.com/Omnivores-Dilemma/dp/B000SEIDR0/fajkowskicom-20">The Omnivore&#8217;s Dilemma</a> and <a href="http://www.amazon.com/Snow-Crash/dp/B000FBJCJE/fajkowskicom-20">Snow Crash</a> right away from the Kindle store. The device really did become transparent after the first hour. I even like the page-turn screen refresh blip that some reviewers call out as a negative&#8211;it feels like natural feedback.</p>
<p>Jeff Bezos really did create the iPod equivalent for books&#8211;the Amazon bookstore is iTunes. You can download free sample chapters from any book before you buy (how many crappy books have I bought from airport news stands), and if you want to add content you already own, no problem! There are thousands of awesome out-of-copyright books available for free on the Internet.</p>
<p>You buy &#038; manage all of your documents over the Kindle&#8217;s built-in Internet connection without ever having to use a computer or setup wireless networks. You want to add a PDF or Word document? Just e-mail it as an attachment to your Kindle. </p>
<p>This eBook reader even has an experimental web browser. It&#8217;s a bit slow and black &#038; white only, but the browser works surprisingly well with Javascript. I&#8217;d have to respectfully disagree with Andy Ihnatko&#8217;s assessment that Amazon is selling a &#8220;$399 waffle maker.&#8221; The Kindle is first and foremost a brilliant eBook reader. Web browsing is convenient when you&#8217;re away from a computer (and awesome that Amazon doesn&#8217;t send you a monthly bill), but Kindle Internet surfing doesn&#8217;t hold a candle to web browsing on a laptop or iPhone. I don&#8217;t think anyone would be happy with a Kindle if they didn&#8217;t use it primarily as a reading device.</p>
<p>I also recently signed up for an Audible account to listen to Steve Martin read his latest book, <a href="http://www.amazon.com/Born-Standing-Up-Comics-Life/dp/B000UZNSN6/fajkowskicom-20">Born Standing Up</a>. (<a href="http://twit.tv/twit">thanks to Twit</a> for the terrific recommendation) It&#8217;s surprisingly convenient to have audiobooks on your Kindle when your eyes are too tired to read. Audible&#8217;s got a great selection of stuff, and any book you buy through their store will also work on your iPod/iPhone. It is a royal pain in the ass getting the Audible book onto the Kindle, though&#8211;you have to use (ugh) Windows.</p>
<p>I hate DRM with a passion. It&#8217;s the main reason why I don&#8217;t buy songs from the iTunes store anymore (I use the <a href="http://www.amazon.com/MP3-Music-Download">Amazon DRM-free MP3 store</a>). DRM is terrible and archaic in all forms, but it does encourage old-economy book publishers to sell books for electronic readers.</p>
<p>DRM is slightly more palatable on eBooks compared to MP3s and video. I typically only read books one time through. Even though I&#8217;d like to be able to copy sections from a book onto my laptop, I would never want to read an eBook on a backlit, eye-straining screen. Amazon have said they will likely drop DRM from Audible books. However, convincing book publishers to do the same will take time.</p>
<p><img src="http://fajkowski.com/blog/wp-content/uploads/2008/04/kindle1.jpg" alt="newsweek-kindle.jpg" border="0" width="150" height="150" align="left"/><br />
Whenever I hear about a book that sounds interesting, I&#8217;ll send the sample to my Kindle. Reading through the first few chapters gives me a sense whether I&#8217;d enjoy the book or not. It&#8217;s only ever really sad when a book publisher hasn&#8217;t yet released an electronic copy. </p>
<p>If you enjoy reading, the Kindle is a terrific reading device. <a href="http://www.amazon.com/Amazon-com-kindle/dp/B000FI73MA/fajkowskicom-20">I love my Kindle.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://fajkowski.com/blog/2008/04/30/the-amazon-kindle/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>I&#8217;m a California Voter for Obama</title>
		<link>http://fajkowski.com/blog/2008/01/28/im-a-california-voter-for-obama/</link>
		<comments>http://fajkowski.com/blog/2008/01/28/im-a-california-voter-for-obama/#comments</comments>
		<pubDate>Tue, 29 Jan 2008 03:54:53 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Future of Technology]]></category>
		<category><![CDATA[Politics]]></category>

		<guid isPermaLink="false">http://fajkowski.com/blog/2008/01/28/im-a-california-voter-for-obama/</guid>
		<description><![CDATA[I live in San Francisco, California, and I&#8217;m a voter for Obama. Dave Winer posted this same sentiment earlier today on his blog, Scripting News. In case you don&#8217;t know, Winer created a little thing called RSS (syndication for blogs) and RSS with enclosures (which allows people to subscribe to podcasts). Next Tuesday is &#8220;Super [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://obeygiant.com/post/obama"><img src="http://fajkowski.com/blog/wp-content/uploads/2008/01/obama.gif" alt="obama.gif" border="0" width="180" height="269" align="right"/></a><br />
I live in San Francisco, California, and I&#8217;m a voter for Obama.</p>
<p><a href="http://www.scripting.com/stories/2008/01/24/100ToObama.html">Dave Winer</a> posted this same sentiment earlier today <a href="http://www.scripting.com/stories/2008/01/28/imACaliforniaVoterForObama.html">on his blog</a>, Scripting News. In case you don&#8217;t know, Winer created a little thing called RSS (syndication for blogs) and RSS with enclosures (which allows people to subscribe to podcasts). </p>
<p>Next Tuesday is &#8220;<a href="http://en.wikipedia.org/wiki/Super_Duper_Tuesday">Super Tuesday</a>&#8221; where 24 states (including California) will hold primary elections or caucases.</p>
<p>Of all the candidates, Barack Obama has captured the attention of the entire tech community. <a href="http://www.veen.com/jeff/archives/000976.html">Jeffrey Veen</a> (Google), <a href="http://wilshipley.com/blog/2007/01/barack-strangelove-or-how-i-learned-to.html">Wil Shipley</a> (Delicious Monster), <a href="http://www.scripting.com/stories/2008/01/26/barackObamaForPresident.html">Dave Winer</a>, <a href="http://fakesteve.blogspot.com/2008/01/obama-kicking-ass-again-hooray.html">Fake Steve Jobs</a>, <a href="http://areasofmyexpertise.blogspot.com/2008/01/in-case-you-missed-it-live.html">John Hodgman</a> (The Daily Show &#038; the &#8220;PC&#8221; in Apple&#8217;s ads), and even <a href="http://blag.xkcd.com/2008/01/28/obama/">Randall Munroe</a> (creator of <a href="http://xkcd.com/">XKCD</a>) have publicly shown their support for Barack Obama.</p>
<p><a href="http://lessig.org/blog/2007/11/4barack.html">Lawrence Lessig talks</a> about Obama&#8217;s plans for truly open government standards:</p>
<blockquote><p>Obama has committed himself to a technology policy for government that could radically change how government works. The small part of that is simple efficiency &#8212; the appointment with broad power of a CTO for the government, making the insanely backwards technology systems of government actually work.</p>
<p>But the big part of this is a commitment to making data about the government (as well as government data) publicly available in standard machine readable formats. The promise isn&#8217;t just the naive promise that government websites will work better and reveal more. It is the really powerful promise to feed the data necessary for the Sunlights and the Maplights of the world to make government work better. Atomize (or RSS-ify) government data (votes, contributions, Members of Congress&#8217;s calendars) and you enable the rest of us to make clear the economy of influence that is Washington.</p></blockquote>
<p>Check out Lessig&#8217;s and Obama&#8217;s <a href="http://lessig.org/blog/Fact%20Sheet%20Innovation%20and%20Technology%20Plan%20FINAL.pdf">plan on technology and innovation</a>.</p>
<p>As a bit of viral marketing, Dave Winer decided to add the &#8220;Progress&#8221; graphic at the top of this post to his blog as &#8220;<a href="http://www.scripting.com/stories/2008/01/28/imACaliforniaVoterForObama.html">a virtual equivalent of one of those signs people put on their front lawns.</a>&#8221; Brilliant.</p>
<p><a href="http://www.flickr.com/photo_zoom.gne?id=868063604&amp;size=o">Read up on</a> <a href="http://glassbooth.org/explore/index/barack-obama/11/">Barack Obama&#8217;s views</a>. Watch his <a href="http://www.youtube.com/user/BarackObamadotcom">speeches on YouTube</a>. And if you live in one of the &#8220;Super Tuesday&#8221; states, be sure to vote on February 5th.</p>
<p>PS-Check out Obey Giant&#8217;s gorgeous screen prints of the Obama graphic at the top of this post: <a href="http://obeygiant.com/post/obama">http://obeygiant.com/post/obama</a></p>
]]></content:encoded>
			<wfw:commentRss>http://fajkowski.com/blog/2008/01/28/im-a-california-voter-for-obama/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GrandCentral &amp; Telephone Privacy</title>
		<link>http://fajkowski.com/blog/2008/01/25/grandcentral-telephone-privacy/</link>
		<comments>http://fajkowski.com/blog/2008/01/25/grandcentral-telephone-privacy/#comments</comments>
		<pubDate>Fri, 25 Jan 2008 20:09:52 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Privacy]]></category>
		<category><![CDATA[VoIP]]></category>

		<guid isPermaLink="false">http://fajkowski.com/blog/2008/01/25/grandcentral-telephone-privacy/</guid>
		<description><![CDATA[I hate giving out my telephone number to people I don&#8217;t know. It&#8217;s even worse when companies like Bed, Bath &#038; Beyond or Williams-Sonoma ask for your zip, telephone and e-mail address at the cash register. That&#8217;s an invasion of privacy. The people behind the register look at me weird when I tell them, &#8216;No [...]]]></description>
			<content:encoded><![CDATA[<p>I hate giving out my telephone number to people I don&#8217;t know. It&#8217;s even worse when companies like Bed, Bath &#038; Beyond or Williams-Sonoma ask for your zip, telephone and e-mail address at the cash register. That&#8217;s an invasion of privacy. The people behind the register look at me weird when I tell them, &#8216;No thanks.&#8217; </p>
<p>However, sometimes you are required to hand over personal information. When you buy an airline ticket, a book from Amazon, or seats for a concert through Ticketmaster, they <strong>force</strong> you to give them a telephone number.</p>
<p>These companies claim it&#8217;s for your own good&#8211;to alert you if the flight is delayed (ha!) or to prevent credit card fraud. However, if you click through the user-agreement, buried deep in their hundreds of pages of legalese, these companies are allowed to retain, data-mine and sell your personal contact information to whomever they please.</p>
<p>Last week, I signed up for a free service (for now) called <a href="http://grandcentral.com">GrandCentral</a>. You sign up for a local number, and use this as a &#8216;safe&#8217; telephone number to hand out to people. GrandCentral will forward calls from this number to your home, work and cell phone number. You can set up rules to allow certain groups of people (friends / family / work / etc) to ring through while sending everyone else straight to voicemail. If someone&#8217;s harassing you, GrandCentral will let you permanently block them or give them a sneaky, &#8220;This number is no longer in service&#8221; message.</p>
<p>What&#8217;s really cool is that GrandCentral added <em>spam filtering</em>. Based on the caller id, they will send suspicious incoming calls directly to a quarantined voicemail box. If the caller blocks his number, you can have GrandCentral act as an operator, asking the caller to identify themselves by voice. GrandCentral then calls your private telephone number and lets you decide whether or not to let the call through.</p>
<p>You can configure GrandCentral to send an MP3 of your voicemail to you over e-mail or just logon to the webpage to manage it similar to GMail. GrandCentral also lets you dial-in to check your voicemail if you don&#8217;t have Internet access. <a href="http://www.grandcentral.com/home/features">There are tons of other features</a> I haven&#8217;t yet explored. One of my favorite is the &#8220;WebCall Button&#8221;. It&#8217;s an embed-able form that lets people leave you a message from your webpage.</p>
<p><embed src="http://embed.grandcentral.com/webcall/2b3aa22a675a62ab6f9fb30340ffe4cc" width="437" height="91" wmode="transparent"></embed></p>
<p>Sign up for a GrandCentral number if you want to take control over who contacts you through the telephone. It&#8217;s currently in Beta, but it looks like they&#8217;re processing new applications for the service fairly quickly. For now, I&#8217;m treating it as a &#8216;throw-away&#8217; number since I&#8217;m not sure how much the service will cost when Google finally releases it to the world.</p>
]]></content:encoded>
			<wfw:commentRss>http://fajkowski.com/blog/2008/01/25/grandcentral-telephone-privacy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced

Served from: fajkowski.com @ 2012-05-18 09:09:26 -->
