<?xml version="1.0" encoding="UTF-8"?>


<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns="http://purl.org/rss/1.0/">

<channel rdf:about="http://earthlingsoft.net/ssp/blog/">
<title>Quarter Life Crisis/Software</title>
<link>http://earthlingsoft.net/ssp/blog/archives/software</link>
<image>
<title>Quarter Life Crisis</title>
<url>http://earthlingsoft.net/ssp/blog/includes/qlc.gif</url>
<link>http://earthlingsoft.net/ssp/blog/</link>
</image>
<description>Software-related posts from Quarter Life Crisis</description>
<dc:language>en</dc:language>
<dc:creator>Sven-S. Porst (ssp-web@earthlingsoft.net)</dc:creator>
<dc:date>2010-02-02T23:59:03+01:00</dc:date>
<admin:generatorAgent rdf:resource="http://www.movabletype.org/?v=5.01" />

<items>
<rdf:Seq>
<rdf:li rdf:resource="http://earthlingsoft.net/ssp/blog/2010/02/nsconference_day_2" />

<rdf:li rdf:resource="http://earthlingsoft.net/ssp/blog/2010/02/nsconference_day_1" />

<rdf:li rdf:resource="http://earthlingsoft.net/ssp/blog/2010/01/transmission" />

<rdf:li rdf:resource="http://earthlingsoft.net/ssp/blog/2009/12/graphviz_omnigraffle" />

<rdf:li rdf:resource="http://earthlingsoft.net/ssp/blog/2009/12/graphviz" />

<rdf:li rdf:resource="http://earthlingsoft.net/ssp/blog/2009/10/bookmark_advertiser" />

<rdf:li rdf:resource="http://earthlingsoft.net/ssp/blog/2009/10/flame" />

<rdf:li rdf:resource="http://earthlingsoft.net/ssp/blog/2009/07/nice_touches" />

<rdf:li rdf:resource="http://earthlingsoft.net/ssp/blog/2009/06/safari_reloaded" />

<rdf:li rdf:resource="http://earthlingsoft.net/ssp/blog/2009/02/safari_4b1" />
</rdf:Seq>
</items>

</channel>


