<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Crazy Or Genius?: Tag ruby</title>
    <link>http://www.crazyorgenius.com/articles/tag/ruby?tag=ruby</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>When You Are Right 90% Of The Time, Why Quible Over The Remaining 3%?</description>
    <item>
      <title>FreeBSD, Ruby And The Case Of The Failing Gems</title>
      <description>&lt;p&gt;The server I happen to host some of my stuff (ie. this site) happens to be running FreeBSD. In most cases, this doesn&amp;#8217;t cause any problems. However, in the case of installing certain ruby gems, I would get an error when compiling native extensions. In particular, with the fastthread gem (I was trying to upgrade Mongrel), I received the output:&lt;/p&gt;


&lt;code&gt;
make install
/usr/bin/install -c -o root -g wheel -m 0755 fastthread.so /home/ssmith/gems/gems/fastthread-0.6.4.1/lib
install: /home/ssmith/gems/gems/fastthread-0.6.4.1/lib/fastthread.so: chown/chgrp: Operation not permitted
&lt;/code&gt;

	&lt;p&gt;I received a similar error a while back when trying to install mongrel, and at the time I had asked one of the friendly admins to just install it as root. However, I like installing my gems locally, so they are easy to update, and this was preventing that. Additionally, I wasn&amp;#8217;t experiencing this on another machine running Debian, so what was going on?&lt;/p&gt;


	&lt;p&gt;Some investigation showed that on Debian, install wasn&amp;#8217;t being told to change the owner and group, while for some reason it was on the FreeBSD machine. So where was this being set?&lt;/p&gt;


	&lt;p&gt;Turns out that rbconfig.rb, a part of the actual Ruby distribution, was the culprit. A collection of configuration variables for Ruby, it had the following line:&lt;/p&gt;


&lt;code&gt;
  CONFIG["INSTALL"] = '/usr/bin/install -c -o root -g wheel'
&lt;/code&gt;

	&lt;p&gt;while on Debian we only had:&lt;/p&gt;


&lt;code&gt;
  CONFIG["INSTALL"] = '/usr/bin/install -c'
