<?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>gnuu.org &#187; software</title>
	<atom:link href="http://gnuu.org/tag/software/feed/" rel="self" type="application/rss+xml" />
	<link>http://gnuu.org</link>
	<description>my word against yours, fight.</description>
	<lastBuildDate>Fri, 16 Jul 2010 22:12:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Preview of YARD 0.6 Features</title>
		<link>http://gnuu.org/2010/06/16/preview-of-yard-0-6-features/</link>
		<comments>http://gnuu.org/2010/06/16/preview-of-yard-0-6-features/#comments</comments>
		<pubDate>Wed, 16 Jun 2010 19:37:44 +0000</pubDate>
		<dc:creator>Loren Segal</dc:creator>
				<category><![CDATA[post]]></category>
		<category><![CDATA[0.6]]></category>
		<category><![CDATA[documentation]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[yard]]></category>

		<guid isPermaLink="false">http://gnuu.org/2010/06/16/preview-of-yard-0-6-features/</guid>
		<description><![CDATA[YARD 0.5.7 is currently in the works and is possibly a week or so from release. After that version is put out there (pending no serious issues), all &#34;yardwork&#34; will be exclusively dedicated to the 0.6 release. There are some really cool and exciting new features in 0.6, so I felt like blogging about them. [...]]]></description>
			<content:encoded><![CDATA[<p>YARD 0.5.7 is currently in the works and is possibly a week or so from release. After that version is put out there (pending no serious issues), all &quot;yardwork&quot; will be exclusively dedicated to the 0.6 release. There are some really cool and exciting new features in 0.6, so I felt like blogging about them. Let&#8217;s go:</p>
<h2>1. A Local Documentation Server</h2>
<p> <img title="yardoc.org/docs screenshot" alt="yardoc.org/docs screenshot" align="right" src="http://yardoc.org/images/yardocorg.png" width="332" height="233" />
<p>RubyGems has <tt>gem server</tt> to serve static docs of your gems. The problem here, again, is that to get these static .html files we need to force our users to generate docs when the gem installs, and this is often a painfully slow process (especially with behemoths like Rails). YARD takes a different approach to this, only parsing out the source and saving an intermediate dump file when a gem installs. This is pretty fast (~2 seconds under 1.9 for YARD&#8217;s codebase). Not only can a developer use this data to their heart&#8217;s content, but it allows YARD to generate HTML/PDF/LaTeX on demand, and that&#8217;s exactly what 0.6 is going to do.</p>
<p>The <tt>yard server</tt> command coming in 0.6 will generate HTML documentation for gems on demand from the parsed source (perhaps even parsing on demand). This means your CPU will never be used to generate static files that you never look at. If you only need to access 10% of the documentation of 1% of your gems, YARD will only generate that 0.1%. Big win.</p>
<p>Not to mention you get all the benefits a YARD template provides, including full class hierarchy, less obtrusive layouts, markdown support, and even full method/class name searching with the potential of having full-text searching in the future, since this is all running in a Webrick/Rack adapter.</p>
<p>All of this stuff is currently being ported from the existing <a href="http://yardoc.org/docs">yardoc.org/docs</a> site, so it will basically look like that. The existing code is in the <a href="http://github.com/lsegal/yard/tree/docserver">docserver</a> branch of YARD&#8217;s github and is being tracked as <a href="http://github.com/lsegal/yard/issues/issue/139">gh-139</a>.</p>
<h2>2. Method Listing by Groups</h2>
<p> <img title="Mac OSX documentation for NSString" border="0" alt="Mac OSX documentation for NSString" align="right" src="http://gnuu.org/wp-content/uploads/2010/06/image_thumb.png" width="264" height="183" />
<p>We&#8217;ve seen this in Apple&#8217;s docs, doxygen docs and a few others. The ability to organize methods in a large class by functionality rather than alphabet is often far more helpful to your users. YARD 0.6 will be introducing a <tt>@group</tt> freeform tag to identify methods under a specific organizational header which will be used in the templates. Still working on the exact syntax of this one, trying to make it as easy to use and remove as much duplication as possible. This feature is being tracked as <a href="http://github.com/lsegal/yard/issues/issue/143">gh-143</a>.</p>
<h2>3. Generate Documentation for Single File Scripts</h2>
<p>RDoc has a <tt>--one-file</tt> option that is occasionally used for small Ruby scripts. YARD has always lacked this option. Though it&#8217;s kind of simple to roll your own with templates, 0.6 will have built-in templates for generating a single HTML document. Not really sure what it&#8217;s going to look like just yet, but if you have ideas or want to help out, the feature is being tracked as <a href="http://github.com/lsegal/yard/issues/issue/115">gh-115</a>.</p>
<h2>4. New <tt>yard</tt> CLI executable</h2>
<p>YARD is growing into a tool that does much more than just parse source. This means that having a single executable is not enough, and spreading out the functionality over multiple executables is just messy. YARD currently uses the <tt>yard-graph</tt> tool to generate Graphviz dot files. In YARD 0.6, all of these tools, including the new documentation server, will all be merged into a single executable called <tt>yard</tt> with respective subcommands (doc, graph, server, etc.). The goal here is to open this up for plugins to add commands just like they do in RubyGems without resorting to new executable names. And don&#8217;t worry, the <tt>yardoc</tt> executable will probably stick around for legacy support. This feature is being tracked as <a href="http://github.com/lsegal/yard/issues/issue/140">gh-140</a>.</p>
<h2>5. Improved Template APIs</h2>
<p>If you&#8217;ve ever written or overridden a template in YARD you know that it can be hard to figure out what section to override with the <tt>sections</tt> command. YARD has a <tt>sections.place(:foo).before(:bar)</tt> idiom, but it does not help with subsections. In 0.6, the sections will be redesigned from being Array objects to a more proper tree-like structure in order to handle accessing subsections. Now instead of:</p>
<pre><code>def init
  sections.first.last.place(:foo).before(:bar)
end</code></pre>
<p>You will have the ability to do the following:</p>
<pre><code>def init
  sections.first.subsections.place(:foo).before(:bar)
  # or even:
  sections.place(:foo).before_first(:bar)
end</pre>
<p></code></p>
<p>The last method will look for any "bar" inside sections or subsections within the tree. All in all, this should make it more effective to override a template. This feature is being tracked as <a href="http://github.com/lsegal/yard/issues/issue/58">gh-58</a>.</p>
<h2>6. Documentation for DSL Handlers and Other Use Cases</h2>
<p>YARD packs in a lot of functionality, and many users have complained that they had to dig into source to find out how to do some relatively simple things like writing handlers for DSL syntaxes. Although YARD does have documentation on many things, including writing handlers in general, there are few "use-case specific" documents that describe how to do specific things with YARD. 0.6 will introduce improved documentation for some of these use cases, most importantly extending YARD for custom DSL syntaxes. It's possible this may start as a project in the Github Wiki as a set of how-to guides.</p>
<p>So there they are, the major new features coming to 0.6. Let me know if you have any suggestions about other features. And if you have time to donate to the project that would be great, see the above Github issue links and help out. Money would also be appreciated; I wrote YARD because I want to improve docs in the community, not because I want money, but I need to eat. You can donate below:</p>
<p><a href="http://www.pledgie.com/campaigns/940"><img alt="Click here to lend your support to: yard and make a donation at www.pledgie.com !" src="http://www.pledgie.com/campaigns/940.png?skin_name=chrome" border="0" /></a></p>
<p>The release plan for YARD 0.6 is: "soon". It's hard to say when it will be out, but things are certainly rolling in that direction.</p>]]></content:encoded>
			<wfw:commentRss>http://gnuu.org/2010/06/16/preview-of-yard-0-6-features/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Defining the &#8220;Engine&#8221;</title>
		<link>http://gnuu.org/2010/06/15/defining-the-engine/</link>
		<comments>http://gnuu.org/2010/06/15/defining-the-engine/#comments</comments>
		<pubDate>Wed, 16 Jun 2010 03:01:44 +0000</pubDate>
		<dc:creator>Loren Segal</dc:creator>
				<category><![CDATA[post]]></category>
		<category><![CDATA[engines]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[software engineering]]></category>

		<guid isPermaLink="false">http://gnuu.org/2010/06/15/defining-the-engine/</guid>
		<description><![CDATA[Engines in the automotive industry (and pretty much all other vehicle industries) have a very strict definition. The word is so strictly defined that just about every engine manufacturer will produce a component that performs pretty much the exact same task; most of them even have roughly the same dimensions. They all burn (or otherwise [...]]]></description>
			<content:encoded><![CDATA[<p><img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="Diagram of a car&#39;s engine" border="0" alt="Diagram of a car&#39;s engine" align="right" src="http://gnuu.org/wp-content/uploads/2010/06/engine12.jpg" width="269" height="293" /> Engines in the automotive industry (and pretty much all other vehicle industries) have a very strict definition. The word is so strictly defined that just about every engine manufacturer will produce a component that performs pretty much the exact same task; most of them even have roughly the same dimensions. They all burn (or otherwise consume) fuel to create torque. Basically, they make something turn. Engines don&#8217;t deal with the wheels (the drive belt is a separate part), or how the fuel is passed in; all they do is generate power. We can very specifically identify what an engine is when we look under the hood of a car, and we know exactly where the engine stops and where the other parts begin.</p>
<p>In the software world, &quot;engines&quot; don&#8217;t have nearly as strict a definition. The term comes up a lot, but it is never strictly bound by a specific functionality. In software, we tend to consider an engine as anything that &quot;powers&quot; something else. The problem with that definition is that, in the right context, <em>anything</em> &quot;powers&quot; something else. It might allow for more abstraction (something we developers love), but it also makes an engine no more meaningful more than calling it a &quot;component&quot;, or a &quot;thing&quot;. At some point, it&#8217;s important to set a strict definition of where the responsibilities of one component end and another begin.</p>
<h2>Blogs are Engines(?)</h2>
<p>I often hear WordPress described as a &quot;blogging engine&quot;. In the sense that it powers blogs by allowing people to post bits of text and media, sure. But how do we define the boundaries of WordPress as an engine? WordPress is also a full fledged blogging tool, something the end user touches directly. When we say &quot;WordPress the engine&quot;, do we mean just the bits that handle blog posting, or are we talking about the admin interface too? In my opinion, calling WordPress an engine would be like calling a whole car the &quot;engine&quot; and saying the cupholders are plugins.</p>
<p>So does WordPress just consist of an engine inside of it, or is it all a big engine?</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://gnuu.org/wp-content/uploads/2010/06/image.png" width="620" height="340" /> </p>
<p>&#160;</p>
</p>
<h2>Games are Engines(?)</h2>
<p>3D engines have the same definition problem. Back in the day, Id was the king of licensing 3D &quot;engines&quot;. They were very simplistic, though still quite functional relative to our real world &quot;engine&quot; counterpart. They basically handled the OpenGL abstraction, but handled a bit of game logic too. Nowadays we have engines like the Far Cry engine, which not only do 3D graphics, the entirety of game logic, but they now come with map editors and modelers <em>built in</em>. We&#8217;re hardly talking about an engine anymore, this is practically a full development environment. Where is the line?</p>
<h2></h2>
<h2>The Driver</h2>
<p>We do have examples of words that have very explicit meanings. For instance, when we hear the word &quot;drivers&quot;, we tend to understand that we&#8217;re talking about a kernel extension that interfaces a hardware component. The boundaries of a device driver is usually quite specific, and we know exactly where the component fits into our system. There are others, but we could use more of these guys.</p>
<h2>What&#8217;s an Engine to You?</h2>
<p>I think it&#8217;s interesting how much leeway we give our words (for the most part) in the software industry. We always like to shy away from committing to any assumptions whatsoever. This sounds nice, but perhaps our inability to strictly define component boundaries is why we have so much trouble defining what software is, and perhaps more so, why we have so much trouble managing software projects. It would be extremely helpful to project scope if we could say &quot;I&#8217;m building X which means you will get functionality Y&quot; without having to redefine &quot;Y&quot; each time.</p>]]></content:encoded>
			<wfw:commentRss>http://gnuu.org/2010/06/15/defining-the-engine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>YARD 0.4.0 (The Whole Nine) Released Today</title>
		<link>http://gnuu.org/2009/11/15/yard-0-4-0-the-whole-nine/</link>
		<comments>http://gnuu.org/2009/11/15/yard-0-4-0-the-whole-nine/#comments</comments>
		<pubDate>Sun, 15 Nov 2009 18:04:33 +0000</pubDate>
		<dc:creator>Loren Segal</dc:creator>
				<category><![CDATA[post]]></category>
		<category><![CDATA[developer tools]]></category>
		<category><![CDATA[documentation]]></category>
		<category><![CDATA[release]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby 1.9]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[yard]]></category>

		<guid isPermaLink="false">http://gnuu.org/?p=317</guid>
		<description><![CDATA[YARD 0.4.0 (codenamed The Whole Nine) was just released today. It’s by far the biggest release since I started writing YARD in 2007. For those who don’t know, YARD is a Ruby documentation tool that surpasses the features of RDoc to bring much richer docs and extensibility to documenteurs. There’s plenty of new features to [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://yardoc.org">YARD 0.4.0</a> (codenamed The Whole Nine) was just released today. It’s by far the biggest release since I started writing YARD in 2007. For those who don’t know, YARD is a Ruby documentation tool that surpasses the features of RDoc to bring much richer docs and extensibility to documenteurs. There’s plenty of new features to discuss and plenty of new toys to show off (new templates, live doc server with user comments, new APIs, plugin support), so let’s get started.</p>
<p> </p>]]></content:encoded>
			<wfw:commentRss>http://gnuu.org/2009/11/15/yard-0-4-0-the-whole-nine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Taking your Job Seriously; the Answer to &#8220;Software Engineering&#8221;</title>
		<link>http://gnuu.org/2009/03/24/taking-your-job-seriously/</link>
		<comments>http://gnuu.org/2009/03/24/taking-your-job-seriously/#comments</comments>
		<pubDate>Wed, 25 Mar 2009 04:37:00 +0000</pubDate>
		<dc:creator>Loren Segal</dc:creator>
				<category><![CDATA[post]]></category>
		<category><![CDATA[engineering]]></category>
		<category><![CDATA[ethics]]></category>
		<category><![CDATA[iron ring]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://gnuu.org/2009/03/24/taking-your-job-seriously-the-answer-to-software-engineering/</guid>
		<description><![CDATA[Today was supposedly one of the biggest days of my professional life. I took an oath today. An oath to uphold the professional values of the Engineering industry of Canada. Although the Iron Ring ceremony is mostly symbolic and has no affect on my legal status as a professional Engineer (read: I’m not one), it’s generally seen as an essential part of your career. So you would expect that this would be a time of great celebration, a memorable stepping stone to a bright future. The only problem is, I have no short-term intentions of ever becoming an Engineer.]]></description>
			<content:encoded><![CDATA[<p><img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="My Ring (tm)" border="0" alt="My Ring (tm)" align="right" src="http://gnuu.org/wp-content/uploads/2009/03/photo345.jpg" width="188" height="162" /> Today was supposedly one of the biggest days of my professional life. I took an oath today. An oath to uphold the professional values of the Engineering industry of Canada. Although the <a href="http://en.wikipedia.org/wiki/Iron_Ring">Iron Ring</a> <a href="http://en.wikipedia.org/wiki/The_Ritual_of_the_Calling_of_an_Engineer">ceremony</a> is mostly symbolic and has no affect on my legal status as a professional Engineer (read: I’m not one), it’s generally seen as an essential part of your career. So you would expect that this would be a time of great celebration, a memorable stepping stone to a bright future. The only problem is, <em>I have no short-term intentions of ever becoming an Engineer</em>. </p>]]></content:encoded>
			<wfw:commentRss>http://gnuu.org/2009/03/24/taking-your-job-seriously/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ruby 1.9 Common Problems Pt. 1: Encoding</title>
		<link>http://gnuu.org/2009/02/02/ruby-19-common-problems-pt-1-encoding/</link>
		<comments>http://gnuu.org/2009/02/02/ruby-19-common-problems-pt-1-encoding/#comments</comments>
		<pubDate>Mon, 02 Feb 2009 06:05:41 +0000</pubDate>
		<dc:creator>Loren Segal</dc:creator>
				<category><![CDATA[post]]></category>
		<category><![CDATA[BlueCloth]]></category>
		<category><![CDATA[encoding]]></category>
		<category><![CDATA[problems]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[programming languages]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby 1.9]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[unicode]]></category>

		<guid isPermaLink="false">http://gnuu.org/2009/02/02/ruby-19-common-problems-pt-1-encoding/</guid>
		<description><![CDATA[If you’re migrating from Ruby 1.8.x to 1.9 you probably have run into one of the following error messages: invalid multibyte char (US-ASCII) - OR - CompatibilityError: incompatible encoding regexp match (Windows-31J regexp with UTF-8 string) The errors themselves are relatively self-explanatory. Ruby 1.9 is far more Unicode aware than 1.8, and this error happens [...]]]></description>
			<content:encoded><![CDATA[<p>If you’re migrating from Ruby 1.8.x to 1.9 you probably have run into one of the following error messages:</p>
<p><code class="dark">invalid multibyte char (US-ASCII)</code></p>
<p>- OR -</p>
<p><code class="dark">CompatibilityError: incompatible encoding regexp match (Windows-31J regexp with UTF-8 string)</code></p>
<p>The errors themselves are relatively self-explanatory. Ruby 1.9 is far more Unicode aware than 1.8, and this error happens when have some Unicode (usually UTF-8) in one of your files. What you have to do to fix these, however, is not always as straightforward.</p>
<p>Well, after some time pulling my hair out, I&#8217;ve figure out that the solutions to these issues are actually quite simple. </p>
<h3>Invalid multibyte char (encoding here)</h3>
<p>If you get this issue, add the following to the top of each exploding file (below the <a href="http://en.wikipedia.org/wiki/Shebang_(Unix)">shebang</a> if there is one):</p>
<pre class="dark"># encoding: utf-8</pre>
<p style="border-right: #ccc 1px solid; padding-right: 7px; border-top: #ccc 1px solid; padding-left: 7px; font-size: 0.8em; background: #eee; padding-bottom: 7px; margin: 7px; border-left: #ccc 1px solid; padding-top: 7px; border-bottom: #ccc 1px solid"><strong>Note:</strong> You can also use &quot;coding:&quot; or even the Emacs style <tt>-*- encoding: utf-8 -*-</tt> but I like the simple term, &#8216;encoding&#8217;. Also note that you might need to replace &#8216;utf-8&#8242; wth your specific encoding if it&#8217;s something else.</p>
<p>This should resolve the issue.</p>
<p>Basically, Ruby by default assumes that every file is encoded as US-ASCII, and so when it reads UTF-8 (or any Unicode) it freaks out because it is beyond the 7-bit encoding. You have to tell it that the file is encoded as utf-8 by listing it as we did at the top of the file. Yes, it&#8217;s a little anal, but I&#8217;m sure we&#8217;ll get used to it.</p>
<h3>Incompatible encoding regexp match</h3>
<p>This issue is a little bit hairier. I had this problem with the <a href="http://www.deveiate.org/projects/BlueCloth/">BlueCloth</a> 1.0.0 gem (on line 972 of bluecloth.rb). It turns out that there are a <a href="http://www.zenspider.com/Languages/Ruby/QuickRef.html#11">few switches</a> that turn on specific encodings, and for some reason BlueCloth turns on the <tt>//s</tt> switch which enables the SJIS encoding (maybe <a href="http://daringfireball.net/">John Gruber</a> wanted <tt>//m</tt> for multiline?). Ruby 1.8 didn&#8217;t mind having this on, but 1.9 freaks out. Moral of the story, when you see this error, check your Regexp switches.</p>]]></content:encoded>
			<wfw:commentRss>http://gnuu.org/2009/02/02/ruby-19-common-problems-pt-1-encoding/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Windows 7 QuickLaunch: &quot;The Rumors of My Death&#8230;&quot;</title>
		<link>http://gnuu.org/2009/01/11/windows-7-quicklaunch-the-rumors-of-my-death/</link>
		<comments>http://gnuu.org/2009/01/11/windows-7-quicklaunch-the-rumors-of-my-death/#comments</comments>
		<pubDate>Mon, 12 Jan 2009 04:08:28 +0000</pubDate>
		<dc:creator>Loren Segal</dc:creator>
				<category><![CDATA[post]]></category>
		<category><![CDATA[beta]]></category>
		<category><![CDATA[fixed]]></category>
		<category><![CDATA[os]]></category>
		<category><![CDATA[quicklaunch]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[taskbar]]></category>
		<category><![CDATA[windows7]]></category>

		<guid isPermaLink="false">http://gnuu.org/2009/01/11/windows-7-quicklaunch-the-rumors-of-my-death/</guid>
		<description><![CDATA[Yesterday, whilst frustrated, I incorrectly alluded to the fact that the &#34;pinning&#34; behaviour in the Windows 7 taskbar completely replaces the QuickLaunch bar we&#8217;ve all grown to love. Well, it turns out I was wrong: QuickLaunch lives on! I picked up this nifty little trick on a forum while searching for company in my misery [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://gnuu.org/2009/01/10/windows-7-taskbar-problem/">Yesterday</a>, whilst frustrated, I incorrectly alluded to the fact that the &quot;pinning&quot; behaviour in the Windows 7 taskbar completely replaces the QuickLaunch bar we&#8217;ve all grown to love. Well, it turns out I was wrong: <em>QuickLaunch lives on!</em></p>
<p>I picked up this nifty little trick on a forum while searching for company in my misery over the &quot;Windows 7 QuickLaunch&quot;. Apparently, &quot;Toolbars&quot; still exist in full force under Windows 7, and if you&#8217;ve ever messed with them before, you&#8217;ll know QuickLaunch was always just one of those folders. The simple way to resurrect the QuickLaunch bar is to:</p>
<ol>
<li>Right click on the taskbar and go to Toolbars </li>
<li>Click &quot;New Toolbar&#8230;&quot; </li>
<li>Navigate to <em>&quot;%USERPROFILE%\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch&quot;</em> </li>
<li>Select that directory. </li>
</ol>
<p>You technically don&#8217;t even need to use that specific directory&#8212; any empty directory will do (you can make one in a safe place).</p>
<p>It will show up on the right by default, but you can right click on the taskbar again and unlock the taskbar to move it back to the left. </p>
<p><em>Voila, ze Quick Launch, she lives!</em></p>
<p><a style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" href="http://gnuu.org/wp-content/uploads/2009/01/thank-the-lord.png"><img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="thank-the-lord" src="http://gnuu.org/wp-content/uploads/2009/01/thank-the-lord-thumb.png" width="260" height="68" /></a> </p>
<p>This means I can completely avoid using the horribly unintuitive pinned icon behaviour that is <a href="http://arstechnica.com/news.ars/post/20081030-more-on-the-windows-7-ui-new-taskbar-will-be-mandatory.html">supposedly &quot;superior&quot;</a>. Better yet, by using the old QuickLaunch, I even get back all that <em></em><a href="http://www.istartedsomething.com/20090105/measuring-up-windows-7s-new-super-taskbar/">wasted horizontal space</a> that comes with the pinned icons!</p>]]></content:encoded>
			<wfw:commentRss>http://gnuu.org/2009/01/11/windows-7-quicklaunch-the-rumors-of-my-death/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Making a Basic HTTP Request in Eiffel (and a rant)</title>
		<link>http://gnuu.org/2008/09/19/a-basic-http-req-in-eiffel-and-rant/</link>
		<comments>http://gnuu.org/2008/09/19/a-basic-http-req-in-eiffel-and-rant/#comments</comments>
		<pubDate>Sat, 20 Sep 2008 04:57:34 +0000</pubDate>
		<dc:creator>Loren Segal</dc:creator>
				<category><![CDATA[post]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[design by contract]]></category>
		<category><![CDATA[eiffel]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rant]]></category>
		<category><![CDATA[sockets]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[software engineering]]></category>

		<guid isPermaLink="false">http://gnuu.org/2008/09/19/a-basic-http-req-in-eiffel-and-rant/</guid>
		<description><![CDATA[<p>I originally just wanted to post my findings on implementing an HTTP client to serve as an example to others learning Eiffel, but I realized that the importance of the following example would be lost on many people without a little background on the subject and felt like an explanation in the form of a rant should also be included. Therefore, if you're just looking for the example, scroll down to the later sections and take a look. Otherwise, keep reading.</p> ]]></description>
			<content:encoded><![CDATA[<p>I originally just wanted to post my findings on implementing an HTTP client to serve as an example to others learning Eiffel, but I realized that the importance of the following example would be lost on many people without a little background on the subject and felt like an explanation in the form of a rant should also be included. Therefore, if you&#8217;re just looking for the example, scroll down to the later sections and take a look. Otherwise, keep reading.</p>
<p></p>]]></content:encoded>
			<wfw:commentRss>http://gnuu.org/2008/09/19/a-basic-http-req-in-eiffel-and-rant/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mail.app, Play Nice with IMAP Folders!</title>
		<link>http://gnuu.org/2008/08/23/mailapp-play-nice-with-imap-folders/</link>
		<comments>http://gnuu.org/2008/08/23/mailapp-play-nice-with-imap-folders/#comments</comments>
		<pubDate>Sun, 24 Aug 2008 01:09:01 +0000</pubDate>
		<dc:creator>Loren Segal</dc:creator>
				<category><![CDATA[post]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[imap]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[mail.app]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://gnuu.org/2008/08/23/mailapp-play-nice-with-imap-folders/</guid>
		<description><![CDATA[This is a little journal/tip style entry about how to get Mail.app to use normal IMAP folder names so as to not confuse your other clients on other machines (Thunderbird, etc.). So Mail.app doesn&#8217;t know jack about subscriptions unless you know how to rub it the right way. After recently switching to IMAP I also [...]]]></description>
			<content:encoded><![CDATA[<p><em>This is a little journal/tip style entry about how to get Mail.app to use normal IMAP folder names so as to not confuse your other clients on other machines (Thunderbird, etc.).</em></p>
<p>So Mail.app doesn&#8217;t know jack about subscriptions unless you know how to rub it the right way. After recently switching to IMAP I also discovered that it doesn&#8217;t like to use standardized IMAP folder names. You know, &#8220;Sent&#8221;, &#8220;Trash&#8221;, et al. If you&#8217;ve been annoyed by the inconsistency of having Mail.app trash your mail into directories you&#8217;ll never see again, or not recognize your Sent folder, you should know there&#8217;s a really simple solution.</p>
<h3>Enter Property List Editor</h3>
<p>Close Mail.app before editing the preferences file so it doesn&#8217;t overwrite the settings. You need to restart the app anyway, so shut it down now. I also suggest backing up the file if you&#8217;re not used to editing .plist files</p>
<ol>
<li>Open up <tt>~/Library/Preferences/com.apple.mail.plist</tt> with the Property List Editor</li>
<li>Navigate to the key named <tt>MailAccounts</tt> and open it up</li>
<li>In it are all your accounts indexed as 0, 1, 2, &#8230;</li>
<li>Find your IMAP accounts (check that the key <tt>AccountType</tt> is <tt>IMAPAccount</tt>)</li>
<li>Navigate to the keys <tt>SentMessagesMailboxName</tt> and <tt>TrashMailboxName</tt> and change them to <tt>Sent</tt> and <tt>Trash</tt> respectively</li>
</ol>
<p>Voila, you&#8217;re all set. Save the plist file and start up Mail.app, it should now use the proper special folders (the <em>real</em> Trash folder, etc.) and the IMAP folders should disappear from the sidebar. Now when you delete something, it will actually go to your IMAP trash!</p>]]></content:encoded>
			<wfw:commentRss>http://gnuu.org/2008/08/23/mailapp-play-nice-with-imap-folders/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>IE8 Beta, Ugh.</title>
		<link>http://gnuu.org/2008/03/10/ie8-beta-ugh/</link>
		<comments>http://gnuu.org/2008/03/10/ie8-beta-ugh/#comments</comments>
		<pubDate>Mon, 10 Mar 2008 19:04:48 +0000</pubDate>
		<dc:creator>Loren Segal</dc:creator>
				<category><![CDATA[post]]></category>
		<category><![CDATA[beta]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[ie7]]></category>
		<category><![CDATA[ie8]]></category>
		<category><![CDATA[rant]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[standards]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://gnuu.org/2008/03/10/ie8-beta-ugh/</guid>
		<description><![CDATA[I&#8217;m usually a fan of IE (What, did someone just admit to that??), in fact, my primary browser on my Windows machine is not Firefox, but IE7, which I&#8217;ve used and has perfectly suited my needs since the first beta. Actually, I liked the first beta a lot more than the final release, so when [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m usually a fan of IE <em>(What, did someone just admit to that??),</em> in fact, my primary browser on my Windows machine is <em>not</em> Firefox, but IE7, which I&#8217;ve used and has perfectly suited my needs since the first beta. Actually, I liked the first beta a lot more than the final release, so when I found out that <a title="IE8 beta 1" href="http://www.microsoft.com/windows/products/winfamily/ie/ie8/default.mspx">Microsoft released beta 1 for IE8</a> I immediately went to download it. In retrospect, I should have did a little research first (there&#8217;s actually little information on IE8 right now), maybe I would have found out that:</p>
<ol>
<li><em>IE8 completely overwrites IE7</em> just like IE7 did with IE6. At least this time you can roll back, but you&#8217;d figure by now they&#8217;d have learned the simple software development principle of allowing applications to co-exist on a system. This is especially necessary when developers need to switch back and forth to compare and contrast behaviour. </li>
<li>IE8 replaces the very simple concept described in (1) with an &quot;IE7 emulation&quot; mode. Unfortunately, &quot;IE7 emulation&quot; mode only emulates browser rendering, not the horrible UI issues. In addition to that, switching between IE7 emulation mode requires the browser (<em>and all other windows!</em>) to be completely restarted. Now all developers need to do to see changes in behaviour is:
<ol>
<li>Navigate to their website in IE7 emulation mode </li>
<li>Switch IE7 emulation mode off </li>
<li>Close the browser </li>
<li>Open the browser </li>
<li>Navigate to the website again </li>
<li>Check &amp; attempt to solve differences </li>
<li>Switch IE7 emulation mode back on </li>
<li>Close the browser </li>
<li>Open the browser </li>
<li>Navigate to the website again </li>
<li>Make sure your solution didn&#8217;t break IE7 </li>
</ol>
<p> And don&#8217;t even try to view them side by side&#8211; no, that would be too easy. What a great idea, Microsoft. </li>
<li>IE8 introduces the concept of <a href="http://blog.seattlepi.nwsource.com/microsoft/archives/133518.asp" title="Activities and Slices Info"><em>&quot;Activities&quot;</em> and <em>&quot;Slices&quot;</em></a>. It lets you highlight text and perform a bunch of common tasks like searching (on Live) and mapping (on Live) by right clicking. Now I know this is Microsoft, but where the hell is <em>Google Maps</em>? You know, that better mapping website that pre-dates yours? These features are nice in theory, but everything here is so monopolistically targetted to their services only&#8211; meaning <em>normal people</em> get nothing out of it. Hopefully they add normal sites by the final release. Usually I would wait until the final to whine about third party functionality, but for some reason I don&#8217;t see this ever working with anything I actually use. <em>And no, a <a href="http://ie.microsoft.com/activities/en-en/Default.aspx">Facebook search activity</a> does not count.</em></li>
<li><em>IE8 &quot;standards&quot; completely break even the most basic of pages</em>. I&#8217;m talking oldschool tabular layouts, and the part that broke was the layout. How do you break that stuff? </li>
<li>The horizontal scrollbar bar shows up on almost every single page. How the hell did a dead obvious bug like that get all the way to the beta?</li>
<li>Why do domain names show up in <strong>bold</strong> in the address bar and the rest of the equally important URL is grayed out? Since when is the only important part of a URL the domain name? I&#8217;m not even sure what the UI purpose of that is&#8230;</li>
<li>How do I disable Activities &amp; Slices? I don&#8217;t want to see useless information in my popup menu and an even more useless popup button whenever I highlight text. I&#8217;ll assume it&#8217;s buried somewhere in the options&#8230; I see they&#8217;ve done no work to improve the horrible preferences dialog.</li>
</ol>
<p>I&#8217;m not even going to talk about the standards (besides #4). The web development community has sufficiently hated on IE&#8217;s implementation of standards and there&#8217;s nothing left to say. I don&#8217;t necessarily share those opinions, but I also don&#8217;t care. When a non-developer visits your website they don&#8217;t care that you correctly implemented the CSS2.1 spec or that your XHTML validates and you have a graphic to prove it&#8211; they just want it to look normal. The second normal sites stop looking normal (#4) is when you&#8217;ve messed up and need to fix it.</p>
<p>All in all I&#8217;m pretty disappointed. Remember, I&#8217;m an IE user, and just listen to how pissed I sound. Needless to say I used the benefit of the rollback to IE7. </p>
<p>This beta makes me want to start using Safari or something. Don&#8217;t people make browsers to <em>download and render webpages</em> anymore? I don&#8217;t need <em>Activities</em>, I don&#8217;t need <em>Slices</em>, I don&#8217;t need <em>Download Managers</em> or <em>Favourite Tagging Blogosphere Viewing Youtube Integration</em>. <strong><em>I don&#8217;t even need tabs!</em></strong> Just render my damn HTML.</p>]]></content:encoded>
			<wfw:commentRss>http://gnuu.org/2008/03/10/ie8-beta-ugh/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Practical YARD Examples 0001: Generating class diagrams with YARD &amp; Graphviz</title>
		<link>http://gnuu.org/2008/02/29/generating-class-diagrams-with-yard-and-graphviz/</link>
		<comments>http://gnuu.org/2008/02/29/generating-class-diagrams-with-yard-and-graphviz/#comments</comments>
		<pubDate>Fri, 29 Feb 2008 07:15:49 +0000</pubDate>
		<dc:creator>Loren Segal</dc:creator>
				<category><![CDATA[post]]></category>
		<category><![CDATA[class diagram]]></category>
		<category><![CDATA[graphviz]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[visualization]]></category>
		<category><![CDATA[yard]]></category>

		<guid isPermaLink="false">http://gnuu.org/2008/02/29/generating-class-diagrams-with-yard-and-graphviz/</guid>
		<description><![CDATA[So, recently I was looking at refactoring the current internal structure of YARD to improve the developer API and general stability improvements and I figured I would draw out the class diagram as a first step in figuring out what needed to stay and what needed to go. Problem was, having been away from the [...]]]></description>
			<content:encoded><![CDATA[<p>So, recently I was looking at refactoring the current internal structure of YARD to improve the developer API and general stability improvements and I figured I would draw out the class diagram as a first step in figuring out what needed to stay and what needed to go. Problem was, having been away from the project for so long, I completely forgot what YARD looked like on the inside. I did not want to dig through the source; I wanted to see the project from afar to keep my design from being influenced by the current layout (in terms of implementation details). I really needed to visualize the project from a high level. </p>
<p>Using the raw data file that <tt>yardoc</tt> generates when it is run, I mocked up a quick tool called <tt>yard-graph</tt> which allowed me to visualize my project using <a title="Open source graphing tool" href="http://www.graphviz.org/">Graphviz</a>. <em>Note that this is the same functionality that I described any developer could take advantage of in <a title="YARD Alpha Release 0.1a" href="http://yard.soen.ca/yard-release-0-1a">YARD&#8217;s very first release</a></em>. Doing things like this <strong>is what YARD is all about</strong>. The results aren&#8217;t quite perfect due to both the incompleteness of the graph tool and the limitations of <em>Graphviz</em>, like how hierarchical mode is extremely strict about hierarchy and likes to make <em>extremely wide graphs</em>, but they&#8217;re highly suitable for my needs; actually, I would call them quite excellent for my needs. <em>Take a look!</em></p>
<p><a href="http://yard.soen.ca/docs/yard-0.2.1/yard-simple.pdf"><img height="255" alt="Click for the full diagram" src="http://www.gnuu.org/wp-content/uploads/2008/02/PracticalYARDExamples_171D/yardsimplecrop.png" width="350" /></a> </p>
<p>As an excercise, I also implemented the ability to show module dependencies (via <tt>include</tt>) and the public class API. This is what that looks like:</p>
<p><a href="http://yard.soen.ca/docs/yard-0.2.1/yard.pdf"><img height="178" alt="Click for the full class diagram. This one's a doozy." src="http://www.gnuu.org/wp-content/uploads/2008/02/PracticalYARDExamples_171D/yardcrop.png" width="350" /></a> </p>
<p>For those interested, this code lives in the <a title="YARD on Github: diagram banch" href="http://github.com/lsegal/yard/tree/diagram">diagram branch</a> in Github (yea, I got a free invite and decided to try it out; I forgot / have no idea who invited me&#8211; please email me so I can thank you, by the way). After a <tt>rake install</tt> of the gem, you can run (in your root project directory, or maybe <tt>lib/</tt> to ignore tests):</p>
<pre class="dark">yard-graph --dependencies --empty-mixins --full | dot -T pdf -o diagram.pdf</pre>
<p>This requires <tt>dot</tt> (part of <em>Graphviz</em>) and generates the diagrams with all the above options, module dependencies (<tt>&#45;-dependencies</tt>) and <tt>&#45;-full</tt> for the class/instance methods, constants and attributes info. The <tt>&#45;-empty-mixins</tt> flag shows empty modules as nodes instead of subgraphs (the delimiting boxes), since by default <em>Graphviz</em> ignores empty subgraphs. If you use modules as mixins and not just a way to namespace classes, you&#8217;ll want this on or you won&#8217;t see your modules.</p>
<p>I also highly suggest using a vector format for output like pdf as in the above example. Bitmap files can get <em>really big</em>. If you want proof, check out <a title="It&#39;s so BIG it doesn't even load with Adobe's PDF viewer!" href="http://yard.soen.ca/docs/actionpack-2.0.2/rails.pdf">the full class diagram of the rails source</a> I generated and imagine that as a bitmap.</p>
<p>Hopefully I can get some more practical uses of YARD up in the next coming weeks for people to see how awesome it is!</p>]]></content:encoded>
			<wfw:commentRss>http://gnuu.org/2008/02/29/generating-class-diagrams-with-yard-and-graphviz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
