<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<language>en-gb</language>
		<title>stuconnolly.com</title>
		<link>http://stuconnolly.com/</link>
		<description>Stuart Connolly is a Computer Science student, Open Source software developer and independent Software Engineer from Edinburgh, Scotland.</description>
		<copyright>Copyright 2010 Stuart Connolly</copyright>
		<generator>Serve 0.8</generator>
		<atom:link href="http://stuconnolly.com/blog/feed/" rel="self" type="application/rss+xml"/>
		<item>
			<title>SafariTabs 0.7.3</title>
			<dc:creator>Stuart Connolly</dc:creator>
			<pubDate>Mon, 14 Jun 2010 17:30:00 +0000</pubDate>
			<link>http://stuconnolly.com/blog/safaritabs-073/</link>
			<guid>http://stuconnolly.com/blog/safaritabs-073/</guid>
			<comments>http://stuconnolly.com/blog/safaritabs-073/#comments</comments>
			<description><![CDATA[<p><a href="http://stuconnolly.com/projects/safaritabs/">SafariTabs</a> 0.7.3 is now available for <a href="http://stuconnolly.com/downloads/safaritabs/0.7.3/">download</a>. I'll keep this short as my thoughts on SafariTabs and Safari 5 as well as most of the changes were mentioned in my <a href="http://stuconnolly.com/blog/safaritabs-and-safari-5/">previous</a> post, with the main change being added support for Safari 5 on Snow Leopard.</p>

<p>The full list of changes in this release can be found in the <a href="http://dev.stuconnolly.com/svn/safaritabs/trunk/Resources/VersionHistory.txt">version history</a>.</p>]]></description>
		</item>
		<item>
			<title>SafariTabs and Safari 5</title>
			<dc:creator>Stuart Connolly</dc:creator>
			<pubDate>Fri, 11 Jun 2010 12:13:00 +0000</pubDate>
			<link>http://stuconnolly.com/blog/safaritabs-and-safari-5/</link>
			<guid>http://stuconnolly.com/blog/safaritabs-and-safari-5/</guid>
			<comments>http://stuconnolly.com/blog/safaritabs-and-safari-5/#comments</comments>
			<description><![CDATA[<p>In short, I'm working on it.</p>

<p>For anyone interested in a little bit of history, when Snow Leopard (OS X 10.6) was released, which included further restrictions on InputManagers resulting in SIMBL having to be rewritten I was all set on discontinuing the development of <a href="http://stuconnolly.com/projects/safaritabs/">SafariTabs</a>. The reason being because its feature set was reducing with every release of Safari and to be honest I didn't like the new approach SIMBL was taking to 'injecting' plugins into target applications.</p>

<p>As well as the sheer number of requests I got about SafariTabs support on Snow Leopard, I quickly realised that I couldn't live without being able to undo the most recently closed tab, which is why I continued its development. I've always maintained that SafariTabs was created to add features and functionality to Safari that I personally found lacking and is the primary reason why I've resisted in adding every feature request that I've received. Much like the <a href="http://en.wikipedia.org/wiki/Unix_philosophy">UNIX philosophy</a>, it is intended to do one (or a few) things and do them well.</p>

<p>With the release of <a href="http://www.apple.com/safari/">Safari 5</a> Apple has finally added an extension API, tab undo support and the ability to control how links that open windows are treated (for example, automatically or always open them in new tabs). The last 2 features being those that SafariTabs provided and seeing that I rarely use the tab restore function I was again debating whether or not I should update it. Similar to when Snow Leopard was released I've since received a load of requests for Safari 5 compatibility, either because users genuinely use the tab restore or they've yet to realise that Safari now provides half of the features that SafariTabs once did. Regardless, there seems to be demand for it and so I appreciate your patience, while I work on updating it. I'll be releasing a compatibility (and reduced feature set) update within the next couple of days.</p>]]></description>
		</item>
		<item>
			<title>Sequel Pro Export Redesign</title>
			<dc:creator>Stuart Connolly</dc:creator>
			<pubDate>Tue, 25 May 2010 22:17:00 +0000</pubDate>
			<link>http://stuconnolly.com/blog/sequel-pro-export-redesign/</link>
			<guid>http://stuconnolly.com/blog/sequel-pro-export-redesign/</guid>
			<comments>http://stuconnolly.com/blog/sequel-pro-export-redesign/#comments</comments>
			<description><![CDATA[<p>Remember this <a href="http://stuconnolly.com/blog/redesigning-sequel-pros-export-architecture/">post</a> in which I detailed at great length my plans for redesigning <a href="http://sequelpro.com/">Sequel Pro's</a> export architecture? Well, a little over 6 months since the redesign branch was <a href="http://spbug.com/r/1537">created</a> I finally merged it back into trunk <a href="http://spbug.com/r/2244">yesterday</a>.</p>

<p>As expected the new architecture doesn't exactly match what was planned in every way, but 28 new files and countless lines of code (the majority of which isn't new and was simply migrated and tidied up) later I'm pretty pleased with it. The main thing is that it does follow the general structure based upon units of work that are performed concurrently via instances of <code>NSOperation</code> subclasses, as well as all export data formats inheriting from a common exporter base class.</p>

<p>So it isn't perfect and I'm sure there are a few bugs that were missed during development, but having just <a href="http://stuconnolly.com/blog/sequel-pro-098/">recently</a> released a major new version, we've got plenty of time to resolve them. Although not to everyone's liking, I always think that it's best to get branches merged back into trunk as soon as possible to allow wider testing and further contributions from other developers. It's always good to get a few others to check out your code after you've been staring at it for 6 months.</p>

<p>The most user visible change in the redesign is the new export interface, which is now a single dialog allowing users to easily switch between exporting to different data formats. I'd encourage everyone to give it a <a href="http://nightly.sequelpro.com/">try</a> and test it out (with the usual warning that applies when using nightly builds: not to be used on production systems or valuable data).</p>

<p>If you'd like to keep up to date with any further improvements, request new features or report any issues, take a look at this <a href="http://spbug.com/610">issue</a>, which is being used to track everything related to the new export redesign.</p>

<p>Enjoy.</p>]]></description>
		</item>
		<item>
			<title>Sequel Pro 0.9.8</title>
			<dc:creator>Stuart Connolly</dc:creator>
			<pubDate>Tue, 04 May 2010 22:35:00 +0000</pubDate>
			<link>http://stuconnolly.com/blog/sequel-pro-098/</link>
			<guid>http://stuconnolly.com/blog/sequel-pro-098/</guid>
			<comments>http://stuconnolly.com/blog/sequel-pro-098/#comments</comments>
			<description><![CDATA[<p>Just a quick note to say that <a href="http://www.sequelpro.com/">Sequel Pro</a> 0.9.8 is now <a href="http://www.sequelpro.com/blog/2010.05/sequel-pro-0-9-8/">available</a>. As with previous releases, this one includes a whole bunch of new features and fixes.</p>

<p>Without reposting everything that is mentioned on the announcement post, some of the major new features include user management support, 64-bit support and significantly improved auto-completion with placeholder lists as well as tab triggers and text macros for <a href="http://www.sequelpro.com/docs/Query_Favorites">query favourites</a>. I should also mention that stability has also been significantly improved since adding a lot of multi-threading in the previous version.</p>

<p>Check out the <a href="http://www.sequelpro.com/release-notes.html#release_0.9.8">release notes</a> for details on all the changes.</p>]]></description>
		</item>
		<item>
			<title>23</title>
			<dc:creator>Stuart Connolly</dc:creator>
			<pubDate>Thu, 08 Apr 2010 20:49:00 +0000</pubDate>
			<link>http://stuconnolly.com/blog/23/</link>
			<guid>http://stuconnolly.com/blog/23/</guid>
			<comments>http://stuconnolly.com/blog/23/#comments</comments>
			<description><![CDATA[<p>Two posts in one day, that's definitely a first for me. To be honest though I wouldn't expect it to continue. I could say that I'm going to try and post more often (like on the many occasions before), but I'm willing to bet that anyone that's every started a blog has said that at least once. Plus we'd both know that I'd effectively be lying.</p>

<p>Anyway, after venting my anger/frustration <a href="http://stuconnolly.com/blog/poor-show/">earlier today</a> about the Digital Economy Bill being passed through Parliament, I thought I'd mention that I turned 23 today. I thought about writing a huge post about how much I'd learnt and all the mistakes that I'd made over the past year as well as what I plan to do over the next year and all that crap until I realised that I probably wouldn't have finished it before I turn 24 judging by the frequency of posts around here as well as my amazing ability to endlessly procrastinate. I'm simply going to say that I hope this coming year is better than the last, in more ways than one.</p>

<p>Thanks for reading and <a href="http://stuconnolly.com/blog/feed/">subscribing</a>.</p>]]></description>
		</item>
		<item>
			<title>Poor Show</title>
			<dc:creator>Stuart Connolly</dc:creator>
			<pubDate>Thu, 08 Apr 2010 15:57:00 +0000</pubDate>
			<link>http://stuconnolly.com/blog/poor-show/</link>
			<guid>http://stuconnolly.com/blog/poor-show/</guid>
			<comments>http://stuconnolly.com/blog/poor-show/#comments</comments>
			<description><![CDATA[<p>So I'm a few days late in openly voicing my opinion here on the passing of the <a href="http://en.wikipedia.org/wiki/Digital_Economy_Bill">Digital Economy Bill</a> at its second reading in Parliament on Tuesday and again at its third just yesterday, but the fact is it's now going to be the law within weeks and has the potential to effect everyone who uses the Internet within the UK.</p>

<p>I've come to expect a less than democratic process when it comes to pushing through new laws and legislation by this government (or any other for that matter) which claims to operate in a democratically elected society, but for me the passing of the Digital Economy Bill was one of the worst displays of democracy I've ever seen. Did nearly every MP just forget they were elected to represent the views of their constituents and choose to ignore the 20,000 people that wrote to them expressing their views on the bill and calling for more debate on it before passing it through Parliament and making it law.</p>

<p>Well, that's exactly what happened and less than 40 of 646 MPs <a href="http://arstechnica.com/tech-policy/news/2010/04/internet-cut-offs-website-censorship-about-to-drop-on-uk.ars">turned up</a> to the second reading of the bill on Tuesday, which lead to a <em>very</em> poor display of democracy in action for the 20,000 individuals who wrote to their MPs as well as undoubtedly many others. So some of the MPs present at the reading did try to voice their opinion as well as their constituents and openly admitted that they were not in a position to make a decision regarding something that they do not have sufficient expertise in. This however didn't seem to make a difference and I guess the big corporations that pressured the Government into pushing the bill through got their way.</p>

<p>The <a href="http://www.openrightsgroup.org/">Open Rights Group</a> is making no secrets of what think about the Government's decision to push the bill through, and I was more than happy to add my name along with 654 others to <a href="http://nevali.net/">Mo McRoberts</a>' (<a href="https://twitter.com/nevali">@nevali</a>) excellent <a href="http://nevali.net/post/501647501/an-open-letter-to-sion-simon-pete-wishart-david">open letter</a> to some of the MPs who were present at the reading.</p>

<p>I can only hope that the Government comes to its senses very quickly or any newly elected Government does the right thing and overturns this new law. Both of which I'm unsure of the possibility regardless of the intent.</p>]]></description>
		</item>
		<item>
			<title>Sequel Pro URL Shortening</title>
			<dc:creator>Stuart Connolly</dc:creator>
			<pubDate>Mon, 05 Apr 2010 16:21:00 +0000</pubDate>
			<link>http://stuconnolly.com/blog/sequel-pro-url-shortening/</link>
			<guid>http://stuconnolly.com/blog/sequel-pro-url-shortening/</guid>
			<comments>http://stuconnolly.com/blog/sequel-pro-url-shortening/#comments</comments>
			<description><![CDATA[<p>Considering that there are more URL shortening services than anyone cares to (or can) keep track off, there's not exactly the need for another, when you realise the only thing different would be the name. Despite this, I am creating a new URL shortening service, but one that is specific to the <a href="http://sequelpro.com">Sequel Pro</a> project and not available for general URL shortening use. That is, the service doesn't allow you to create custom short URLs, but is effectively based on the data of the various sites that make up the project.</p>

<p>While messing about with Google Chrome the other day I came across the 'About Memory' page (accessible via the 'Stats for nerds' link on the Task Manager or by typing 'about:memory' in the address bar) which obviously displays the application's memory as a summary, but also split by process, which in Chrome's case, is a process per tab. Aside from the interesting (if it can even be called that) memory usage stats was a warning of a bug that was causing Chrome to seriously over count it's own memory usage, with a link to the actual bug in their issue tracker. Half expecting the link to point directly to Chromium's issue tracker on Google Code, it actually pointed to <a href="http://crbug.com/">crbug.com</a>. Ok, so it doesn't take a genius to work out that they're using there own URL shortener to obviously provide short and memorable links when referring to issues, but I actually thought it was a pretty cool idea.</p>

<p>So aside from the obvious benefit of allowing anyone to refer to issues (bugs and enhancement requests) without having to remember the somewhat longer Google Code issue page URL, it also provides some form of insurance to links referring to issues from all over the web using the service will still work in the event that the project decides to change it's issue tracker (either the software or to entirely different domain). Seeing the benefit of this, I thought we could also implement the same sort of service for the Sequel Pro project using the appropriately named <a href="http://spbug.com/">spbug.com</a>.</p>

<p>The aim of the project behind Sequel Pro has always been <em>to create the best MySQL database management app for Mac OS X</em> and since <a href="http://stuconnolly.com/blog/sequel-pro/">joining</a> as a developer in November 2008 every release has brought us closer to this goal. The release candidate for version 0.9.8 has just been made <a href="http://www.sequelpro.com/blog/2010.04/sequel-pro-0-9-8-release-candidate/">available</a> and depending on feedback should be officially released within the next week or so. As we get close to the much-anticipated version 1.0 release we are now trying to create a solid development infrastructure to support the project. For example, included in the 0.9.8 release will be an integrated crash/exception reporter <a href="http://vafer.org/projects/feedbackreporter/">framework</a> as well as a supporting website to view and manage the submitted logs at <a href="http://log.sequelpro.com/">log.sequelpro.com</a>. The aim of the added functionality and website is to enable us to improve the overall stability of Sequel Pro, by examining the feedback provided by users (especially for <a href="http://nightly.sequelpro.com/">nightly builds</a>). As well as the new log site, is the addition of a new site dedicated to the localisation of Sequel Pro into languages other than English at <a href="http://translate.sequelpro.com/">translate.sequelpro.com</a>.</p>

<p>So where does the creation of a URL shortening service come in? Well, we now have multiple sites supporting the development of Sequel Pro, from version control, issue tracking, crash log management, nightly builds and localisation and so the creation of <a href="http://spbug.com/">spbug.com</a> allows us to easily refer to most of these during development (especially on IRC) and when responding to user requests and feedback via <a href="http://groups.google.com/group/sequel-pro">email</a>.</p>

<p>Currently the service provides seven different redirects, including the default, which is the site itself redirecting to our issue tracker. Provided with the correct parameters the others redirect to:</p>

<ul>
	<li>Issue</li>
	<li>Source Revision</li>
	<li>Source Revisions List</li>
	<li>Crash/Exception Log</li>
	<li>Crash/Exception Logs List</li>
	<li>Crash/Exception Log Report</li>
</ul>

<p>The most basic is when referring to a specific issue, for example, <a href="http://spbug.com/530">spbug.com/530</a>, which redirects to the following issue on Google Code:</p>

<a href="http://code.google.com/p/sequel-pro/issues/detail?id=530">http://code.google.com/p/sequel-pro/issues/detail?id=530</a>

<p>To find out how to use the others, I put together a short help page at <a href="http://spbug.com/h">spbug.com/h</a>, which details there use as well as some other functionality.</p>

<p>The service was originally implemented as single <code>.htacess</code> file with all redirecting done using <code>mod_rewrite</code>, but I wanted something a bit more flexible in terms of being able to update the URLs for which redirects point to as well as to enable some form of logging. The rewritten version is therefore a very simple PHP app, with all the URL redirect (and page rewrite) rules stored in a MySQL database. Redirect logging in terms of the requested URL and where it was redirect to can also be enabled and stored in the database.</p>

<p>The source for the service is also freely <a href="http://dev.stuconnolly.com/svn/code/trunk/spbug.com/">available</a> under version <strong>3</strong> of the <a href="http://www.gnu.org/copyleft/gpl.html">GPL</a>.</p>]]></description>
		</item>
		<item>
			<title>SafariTabs 0.7.2</title>
			<dc:creator>Stuart Connolly</dc:creator>
			<pubDate>Wed, 03 Mar 2010 21:27:00 +0000</pubDate>
			<link>http://stuconnolly.com/blog/safaritabs-072/</link>
			<guid>http://stuconnolly.com/blog/safaritabs-072/</guid>
			<comments>http://stuconnolly.com/blog/safaritabs-072/#comments</comments>
			<description><![CDATA[<p><a href="http://stuconnolly.com/projects/safaritabs/">SafariTabs</a> 0.7.2 is now available for <a href="http://stuconnolly.com/downloads/safaritabs/0.7.2/">download</a>. As usual this is a pretty minor release that resolves the following issues:</p>

<ul>
	<li>New window links not working when the 'Force new window links to open in a new tab' option is disabled.</li>
	<li>Not saving the current session's open tabs when private browsing is enabled.</li>
</ul>

<p>The first issue was introduced in the previous release while the second has been around for a couple of versions, which has now finally been resolved. Enjoy.</p>

<p><em class="highlight"><strong>Update:</strong> I've just realised that this version was released exactly 3 years to the day since the <a href="http://stuconnolly.com/projects/safaritabs/safaritabs-version-history/">first</a> public release (version 0.1). Can't believe it's been 3 years already.</em></p>]]></description>
		</item>
		<item>
			<title>SafariTabs 0.7</title>
			<dc:creator>Stuart Connolly</dc:creator>
			<pubDate>Sun, 06 Dec 2009 23:32:00 +0000</pubDate>
			<link>http://stuconnolly.com/blog/safaritabs-07/</link>
			<guid>http://stuconnolly.com/blog/safaritabs-07/</guid>
			<comments>http://stuconnolly.com/blog/safaritabs-07/#comments</comments>
			<description><![CDATA[<p><a href="http://stuconnolly.com/projects/safaritabs/">SafariTabs</a> 0.7 is now available for <a href="http://stuconnolly.com/downloads/safaritabs/0.7/">download</a>. I've been meaning to release this for a while as it includes (the frequently requested) support for Safari 4.0.4 on Snow Leopard (OS X 10.6). It also contains a German localisation contributed by Christoph Schmitz and a Simplified Chinese localisation contributed by Donald Teng.</p>

<p>Anyone who is already using other SIMBL based <em>plugins</em> on Snow Leopard will know that it had to be re-written to get around Apple's tightening restrictions on InputManagers. Without gettting into the exact technical details, if you aren't already using it, SafariTabs requires the very latest <a href="http://www.culater.net/software/SIMBL/SIMBL.php">SIMBL</a> version that is compatible with Snow Leopard. This subsequently means that this version of SafariTabs is also only compatible with Snow Leopard.</p> 

<p><em class="highlight"><strong>Update:</strong> I've pulled this release for the time being because of 64-bit compatibility problems, which I'm currently working on to resolve.</em></p>

<p><em class="highlight"><strong>Update 2:</strong> The release is now available again after the 64-bit issues were resolved. Thanks for your patience and thanks to all the testers who helped out.</em></p>]]></description>
		</item>
		<item>
			<title>SCEvents 0.1.4</title>
			<dc:creator>Stuart Connolly</dc:creator>
			<pubDate>Sat, 05 Dec 2009 22:42:00 +0000</pubDate>
			<link>http://stuconnolly.com/blog/scevents-014/</link>
			<guid>http://stuconnolly.com/blog/scevents-014/</guid>
			<comments>http://stuconnolly.com/blog/scevents-014/#comments</comments>
			<description><![CDATA[<p><a href="http://stuconnolly.com/projects/source-code/">SCEvents</a> 0.1.4 is now available for <a href="http://stuconnolly.com/downloads/scevents/0.1.4/">download</a>. This small update fixes the following:</p>

<ul>
	<li>An issue relating to the removal of an event path's trailing slash.</li>
	<li>An issue that prevented external drives from being ejected even after <code>stopWatchingPaths;</code> had been called.</li>
</ul>

<p>It also includes the new method <code>streamDescription;</code> for debugging purposes. Internally this method is calling FSEvents' <code>FSEventStreamCopyDescription()</code> function, which returns something along the lines of the following:</p>

<pre>
FSEventStreamRef @ 0x1036a0:
    allocator = 0xa0474ee0
    callback = 0x2e92
    context = {0, 0x1050f0, 0x0, 0x0, 0x0}
    numPathsToWatch = 1
    pathsToWatch = 0xa0474ee0
        pathsToWatch[0] = '/Users/stuart'
    latestEventId = -1
    latency = 3000000 (microseconds)
    flags = 0x00000005
    runLoop = 0x105db0
    runLoopMode = 0xa0469c68
</pre>

<p>Many thanks to <a href="http://www.randomapplications.com/">Pico Mitchell</a> for providing valuable feedback that led to these issues being identified. Cheers Pico.</p>

]]></description>
		</item>
	</channel>
</rss>
