<?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 feed the Phantom Fish.
He likes to eat stroopwafels, mostly.</description><title>The Waffler</title><generator>Tumblr (3.0; @thewaffler)</generator><link>http://thewaffler.org/</link><item><title>Byline 3 — Not Your Grandpa’s Google Reader iPhone App</title><description>&lt;p&gt;I’m pleased to announce the release of &lt;a href="http://phantomfish.com/byline.html"&gt;Byline 3&lt;/a&gt;, the long-awaited successor to the first and best Google Reader app on the App Store. (Well, I think it’s the best, but then I would, wouldn’t I?) Byline has been pulled apart and reworked from the inside out, and the result is a lean little monster of an app that’s more functional and elegant than ever before. I’m very excited about this update, and I think you will be too when you get your paws on it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Streamlined&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I wanted to add features to Byline without adding bloat — in fact, I wanted Byline 3 to be even more sleek and spare than its predecessors. Sounds like an impossible goal, doesn’t it? Yet this kind of magic is what the iPhone’s all about. Who needs abstract on-screen buttons when you can just reach out and grab what’s in front of you. Intuitive scrolling gestures have been part of the iPhone since the beginning, yet RSS apps tend to make you to stab at fiddly little buttons to get from one article to the next. Apple‘s own Mail app suffers from a bad case of the buttons too, but it’s RSS apps that really feel the pinch (as it were), since you’re likely to have a far greater volume of feed articles to sift through than email messages.&lt;/p&gt;

&lt;p&gt;No more. Byline 3 lets you swipe from page to page with a natural sideways motion that feels just like moving between images in the Photos app. It’s amazing how fast and frictionless reading your feeds becomes when you no longer have to concentrate on controls — the interface seems to just disappear. Using Byline now feels completely natural whether you like hold your iPhone in both hands, your right hand, your left hand, your teeth … maybe not your teeth, but you get the idea. Once you’ve tried it you’ll never look back.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://milobird.com/bylineswipescreen.jpg" style="display: block;margin-left:auto;margin-right:auto;"/&gt;&lt;strong&gt;Smart&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One of Byline’s most useful features is offline browsing, which allows you to read full web pages linked to by your feeds — with images and CSS — when you’re on the subway, in the sticks, or just stuck with a slow connection. The trouble is that caching web pages was an all-or-nothing affair in earlier versions of Byline, so you’d either have to wait a long time for Byline to cache your feeds or risk not having your links available when you really need them.&lt;/p&gt;

&lt;p&gt;Byline 3 caches web pages up to twice as fast as before, but that’s just the beginning: caching is smart now. Byline 3 continuously analyses your feeds and automatically decides which ones really need to be cached, usually because the RSS feed contains only short snippets of text. Instead of wasting time caching web pages when the full text of the article is in the feed anyway, Byline just caches the web pages you’re likely to want, making your offline browsing experience far more complete than before even if you don’t have much time to let Byline cache when you’re online. This all happens automatically, but if you want to fine-tune the process you can manually enable or disable web page caching for individual feeds.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Social&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Byline is now tightly integrated with &lt;a href="http://twitter.com/"&gt;Twitter&lt;/a&gt;, &lt;a href="http://www.instapaper.com/"&gt;Instapaper&lt;/a&gt;, and &lt;a href="http://www.readitlaterlist.com/"&gt;Read It Later&lt;/a&gt;. I’m especially pleased with the Twitter implementation, which automatically handles URL shortening if the Tweet becomes too long to post otherwise. You can even compose Tweets offline — if necessary Byline will automatically shorten the link before posting the tweet when you’re next online. Instapaper and Read It Later are handled in a similarly robust and offline-friendly way.&lt;/p&gt;

&lt;p&gt;Emailing an article has been improved by embedding the full item content in the message, and sending it without leaving Byline. If you use Evernote you’ll love this, because it lets you save items by sending them to your &lt;a href="http://blog.evernote.com/2010/03/16/emailing-into-evernote-just-got-better/"&gt;Evernote email address&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sexy&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Byline 3 doesn’t try to reinvent the wheel — it just gives it a good polish. All the graphics in the app have been tweaked till they shine by the ridiculously talented Emanuel Sá of &lt;a href="http://iconlicious.com/"&gt;Iconlicious&lt;/a&gt;. The result is a cleaner interface and a more beautiful app.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What’s next?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Big as this update has been, I don’t intend to rest on my laurels. I’m working on more goodies, including a native iPad version of Byline. Watch this space.&lt;/p&gt;</description><link>http://thewaffler.org/post/589229312</link><guid>http://thewaffler.org/post/589229312</guid><pubDate>Tue, 11 May 2010 11:00:13 +0100</pubDate></item><item><title>A Bit About the Basics</title><description>&lt;p&gt;Before I go into more detail about the big new features and interface improvements in Byline 3.0, I’d like to talk a little about the fundamentals.&lt;/p&gt;