&lt;/code&gt;

	&lt;p&gt;Apparently, the FreeBSD Ruby port sets things a little bit differently, which causes pain for local installation of gems. I&amp;#8217;ve currently had the problem fixed by having that line set to the same values as Debian. However, as that file is automatically generated each time Ruby is updated, hopefully the root issue will be fixed in the next version for FreeBSD.&lt;/p&gt;</description>
      <pubDate>Tue, 06 Mar 2007 14:34:00 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:84cfefe0-ff27-431f-9799-a1fbbf72ac93</guid>
      <author>Sean</author>
      <link>http://www.crazyorgenius.com/articles/2007/03/06/freebsd-ruby-and-the-case-of-the-failing-gems</link>
      <category>Programming</category>
      <category>ruby</category>
      <category>gems</category>
      <category>freebsd</category>
      <trackback:ping>http://www.crazyorgenius.com/articles/trackback/805</trackback:ping>
    </item>
    <item>
      <title>TigerEvents 0.7.1 - It's About Time</title>
      <description>&lt;p&gt;So&amp;#8230;.. I have actually had a release version of Tigerevents for a long time now. 0.7.0 is actually powering my.dsu.ca now, but was never officially released. As I added several features since then, &lt;a href="http://www.crazyorgenius.com/articles/2006/10/01/microformats-microformats-microformats"&gt;as mentioned a while ago&lt;/a&gt;, I decided to just increment the release number, and push it out there.&lt;/p&gt;


	&lt;p&gt;This decision was prompted by an organization other than the &lt;span class="caps"&gt;DSU&lt;/span&gt; contacting me, saying they wanted to use it, and if I could just add this one little feature enhancement&amp;#8230;...&lt;/p&gt;


	&lt;p&gt;Needless to say, the idea of other people using this pleases me, and hopefully in the near future I can point out to other in production instances.&lt;/p&gt;


	&lt;p&gt;The code, as always, is available at the &lt;a href="http://sourceforge.net/projects/tigerevents"&gt;Sourceforge&lt;/a&gt;, and &lt;a href="http://rubyforge.net/projects/tigerevents"&gt;Rubyforge&lt;/a&gt; locations for download.&lt;/p&gt;</description>
      <pubDate>Thu, 25 Jan 2007 02:35:00 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:bbc9e7ed-82a5-4105-871a-6c17935bca16</guid>
      <author>Sean</author>
      <link>http://www.crazyorgenius.com/articles/2007/01/25/tigerevents-0-7-1-its-about-time</link>
      <category>Projects</category>
      <category>tigerevents</category>
      <category>rails</category>
      <category>ruby</category>
      <trackback:ping>http://www.crazyorgenius.com/articles/trackback/801</trackback:ping>
    </item>
    <item>
      <title>Finally Giving In</title>
      <description>&lt;p&gt;Over the last few years I have been asked to present something at various local conferences (mostly just &lt;span class="caps"&gt;CEOS&lt;/span&gt;). This has always ended up with me saying, &amp;#8220;sorry, I don&amp;#8217;t have the time&amp;#8221;. Recently, I have come to the realization that I am likely going to always be &amp;#8220;busy&amp;#8221; with various other things. So I made a decision.&lt;/p&gt;


	&lt;p&gt;More recently, I have been asked to give a talk at &lt;a href="http://deveast.com/"&gt;DevEast&lt;/a&gt;. Rather than my traditional &amp;#8220;sorry I don&amp;#8217;t have time&amp;#8221;, I decided to give in and accept. I am now going to be giving a talk about Ruby on Rails that will encompass a lot of the basics, as well as sharing some of my own experiences with it over the last year.&lt;/p&gt;


	&lt;p&gt;Win, lose, or draw, at least in a few days I will be able to say I&amp;#8217;ve tried.&lt;/p&gt;</description>
      <pubDate>Sun, 19 Nov 2006 18:03:00 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:1b675567-ca6e-4668-a50b-ef4760e8ab60</guid>
      <author>Sean</author>
      <link>http://www.crazyorgenius.com/articles/2006/11/19/finally-giving-in</link>
      <category>Life</category>
      <category>Geek</category>
      <category>ruby</category>
      <category>rails</category>
      <category>presentation</category>
      <trackback:ping>http://www.crazyorgenius.com/articles/trackback/209</trackback:ping>
    </item>
    <item>
      <title>Behaviour Driven Development And rSpec</title>
      <description>&lt;p&gt;Last week, &lt;a href="http://www.daveastels.com"&gt;Dave Astels&lt;/a&gt; came into Halifax and gave a talk on Behaviour Driven Development (BDD) and rSpec (a &lt;span class="caps"&gt;BDD&lt;/span&gt; framework for Ruby). I thought it was quite the interesting talk, and that a lot of things seemed to make sense.&lt;/p&gt;


	&lt;p&gt;I took some rough notes, and thought I would write a bit about what I managed to take away from the talk.&lt;/p&gt;&lt;p&gt;The premise behind &lt;span class="caps"&gt;BDD&lt;/span&gt; (as I understand it) is that many users are only getting part way up the Test Driven Development ladder and then getting stuck and not being able to leverage the full set of tools and techniques they have at their disposal. Some of this has to do with terminology (ala the &lt;a href="http://en.wikipedia.org/wiki/Sapir-Whorf_and_programming_languages"&gt;Sapir-Whorf hypothesis&lt;/a&gt;) and not being able to grasp the concepts as they are presented. For example, &lt;span class="caps"&gt;TDD&lt;/span&gt; has unit tests, but what exactly is a unit? What exactly are tests supposed to test?&lt;/p&gt;


	&lt;p&gt;&lt;span class="caps"&gt;TDD&lt;/span&gt; emphasizes checking state at various points in execution. &lt;span class="caps"&gt;BDD&lt;/span&gt;, as the name would imply, defines tests in terms of behaviour.&lt;/p&gt;


	&lt;p&gt;The part of the talk that I enjoyed most was the fact that &lt;span class="caps"&gt;BDD&lt;/span&gt; focuses on human readability. So instead of something like:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;def test_truth
  assert_kind_of Group,  @group