<item rdf:about="http://earthlingsoft.net/ssp/blog/2010/02/nsconference_day_2">
<title>NSConference Day 2</title>
<link>http://earthlingsoft.net/ssp/blog/2010/02/nsconference_day_2</link>
<description><![CDATA[<p>
Continuing <a href="http://earthlingsoft.net/ssp/blog/2010/02/nsconference_day_1">yesterday&#8217;s notes</a> on <a href="http://nsconference.com/">NSConference</a> in Reading.
</p>

<ul>
<li>
Unfortunately <a href="http://mattgemmell.com/">Matt Gemmell</a> had fallen ill and couldn&#8217;t give his talk on Tuesday morning. A Get Well Soon card made the rounds instead.
</li>
<li>
<a href="http://iphonedevelopment.blogspot.com/">Jeff LaMarche</a> had to take over the early session instead, running it with a lack of sleep and fresh clothes thanks to the less fortunate sides of air travel. He spoke about fiddling with the Cocoa runtime to dynamically analyse classes or to add methods to your own classes while running. I keep thinking this stuff sounds very clever and neat but that I just don&#8217;t need it. And - as Jeff pointed out as well - it&#8217;s probably bad to use such techniques just because they&#8217;re cool. You need to get real benefits from them.
</li>
<li>
I tried out Tom and my <a href="http://earthlingsoft.net/ssp/blog/2009/10/flame">Flame</a> iPhone Bonjour Browser during the talks. With dozens of Macs and iPhones full of geeky software on the network, it was a great opportunity to see how well the application works there. While doing so, I discovered numerous service names which we had never seen before and which are not in the <a href="http://dns-sd.org/ServiceTypes.html">list</a> at the DNS-SD website (yet). I tried to note all of them and hoped to figure out whet they are about. In case you can offer a description or link indicating what any of the following types is for, do me a favour and leave a comment: qmp4,  swblic, rsagent (could this be a Windows virus?), <del title="some iPhone todo app for synchronising todos with iCal via WLAN">todogwa</del>, <del title="iStat for iPhone">istatrmt</del>, aicheck, scan-target, <del title="TimeLog">timelog</del>, <del title="friedEgg Touch">friedegg</del>.
</li>
<li>
In the next talk, <a href="http://losingfight.com/blog/">Andy Finnell</a>. spoke about Core Image, going into the details of creating a watercolour brush. The physics modelling of the liquid and pigments in this was quite involved, possibly distracting from the Core Image aspects. OpenCL was touched in the talk which I found particularly interesting.
</li>
<li>
I tried to figure out more about <a href="http://www.khronos.org/opencl/">OpenCL</a> [<a href="http://en.wikipedia.org/wiki/OpenCL">Wikipedia</a>] and its capabilities. Andy pointed me to <a href="http://www.macanics.net/">Drew</a> who apparently touched the topic in his workshop on parallel processing on Sunday. And both of them pointed me to the <a href="http://www.macresearch.org/">Mac Research</a> site and the <a href="http://www.macresearch.org/opencl">tutorials</a> there. A colleague of mine is doing some insane number crunching and was trying to figure out whether it can be sped up by going beyond straight C. Using SSE seemed a bit crazy as it will mainly make the code very incompatible. OpenCL, being both &#8216;open&#8217; and  abstracted from the actual hardware could fit the bill perfectly there. It just seems that it&#8217;s so new that people don&#8217;t have much experience using it yet.
</li>
<li>
In the next session two somewhat ad-hoc talks came on to step in for Matt Gemmell. <a href="http://www.dribin.org/dave/">Dave Dribin</a> tried to earn some more bashing on twitter by speaking about version control systems and pointing out that Subversion is still king because it&#8217;s very widely supported while git is the king of hearts, in part thanks to <a href="http://www.github.com">github</a>, but it can still be confusing as hell [I agree, but to be honest I have the impression that git makes a surprisingly big effort to help the user at times - for a tool coming from Linux-land anyway - and even with next to no understanding of git I managed to do much more with it than with Subversion; the <a href="http://progit.org/book/">Pro Git book</a> is an invaluable resource for that] while Mercurial/hg [Hint: it&#8217;s stupid to <em>not</em> name your application and executable the same, no matter how &#8216;clever&#8217; it seemed at the time] is supposedly cleaner but nobody gives a damn. I think I had seen the slides for this talk before, so I didn&#8217;t find it particularly interesting.
</li>
<li>
Next, <a href="http://thaesofereode.info/">Graham Lee</a> spoke about code signing. I went through the pain of figuring that out for myself when it was new (and there was no neat popup menu in the build settings to do it). But Graham also showed a little demo app (nominate it for an ADA if you can! - Mac software these days needs to be &#8216;focused&#8217;.) illustrating how you can check the consistency of your application&#8217;s in-memory code at runtime thanks to code signing. Ultimately code signing is a double edged sword (you may appreciate knowing that an unaltered application is running when processing sensitive data, you&#8217;ll hate it if you need to modify someone else&#8217;s application to do its job in a way that suits your needs).
</li>
<li>
Graham&#8217;s talk also came with friendly piss-takes at the name of <a href="http://rentzsch.com/">&#8216;Jon&#8217; &#8216;Wolf&#8217; &#8216;Wrench&#8217;</a>, or whatever. The &#8216;Wolf&#8217; part keeps reminding me of people calling Mozart &#8216;Wolferl&#8217; (in <a href="http://www.imdb.com/title/tt0086879/">Amadeus</a> I think), so I&#8217;m not a big fan of it.
</li>
<li>
Incidentally I went on to discuss some <a href="http://github.com/rentzsch/clicktoflash/">clicktoflash</a> stuff with Jon during lunch. As time was running fairly quickly and the network hated us we didn&#8217;t manage to cover everything and perhaps we&#8217;ll need to discuss things a bit more until everybody&#8217;s on the same page. Which preferably should be <a href="http://github.com/ssp/clicktoflash/tree/cutting-edge">my cutting-edge page</a>, that still comes with a problem or two at the moment but could be a reasonable way to go forward. Things we could do with help for are <a href="http://rentzsch.lighthouseapp.com/projects/24342/tickets/501-104-compatibility">running on X.4</a> (I don&#8217;t really care, but I suspect this might be easy to fix <em>if</em> one is able to run the project there in a debugger) and for figuring out how/why the <a href="http://rentzsch.lighthouseapp.com/projects/24342/tickets/507">sIFR code</a> seems to have broken in refactoring.
</li>
<li>
Next on stage was <a href="http://www.bignerdranch.com/instructors/hillegass.shtml">Aaron Hillegass</a> who&#8217;s known for giving great courses and really does wear a &#8216;cowboy&#8217; hat on stage. He started off with iPad references and saying that local data is a dead concept and the future is in the cloud with local drives just being caches and pointing out the obvious benefits [no fear of data loss] without going into nasty details [how screwed will you be on network FAIL? what about privacy? (<q>you&#8217;ll get over it</q>) or encryption?] while mentioning others [like vendor lock-in, that&#8217;s an obvious problem in the Apple universe but frequently ignored my Mac developers]. Aaron then went on to present a <a href="http://github.com/hillegass/BNRPersistence">persistence framework he has just written</a> which could be superior to CoreData in some way and is designed for both the Mac and the iPhone as well as for being simple and fast. To be honest I didn&#8217;t quite get how both parts of his talk matched up apart from being about data. If his framework included things like synchronisation and conflict management, I could see how it&#8217;d fit into the &#8216;cloud&#8217; picture but at the moment it seems to do local persistence only.
</li>
<li>
The final session was mysteriously titled <q>Cocoa Rumble</q> which one could enter for beforehand. It turned out Scotty drew our names from a hat and assigned one attendee to each speaker, ultimately creating three groups of six people each. Then he put a bunch of &#8216;Core&#8217; frameworks in the hat, handing one to each group with the task of using 30 minutes to create a presentation making the point why <em>that</em> framework is the framework of the year. The drawn frameworks were CoreText, CoreAudio and CoreAnimation. Let&#8217;s say that was a rather uneven choice as in terms of flashy results and ease of use CoreAnimation should be the default winner. While CoreText will neither be known nor explicitly needed by most even if may play an important role for the Mac&#8217;s appearance. Similarly CoreAudio is unpleasant to work with and I remember it as painful - most likely for the good reason of the low-latency they try to achieve.
</li>
<li>
<p>
It turned out I ended up on the CoreAudio group with <a href="http://rentzsch.tumblr.com/">Rentzsch</a>, <a href="http://iphonedevelopment.blogspot.com/">Jeff Lamarche</a> (who had recovered his luggage by then!), <a href="http://www.macanics.net/">Drew</a>, <a href="http://www.danieltull.co.uk/">Daniel Tull</a> and <a href="http://danielkennett.org/">Daniel Kennett</a>. We were working frantically to whip up a kick-ass presentation:
</p><p class="centred">
<a href="http://earthlingsoft.net/ssp/blog/graphics/NSConferenceTeamCoreAudio.jpeg" title="Click to enlarge."><img src="http://earthlingsoft.net/ssp/blog/graphics/NSConferenceTeamCoreAudio.jpeg" style="width:95%;max-width:600px;max-height:450px;" alt="Team CoreAudio working on their presentation at NSConference 2010"></a>
</p><p>
&#8230; with a great slogan <q>CoreAudio is the API of Rock Stars</q> [Alex Rozanski has <a href="http://perspx.com/blog/archives/1253/nsconf-2010-mac-developer-conference-day-2/">a good photo of rentzsch presenting that</a>], proving how it kicks ass because it&#8217;s essential for iTunes <span title="Or - for those who paid attention during rentzsch's talk - running otool -L /Applications/iTunes.app/Contents/MacOS/iTunes | grep CoreAudio | wc with a non-zero result may do the trick">(of course we knew iTunes existed before CoreAudio as Uli <a href="http://twitter.com/uliwitness/status/8549363957">was keen to point out</a>, yet I doubt it&#8217;s playing a tone on my machine without CoreAudio)</span>, which is essential for Podcasts, which are essential for <a href="http://www.mac-developer-network.com/" title="Mac Developer Network">MDN</a> which is essential for NSConference. A great argument I think. Bashing the other APIs was a good idea as well, even though I still think that the slide saying that CoreText is an API for <q>girly men</q> with <a href="http://earthlingsoft.net/ssp/zapfino/">Zapfino</a> used to illustrate it is an insult both in terms of sexism and to the typeface. Probably another good indicator that having more than 2% female attendees wouldn&#8217;t be the worst of ideas.
</p><p>
Our presentation finished with all of us waving our MacBooks to create a bunch of sinewaves using <a href="http://earthlingsoft.net/Skip%20Checker/" title="a.k.a.: The one with the ugly icon">SkipChecker</a>. I wouldn&#8217;t have guessed that this painful excursion into the world of CoreAudio would make it to the &#8216;big stage&#8217; one day&#8230; incredibly dorky, I suppose, but fun.
</p>
</li>
<li>
And, yeah, needless to say that the CoreAnimation people won: an originally sealed set of WWDC DVDs from 2002 or so. Congratulations! More generally I thought their presentation was fun, but a bit too long. And I was rather disappointed by the CoreText team because their technology totally has the potential to outdo CoreAudio in terms of on-screen sexiness.
</li>
<li>
While we were preparing the presentations, people were invited to share their favourite little &#8216;tricks&#8217; with the audience. Unfortunately we were too busy pondering our own presentation to follow what was going on and the hints were said to be quite helpful. Notes on this didn&#8217;t seem to make it to the SubEthaEdit file, so I&#8217;m hoping videos will be available one day. &#8212; Uh, and someone please tell rentzsch that there is a difference between giving a short hint and a ten minute presentation of one&#8217;s pet project&#8230;
</li>
<li>
With all those sessions &#8216;done&#8217;, the drinking could begin. I happened to speak to the guys from <a href="http://www.shinyfrog.net/">Shiny Frog</a> who are doing the delicious client <a href="http://www.delibarapp.com/">delibar</a>. As I contributed code to the much more limited <a href="http://ianhenderson.org/delimport.html">delimport</a> application (actually I have a 64bit capable version of it running here already) which creates a backup copy of your delicious bookmarks and adds them to your Spotlight index, it was cool to talk to them. They&#8217;ve put an incredible amount of work into their user interface and, unfortunately, had to report that Yahoo &#8216;upgraded&#8217; delicious&#8217; API to something using OAuth and being horribly complicated. To make things more fun, it seems that Yahoo preferred not to tell anybody about this and randomly allow use of the &#8216;old&#8217; API for old accounts. To make things even less worthwhile it sounds like the &#8216;new&#8217; API can&#8217;t actually <em>do</em> more than the old one could (with a particular and very bandwidth-intensive shortcoming of the old API being that it won&#8217;t let you do requests like <q>send me all changed bookmarks since a given date</q> but always forces you to download <em>all</em> bookmarks, which can amount to a couple of megabytes if you&#8217;ve been using delicious for a while, to achieve that). 
</li>
<li>
Later we had dinner at the &#8216;nearby&#8217; Horse &amp; Groom pub  (Scotty even claimed one could <em>walk</em> there and lived up to that claim) with some local beers and nice pieces of steak. To the delight of the assembled geeks the landlord brought up some little logic games on the height of coins, turning around glasses and toothpicks which kept people busy throughout the evening. I even remember winning a game of &#8216;table-rugby&#8217; shortly before we left. I must have been 20 years younger and 10000km away when I last did that.
</li>
</ul>

<h4 id="thanks">Thanks</h4>

<p>
Many thanks go to Scotty and Tim for making NSConference happen. Without doubt they put in some great effort there. Let&#8217;s see how quickly they recover from NSConference US to switch from &#8216;I&#8217;ll never do this again&#8217; to &#8216;When can I do this again?&#8217; mode.
</p><p>
Many thanks also to <a href="http://mikeabdullah.net/">Mike</a> for being my host in Reading. 
</p><p>
Further thanks go to <a href="http://www.id.com/team.html">Chris Walters</a> who had done the pub reconnaissance and generously offered countless lifts to us and many other participants in his big car while seeming to survive on glasses of Tabasco (with tomato juice) night after night.
</p>
]]></description>
<dc:subject>Software</dc:subject>
<dc:creator>ssp</dc:creator>
<dc:date>2010-02-02T23:59:03+01:00</dc:date>
</item>

<item rdf:about="http://earthlingsoft.net/ssp/blog/2010/02/nsconference_day_1">
<title>NSConference Day 1</title>
<link>http://earthlingsoft.net/ssp/blog/2010/02/nsconference_day_1</link>
<description><![CDATA[<p>
The first day of <a href="http://nsconference.com/">NSConference</a> was interesting. Just some short notes to help my memory:
</p><ul>
<li>
Too much death and too little beef in Mike Lee&#8217;s keynote. While making valid points, I think I&#8217;m not American enough to really appreciate this &#8216;emotional&#8217; address, even in a keynote that&#8217;s supposed to set the mood.
</li><li>
Debugging fun with <a href="http://rentzsch.tumblr.com/">Wolf Rentzsch</a>, pointing out all (?) the ways to poke a non-running and a running application on the Mac. Probably starting out a bit too basic and thus missing out on some of the good stuff which must be out there but which I don&#8217;t know. Including respect for the awesome / magic <a href="http://ridiculousfish.com/hexfiend/">HexFiend</a>, disassembly using <code>otool -tV</code>, the otool postprocessor <a href="http://otx.osxninja.com/">otx</a> and the various techniques for getting your own code into other applications.
</li><li>
People&#8217;s notetaking of that in SubEthaEdit is awesome and will be useful to find / use the examples shown in the talks. Thanks to <a href="http://www.zathras.de/blog.htm">Uli Kusterer</a> for setting all that up. 
</li><li>
It&#8217;s probably a given: The hotel&#8217;s Wifi with a weird login page that seems super-slow on the iPod and <em>loves</em> forcing you to frequently re-enter of all info to use the network was a bit annoying. As were the common losses of signal. On the other hand, I had expected much worse for the catastrophic scenario of well over a hundred people with at least one wirelessly networked device descending on a venue at the same time.
</li><li>
<a href="http://www.dribin.org/dave/">Dave Dribin</a> on clean code: Good to be reminded of many of the things there. Again, nothing overly non-obvious but it&#8217;s always good to be reminded of a clean style  and pointing at the easily made mistakes. Not all of his points were equally good and one has the impression he may be teased about his <span title="Of course he didn't actually say it this way, it's more his least favourite">&#8216;KVO is evil&#8217; stance</span> and singleton hate, which became a bit of a running gag, for a while.
</li><li>
I was too busy watching the little lunch-time talks to manage to get a dessert, bummer!
</li><li>
<a href="http://www.macanics.net/">Drew McCormack</a>  about data presentation: Goes through many styles and points out how they&#8217;re all lists. Points to the <a href="http://code.google.com/p/core-plot/">core-plot</a> graphing framework project he helps run. Interesting stuff, even though I currently have no use for it. Having a way to draw graphs and do it performantly will be cool. The talk also pointed out the existence of <code>NSCollectionView</code> to me, but it sounded like it&#8217;s not better than a table view if you have a really long table.
</li><li>
Final talk was by <a href="http://www.cimgf.com/">Marcus Zarra on CoreAnimation. Interesting but not overly exciting if you&#8217;ve used CoreAnimation before, which he has <a href="http://www.cimgf.com/category/core-animation/">bunch of posts on on his site</a>. I had to laugh when he said most of the code in his demo app was for drawing the path he&#8217;s drawing and that he had to program it from a sketch he made. Totally reminded me of <a href="http://earthlingsoft.net/code/ESCursors/ArrowDrawing.jpeg">my efforts</a> when creating <a href="http://earthlingsoft.net/code/#escursors">ESCursors</a>.
</li><li>
Dinner was fine with special kudos to <a href="http://www.timisted.net/">Tim</a> for having gone through the effort of making sure we actually get good wines with it. 
</li><li>
Now if only I could remember the names of all the people I spoke to&#8230;
</li><li>
<a href="http://perspx.com/blog/archives/1210/nsconference-2010-mac-developer-conference-day-1">Notes with photos by Alex Rozanski</a>.
</li><li>
There seemed to be many iPhone people at the conference and many who are relatively new to Cocoa.
</li><li>
One thing I find hard when speaking with iPhone people is figuring out how to speak to them. I have a fairly low opinion of most iPhone applications, a sentiment which doesn&#8217;t seem too far off the general perception. And creating them probably is where the money is because people with bad taste and money will hire iPhone developers to create them. That&#8217;s certainly not my style of doing things and it&#8217;s hard to talk about people (after all they seem reasonable and probably don&#8217;t think they&#8217;re creating the greatest thing in the world when making some junk advertising app) about this topic.
</li><li>
<em>Of course</em> the missing semicolon in <code>[[NSConference alloc] init]</code> on the smart banners that decorated the stage made people talk. For my part, I welcome our new semicolon-less-C-overlords. Certainly makes things less painful. [I really recommend compiling with LLVM by the way, because its error messages for this stuff are just much more human-comprehensible].
</li>
</ul>
<p>
Read on for <a href="http://earthlingsoft.net/ssp/blog/2010/02/nsconference_day_2">notes on the second day&#8230;</a>
</p>
]]></description>
<dc:subject>Software</dc:subject>
<dc:creator>ssp</dc:creator>
<dc:date>2010-02-01T23:59:42+01:00</dc:date>
</item>

<item rdf:about="http://earthlingsoft.net/ssp/blog/2010/01/transmission">
<title>Transmission</title>
<link>http://earthlingsoft.net/ssp/blog/2010/01/transmission</link>
<description><![CDATA[<p>
File sharing used to be cool and exciting a decade ago. Not only did the very fact that it worked and enabled you to both find and retrieve files from &#8216;the intertubes&#8217; amaze, it also looked like a dawn of a new era and stretched imagination: the very real problem that some music should remain unavailable or condemned to residing on an old tape seemed solved, simply because even the most eclectic songs seemed to exist on <em>someone</em>&#8217;s hard drive <em>somewhere</em>, with you being able to find and get it.
</p><p>
I think the site giving the best results back then was called <a href="http://en.wikipedia.org/wiki/Audiogalaxy">Audiogalaxy</a> - and has duly been destroyed by capitalism since. As far as I can tell, the focus in file sharing then shifted to services/protocols like <a href="http://en.wikipedia.org/wiki/Gnutella">Gnutella</a> or <a href="http://en.wikipedia.org/wiki/Amule">aMule</a>. It also seemed to shift from the wonderful world of being able to find just <em>that</em> obscure song from the mix tape your friend gave you a decade ago to a world which focused on providing a gazillion copies of the latest Britney Spears album and shitty quality Star Wars recording from a cinema screen. (Plus porn, of course. I think file sharing clients are the first software in which I understood why &#8216;childsafe&#8217; features <em>may</em> be useful: pretty much any term you can think of seems to have a kinky double-entendre that can be used for a porn title.)
</p><p>
And not only did the content become lame, the software was even worse. There seemed to be an unwritten rule that file sharing clients need to be horrible to use, sport huge windows full of incomprehensible/useless buttons and be obviously &#8216;cross platform&#8217; in the worst way possible. And that&#8217;s before one mentions the cross-platform horror known as Java which successfully mixes mis-sized GUIs with humongous memory consumption. I was not impressed. It wasn&#8217;t fun. It wasn&#8217;t useful.
</p><p>
It was a shame because file sharing generally is a good thing. For some reason (giving them the benefit of the doubt I&#8217;ll assume that computer and business people are not smart enough to make this FAIL intentionally but that we&#8217;re simply seeing technical incompetence here&#8230;) file sharing software has always sucked horribly. Try transferring a 10GB video recording to a friend and unless you have a very good network connection <em>as well</em> as a fair bit of technical knowledge, you&#8217;ll find this supposedly simple technical task very difficult. Try transferring a 30MB file to a thousand people and you may need to think a bit about your web server&#8217;s speed and bandwidth limitations first. It&#8217;s a mess, it&#8217;s a lot of effort, it&#8217;s potentially expensive.
<p></p>

<p><a href="http://en.wikipedia.org/wiki/BitTorrent_(protocol)">BitTorrent</a> is one of the technological answers to these kinds of problems, I think. It uses file sharing technology to distribute files while avoiding the shenanigans about searching or hosting the actual materials which may be illegal in a <span title="actually criminal, like child pornography">serious or <span title="make lawyers and corporations rich, like music">less serious</a> way. I&#8217;ve been fascinated by that idea for a while, particularly the community aspect, the idea that many people cooperate and give their upload bandwidth, so other people can get a file quickly without needing an expensive server. And then people who have downloaded the file &#8216;giving back&#8217; by providing the file to others who want it as well later on. It seems like a smart way to solve the problem.
</p><p>
But the software situation isn&#8217;t great either. I think the first BitTorrent client I saw was Azureus (apparently called <a href="http://en.wikipedia.org/wiki/Vuze">Vuze</a> these days) which I can only describe as a huge slow Java mess. Someone pointed me to the  <a href="http://www.bitsonwheels.com/">Bits on Wheels</a> client on the Mac for downloading one of those SXSW torrents (another nice idea which might just be impossible/too expensive without torrent technology) and it had a funky (but I guess mostly useless) 3D display of the files transferred. But development of that stopped. 
</p><p>
<a href="http://earthlingsoft.net/ssp/blog/graphics/Transmission.png" title="Click to enlarge."><img src="http://earthlingsoft.net/ssp/blog/graphics/Transmission.png" style="height:128px;width:128px;" alt="Transmission Icon"></a>
When looking for another client later on, I discovered <a href="http://www.transmissionbt.com/">Transmission</a>. And I was impressed (which, as regular readers will know, is rare) because it&#8217;s a refreshingly no-nonsense piece of software. First and foremost it puts no crap between that torrent-file you&#8217;ve got and the download starting. It has a simple user interface focusing on the important points and even containing a &#8216;simplified&#8217; way  of displaying things without all the nasty details, making a torrent download look just like a download from the web. I liked it a lot because it did away with the pain and suffering I connected with GUIs for file sharing clients. Even more amazing: Transmission actually <em>is</em> an open source cross-platform project. Unlike many others, however, it does make the effort of using the native GUI technologies for the platform in question, thus enabling themselves to provide a good user experience.
</p><p>
To give something back to the project, I thought I could provide a German localisation. I thought that&#8217;d be interesting, both because the project isn&#8217;t tiny and also because file sharing is a strange area with a lot of odd terminology which could be a challenge to localise. As I see Transmission as a BitTorrent client for the technically uninclined, I wanted to create a localisation that&#8217;s as un-technical as possible. I wanted to avoid odd file sharing terms and try to find reasonable German expressions for what&#8217;s going on. 
</p><p>
Doing so proved a bit tricky in some places. Both because I had to read up on some of the technical details that hide in the more advanced areas of the application. And because some terms needed a bit of pondering to find a reasonable solution for them. The most visible one of those is the &#8216;upload&#8217;/&#8217;download&#8217; pair. It&#8217;s really tricky because it seems that it&#8217;s considered all right on the Mac platform to simply use the noun &#8216;Download&#8217; in German these days. However, the same doesn&#8217;t seem to be true for &#8216;Upload&#8217;, nor for using &#8216;download&#8217; as a verb, as that would end up being a rather strange &#8216;downloaden&#8217;. Hence other terms were needed, and I settled  for <span lang="de">&#8216;Laden&#8217;/&#8217;Senden&#8217;</span>, the standard terminology Apple use for network transfers. However I wasn&#8217;t sure whether the short form of &#8216;L&#8217; and &#8216;S&#8217; for those would have been comprehensible.
</p><p>
My German localisation is part of the Transmission since version 1.80. While I checked and double checked everything there may still be some glitches or perhaps ideas how some terms could be localised more appropriately.
</p><p>
While I found it hard to get in touch with the Transmission people (I&#8217;m an e-mail person and they seem to be into that IRC thing which I completely fail to &#8216;get&#8217; - it seems like twitter with the additional downside that you can miss messages and the upside that it worked in the 1980s), I ended up with a reasonably good impression localisation-wise. Most projects&#8217; efforts on localisation seem rather half-assed, particularly in the open source area (hello Sparkle&#8230;). There may be downright mistakes or careless changes of localisation keys and typically there is a real lack of comments for the strings used in the .strings files of the localisation which can make it really hard to figure out where the string in question appears and what it will be used for. The comments in Transmission&#8217;s .strings, however, files were very complete and helpful and only a few details needed to be tweaked otherwise, making work very smooth.
</p><p class="centred">
<a href="http://earthlingsoft.net/ssp/blog/graphics/Transmission%20Main%20Window.png" title="Click to enlarge."><img src="http://earthlingsoft.net/ssp/blog/graphics/Transmission%20Main%20Window.png" style="width:95%;max-width:496px;max-height:480px;" alt="Transmission main window in German (and yeah, you absolutely want to get and watch that 26C3 Wikileaks torrent!)" lang="de"></a>
</p><p></p>
]]></description>
<dc:subject>Software</dc:subject>
<dc:creator>ssp</dc:creator>
<dc:date>2010-01-28T10:21:50+01:00</dc:date>
</item>

<item rdf:about="http://earthlingsoft.net/ssp/blog/2009/12/graphviz_omnigraffle">
<title>GraphViz &amp; OmniGraffle</title>
<link>http://earthlingsoft.net/ssp/blog/2009/12/graphviz_omnigraffle</link>
<description><![CDATA[<p>
I few days ago <a href="http://earthlingsoft.net/ssp/blog/2009/12/graphviz" title="GraphViz (Quarter Life Crisis)">I wrote about GraphViz</a> and how it&#8217;s an amazing software that lets you create interesting graphs from simple text input files. I also lamented how its documentation is pretty much unreadable and actually controlling the output enough to get good-looking graphs is impossible, both in terms of the &#8216;control&#8217; and the &#8216;good looks&#8217; you get.
</p><p>
While trying to figure out a thing or two about GraphViz, some search results told me that <a href="http://www.omnigroup.com/applications/OmniGraffle/">OmniGraffle</a> can import the GraphViz file format. OmniGraffle is one of those applications which has earned a rather high reputation in the Mac software world for being a tool that makes it easy to create good looking diagrams. So far I only had a <a href="http://earthlingsoft.net/ssp/blog/2005/02/8021x">single excuse</a> to actually try and use OmniGraffle and this seemed like a good opportunity for digging in a bit more deeply.
</p><p>
<img src="http://earthlingsoft.net/ssp/blog/graphics2/OmniGraffleIcon.png" style="width:128px;height:128px;" alt="OmniGraffle Icon">
Two things made OmniGraffle stand out in my opinion: First, the fact that it makes it easy to create reasonable diagrams by defaulting to all sorts of smart &#8216;magnetic&#8217; behaviour when joining up graphs and thus letting you focus on the the graph you want to draw rather than forcing you to put all your attention towards getting the lines in it &#8216;just right&#8217;. Second, the fact that OmniGraffle is also tuned for a reasonable amount of &#8216;pretty&#8217;. Not the bling-bling style &#8216;pretty&#8217; one would find in magazines, but the pretty of having shadows where you need them.
</p><p>
I was quite surprised to learn that OmniGraffle reads GraphViz files and contains GraphViz&#8217; automatic layout algorithms as I consider both these approaches to graphing as somewhat orthogonal. It&#8217;s all the better that one application tries to handle both. Trying to use the &#8216;best of both worlds&#8217; I could turn a mess of a graph into something reasonably looking.
</p><p>
<img src="http://earthlingsoft.net/ssp/blog/graphics/GraffleGraphLayout.png" style="width:50%;max-width:270px;max-height:347px;" lang="de" alt="OmniGraffles settings for graph layout">
What&#8217;s particularly nice about OmniGraffle is that it doesn&#8217;t just import the GraphViz files but it also lets you edit them in the application, re-applying the GraphViz algorithms as you go. Particularly when using the &#8216;force-based&#8217; layout mode it gives you a few extra abilities to adjust line lengths. These can be used to tweak the graph a little.
</p><p>
While this is already a great improvement on &#8216;pure&#8217; GraphViz, particularly once you take into account in the better looks OmniGraffle gives your graphs as well, it still leaves plenty of room for improvement. One issue is that you may have machine-generated GraphViz files. You can easily add a few nodes to those. But OmniGraffle cannot &#8216;update&#8217; its current graph based on an updated GraphViz file. While this seems quite natural in the GraphViz view of things, it means that you must be really really <em>really</em> sure your graph is final before starting to make it pretty. Of course that&#8217;s not how things work and you may end up having to do things several times. Given how dynamic the layout of thes graphs is, it&#8217;s very likely that you will not be able to reproduce your previous work when doing this.
</p><p>
The next problem (again coming from GraphViz, I suppose) is that it&#8217;s really hard to &#8216;pin down&#8217; objects. Sometimes you really <em>need</em> some node to be right in the middle or you may <em>want</em> to move one node up a centimetre to make its edges not cross other nodes in a bad way. It&#8217;d be really handy to just fix a node at its desired location for that.
</p><p>
The same goes for the order of some nodes grouped around another one. It seems like the GraphViz algorithm just finds a <em>local</em> optimum for the layout. Meaning that other, much better layouts may exist which are just &#8216;out of reach&#8217;. I have often seen examples for this where a number of nodes are grouped around bigger nodes and a change of the order of those nodes would have given a much better layout with less edge-crossings. Unfortunately this kind of rearranging is mostly impossible (I have a theory that one <em>may</em> be able to adjust it by rearranging the lines in the GraphViz file, but that&#8217;s not really feasible if said file is automatically generated).
</p><p>
A further limitation of OmniGraffle is that the ranges for its adjustment sliders seem to be wrong as soon as you&#8217;re working with graphs that aren&#8217;t tiny. The usable part of the &#8216;repulsion&#8217; slider seems to be in the first 5% of its range, i.e. pretty much impossible to control. That&#8217;s particularly problematic as OmniGraffle can end up stalling for a long time when the setting is picked too large (as I assume the layout process is started with rather unreasonable parameters then).
</p><p>
<img src="http://earthlingsoft.net/ssp/blog/graphics/GraffleSelection.png" style="width:50%;max-width:270px;max-height:311px;" alt="OmniGraffle selection tools">
Finally, OmniGraffle does not support the full range of GraphViz options (say node shapes or images in the nodes as used in my <a href="http://earthlingsoft.net/ssp/blog/2009/07/utis">UTI graph</a>), meaning that it&#8217;s difficult to communicate layout intent through your GraphViz file from the script creating it. A workaround for that is setting different colours and sizes for the element and using OmniGraffle&#8217;s cool selection features to select all objects with the same style.
</p><p>
My conclusion is that the automatic layout / GraphViz support makes OmniGraffle a very interesting tool for creating graphs. I am particularly surprised that they managed (dared to attempt) including some GraphViz algorithms into their application. But now that I&#8217;ve seen this I want more. As usual, none of what I want will be particularly easy to implement but it improve graph making.
</p><p>
Let me close with an illustration of what can be achieved. Taking a moderately elaborate GraphViz file which already makes an attempt to style things a little one could get a result like this:
</p><p class="centred">
<a href="http://earthlingsoft.net/ssp/blog/graphics/GraffleBefore.png" title="Click to enlarge."><img src="http://earthlingsoft.net/ssp/blog/graphics/GraffleBefore.png" style="width:95%;max-width:450px;max-height:381px;" alt="Graph as created by GraphViz"></a>
</p><p>
Tinkering a with OmniGraffle on this can clarify the result quite a bit:
</p><p class="centred">
<a href="http://earthlingsoft.net/ssp/blog/graphics/GraffleAfter.png" title="Click to enlarge."><img src="http://earthlingsoft.net/ssp/blog/graphics/GraffleAfter.png" style="width:95%;max-width:600px;max-height:333px;" alt="Graph as improved with OmniGraffle"></a>
</p>
]]></description>
<dc:subject>Software</dc:subject>
<dc:creator>ssp</dc:creator>
<dc:date>2009-12-17T08:39:52+01:00</dc:date>
</item>

<item rdf:about="http://earthlingsoft.net/ssp/blog/2009/12/graphviz">
<title>GraphViz</title>
<link>http://earthlingsoft.net/ssp/blog/2009/12/graphviz</link>
<description><![CDATA[<p>
<img src="http://earthlingsoft.net/ssp/blog/graphics2/GV-Icon.png" style="width:128px;height:128px;" alt="GraphViz file icon">
<a href="http://www.graphviz.org/">GraphViz</a> is an interesting visualisation tool. It lets you write a simple text file describing the nodes and the connections between them of a graph and then algorithmically creates the layout of the graph, apparently by trying to minimise the &#8216;forces&#8217; between the objects. Depending on the content of your graph there are several different algorithms to choose from, ranging from <code>dot</code> for tree-like graphs, <code>neato</code> and <code>fdp</code> for more force-based freestyle stuff and <code>twopi</code> or <code>circo</code> for more circular arrangements.
</p><p>
Thus, in theory, GraphViz is a fantastic tool to magically create meaningful graphs from simple relations between objects. Being open source and able to export into many file formats from bitmaps to PDF to SVG makes it also score high in buzzword bingo. There&#8217;s also a pretty abandoned looking, Design Award winning and not exactly easy to use <a href="http://www.pixelglow.com/graphviz/">graphical Mac application</a> for the <code>dot</code> tool as well as a cool looking but presumably useless iPhone version for the same people.
</p><p>
There are, however, problems with GraphViz. One of them is documentation. As is par for the course for open source software, there is a <a href="http://www.graphviz.org/doc/info/lang.html">formal specification</a> for the language used and an <a href="http://www.graphviz.org/doc/info/attrs.html">alphabetical list of all the parameters you can use</a>. Of course that&#8217;s pretty close to useless as it totally hides the fact that writing a dot file is quite easy. And once you figured that out, by looking at the pages of <a href="http://www.graphviz.org/Gallery.php">examples</a>, it still remains frustrating to use the software because not all of the options work in all of the tools and generally the outcomes seem quite random in the sense that it often seems gratuitously hard to figure out or achieve simple graphical effects.
</p><p>
Particularly so, once you start creating slightly complex graphs. Positioning nodes &#8216;just right&#8217; in those is pretty hard because the positions one node potentially affects all others. This makes it pretty much impossible to turn a graph which may represent the structure correctly into a graph that represents the structure correctly <em>and looks good</em>. Where &#8216;looking good&#8217; also means that the graph can become clearer as a consequence of that because you have fewer crossing lines or the order of the nodes is more adequate for your current application. To a certain extent you can tinker with some of these aspects, but in my experience it quickly ends up being a lot of effort while still not giving the results I want. 
</p><p>
In addition GraphViz, in true Unix style, is a one-shot-wonder - meaning that it simply processes the file you throw at it without any knowledge of previous runs. Hence even adding a single node to the graph can significantly change the layout the algorithm comes up with. This makes it pretty futile to try and &#8216;optimise&#8217; the graph in any way unless you are 100% sure its nodes and edges will not change. It also keeps you from doing something like a development of the graph over time as adding a node will quite likely create a discrete jump in the graph rather than lead to a continuous change. As far as I understand the readmes of GraphViz, the way it optimises graphs actually <em>is</em> continuous in nature, so it&#8217;s likely that all the necessary algorithms are pretty much in place already and a shame that no interface to them is exposed.
</p><p>
Finally, there is the difficulty of the middle ground. Looking through the GraphViz <a href="http://www.graphviz.org/Gallery.php">examples page</a> you will find mostly graphs which are small or structurally simple. Those tend to look all right. There are also a few examples which are <a href="http://www2.research.att.com/~yifanhu/GALLERY/GRAPHS/index.html">very large and complex</a> and in which the graph is seen as a global picture rather than revealing the details of its nodes. Of course the graphs <em>I</em> wanted to create are in the middle ground. They are too big and complex to fit in the first category but I am still interested in the detail information.
</p><p>
An example for many of these issues may be my <a href="http://earthlingsoft.net/ssp/blog/2009/07/utis">UTI graph</a>:
</p><p class="centred">
<a href="http://files.getdropbox.com/u/382997/UTIs.pdf" title="PDF file of the graph"><img src="http://earthlingsoft.net/ssp/blog/graphics/UTIGraph.jpeg" style="width:95%;max-width:428px;max-height:631px;" alt="UTIGraph"></a>
</p><p>
Once you start looking at it in detail to learn the exact information it contains, you will start noticing how the layout of the graph is far from perfect in many places. Improving on that seems quite hard. And getting everything &#8216;just right&#8217; could very much end up being impossible.
</p>
]]></description>
<dc:subject>Software</dc:subject>
<dc:creator>ssp</dc:creator>
<dc:date>2009-12-11T11:19:59+01:00</dc:date>
</item>

<item rdf:about="http://earthlingsoft.net/ssp/blog/2009/10/bookmark_advertiser">
<title>Bookmark Advertiser</title>
<link>http://earthlingsoft.net/ssp/blog/2009/10/bookmark_advertiser</link>
<description><![CDATA[<p>
One of my motivations for getting involved in <a href="http://earthlingsoft.net/ssp/blog/2009/10/flame">Flame</a> was the fact that Apple decided to make transferring a web page which you are viewing in Safari on your Mac to Safari on the iPod very difficult. I find I want to do just that from time to time when I discovered some interesting web page and want to show it to somebody else in the kitchen or so. All ways to achieve this goal require me to do clumsy things like e-mailing the page&#8217;s address to myself or using the iPod&#8217;s clumsy keyboard.
</p><p>
My idea would be that Safari lets you &#8216;share&#8217; the pages you are currently viewing and those bookmarks then appear in the iPod&#8217;s Safari via Bonjour. But things don&#8217;t work this way. As Safari on the Mac lacks such a sharing feature, the URLs of the currently open pages have to be advertised by an additional application. As Safari on the iPod lacks Bonjour support, you can&#8217;t possibly see any advertised services in the application itself anyway (and implementing the bookmark sharing in such a way would require a bit of cleverness and background work because the standard advertising of web servers via Bonjour only works for services with addresses on your own machine).
</p><p>
So the hackish workaround is the following: You launch the <a href="http://code.google.com/p/service-advertiser/downloads/list">Bookmark Advertiser</a> application, it grabs the addresses of the web pages you are currently viewing in Safari and advertises them via Bonjour as a service of type &#8216;urlbookmark&#8217;. Flame then just happens to recognise that service type and display it as an openable service which will display the web page in Safari on the iPod.
</p><p class="centred">
<a href="http://earthlingsoft.net/ssp/blog/graphics/Bookmark%20Advertiser%20Window.png" title="Click to enlarge."><img src="http://earthlingsoft.net/ssp/blog/graphics/Bookmark%20Advertiser%20Window.png" style="width:95%;max-width:554px;max-height:250px;" alt="Bookmark Advertiser Window"></a>
</p><p>
This is very lightweight, only supports Safari, doesn&#8217;t automatically refresh and fails for URLs which are too long. Yet it does the trick for the applications I had in mind.
</p>
]]></description>
<dc:subject>earthlingsoft</dc:subject>
<dc:creator>ssp</dc:creator>
<dc:date>2009-10-31T20:12:19+01:00</dc:date>
</item>

<item rdf:about="http://earthlingsoft.net/ssp/blog/2009/10/flame">
<title>Flame</title>
<link>http://earthlingsoft.net/ssp/blog/2009/10/flame</link>
<description><![CDATA[<p>
<img src="http://earthlingsoft.net/ssp/blog/graphics/flame_square.png" style="width:57px;height:57px;" alt="Flame Icon">
If you know a bit of Cocoa, the iPhone platform is an interesting toy to play with. And you&#8217;ll quickly find out that it&#8217;s relatively simple to come up with an application displaying a list that swooshes across  the screen every now and then. <a href="http://jerakeen.org/" title="Tom Insam">Tom</a> started porting his <a href="http://jerakeen.org/code/flame/">Mac Bonjour browser</a> called Flame to the iPhone almost a year ago. Over time I joined in and contributed a feature or two and tried to clean up the look to suit my taste. The resulting code <a href="http://github.com/jerakeen/flametouch">is available</a> for your amusement. And thanks to Tom going through Apple&#8217;s draconian sign-up and approval process, the <a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=325206381">binary is as well</a>.
</p><p>
The application does the simple job of displaying all the Bonjour Services on your network. Either grouped by Server or by Service Type. You can look at the Services&#8217; details and open those for which you have matching applications installed. Interestingly Mobile Safari can handle FTP (for small values of &#8216;handle&#8217;) and unfortunately the VNC clients I looked at don&#8217;t seem to register protocol handlers. If the iPhone software &#8216;ecosystem&#8217; didn&#8217;t suck so badly, one could even send the authors of those applications an e-mail and let them know.
</p><p class="centred">
<a href="http://earthlingsoft.net/ssp/blog/graphics/Flame%20Service%20per%20Host.png" title="Click to enlarge."><img src="http://earthlingsoft.net/ssp/blog/graphics/Flame%20Service%20per%20Host.png" style="width:95%;max-width:320px;max-height:480px;" alt="Screenshot of Flame Touch displaying all services on a single machine"></a>
</p><p>
&#8216;Naturally&#8217; the application works on Wi-Fi only. It does its job in English, German and French (many thanks to <a href="http://www.cortig.net/localisations/?cat=2" title="Ronald Leroux">Ronald</a>, once again) and we hope it does it reasonably well. Let us know if it doesn&#8217;t; There&#8217;s a feedback link in the about box.
</p><p>
While it&#8217;s nice to see some software you contributed to out in the public, I have to say that the whole App-store crap makes it feel dirty. It&#8217;s essentially supporting the bad guys.
</p>

<hr>

<p>
Be sure to also look at the <a href="http://earthlingsoft.net/ssp/blog/2009/10/bookmark_advertiser">Bookmark Advertiser</a> Mac application which advertises your open Safari pages via Bonjour and which Flame supports.
</p>
]]></description>
<dc:subject>Software</dc:subject>
<dc:creator>ssp</dc:creator>
<dc:date>2009-10-29T23:08:33+01:00</dc:date>
</item>

<item rdf:about="http://earthlingsoft.net/ssp/blog/2009/07/nice_touches">
<title>Nice Touches</title>
<link>http://earthlingsoft.net/ssp/blog/2009/07/nice_touches</link>
<description><![CDATA[<p>
I have used quite a bit of software over time and this has lowered my expectations notably. There&#8217;s all the theory about what can and should be done. And then there&#8217;s reality where people don&#8217;t have enough money or time to implement their stuff properly (which, sadly, is rarely advertised or even admitted) and where implementing a small nice feature requires considerable effort. This reduces the chance of the &#8216;small nice feature&#8217; being implemented - particularly when said feature is very specific and will not be used frequently.
</p><p>
It&#8217;s rare that you run into such features. But when you do, you can breifly smile during the agony of machine usage. I had such an experience a while ago when using <a href="http://sandvox.com/">Sandvox</a> which I use for a bunch of photo websites with plenty of photos in them. And what would the absolute nightmare in this situation be? Right: The application not being able to locate the photos I am using in the site.
</p><p>
And exactly that happened. I have no idea <em>why</em> this happened as Sandvox seems to use proper Mac aliases internally which take into account both the path and file number, but it <em>did</em> happen. After having been through the hell of manually having to tell iTunes about the location of dozens of song files (which had not been moved in any way) at some stage, you can imagine how I sighed when a sheet came up informing me that hundreds of images could not be found after opening a photo site in Sandvox.
</p><p class="centred">
<a href="http://earthlingsoft.net/ssp/blog/graphics/Sandvox%201.5%20Missing%20Media.png" title="Click to enlarge."><img src="http://earthlingsoft.net/ssp/blog/graphics/Sandvox%201.5%20Missing%20Media.png" style="width:95%;max-width:941px;max-height:487px;" lang="de" alt="Missing media sheet from Sandvox"></a>
</p><p>
After the sighing and a bit of cursing I set off to serve the software once more. But after locating the first file a good thing happened: Sandvox used the location I had pointed it to for that file to check whether it could find the remaining files at the same location. And it could. Which made my preventive cursing somewhat superfluous as the the application had just solved the problem for me.
</p><p class="centred">
<a href="http://earthlingsoft.net/ssp/blog/graphics/Sandvox%201.5%20Missing%20media%20clever.png" title="Click to enlarge."><img src="http://earthlingsoft.net/ssp/blog/graphics/Sandvox%201.5%20Missing%20media%20clever.png" style="width:95%;max-width:548px;max-height:233px;" alt="Sandvox telling that it found other missing media files (the screenshot is some months old, so I assume they fixed the typos by now)" lang="de"></a>
</p><p>
While I imagine that the situations in which this code is needed are quite rare, its existence turned a potential disaster into a good experience - that of just having escaped doing a repetitive perfectly automatable task which programmers so frequently love to let their users do.
</p>
]]></description>
<dc:subject>Software</dc:subject>
<dc:creator>ssp</dc:creator>
<dc:date>2009-07-13T20:36:34+01:00</dc:date>
</item>

<item rdf:about="http://earthlingsoft.net/ssp/blog/2009/06/safari_reloaded">
<title>Safari Reloaded</title>
<link>http://earthlingsoft.net/ssp/blog/2009/06/safari_reloaded</link>
<description><![CDATA[<p>
<img src="http://earthlingsoft.net/ssp/blog/graphics2/Safari.png" style="width:128px;height:128px;" alt="Safari Icon">
Safari 4 was released last week. It&#8217;s unspectacular from the point of view of a web user and brings a lot of improved techno-wanker stuff beneath the hood. That&#8217;s probably a good thing as someone has to take the first step and Safari and other non-IE browsers seem to have enough velocity these days to help driving the development of web browsers and even dragging the Microsoft&#8217;s Internet Explorer along.
</p>

<h4 id="bling">Bling</h4>

<p>
The more critical points about Safari 4 are the changes to its user interface though. Some of them, like &#8216;<a href="http://earthlingsoft.net/ssp/blog/2009/02/safari_4b1#visualboomarks-topsites">Top Sites</a>&#8217; are vacuous pieces of crap (enquire within to make me argue that it&#8217;s visual overload, much less effective than typing the first letter of the address and may waste your time by reminding you of the existence of websites you shouldn&#8217;t visit so often), <em>but</em> unlike many other types of crap Apple introduced in the past years, these can be easily and turned off and ignored without any problem.
</p>

<h4 id="coverflow">Cover Flow and lost opportunities</h4>

<p>
The same uselessness statement could me made about Cover Flow bookmarks, I suppose, but to be honest <em>I</em> hardly ever use my bookmarks at all, so to me it seems mainly a waste of effort (and judging from what I heard others say, a rather unreliable one at that as Safari doesn&#8217;t seem to be good at actually fetching those images. Personally I also consider that feature a missed opportunity. Not only did Apple decide to litter our hard drives with hundreds of megabytes of web page screenshots (opening the folder of which <em>may</em> be a good way to visualise the privacy implications of web bugs - particularly Google), they also missed out on the opportunity to create a good solution for this that offers search and offline access as well.
</p><p>
To me the current implementation of Safari seems ridiculous. For each page you visit it stores a reference in your browsing history, it saves a file with the page&#8217;s text for Spotlight searches and it saves a screenshot of the page for its Cover Flow bookmarks.  Yet, there seems to be no way to actually look at the screenshots Safari stores for you. They are not displayed by Quick Look when invoked on browsing history items and they are neither used to give you an impression of one of those history items when you are offline. To me, saving a web archive with the actual page in it (plus a screenshot, possibly, for performance) would seem much more logical. <em>And</em> it would make those situations when you discover a page you visited in a Spotlight search while you don&#8217;t have internet access much less frustrating.
</p>

<h4 id="tabs">Tabs</h4>

<p>
Another <em>big</em> debate among browser users was Apple&#8217;s re-location of the tab bar into the window&#8217;s title bar which existed in some beta versions of Safari 4. While I could appreciate the space savings of that, <a href="http://earthlingsoft.net/ssp/blog/2009/02/safari_4b1#tabs">I thought</a> it was more irritating than useful in the end. Simply because it made the window&#8217;s title bar look extremely busy and made things hard to click. In addition, that idea also ruined other subtle display methods in Safari: The unique lock icon location for encrypted sites and the full window width page title. Without the latter it&#8217;s quite hard to see the page&#8217;s name at a glance.
</p><p>
Surprisingly  Apple listened to the loads of the feedback they must have received on this issue and the released version of the browser come with traditional style tabs. Those aren&#8217;t perfect either, but apparently they&#8217;re the best you can do when working with the &#8216;tab&#8217; metaphor. In particular, they still suffer from horizontal overflow problems, as tabs to everywhere. And Apple&#8217;s insistence on only giving you an overflow chevron with no way to actually move between the tabs doesn&#8217;t make that any better. In fact, they added some fancy background colouring to the menu coming out of the overflow chevron, presumably to give you a better idea about the context you&#8217;re looking at. But I am not really sure it helps me figure out anything.
</p><p>
The following two screenshots are an example of that. I opened six tabs in a narrow Safari window which could only fit four of them in. In the beginning, with the fourth tab selected, it looked like this:
</p><p class="centred">
<a href="http://earthlingsoft.net/ssp/blog/graphics/SafariOverflowMenu1.png" title="Click to enlarge."><img src="http://earthlingsoft.net/ssp/blog/graphics/SafariOverflowMenu1.png" style="width:95%;max-width:493px;max-height:174px;" alt="First example of Safari overflow menu with four light coloured items and two dark coloured items"></a>
</p><p>
This makes sense to me, assuming that the light colour indicates the visible tabs and the dark colour indicates the hidden tabs. Then I paniced and switched to the last tab:
</p><p class="centred">
<a href="http://earthlingsoft.net/ssp/blog/graphics/SafariOverflowMenu2.png" title="Click to enlarge."><img src="http://earthlingsoft.net/ssp/blog/graphics/SafariOverflowMenu2.png" style="width:95%;max-width:493px;max-height:174px;" alt="Second example of Safari overflow menu with three light coloured items and tree dark coloured items"></a>
</p><p>
Now, with the same window width and tab arrangement, seeing three of both the light and the dark items suggests that my initial idea about the meaning of the colours was wrong. I guess I&#8217;ll just have to avoid looking at this. Tabs aren&#8217;t good for you anyway.
</p>

<h4 id="progress">Progress</h4>

<p>
Another contentious issue was that of the progress indicator. Safari used to have a progress indicator which coloured in the address field according to the page&#8217;s progress at being loaded. While a progress indicator that gives quantitative information may be extremely problematic on a conceptual level for loading web pages - you have to display some progress immediately after the request is sent to let the user know something is happening but you have no clue at that stage how long it will take to complete everything - I think that Safari used to fake it reasonably well. 
</p><p>
Nobody wants to read precise information from the progress indicator. Usually people just want to see that (a) their request is being processed and that (b) some progress is happening. That is, you want a bit of the progress bar to appear as soon as a click is made and then you wa old nt the progress bar to move at a reasonable speed as long as data are coming in. That way a stalled progress indicator may give you a hint that something isn&#8217;t working properly and that a reload may be in order. Particularly in low-bandwidth situations, which web sites and browsers don&#8217;t seem to be particularly good with, <a href="http://www.betalogue.com/2009/06/12/safari4/" title="Betalogue &raquo; Blog Archive &raquo; Safari 4 and the blue progress bar: Ignoring the needs of users in low-bandwidth conditions">this is a useful feature</a>.
</p><p>
Apple decided to remove the progress indicator in the betas, replacing it by a tiny spinning progress indicator at the very right hand side of the address bar in beta versions. This was very irritating as the visual impact of that tiny graphic was so low that you always had to consciously <em>look</em> at that tiny bit of screen space to see whether or not the progress indicator appeared. Definitely a change for worse, big enough to penetrate Apple&#8217;s bug reporters (perhaps people at Apple are even using Safari themselves&#8230;). 
</p><p>
Their &#8216;solution&#8217; to the problem was to not just display the progress indicator but provide an easily visible dark background around it which you&#8217;ll immediately notice without having to make an effort to look for it. That certainly solves the biggest problem with the new progress indicator seen in the betas. The other problem, however, of seeing whether there is actual progress in the file transfers or whether they have stalled, remains. 
</p><p>
I&#8217;d certainly like to read the reasoning that went into putting engineering resources into making the progress indicator worse than it was before. Seems illogical to me, particularly as Apple missed out on what looks like the only potential <em>advantage</em> of an indeterminate progress indicator to me: The ability to let it spin when further resources are loaded <em>after</em> the page finished loading, like many of those fancy <a href="http://earthlingsoft.net/ssp/blog/2006/04/the_second_web" title="The second Web (Quarter Life Crisis)">web 2</a> pages like to do. 
</p>

<h4 id="back">Reload button</h4>

<p>
Another problem with Safari 4 is that Apple moved the Reload button to the right hand side of the address bar. Web browsers were born with the reload button at the left hand side of the window. More importantly, they were born with the Reload button close to the Back and Forward buttons, which not only makes sense but also keeps distances short when navigating with the mouse. Internet Explorer 7 broke that tradition and its wrongly placed Reload buttons remains the second most annoying thing about it (the first item in the list, naturally, being the rendering mistakes which make me need the reload button and non-trivially test in that browser in the first place).
</p><p>
Safari is keen to follow in Internet Explorer 7&#8217;s steps in this respect and moves its combined Reload and Stop button far away from the other navigation buttons. That irriates the hell out of me - and apparently a few other people as well. As there seems to be no point in holding one&#8217;s breath (and Apple&#8217;s software regime on the Mac hasn&#8217;t reached iPhone level fascism yet), a little bit of clicking yielded this:
</p><p class="centred">
<a href="http://earthlingsoft.net/ssp/blog/graphics/Safari4ProperReload.png" title="Click to enlarge."><img src="http://earthlingsoft.net/ssp/blog/graphics/Safari4ProperReload.png" style="width:95%;max-width:202px;max-height:78px;" alt="Reload button at the left in Safari 4"></a>
</p><p>
It&#8217;s not as good as the Safari 3 original as it doesn&#8217;t reflect the state change from Stop to Reload but it may be a reasonable approximation until somebody discovers a better fix. You can <a href="http://earthlingsoft.net/ssp/tidbits/#safari4reloadfix">grab a copy of the files here</a> and use them at your own risk.
</p>
]]></description>
<dc:subject>Software</dc:subject>
<dc:creator>ssp</dc:creator>
<dc:date>2009-06-14T00:34:16+01:00</dc:date>
</item>

<item rdf:about="http://earthlingsoft.net/ssp/blog/2009/02/safari_4b1">
<title>Safari 4b1</title>
<link>http://earthlingsoft.net/ssp/blog/2009/02/safari_4b1</link>
<description><![CDATA[<p>
<img src="http://earthlingsoft.net/ssp/blog/graphics2/Safari.png" style="width:128px;height:128px;" alt="Safari Icon">
Half the world&#8217;s web surfing enthusiasts have been sort-of surprised by Apple&#8217;s Safari 4 beta release this Tuesday. And at least half of these people have commented on the new features and changes seen in the beta version. Not being the one to miss out in a UI palaver, let me add my €0,02 as well. 
</p>

<h4 id="underthehood">Beneath the hood</h4>

<p>
It seems that Safari 4 will bring quite a few improvements under the hood. Faster JavaScript, fancy new CSS effects, local storage and improved scores on random standards tests. I suppose that those are good things. Things that are worth implementing and refining early so - for a change - browsers are ready once the web designers get their act together.
</p><p>
Those changes are as unnoticeable as they are amazing. None of the sites I am using seems to behave differently today in Safari 4b than it behaved last week in Safari 3. Which probably is a good thing or simply proves that I just don&#8217;t surf enough. 
</p><p>
And who&#8217;s going to  bitch about such technicalities anyway?
</p>

<h4 id="zoom">Zooming</h4>

<p>
Web browsers could zoom into pages from day one. Pressing ⌘-+ simply <strong>increased the base font size</strong>, thus making text larger and potentially more legible. This has always been problematic to a certain extent as web designs which use images have a tendency to break down after a step or two of this: The graphics are included as fixed size bitmaps and (due to both bad / lazy designers and the limitations of HTML / CSS) they don&#8217;t scale along with the text. Hence, the font sizes may end up being blown out of proportion to the size of the decorative banner ads or so&#8230;
</p><p>
<img src="http://earthlingsoft.net/ssp/blog/graphics/Safari4b1ResizeMenu.png" style="max-width:50%;width:214px;height:103px;" alt="Zoom menu items in Safari 4b1's View menu">
At some stage the strategy of re-interpreting web page zooming as a <strong>zoom into the page</strong> - increasing the size of everything on the page proportionally - was introduced (many years ago by Opera, I think). This strategy neatly avoids the problem of layouts breaking and Safari 4b both implements it and uses it by default. The setting for it are easily accessible in the View Menu.
</p><p>
Personally I prefer &#8216;old-school&#8217; HTML resizing. Both because I&#8217;m an old fart and because I prefer narrow browser windows and despise web &#8216;designers&#8217; who think they should have a say about the size and shape of my browser window. Having the new resizing option feels like it gives more power to them as increasing a page&#8217;s text size will likely blow said page out of the window size I want to use.
</p>

<h4 id="visualbookmarks-coverflow">Visual Bookmarks: Cover Flow</h4>

<p>
Safari 4b1 offers two ways of visualising bookmarks. The first is having a <strong>Cover Flow</strong> view mode when browsing bookmarks.  I think this is a &#8216;nice&#8217; idea because it&#8217;s sometimes easier to recognise pages visually than remembering their name. On the other hand: When did you last browse your bookmarks?
</p><p>
I realised I <em>never</em> browse my bookmarks. The links I need frequently are in my bookmarks bar and I know where they are because I use them frequently. The other links are in my bookmarks for (a) sentimental value, (b) because I forgot to delete them or (c)  autocompletion.
</p><p>
<strong>Autocompletion</strong> is important. Even more so if you have a device with a crappy keyboard like an iPod touch or an iPhone. Once you have a link in your bookmarks, it&#8217;s much more accessible on these devices. Hence bookmarks need to be there, but they hardly ever need to be seen.
</p><p class="centred">
<a href="http://earthlingsoft.net/ssp/blog/graphics/Safari4b1CoverFlow.jpeg" title="Click to enlarge."><img src="http://earthlingsoft.net/ssp/blog/graphics/Safari4b1CoverFlow.jpeg" style="width:95%;max-width:807px;max-height:658px;" alt="Bookmark Cover Flow in Safari 4b1"></a>
</p><p class="aside">
In fact I used these graphical bookmarks as an opportunity to quickly go through all of them. The screenshots usually let you see easily when a bookmark has stopped working and points to an error page. There were plenty of such broken bookmarks  in my collection - particularly on music and computer related sites. Presumably because they are run by the most technically illiterate people. Even more embarrassingly, most of the music sites still exist, just the links broke because the moron who &#8216;designed&#8217; the Flash-atrocity site in 2004 thought entering the domain name should immediately redirect you to the &#8216;/index.php&#8217; path while the douchebag who re-&#8216;designed&#8217; the even worse Flash+Web-2-atrocity site  in 2007 considered a redirect to &#8216;/index.asp&#8217; more appropriate. Both being morons of course meant that nobody thought about creating redirects beforehand and nobody checks the 404 logs either. Tada, job well done and &#8216;designer&#8217; paid with the money from my CDs! And as Safari - optimistically - doesn&#8217;t show you the URL you are about to bookmar thus not giving you the opportunity to scrutinise and fix it easily, you end up having that worthless crap in your bookmarks.
</p>

<h4 id="visualbookmarks-topsites">Visual Bookmarks: Top Sites</h4>

<p>
The other 3D novelty in Safari 4b1 is the <strong>Top Sites</strong> view. It displays a gratuitously 3D view of thumbnails of the pages Safari considers your favourite ones:
</p><p class="centred">
<a href="http://earthlingsoft.net/ssp/blog/graphics/Safari4b1%20TopSites.jpeg" title="Click to enlarge."><img src="http://earthlingsoft.net/ssp/blog/graphics/Safari4b1%20TopSites-klein.jpeg" style="width:95%;max-width:600px;max-height:383px;" alt="Safari 4b1's Top Sites feature"></a>
</p><p>
It seems that Apple still love the feature at this stage as they added a non-removable button for accessing it (which for some incomprehensible reason works differently from the Bookmarks button right next to it) to Safari&#8217;s Bookmarks Bar and make Safari open any new tab or window displaying it despite you having told Safari that you always want it to open new tabs and windows with a &#8216;blank&#8217; page years ago. Let&#8217;s say I was not impressed. And even less so was my boss when I wanted to &#8216;quickly look something up on the web&#8217; and the screen seen above appeared&#8230;
</p><p>
Ah well, I am not sure I&#8217;ll like this feature. It needs to download loads of stuff in the background through a helper process, it seems impossible to add specific pages to it at the moment and it furthermore includes the horrifying trend of being so poorly designed that it needs an &#8216;Edit&#8217; button (this may be excusable on a simplistic device like the iPod touch or iPhone on which editing will be the exception and interaction is coarse but I find this just embarrassing in everyday editing applications like Safari or the Address Book, this being the 21st century and all). So, no, I&#8217;m not convinced. But if I could remove the button for it from my Bookmarks Bar, it would just be some useless code in my Safari binary rather than a constant annoyance.
</p>

<h4 id="comment-archiving">Comment: Archiving</h4>

<p>
Let me take a moment to comment on the features above. Obviously the developments for Safari 4 established quite a bit of infrastructure for saving and updating thumbnail graphics of the pages you view. To me that seems to be solving the wrong problem and at best an intermediate performance-enhancing step one may need to do when doing The Right Thing™.
</p><p>
At the moment Safari saves three kinds of web page related items: your bookmarks, a log of the pages you recently visited and thumbnail images. Both the bookmarks and the log of the pages you visited are indexed by Spotlight and thus somewhat accessible. Unfortunately neither of these is Quick Look enabled, meaning that you will know something in the page you visited yesterday contains the text you are interested in, but you cannot immediately access it &#8216;see&#8217; the page in question.
</p><p>
It seems that the &#8216;right&#8217; thing would be storing proper webarchives of the visited pages. That may be a bit more effort than the current approach but it would have the advantage that even web history items would not only be findable via Spotlight - they&#8217;d also be viewable right away, even without an internet connection.
</p><p>
I&#8217;ve been in that situation a number of times and I can tell you the following: it&#8217;s nice that you can search the content of your web browsing history using Spotlight. But finding something in there while you don&#8217;t have an internet connection is incredibly frustrating - much more so than not finding it at all. Of course only unworthy sub-humans will come into situations without internet access in Apple&#8217;s mindset, but I take the liberty of thinking it&#8217;s something worth keeping in mind - even more so as it enables you to see the page the way it looked yesterday when you thought it was interesting, an aspect that can play a role when having in mind the large number of blog-style sites with frequently changing content we have today.
</p>

<h4 id="addressfield">Address Field</h4>

<p>
Safari 4b1 comes with a redesigned address field. It appears they&#8217;re generously stealing from the improvements Firefox users have been enjoying for a while there. And it&#8217;s a welcome change. Safari&#8217;s URL <strong>autocompletion</strong> becomes much more competent by this, offering a somewhat reasonably ordered selection of completions from your bookmarks and history items. I welcome these improvements.
</p><p class="centred">
<a href="http://earthlingsoft.net/ssp/blog/graphics/Safari4b1Autocompletion.png" title="Click to enlarge."><img src="http://earthlingsoft.net/ssp/blog/graphics/Safari4b1Autocompletion.png" style="width:95%;max-width:465px;max-height:266px;" alt="Safari 4b1 URL autocompletion menu"></a>
</p><p>
This isn&#8217;t quite perfect yet. One thing they still haven&#8217;t fixed is Safari&#8217;s unwillingness to invoke autocompletion after hitting the <strong>backspace</strong> key: Say you want to go to Google and accidentally type &#8216;gog&#8217;, then you realise you missed an &#8216;o&#8217; and hit the backspace key. In all likelyhood &#8216;go&#8217; would autocomplete to &#8216;google.com&#8217; already, so Safari should <em>try</em> that. But it doesn&#8217;t. Seems like a trivial oversight to me and I couldn&#8217;t yet figure out why Safari doesn&#8217;t do it.
</p><p>
Another, even more significant omission is that the address field only completes addresses. I totally expect it to <strong>complete bookmark names</strong> as well. 
</p><p>
But that isn&#8217;t all there is to Safari&#8217;s new address field. It comes with the <strong>Add Bookmark +</strong>-button affixed to its left side. Yes, that does look neat and may be another hat-tip to Firefox and its even more elegant / lazy solution to bookmarking, but it annoys the hell out of people like myself who don&#8217;t want a button for creating bookmarks in their toolbar. In fact, I prefer thinking about said &#8216;toolbar&#8217; as the &#8216;navigation&#8217; bar, and creating bookmarks has nothing to do with navigation, so it doesn&#8217;t appear there. I am perfectly capable of using a menu, hitting ⌘-D or using drag and drop (for which spring loaded elements in the Bookmarks Bar would have been nice) when I want to create a new bookmark. 
</p><p>
Going on, on the right hand side of the location field, we now see the <strong>Cancel / Reload</strong> button in there. It doesn&#8217;t really look like a button. but it looks like what you see on the iPod. That&#8217;s rubbish. 15 years of web browsing taught my muscle memory where a reload button is supposed to be. And that location is left of the address field and not inside it on the right. In fact I still find the location of the reload button the single most irritating &#8216;feature&#8217; of IE7 whenever having descend into those fields.
</p><p>
Whenever you visit a site whose connection isn&#8217;t only encrypted but also deemed particularly secure by Safari, the right hand side of the address field will also host the <strong>name of the SSL-certificate holder</strong>. Potentially shortened, with a funky fadeout and - strangely far away from the lock icon which remains in the page title. This is no dealbreaker but I find it a bit irritating. Wouldn&#8217;t the lock icon be better accommodated next to the address and the certificate owner&#8217;s name?
</p><p class="centred">
<a href="http://earthlingsoft.net/ssp/blog/graphics/Safari4b1CertificateName.png" title="Click to enlarge."><img src="http://earthlingsoft.net/ssp/blog/graphics/Safari4b1CertificateName.png" style="width:95%;max-width:388px;max-height:29px;" alt="Safari 4b1's address bar"></a>
</p><p>
Another point is <strong>progress indication</strong>. Safari used to indicate its progress of loading a page by colouring in the address field with a blue bar. That scheme of progress indication was pretty much a sham because with a browser&#8217;s progress indicator you need &#8216;instant gratification&#8217; to assure users the click they just made has been registered but you have no clue whatsoever how long the page will take to load at that moment. Hence, at that point, you  have to display <em>some</em> amount of progress which is completely independent of what&#8217;s going on for real. 
</p><p>
From that point of view, the indeterminate &#8216;spinning wheel&#8217; progress indicator used by Safari 4b1 is technically more correct. But it&#8217;s simply too hard to see. That large and blue bit of progress indicator appearing on the screen was very obvious, a small and grey progress indicator appearing at the far end of the address field is pretty much invisible. You - or at least <em>I</em> - don&#8217;t just see it but have to consciously look for it,  which is by far too much effort for me. 
</p><p>
Arguments have been made that people are more hesitant to actually use a page before loading has &#8216;completed&#8217; and that the less visible progress indicator encourages them to use the page before that. That&#8217;s an interesting point, but I can&#8217;t remember the last time Apple cared for pensioners or people with slow internet connections&#8230;
</p>

<h4 id="finding">Finding</h4>

<p>
Safari 4b1&#8217;s <strong>Find field</strong> has been pimped as well. Using Google&#8217;s instant search completion recommendations you can now be even lazier and share your partial thoughts with Google as well. It&#8217;s a nice convenience. The menu popping up while you type in the Find field also contains a &#8216;Find&#8217; command which will search for the typed text in the current page. 
</p><p>
As this command is at the very far end of the menu, 20 items in or so, I find it highly inaccessible, particularly when navigating with the keyboard, which I am likely to do as I have just been typing in a search term. This needs extra fine tuning, say in the form of making the up-arrow go to the last menu item when you&#8217;re in the find field or  highlighting the matches for the search term on the current page (which implies other problems, though).
</p><p>
Strangely, the popup menu that goes with the (empty) Find field lacks both a Clear Recent Searches command <em>and</em> that plain Find command which is attached to the bottom of the popup menu while you are typing. Those aspects could be more friendly, useful and consistent.
</p>

<h4 id="tabs">Tabs</h4>

<p>
Let&#8217;s move on to the big elephant in the web browser. Safari 4b1 comes with twisted tabs. Instead of being just above the page, the tabs live in the browser window&#8217;s title bar now. That&#8217;s just odd but my current stance is to give it a few days to see how much of the &#8216;odd&#8217; impression comes from the look  being new and differing from the standard Mac GUI (which of course itself is a bad thing in my book).
</p><p>
One thing this change has going for it is that it tries to be <strong>more logical</strong>. Lukas Mathis <a href="http://ignorethecode.net/blog/2009/02/24/hierarchies/">discusses the hierarchy of the browser UI</a> in detail, making that point clear (and explaining why Coda keeps feeling odd even after long usage). So, in the Safari 4b1 image of the world, each tab is a browser and comes with its own address bar and Google field inside it (at the moment these fields&#8217; behaviours are slightly different when you change tabs while typing in there, the Google field lovingly carries whatever you typed to the new tab, while the address field doesn&#8217;t do that) which makes more sense conceptually. 
</p><p>
On the other hand you now have a <strong>Bookmarks Bar</strong>  conceptually &#8216;within&#8217; each tab and it can contain folders which offer to open all their items in tabs. That ends up being a bit mind boggling or even destructive as you <em>might</em> expect that command to just replace the current tab  by many new tabs and <em>may</em> be shocked that it destroyed the content you had in other tabs. Perhaps this will be  improved as further builds emerge, but I see a conceptual problem here: you want a Bookmarks Bar, you want it close to the browser display, yet it doesn&#8217;t really belong inside each tab but it belongs to the whole application. Tricky one. To me the only logical conclusion seems to be to <em>not</em> use the Bookmarks Bar at all and hope that URL autocompletion will fit the bill. That would solve the problem with the Top Sites icon, save vertical space <em>and</em> get the browsing done nonetheless: Win-win-win.
</p><p>
After discussing things somewhat neutrally so far, let&#8217;s get to the bile. <strong>Those in-titlebar tabs just irritate the hell out of me.</strong> I assume that Apple will come up with better close and move icons for them, and the web has been full of (correct) remarks on how irritating and unclear the tabbed title bar&#8217;s behaviour is: what will come to the front when I click? the window? the tab? Where can I click to move the window? Where can I click to move a tab? Can I recognise a window as a window among other windows of the OS? To me neither of these questions has a clear or satisfactory answer. 
</p><p>
I guess getting used to them <em>might</em> improve that situation a little and Apple improving the design a bit by using better icons and colours (e.g. currently I simply don&#8217;t see at all that there are tabs when only two are open as there is so much blank space in the title bar that I don&#8217;t perceive the window as tabbed) may fix things a bit more. But I&#8217;d be cautious here: There&#8217;s a reason why all windows should look and work the same. These Safari windows don&#8217;t and that makes them difficult to use.
</p><p>
However, the argument that can be made here is <strong>vertical space</strong>. On today&#8217;s wide computer screens we have horizontal space without end but we can only read 80 characters in a row in that direction. Which makes the vertical space much more precious when it comes to reading as any scrolling action is an extra effort. And from <em>that</em> point of view I can appreciate the effort, even though I am not convinced the space savings are great enough to justify all those strange visuals in the Safari tabs. 
</p>

<h4 id="vertical">Vertical</h4>

<p>
As the preciousness of vertical space is one of my favourite topics, let&#8217;s make a rest here and take this a bit further. Apple saved some space by unifying the window&#8217;s title bar with the Tab Bar and I already eliminated the Bookmarks Bar for good a few paragraphs ago. So what&#8217;s left? The address field, a.k.a. the Toolbar in Apple&#8217;s terminology. That bar takes up further vertical space and is not used most of the time as only the back button is needed regularly.
</p><p>
Indeed, Safari <em>can</em> hide the address field and you can temporarily unhide it using ⌘-L. You can enter an URL then and after hitting return, the bar will be hidden again. That&#8217;s quite efficient, leaves you with a clear screen and in case you do a fair bit of your browser navigation by keyboard, this looks like a feasibly option which maximises the browsing space at first.
</p><p>
Unfortunately Safari&#8217;s implementation of the auto-hiding is somewhat buggy and after a while of browsing and URL editing the address field will cease being hidden and become permanently visible again. Hence such a browsing strategy <a href="http://earthlingsoft.net/ssp/blog/2003/01/safari#toolbar">never really works out in Safari as it existed so far</a> (and Apple&#8217;s stupid non-A-Z keyboard equivalents for those commands make trying to hide / unhide the &#8216;bars&#8217; by keyboard equivalents an exercise in frustration).
</p><p>
In my opinion it&#8217;d be cool if Safari could just show the most relevant buttons on the side of the window - as horizontal space is cheap, that&#8217;d be revolutionarily cool and useful. - Uh, wait, I may just be a closet-fan of IE5/Mac:
</p><p class="centred">
<a href="http://earthlingsoft.net/ssp/blog/graphics/IE5SideToolbar.png" title="Click to enlarge."><img src="http://earthlingsoft.net/ssp/blog/graphics/IE5SideToolbar.png" style="width:95%;max-width:669px;max-height:480px;" alt="Toolbar on the side in Internet Explorer 5 for Mac"></a>
</p>

<h4 id="fin">Fin</h4>

<p>
OK, that&#8217;s it. Safari 4b1 is a bigger step UI-wise than I would have expected. Yet, many of its changes seem gimmicky and not fully thought through. Be it for offline-viewing of my surfing history or for the fact that they tried to nick the best browser features left and right without visibly demonstrating that they&#8217;re also convinced by the underlying ideas (say, Google Chrome&#8217;s multi-process architecture is completely missing). 
</p><p>
Even though Apple is becoming quite Microsoftish in the way that they ship WebKit with their OS and you practically can&#8217;t remove it from the machine without breaking loads of things, Safari remains just a browser. It&#8217;s a µ between it or Mozilla&#8217;s or Google&#8217;s or Opera&#8217;s browsers and switching is not a big deal if one starts disliking one&#8217;s current browser. Let&#8217;s see where this takes us.
</p>

<p class="update">
Safari 4 has been released since. Why not read the <a href="http://earthlingsoft.net/ssp/blog/2009/06/safari_reloaded">post on it and on working around its shortcomings</a> as well?
</p>
]]></description>
<dc:subject>Software</dc:subject>
<dc:creator>ssp</dc:creator>
<dc:date>2009-02-25T23:41:16+01:00</dc:date>
</item>


</rdf:RDF>