<?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>[self setNeedsDisplay: YES]; &#187; Development</title>
	<atom:link href="http://www.tumultco.com/blog/category/development/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tumultco.com/blog</link>
	<description>Jonathan Deutsch's Weblog</description>
	<lastBuildDate>Sun, 11 Jul 2010 07:03:54 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Two Weeks</title>
		<link>http://www.tumultco.com/blog/two-weeks/</link>
		<comments>http://www.tumultco.com/blog/two-weeks/#comments</comments>
		<pubDate>Sun, 18 Oct 2009 08:58:11 +0000</pubDate>
		<dc:creator>tumultco</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.tumultco.com/blog/?p=91</guid>
		<description><![CDATA[Programming is not mindlessly implementing specs nor is it determining the best big-O algorithm for a mathematical problem.  Programming is art; turning raw code into an implementation of your ideas.  Programming is what you do.  
Software Engineering is what your company does.  Software Engineering figures out the most efficient and profitable [...]]]></description>
			<content:encoded><![CDATA[<p>Programming is not mindlessly implementing specs nor is it determining the best big-O algorithm for a mathematical problem.  Programming is art; turning raw code into an implementation of your ideas.  Programming is what you do.  </p>
<p>Software Engineering is what your company does.  Software Engineering figures out the most efficient and profitable way to develop a product.  Software engineering is as much about people, process, and schedules as it is about data structures and protocols.</p>
<p>Here&#8217;s the scene: you&#8217;ve just gotten a great idea on some new feature, and you&#8217;re discussing it with your <em>[software engineering]</em> manager.  He&#8217;s<sup>1</sup> enthusiastic, and then, like clockwork, the question comes:</p>
<p>&#8220;So, how long will it take to implement?&#8221;</p>
<p>The answer is <strong>two weeks</strong>.</p>
<p>From his perspective, three weeks will mean it is a large task with many variables, likely to take four.  Telling him four weeks will make him question whether the project is worthwhile as there are other tasks you are needed to do.  Five weeks will signal that you are incompetent.  Bringing up the M-word (that&#8217;s &#8220;months&#8221;) will be a sure-fire way to lose his support.</p>
<p>If the feature is doable with one week&#8217;s hard work, you should still say two weeks.  One week will set you up for coming in late &#8212; there may just be those variables you didn&#8217;t anticipate, or there could be another issue that comes up and sidetracks you.  The extra padding can also give you time to refine your design as it develops and make a better demo.  If you are able to finish in less than two weeks, you&#8217;ll look that much better.</p>
<p>Don&#8217;t worry, two weeks will work.  Programming is art, and you&#8217;ve already got the picture in your head.  A tight schedule will force you to improve your engineering by making the necessary tradeoffs without falling into a perfectionist trap.  If you work really hard and stop checking facebook, you can work 12 hours a day for the next 14 days.  This will give you 168 hours or the equivalent of a little more than 4 real weeks; plenty of time.  Remember, you don&#8217;t need to deliver 100% of the feature in this period of time, only the easiest 80%.  If the feature turns out great, you&#8217;ll have time to later refine.</p>
<p>Two weeks is also the average period between meeting times, so it is unlikely you&#8217;ll need to give an impromptu and risky demo.  At this next meeting, you can impress your manager with the end result; it always looks good to show something.  If the feature gets nixed, you will not feel that you have wasted a significant chunk of your life.</p>
<p>If other tasks on your plate will prevent you from immediately starting on your feature, you should not add this into the time estimate as the mentioned negatives will apply. Instead, split it up: &#8220;I can get started in two weeks, and it will take another two weeks after that.&#8221;</p>
<p>There are two main scenarios where you do not want to commit to two weeks:<br />
1. A small project which should be measured in hours.<br />
2. A large project which should use two weeks as milestone markers.</p>
<p>To wrap up, please observe this discussion between an engineer and his manager:</p>
<blockquote><p>Kirk: Scotty How long will it take you to have everything automated?<br />
Scotty: Oh, six weeks Captain, but yah don&#8217;t have six weeks so I&#8217;ll do it in two.<br />
Kirk: Mr. Scott have you always multiplied your repair estimates by a factor of three?<br />
Scott: Of Course Captain, how else would I keep my reputation as a Miracle Worker?
</p></blockquote>
<p> <img src='http://www.tumultco.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><small>[1] Replace he/his with she/her if your manager is a woman.</small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tumultco.com/blog/two-weeks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Live Editing WordPress Themes with HyperEdit</title>
		<link>http://www.tumultco.com/blog/live-editing-of-wordpress-themes-with-hyperedit/</link>
		<comments>http://www.tumultco.com/blog/live-editing-of-wordpress-themes-with-hyperedit/#comments</comments>
		<pubDate>Sun, 04 May 2008 04:43:55 +0000</pubDate>
		<dc:creator>tumultco</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.tumultco.com/blog/?p=72</guid>
		<description><![CDATA[A question I&#8217;ve been asked (and often wondered myself) is how to use HyperEdit to effectively develop a WordPress theme and get live previews.  I decided to finally figure this out, and while the solution isn&#8217;t as elegant as I would like, the results work pretty well.  These instructions are somewhat verbose, but [...]]]></description>
			<content:encoded><![CDATA[<p>A question I&#8217;ve been asked (and often wondered myself) is how to use <a href = "http://www.tumultco.com/HyperEdit/">HyperEdit</a> to effectively develop a <a href="http://wwww.wordpress.org">WordPress</a> theme and get live previews.  I decided to finally figure this out, and while the solution isn&#8217;t as elegant as I would like, the results work pretty well.  These instructions are somewhat verbose, but it really should only take about 5 minutes to setup.</p>
<h4>Step 1: Installing MAMP</h4>
<p>MAMP (Mac, Apache, MySQL, and PHP) is a self-contained installation of all the software necessary to run a WordPress blog.  Since it requires practically no configuration and is easy to dispose of when done, we&#8217;ll use this.</p>
<p>Get MAMP at: <a href="http://www.mamp.info/en/download.html">http://www.mamp.info/en/download.html</a></p>
<p>After downloading and mounting the MAMP 1.7.1 dmg, drag the MAMP folder to <b>/Applications/</b> (it must be located here).</p>
<h4>Step 2: Getting WordPress</h4>
<p>Download WordPress at: <a href="http://wordpress.org/download/">http://wordpress.org/download/</a>.  After decompressing, drag the worpdress folder to <b>/Applications/MAMP/htdocs/</b>.</p>
<p>At this point you&#8217;ll want to make a copy theme to edit (or bring over an existing one). To do this, go to the <b>/Applications/MAMP/htdocs/wordpress/wp-content/themes/</b> folder and duplicate default, naming it something like &#8220;MyTheme.&#8221;  You&#8217;ll want to go into that folder, open up style.css, and change the comment at the top from &#8220;Theme Name: WordPress Default&#8221; to something like &#8220;Theme Name: My Great Theme&#8221; so you will notice it in WordPress later.</p>
<h4>Step 3: Launching MAMP and Setting Up a MySQL Database</h4>
</p>
<p>MAMP installed a handy application at <b>/Applications/MAMP/MAMP.app</b> which will start apache and a MySQL server.  Go ahead and open that up.  It will also point your web browser to <a href="http://localhost:8888/MAMP/">http://localhost:8888/MAMP/</a>, which we will now use to setup a MySQL database that wordpress can use:</p>
<ol>
<li>Click on the <a href = "http://localhost:8888/MAMP/frame.php?src=%2FphpMyAdmin%2F%3Flang%3Den-iso-8859-1&#038;language=English">phpMyAdmin</a> link at the top.<br />
<img src = "http://www.tumultco.com/blog/images/phpMyAdmin.png" /></li>
<li>Find the Create new database field, and set the name of the database to &#8220;wordress&#8221; and then click create<br />
<img src = "http://www.tumultco.com/blog/images/createDatabase.png" /></li>
</ol>
<h4>Step 4: Configuring WordPress</h4>
<p>Now you&#8217;ll need to actually get WordPress up and running under MAMP.</p>
<ol>
<li>Start by pointing your browser to: <a href="http://localhost:8888/wordpress/">http://localhost:8888/wordpress/</a></li>
<li>Click the &#8220;Create a Configuration File&#8221; button</li>
<li>Click the &#8220;Let&#8217;s go!&#8221; button</li>
<li>You&#8217;ll be asked to enter database connection details.  It should look like this:<br />
<img src = "http://www.tumultco.com/blog/images/WordPressConfiguration.png" /><br />
Press Submit.</li>
<li>Click the &#8220;Run the install&#8221; button</li>
<li>Set a blog title, enter your email address, and then uncheck &#8220;Allow my blog to appear in search engines like Google and Technorati.&#8221;  Click the &#8220;Install WordPress&#8221; button.</li>
<li>You will be given a username of admin and a very random password.  Copy that password, and then click &#8220;Log In.&#8221;</li>
<li>You&#8217;ll be at the wp-login page, enter in admin as the username, and paste in the password, then log in.</li>
<li>Click on the design tab, and choose the theme you would like to edit (likely &#8220;My Great Theme&#8221; if you followed step 2)</li>
<li>At the top, click the view site button, and you should be able to see the default Hello world! entry.</li>
</ol>
<h4>Step 5: Using HyperEdit</h4>
<p>Make sure you&#8217;ve got the latest version, <a href = "http://www.tumultco.com/HyperEdit/HyperEdit.dmg">HyperEdit 1.6</a>.</p>
<p>Before you begin editing your page, you will need to configure HyperEdit to use the MAMP version of PHP instead of Mac OS X&#8217;s default installation.  To do this, launch HyperEdit, go to the Preferences, click the advanced tab, and then change the Path to PHP binary field to <b>/Applications/MAMP/bin/php5/bin/php</b>  You&#8217;ll want to change this back to <b>/usr/bin/php</b> when you are done using MAMP.</p>
<p>Here&#8217;s where the fun begins! Open up <b>/Applications/MAMP/htdocs/wordpress/index.php</b> in HyperEdit. You should be able to see your blog!  Now what you&#8217;ll need to do is add linked files to the index.php document, so whenever you edit a resource, HyperEdit will automatically update the page.  To do this, click the &#8220;Linked Files&#8221; toobar item, and then drag into it any resources you plan to edit from <b>/Applications/MAMP/htdocs/wordpress/wp-content/themes/MyTheme/</b>:</p>
<p align ="center"><img src = "http://www.tumultco.com/blog/images/WordPressLinkedFiles.png" /></p>
<p>If you&#8217;ve added style.css, double-click on that, and make a change such as setting the body background-color to just &#8220;#000;&#8221;  Hit command-S to save the document, and you should see the background color on your blog page turn black!  If you&#8217;d like to update the blog automatically when editing the CSS, choose the &#8220;Linked File (css/js)&#8221; editing mode option in the options palette for the style.css document.</p>
<p align ="center"><img src = "http://www.tumultco.com/HyperEdit/Help/images/linkedFileOption.jpg" /></p>
<p>Be aware though, this will save your document whenever you make any changes!</p>
<p>Presently, you are editing the main page, but if you would like to preview the comments page, simply set your index.php page to be this:</p>
<pre>
&lt;?php
/* Short and sweet */
<b>$_GET["p"]="1";</b>
define('WP_USE_THEMES', true);
require('./wp-blog-header.php');
?&gt;</pre>
<p>And that&#8217;s about all there is to it; happy coding! (and now maybe I&#8217;ll finally update my own theme)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tumultco.com/blog/live-editing-of-wordpress-themes-with-hyperedit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HyperEdit 1.6 Released!</title>
		<link>http://www.tumultco.com/blog/hyperedit-16-released/</link>
		<comments>http://www.tumultco.com/blog/hyperedit-16-released/#comments</comments>
		<pubDate>Wed, 30 Apr 2008 15:36:35 +0000</pubDate>
		<dc:creator>tumultco</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.tumultco.com/blog/?p=71</guid>
		<description><![CDATA[
Today I released HyperEdit 1.6!  HyperEdit is my live HTML and PHP editor with W3C validation.  This version has several stability fixes, support for Safari 3.1&#8217;s Web Inspector, the ability to display invisible characters, new toolbar icons, auto-updates, and better support for Mac OS X 10.5.  Registration and product activation issues that [...]]]></description>
			<content:encoded><![CDATA[<p align = "center"><img src = "http://www.tumultco.com/blog/images/HyperEditIcon.jpg"/></p>
<p>Today I released <a href = "http://www.tumultco.com/HyperEdit/">HyperEdit</a> 1.6!  HyperEdit is my live HTML and PHP editor with W3C validation.  This version has several stability fixes, support for Safari 3.1&#8217;s Web Inspector, the ability to display invisible characters, new toolbar icons, auto-updates, and better support for Mac OS X 10.5.  Registration and product activation issues that occured with Leopard have now been resolved.</p>
<p align = "center"><a href = "http://www.tumultco.com/HyperEdit/HyperEdit.dmg">Download HyperEdit 1.6</a> (4.1 MB)</p>
<p>Please <a href = "mailto:jonathan@tumultco.com">contact me</a> if you run into any problems with the new version.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tumultco.com/blog/hyperedit-16-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What is a computer?</title>
		<link>http://www.tumultco.com/blog/what-is-a-computer/</link>
		<comments>http://www.tumultco.com/blog/what-is-a-computer/#comments</comments>
		<pubDate>Sat, 06 Oct 2007 22:20:16 +0000</pubDate>
		<dc:creator>tumultco</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.tumultco.com/blog/?p=66</guid>
		<description><![CDATA[There has been a lot of back and forth about Apple&#8217;s iPhone 1.1.1 update lately.  One side argues that the iPhone is a computer, thus should allow third party apps and non-destructive upgrades.  The other side rebukes by stating it is a device, and no other devices allow third party apps or make [...]]]></description>
			<content:encoded><![CDATA[<p>There has been a lot of <a href = "http://leoville.com/blog/2007/09/29/1037/">back</a> and <a href = "http://daringfireball.net/2007/10/cancel_computer">forth</a> about Apple&#8217;s iPhone 1.1.1 update lately.  One side argues that the iPhone is a computer, thus should allow third party apps and non-destructive upgrades.  The other side rebukes by stating it is a device, and no other devices allow third party apps or make the manufacturer worry about preserving hacks.  The heart of the matter that seems to escape most pundits is this question: what is the difference between a computer and a consumer electronics device?</p>
<p>Most believe that it has to do with the type of processor or processing power.  Using those metrics is invalid; so many devices we call consumer electronics (or even other things like cars!) have processors with capable instruction sets and more power than the &#8220;computers&#8221; of 5 years ago.</p>
<p>I think the appropriate definition for today&#8217;s world should be based around the input device; the difference between a computer and a consumer electronics device is determined by the user&#8217;s ability to express themselves.  The keyboard is the ultimate device for expression; it lets people communicate their ideas fully and quickly.  There are other interesting input devices such as tablets, mics with speech recognition, etc., though none have been able to replace the venerable keyboard in effectiveness.</p>
<p>A Tivo runs linux and has a hard drive. Some users hack it in an unsupported fashion. Its input device is the remote control that lets a user do things like play, pause, and change channels.  Not very expressive, and therefore it is a consumer electronics device.</p>
<p>My old RAZR had a keypad that was souped-up to let me type letters in as frustrating a manner as possible.  It can run some Java applications, but what is the point?  It is just a device.</p>
<p>My iPhone has a full/dynamic keyboard and a multi-touch interface.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tumultco.com/blog/what-is-a-computer/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WWDC 2006 Wrap-up</title>
		<link>http://www.tumultco.com/blog/wwdc-2006-wrap-up/</link>
		<comments>http://www.tumultco.com/blog/wwdc-2006-wrap-up/#comments</comments>
		<pubDate>Mon, 14 Aug 2006 04:45:13 +0000</pubDate>
		<dc:creator>tumultco</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.tumultco.com/blog/?p=56</guid>
		<description><![CDATA[WWDC 2006 was amazing.  The Leopard developer preview got out the door.  The Mac OS X State of the Union, of which I played a role, went flawlessly.  My friends gave great sessions throughout the conference.  I danced.
WWDC is spring break for engineers &#8212; the parties were awesome (Engineers Gone Wild?), [...]]]></description>
			<content:encoded><![CDATA[<p>WWDC 2006 was amazing.  The Leopard developer preview got out the door.  The Mac OS X State of the Union, of which I played a role, went flawlessly.  My friends gave great sessions throughout the conference.  I danced.</p>
<p>WWDC is spring break for engineers &#8212; the parties were awesome (Engineers Gone Wild?), and I&#8217;m still recovering from it all.</p>
<p>This year was more fun than any of the three other WWDC&#8217;s I&#8217;ve attended.   I knew a lot more people than in previous years, got to know some people better, and met some new faces who learned what the &#8220;M&#8221; for my middle name stands for.  Staying at a hotel near Moscone worked out great as well.</p>
<p>Now that it is over, I plan on doing all those things I didn&#8217;t get a chance to do because I was so busy.  Here&#8217;s my (pretty standard) list:</p>
<ul>
<li />Answer emails!
<li />UB version of HyperEdit
<li />Work on some other programming projects
<li />Get my elbow fixed and start practicing Kendo again
<li />Draw more frequently
<li />Update this blog on a regular basis
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.tumultco.com/blog/wwdc-2006-wrap-up/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dumbing down smart cut/copy/paste</title>
		<link>http://www.tumultco.com/blog/dumbing-down-smart-cutcopypaste/</link>
		<comments>http://www.tumultco.com/blog/dumbing-down-smart-cutcopypaste/#comments</comments>
		<pubDate>Thu, 27 Apr 2006 06:44:00 +0000</pubDate>
		<dc:creator>tumultco</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://www.tumultco.com/blog/?p=53</guid>
		<description><![CDATA[Daring Fireball:
A few weeks ago I noticed that most NSTextView-based apps now use a rather annoying “smart” C/C/P implementation.3 NSTextView is the standard built-in text-editing control in Cocoa, so this applies to most — but not all — Cocoa applications that allow you to edit text. The app I noticed it in is MarsEdit, but [...]]]></description>
			<content:encoded><![CDATA[<p><a href = "http://daringfireball.net/2006/04/smart_cut_copy_paste">Daring Fireball</a>:</p>
<blockquote><p>A few weeks ago I noticed that most NSTextView-based apps now use a rather annoying “smart” C/C/P implementation.3 NSTextView is the standard built-in text-editing control in Cocoa, so this applies to most — but not all — Cocoa applications that allow you to edit text. The app I noticed it in is MarsEdit, but it’s also present in TextEdit, so feel free to use TextEdit if you want to play along at home.</p></blockquote>
<p>I didn&#8217;t notice this feature until an annoyed HyperEdit user wrote to me about it.  Luckily, as a cocoa developer the workaround is simple:</p>
<p>
<pre style = "padding-left:1em;">-[NSTextView setSmartInsertDeleteEnabled: <font color="#760F50">NO</font>]</pre></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tumultco.com/blog/dumbing-down-smart-cutcopypaste/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>HyperEdit &amp; PHP 5</title>
		<link>http://www.tumultco.com/blog/hyperedit-php-5/</link>
		<comments>http://www.tumultco.com/blog/hyperedit-php-5/#comments</comments>
		<pubDate>Wed, 26 Apr 2006 06:08:01 +0000</pubDate>
		<dc:creator>tumultco</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://www.tumultco.com/blog/?p=52</guid>
		<description><![CDATA[LunaStoria.org has a mini-review of HyperEdit that includes some nice instructions on getting it working with PHP 5.
]]></description>
			<content:encoded><![CDATA[<p><a href = "http://www.lunastoria.org/hyperedit">LunaStoria.org</a> has a mini-review of HyperEdit that includes some nice instructions on getting it working with PHP 5.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tumultco.com/blog/hyperedit-php-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HyperEdit 1.5.1 Released!</title>
		<link>http://www.tumultco.com/blog/hyperedit-151-released/</link>
		<comments>http://www.tumultco.com/blog/hyperedit-151-released/#comments</comments>
		<pubDate>Mon, 06 Mar 2006 10:36:43 +0000</pubDate>
		<dc:creator>tumultco</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.tumultco.com/blog/?p=49</guid>
		<description><![CDATA[
Today I released HyperEdit 1.5.1!  HyperEdit is my live HTML and PHP editor with W3C validation.  This version is primarily a bug-fix release, and the upgrade is recommended for everyone.  Here&#8217;s what&#8217;s new:

 Fixed several encoding issues
 HTML entity coloring
 Files in the linked-file drawer can be opened by double-clicking on them
 [...]]]></description>
			<content:encoded><![CDATA[<p align = "center"><img src = "http://www.tumultco.com/blog/images/HyperEditIcon.jpg"/></p>
<p>Today I released <a href = "http://www.tumultco.com/HyperEdit/">HyperEdit</a> 1.5.1!  HyperEdit is my live HTML and PHP editor with W3C validation.  This version is primarily a bug-fix release, and the upgrade is recommended for everyone.  Here&#8217;s what&#8217;s new:</p>
<ul type = "square"><small></p>
<li> Fixed several encoding issues</li>
<li> HTML entity coloring</li>
<li> Files in the linked-file drawer can be opened by double-clicking on them</li>
<li> HyperEdit does a better job of cleaning up temporary files</li>
<li> Restored Mac OS X 10.2.8 support</li>
<li> Color palette remembers its state</li>
<li> Revert sheet is now properly dismissed</li>
<li> Fixed a bug in properly loading files with a &#8220;.htm&#8221; extensions</li>
<li> Various other bug fixes</li>
<p></small></ul>
<p>This will be the last version to support Mac OS X 10.2.  The next update will be Universal so it runs native on Intel Macs.</p>
<p align = "center"><a href = "http://www.tumultco.com/HyperEdit/HyperEdit.dmg">Download HyperEdit 1.5.1</a> (3.3 MB)</p>
<p>Please <a href = "mailto:jonathan@tumultco.com">contact me</a> if you run into any problems with the new version.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tumultco.com/blog/hyperedit-151-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>157 NetNewsWire Browser Tabs!</title>
		<link>http://www.tumultco.com/blog/157-netnewswire-browser-tabs/</link>
		<comments>http://www.tumultco.com/blog/157-netnewswire-browser-tabs/#comments</comments>
		<pubDate>Tue, 24 Jan 2006 06:50:20 +0000</pubDate>
		<dc:creator>tumultco</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://www.tumultco.com/blog/?p=45</guid>
		<description><![CDATA[
I have made a small update to TabMark per Charles Arthur&#8217;s request: an &#8220;Open in browser&#8221; button which will open the selected links in your default browser.  I also added a save item in the File menu, so that if you choose to remove some from the list the new set can be saved [...]]]></description>
			<content:encoded><![CDATA[<p align = "center"><img src = "images/TabMark1.1.jpg"/></p>
<p>I have made a small update to <a href = "http://www.tumultco.com/blog/?p=37">TabMark</a> per <a href = "http://www.charlesarthur.com/blog/">Charles Arthur&#8217;s</a> request: an &#8220;Open in browser&#8221; button which will open the selected links in your default browser.  I also added a save item in the File menu, so that if you choose to remove some from the list the new set can be saved back!</p>
<p align = "center"><big><a href = "http://www.tumultco.com/blog/files/TabMark.zip">Download TabMark 1.1</a></big><big></big></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tumultco.com/blog/157-netnewswire-browser-tabs/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Experimental Cocoalicious Tag Browser</title>
		<link>http://www.tumultco.com/blog/experimental-cocoalicious-tag-browser/</link>
		<comments>http://www.tumultco.com/blog/experimental-cocoalicious-tag-browser/#comments</comments>
		<pubDate>Wed, 18 Jan 2006 09:52:10 +0000</pubDate>
		<dc:creator>tumultco</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.tumultco.com/blog/?p=43</guid>
		<description><![CDATA[This has been mentioned before and presented at TagCamp, but I thought I&#8217;d finally make an actual post about it.
A while ago, I was using Buzz&#8217;s Cocoalicious, and realized that as my list of tags grew, the tag browser became less useful; the alphabetically sorted list didn&#8217;t scale.
the original Cocoalicious tag browser
The problem is there [...]]]></description>
			<content:encoded><![CDATA[<p><i><small></small><small>This has been <a href = "http://www.flickr.com/photos/ldandersen/72156418/">mentioned before</a> and presented at TagCamp, but I thought I&#8217;d finally make an actual post about it.</small></i></p>
<p>A while ago, I was using Buzz&#8217;s <a href = "http://www.scifihifi.com/cocoalicious">Cocoalicious</a>, and realized that as my list of tags grew, the tag browser became less useful; the alphabetically sorted list didn&#8217;t scale.</p>
<p align = "center"><img src = "http://www.tumultco.com/blog/images/OldTagBrowser.jpg" /><br /><small>the original Cocoalicious tag browser</small></p>
<p>The problem is there are too many tags in the list and most tags have only one post associated with them (the long tail), making it difficult to find a tag which will result in a useful set of posts. Additionally, making a multiple selection to find intersections usually resulted in empty sets, since I didn&#8217;t have a good sense of which intersections would work. Since Cocoalicious is <a href = "http://sourceforge.net/projects/cocoalicious">open source</a>, I decided I&#8217;d try to make a better tag browsing interface.
</p>
<p>The main goal was scalability, but it took several iterations (and In-N-Out burgers with Buzz) before that was fully realized.  Here&#8217;s what the final version looks like:</p>
<p align = "center"><a href = "http://www.tumultco.com/blog/images/Cocoalicious.jpg"><img src = "http://www.tumultco.com/blog/images/tCocoalicious.jpg" border="0" /></a><br /><small><a href = "http://www.tumultco.com/blog/images/Cocoalicious.jpg">click for a larger view</a></small></p>
<p>The new tag browser uses a button grid, similar to GarageBand&#8217;s <a href = "http://images.apple.com/ilife/garageband/features/images/loops20060110.jpg">loop interface</a>.  Tags are sorted by their post count, thus more relevant tags are always found at the top, keeping scrolling to a minimum.  When a button is highlighted, all related posts are displayed in the table below, and at the same time tags in the tag browser which do not intersect the selection fade away while related tags bubble up to the top.  Beyond being a slick effect, the animation gives a nice visual cue as to where the next location of the buttons are and helps identify relationships between tags.</p>
<p>This interface scales quite nicely; each click cuts down the tag list significantly, and the bubbled-up tags are physically close and always related, so searching and scrolling is rarely required.  It also works well for exploring the &#8220;long tail,&#8221; since the previously insignificant tags eventually come to the top.  Dare I say, using it is a lot of fun!  Here&#8217;s a video of it in action:</p>
<p align = "center"><a href = "http://www.tumultco.com/blog/files/CocoaliciousTagBrowser.mov"><img src = "http://www.tumultco.com/blog/images/tCocoaliciousTagBrowserMovie.jpg" /></a><br /><small><a href = "http://www.tumultco.com/blog/files/CocoaliciousTagBrowser.mov">click to download the 3.7 MB quicktime video</a></small></p>
<p>A few less noticed features are that tag browser has full keyboard navigation and type-ahead, and the button grid can be sorted alphabetically.  The animation effect itself is fast and can run well even on my 800 Mhz iBook.</p>
<p>Overall, I&#8217;d say my new tag browser is a vast improvement, and should make it into a Cocoalicious build in the near future.</p>
<p><b>UPDATE:</b> <a href = "http://weblog.scifihifi.com/2006/01/18/jonathans-tag-browser/">Buzz talks</a> more about some of the design issues.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tumultco.com/blog/experimental-cocoalicious-tag-browser/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
<enclosure url="http://www.tumultco.com/blog/files/CocoaliciousTagBrowser.mov" length="3910464" type="video/quicktime" />
		</item>
	</channel>
</rss>