end&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;you get:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;specify &amp;quot;is really a group&amp;quot; do
  @group.should_be_an_instance_of Group
end&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Note: the above examples are identical in functionality (in fact, Dave pointed out that they made a point to provide all the same functionality as the Ruby &lt;span class="caps"&gt;TDD&lt;/span&gt; framework, so people that preferred &lt;span class="caps"&gt;BDD&lt;/span&gt; would have a clear migration path) but differ in how they are presented.&lt;/p&gt;


	&lt;p&gt;If you are interested in a more in depth description, you can check out an &lt;a href="http://"&gt;earlier version of the talk on Google Video&lt;/a&gt; 
video.google.com/videoplay?docid=8135690990081075324 or check out &lt;a href="http://www.daveastels.com"&gt;Dave&amp;#8217;s site&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 24 Oct 2006 03:52:00 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:fa0fa111-af10-481b-be48-d1306c83fc79</guid>
      <author>Sean</author>
      <link>http://www.crazyorgenius.com/articles/2006/10/24/behaviour-driven-development-and-rspec</link>
      <category>Ideas</category>
      <category>rSpec</category>
      <category>BDD</category>
      <category>ruby</category>
      <trackback:ping>http://www.crazyorgenius.com/articles/trackback/205</trackback:ping>
    </item>
    <item>
      <title>Sneaking Ruby Into The System</title>
      <description>&lt;p&gt;Many of you may know of my love for the Ruby language. Used for most of my own projects and quick scripts, but have never been able to use it in any of my paid work. Until now.&lt;/p&gt;


	&lt;p&gt;It started a few weeks ago with a script I wanted to write. As I am the &amp;#8216;translator guy&amp;#8217; at work, from time to time I need to convert the &lt;span class="caps"&gt;XML&lt;/span&gt; files that store the English text to something that a non-technical translator can easily read (I thought the &lt;span class="caps"&gt;XML&lt;/span&gt; was readable, but apparently I need to hand over Excel spreadsheets). As Ruby has nice &lt;span class="caps"&gt;XML&lt;/span&gt; library included, I just quickly whipped something up, and away I went. Never intending this to be anything more than a tool for myself and knowing my boss wouldn&amp;#8217;t care as long as it got done without me having to spend a few hours, it seemed like the thing to do at the time.&lt;/p&gt;


	&lt;p&gt;Fast forward another two weeks. I overheard a few of my coworkers talking about how they can&amp;#8217;t manipulate &lt;span class="caps"&gt;XML&lt;/span&gt; files in &lt;a href="http://www.autoitscript.com/autoit3/"&gt;Auto-it&lt;/a&gt;, which they were using to cover some deficiencies in another build tool we were using called FinalBuilder. They started talking about either writing their own &lt;span class="caps"&gt;XML&lt;/span&gt; parser, or using yet another tool/language to do what they wanted.&lt;/p&gt;&lt;p&gt;A few of my coworks obviously didn&amp;#8217;t like either idea. I mean, sure it was &lt;strong&gt;a solution&lt;/strong&gt;, but it wasn&amp;#8217;t an &lt;strong&gt;ideal&lt;/strong&gt; solution. None of us liked the thought of debugging build/test/release scripts cobbled together from 3 different programs/languages. Some of us thought that if we were going to take the time to do something like write our own &lt;span class="caps"&gt;XML&lt;/span&gt; parser, we might as well spend the time to do something even smarter, like rewrite all our scripts in a single language. This would have several advantages, including things being uniform (1 language vs 3 helps there) and making it easy to track changes in svn (FinalBuilder has binary files, which caused problems when multiple people made enhancements).&lt;/p&gt;


	&lt;p&gt;So a number of suggestions were made, including batch files (ugh) and php. I obviously suggested Ruby, pointing out its portability (as opposed to Windows only solutions), readability, and the existence of desired functionality (eg. &lt;span class="caps"&gt;XML&lt;/span&gt; Parsing). The individual who was going to write the scripts had never used Ruby before, and so wanted to know more before making a decision.  Coincidentally, I had a copy of Enterprise Integration With Ruby sitting on my desk,and was able to toss it over so he could take a look at the syntax (bonus points for its section on &lt;span class="caps"&gt;XML&lt;/span&gt; parsing). I also pointed out the &lt;a href="www.ruby-doc.org"&gt;ruby-doc&lt;/a&gt; site and pointed out &lt;a href="http://docs.rubyrake.org/"&gt;rake&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;Now, we have all of our build scripts written in rake format, and I reworked my translation scripts slightly to be rake tasks as well. At the moment we are working out some kinks in another series of scripts a coworker has written for creating packages for our clients, and we won&amp;#8217;t have to waste time making small tweaks to packages manually.&lt;/p&gt;</description>
      <pubDate>Tue, 05 Sep 2006 15:47:00 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:e2a9a533-2857-4d7e-a341-8a8b056ac26a</guid>
      <author>Sean</author>
      <link>http://www.crazyorgenius.com/articles/2006/09/05/sneaking-ruby-into-the-system</link>
      <category>Programming</category>
      <category>ruby</category>
      <category>rake</category>
      <trackback:ping>http://www.crazyorgenius.com/articles/trackback/176</trackback:ping>
    </item>
    <item>
      <title>Railsday 2006</title>
      <description>&lt;p&gt;So yesterday was &lt;a href="http://www.railsday2006.com"&gt;RailsDay2006&lt;/a&gt;.  The objective: Write an entire web app of your choosing (with some restrictions) in a span of 24 hours.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://nobits.org"&gt;Oliver&lt;/a&gt; and I decided to participate together. I came up with a bunch of ideas, but we ended up doing something Oliver had in mind. The goal: a deli.cio.us clone that we called Tasti.er. We wanted a simple interface, where everything happens on one screen. We put it together in under 18 hours (with the final commit happening just as the competition closed).&lt;/p&gt;


	&lt;p&gt;Check out our &lt;a href="http://spectate.railsday2006.com/changesets/teams/152/"&gt;performance log&lt;/a&gt; or &lt;a href="http://nobits.org/articles/2006/06/18/rails-day-2006-awesomeness/"&gt;Oliver&amp;#8217;s RailsDay Post&lt;/a&gt;.&lt;/p&gt;</description>
      <pubDate>Fri, 16 Jun 2006 15:43:00 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:7b72a7dc-1e44-45c9-a469-69ff361da7de</guid>
      <author>Sean</author>
      <link>http://www.crazyorgenius.com/articles/2006/06/16/railsday-2006</link>
      <category>Programming</category>
      <category>ruby</category>
      <category>railsday</category>
      <trackback:ping>http://www.crazyorgenius.com/articles/trackback/174</trackback:ping>
    </item>
    <item>
      <title>Writing Database Code In Rails: Migrations and Neutrility</title>
      <description>&lt;p&gt;As I &lt;a href="http://torch.cs.dal.ca/~ssmith/?p=40"&gt;recently said&lt;/a&gt;, I switched TigerEvents over from using a MySQL input file to migrations. There were many decisions behind this choice.&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;I wanted the code to be database neutral. Using migrations would allow me to automatically support MySQL, PostgreSQL, and SQLite by making changes to one file instead of 3.&lt;/li&gt;
		&lt;li&gt;I know that the database for TigerEvents is going to change at some point in the near future. Rather than write multiple upgrade scripts manually, I could just use the built in migration functions to do it better.&lt;/li&gt;
		&lt;li&gt;If for some reason I make a mistake and problems occur on the production site, it is easier to roll back to a previous version using migrations than dump the database, roll back the code, reload the database, etc. (Note, we still make sure to back up the database, cause not doing that is just tempting fate)&lt;/li&gt;
		&lt;li&gt;Migrations will, in theory, make development easier. Someone made a change to the schema? Just run &lt;em&gt;&lt;strong&gt;rake migrate&lt;/strong&gt;&lt;/em&gt;, and your database is automatically updated. I think this is easier than reinitializing a database and then loading it with data repeatedly (though the second part of this can be handled with Fixtures).&lt;/li&gt;
	&lt;/ul&gt;&lt;p&gt;While an &lt;a href="http://glu.ttono.us/articles/2005/10/27/the-joy-of-migrations"&gt;awesome introduction&lt;/a&gt; to getting started with Migrations has already been written, I feel that the &amp;#8216;database neutral&amp;#8217; stuff is missing. Using my own experience, several items must be taken into account, mostly due to MySQL usage and certain programming that were being used.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Already Existant Database&lt;/strong&gt;&lt;/p&gt;


	&lt;p&gt;So we already had a database. A somewhat large database with a number of tables. I didn&amp;#8217;t want to spend a lot of time manually creating the migration code from scratch. Was there a quicker way? You betcha. There was a rake task called db_schema_dump which will dump all the table data from your database to a file called schema.rb. So, once we do that, all we have to do is copy this information to the self.up section of a migration and we are done, right? Unfortunatly, it is &lt;strong&gt;&lt;span class="caps"&gt;NOT&lt;/span&gt;&lt;/strong&gt; that easy. The problem is (in my case) that MySQL data types do not necessarily behave the same. Mostly, this deals with constraints, but also has to do with the boolean data type itself.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Constraints&lt;/strong&gt;&lt;/p&gt;


