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

<!-- Generator: Serve 0.7 <http://stuconnolly.com/projects/serve/> -->
<rss version="2.0" 
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:dc="http://purl.org/dc/elements/1.1/">

<channel>
    <docs>http://cyber.law.harvard.edu/rss/</docs>

    <title>stuconnolly.com</title>
    <link>http://stuconnolly.com/</link>
    <copyright>Copyright 2008, Stuart Connolly</copyright>
    <description>The personal site of Stuart Connolly, open source software developer.</description>

    <language>en-gb</language>
    <pubDate>Wed, 02 Jul 2008 16:19:23 +0000</pubDate>
    <generator>Serve 0.7, http://stuconnolly.com/projects/serve/</generator>

    <item>
        <title>One Year Today</title> 
        <dc:creator>Stuart Connolly</dc:creator>
        <pubDate>Wed, 02 Jul 2008 23:16:43 +0000</pubDate>
        <link>http://stuconnolly.com/blog/archive/2008/07/02/one-year-today/</link>
        <guid>http://stuconnolly.com/blog/archive/2008/07/02/one-year-today/</guid>
        <comments>http://stuconnolly.com/blog/archive/2008/07/02/one-year-today/#comments</comments>

        <description><![CDATA[<p>Its been eactly one year today since I started working for <a href="http://www.sun.com/">Sun</a> full time and all I can say is that its been 
amazing. I can't believe how quickly the last year has gone by, but I've loved every minute of it and I can honestly say that I've learnt more 
(in terms of technical skills and business practices) in this past year compared with the 2 years spent at university beforehand.</p>

<a href="http://www.sun.com"><img src="http://stuconnolly.com/serve-content/images/sun.png" width="200" height="90" alt="Sun Microsystems, Inc" /></a>

<p>Normally last Friday would have been my last day and I would have returned to uni to complete my degree, but a couple of months ago Sun offered 
me the chance to stay on another year and I jumped at the chance. I figured that the chance to work for Sun for another year and still continue with my 
degree at university on a part time basis was too good to pass up. Apart from this and although I'm still technically an intern I amazed at the amount 
of responsibility I am given (in terms of the projects that I work on) as well as the fact that I am treated just like every other member of the team, 
are the things I think I would genuinely miss if I were to leave.</p>

<p>Anyway, I'm starting to bore you. Heres to the next year, I'm sure it'll be just as good as the first, if not better.</p>]]></description>
    </item>
<item>
        <title>SafariTabs 0.6.2</title> 
        <dc:creator>Stuart Connolly</dc:creator>
        <pubDate>Mon, 23 Jun 2008 21:15:52 +0000</pubDate>
        <link>http://stuconnolly.com/blog/archive/2008/06/23/safaritabs-062/</link>
        <guid>http://stuconnolly.com/blog/archive/2008/06/23/safaritabs-062/</guid>
        <comments>http://stuconnolly.com/blog/archive/2008/06/23/safaritabs-062/#comments</comments>

        <description><![CDATA[<p><a href="http://stuconnolly.com/projects/safaritabs/">SafariTabs</a> 0.6.2 is now available for <a href="http://stuconnolly.com/serve-content/scripts/download.php?file=safaritabs&version=0.6.2">download</a>. This release addresses some of the (hopefully) last remaining bugs. The fixes are:</p>

<ul>
    <li>Issue affecting some users that prevented SafariTabs' preference pane being loaded and displayed.</li>
    <li>No tabs being restored when deselecting all tabs then cancelling the tab view and selecting to restore all tabs.</li>
</ul>

<p>The first, as far as I am aware only affects a few users and as of yet I'm still not entirely sure why (I can't be certain but its mostly likely being caused by SafariTabs being incorrectly loaded by SIMBL). The fix inluded in this release should mean that the preference pane is now always 
loaded.</p>

<p>The second fix is for an issue that really only exhibits itself after completing a certain set of steps as outlined above, and was discovered whilist I was testing this release.</p>

<p>In terms of new features, there are none in this release and in general I've kind of run out of ideas for any new ones that are just tab related. So please, if you have any that you think might make a nice addition to SafariTabs or any other feedback for that matter then just 
<a href="http://dev.stuconnolly.com/feedback/">let me know</a>.</p>]]></description>
    </item>
<item>
        <title>Repository Changes</title> 
        <dc:creator>Stuart Connolly</dc:creator>
        <pubDate>Thu, 19 Jun 2008 22:59:17 +0000</pubDate>
        <link>http://stuconnolly.com/blog/archive/2008/06/19/repository-changes/</link>
        <guid>http://stuconnolly.com/blog/archive/2008/06/19/repository-changes/</guid>
        <comments>http://stuconnolly.com/blog/archive/2008/06/19/repository-changes/#comments</comments>

        <description><![CDATA[<p>I don't suppose anyone other than myself is actively using them, but this is just as heads up that I've changed the paths on which all my Subversion repositories are served on at 
<a href="http://dev.stuconnolly.com">dev.stuconnolly.com</a>. Previously all repositories were accessiable at the top level of the domain, for example:</p>

<code>http://dev.stuconnolly.com/<strong>&#60;repository_name&#62;</strong>/</code>

<p>I've now moved them down a level to get around some issues that were bugging me and are now accessible via:</p>

<code>http://dev.stuconnolly.com/svn/<strong>&#60;repository_name&#62;</strong>/</code>

<p>The things that were bugging me were the problems that arise when attempting to use Apache's <code>mod_rewrite</code> for URL re-writing with repositories installed on the domain. 
If you've ever setup a repository to be HTTP accessible then your probably aware that it doesn't exactly act like a normal directory on disk and so re-writing URLs that include conditions 
to check if the requested file or directory actually exists doesn't have the expected result. Hence changiing the URL on which the repositories are served on means I can catch these 
requests in my <code>.htaccess</code> file containing all my URL re-writing rules using the following as the very first entry:</p>

<pre>
RewriteCond %{REQUEST_URI} ^/svn/.*$
RewriteRule ^(.*)$ - [L]
</pre>

<p>Which basically prevents any other rules after this one being applied if the URL begins with <code>/svn/</code>.</p>

<p>Also, I've enabled repository access via the <code>svn://</code> protocol in addition to HTTP, so all repositories can now be accessed using:</p>

<code>svn co svn://dev.stuconnolly.com/svn/<strong>&#60;repository_name&#62;</strong>/ &#60;directory_name&#62;</code>

<p>Probably a bit more than anyone really needed to know but hopefully it will be useful to someone out there and its also a good example of what happens when I get bored and start messing 
about with things.</p>]]></description>
    </item>
<item>
        <title>SCEvents 0.1.2</title> 
        <dc:creator>Stuart Connolly</dc:creator>
        <pubDate>Sat, 24 May 2008 16:07:54 +0000</pubDate>
        <link>http://stuconnolly.com/blog/archive/2008/05/24/scevents-012/</link>
        <guid>http://stuconnolly.com/blog/archive/2008/05/24/scevents-012/</guid>
        <comments>http://stuconnolly.com/blog/archive/2008/05/24/scevents-012/#comments</comments>

        <description><![CDATA[<p>I've just uploaded another update to <a href="http://stuconnolly.com/projects/source-code/">SCEvents</a>. As with the previous release (0.1.1) this one does not add any major new features but rather builds upon 
and improves those that were previously introduced. Version 0.1.1 introduced the ability to register paths that your client application wasn't interested in receiving events from, resulting in them being ignored. 
It depends how you look at it, but from my point of view the way this was implemented resulted in it having a major flaw. The flaw is in the way that SCEvents' decides whether or not it should deliver the event to the 
client application by testing whether the path of the event is within the array of paths that the client set to ignore. This test is done by a direct comparison of the paths which results in events from sub-directories 
not being ignored. This functionality that was described in my previous <a href="http://stuconnolly.com/blog/archive/2008/05/17/scevents-011/">post</a> now truly works whereas my previous implementation did not align 
with the way it was described.</p>

<p>In my view if I register a directory to ignore events from (that is, a directory that is a sub-directory of the paths I registered to watch) then I also want to ignore the events that originate from sub-directories 
of this path. Using the example from my previous post, if I rgister my application to be notified of all all events that occur under the current user's home directory but I want to ignore those events that come from 
their <code>Downloads</code> directory then I will, but version 0.1.1 will notify my application of events from directories within the <code>Downloads</code> directory. By default version 0.1.2 will also ignore these 
events but because this may not always be the case, for example, your application truly does want to ignore a specific directory and doesn't care about sub-directories then there is a new option to enable or disable 
this behaviour. Simply use the following method:</p>

<code>- (void)setIgnoreEeventsFromSubDirs:(BOOL)ignore;</code>

<p>My thanks go to Simon Wolf for providing a lot of valuable feedback that has resulted in many of SCEvents' new functionality and improvements. Cheers Simon.</p>]]></description>
    </item>
<item>
        <title>SCEvents 0.1.1</title> 
        <dc:creator>Stuart Connolly</dc:creator>
        <pubDate>Sat, 17 May 2008 17:30:37 +0000</pubDate>
        <link>http://stuconnolly.com/blog/archive/2008/05/17/scevents-011/</link>
        <guid>http://stuconnolly.com/blog/archive/2008/05/17/scevents-011/</guid>
        <comments>http://stuconnolly.com/blog/archive/2008/05/17/scevents-011/#comments</comments>

        <description><![CDATA[<p>Just a quick update to <a href="http://stuconnolly.com/projects/source-code/">SCEvents</a> that I released a couple of weeks ago. The new feature in this release gives you the ability to specify particular directories that are sub-directories of the paths 
that your client application has registered to watch and ignore events that come from them. For example, if you register your client application to be notified of all events that occur under the current user's home directory but you wish to ignore those events that 
come from their <code>Downloads</code> directory then you simply tell SCEvents to ignore them:</p>

<pre>
SCEvents *events = [SCEvents sharedPathWatcher];

[events setDelegate:self];

NSMutableArray *paths = [NSMutableArray array];
NSMutableArray *excludePaths = [NSMutableArray array];

[paths addObject:NSHomeDirectory()];
[excludePaths addObject:[NSHomeDirectory() stringByAppendingString:@"/Downloads"]];

[events setExcludedPaths:excludePaths];
[events startWatchingPaths:paths];
</pre>

<p>One other change that has been made is the removal of the trailing slash on all event paths that are provided to the client application. FSEvents provides the event paths with a trailing slash presumably to indicate that the event originated from within that 
directory but the removal of them enables SCEvents to provide the above functionality of ignoring events from particular directories. Therefore, client applications that register to ignore directories should provide their paths with <em>no</em> trailing slash.</p>

<p>Also, one thing I forgot to mention when I originally released the code was that your project will have to be linked against the Core Services framework which provides access to the FSEvents API. You can do this by adding the framework to your project, it is 
located at:</p>

<code>/System/Library/Frameworks/CoreServices.framework</code>

<p>Please also be aware that the sample project included in the source was created in Xcode 3.1 beta and probably won't work in any other version. To get around this simply create a new project and include the source files. The addition of this new functionality 
was the direct result of feedback based on usage so please keep it coming.</p>]]></description>
    </item>
<item>
        <title>Cocoa Over Win32</title> 
        <dc:creator>Stuart Connolly</dc:creator>
        <pubDate>Sat, 10 May 2008 16:34:05 +0000</pubDate>
        <link>http://stuconnolly.com/blog/archive/2008/05/10/cocoa-over-win32/</link>
        <guid>http://stuconnolly.com/blog/archive/2008/05/10/cocoa-over-win32/</guid>
        <comments>http://stuconnolly.com/blog/archive/2008/05/10/cocoa-over-win32/#comments</comments>

        <description><![CDATA[<p>Just a <a href="http://arstechnica.com/articles/culture/what-microsoft-could-learn-from-apple.ars">few</a> <a href="http://arstechnica.com/articles/culture/microsoft-learn-from-apple-II.ars">more</a> reasons to develop software for the Mac over Windows. Look out for the 3rd part in the series.</p>]]></description>
    </item>
<item>
        <title>FSEvents Objective-C Wrapper</title> 
        <dc:creator>Stuart Connolly</dc:creator>
        <pubDate>Fri, 09 May 2008 00:02:26 +0000</pubDate>
        <link>http://stuconnolly.com/blog/archive/2008/05/08/fsevents-objectivec-wrapper/</link>
        <guid>http://stuconnolly.com/blog/archive/2008/05/08/fsevents-objectivec-wrapper/</guid>
        <comments>http://stuconnolly.com/blog/archive/2008/05/08/fsevents-objectivec-wrapper/#comments</comments>

        <description><![CDATA[<p>I thought it was about time I posted some source code here, so tonight I'm releasing <a href="http://stuconnolly.com/projects/source-code/">SCEvents</a>. As the title suggests SCEvents is an Objective-C wrapper around the <a href="http://developer.apple.com/documentation/Darwin/Reference/FSEvents_Ref/FSEvents/index.html">FSEvents</a> C API that is included Mac OS X 10.5. 
Basically, the FSEvents API allows you to register specific directories that your application is interested in with regard to file system activity that occurs within them. In keeping with the principles of Cocoa, your application will then be notified of these events, rather than your application 
continually polling and actively watching for changes. The idea is that the functionality that the system provides and is made accessible through the FSEvents API should do all the work instead of your application, because in nearly all cases the system can do it far more efficiently. Spotlight and Time 
Machine are built upon the technology provided by the FSEvents API. For a more detailed description and overview of how it is implemented and operates see the <a href="http://arstechnica.com/reviews/os/mac-os-x-10-5.ars/7">section</a> on it in Ars Technica's <a href="http://arstechnica.com/reviews/os/mac-os-x-10-5.ars">Mac OS X 10.5 review</a>.</p>

<p>So where does SCEvents come in? Well as mentioned its an Objective-C wrapper around the C interface and allows you to utilise the full power of FSEvents in only a few lines of code. The design of SCEvents is relatively simple and is largely inspired by Uli Kusterer's excellent <a href="http://www.zathras.de/programming/cocoa/UKKQueue.zip/">UKKQueue</a> wrapper around the kqueue file change notification mechanism, which by the way I would definitely 
recommend checking out if you are interested in finding out when specific files change rather than directories. SCEvents is similar in the sense that clients that <em>register</em> to be notified of events implement the only method of the <code>SCEventListenerProtocol</code> which in turn passes along an instance of <code>SCEvent</code> representing the event that just occurred.</p>

<p>The source includes an example foundation application that simply registers the user's home directory for events then prints them to the console whenever they occur. It can be downloaded from my new <a href="http://stuconnolly.com/projects/source-code/">source code</a> page, but the most update-to-date version can always be found in my Subversion <a href="http://dev.stuconnolly.com/code/">source repository</a> at 
<a href="http://dev.stuconnolly.com/">dev.stuconnolly.com</a>. SCEvents is by no means perfect so I'm looking for feedback on ways it can be improved, so please check it out and let me know what you think.</p>]]></description>
    </item>
<item>
        <title>I'm on Twitter</title> 
        <dc:creator>Stuart Connolly</dc:creator>
        <pubDate>Thu, 10 Apr 2008 16:36:41 +0000</pubDate>
        <link>http://stuconnolly.com/blog/archive/2008/04/10/im-on-twitter/</link>
        <guid>http://stuconnolly.com/blog/archive/2008/04/10/im-on-twitter/</guid>
        <comments>http://stuconnolly.com/blog/archive/2008/04/10/im-on-twitter/#comments</comments>

        <description><![CDATA[<p>It seems like everyone but me is using <a href="http://twitter.com/">Twitter</a>, so last Friday I decided to <a href="http://twitter.com/stuconnolly">sign up</a>. I'm not a huge fan of all the social networking sites out there 
but I think Twitter has the advantage of being extremely simple and easy to use without it taking over your life. So far I think its great and I can see it slowly becoming my new addiction. Its also given me the chance to check out <a href="http://iconfactory.com/software/twitterrific">Twitterrific</a> 
by The IconFactory, which immediately became my new favourite app and is definitely recommended to anyone running Mac OS X and using Twitter.</p>

<p>Although I'm really enjoying using Twitter, at the moment it kind of feels like I'm shouting into a void so followers are <a href="http://twitter.com/stuconnolly">welcome</a>.</p>

<p>Also, I got a little bored last weekend and ended up writing my own twitter feed to display my latest tweets on this site. They can be seen at the bottom of the blog index and archive pages. The code behind it is pretty lightweight and works 
surprisingly well, but I've gone against the idea of releasing it publicly as its not really designed to be a plugin (like <a href="http://alexking.org/projects/wordpress">Twitter Tools</a> for WordPress) and requires a little more manual effort 
than simply activating. That said if anyone is still interested in using the code just drop me an <a href="http://stuconnolly.com/contact/">email</a> and I'll be happy to help out.</p>]]></description>
    </item>
<item>
        <title>SafariTabs 0.6.1</title> 
        <dc:creator>Stuart Connolly</dc:creator>
        <pubDate>Wed, 26 Mar 2008 23:40:16 +0000</pubDate>
        <link>http://stuconnolly.com/blog/archive/2008/03/26/safaritabs-061/</link>
        <guid>http://stuconnolly.com/blog/archive/2008/03/26/safaritabs-061/</guid>
        <comments>http://stuconnolly.com/blog/archive/2008/03/26/safaritabs-061/#comments</comments>

        <description><![CDATA[<p><a href="http://stuconnolly.com/projects/safaritabs/">SafariTabs</a> 0.6.1 is now available for <a href="http://stuconnolly.com/serve-content/scripts/download.php?file=safaritabs&version=0.6.1">download</a>. This release largely focuses on resolving a whole host of bugs that were 
identified in version 0.6, but equally as important adds support for Safari 3.1.</p>

<p>A more stable implementation of the 'force new window links in a new tab' or <em>single window mode</em> feature was a key area of focus resulting in the resolution of various annoyances caused by pop-up windows created using JavaScript. This feature now only captures windows that 
are created from links with the target '<code>_blank</code>'. <a href="http://www.tuaw.com/2008/03/21/terminal-tip-safari-3-1-brings-true-one-window-mode/">Turns out</a> Safari 3.1 adds this exact functionality as a hidden preference, although issuing commands at the terminal or editing 
Safari's preference file is still required. It is still included in SafariTabs as an easy way for people to enable as well as to provide the additional feature of having the new tabs load in the background.</p>

<p>As always, for a more detailed view of the changes in this release please see the <a href="http://stuconnolly.com/projects/safaritabs/safaritabs-version-history/">version history</a>. Feedback, bug reports and feature requests are also always <a href="http://dev.stuconnolly.com/feedback.php">welcome</a>.</p>]]></description>
    </item>
<item>
        <title>SafariTabs and Safari 3.1</title> 
        <dc:creator>Stuart Connolly</dc:creator>
        <pubDate>Sun, 23 Mar 2008 21:58:39 +0000</pubDate>
        <link>http://stuconnolly.com/blog/archive/2008/03/23/safaritabs-and-safari-31/</link>
        <guid>http://stuconnolly.com/blog/archive/2008/03/23/safaritabs-and-safari-31/</guid>
        <comments>http://stuconnolly.com/blog/archive/2008/03/23/safaritabs-and-safari-31/#comments</comments>

        <description><![CDATA[<p>I've had a lot of users emailing me and asking for an update to SafariTabs in order to be compatible with the recently released Safari 3.1. After updgrading to the new version of Safari 
SIMBL's version checking mechanism rightly displays the following dialog when launched;</p>

<img src="http://stuconnolly.com/serve-content/images/safaritabs-0.6-simbl-error.png" width="500" height="249" />

<p>SIMBL is right not to load SafariTabs as it is indeed not compatible with Safari 3.1, but just to let everyone know that I've not given up on SafariTabs having not released an update upon 
the Safari release, I am actually working hard on the new version which will eventually be SafariTabs 0.6.1. SafariTabs 0.6 does actually work with Safari 3.1 with the exception of a few features, its 
simply a configuration setting that SIMBL checks that prevents the plugin from being loaded.</p>

<p>For nearly all of the users that have contacted me about SafariTabs' incompatibility I have clearly stated this exact point as well as the fact that there is way around it and the steps to 
implementing this workaround if they are willing to live with the lack of a few features until a new release is available. The point of this post is to not only reassure all of the users of SafariTabs that 
a new version is being worked on and is on its way very soon, but also to provide this workaround to a greater audience than simply a per individual basis in each email. It also gives me more time to actually 
work on SafariTabs than spending the time repeating myself in every email that I receive.</p>

<p>It may seem like I don't care and I don't want to hear from users having issues, but the reality is the exact opposite, I welcome and encourage feedback regrading all aspects of 
any of my projects. Its just an announcement/acknowledgment like this I think is required to make everyone aware of the situation, not just those who contact me.</p>

<p>Having said this, the following is a quick guide that I have provided users when asked about SafariTabs incompatibility with Safari 3.1. Basically, SIMBL uses a custom entry within a bundle's 
<code>Info.plist</code> file which indicates the maximum and minimum build versions of the targeted application (in this case Safari) that the plugin has been tested with. SIMBL tests the plugin against 
the current application's build version and loads it based on its success. You simply need to change the maximum build version of Safari that SafariTabs has supposedly been tested with in order for SIMBL 
to load it. The following is how:</p>

<ol>
    <li>View the contents of the SafariTabs bundle by Ctrl/right-clicking <code>SafariTabs.bundle</code> and selecting 'Show Package Contents' from the menu.</li>
    <li>Open the <code>Info.plist</code> file located at <code>Contents/Info.plist</code>.</li>
    <li>Edit the <code>MaxBundleVersion</code> key contents to end in 25 rather than 23 found under the parent key <code>SIMBLTargetApplications</code>.</li>
    <li>Save the file and restart Safari.</li>
</ol>

<p>I must say that this workaround should only be used if you cannot wait for the new version of SafariTabs and you are comfortable with editing the contents of the bundle. The workaround is intended for 
users who have stated to me that they can't use Safari without it and don't need the missing fetures.</p>

<p>The new version is progressing nicely and the delay is largely down to the fact that I want to resolve all the bugs and issues that were brought to light in the current release. The final product should 
provide an improved user experience than some users may have had with new <a href="http://stuconnolly.com/blog/archive/2008/03/03/safaritabs-and-popups/">features</a> introduced in the previous release.</p>]]></description>
    </item>
    
</channel>
</rss>