&lt;p&gt;The first thing you’ll notice upon opening Byline 3.0 is that syncing is faster than ever. Byline now loads your items all in one go, rather than loading each folder separately. This offers several advantages besides faster syncing, not least the elimination of performance problems experienced by users who have a large number of folders. The only downside to this new approach is that high-volume feeds have the potential to swamp not only the folder they’re in but the whole app — if this is a problem for you, there’s a new setting to restrict syncing to feeds which appear in a particular folder. You’ll still see other folders, provided the feeds inside are also in the designated “main” folder.&lt;/p&gt;

&lt;p&gt;Caching is still a necessarily slow process, but Byline is now much smarter about what it chooses to cache. By default, Byline will automatically cache web pages if it thinks the feed content for that item is incomplete, a determination it makes through statistical analysis of the length and content of each feed’s posts. This efficient little heuristic makes it more likely that the full article will be available at those frustrating moments when you want to read more but you’re offline and the feed only gives you the first few sentences of each article. You’ll also be able to manually enable or disable full web page syncing on a feed-by-feed basis.&lt;/p&gt;

&lt;p&gt;Byline now saves data to permanent storage after every sync, and has a clever new way of keeping track of page caches. This means that if Byline crashes or isn’t given enough time to write data while quitting, the worst that can happen is that you’ll lose the most recent changes to the read, starred, or shared properties of items. You’ll never lose items loaded and cached in the last sync.&lt;/p&gt;

&lt;p&gt;I’m excited about these changes, and I’m sure many of you who use Byline on a regular basis will be too. I’m working hard to get these improvements in your hands as soon as possible.&lt;/p&gt;</description><link>http://thewaffler.org/post/383013861</link><guid>http://thewaffler.org/post/383013861</guid><pubDate>Thu, 11 Feb 2010 03:37:00 +0000</pubDate></item><item><title>On The Horizon</title><description>&lt;p&gt;
Byline 3.0 has been in development for a long time, much longer than I expected due to various distractions and a failure to be realistic about the time I would need to make such sweeping changes to the app. I’ve been reluctant to release information about the project until its final form begins to take shape, which has led to some speculation that development has stalled altogether. I regret creating such an impression, and would like to assure you that Byline 3.0 is alive and well, albeit late. The success of Byline thus far does not mean I no longer care about improving the app; on the contrary, the knowledge that so many people are waiting for Byline 3.0 has only made me feel worse about taking so long over it — and will no doubt make the euphoria of finishing and releasing it even sweeter.
&lt;/p&gt;
&lt;p&gt;
I haven’t reached the home stretch yet, but I feel it’s close enough to start sharing some details. Perhaps I just can’t wait to show off the cool things I’ve been working on. Either way, let’s start with the new “Folders” screen.
&lt;/p&gt;
&lt;div style="text-align:center;margin-top:25px;"&gt;
	&lt;img src="http://www.milobird.com/byline3folders.jpg"/&gt;