In MySQL, you can do int(8). In rails, this would be translated into something like &lt;code&gt;:integer, :limit =&amp;gt; 8&lt;/code&gt;. However, PostgreSQL only has smallint, integer, and bigint, not constraint values. Therefore, the previous rails code returns an error, as PostgreSQL chokes on the &lt;span class="caps"&gt;SQL&lt;/span&gt; command that rails sends it. Therefore, while it is true that you don&amp;#8217;t need to know specific &lt;span class="caps"&gt;SQL&lt;/span&gt; syntax, you DO need to know what kind of data you can feed various databases. For TigerEvents, I just generalized items and made the following changes:
&lt;code&gt;:integer, :limit =&amp;gt; 8&lt;/code&gt; became &lt;code&gt;:integer&lt;/code&gt;
&lt;code&gt;:integer, :limit =&amp;gt; 1&lt;/code&gt; which translated to tinyint(1) in MySQL became &lt;code&gt;:boolean&lt;/code&gt;
&lt;code&gt;:timestamp&lt;/code&gt; became &lt;code&gt;:datetime&lt;/code&gt; (which gave me extra functionality). Now, I by no means know if these are the optimal solutions, but they did work.

	&lt;p&gt;&lt;strong&gt;Boolean Data&lt;/strong&gt;&lt;/p&gt;


