<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mark Alldritt&#039;s Journal</title>
	<atom:link href="http://blog.latenightsw.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://blog.latenightsw.com</link>
	<description>Just another developer weblog</description>
	<lastBuildDate>Mon, 07 May 2012 23:57:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>FaceSpan 5 (Mark&#8217;s Misadventure)</title>
		<link>http://blog.latenightsw.com/?p=637</link>
		<comments>http://blog.latenightsw.com/?p=637#comments</comments>
		<pubDate>Sun, 06 May 2012 04:38:48 +0000</pubDate>
		<dc:creator>Mark Alldritt</dc:creator>
				<category><![CDATA[FaceSpan]]></category>
		<category><![CDATA[Late Night Software]]></category>

		<guid isPermaLink="false">http://blog.latenightsw.com/?p=637</guid>
		<description><![CDATA[A review of my failed FaceSpan 5 project and a chance to try the software out.]]></description>
			<content:encoded><![CDATA[<p>Back in May 2009 I made the <a href="http://blog.latenightsw.com/?p=50">difficult decision to abandon FaceSpan 5</a>. This was a wrenching period in my life and it has taken a long time to recover.  The failure of this project seriously stressed my relationship with a couple of good friends and cost me a lot of money and time.  At last I feel like I have enough distance to begin to talk about what was accomplished and the mistakes I made. </p>

<p>I am a self-funded Indie (lone) developer.  I made a number of classic business blunders on the FaceSpan 5 project.  I broke the golden rule: <strong>never (never!) rewrite a software product</strong>.  I massively underestimated the effort required to complete the product.  I set off without having sufficient resources to complete the project.  Because I took so long to complete my work, the market moved on &#8212; AppleScript&#8217;s importance to the customers I intended to target declined.  Some may argue that the market was never really there to provide a return for a product of this complexity.  Finally, I didn&#8217;t pull the plug soon enough.  Hindsight its great.</p>

<p>Not all was lost.  <em>Some</em> of the code I developed for FaceSpan 5 found a home in <a href="http://blog.latenightsw.com/?cat=18">Script Debugger 5</a>.</p>

<h2>A Little History</h2>

<p>Many years previously I developed FaceSpan 3 under contract for its owner. As part of that effort I became impressed with FaceSpan&#8217;s power and simplicity. FaceSpan 3 was successful, for a development tool, and even received an Apple Design Award at that year&#8217;s Worldwide Developers Conference.  Sadly, after my involvement with the product ended, FaceSpan fell into disrepair and did not make the leap to Mac OS X. FaceSpan&#8217;s developer finally produced FaceSpan 4 which was to little to late and not as successful as hoped for.</p>

<p>I acquired FaceSpan 4 in 2006 and, after a period where I tried to fix the most serious issues with the product, I concluded that FaceSpan 4&#8242;s dependance on AppleScript Studio was its core problem.  FaceSpan 4 had great integration of a visual UI bilder and coder editor, but lacked a good runtime environment and debugging.</p>

<p>Work on FaceSpan 5 began in 2007 with the aim of freeing FaceSpan from AppleScript Studio and restoring the classic FaceSpan&#8217;s attractiveness. By the time I stopped FaceSpan&#8217;s development I believe I was well on my way to achieving my aims. Two great Mac developers helped me with the project:</p>

<ul>
<li>Adrian Ruigrok, who now works for Apple, developed much of the FaceSpan 5 IDE code.</li>
<li>Matt Neuburg acted as a sounding board for my ideas and developed the initial FaceSpan 5 documentation.</li>
</ul>

<p>The project turned out to be too ambitious given my resources.  Additionally, FaceSpan revealed a number of AppleScript issues and problems in Apple&#8217;s Cocoa Scripting framework which I was ultimately unable to overcome.</p>

<h2>What Is (Was) FaceSpan?</h2>

<p>FaceSpan 5 was an integrate tool for building Cocoa applications using AppleScript.  Many people saw similarities to Apple&#8217;s HyperCard.  FaceSpan provided a visual UI builder, an AppleScript editor, an AppleScript debugger and a runtime environment designed to take the best advantage of AppleScript&#8217;s strengths and provide a collection services and UI widgets out of which applications can be built.  Matt wrote this <a href="http://blog.latenightsw.com/?page_id=565">description of FaceSpan 5</a> back when the project was active.</p>

<p><img src="http://blog.latenightsw.com/wp-content/uploads/2012/05/FaceSpan5.png" alt="FaceSpan 5 Project Window" /></p>

<p>The FaceSpan 5 runtime environment wrapped Apple&#8217;s Cocoa Frameworks in a sanitized and simplified AppleScript focused programming interface.  This allowed one to build fully Cocoa-native applications using AppleScript without having to learn anything about Cocoa.  The intent was for Cocoa to be an implementation detail rather than the programming interface.</p>

<p>We&#8217;ll never know if the FaceSpan 5 approach was actually better than the <a href="http://developer.apple.com/legacy/mac/library/documentation/AppleScript/Conceptual/StudioBuildingApps/StudioBuildingApps.pdf">AppleScript Studio</a> interface offered by Apple.  My hope was that FaceSpan&#8217;s approach was actually simpler, and not simply a substitution of one complicated programming interface for another.</p>

<p>Since FaceSpan 5 was abandoned there have been several developments in the area of AppleScript GUI tools.  Firstly, Apple transitioned from AppleScript Studio to <a href="http://developer.apple.com/library/mac/#releasenotes/ScriptingAutomation/RN-AppleScriptObjC/_index.html">AppleScriptObjC</a>.  Shane Stanley has released his <a href="http://www.macosxautomation.com/applescript/apps/runner.html">ASObjC Runner</a> which can display progress dialogs.  And then there is the long lived <a href="http://www.24usoftware.com/AppearanceOSAX">Appearance OSAX</a> from 24U Software.</p>

<h2>The Last Build</h2>

<p>When I stopped developing FaceSpan 5, a lot of people came out of the woodwork looking for a copy of the software.  I was not willing to make the software available at that time, but I am now.  I&#8217;m doing this now because I think it might be interesting for those of you who were/are curious about what I was working on to get a chance to play with the product.  </p>

<p>Keep in mind that this build predates the release of Xcode 4 and there are some interesting similarities.  Apple had to be developing parts of Xcode 4 during the same period so its fascinating to me how common ideas arrise in different places.</p>

<p>Before you download the software, please keep the following conditions in mind:</p>

<ul>
<li>This is <strong><a href="http://en.wikipedia.org/wiki/Alpha_software#Alpha">Alpha-Stage</a></strong> software.  This means that it is buggy and its not feature or UI complete.  Expect it to crash and fail.  If you stick to the examples included with the documentation, you should be okay.  </li>
<li><strong>THE FACESPAN SOFTWARE IS PROVIDED AS-IS FOR EVALUATION PURPOSES ONLY.  USE AT YOUR OWN RISK</strong>.</li>
<li><strong>PLEASE DO NOT FILE BUG REPORTS</strong>.  I&#8217;m not going to produce another build.</li>
<li><strong>PLEASE DO NOT ASK ME TO OPEN SOURCE THE PROJECT</strong>.  This product shares a lot of code with my Script Debugger product and I&#8217;m not willing to release the code.</li>
<li><strong>RTFM</strong>.  Seriously, you are on your own.</li>
<li>The software should run on Snow Leopard (10.6) or Lion (10.7).  I have no idea if it will work on Mountain Lion (10.8) or beyond.</li>
</ul>

<p>View <strong><a href="http://blog.latenightsw.com/wp-content/uploads/facespan_beta/index.html">Matt Neuburg&#8217;s Alpha Documentation</a></strong>.  More <a href="http://blog.latenightsw.com/?page_id=568">FaceSpan 5 information and screencasts</a>.</p>

<p>Download <strong><a href="http://www.latenightsw.com/archives/FaceSpan5.dmg">FaceSpan 5.0</a></strong>.</p>

<p><strong><a href="http://blog.latenightsw.com/?cat=10">FaceSpan 5 Blog Posts</a></strong>.</p>

<p>To get you going, check out this post: <a href="http://blog.latenightsw.com/?p=569">Dock Icon Changer</a>.</p>

<p>Have Fun!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.latenightsw.com/?feed=rss2&#038;p=637</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Pretty Polaroids II</title>
		<link>http://blog.latenightsw.com/?p=532</link>
		<comments>http://blog.latenightsw.com/?p=532#comments</comments>
		<pubDate>Wed, 22 Feb 2012 01:03:43 +0000</pubDate>
		<dc:creator>Mark Alldritt</dc:creator>
				<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://blog.latenightsw.com/?p=532</guid>
		<description><![CDATA[My first <a href="http://blog.latenightsw.com/?p=523">Pretty Polaroids</a> post shows my first cut at implementing the <a href="http://www.premiumpixels.com">Premium Pixels</a> <a href="http://www.premiumpixels.com/freebies/pretty-polaroids-psd/">Pretty Polaroids</a> UI mockup. I realized that my first cut did not convert the iamges to grayscale as they are in the Pretty Polaroids muckup.]]></description>
			<content:encoded><![CDATA[<p>My first <a href="http://blog.latenightsw.com/?p=523">Pretty Polaroids post</a> shows my first cut at implementing the <a href="http://www.premiumpixels.com">Premium Pixels</a> <a href="http://www.premiumpixels.com/freebies/pretty-polaroids-psd/">Pretty Polaroids</a> UI mockup. I realized that my first cut did not convert the iamges to grayscale as they are in the Pretty Polaroids muckup.  </p>

<p>For v2, I added the conversion to grayscale.  I took this opportunity to add a Settings menu to the app&#8217;s Action Bar which toggles between Color and Grayscale display.  Finally, I found that I needed to retain the Color/Grayscale setting in the app&#8217;s preferences so I added that as well.</p>

<p><img src="http://blog.latenightsw.com/wp-content/uploads/2012/02/androidUI.jpg" alt="Android UI" /></p>

<p>You can download the source code for this application here:</p>

<p><strong><a href="http://blog.latenightsw.com/wp-content/uploads/2012/02/PolaroidII.zip">PolaroidII.zip</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.latenightsw.com/?feed=rss2&#038;p=532</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pretty Polaroids</title>
		<link>http://blog.latenightsw.com/?p=523</link>
		<comments>http://blog.latenightsw.com/?p=523#comments</comments>
		<pubDate>Tue, 21 Feb 2012 18:58:01 +0000</pubDate>
		<dc:creator>Mark Alldritt</dc:creator>
				<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://blog.latenightsw.com/?p=523</guid>
		<description><![CDATA[I came across the <a href="http://www.premiumpixels.com">Premium Pixels</a> site which offers a series of attractive free UI design elements.   I decided to start with their <a href="http://www.premiumpixels.com/freebies/pretty-polaroids-psd/">Pretty Polaroids</a> example and try and implement it as an Adroid application.]]></description>
			<content:encoded><![CDATA[<p>I recently received a Samsung Galaxy Tab 10.1 tablet as part of a promotion for new Cable TV service we subscribed to.  Now that I have an Android device in the house, I decided to start learning the Android SDK.</p>

<p>I came across the <a href="http://www.premiumpixels.com">Premium Pixels</a> site which offers a series of attractive free UI design elements.   I decided to start with their <a href="http://www.premiumpixels.com/freebies/pretty-polaroids-psd/">Pretty Polaroids</a> example and try and implement it as an Adroid application.</p>

<p>This sample Android application allowed me to experiment with the <a href="http://developer.android.com/reference/android/graphics/package-summary.html">android.graphics</a> objects.</p>

<p>Here&#8217;s how the Premium Pixels UI mockup looks:</p>

<p><img src="http://blog.latenightsw.com/wp-content/uploads/2012/02/muckup.jpg" alt="UI Mockup" /></p>

<p>Here&#8217;s how my Android implementation of this UI turned out:</p>

<p><img src="http://blog.latenightsw.com/wp-content/uploads/2012/02/android.jpg" alt="Android Mockup" /></p>

<p>You can download the source code for this application here:</p>

<p><strong><a href="http://blog.latenightsw.com/wp-content/uploads/2012/02/Polaroid.zip">Polaroid.zip</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.latenightsw.com/?feed=rss2&#038;p=523</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>TimePicker Cocoa View</title>
		<link>http://blog.latenightsw.com/?p=512</link>
		<comments>http://blog.latenightsw.com/?p=512#comments</comments>
		<pubDate>Fri, 10 Feb 2012 16:35:19 +0000</pubDate>
		<dc:creator>Mark Alldritt</dc:creator>
				<category><![CDATA[Cocoa]]></category>

		<guid isPermaLink="false">http://blog.latenightsw.com/?p=512</guid>
		<description><![CDATA[This project implements <a href="http://dribbble.com/iamdavid">David Cristian</a>'s <a href="http://dribbble.com/shots/380911-Hour-Picker">Hour Picker</a> UI design (which I found via <a href="http://www.uiparade.com/">UI Parade</a>) as a Cocoa View]]></description>
			<content:encoded><![CDATA[<h1>TimePicker Cocoa View</h1>

<p><a href="http://blog.latenightsw.com/wp-content/uploads/2012/02/TimePicker.zip">Downlaod TimePicker.zip</a></p>

<p>This project is an attempt to implement <a href="http://dribbble.com/iamdavid">David Cristian</a>&#8216;s <a href="http://dribbble.com/shots/380911-Hour-Picker">Hour Picker</a> UI design (which I found via <a href="http://www.uiparade.com/">UI Parade</a>) as a Cocoa View.  Here is how David&#8217;s UI mockup appears:</p>

<p><img src="http://dribbble.com/system/users/2555/screenshots/380911/hourpicker.png?1326280179" alt="Hour Picker" /></p>

<p>When I first saw this UI design I found it visually compelling, and it really seems like a nice solution to the problem of allowing the user to quickly pick periods of time in 1/2 hour increments.  When I began turning it into a functional UI a number of issues concerning how users interact with the UI begin to surface:</p>

<ol>
<li>This mockup shows only 6 hours.  The UI needs to scroll in order to show the full 24-hour day.</li>
<li>I chose only to implement click and drag to select time ranges.  I imagine that shift-clicking might be desirable.  I didn&#8217;t attempt to handle keyboard input.</li>
<li>At first I though the 1/2 hour grid was self evident.  However, when I began using the UI, I decided I needed duration feedback while dragging to know exactly how long the selected period is.</li>
</ol>

<p>Here&#8217;s how my implementation looks while the user is dragging the mouse:</p>

<p><img src="http://farm8.staticflickr.com/7181/6852015443_a5759f239c.jpg" alt="Cocoa Time Picker" /></p>

<p>There are limitations to this UI:</p>

<ol>
<li>Time can only be selected in 1/2 hour increments.</li>
<li>Time can only be selected within a single 24-hour day.</li>
<li>Auto-scrolling while dragging is problematic.  It may be that auto-scrolling needs to slow down, or more rows need to be made visible in the scroll view.</li>
</ol>

<h2>Requirements</h2>

<p>The project requires Xcode 4.2, and the Mac OS X 10.7 SDK.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.latenightsw.com/?feed=rss2&#038;p=512</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Script Debugger 4.5.7</title>
		<link>http://blog.latenightsw.com/?p=503</link>
		<comments>http://blog.latenightsw.com/?p=503#comments</comments>
		<pubDate>Tue, 19 Jul 2011 15:08:34 +0000</pubDate>
		<dc:creator>Mark Alldritt</dc:creator>
				<category><![CDATA[AppleScript]]></category>
		<category><![CDATA[Late Night Software]]></category>
		<category><![CDATA[Script Debugger 4.5]]></category>

		<guid isPermaLink="false">http://blog.latenightsw.com/?p=503</guid>
		<description><![CDATA[Script Debugger 4.5.7 is a free maintenance release that addresses a series of issues that came to light following the release of Script Debugger 4.5.  Script Debugger 4.5.7 provides compatibility with Mac OS X 10.7 (Lion).]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m pleased to announce the release of Script Debugger 4.5.7. Script Debugger 4.5.7 is a free maintenance release that addresses a series of issues that came to light following the release of Script Debugger 4.5.</p>

<p><a href="http://www.latenightsw.com/sd4/download.html">Download</a></p>

<p><a href="http://www.latenightsw.com/sd4/releaseNotes.html">Release Notes</a></p>

<p>Among the changes in the Script Debugger 4.5.7 maintenance release is a fix for crashing bug when opening or creating documents on Mac OS X 10.7 (Lion).</p>

<p>A big thank you to all the folks who downloaded the various Script Debugger 4.5.7 Beta builds.  I really appreciate all the great feedback and bug reports I received.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.latenightsw.com/?feed=rss2&#038;p=503</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Script Debugger 4.5.7b4</title>
		<link>http://blog.latenightsw.com/?p=500</link>
		<comments>http://blog.latenightsw.com/?p=500#comments</comments>
		<pubDate>Sun, 10 Jul 2011 02:04:27 +0000</pubDate>
		<dc:creator>Mark Alldritt</dc:creator>
				<category><![CDATA[AppleScript]]></category>
		<category><![CDATA[Late Night Software]]></category>
		<category><![CDATA[Script Debugger 4.5]]></category>

		<guid isPermaLink="false">http://blog.latenightsw.com/?p=500</guid>
		<description><![CDATA[I am preparing another Script Debugger 4.5 maintenance release.  This new beta build resolves compatibility issues with Lion (Mac OS X 10.7).]]></description>
			<content:encoded><![CDATA[<p>I am preparing another Script Debugger 4.5 maintenance release.  </p>

<p><strong>UPDATE</strong>: <a href="http://blog.latenightsw.com/?p=503">Script Debugger 4.5.7 has been released</a>.</p>

<p>As was the case with Script Debugger 4.5.5 and 4.5.6, I am struggling to resolve some stability problems that appeared following the release of Mac OS X 10.6 (Snow Leopard).  Resolving these issues has been very difficult as I am not been able to reproduce the crashes on my own systems. </p>

<p>To help me determine if I’ve resolved the stability issues (or at least improved things), please allow Script Debugger to submit <strong>ALL</strong> crash reports. I know that this may slow you down a little, but it will help me as I work to resolve the stability problems.</p>

<h2>Requirements</h2>

<ul>
<li>A Script Debugger 4.5 registration number</li>
<li>Intel or PowerPC Macintosh</li>
<li>Mac OS X 10.6, 10.5, 10.4</li>
</ul>

<h2>Download</h2>

<p><a href="http://www.latenightsw.com/archives/beta_for_script_debugger/ScriptDebugger4.5.7b4.dmg">Script Debugger 4.5.7b4</a> (12MB)</p>

<h2>Installation</h2>

<ul>
<li>Quit Script Debugger if it is running</li>
<li>Mount the ScriptDebugger4.5.7 disk image</li>
<li>Copy the Script Debugger 4.5 application from the disk image to your Applications folder (or any other place on your disk)</li>
<li>Restart your Macintosh to ensure all caches are flushed</li>
</ul>

<p>I recommend keeping your copy of Script Debugger 4.5.6 around in case you need to revert to that build.  <strong>Note also that this BETA build expires on October 1, 2011</strong>.</p>

<h2>Script Debugger 4.5.7b4 Changes</h2>

<ul>
<li>15112 [Crash] Script Debugger co-exists with installations of the forthcoming Script Debugger 5.0.</li>
<li>15101 [Crash] Script Debugger no longer crashes when creating new documents on Lion (Mac OS X 10.7).</li>
</ul>

<h2>Script Debugger 4.5.7b3 Changes</h2>

<ul>
<li>15108 Addressed a problem where the Dictionary/Explorer control in the Dictionary window was not updated to &#8216;Dictionary&#8217; following a search.</li>
<li>14862 Added support for ASObjC scripts by allowing &#8216;class &#8220;ClassName&#8221;&#8216; constructs to compile.</li>
</ul>

<p><a href="http://blog.latenightsw.com/?p=491">Script Debugger 4.5.7b2 Changes</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.latenightsw.com/?feed=rss2&#038;p=500</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Script Debugger 4.5.7b2</title>
		<link>http://blog.latenightsw.com/?p=491</link>
		<comments>http://blog.latenightsw.com/?p=491#comments</comments>
		<pubDate>Fri, 29 Apr 2011 16:58:07 +0000</pubDate>
		<dc:creator>Mark Alldritt</dc:creator>
				<category><![CDATA[AppleScript]]></category>
		<category><![CDATA[Late Night Software]]></category>
		<category><![CDATA[Script Debugger 4.5]]></category>

		<guid isPermaLink="false">http://blog.latenightsw.com/?p=491</guid>
		<description><![CDATA[I am preparing another Script Debugger 4.5 maintenance release.  This new beta build contains fixes for a few more instances where Script Debugger crashes.]]></description>
			<content:encoded><![CDATA[<p>I am preparing another Script Debugger 4.5 maintenance release.  </p>

<p><strong>UPDATE</strong>: <a href="http://blog.latenightsw.com/?p=503">Script Debugger 4.5.7 has been released</a>.</p>

<p>As was the case with Script Debugger 4.5.5 and 4.5.6, I am struggling to resolve some stability problems that appeared following the release of Mac OS X 10.6 (Snow Leopard).  Resolving these issues has been very difficult as I am not been able to reproduce the crashes on my own systems.  The Script Debugger 4.5.7b2 build addresses some additional problems that I hope will further improve stability.</p>

<p>To help me determine if I’ve resolved the stability issues (or at least improved things), please allow Script Debugger to submit <strong>ALL</strong> crash reports. I know that this may slow you down a little, but it will help me as I work to finally resolve the stability problems.</p>

<h2>Requirements</h2>

<ul>
<li>A Script Debugger 4.5 registration number</li>
<li>Intel or PowerPC Macintosh</li>
<li>Mac OS X 10.6, 10.5, 10.4</li>
</ul>

<h2>Download</h2>

<p><a href="http://www.latenightsw.com/archives/beta_for_script_debugger/ScriptDebugger4.5.7b2.dmg">Script Debugger 4.5.7b2</a> (12MB)</p>

<h2>Installation</h2>

<ul>
<li>Quit Script Debugger if it is running</li>
<li>Mount the ScriptDebugger4.5.7 disk image</li>
<li>Copy the Script Debugger 4.5 application from the disk image to your Applications folder (or any other place on your disk)</li>
<li>Restart your Macintosh to ensure all caches are flushed</li>
</ul>

<p>I recommend keeping your copy of Script Debugger 4.5.6 around in case you need to revert to that build.  <strong>Note also that this BETA build expires on July 1, 2011</strong>.</p>

<h2>Script Debugger 4.5.7b2 Changes</h2>

<ul>
<li>15107 Script Debugger no longer attempts to compile scripts when saving changes to an existing Text (.applescript) document.</li>
<li>15106 Script Debugger no longer causes AppleScript to convert &#8220;reference&#8221; to &#8220;specifier&#8221; when compiling scripts.</li>
<li>14862 Added support for ASObjC scripts by allowing &#8216;class &#8220;ClassName&#8221;&#8216; constructs to compile.</li>
</ul>

<p><a href="http://blog.latenightsw.com/?p=466">Script Debugger 4.5.7b1 Changes</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.latenightsw.com/?feed=rss2&#038;p=491</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Script Debugger 4.5.7b1</title>
		<link>http://blog.latenightsw.com/?p=466</link>
		<comments>http://blog.latenightsw.com/?p=466#comments</comments>
		<pubDate>Thu, 17 Mar 2011 15:45:48 +0000</pubDate>
		<dc:creator>Mark Alldritt</dc:creator>
				<category><![CDATA[AppleScript]]></category>
		<category><![CDATA[Late Night Software]]></category>
		<category><![CDATA[Script Debugger 4.5]]></category>

		<guid isPermaLink="false">http://blog.latenightsw.com/?p=466</guid>
		<description><![CDATA[I am preparing another Script Debugger 4.5 maintenance release.  This new beta build contains fixes for a few more instances where Script Debugger crashes.]]></description>
			<content:encoded><![CDATA[<p>I am preparing another Script Debugger 4.5 maintenance release.  </p>

<p><strong>UPDATE</strong>: <a href="http://blog.latenightsw.com/?p=503">Script Debugger 4.5.7 has been released</a>.</p>

<p>As was the case with Script Debugger 4.5.5 and 4.5.6, I am struggling to resolve some stability problems that appeared following the release of Mac OS X 10.6 (Snow Leopard).  Resolving these issues has been very difficult as I am not been able to reproduce the crashes on my own systems.  The Script Debugger 4.5.7b1 build addresses some additional problems that I hope will further improve stability.</p>

<p>To help me determine if I’ve resolved the stability issues (or at least improved things), please allow Script Debugger to submit <strong>ALL</strong> crash reports. I know that this may slow you down a little, but it will help me as I work to finally resolve the stability problems.</p>

<h2>Requirements</h2>

<ul>
<li>A Script Debugger 4.5 registration number</li>
<li>Intel or PowerPC Macintosh</li>
<li>Mac OS X 10.6, 10.5, 10.4</li>
</ul>

<h2>Download</h2>

<p><a href="http://blog.latenightsw.com/?p=491">no longer available</a></p>

<h2>Installation</h2>

<ul>
<li>Quit Script Debugger if it is running</li>
<li>Mount the ScriptDebugger4.5.7 disk image</li>
<li>Copy the Script Debugger 4.5 application from the disk image to your Applications folder (or any other place on your disk)</li>
<li>Restart your Macintosh to ensure all caches are flushed</li>
</ul>

<p>I recommend keeping your copy of Script Debugger 4.5.6 around in case you need to revert to that build.  <strong>Note also that this BETA build expires on May 1, 2011</strong>.</p>

<h2>Script Debugger 4.5.7b1 Changes</h2>

<ul>
<li>15090 [CRASH] Resolved a bug in the Balance command that could result in crashes if compound AppleScript statements (tell x to y, if x then y) appear within a block style comment.</li>
<li>15094 [CRASH] Another attempt to resolve the intermittent crashes which began with the release of Mac OS X 10.6 (Snow Leopard).</li>
<li>15093 Resolved a problem where the Dictionary window fails to display dictionary descriptions for multiple items selected from the browser.</li>
<li>15092 Resolved a problem where application bundles saved as 32-bit appear as PowerPC applications in the Finder.</li>
<li>15091 Fixed a typo in the property definition clipping.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.latenightsw.com/?feed=rss2&#038;p=466</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AppleScriptObjC Explored 2.0</title>
		<link>http://blog.latenightsw.com/?p=440</link>
		<comments>http://blog.latenightsw.com/?p=440#comments</comments>
		<pubDate>Mon, 07 Feb 2011 16:19:00 +0000</pubDate>
		<dc:creator>Mark Alldritt</dc:creator>
				<category><![CDATA[AppleScript]]></category>
		<category><![CDATA[Cocoa]]></category>

		<guid isPermaLink="false">http://blog.latenightsw.com/?p=440</guid>
		<description><![CDATA[<a href="email:sstanley@myriad-com.com.au">Shane Stanley</a> has just released version 2 of <a href="http://www.macosxautomation.com/applescript/apps/">AppleScriptObjC Explored</a>, his book documenting Apple's  AppleScriptObjC (the successor to AppleScript Studio).]]></description>
			<content:encoded><![CDATA[<p><a href="email:sstanley@myriad-com.com.au">Shane Stanley</a> has just released version 2 of <a href="http://www.macosxautomation.com/applescript/apps/">AppleScriptObjC Explored</a>, his book documenting Apple&#8217;s  AppleScriptObjC (the successor to AppleScript Studio).</p>

<p>Shane&#8217;s book has become the most comprehensive documentation for AppleScriptObjC available.  If you are attempting to use AppleScriptObjC to put a User Interface around your AppleScript code, this is a resource you must look into.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.latenightsw.com/?feed=rss2&#038;p=440</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NSBrowser, NSTreeController, bindings, and displaying images</title>
		<link>http://blog.latenightsw.com/?p=413</link>
		<comments>http://blog.latenightsw.com/?p=413#comments</comments>
		<pubDate>Wed, 05 Jan 2011 21:23:05 +0000</pubDate>
		<dc:creator>Mark Alldritt</dc:creator>
				<category><![CDATA[Cocoa]]></category>

		<guid isPermaLink="false">http://blog.latenightsw.com/?p=413</guid>
		<description><![CDATA[After much searching in Google, I found that there was no obvious solution to displaying images along with text in an NSBrowser when you are using NSTreeController and bindings to populate the browser.  Here's how you solve this problem.]]></description>
			<content:encoded><![CDATA[<p>After much searching in Google, I found that there was no obvious solution to displaying images along with text in an NSBrowser when you are using NSTreeController and bindings to populate the browser.</p>

<p>Part of the problem is that you cannot easily use an NSBrowser delegate if you are also using bindings and an NSTreeController to drive the browser (at least on Mac OS X 10.6).  For instance, you are prevented from using the <code>-[NSBrowser browser:willDisplayCell:atRow:row column:column]</code> delegate method to customize the cell presentation as you might do in an NSTableView or NSOutlineView.</p>

<p>I worked around this problem using a custome cell approach.  When you bind the Browser&#8217;s Content Values binding to the NSTreeController, NSTreeController calls the browser cell&#8217;s setObjectValue: method.  If you subclass NSBrowserCell and override setObjectValue:, you can assign the cell&#8217;s text and image.  Here&#8217;s my NSBrowserCell subclass:</p>

<pre><code>@interface MyBrowserCell : NSBrowserCell { }

- (void) setObjectValue:(id) value;

@end

@implementation MyBrowserCell

- (void) setObjectValue:(id) value {
    if ([value isKindOfClass:[NSDictionary class]]) {
        [self setStringValue:[value valueForKey:@"name"]];
        [self setImage:[value valueForKey:@"image"]];
    }
    else
        [super setObjectValue:value];
}

@end
</code></pre>

<p>Next, you need to configure the NSBrowser to use this cell.  The simplest way to accomplish this is with NSBrowser&#8217;s setCellClass: method:</p>

<pre><code>[browserView setCellClass:[MyBrowserCell class]];
</code></pre>

<p>Finally, you need to make your bindings model return a value that&#8217;s appropriate for MyBrowserCell.  Here&#8217;s my nodel&#8217;s value getter method which is bound to the NSBrowser Content Values binding:</p>

<pre><code>- (id) browserValue {
    return [NSDictionary dictionaryWithObjectsAndKeys:
                            [self browserName], @"name",
                            [self browserImage], @"image",
                            nil];
}
</code></pre>

<p>Note that you&#8217;ll need to make sure that will/didChangeValueForKey messages are sent for browserValue when browserName or browserImage change.</p>

<p>Here&#8217;s the result in my application:</p>

<p><img src="http://blog.latenightsw.com/wp-content/uploads/2011/01/NSBrowserExample.png" alt="SD5 Object Chooser Panel" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.latenightsw.com/?feed=rss2&#038;p=413</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.412 seconds -->
<!-- Cached page served by WP-Cache -->