&lt;/div&gt;
&lt;p&gt;
The redesign features icons by &lt;a href="http://www.emanuelsa.com/"&gt;Emanuel Sá&lt;/a&gt;, who seems to get more talented every time I work with him. Besides being pretty, the new icons are a little smaller, which allows more rows to appear on screen. The unread totals are shown in grey bubbles on the right — just like Mail, and much clearer and more balanced than before.
&lt;/p&gt;
&lt;p&gt;
The real star of the show, however, are the blue disclosure triangles to the far right of each folder. When tapped, these swivel open to reveal the feeds within, which can finally be browsed individually. I love everything about the way these work, from their iPhone-native appearance and smooth animation to the bare fact that they allow total control over the way you browse without adding another level to the app’s hierarchy.
&lt;/p&gt;
&lt;p&gt;
Finally, you’ll note that Byline’s settings are now within the app. I’ve been considering this for a while, as I get the impression that many iPhone users simply don’t think to look in the main Settings app for third-party settings. In the end, my hand was forced by my desire to add some smart, dynamic new settings which can only be accomplished in-app. I’ll be talking about these in an upcoming post, so keep an eye out over the coming weeks, and in the meantime feel free to &lt;a href="http://twitter.com/home?status=%40phfish%20"&gt;tweet feedback to @phfish&lt;/a&gt;. &lt;/p&gt;</description><link>http://thewaffler.org/post/329440085</link><guid>http://thewaffler.org/post/329440085</guid><pubDate>Mon, 11 Jan 2010 23:31:51 +0000</pubDate></item><item><title>Pushing It</title><description>&lt;p&gt;I’ve been receiving an increasing number of requests for Byline to make use of the new &lt;a href="http://developer.apple.com/iphone/program/sdk/apns.html"&gt;Push Notification service&lt;/a&gt; in iPhone OS 3.0. Many people seem to assume — understandably, given Apple’s enthusiasm — that push notifications are just as effective as allowing apps to run in the background, and that using the service is relatively easy for developers given that Apple provides a large part of the infrastructure. &lt;/p&gt;

&lt;p&gt;Both assumptions are more true for some apps than for others. Neither are very true for Byline, unfortunately.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Benefit&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Push notifications could be used to periodically update Byline’s unread count on the home screen.&lt;/p&gt;

&lt;p&gt;… That’s all. No data can be loaded or processed beyond the notification itself, so Byline would still have to be launched with an internet connection available in order to sync, download and cache the new items. Note also that the updates would be periodic, not truly pushed as soon as new items appear in Google Reader.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Cost&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I would have to set up one or more servers with a high-bandwidth commercial internet connection. I would have to write custom software to receive and store the Google username and password of users who wish to receive push notifications. After that, I’d probably want to consult a lawyer. Then, I’d get the custom software to periodically poll each and every Google Reader account for the total number of unread items. Any changes would be pushed to Apple’s server. And so on, until Google blocks my IP address.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Value&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Like most developers I love being challenged; difficulty alone is not enough to dissuade me from trying something. But a great effort should bring a great result, one which makes the app better for a large proportion of its users, and which justifies using time which could have been spent on other improvements.&lt;/p&gt;

&lt;p&gt;For the vast majority of users, there’s no value in adding push notifications to Byline. Anyone who subscribes to more than a few feeds is likely to have new items appearing in their Google Reader account on a regular basis, so knowing the precise number of unread items awaiting them at all times just isn’t that important.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Apple’s Push Notification service is a good idea, but it does have limitations. It’s not very useful for apps which need to do more while they’re not active than simply attract the user’s attention, and it’s not very practical for developers who don’t control both the app and the web service on which it relies. Still, I’m not complaining — there’s no better solution until background processing becomes feasible, which I don’t see happening until the iPhone gets at least 512MB RAM and a dual-core processor.&lt;/p&gt;</description><link>http://thewaffler.org/post/131782579</link><guid>http://thewaffler.org/post/131782579</guid><pubDate>Sun, 28 Jun 2009 18:21:59 +0100</pubDate></item><item><title>How Not to Design an iPhone Icon</title><description>Byline 2.5 finally saw the light of day last week. The update has had a very positive reception, with the notable exception of the new icon, which has been roundly abused by almost everyone I’ve heard from. Making changes to anything which so many people are familiar with — fond of, even — always provokes a bit of a backlash, but I was surprised by the sheer volume of the complaints I received, and, on reflection, I think they’re justified.
&lt;p&gt;
The new icon is a blunder, one which I find particularly embarrassing because it’s Byline’s third icon in under a year, and I really should have gotten this right by now. Why haven’t I?
&lt;/p&gt;