We have a few boolean flags in our database. However, MySQL does not have a boolean data type. Instead, tinyint(1) is generally used. Well, generally that is ok, as ActiveRecord will automatically use tinyint(1) when connecting to MySQL and boolean when connecting to PostgreSQL and SQLite. However, since we started out with MySQL, there were numerous statements such as 
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;@newgroups = Group.find(:all, :conditions =&amp;gt; [&amp;quot;approved = 0&amp;quot;])&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
where 0 is supposed to indicate false. However, since this does not translate to false with PostgreSQL and SQLite, we have a problem. Solution: use placeholders. You are acually allowed to do this:
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;@newgroups = Group.find(:all, :conditions =&amp;gt; [&amp;quot;approved = ?&amp;quot;, false])&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
ActiveRecord takes the value and automatically translates the value into the proper data type, depending on the database type.

	&lt;p&gt;So once again, while you don&amp;#8217;t need to know specific &lt;span class="caps"&gt;SQL&lt;/span&gt; query usage, it is important to keep data types general, and passed values abstracted if you want to create database code which is database neutral (at least for MySQL, PostgreSQL, and SQLite).&lt;/p&gt;</description>
      <pubDate>Wed, 23 Nov 2005 18:12:00 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:f22c340f171ad04deddfaaba1bccc54c</guid>
      <author>Sean</author>
      <link>http://www.crazyorgenius.com/articles/2005/11/23/writing-database-code-in-rails-migrations-and-neutrility</link>
      <category>Programming</category>
      <category>ruby</category>
      <category>rails</category>
      <category>migrations</category>
      <trackback:ping>http://www.crazyorgenius.com/articles/trackback/41</trackback:ping>
    </item>
    <item>
      <title>TigerEvents Breaks 50! (Downloads That Is)</title>
      <description>&lt;p&gt;One month after the first official release of TigerEvents and we have achieved the following:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;31 downloads on Sourceforge&lt;/li&gt;
		&lt;li&gt; 20 downloads on RubyForge&lt;/li&gt;
		&lt;li&gt;17 downloads directly from &lt;a href="http://www.tigeronrails.com"&gt;TigerOnRails&lt;/a&gt;&lt;/li&gt;&lt;/li&gt;
		&lt;li&gt;Currently Ranked 3,682/105,551 projects on Sourceforge (Top 5%!)&lt;/li&gt;
		&lt;li&gt;Currently Ranked 83/999 Projects on RubyForge (Top 10%!)&lt;/li&gt;
		&lt;li&gt;One individual (from the Netherlands) actually testing out trunk and submitting tickets&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Wow, this totally, totally exceeds expectations.&lt;/p&gt;</description>
      <pubDate>Tue, 08 Nov 2005 01:27:00 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:c2da83df858b2db13081b8e2a13de007</guid>
      <author>Sean</author>
      <link>http://www.crazyorgenius.com/articles/2005/11/08/tigerevents-breaks-50-downloads-that-is</link>
      <category>Projects</category>
      <category>ruby</category>
      <category>rails</category>
      <category>tigerevents</category>
      <trackback:ping>http://www.crazyorgenius.com/articles/trackback/42</trackback:ping>
    </item>
    <item>
      <title>World Usability Day!</title>
      <description>&lt;p&gt;Today is &lt;a href="http://www.worldusabilityday.org/"&gt;World Usability Day&lt;/a&gt;. A day to work towards better user experiences in products and experiences. I also decided to use this day as a deadline for the  next release of &lt;a href="http://sourceforge.net/projects/tigerevents/"&gt;TigerEvents&lt;/a&gt;, one of the software packages I work on. 39 closed issues later&amp;#8230;............... a brand new release. All that remains is to migrate my.dsu.ca to a new server, upgrade to the new version, and then all users can revel in&amp;#8230;..... well&amp;#8230;.... errr&amp;#8230;....... actually, I must admit there isn&amp;#8217;t anything major in a regular user&amp;#8217;s perspective.&lt;/p&gt;


	&lt;p&gt;Removing that pesky sidebar proved troublesome (due to Javascripting and &lt;span class="caps"&gt;CSS&lt;/span&gt; issues), and is unfortunatly pushed back (I&amp;#8217;m working on it!). You will see that events actually have their formatting preserved, so no more giant block paragraph that is a pain in the ass to read. There are also some more subtle rearrangements and additions to some options, which I think will make posting events easier for people. Admins get a little more, mostly avoiding huge lists of groups and users when trying to navigate (pagination helper is your friend).&lt;/p&gt;


	&lt;p&gt;And the backend stuff is where most of the changes occured. I personally refactored the code so that the authentication stuff is easier to drop into other code (important since we want to use it in multiple projects. Additionally, I refactored the code to make the entire system database neutral, and to have as much as possible done through ruby. This includes important things such as setup and schema migration. This was the longest and largest changeset I have done in a while, and I am glad it is over. Of course, I need to pass this on to several budding developers so they don&amp;#8217;t make the same mistakes, so&amp;#8230;....... check back at some point in the future.&lt;/p&gt;


	&lt;p&gt;What however, is the future of this project? The individuals working on it (and by that I mean myself and &lt;a href="http://racon.net"&gt;Oliver&lt;/a&gt;) have decided we want to refocus on putting the &amp;#8216;my&amp;#8217; into the &amp;#8216;my.dsu&amp;#8217;. Upcoming, expect to see new skins, a better actual interface devoid of those confusing multiple columns, and other things that will help the &lt;span class="caps"&gt;USER&lt;/span&gt; kick ass. So think of this World Usability Day not as a day for which we bring out a ton of usability fixes, but a day where we begin to devote more attention to where it is needed.&lt;/p&gt;


	&lt;p&gt;You know, after we take a much needed break.&lt;/p&gt;</description>
      <pubDate>Thu, 03 Nov 2005 19:44:00 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:7a03c0ef0eec803030598be96ae642fc</guid>
      <author>Sean</author>
      <link>http://www.crazyorgenius.com/articles/2005/11/03/world-usability-day</link>
      <category>Programming</category>
      <category>Projects</category>
      <category>ruby</category>
      <category>rails</category>
      <category>usability</category>
      <category>refactoring</category>
      <trackback:ping>http://www.crazyorgenius.com/articles/trackback/40</trackback:ping>
    </item>
    <item>
      <title>Woo! TigerEvents 0.5.0 Public Release</title>
      <description>&lt;p&gt;Finally, after long hours, little sleep, and lots of work, the 0.5.0 release of TigerEvents, code named &amp;#8220;It&amp;#8217;s Finally Our So I Can Take A Break&amp;#8221; was released the other day on both &lt;a href="http://sourceforge.net/projects/tigerevents"&gt;Sourceforge&lt;/a&gt; and &lt;a href="http://rubyforge.org/projects/tigerevents/"&gt;Rubyforge&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;The focus of this release was getting all the proper administration interface stuff working properly (sorry front end only users) and trying to document it enough so a person can take the code, set it up, and run it on another machine.&lt;/p&gt;


	&lt;p&gt;Now that the initial file release is out, all I have to do is upgrade my.dsu.ca (merging is going to be a pain in the ass), work on 0.6.0 (which involves merging my development branch back into the trunk, ugh), and redo that ugly, ugly interface.&lt;/p&gt;


	&lt;p&gt;Regarding the interface, I plan to do something even more minimalistic than some people&amp;#8217;s ideas (the one&amp;#8217;s I am getting are awesome though, don&amp;#8217;t stop). It will, at the very least, grant more open space, as opposed to cramming everything important into a small area. A primary advantage of starting out small is that it will be simple (except for all the XMLHTTPRequest stuff I need to do), and if people want more, I just add more, instead of scalling back and forth.&lt;/p&gt;


	&lt;p&gt;Oh, and I will do my best to get rid of that blinking text box.&lt;/p&gt;</description>
      <pubDate>Fri, 07 Oct 2005 12:42:00 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:200181e6942ded74440f083716e434d1</guid>
      <author>Sean</author>
      <link>http://www.crazyorgenius.com/articles/2005/10/07/woo-tigerevents-0-5-0-public-release</link>
      <category>Programming</category>
      <category>Projects</category>
      <category>ruby</category>
      <category>rails</category>
      <category>tigerevents</category>
      <trackback:ping>http://www.crazyorgenius.com/articles/trackback/36</trackback:ping>
    </item>
  </channel>
</rss>
