<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>ollicle.com</title>
    <link rel="alternate" type="text/html" href="http://www.ollicle.com/" />
    <link rel="self" type="application/atom+xml" href="http://www.ollicle.com/atom.xml" />
    <id>tag:www.ollicle.com,2011-06-02://2</id>
    <updated>2012-02-19T02:21:28Z</updated>
    <subtitle>Oliver Boermans is a design geek in Adelaide, South Australia: ollicle.com is a place for Ollie to rant, reflect and share.</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Pro 5.13-en</generator>

<entry>
    <title>Your Google tracking parameters are an eye-sore</title>
    <link rel="alternate" type="text/html" href="http://www.ollicle.com/2012/feb/19/utm_rubbish.html" />
    <id>tag:www.ollicle.com,2012://2.112</id>

    <published>2012-02-19T02:18:58Z</published>
    <updated>2012-02-19T02:21:28Z</updated>

    <summary>My Tidy URL bookmarklet helps me strip Google link tracking parameters from the links I share. The following is an old man rant on rubbish in URLs.</summary>
    <author>
        <name>Ollie</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://www.ollicle.com/">
        <![CDATA[<p>My <a href="http://www.ollicle.com/projects/bookmarklets/tidy-url/">Tidy URL bookmarklet</a> helps me strip Google link tracking parameters from the links I share.  The following is an old man rant on rubbish in <del>our streets</del> URLs.</p>

<p>If you are spending money on advertising you want to know you’re not wasting your money. Or as Google puts it:</p>

<blockquote>
  <p>Tagging your online ads is an important prerequisite to allowing Google Analytics to show you which marketing activities are really paying off.</p>
</blockquote>

<p>from Google Analytics Help - <a href="http://support.google.com/googleanalytics/bin/answer.py?hl=en&amp;answer=55518">How do I tag my links?</a></p>

<p>When you ‘tag’ a link you essentially add parameters to the end of the URL. Usually this extension to your links means nothing to your web server or how your website works. Instead it is there purely for the benefit of the Google Analytics JavaScript running in the background. Tracking the comings and goings on your site.</p>

<p>Why is it then, as an infrequent ad clicker, am I seeing these tracking codes in the location bar of my browser everyday? </p>

<p>As someone who still enjoys their RSS feeds the biggest source of URL rubbish is <a href="http://feedburner.google.com/">Feedburner</a>. Site authors who see their blogs as a form of advertising use Feedburner to track visits to their site. Click a link in their RSS feed and they get a report item in Google Analytics as they do for tracked banner ad clicks.</p>

<p>The second most common source of Google link cruft is… pretty much everywhere links are shared. Emailed from friends or from Twitter – at least once the URL has finished redirecting through a number of link ‘shortening’ services. </p>

<p>In the good old days, before these link shorteners were in vogue (let alone built into Twitter) it would be necessary to include links in our tweets looking lean and clean. If the URL was too lengthy there would be no space for the accompanying smart arse remark. Around the same time including ‘www.’ in your hrefs was uncool and the appearance of ‘.html’ or ‘.php’ in your links marked you out a dinosaur.</p>

<p>Kids these days either don’t give a damn about URL littering, or are so seduced by the flow of intoxicating information flowing into Google Analytics they don’t notice their once trim links are looking saggy around the edges.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>An update</title>
    <link rel="alternate" type="text/html" href="http://www.ollicle.com/2011/jun/06/netnewswire-update.html" />
    <id>tag:www.ollicle.com,2011://2.109</id>

    <published>2011-06-06T00:16:09Z</published>
    <updated>2011-06-06T00:16:13Z</updated>

    <summary>An overdue update on my styles for NetNewsWire and changes ahead.</summary>
    <author>
        <name>Ollie</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://www.ollicle.com/">
        <![CDATA[<p>Time for an overdue update on <a href="http://www.ollicle.com/projects/netnewswire/">my styles for NetNewsWire</a>.</p>

<p>After some sustained breath holding for the follow up release of the full new version of <a href="http://netnewswireapp.com/" title="netnewswireapp.com">NetNewsWire</a> - Brent&#8217;s selling of his baby <a href="http://inessential.com/2011/06/03/netnewswire_acquired_by_black_pixel" title="inessential.com">to Black Pixel</a> has revealed the copious <a href="http://daringfireball.net/2011/06/netnewswire_black_pixel" title="Daring Fireball">work to be done</a> before we see a fresh release.</p>

<p>Changes to how the styles are loaded in The Mac App Store enabled <a href="http://itunes.apple.com/au/app/netnewswire-lite/id418666663?mt=12">lite version</a> broke my <a href="http://www.ollicle.com/2006/nov/28/jquery_netnewswire_style.html">hacky method</a> for loading JavaScript library files; This together with undocumented changes to the template tags has left <a href="http://www.ollicle.com/projects/netnewswire/reflex/">Ollicle Reflex</a> non-functioning in what is the newest version of NetNewsWire. It is impossible to know if the full version will share these changes, so time I might spend now working around them would appear premature. </p>

<p>Most NetNewsWire users likely have little reason to consider the possibility of <a href="http://ranchero.com/category/netnewswire-styles/" title="ranchero.com">more styles</a> than what come in the box. They are focussed on the delivered content and the shipped styles are more than adequate for that. With bigger problems to solve such as the big bad sync monster and the ever evolving ecosystem of content sharing services to cater to, styles are unlikely be high on the Black Pixel hit list for NetNewsWire 4 and nor should it! </p>

<p>If you disagree don&#8217;t waste your energy telling me about it, send <a href="http://blackpixel.com/blog/1145/black-pixel-acquires-netnewswire/">Black Pixel</a> a note. In the meanwhile I&#8217;m not fussed. <a href="http://netnewswireapp.com/mac/">NetNewsWire 3.2</a> works great and I&#8217;m in no danger of running out of internet to read.</p>

<p>Hearty congratulations to Brent for having the courage to admit his NetNewsWire family had outgrown his humble home. I&#8217;m looking forward to where Black Pixel take them almost as much as I am to seeing what Brent pulls out of the shed now that the &#8216;kids&#8217; are out from under his feet.</p>

<p>Speaking of children and exciting change, come October, my beautiful and clever fiancé  <a href="http://kerina.net/" title="kerina.net">Kerina</a> and I are expecting to be actual <em>non-metaphorical</em> parents.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Happy birthday BlotBot</title>
    <link rel="alternate" type="text/html" href="http://www.ollicle.com/2010/dec/05/blotbot-co.html" />
    <id>tag:besidr.com,2010://2.93</id>

    <published>2010-12-05T10:45:43Z</published>
    <updated>2011-05-29T11:21:28Z</updated>

    <summary>This fun one page site I built uses SVG and JavaScript to draw a random selection of shapes – leaving interpretation to the viewer.</summary>
    <author>
        <name>Ollie</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://www.ollicle.com/">
        <![CDATA[<p>Today was BlotBot&#8217;s first day live on <a href="http://blotbot.co/">http://blotbot.co/</a>. I wanted to mark the day with a brief introduction.</p>

<p>Recently I completed a short <a href="http://www.w3techcourses.com/">introductory course on SVG</a>. I took Wednesday mornings off work for 5 weeks to complete our set assignments. The last open brief assignment, and a few weekends, resulted in the first version of <a href="http://blotbot.co">BlotBot</a>.</p>

<p>Also worth crediting:</p>

<ul>
<li><p>Ben Alman&#8217;s <a href="http://benalman.com/projects/jquery-hashchange-plugin/">jquery hashchange plugin</a> that helps keep the blots bookmarkable in a few more browsers.</p></li>
<li><p>A stripped down version of Paul Irish and Faruk Ate?&#8217;s <a href="http://www.modernizr.com/">Modernizr</a>. A feature detection JavaScript library that helps keep BlotBot nice to visitors whose browsers don&#8217;t support SVG.</p></li>
<li><p><a href="http://code.google.com/p/svg-edit/">SVG-Edit</a> proved very valuable for creating some of BlotBot&#8217;s precise forms.</p></li>
</ul>

<p>Follow <a href="http://twitter.com/blotbot">@blotbot</a> on Twitter, where I hope to continue <a href="http://twitter.com/#!/mostmodernist/status/11590454843801600">blotspotting</a> for as long as someone&#8217;s interested.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Rebranding BP</title>
    <link rel="alternate" type="text/html" href="http://www.ollicle.com/2010/may/28/rebranding_bp.html" />
    <id>tag:besidr.com,2010://2.92</id>

    <published>2010-05-28T07:53:25Z</published>
    <updated>2011-05-29T11:21:28Z</updated>

    <summary>This logo is a simple visual representation of the new strengthened association between BP and what they mine. From now on, the BP flower will be seen as a weakly disguised &apos;O&apos; for &apos;OIL&apos;.</summary>
    <author>
        <name>Ollie</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://www.ollicle.com/">
        <![CDATA[<p>Don&#8217;t you hate it when a client makes a mess of the perfectly good branding work.</p>

<p>Though both their action and inaction in the gulf, BP has changed what we see when we think of their brand. At the same time the accident has demonstrated how dirty this energy source can be. </p>

<p>This is the logo I submitted to Greenpeace UK for their call to <a href="http://www.greenpeace.org.uk/files/tarsands/logo-competition.html">redesign BP&#8217;s logo</a>.</p>

<p><img src="/2010/may/28/img/bp-oil.png" alt="BP oil" title="" /></p>
]]>
        

    </content>
</entry>

<entry>
    <title>The universal back button</title>
    <link rel="alternate" type="text/html" href="http://www.ollicle.com/2010/may/24/universal_back_button.html" />
    <id>tag:besidr.com,2010://2.91</id>

    <published>2010-05-24T07:00:26Z</published>
    <updated>2011-10-06T02:31:03Z</updated>

    <summary>Is it possible for the back button to escape the browser? I&apos;d like to see referrers do for my desktop what they do for the web. Here&apos;s to hoping.</summary>
    <author>
        <name>Ollie</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://www.ollicle.com/">
        <![CDATA[<p>Brent proposed a <a href="http://inessential.com/2010/05/23/apps_that_work_together_on_ipad" title="Apps that work together - on iPad">very sensible idea</a> today on his blog which I would like to take a tangent from and run with.</p>

<p>I read a lot on the web and increasingly it&#8217;s becoming a social activity. Links come from all directions: Email, Twitter, RSS feeds, IM, Facebook and surprise surprise, other webpages. These links are the stuff of many of conversations we share, and a great thing about the web is the friction for the conversation to move across the various internet technologies is minimal. The URL breaks all the boundaries. In theory anyway. </p>

<p>On my Mac when I click a button to pass a link from one application to another, it&#8217;s up to me to remember where it came from, which conversation it was central to and who and where I should direct my response to regarding it. This mental load heavier on an iPad [or iPod Touch in my case] when you can&#8217;t leave the window of the first application visibly open as a reminder.</p>

<p>The popular response to this problem is to design the application around the conversation activity. Build the browser into the feed reader, integrate the twitter posting widget into the photo software, add the email app into the bookmarking do-dad. This approach will bring glee to those who it fits nicely, but tends to become <em>less</em> useful, or worse, heavy and bloated for those with slightly different needs.</p>

<p>The web has an answer to this I would love to see some analogy of on my Mac - the HTTP referrer. When you click a link on a web page, simplistically your browser will send a request for that page to the server hosting it; Along with that request, it carries a note of where the link came from. This information will appear in the visitor logs or Google Analytics reports for that site. It goes a long way to connect the participants of online conversations.</p>

<p>The closest thing to it in practice on my computer is the history in my browser that enables the back button to work. I am web developer so here is my question to those who know about this stuff: Is it possible for the back button escape the browser? </p>

<p>On a Mac maybe something like <a href="http://www.choosyosx.com/">Choosy</a> could form the basis for the background app that Brent speaks of?</p>

<p>Imagine clicking the normally greyed out back button and have your twitter application launch - displaying the tweet you clicked to load that page. That would fill this particular software user with glee, at least until I quickly forgot there was a time when I couldn&#8217;t do such a thing.</p>
]]>
        <![CDATA[<h3>25 May 2010</h3>

<p>In response to Brent&#8217;s post, Rainer Brockerhoff also writes he&#8217;s been thinking about a HTTP referrer like approach to this problem: <a href="http://brockerhoff.net/blog/2010/05/24/re-apps-that-work-together-—-on-ipad/">Re: Apps that work together — on iPad</a></p>

<p>Unlike me, Rainer knows a little about OSX development and goes on to explain how it might be possible, before concluding:</p>

<blockquote>
  <p>All this needs filing enhancement requests and Apple would have to do the required twiddling inside their code base - or rather, bases, as this would be useful to have both on the iPhone/iPad and the Mac side. It would take a long time, if it&#8217;s done at all.</p>
  
  <p>The alternative would be to developers to, informally, establish a convention for incorporating this into the URL itself. So we&#8217;d have something like:
  calledscheme:///the/url/parameters&amp;?REF=callingscheme://some/url/to/return</p>
  
  <p>Probably the second part would have to be suitable encoded/escaped, too. Maybe this would be a good topic for discussion at WWDC?</p>
</blockquote>

<p>I have faith that the Mac dev community can get together to make this work.</p>

<h3>27 May 2010</h3>

<p>Daniel Stødle has done some clever work. He has released a <a href="http://www.scsc.no/products/ubb/" title="Universal Back Button">working menu bar app</a> that infers the previous application from debugging information already available in Apple events.</p>

<p>Quoting Daniel&#8217;s blog post, <a href="http://www.scsc.no/blog/2010/05-26-universal-back-button-released-for-mac-os-x.html">Universal Back Button released for Mac OS X</a></p>

<blockquote>
  <p>By continuously analyzing the output from the console log, UBB can infer which app caused a different app to open a file or link, and thus create a &#8220;back relation&#8221; to the app.</p>
  
  <p>For instance, when I click a link in iChat, a &#8220;GURL&#8221; Apple Event is sent to my default web browser (Safari, FIrefox, etc.). UBB notices this, and when you click the universal back button in your menubar, UBB switches you right back to iChat.</p>
  
  <p>Of course, the mechanism has some drawbacks. For instance, there is no association between different windows - the association only exists between different apps. So if you have several windows open in iChat, the UBB won&#8217;t necessarily bring you back to the window that sent you to Safari in the first place. But, we have to start somewhere, and this is as good a starting point as any.</p>
</blockquote>

<p>This is a bigger step in than I could have imagined possible in such a small time. Daniel includes a link in this blog post to his source code for others to build upon. I&#8217;m looking forward to more looking back on my Mac!</p>

<h3>28 May 2010</h3>

<p>Billy Gray <a href="http://www.zetetic.net/blog/2010/05/27/re-apps-that-work-together-on-ipad">adds his support</a> for Brent&#8217;s suggestion and expands on the need for a service discovery mechanism.</p>

<p>Such functionality would be an incentive to uninstall apps from our devices to keep the list of apps jostling to accept that URL to a minimum. I have a lot of Twitter apps on my iPod! For example, the number of apps my Mac offers when I hover the &#8216;Open with&#8217; contextual menu item on a .html file is well out of control. An interesting problem.</p>
]]>
    </content>
</entry>

<entry>
    <title>Back from the dead</title>
    <link rel="alternate" type="text/html" href="http://www.ollicle.com/2010/may/09/site-upgrade.html" />
    <id>tag:besidr.com,2010://2.90</id>

    <published>2010-05-09T12:05:52Z</published>
    <updated>2011-05-29T11:21:28Z</updated>

    <summary>Today I took this site offline for a few hours while I moved aside the old bones to make room for a brand new skeleton. Naturally the skin and flesh still need some work.</summary>
    <author>
        <name>Ollie</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://www.ollicle.com/">
        <![CDATA[<p>Today I took this site offline for a few hours while I moved aside the old bones to make room for a brand new skeleton. Naturally the skin and flesh still need some work.</p>

<p>The old ollicle.com was powered by an ancient version of Movable Type, held together with discontinued plug-ins and the kind of bits that most people use to hold their bread bags shut.</p>

<p>Upgrading became easier once I had made the tough decision to discard anything that wasn&#8217;t straight forward to transfer, or couldn’t wait until another day. I&#8217;ve scraped the templates back to the bone for a clean fresh start. The page and folder management offered by the current Movable Type system has proved useful to build some permanent homes for my <a href="/projects/">project pages</a>. </p>

<p>The main navigation is the one part on which I&#8217;ve spent some time messing with CSS and jQuery. Even that has a way to go to satisfy me that it’s right. With the big upgrade job out of the way there&#8217;s a myriad of design details waiting for attention. The content of this site though, is in greatest need for time investment. Going though the old entries to fix broken links and images made me all the more aware of the need to dust off my neglected projects.</p>

<p>Feels good to blog again.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Reduce attention in NetNewsWire with AppleScript</title>
    <link rel="alternate" type="text/html" href="http://www.ollicle.com/2009/nov/14/netnewswire_applescript_attention.html" />
    <id>tag:besidr.com,2009://2.89</id>

    <published>2009-11-14T10:20:45Z</published>
    <updated>2011-05-29T11:21:27Z</updated>

    <summary><![CDATA[There&rsquo;s too much junk in my NetNewsWire so I&rsquo;ve written an AppleScript to penalise time wasting feeds.]]></summary>
    <author>
        <name>Ollie</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://www.ollicle.com/">
        <![CDATA[<p>There&rsquo;s too much junk in my NetNewsWire so I&rsquo;ve written an AppleScript to penalise time wasting feeds.</p>

<p>Many things interest me. As a result, over the last number of years, I have subscribed to feeds from way too many sources. Currently in NetNewsWire I have over two and a half thousand unread items. The only problem with this is the number of highly interesting items that I imagine I miss. They are lost in the crowd of items that are only mildly fascinating.</p>

<p>NetNewsWire provides a tool to help deal with this scenario. By choosing to <a href="http://inessential.com/2006/03/17/netnewswire_2_1_sorting_by_attention" title="inessential.com">sort by attention</a> feeds I am more likely to value float to the top. </p>

<p>From the <a href="http://ranchero.com/netnewswire/help/3.2/en/attentionsorting.html">NetNewsWire manual</a>:</p>

<blockquote>
  <p>How does NetNewsWire figure out attention?</p>
  
  <p>It watches what you do with the items in each feed. If you flag items in a feed, send items via email, post to Delicious, or post to your weblog, it figures this feed is pretty important to you. The more you do those things, the more important is the feed.</p>
</blockquote>

<p>After using this feature for some time, the feeds I interact with most frequently have made their way to the top of my subscription list. Trouble is, this system has significant bias towards feeds which carry the highest posting frequency. Although I may only be interested in a small percentage of the items in a particular rapid fire feed, it will likely rate higher than another feed with only sporadic updates; Even if I find most of them invaluable.</p>

<p>Unsubscribing from feeds is a solution, and I have been, but I&rsquo;d rather do it based on evidence and so far attention score is the best measure I&rsquo;ve got. For the attention score in NetNewsWire to better represent a feed&rsquo;s relative value it needs some help from me. I need to penalise the time wasters. </p>

<p>Fortunately NetNewsWire provides a method to influence the attention score of a feed item as described in the <a href="http://newsgator.mykbpro.com/Article_9A3EC.aspx">Newsgator knowledge base</a>:</p>

<blockquote>
  <p>How can I change the Attention Score of a feed?</p>
  
  <p>You can adjust the score for a feed using an AppleScript script. Here are the details from the AppleScript dictionary for NetNewsWire:</p>
  
  <p>&#8220;scripted attention score (integer) : To affect the calculated attention score, you can change the scripted attention score. The scripted attention score is a component of the calculated attention score (it&#8217;s added).&#8221;</p>
  
  <p>The scripted attention score is a property of a subscription object. (Tip: to lower a score, make it a negative number.)</p>
</blockquote>

<p>So I put together an AppleScript to <strong>Reduce Attention Score of the feed</strong> of the selected post:</p>

<pre><code>tell application "NetNewsWire"
    if exists selectedHeadline then
        set thisSubscription to subscription of selectedHeadline
        set currentScore to scripted attention score of thisSubscription
        set scripted attention score of thisSubscription to currentScore - 1

        set growlDescription to "Score reduced to " &amp; calculated attention score of thisSubscription

        tell application "GrowlHelperApp"
            register as application "NetNewsWireScore" all notifications {"Attention"} default notifications {"Attention"} icon of application "NetNewsWire"
            notify with name "Attention" title "Attention" application name "NetNewsWire" description growlDescription icon of application "NetNewsWire"
        end tell

        tell application "System Events" to keystroke "+"

    else if exists selectedSubscription then
        tell application "System Events" to keystroke "+"
    end if
end tell
</code></pre>

<p>Incorportating NetNewsWire&rsquo;s shortcut (to jump to the next unread item) for efficiency.</p>

<p>To install this script I suggest you copy-paste it into a new script file in <a href="http://www.apple.com/macosx/what-is-macosx/apps-and-utilities.html#scripteditor" title="Apple site">Script Editor</a> and save it with a meaningful title into <code>~/Library/Scripts/Applications/NetNewsWire/</code>.</p>

<p><a href="http://www.red-sweater.com/fastscripts/">FastScripts</a> made it easy to a assign a keyboard short-cut to launch the script. I assigned Option-Space, mostly for it&rsquo;s memorable similarity to hitting the space-bar. </p>

<p>Including a Growl notification reassures me something actually happened when it runs.</p>

<p>While I was at it, I made another to <strong>Increase Attention score</strong> of the selcted post:</p>

<pre><code>tell application "NetNewsWire"
    if exists selectedHeadline then
        set thisSubscription to subscription of selectedHeadline
        set currentScore to scripted attention score of thisSubscription
        set scripted attention score of thisSubscription to currentScore + 1

        set growlDescription to "Score increased to " &amp; calculated attention score of thisSubscription

        tell application "GrowlHelperApp"
            register as application "NetNewsWireScore" all notifications {"Attention"} default notifications {"Attention"} icon of application "NetNewsWire"
            notify with name "Attention" title "Attention" application name "NetNewsWire" description growlDescription icon of application "NetNewsWire"
        end tell

        tell application "System Events" to keystroke "+"

    else if exists selectedSubscription then
        tell application "System Events" to keystroke "+"
    end if
end tell
</code></pre>

<p>To trigger this script I chose Command-space. So now when I have finished looking at a post in NetNewsWire I have three choices:</p>

<ul>
<li>Hitting Space (or +) takes me to the next unread item as normal.</li>
<li>Uninteresting or redundant: Option-Space to mark it as a time waster before moving on.</li>
<li>Of value but doesn&rsquo;t inspire a measurable action: Command-Space to reward the feed anyway.</li>
</ul>

<p>It will be very interesting to see what impact using this technique will make on my subsciption list.</p>
]]>
        <![CDATA[<h3>28 November 2009</h3>

<p>After noticing an issue with these scripts where it was being triggered multiple times I&#8217;ve had a closer look and made some changes to them. </p>

<p>The + key is the proper &#8220;Next unread&#8221; shortcut to jump to the next unread item in NetNewsWire. Space-bar only does this if there is no more page scroll.</p>

<p>This change also stopped the unwanted looping. Generally I still had the Option key depressed when the space-bar key was evoked by the first version of the script, this re-triggered the script a number of times.</p>

<p>Also some a curiosity satisfying feedback to the Growl notification; The current calculated score of the modified feed.</p>
]]>
    </content>
</entry>

<entry>
    <title>Ollice Reflex 9 - it&#8217;s about time</title>
    <link rel="alternate" type="text/html" href="http://www.ollicle.com/2009/nov/07/ollicle_reflex_9_update.html" />
    <id>tag:besidr.com,2009://2.88</id>

    <published>2009-11-07T08:27:52Z</published>
    <updated>2011-05-29T11:21:27Z</updated>

    <summary>A stylesheet for NetNewsWire that uses clean typography, clever CSS and crafty JavaScript to smooth out the rough edges of feed reading. Now updated to version 9 with some timely new features.</summary>
    <author>
        <name>Ollie</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://www.ollicle.com/">
        <![CDATA[<p>A stylesheet for NetNewsWire that uses clean typography, clever CSS and crafty JavaScript to smooth out the rough edges of feed reading. Now updated to version 9 with some timely new features. Keep reading for a summary of what&rsquo;s new.</p>

<h2>Download and install</h2>

<p>Download latest version: <a href="/projects/netnewswire/reflex/">Ollicle Reflex</a></p>

<p>Double-click the unzipped .nnwstyle file - NetNewsWire will copy it to where it needs to be:</p>

<pre><code>~/Library/Application Support/NetNewsWire/StyleSheets/
</code></pre>

<p>If you are using an old version of Ollicle Reflex already installed you will need to restart NetNewsWire for the new one to load.</p>

<p>This style uses JavaScript to do some things CSS alone cannot. Make sure you enable it:</p>

<ul>
<li><p>NetNewsWire Preferences</p>

<ul>
<li><p>Browsing</p>

<ul>
<li><p>News Items</p>

<ul>
<li>Enable JavaScript</li>
</ul></li>
</ul></li>
</ul></li>
</ul>

<p>If you haven&#8217;t already you can also select Ollicle Reflex from the Style Sheet menu in the same place or in the right hand end of NetNewsWire&rsquo;s status bar.</p>

<h3>Requirements</h3>

<p>This style has been developed and tested on a PowerPC Mac running <a href="http://www.newsgator.com/Individuals/NetNewsWire/">NetNewsWire</a> 3.2.3 on Mac OS X 10.5.8 (Leopard for the cat fanciers) with Safari 4 (which determines the version of WebKit NetNewsWire is sporting). <em>I&rsquo;m interested to know how it works for you.</em></p>

<p>Note: <a href="http://ranchero.com/category/netnewswire-styles/">styles for NetNewsWire</a> do not affect the Combined view &ndash; only the Traditional and Widescreen views.</p>

<h2>About a year ago</h2>

<p>I <a href="/2008/mar/08/ollicle_reflex_netnewswire_style.html">posted</a> an update of Ollicle Reflex. More recently, a tiny new feature in NetNewsWire 3.2 has got me fired up to make a fresh version.</p>

<p>From <a href="http://en.wikipedia.org/wiki/ISO_8601">Wikipedia</a>:</p>

<blockquote>
  <p>ISO 8601 is an international standard covering the exchange of date and time-related data.</p>
</blockquote>

<p>NetNewsWire now includes the ISO formatted date in UTC as a title attribute on the date (in the meta information of each feed visible in the description pane). Hover over the date there and you&#8217;ll see the title appear in a little yellow rectangle. It will read something like this: <code>2009-09-27T14:37:53Z</code>.</p>

<p>Ugly isn&#8217;t it! Dates formatted in this way are not intended for the eyes of humans. So why bother? When the date is formatted in a predicatable manner such as this, it&#8217;s <del>much easier</del> possible to write software to make sense of it. Or in this case, use JavaScript in a NetNewsWire style to make the date useful.</p>

<h2>Fuzzy dates</h2>

<p>Generally when I look at a date of a feed in my feed reader I want to know how long ago it was posted. Not exactly, just a rough idea. To reduce the mental mathematics needed to determine this I&#8217;ve made use of <a href="http://timeago.yarp.com/" title="Thanks Ryan!">timeago</a> a jQuery plugin written specifically for this purpose. Out of the box NetNewsWire shows me the date and time like this &#8220;30/10/09 10:47 PM&#8221;. With the timeago plugin integrated, Ollicle Reflex uses the new ISO date to dynamically replace this with something friendlier like &#8220;about 18 hours ago&#8221;.</p>

<p>Clicking the fuzzy date will toggle between it and the orginal.</p>

<h2>Aging posts</h2>

<p><a href="http://twitter.com/ollicle" title="@ollicle">Twitter</a> has taken a large bite out of the time I spend in my feedreader looking for new and interesting stuff on the web. As a result it&rsquo;s not unusual for me to have too many old posts from blogs I haven&#8217;t clicked on for a while. To reflect the fading relevance of these old posts, Ollicle Reflex will subtely and incrementally alter the background and text colours in a way reminicent of the pages of an old book.</p>

<p>This effect is only visible in the white style and only really begins to be evident once a post is about a month old. The colour continues to brown for a year at which point everything on the web is ancient history.</p>

<h2>Refinements</h2>

<p>The remaining improvements are refinements to <a href="/projects/netnewswire/reflex/">existing features</a>. These features are designed to go unnoticed which is ultimately the idea of this style.</p>

<h3>Image layout much improved</h3>

<p>A few small changes, decisions and bug fixes have made a huge difference to how Ollicle Reflex flows text around floated images. For my use, this is the most significant improvement in this version.</p>

<h3>Design tweaks</h3>

<ul>
<li><p>Blockquotes now look more like quotes with the addition of Big Quote Marks&trade;</p></li>
<li><p>CSS transistions have made interface animations smoother and more reliable.</p></li>
<li><p>The feed preference button now looks more like what it does.</p></li>
<li><p>Refined the design of the diff indicators of highlighted feed changes. Whitespace only changes are now ignored.</p></li>
<li><p>A bunch of tiny changes only a mother would notice.</p></li>
</ul>

<h3>Under the hood</h3>

<ul>
<li><p>Updated to use jQuery 1.3.2</p>

<p>Might be faster - I can&#8217;t tell, maybe you can.</p></li>
<li><p>Transparent rgba colours were handy for keeping the aging effect simple.</p></li>
</ul>

<h2>What next</h2>

<p>Let me know how it works for you! Although I have added more things to the todo list than were removed making this version. That doesn&#8217;t mean I&#8217;m not interested in feedback and ideas for what might make version 10 that much better.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Ollicle Reflex refined for smarter feed reading</title>
    <link rel="alternate" type="text/html" href="http://www.ollicle.com/2008/mar/08/ollicle_reflex_netnewswire_style.html" />
    <id>tag:besidr.com,2008://2.87</id>

    <published>2008-03-08T02:52:01Z</published>
    <updated>2011-05-29T11:21:25Z</updated>

    <summary>The sixth iteration of my NetNewsWire style, Ollicle Reflex, is smarter than your average blog style. CSS and JavaScript work as a team to keep your feeds sharp.</summary>
    <author>
        <name>Ollie</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://www.ollicle.com/">
        <![CDATA[<p>It&#8217;s been a long time cooking, but I am finally taking version 6 of Ollicle Reflex out of the oven.</p>

<h2>Download and install</h2>

<p class="ollicle">Download latest version: <a href="/projects/netnewswire/reflex/">Ollicle Reflex</a></p>

<p>Double-click the unzipped .nnwstyle file and NetNewsWire will copy it to where it needs to be.</p>

<pre><code>~/Library/Application Support/NetNewsWire/StyleSheets/
</code></pre>

<p>This style uses JavaScript to do some things CSS alone cannot. Make sure you enable it</p>

<ul>
<li>NetNewsWire Preferences
<ul>
<li>Browsing
<ul>
<li>News Items
<ul>
<li>Enable JavaScript</li>
</ul></li>
</ul></li>
</ul></li>
</ul>

<h3>Requirements</h3>

<p>I have not tested this style extensively with anything other than the current version of <a href="http://www.newsgator.com/Individuals/NetNewsWire/">NetNewsWire (3.1.3)</a> and <a href="http://www.apple.com/safari/">Safari 3</a> (which determines the version of WebKit NetNewsWire is sporting).</p>

<p><strong>Note</strong>: styles for NetNewsWire 3 do not affect the Combined view - only the Traditional and Widescreen views.</p>

<h2>Key features</h2>

<ul>
<li><h3>Simple clean style</h3>

<p>Doesn&#8217;t get in the way of your choice of feed reading font and size. <strong>New for Version 6</strong>: added some simple styling to make data tables easier to read.</p></li>
<li><h3>Clever image handling</h3>

<p>Large images are scaled to fit available space. <strong>New for Version 6</strong>: automatic alignment of smaller images, avoiding awkwardly squashed text.</p></li>
<li><h3>Automatic line height</h3>

<p>Optimises line spacing of the feed text to suit your window and font size. More about this: <a href="/2005/oct/12/javascript_flex_css.html">Flex CSS with JavaScript for better reading</a></p></li>
<li><h3>Del.icio.us Tagometer</h3>

<p>The number of del.icio.us bookmarks for the linked webpage is displayed along with the most popular tags they assigned to it. <strong>New for Version 6</strong>: a little hackery to see through feedburner urls and a more compact and  stylish look.</p></li>
<li><h3>Tidy diff display for recent feed changes</h3>

<p>With Highlight Differences checked in NetNewsWires general preferences you can toggle between the current and previous version of a changed feed. <strong>New for Version 6</strong>: feed changes are highlighted in a vertical bar in the left hand column. Hovering the bar with your cursor highlights additions inline, clicking it hides additions and reveals the deleted content.</p></li>
<li><h3>A choice of layouts</h3>

<p>Two layouts to choose from: One column (default for NetNewsWires Widescreen layout) with the feed info in the footer, or two column (default for the Traditional layout) with the feed info persistent in the right hand margin. <strong>New for Version 6</strong>: now possible to set a default irrespective of your choice of NNW layout (see below).</p></li>
<li><h3>Dark or light theme</h3>

<p>Choose between the default white background or the image enhancing black background. <strong>New for Version 6</strong>: changed method for setting black as the default (see below).</p></li>
<li><h3>Per feed layout and theme prefs</h3>

<p>Clicking the little button in the top right hand corner of the feed pane toggles the preference pop-up for your currently viewed feed. Cookies NetNewsWire shares with Safari are used to store your selection of layout or theme for any post from that feed. <strong>New for Version 6</strong>: the preference pop-up now scales nicely when you make the feed text bigger and smaller with Command +/-.</p></li>
<li><h3>Customisable defaults</h3>

<p><strong>New for Version 6</strong>: If you don&#8217;t like my selection of defaults in Ollicle Reflex I have made a few of the prefences more easily configurable. I have removed the unintuitive hack for changing the default theme (adding &#8220;Black&#8221; to the filename of the the nnwstyle package). Now you will need to roll up your sleeves and launch your text editor. </p>

<p>Locate the Ollicle Reflex style package <code>~/Library/Application Support/NetNewsWire/StyleSheets/Ollicle Reflex.nnwstyle</code> reveal it&#8217;s contents by right (or control) clicking it and selecting &#8220;Show Package Contents&#8221;.</p>

<p>At the top of the contained &#8220;javascript.js&#8221; you will find values set within the curly brackets of <code>var userPref = {};</code>. To set a default layout you need to first uncomment the line by removing the <code>//</code> from the start of the line. Otherwise make sure you only edit what falls between the colon and the comma, and ensure you leave the quotes around the layout and skin names. Note the last item shouldn&#8217;t have a trailing comma. </p>

<p>To see your changes take effect it is necessary to relaunch NetNewsWire so it can update it&#8217;s cache of the style. </p>

<p>Maybe someday I&#8217;ll try my hand at making a small AppleScript app to edit these options in a more friendly manner. If in the meanwhile you manage to break it (the JavaScript elements of the style will stop working), you can always come back here and download the style again. </p></li>
</ul>

<h2>Screenshots</h2>

<p>I&#8217;d love to have a screencast to give you a better preview of the style. For now here&#8217;s a few screenshots that illustrate the font size and layout flexibility. Although, rather than waste time looking at them, I recommend scrolling back up the top of this page and downloading it.</p>

<h3>Widescreen NetNewsWire layout</h3>

<h4>One column layout by default</h4>

<p><a href="/2008/mar/08/img/one-column-wide-default.png"><img src="/2008/mar/08/img/one-column-wide-default-sml.png" alt="Widescreen one column layout" title="View full size screenshot" /></a></p>

<h4>Larger font size</h4>

<p><a href="/2008/mar/08/img/one-column-wide-big.png"><img src="/2008/mar/08/img/one-column-wide-big-sml.png" alt="Widescreen one column layout with large text" title="View full size screenshot" /></a></p>

<h4>Two column&#8212;smaller font size</h4>

<p><a href="/2008/mar/08/img/two-column-wide-small.png"><img src="/2008/mar/08/img/two-column-wide-small-sml.png" alt="Widescreen two column layout with small text" title="View full size screenshot" /></a></p>

<h3>Traditional NetNewsWire layout</h3>

<h4>Two column layout by default</h4>

<p><a href="/2008/mar/08/img/two-column-default.png"><img src="/2008/mar/08/img/two-column-default-sml.png" alt="Traditional two column layout" title="View full size screenshot" /></a></p>

<h4>Larger font size</h4>

<p><a href="/2008/mar/08/img/two-column-big.png"><img src="/2008/mar/08/img/two-column-big-sml.png" alt="Traditional two column layout with large text" title="View full size screenshot" /></a></p>

<h4>One column&#8212;arger font size</h4>

<p><a href="/2008/mar/08/img/one-column-big.png"><img src="/2008/mar/08/img/one-column-big-sml.png" alt="Traditional one column layout with large text" title="View full size screenshot" /></a></p>

<h3>Black background</h3>

<p><a href="/2008/mar/08/img/two-column-black.png"><img src="/2008/mar/08/img/two-column-black-sml.png" alt="Traditional two column layout with black background" title="View full size screenshot" /></a></p>

<h2>Scripting image layout is tricky</h2>

<p>The logic executed to determine if an image should be scaled, aligned or left inline is much simpler than my initial somewhat ambitious scheme. I was driven crazy trying to get my head around the increasingly complex possibilities that cascaded from attempting to consider how to handle clusters of images such as those often found in the FlickrBlog.</p>

<p>After sufficient frustration I decided to focus on the more common occurrence of individual images of unpredictable dimensions alongside or within a portion of text. In a nutshell, the trade-off is that images that ought to sit nicely alongside each other in the one row are now forced under one another vertically. Very occasionally this looks broken.</p>

<p>Many bloggers continue to use double line breaks instead of regular paragraphs. I&#8217;ll give them the benefit of doubt by pointing my accusatory finger at their blogging tools rather than their shoddy HTML. Regardless, this made the task of ensuring associated text and images remained close in the layout particularly challenging. I delayed the release of this style until I came up with a means to get the better of this puzzle.</p>

<h2>Why spend some much time on a simple looking style?</h2>

<p>The consistency and convenience of feed reading comes with a price. In the thoughtfully constructed HTML content of a RSS feed I get the author&#8217;s words and images. I also get the emphasis and structure of their sentences and also links to their references. I get their meaning. I don&#8217;t get their CSS. </p>

<p>Many readers, who consider themselves visually or design literate, appreciate the aesthetic of the original artifact of the authors website. Many web authors are dismayed to see the effort they put into the presentation of their posts wasted to feed readers who never see the intended context of the site itself. These people don&#8217;t need help finding each other. For everyone else, there is work that can be done. The decisions that go into CSS in a modern website address more than just aesthetic vision of the author. </p>

<p>CSS is the primary tool for removng the obstacles to easy reading. A website built within a given layout and structure provides enough restrictions to widths and heights that effort put into molding the text to best fit it&#8217;s space is worthwhile. Outside of the cushy environment of the homepage, in the diverse wilderness of RSS and Atom consumption, these constraints lose relevance. Therefore, outside of the author&#8217;s site, so does the author&#8217;s CSS.</p>

<p>A feed reader style like Ollicle Reflex, if it is to to fulfil the needs of a discerning reader, needs to be much smarter than a style for an average blog. Not only is the content presented by a feedreader more varied (and often broken) than any given site, the user of a good feed reader has a great deal more control over how how these feeds are viewed.</p>

<p>These diverse demands, and my curiosity, have driven me to turn to JavaScript in Ollicle Reflex. CSS alone struggles to keep the content looking consistently considered.</p>

<h3>Scratching my own back</h3>

<p>Like NetNewsWire, Ollicle Reflex is free. I build it chiefly to scratch my own itches. That said, I love to know others are using it so bring on the feedback! </p>

<p>To all of you who have been suffienctly tempted by my words above to click out of your feedreader to load ollicle.com to best appreciate it&#8217;s full artistic intent&#8230; Lets say I have put a little more effort into Ollicle Reflex than my site in recent years :/ Might have to get back onto that.</p>
]]>
        <![CDATA[<h3>14 March 2008</h3>

<p>Updated the download link above to version seven:</p>

<ul>
<li><p>User preference for line-height now works (Thanks Matt).</p></li>
<li><p>Added user preference (in javascript.js) to hide/show the del.icio.us tagometer (Good suggestion Jonathon).</p></li>
</ul>
]]>
    </content>
</entry>

<entry>
    <title>NetNewsWire style hack - Show web page instead of feed</title>
    <link rel="alternate" type="text/html" href="http://www.ollicle.com/2008/feb/07/netnewswire_style_hack.html" />
    <id>tag:besidr.com,2008://2.86</id>

    <published>2008-02-07T11:29:09Z</published>
    <updated>2011-05-29T11:21:25Z</updated>

    <summary>This stylesheet for NetNewsWire loads the linked web page instead of displaying the feed itself. It is a simple hack born from a question posed to the NetNewsWire email group yesterday.</summary>
    <author>
        <name>Ollie</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://www.ollicle.com/">
        <![CDATA[<p>This stylesheet for NetNewsWire loads the linked web page instead of displaying the feed itself. It is a simple hack born from a question posed to the NetNewsWire email group yesterday. So Jan, here&#8217;s your answer:</p>

<p class="download"><a href="/projects/netnewswire/wittrodt/ollicle-wittrodt1.zip">ollicle-wittrodt1.zip</a></p>

<p><img src="/2008/feb/07/img/wittrodt-screenshot.jpg" alt="Linked web page displayed in NetNewsWire HTML pane" title="" /></p>

<h2>Installation</h2>

<p>Double-clicking the contained <code>Ollicle Wittrodt.nnwstyle</code> package will prompt NetNewsWire to install the style in your Library.</p>

<p>Select <code>Ollicle Wittrodt</code> from your styles menu to use it.</p>

<p><strong>Note</strong>: If you haven&#8217;t already, you need to enable JavaScript for news items in NetNewsWire&#8217;s preferences for this style to do anything remotely special:</p>

<ul>
<li>NetNewsWire Preferences
<ul>
<li>Browsing
<ul>
<li>News Items
<ul>
<li>Enable JavaScript</li>
</ul></li>
</ul></li>
</ul></li>
</ul>

<h2>How it works</h2>

<p>One line of JavaScript! Despite calling it a stylesheet it does not include a single line of CSS, just a very trim template file:</p>

<pre><code>&lt;div id="newsItemTitle"&gt;[[newsitem_title]]&lt;/div&gt;
&lt;script type="text/javascript"&gt;
    location.replace(document.getElementById('newsItemTitle').firstChild.getAttribute('href'));
&lt;/script&gt;
</code></pre>

<h2>Coming soon</h2>

<p>For those of you who prefer their feed reading to be clean, consistent and snappy, I have been working on a slowly evolving and revamped version of <a href="/2007/apr/25/delicious_netnewswire_style.html">Ollicle Reflex</a>. It has some subtle niceties I am very much looking forward to sharing, so keep that browning ollicle.com feed in your list for a little longer yet.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Bigger link: easier clicking with jQuery</title>
    <link rel="alternate" type="text/html" href="http://www.ollicle.com/2007/oct/23/jquery_link_plugin.html" />
    <id>tag:besidr.com,2007://2.85</id>

    <published>2007-10-23T13:18:51Z</published>
    <updated>2011-05-29T11:21:24Z</updated>

    <summary>Bigger links are easier to click for everyone. I have written a jQuery plugin which makes implementing easier to click links easier.</summary>
    <author>
        <name>Ollie</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://www.ollicle.com/">
        <![CDATA[<p>Bigger links are easier to click for everyone. I have written a jQuery plugin which makes implementing easier to click links easier. </p>

<p>For details you can jump straight to the <a href="/projects/jquery/biggerlink/">documentation/demo</a>. The following ramble is a little about why I think the plugin is useful.</p>

<h3>Big A</h3>

<p>There are a variety of strategies I have used at work to enlarge the &#8216;hot&#8217; or &#8216;clickable&#8217; area of a links to something more substantial than the regular familiar text link.</p>

<ul>
<li>Resize the <code>&lt;a&gt;</code> with CSS</li>
<li>Wrap it around an image</li>
<li>Link more text</li>
<li>Duplicate the link on multiple elements</li>
</ul>

<p>With HTML alone there is a significant limitation common to the above. While producing valid code, only inline elements may be included inside the <code>&lt;a&gt;</code> element. As an inline element an <code>&lt;a&gt;</code> can never contain a <code>&lt;p&gt;</code>, <code>&lt;h3&gt;</code>, <code>&lt;li&gt;</code> or any other block element.</p>

<p>Using your ninja-like CSS knowledge you can trick a <code>&lt;span&gt;</code>, <code>&lt;em&gt;</code> or <code>&lt;strong&gt;</code> into looking just like their more important blocky friends and wrap this markup in one big link to make it all clickable. Although the result will be valid code the browser bugs you will uncover can be tricky. Long passages of text in links is an accessibility no-no and can look damn nasty without the supporting CSS.</p>

<h3>Time to turn to JavaScript for help.</h3>

<p>In the bad old DHTML days you may have seen something like:</p>

<pre><code>&lt;div onclick="window.location='http://tablelayout.com'"&gt;Some stuff...&lt;/div&gt;
</code></pre>

<p>While providing the &#8216;big link&#8217; I am looking for; This is many flavours of bad. The ideal solution is one that does not influence my HTML markup at all. </p>

<p>Instead we can use the JavaScript to add the desired &#8216;clickability&#8217; on top of nice semantic HTML. For example should I wish to make clicking anything contained by the <code>&lt;div&gt;</code> be equivalent to clicking the link it contains:</p>

<pre><code>&lt;div&gt;
    &lt;h4&gt;Title of some stuff&lt;h4&gt;
    &lt;p&gt;Introductory description of stuff... &lt;/p&gt;
    &lt;p&gt;&lt;a href="more-stuff.htm"&gt;More&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
</code></pre>

<p>Using JavaScript to add the additional behaviour unobtrusively ensures you site is not broken without it and avoids the error prone redundancy created of duplicating the URL in HTML and JavaScript.</p>

<p>In essence this is what jquery.biggerlink does. Additionally it adds some classes to help you add some CSS to provide some link-like feedback to your newly fattened links, such as hover or focus.</p>

<p>Have a look at the <a href="/projects/jquery/biggerlink/">documentation</a> - it incorporates a simple demo at the bottom of the page.</p>

<p>I wrote this plugin for use at work. It is the product of a few Friday afternoons. During this time my employer, <a href="http://www.fusion.com.au">Fusion</a>, allows me and my fellow Fusionites to work on the internal projects that interest us most.</p>

<h3>What next</h3>

<p>Suggestions that might improve the usefulness or efficiency of this code are very welcome. It would be a great way for me to directly demonstrate to my employer one of the benefits of sharing work our work in this way.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>jDefault - Image resizing for your NetNewsWire style</title>
    <link rel="alternate" type="text/html" href="http://www.ollicle.com/2007/aug/17/nnwstyle_jquery_template.html" />
    <id>tag:besidr.com,2007://2.84</id>

    <published>2007-08-16T14:58:35Z</published>
    <updated>2011-05-29T11:21:24Z</updated>

    <summary>jDefault is a bare-bones NetNewsWire style that loads my image resizing JavaScript, and the jQuery library it uses, into the default NetNewsWire template. To &quot;enable&quot; any existing style built without a custom template.html file, simply replace the contained stylesheet.css with the corresponding file from your selected style.</summary>
    <author>
        <name>Ollie</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://www.ollicle.com/">
        <![CDATA[<p>Some of you love the image resizing feature of my <a href="http://www.newsgator.com/Individuals/NetNewsWire/" title="NetNewsWire at Newsgator">NetNewsWire</a> style <a href="/2007/apr/25/delicious_netnewswire_style.html">Ollicle Reflex</a>, but would rather see it in a different style, perhaps one with your own particular CSS tweaks? If this sounds like familiar I&#8217;ve made a new NetNewsWire style package especially for you.</p>

<p>Project page: <a href="/projects/netnewswire/jdefault/">jDefault - NetNewsWire style JavaScript template</a></p>

<h2>Image resizing in an existing NetNewsWire style in a snap</h2>

<p>jDefault is a bare-bones NetNewsWire style that loads my image resizing JavaScript, and the <a href="http://jquery.com" title="jQuery site">jQuery</a> library it uses, into the default NetNewsWire template. To &#8216;enable&#8217; any existing style built without a custom template.html file, simply replace the contained stylesheet.css with the corresponding file from your selected style.</p>

<p><img src="/2007/aug/17/img/jDefault.jpg" height="265" width="590" alt="jDefault contents" title="jDefault contents" /></p>

<p>To expose the contents of the package, right (or control) click on jDefault.nnwstyle in the Finder and select &#8216;Show Package Contents&#8217;. Your existing NetNewsWire styles can be found in your user Library directory:</p>

<pre><code>~/Library/Application Support/NetNewsWire/StyleSheets/
</code></pre>

<p>Double-click your custom .nnwstyle file and NetNewsWire will install it by making a copy of it into this directory. If you are editing a style that is already installed you may need to restart NetNewsWire for the changes to take effect.</p>

<p><strong>A reminder</strong>: if you haven&#8217;t already, you need to enable JavaScript for news items in NetNewsWire&#8217;s preferences for this style to do anything remotely special:</p>

<ul>
<li>NetNewsWire Preferences
<ul>
<li>Browsing
<ul>
<li>News Items
<ul>
<li>Enable JavaScript</li>
</ul></li>
</ul></li>
</ul></li>
</ul>

<h2>Building your own JavaScript enabled nnwstyle with jDefault</h2>

<p>Of course if you are feeling more adventurous, you may wish to go further and use this template as a mere platform for a fresh custom style. Rename the .nnwstyle file to a name that takes your fancy. Replace my details in the contained Info.plist and share it with the world! I&#8217;d love to see what you come up with, and while you are in a <a href="http://ranchero.com/netnewswire/resources/styles.php">sharing mood</a> I&#8217;m sure <a href="http://inessential.com/">Brent would too</a>.</p>

<p>If you are making frequent changes it is worth making a static version of a feed to test in Safari. Right (or control) click in the feed display pane in NetNewsWire and select &#8216;Copy HTML Source&#8217; is the easiest way to grab the HTML you need. You will need to change the path to the imported stylesheet to suit your set-up.</p>

<h2>More on the imageFit jQuery plugin</h2>

<p>The contained jquery.imagefit.js is a complete rewrite of the JavaScript used in my previous NNW styles. For general tidiness and simple reuse it is written as a <a href="http://jquery.com/plugins/" title="jQuery plugin repository">jQuery plugin</a>. In a small way this is a sneak peek at the upcoming version of Ollicle Reflex.</p>

<p>It strikes me with all the web based feed aggregators popping up, this script may have a use on the web itself to keep unruly syndicated images under control. I am yet to test it in non-webkit browsers. In theory at least it ought to work in Firefox - but in it&#8217;s current form it won&#8217;t work in browsers that don&#8217;t support the CSS property max-width. Certainly not IE 6. </p>

<p>Please let me know if you give jquery.imagefit.js a spin elsewhere. If it holds up I&#8217;d like to add it at some point to the growing selection of jQuery plugins.</p>
]]>
        <![CDATA[<h3>18 August 2007</h3>

<p>Uploaded version 2 of jDefault. The updated package includes a slightly modification to jquery.imagefit.js. </p>

<p>Although I hadn&#8217;t seen problems with the previous version in NetNewsWire, the small change fixed an issue in Safari that became clear when I put up the <a href="/projects/jquery/imagefit/eg/">demo page for jquery.imagefit.js</a> earlier today.</p>

<h3>18 November 2007</h3>

<p><a href="http://factoryjoe.com/blog/">Chris Messina</a> has stepped up and adapted my imageFit plugin for use as a WordPress plugin. <a href="http://factoryjoe.com/blog/2007/11/17/wp-imagefit-proportionally-resizes-images-to-fit-your-blog-template/">WP-Imagefit</a> proportionally resizes images to fit your blog template.</p>

<p>So if you&#8217;re not chained to Movable Type like me (rebuilding this blog in MT 4 is hurting&#8230;) and are fond of occasionally posting overly wide images to your WordPress driven blog give it a go.</p>

<h3>5 May 2010</h3>

<p>Created a basic project page for the <a href="/projects/jquery/imagefit/">imagefit jQuery plugin</a>.</p>
]]>
    </content>
</entry>

<entry>
    <title>Safari 3 fix for Ollicle Reflex</title>
    <link rel="alternate" type="text/html" href="http://www.ollicle.com/2007/jun/16/safari3_webkit_reflex.html" />
    <id>tag:besidr.com,2007://2.83</id>

    <published>2007-06-16T10:54:34Z</published>
    <updated>2011-05-29T11:21:24Z</updated>

    <summary>Ollicle Reflex has been updated to fix an issue with the version of Webkit installed with the Safari 3 beta.</summary>
    <author>
        <name>Ollie</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://www.ollicle.com/">
        <![CDATA[<p>If you are using my NetNewsWire style <a href="/2007/apr/25/delicious_netnewswire_style.html">Ollicle Reflex</a> and recently installed the <a href="http://www.apple.com/safari/">Safari 3 beta</a>, you may have noticed the style&#8217;s article title hide/show behaviour is broken (it no longer shows). Installing the new version of Safari also updates <a href="http://webkit.org/">Webkit</a> which other applications, such as <a href="http://www.newsgator.com/Individuals/NetNewsWire/">NetNewsWire</a>, incorporate to render HTML. Many thanks to <a href="http://thefragens.com/blog/">Andy</a> for bring this problem to my attention. </p>

<p>The good news is amending this only requires a small JavaScript amendment. I&#8217;ve updated Ollicle Reflex (version 5) to include this fix (no other changes).</p>

<p>I&#8217;m looking forward to experimenting with the Webkit update in my NetNewsWire styling endeavors. I expect to find many of the old frustrating bugs squashed. Fingers crossed too for poor old Brent, that some of the crashing bugs that have been plaguing <a href="http://ranchero.com/netnewswire/beta.php">NetNewsWire 3</a> combined view are resolved. Although, sadly, it will be some time before the version of Webkit bundled with Safari 2 can be disregarded.</p>
]]>
        <![CDATA[<h3>10 March 2008</h3>

<p>Another update with a bunch of improvements: <a href="/2008/mar/08/ollicle_reflex_netnewswire_style.html">Ollicle Reflex refined</a></p>
]]>
    </content>
</entry>

<entry>
    <title>Auto line-height: a jQuery plugin for flexible layouts</title>
    <link rel="alternate" type="text/html" href="http://www.ollicle.com/2007/jun/03/jquery_lineheight_flexible.html" />
    <id>tag:besidr.com,2007://2.82</id>

    <published>2007-06-03T03:35:53Z</published>
    <updated>2011-05-29T11:21:24Z</updated>

    <summary>I&apos;m very proud to present my first jQuery plugin: jquery.autolineheight. In a nutshell, this JavaScript adjusts the line-height of a container (such as a `div`) in proportion to it&apos;s width, relative to the font size.</summary>
    <author>
        <name>Ollie</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://www.ollicle.com/">
        <![CDATA[<p>I&#8217;m very proud to present my first <a href="http://jquery.com">jQuery</a> plugin: jquery.autolineheight. In a nutshell, this JavaScript adjusts the line-height of a container (such as a <code>div</code>) in proportion to it&#8217;s width, relative to the font size. </p>

<p><a href="/projects/jquery/autolineheight/eg/">Demo of jquery.autolineheight</a>.</p>

<p>This is a rework of a script I wrote a while ago to do the same thing. You can read more about it and its purpose in the <a href="/2005/oct/12/javascript_flex_css.html">original post</a>. </p>

<h2>Download</h2>

<ul>
<li><a href="/projects/jquery/autolineheight/jquery.autolineheight.js">jquery.autolineheight.js</a> version 0.1</li>
</ul>

<p>Do what you like with this script. Of course, credits and/or links to <a href="http://www.ollicle.com">ollicle.com</a> are always welcome and encouraging!</p>

<h2>Requirements</h2>

<ul>
<li><p><a href="http://jquery.com">jQuery</a> version 1.1.2</p></li>
<li><p><a href="http://davecardwell.co.uk/javascript/jquery/plugins/jquery-em/">jQEm</a> version 0.2</p></li>
</ul>

<p>That original script didn&#8217;t require a JavaScript library to work. As a jQuery plugin this version obviously does, but with significant advantages as a result. My code for determining the relative font size has been discarded it favour of another jQuery plugin jQEm. My plugin inherits the ability of Dave Cardwell&#8217;s clever code to respond to <em>changes</em> in font size.</p>

<h2>Usage</h2>

<p>The best thing about packaging a reusable piece of JavaScript as a jQuery plugin is how easy it becomes to reuse it. With jQuery, jQEm and jquery.autolineheight all linked into the <code>HEAD</code> of your HTML page, very little further code is required to assign the behaviour to the desired element or elements in your page.</p>

<p>For example:</p>

<pre><code>&lt;script type="text/javascript" src="jquery.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="jquery.jqem.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="jquery.autolineheight.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript"&gt;
     $(function(){
        $('#flexme').autolineheight();
     });
&lt;/script&gt;
</code></pre>

<p>Where &#8216;flexme&#8217; is the <code>id</code> of an element in your page whose contained text is to be fine tuned. </p>

<h2>Settings</h2>

<p>The above code will adjust the <code>line-height</code> based on a few sensible, easy reading, defaults written into the plugin for convenience. You may adjust these values to your taste and circumstance when you assign the behaviour to an element, for example:</p>

<pre><code>$('#flexme').autolineheight({minWidth:16,minLineHeight:1.2,ratio:.03});
</code></pre>

<p>Note the separating commas and the extra set of curly brackets. </p>

<p><code>minWidth</code> and <code>minLineHeight</code> combine to define the &#8216;tightest&#8217; end of the scale. These are the default values:</p>

<pre><code>minWidth: 15
minLineHeight: 1.4
</code></pre>

<p>If the assigned element has a width less than or equal to the <code>minWidth</code> (in ems) the value of <code>minLineHeight</code> is assigned as the <code>line-height</code>. If the element has a width greater than minWidth the <code>line-height</code> is increased with a multiplier:</p>

<pre><code>ratio: .02
</code></pre>

<p>The larger the value of <code>ratio</code> the &#8216;faster&#8217; the line-height will increase as the element is widened. </p>

<h2>Inheriting CSS</h2>

<p>It&#8217;s worth highlighting that this script will only override the line-height of elements it is explicitly assigned to. Contained elements will only inherit their parent&#8217;s line-height if they don&#8217;t have a line-height of their own set. For example with this CSS:</p>

<pre><code>body {line-height: 1.5}
p {line-height: 1}
</code></pre>

<p>And this HTML, where the autolineheight script has set the <code>line-height</code> of the <code>div</code> to 1</p>

<pre><code>&lt;body&gt;
    &lt;div id="flexme" style="line-height:2"&gt;
        &lt;p&gt;Some text&lt;/p&gt;
        &lt;p&gt;Some more text&lt;/p&gt;
    &lt;/div&gt;
&lt;/body&gt;
</code></pre>

<p>The paragraphs will have a <code>line-height</code> of 1 as set in the CSS. Overruling both the <code>line-height</code> of the <code>body</code> and its parent <code>div</code>. If I was remove the CSS assigning the <code>line-height</code> to the <code>p</code>s they would inherit their <code>line-height</code> value from the next closest parent - in this case the <code>div</code>.</p>

<p>You can apply autolineheight to the <code>p</code>s directly with <code>$('p').autolineheight();</code> but that is less effecient than having the text elements inherit their line-heights from a containing <code>div</code>. </p>

<p>My decision to set unitless line-heights (rather than using % or px) is best explained by <a href="http://meyerweb.com/eric/thoughts/2006/02/08/unitless-line-heights/" title="Unitless line-heights">Eric Meyer</a>.</p>

<h2>Where from here</h2>

<p>I look forward to feedback from people actually using jquery.autolineheight in real projects. In the meantime I&#8217;m incubating a few more ideas for plugins that help with the presentation of content in &#8216;flexible&#8217; layouts and re-reading <a href="http://www.hunlock.com/blogs/Functional_Javascript">Functional Javascript</a> once (or twice) more.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Del.icio.us reflex</title>
    <link rel="alternate" type="text/html" href="http://www.ollicle.com/2007/apr/25/delicious_netnewswire_style.html" />
    <id>tag:besidr.com,2007://2.81</id>

    <published>2007-04-25T11:05:51Z</published>
    <updated>2011-05-29T11:21:23Z</updated>

    <summary>To thank everyone who spent the time to send me feedback on my NetNewsWire style, Ollicle Reflex, I&apos;m publishing a new version. It fixes a couple of popular problems and introduces some del.icio.us love.</summary>
    <author>
        <name>Ollie</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://www.ollicle.com/">
        <![CDATA[<p>To thank everyone who spent the time to send me feedback on my NetNewsWire style, <a href="/2006/nov/28/jquery_netnewswire_style.html">Ollicle Reflex</a>, I&#8217;m publishing a new version. It fixes a couple of popular problems and introduces some <a href="http://del.icio.us" title="Social bookmarking">del.icio.us</a> love.</p>

<p><a href="/2007/apr/25/img/reflex-tags.jpg" title="Full size image"><img src="/2007/apr/25/img/reflex-tags-sml.jpg" alt="Displaying the top ten del.icio.us tags" title="" /></a></p>

<p>If you are not already familiar with what Ollicle Reflex has to offer NetNewsWire check out the <a href="/2006/nov/28/jquery_netnewswire_style.html">features detailed</a> on my previous post. Otherwise download it and find out for yourself.</p>

<h2>Download and install (Updated see: <a href="/2008/mar/08/ollicle_reflex_netnewswire_style.html">Ollicle Reflex refined</a>.)</h2>

<p class="ollicle">Download latest version: <a href="/projects/netnewswire/reflex/">Ollicle Reflex</a></p>

<p>I have removed the link to Ollicle Reflex Black. There is a <a href="/2008/mar/08/ollicle_reflex_netnewswire_style.html">new method</a> for setting Black as the default background.</p>

<p>Double-click the unzipped .nnwstyle file and NetNewsWire will copy it to where it needs to be. </p>

<pre><code>~/Library/Application Support/NetNewsWire/StyleSheets/
</code></pre>

<p>Like the original release, this style uses JavaScript to do some things CSS alone cannot. Make sure you enable it </p>

<ul>
<li>NetNewsWire Preferences 
<ul>
<li>Browsing 
<ul>
<li>News Items
<ul>
<li>Enable JavaScript </li>
</ul></li>
</ul></li>
</ul></li>
</ul>

<p>Requires at least NetNewsWire version 2.1 (<a href="http://www.newsgator.com/NGOLProduct.aspx?ProdId=NetNewsWire&amp;ProdView=lite">lite</a> or <a href="http://www.newsgator.com/NGOLProduct.aspx?ProdID=NetNewsWire">full</a>). The JavaScript driven magic of the style fails in NetNewsWire 2.0.1 - I have not spent the time to figure out why. Although, it does work nicely in the lovely <a href="http://ranchero.com/netnewswire/beta.php" title="Not even beta!">NetNewsWire 3 Sneak Peak Release</a>.</p>

<h2>Changes</h2>

<h3>Fixes</h3>

<ul>
<li><p>Cookied skin selections we&#8217;re failing to &#8216;stick&#8217; when using the style file name (e.g. &#8216;Ollicle Reflex black.nnwstyle&#8217;) to set the black skin by default.</p></li>
<li><p>Removed a poorly implemented &#8216;feature&#8217; which toggled the display of highlighted differences in feed content with cursor position. More on this below.</p></li>
</ul>

<h3>New features</h3>

<ul>
<li><p>Displays a del.icio.us <a href="http://del.icio.us/help/tagometer">Tagometer Badge</a> for each viewed news item. This shows you how many del.icio.us users have tagged the news item you are viewing and the top ten tags they used.</p></li>
<li><p>When NewNewsWires Highlight differences option is checked, items of deleted content are indicated with an inline &#9650;. Clicking each triangle toggles the display of that particular item of deleted content individually.</p></li>
</ul>

<h2>Some back story</h2>

<h3>Perseverance rewarded with tags</h3>

<p>Having recently worked out how to load <a href="http://jquery.com" title="JavaScript library">jQuery</a> into a NetNewsWire style, when I <a href="http://blog.del.icio.us/blog/2006/12/the_new_and_tag.html">read about</a> the introduction of the <a href="http://del.icio.us/help/json/url">del.icio.us JSON API</a>, I saw the potential for integrating it into a NNW style immediately. Figuring out the technical details to make it happen took me a lot longer. <a href="http://www.quirksmode.org/book/">PPK on JavaScript</a> helped me fill the necessary holes in my patchy JavaScript knowledge. It&#8217;s a wonderfully practical book I recommend to anyone struggling with the basics of JavaScript.</p>

<p>My perseverance was rewarded. The del.icio.us tags are particularly informative when viewing some del.icio.us generated feeds that are often lacking a useful descriptions. The top tags often tell me whether the bookmarked web page is one I wish investigate further or ignore.</p>

<p>It&#8217;s worth noting that feeds served up with <a href="http://www.feedburner.com/">feedburner</a>-redirected urls do not work. Because no one bookmarks feedburner urls on del.icio.us they will appear as &#8216;untagged&#8217; in Ollicle Reflex.</p>

<h3>When a feature becomes a bug</h3>

<p>NetNewsWire has a nifty feature named Highlight differences by its preference checkbox. Additions and deletions in the content of updated a posts are marked up with <code>ins</code> and <code>del</code> tags respectively. Although it&#8217;s often useful and interesting to see how an author has edited their posts - the red and green can be quite distracting to normal reading. </p>

<p>Reflex (and my previous styles) included a feature to hide and show these differences by moving your cursor over the body of the post. This confused many people who had not &#8216;read the manual&#8217; and understandably interpreted the occasionally frantic flickering as a bug.</p>

<p>Ultimately my implentation of this feature was too subtle; And the difference between a subtle feature and a bug is a fine one indeed. I have read advice to this affect from a number of software developers who have learnt this lesson the hard way. It&#8217;s enlightening to experience the problems caused by poorly advertised features first hand.</p>

<p>This version of Ollicle Reflex does away with the cursor over the body technique to instead require a directed mouse click from the user to display each deletion. Hopefully people will find this behaviour less mysterious.</p>
]]>
        <![CDATA[<h3>16 June 2007</h3>

<p>Updated to version 5 to <a href="/2007/jun/16/safari3_webkit_reflex.html">fix an issue</a> with the version of Webkit installed with the Safari 3 beta. Download above.</p>

<h3>10 March 2008</h3>

<p>Another update with a bunch of improvements: <a href="/2008/mar/08/ollicle_reflex_netnewswire_style.html">Ollicle Reflex refined</a></p>
]]>
    </content>
</entry>

</feed>