&lt;table&gt;
&lt;tr&gt;
&lt;td valign="top"&gt;
&lt;strong&gt;Byline 1.0&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;&lt;img src="http://www.milobird.com/bylineicon10.png" style="margin-right:12px;margin-bottom:16px;"/&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;br/&gt;&lt;br/&gt;
The best icons consist of a simple, distinctive visual metaphor which hints at the app’s function. I spent a long time considering suitable metaphors for Byline, but there are no easy answers. The idea of an RSS reader is fairly abstract — a newspaper is the obvious choice, but newspapers tend to be neither simple nor distinctive when depicted at the tiny size required for an iPhone icon. In the end I settled on a modified version of the standard RSS icon, but it proved to be too generic, as dozens of other RSS apps with similar icons began to appear in the App Store.
&lt;br/&gt;&lt;br/&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top"&gt;
&lt;strong&gt;Byline 2.0&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;&lt;img src="http://www.milobird.com/bylineicon20.png" style="margin-right:12px;margin-bottom:16px;"/&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;br/&gt;&lt;br/&gt;
This was beautifully drawn by Everaldo Coelho, but when shrunk to the appropriate size the newspaper is rather indistinct and jagged (as I had feared). There’s just a little too much going on in this icon for it to work in so few pixels. Many users didn’t realise that the object sitting on top of the newspaper was supposed to be a coffee cup, and some found the icon distracting when glancing at their iPhones due to its similarity with the red notification badge. In addition, this icon is not a very good match for the new interface in Byline 2.5.
&lt;br/&gt;&lt;br/&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top"&gt;
&lt;strong&gt;Byline 2.5&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;&lt;img src="http://www.milobird.com/bylineicon25.png" style="margin-right:12px;margin-bottom:16px;"/&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;br/&gt;&lt;br/&gt;
I thought that a bold typographic design would make up for the lack of a visual metaphor, but I should have known better. This is more logo than icon, and logos — especially unfamiliar ones — have no place on the iPhone. The black background makes it appear to have an unusual shape when viewed on the iPhone’s home screen; it stands out, but at the expense of being wilfully inconsistent with other icons. I don’t think the design is actually ugly, it’s just entirely inappropriate as an icon. I have no idea how I let myself think it was a good idea.
&lt;br/&gt;&lt;br/&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;strong&gt;Byline 2.5.1?&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;
Much as I hate to change the icon a third time, I almost certainly will, and swiftly. I’ll try to get it right this time.</description><link>http://thewaffler.org/post/103333457</link><guid>http://thewaffler.org/post/103333457</guid><pubDate>Mon, 04 May 2009 15:35:32 +0100</pubDate></item><item><title>Slowly Getting Faster</title><description>&lt;p&gt;Byline went from 1.0 to 2.0 in little over three months, gaining along the way a totally redesigned interface, support for folders, a built-in web browser, and a host of other features. Byline 2.5, on the other hand, offers very few new features, yet when it is released in mid-April it will have been a whole six months since 2.0. Why?&lt;/p&gt;

&lt;p&gt;Part of the answer is boring; other programming projects, moving house and general sloth all contributed to a much longer development time than I expected. But the other part of the answer is much more interesting — or at least slightly less boring, I hope.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What was wrong with Byline 1.0?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Byline 1.0 was the result of only three months of frenzied development. It had a number of shortcomings; one of the main ones was that it would only sync twenty-five items from each list at a time. When syncing each list it would initiate a download of data for the newest twenty-five items, wait for the download to finish, and then use the data to update the list. This was easy to code, as all the &lt;a href="http://en.wikipedia.org/wiki/Atom_(standard)"&gt;Atom&lt;/a&gt; parsing and updating of the data model and user interface could be done in a single step.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So what &lt;i&gt;was&lt;/i&gt; wrong with Byline 1.0?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Nothing! This method of syncing worked well, because Byline only ever had to process twenty-five new items at a time. There wasn’t a problem until Byline 1.0.2, which offered an option to sync up to two hundred items at a time from each list. Suddenly, the processing time required to parse the data for a whole list in one big chunk was long enough to make the user interface freeze noticeably. The processor would sit idle until the data had downloaded in full, and then kick into overdrive, delaying the whole syncing process and leaving the interface unresponsive for several seconds.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Should I have done things differently from the beginning?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not really. Less code is better code, and &lt;a href="http://www.codinghorror.com/blog/archives/000878.html"&gt;the best code is no code&lt;/a&gt;. Most of the time. In rare cases fast code is better than less code, but it’s usually impossible to work that out before you’ve written the concise version and tested it to death with performance tools.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What have I done to solve the problem?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I’ve implemented progressive syncing. In other words, as soon as Byline begins to receive data for the list it’s syncing, it starts parsing the data and updating the list. New items are added gradually starting from the top of the list, and a heuristic is applied to determine which items should be removed from the list as the sync proceeds, so that you don’t see a jumbled mess if you view the list while it’s syncing. Because the data is parsed a little at a time the user interface never becomes unresponsive, and you can start browsing new items straight away, as soon as they appear.&lt;/p&gt;

&lt;p&gt;The only downside is that there is a performance penalty incurred by parsing the data in small chunks and updating the user interface gradually throughout the syncing process. This results in marginally slower syncing over a very fast Wi-Fi connection, when the data would typically load very quickly anyway and processor speed is the major bottleneck. Over a 3G or Edge connection syncing is now faster, as the processor gets put to work straight away rather than waiting around for significant periods of time while the data it needs is downloaded in full.&lt;/p&gt;

&lt;p&gt;In any case, it all &lt;em&gt;feels&lt;/em&gt; faster now that the user interface is responsive.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What else is new in Byline 2.5?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Most other improvements are also related to performance. Byline is now much more reliable when handling large numbers of folders, and should be less prone to forgetting data between runs, a problem which was caused by the length of time it took to write the data model to permanent storage.&lt;/p&gt;

&lt;p&gt;One major new feature is a button to toggle a “sort by feed” mode — this should make quite a few people happy! Other than that, you’ll have to wait and see … but not for very much longer.&lt;/p&gt;</description><link>http://thewaffler.org/post/89532948</link><guid>http://thewaffler.org/post/89532948</guid><pubDate>Wed, 25 Mar 2009 00:25:56 +0000</pubDate></item><item><title>First draft of Byline’s new interface design.</title><description>&lt;img src="http://28.media.tumblr.com/0W2JgzqtbkcdbsjdHlefWNjdo1_r3_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;First draft of Byline’s new interface design.&lt;/p&gt;</description><link>http://thewaffler.org/post/81118612</link><guid>http://thewaffler.org/post/81118612</guid><pubDate>Tue, 24 Feb 2009 17:00:00 +0000</pubDate></item><item><title>An attempt to clarify Byline’s settings for offline browsing.</title><description>&lt;img src="http://29.media.tumblr.com/0W2Jgzqtbjb0actlEHHbtKvho1_400.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;An attempt to clarify Byline’s settings for offline browsing.&lt;/p&gt;</description><link>http://thewaffler.org/post/74031249</link><guid>http://thewaffler.org/post/74031249</guid><pubDate>Thu, 29 Jan 2009 13:27:55 +0000</pubDate></item><item><title>SecuritySpy Screensaver</title><description>&lt;p&gt;A free Mac OS X screensaver which displays live video from one or more servers running Ben Software’s &lt;a href="http://www.bensoftware.com/ss/"&gt;SecuritySpy&lt;/a&gt;. I’m hosting this here temporarily — it’ll be moved to the &lt;a href="http://www.phantomfish.com"&gt;Phantom Fish&lt;/a&gt; website to coincide with the release of the SecuritySpy client for iPhone.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.milobird.com/SecuritySpy.saver.zip"&gt;Download version 1.3&lt;/a&gt; (Snow Leopard only), released 26th October 2009, &lt;a href="http://www.milobird.com/LeopardSecuritySpy.saver.zip"&gt;version 1.2&lt;/a&gt; (Leopard only), or &lt;a href="http://www.milobird.com/TigerSecuritySpy.saver.zip"&gt;version 1.0&lt;/a&gt; (Tiger only).&lt;/p&gt;

&lt;p&gt;You can configure the screensaver to connect to as many SecuritySpy servers as you like. The servers can be running over the internet, over your local network, or on your own Mac (using the address “localhost”).&lt;/p&gt;

&lt;p&gt;To set up SecuritySpy to act as a server, please follow the advice on &lt;a href="http://www.bensoftware.com/ss/installationmanual/setupguide.html"&gt;this page&lt;/a&gt;. If SecuritySpy is running on the same Mac as the screensaver, you only need to follow the first bullet point, which describes how to enable SecuritySpy’s web server.&lt;/p&gt;</description><link>http://thewaffler.org/post/73277638</link><guid>http://thewaffler.org/post/73277638</guid><pubDate>Mon, 26 Jan 2009 18:08:00 +0000</pubDate></item></channel></rss>
