<?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>8th Light Blog: Category Fun</title>
    <link>http://blog.8thlight.com/articles/category/fun</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>In the minds of the craftsmen...</description>
    <item>
      <title>No Tag Backs</title>
      <description>&lt;p&gt;Well Micah tagged me, and if I look at these XML request/responses for another hour without a break I&amp;#8217;m going to pass out into my keyboard.  Here goes.&lt;/p&gt;

&lt;h3&gt;How old were you when you started programming.&lt;/h3&gt;

&lt;p&gt;I had a Texas Instruments computer thingy that I got for my 6th or 7th birthday, somewhere in there.  It played these educational games, but I noticed one day that if I didn&amp;#8217;t put a cartridge in it a blue screen came up with a cursor.  It had an instruction book and I would basically type in the programs verbatim, then do little things with it like change a color or a line.  Later I had an Atari XE and it did the same thing, so I made the same little guessing game in it just like the one I made on the TI.  Realistically I didn&amp;#8217;t write anything of use until high school though.&lt;/p&gt;

&lt;p&gt;Interestingly, perhaps only to me, my version of Hello World for the iPhone SDK was a guessing game.&lt;/p&gt;

&lt;h3&gt; How did you get started programming. &lt;/h3&gt;

&lt;p&gt;I guess that was the real answer.  I played with my dad&amp;#8217;s computers all the time but didn&amp;#8217;t consider it as a career until I was about 16 or 17, when I realized I could probably get paid for it.  Up until then I wanted to be a sports journalist.  So I went to school so I could found my own game company.&lt;/p&gt;

&lt;h3&gt;What was the first real program you wrote?&lt;/h3&gt;

&lt;p&gt;What counts as &amp;#8220;real&amp;#8221;?  The guessing game?  Making horizontal lines appear on the screen?  I wrote a bunch in Basic and Pascal for homework assignments, and like Micah had one of those TI calculators.  The first specific one I can recall was a text-based adventure game I made for a homework assignment my freshman year.  It was based on the Haymarket Bombing &lt;/p&gt;

&lt;h3&gt;What languages have you used since you started programming?&lt;/h3&gt;

&lt;p&gt;Pascal, C, C++, C#, COBOL, Assembly, Perl (but I won&amp;#8217;t admit it), Java, Objective-C, Ruby, Javascript, Lisp, VB, Erlang, and I just wrote Hello World in Smalltalk (Squeak).&lt;/p&gt;

&lt;p&gt;I too doubt I could write Hello World in most of those languages, and wouldn&amp;#8217;t put them all on my resume.  It&amp;#8217;s funny because I probably would have when I came out of school, since I didn&amp;#8217;t know the difference between &amp;#8220;familiar with&amp;#8221; and &amp;#8220;able to write some code with&amp;#8221;.&lt;/p&gt;

&lt;h3&gt;What was your first professional programming gig?&lt;/h3&gt;

&lt;p&gt;I started a web design company in college, which employed me and myself.  I had two clients, one of whom paid me in Kung Fu lessons.&lt;/p&gt;

&lt;h3&gt;If there is one thing you learned along the way that you would tell new developers, what would it be?&lt;/h3&gt;

&lt;p&gt;Find great people to work with.  If you&amp;#8217;re the smartest person in the room, you need a new room, because if you&amp;#8217;re not growing you&amp;#8217;re dying.  This is tricky when you&amp;#8217;re new, since you don&amp;#8217;t know a great developer from a tree stump, but take a look at Micah&amp;#8217;s tag list.  It looks like the list of authors in my library.&lt;/p&gt;

&lt;p&gt;I would also tell them they should come to work for me as my apprentice, unless they weren&amp;#8217;t any good.  Then they can work for Jim.&lt;/p&gt;

&lt;h3&gt;What&#8217;s the most fun you&#8217;ve ever had programming?&lt;/h3&gt;

&lt;p&gt;Working with the team I work with now is fantastic.  I also had a great time working Agile 2007 as part of RailsFest, and I&amp;#8217;m looking forward to doing the same thing on the Live Aid stage this year.&lt;/p&gt;

&lt;h3&gt;Up Next&lt;/h3&gt;

&lt;p&gt;Sadly I don&amp;#8217;t know many developer&amp;#8217;s who keep blogs, so I&amp;#8217;ll just echo Micah&amp;#8217;s list and tell Paul, Jim, Doug and Matt they&amp;#8217;re next.&lt;/p&gt;</description>
      <pubDate>Thu, 03 Jul 2008 21:17:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:ef64d0a1-1a95-41fd-8d66-b9601cdf3ba0</guid>
      <author>Eric</author>
      <link>http://blog.8thlight.com/articles/2008/07/03/no-tag-backs</link>
      <category>Craftsmanship</category>
      <category>Fun</category>
      <category>Eric</category>
    </item>
    <item>
      <title>Tag!  I'm it!</title>
      <description>&lt;p&gt;&lt;a href="http://blog.davidchelimsky.net/articles/2008/07/01/how-i-got-started-programming"&gt;David Chelimsky&lt;/a&gt; tagged me with this &amp;#8220;chain-blog&amp;#8221;. I&amp;#8217;ve enjoyed reading other peoples&amp;#8217; stories.  Here&amp;#8217;s mine.&lt;/p&gt;

&lt;h3&gt;How old were you when you started programming.&lt;/h3&gt;

&lt;p&gt;Hard to say.  I suppose I was legitimately writing code at 9 years old&lt;/p&gt;

&lt;h3&gt;How did you get started programming.&lt;/h3&gt;

&lt;p&gt;You might say I was born into programming.  At a very young age, maybe 4 years old, my dad (&lt;a href="http://objectmentor.com/omTeam/martin_r.html"&gt;Unclebob&lt;/a&gt;) would put me on his shoulders and take on a robot&amp;#8217;s personality.  He would remain motionless until I ordered a command.  For example, if I said &amp;#8220;walk&amp;#8221; he would start walking.  If I said &amp;#8220;turn&amp;#8221; he would turn.  And in a very computer-like-fashion, he would follow my orders to the &amp;#8220;T&amp;#8221;.  After a &amp;#8220;walk&amp;#8221; command, my dad would not stop walking until I issued a &amp;#8220;stop&amp;#8221; command.  Poor programming on my behalf often led my dad, with me on his shoulders, straight into a wall.  I used to laugh with delight as he&amp;#8217;d bounce off and walk into the wall again and again until I corrected my programming error.&lt;/p&gt;

&lt;h3&gt;What was your first language?&lt;/h3&gt;

&lt;p&gt;At 9 years old my dad taught me Logo.  I was drawing circles, squares, spirals, and in general making that turtle dizzy.&lt;/p&gt;

&lt;h3&gt;What was the first real program you wrote?&lt;/h3&gt;

&lt;p&gt;In high school I programmed casino games on my TI-81 during physics class.  You could play Black Jack, Roulette, Bet on the Horses, play the One Armed Bandit. My friend Jim Maggio even did some pixel art for the slot machine.  It was pretty sweet.  All the physics students were required to have TI-81&amp;#8217;s so my games ended up getting copied over and over.  My first open source experience I suppose.&lt;/p&gt;

&lt;h3&gt;What languages have you used since you started programming?&lt;/h3&gt;

&lt;p&gt;In chronological order&amp;#8230;&lt;/p&gt;

&lt;p&gt;Logo, Basic, Fortran, Pascal, Forth, C, C++, Scheme, Java, Python, Ruby, JavaScript, C#, Objective-C, Smalltalk, Assembly.&lt;/p&gt;

&lt;p&gt;Whoa! I&amp;#8217;m impressing myself with that list.  But who am I kidding? I doubt I could remember how to write HelloWorld in half those languages now.  &lt;/p&gt;

&lt;h3&gt;What was your first professional programming gig?&lt;/h3&gt;

&lt;p&gt;An internship at &lt;a href="http://objectmentor.com"&gt;Object Mentor&lt;/a&gt;.  I wrote some Java Servlets to automate parts of their website.&lt;/p&gt;

&lt;h3&gt;If there is one thing you learned along the way that you would tell new developers, what would it be?&lt;/h3&gt;

&lt;p&gt;Software is not a spectator sport. ie. Just watching people code won&amp;#8217;t make you a good coder.  Code as much as possible if you want to master your craft. Code at work.  Code at home.  Code on vacation (&lt;em&gt;WARNING&lt;/em&gt; Your spouse may throw your computer off the balcony).  Code for fun.  Code to kill time.  Code while you&amp;#8217;re sleeping (I mean in your dreams).&lt;/p&gt;

&lt;h3&gt;What&#8217;s the most fun you&#8217;ve ever had programming?&lt;/h3&gt;

&lt;p&gt;The project the David Chelimsky referred to was mighty fun.  But I&amp;#8217;d have to say the most fun I&amp;#8217;ve had with my colleagues at 8th Light, Paul Pagel, Jim Suchy, Eric Smith, and Doug Bradbury.  I have never worked with a stronger team. When it comes to software, I imagine we could prevail over any challenge.  Outside of software, our strengths are less impressive&amp;#8230;.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;We started a basketball league and had a perfect record:  0-10. That&amp;#8217;s right, we lost 10 out of 10 games.&lt;/li&gt;
&lt;li&gt;We went on a ski trip together an managed to loose some family members in the mountains, during a snowstorm, at night.  They lived.&lt;/li&gt;
&lt;li&gt;Doing push ups every hour of every working day surely made us stronger and earned us an infamous reputation in the office.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;Up Next&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://blog.8thlight.com/articles/tag/paul"&gt;Paul Pagel&lt;/a&gt;,
&lt;a href="http://blog.8thlight.com/articles/tag/jim"&gt;Jim Suchy&lt;/a&gt;,
&lt;a href="http://blog.8thlight.com/articles/tag/eric"&gt;Eric Smith&lt;/a&gt;,
&lt;a href="http://blog.8thlight.com/articles/tag/doug"&gt;Doug Bradbury&lt;/a&gt;,
&lt;a href="http://www.linkedin.com/pub/4/678/7B4"&gt;Matt Segvich&lt;/a&gt;,
&lt;a href="http://blog.objectmentor.com/articles/category/uncle-bobs-blatherings"&gt;Unclebob&lt;/a&gt;,
&lt;a href="http://blog.objectmentor.com/articles/category/young-bobs-rants"&gt;Bob Koss&lt;/a&gt;,
&lt;a href="http://michaelfeathers.typepad.com/"&gt;Michael Feathers&lt;/a&gt;,
&lt;a href="http://blog.objectmentor.com/articles/category/deans-deprecations"&gt;Dean Wampler&lt;/a&gt;,
&lt;a href="http://blog.objectmentor.com/articles/category/tims-tepid-torrent"&gt;Tim Ottinger&lt;/a&gt;,
&lt;a href="http://chadfowler.com/"&gt;Chad Fowler&lt;/a&gt;,
&lt;a href="http://jakescruggs.blogspot.com/"&gt;Jake Scruggs&lt;/a&gt;,
&lt;a href="http://clarkware.com/cgi/blosxom"&gt;Mike Clark&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tag!  You&amp;#8217;re it!&lt;/p&gt;</description>
      <pubDate>Wed, 02 Jul 2008 14:46:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:6009faa0-6e53-4a7e-8169-2f10311b0908</guid>
      <author>Micah</author>
      <link>http://blog.8thlight.com/articles/2008/07/02/tag-im-it</link>
      <category>Fun</category>
      <category>Micah</category>
    </item>
    <item>
      <title>Announcing Limelight</title>
      <description>&lt;p&gt;I&amp;#8217;m pleased to announce the open source Limelight project: A thin client and application framework written in Ruby (JRuby).&lt;/p&gt;

&lt;div style="text-align: center;"&gt;
&lt;a href="http://limelight.8thlight.com"&gt;&lt;img style="border: 0px;" src="/files/limelight_logo.png"/&gt;&lt;/a&gt;

&lt;a href="http://limelight.8thlight.com"&gt;
    http://limelight.8thlight.com
&lt;/a&gt;
&lt;/div&gt;</description>
      <pubDate>Mon, 02 Jun 2008 20:42:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:53147eae-e5e2-4b46-bbb8-f6f4ca47ec48</guid>
      <author>Micah</author>
      <link>http://blog.8thlight.com/articles/2008/06/02/announcing-limelight</link>
      <category>Coding</category>
      <category>Fun</category>
      <category>Micah</category>
    </item>
    <item>
      <title>LimeLight at RailsConf 2008</title>
      <description>&lt;p&gt;Back at RubyConf 2007 I prepared a &lt;a href="http://rejectconf4.confreaks.com/d2t3_4th_annual_reject_conf_8th_light.html" target="new"&gt;1 minute presentation&lt;/a&gt;, well&amp;#8230; more of a teaser, about an application framework called LimeLight.&lt;/p&gt;

&lt;p&gt;What is it?  LimeLight is a selfish dream of mine.  In a nutshell it&amp;#8217;s a light weight ruby framework for building rich client applications.  To explain further, know this. I hate building web applications.  Not because they&amp;#8217;re hard to build or anything silly like that.  It&amp;#8217;s because they&amp;#8217;re so perverted.  Writing web apps makes me feel dirty; as though I&amp;#8217;ve sunk into a pit of waste and decay where the foundation of my work is a pool of sludge.  No matter how hard I may try, the very nature of modern web apps taints my code and leaves me a sour, grumpy developer.&lt;/p&gt;

&lt;div style="border: 1px solid blue; width: 100px; height: 100px; text-align: center; background-color: white; float: right;"&gt;
    &lt;div id="light" style="border: 1px solid black; width: 50px; height: 35px; margin: 10px 24px 10px 24px; 
                            background-color: red; text-align: center; padding-top: 15px;"&gt;
        Stop
    &lt;/div&gt;
    &lt;input id="button" type="submit" value="Start" onclick="stopOrGo();"/&gt;
    &lt;script type="text/javascript"&gt;
        function stopOrGo() {
            var button = document.getElementById('button');
            var light = document.getElementById('light');
            if(button.value == 'Start') {
                start(button, light);
            }
            else {
                stop(button, light);
            }
        }

        function stop(button, light) {
            light.style.backgroundColor = "red";
            light.innerHTML = "Stop";
            button.value = "Start";
        }

        function start(button, light) {
            light.innerHTML = "Go!";
            button.value = "Stop";
            blink();
        }

        function blink() {
            var light = document.getElementById('light');
            if(light.innerHTML == "Go!")
            {
                if(light.style.backgroundColor == "green") {
                    light.style.backgroundColor = "lightgrey";  
                }
                else {
                    light.style.backgroundColor = "green";
                }
                setTimeout("blink()", 500);
            }
        }
    &lt;/script&gt;
&lt;/div&gt;

&lt;p&gt;To understand what I mean, consider the trivial little widget on the right here.  Try clicking the button and watch the light blink. Simple huh? Can you count the number of languages/technologies used in implementing this widget? And don&amp;#8217;t forget the code required on the server side&amp;#8230;.. &lt;/p&gt;

&lt;p&gt;I count 5.  That is, in most cases this widget would require about 5 or more different languages.  Let&amp;#8217;s count.  HTML of course.  CSS to make it look right.  JavaScript.  That&amp;#8217;s 3, but in most cases you&amp;#8217;ve got server-side code which, if you&amp;#8217;re lucky, involves Ruby and ERB.  Think about it.  You need to know 5 difference languages to build that silly widget. Yikes!&lt;/p&gt;

&lt;p&gt;I&amp;#8217;ll include the code below.  Know that I&amp;#8217;ve made every effort to make this code as clean and simple as possible.  Still, I would need to borrow your hands and feet to count all the things I find distasteful about it.  Have a close look.  Ask yourself, &amp;#8220;Couldn&amp;#8217;t there be an easier way to do this?&amp;#8221;  I say there is.    &lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.railsconf.com" style="float: left; margin: 5px;"&gt;
&lt;img src="http://en.oreilly.com/rails2008/public/asset/asset/1174" width="210" height="60"  border="0"  alt="RailsConf 2008" title="RailsConf 2008"  /&gt;
&lt;/a&gt;
If you&amp;#8217;d like to learn more, I&amp;#8217;ll be &lt;a href="http://en.oreilly.com/rails2008/public/schedule/detail/1984" target="new"&gt;presenting on the topic&lt;/a&gt; at RailsConf 2008.  Or you can come back this this blog site later.  I&amp;#8217;ll be sure to post any exciting progress.&lt;/p&gt;

&lt;div&gt;
&lt;pre&gt;
&amp;lt;div style="border: 1px solid blue; width: 100px; height: 100px; 
               text-align: center; background-color: white; 
               float: right;"&amp;gt;
    &amp;lt;div id="light" 
            style="border: 1px solid black; width: 50px; 
            height: 35px; margin: 10px 24px 10px 24px; 
            background-color: red; text-align: center; 
            padding-top: 15px;"&amp;gt;
        Stop
    &amp;lt;/div&amp;gt;
    &amp;lt;input id="button" type="submit" 
              value="Start" onclick="stopOrGo();"/&amp;gt;
    &amp;lt;script type="text/javascript"&amp;gt;
        function stopOrGo() {
            var button = document.getElementById('button');
            var light = document.getElementById('light');
            if(button.value == 'Start') {
                start(button, light);
            }
            else {
                stop(button, light);
            }
        }

        function stop(button, light) {
            light.style.backgroundColor = "red";
            light.innerHTML = "Stop";
            button.value = "Start";
        }

        function start(button, light) {
            light.innerHTML = "Go!";
            button.value = "Stop";
            blink();
        }

        function blink() {
            var light = document.getElementById('light');
            if(light.innerHTML == "Go!")
            {
                if(light.style.backgroundColor == "green") {
                    light.style.backgroundColor = "lightgrey";  
                }
                else {
                    light.style.backgroundColor = "green";
                }
                setTimeout("blink()", 500);
            }
        }
    &amp;lt;/script&amp;gt;
&amp;lt;/div&amp;gt;

&lt;/pre&gt;
&lt;/div&gt;</description>
      <pubDate>Tue, 05 Feb 2008 04:32:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:ff4a010a-3b9e-4b2e-95b3-e8fce2d24838</guid>
      <author>Micah</author>
      <link>http://blog.8thlight.com/articles/2008/02/05/limelight-at-railsconf-2008</link>
      <category>Coding</category>
      <category>Fun</category>
      <category>Micah</category>
    </item>
    <item>
      <title>A Snob</title>
      <description>&lt;p&gt;A little more than six years ago I started my first, and hopefully last, job at a massive cubicle farm.  On my first day I was introduced to everybody by my project manager, so nervous and uncomfortable that I barely spoke*.  She introduced me first to the admin, who could stop traffic.  She said  hello with a big smile then chirped, &amp;#8220;we&amp;#8217;re twins!&amp;#8221;  Scrambling to get my jaw off the floor and seem cool and confident, I instead managed a pathetic grunt in response. Sensing my confusion she pointed to my shirt and added, &amp;#8220;See we&amp;#8217;re both wearing green.&amp;#8221;  This suave ladies man responded with, &amp;#8220;oh,&amp;#8221; then was ushered away to meet somebody much uglier and less interesting.  The admin thought to herself, &amp;#8220;what a snob,&amp;#8221; and returned to her duties.  As Jim has often told me, I make an impression.&lt;/p&gt;

&lt;p&gt;Last Sunday I became the happiest snob in the world when I married the still jaw-droppingly gorgeous former-admin.  Fortunately for me I also make a second impression.  See 8th Light and this blog in two weeks!&lt;/p&gt;

&lt;p&gt;*Yes it&amp;#8217;s true.  I am capable of silence.  I just find it overrated.&lt;/p&gt;</description>
      <pubDate>Tue, 11 Sep 2007 17:35:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:35d799e9-2be8-4180-8a2e-67c4ea9d43ae</guid>
      <author>Eric</author>
      <link>http://blog.8thlight.com/articles/2007/09/11/a-snob</link>
      <category>Fun</category>
      <category>Eric</category>
      <category>wedding</category>
    </item>
    <item>
      <title>No really, we do that?</title>
      <description>&lt;p&gt;I&amp;#8217;m a bit overdue on blogging, so in lieu of the normally brilliant and insightful commentary on the state of&amp;#8230;er something&amp;#8230; I usually put here I thought I&amp;#8217;d share something that we at 8th Light have started doing.&lt;/p&gt;

&lt;p&gt;&lt;img src="/files/2007-06-05_marines_do_push_ups.jpg" style="float: right;"/&gt;Push-ups.&lt;/p&gt;

&lt;p&gt;Every hour.  Yes I realize it&amp;#8217;s nuts, but look at a typical day for me.  Wake up too late.  Rush to get ready.  Get distracted by something on the computer (today it was RubyCocoa).  Realize that I won&amp;#8217;t make it to the gym in time to lift weights.  Work too late.  Come home, eat, maybe help my future step-children with their homework.  Suddenly it&amp;#8217;s 10, and I haven&amp;#8217;t worked out.&lt;/p&gt;

&lt;p&gt;Aha - but I did 150 push-ups today.  I think - I don&amp;#8217;t actually count.  Here&amp;#8217;s how the &lt;em&gt;8th Light Fitness Plan&lt;/em&gt; (published Spring 2008) works.  Every hour, on the hour, do push-ups.  We started at 10 every hour and that was pretty hard once upon a time, now we&amp;#8217;re up to 25.  Well most of us.  Today I saw two of the guys in another part of the building doing them, and I figure that if it caught on amongst 8th Light it can catch on elsewhere.  After all we&amp;#8217;re not that weird.  Are we?&lt;/p&gt;</description>
      <pubDate>Tue, 05 Jun 2007 05:54:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:ed5d62eb-7482-4ca2-8a19-91c323ac6206</guid>
      <author>Eric</author>
      <link>http://blog.8thlight.com/articles/2007/06/05/no-really-we-do-that</link>
      <category>Etiquette</category>
      <category>Fun</category>
      <category>Eric</category>
    </item>
    <item>
      <title>Day Three at Rails</title>
      <description>&lt;p&gt;Well it&amp;#8217;s day three and I&amp;#8217;m exhausted.  As you may have noticed I posted at 3 AM last night, and getting up at 8 AM wasn&amp;#8217;t foremost on my list of &amp;#8220;things to do today.&amp;#8221;  I did it anyway and I&amp;#8217;m enjoying a talk on Rails helpers at the moment.  While my posting last night was late I actually wrote it much earlier in the day so naturally some things happened after I wrote the post, and not all of them involved beverages that should not be consumed by those that are under 21.&lt;/p&gt;

&lt;p&gt;Last night&amp;#8217;s keynotes said a lot about the Rails community, and almost nothing about Rails ironically enough.  The first was Avi Bryant who challenged us to make Ruby as good as Smalltalk.  Avi is clearly a bright guy and an energetic speaker, and his opinions are essentially the opposite of the &amp;#8216;Rails&amp;#8217;.  While I certainly wouldn&amp;#8217;t say I agree with everything he said, the challenge to make Ruby and thereby Rails as fast as Smalltalk is one that we as a community should certainly consider.&lt;/p&gt;

&lt;p&gt;The other was Ze Frank.  He probably needs no introduction to much of the web, but he didn&amp;#8217;t say the words &amp;#8220;Ruby&amp;#8221; or &amp;#8220;Rails&amp;#8221; once.  He did nearly make us wet ourselves with laughter.  I&amp;#8217;m going to have to spend some time at www.zefrank.com.&lt;/p&gt;

&lt;p&gt;I mentioned that they said a lot about us, as a community, and to illustrate this I want you to think of an ASP conference, put on by Microsoft.  Do you think they&amp;#8217;d invite somebody from the Rails community to come in and tell them their framework bites?  No, of course not.  Large corporate-backed frameworks do not accept challenges.  They spend their time trying to sell you things to debug their already perfect technology.  We, as a group, invite people to challenge us because it requires us to think about and defend our own position.  If we&amp;#8217;re wrong, we admit we&amp;#8217;re wrong.  If we&amp;#8217;re right than that position must be defensible.  We all came from different backgrounds, and came to Rails because we continually challenged our assumptions.  Let&amp;#8217;s continue to do so.&lt;/p&gt;

&lt;p&gt;What Ze Frank as a keynote said about us is simple, we&amp;#8217;re fun.  I&amp;#8217;m sure you&amp;#8217;ve been to a big corporate event where a few suits tell some in-jokes or make a skit that&amp;#8217;s supposed to be funny, but it&amp;#8217;s not because nobody can actually say anything that might upset the big honchos.  This is a group that has no problem with keynote speakers dropping an F-bomb, and I haven&amp;#8217;t seen a single tie.  Man it&amp;#8217;s refreshing.&lt;/p&gt;

&lt;p&gt;Had a lot of fun meeting a bunch of you last night.  Looking forward to that today too.&lt;/p&gt;</description>
      <pubDate>Sat, 19 May 2007 12:01:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:29d91c6b-d214-4949-b99a-ff46f1053e05</guid>
      <author>Eric</author>
      <link>http://blog.8thlight.com/articles/2007/05/19/day-three-at-rails</link>
      <category>Fun</category>
      <category>Eric</category>
      <category>RailsConf</category>
      <category>Beer</category>
    </item>
    <item>
      <title>Day Two at RailsConf</title>
      <description>&lt;p&gt;Hello again from RailsConf.  I&amp;#8217;ve gone through five presentations.  I don&amp;#8217;t have any enormous revelations, and no good pictures yet, but I do have some observations.  I&amp;#8217;ll do this Larry King style.&lt;/p&gt;

&lt;p&gt;&amp;#8230;Uncle Bob and Jim Weirich are great public speakers.  I&amp;#8217;ve seen Uncle Bob do most of the CleanCode talk before, and I&amp;#8217;ll go again at Agile 2007&amp;#8230;Went for a run yesterday, Portland is quite pretty&amp;#8230;Everyone I&amp;#8217;ve met here has been unfailingly interesting, with nobody trying to &amp;#8216;network&amp;#8217; just meet people like normal human beings&amp;#8230;Spider Man 3 was mildly disappointing &amp;#8230;If you get a chance to download the slides from Spam I Have Known, do so.  Hugely entertaining&amp;#8230;If you add videos to your presentation it&amp;#8217;s fun, but not as much fun as genuine enthusiasm about your topic.&lt;/p&gt;

&lt;p&gt;Okay I can&amp;#8217;t do that for very long, how did Larry do it for 20 years?  The highlights from today would have to be three things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Keynote.  The tone here is very different from your typical stuffy conference, and it&amp;#8217;s great.  Chad Fowler playing the ukulele, DHH referring to &amp;#8216;unicorns&amp;#8217;, I doubt you see these at a Windows Vista conference.  Well you probably do, but it&amp;#8217;s forced and trite.  There&amp;#8217;s a genuine enthusiasm here, because what we have here are 1600 developers who are all passionate craftsman who would do this for free.  To any potential customers:  That last part was a joke.   We like to be paid. Speaking of paying, Dave Thomas gave a talk (which Gilberto attended) on Rails for charity, and that charity is still open at:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;http://pragmaticstudio.com/dontate&lt;/p&gt;

&lt;p&gt;Charity good, give some.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Clean Code.  Uncle Bob is a &amp;#8220;friend of the program&amp;#8221; as they say in college and rather closely related to my boss, so my opinion is biased admittedly, but his speech today was packed and as always well received.  If you want to see what he talked about hold the apple or ctrl key and click http://www.objectmentor.com.  That will open the site in a new window, so you don&amp;#8217;t go away.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Spam I have known.  The presentations I saw the rest of the day were up/and/down.  Nothing was bad exactly, and I know these people put a lot of effort into them so I won&amp;#8217;t name names, but there wasn&amp;#8217;t much memorable.  I was beginning to think I&amp;#8217;d have to make up something to blog today, until seeing Jim Weirich&amp;#8217;s presentation on spam.  Ruse has a really nice algorithm for detecting spam which has quite a few features but it centers around an idea so obvious you&amp;#8217;ll wish you&amp;#8217;d thought of it, the Tarpit.  Spammers routinely defeat sites with one thing - feedback!  They attack a site trying different things until they figure out why they were rejected.  A Tarpit takes spam and doesn&amp;#8217;t give them an error message, it puts it in the Tarpit.  They think that their spam was successful, so they don&amp;#8217;t change the spam.  I think I&amp;#8217;m going to grab it and try it for my personal wiki, which has never been replaced since I left the evils of corporate America.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <pubDate>Sat, 19 May 2007 03:09:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:ba2c25ea-4ea4-403e-91d5-9dc469501030</guid>
      <author>Eric</author>
      <link>http://blog.8thlight.com/articles/2007/05/19/day-two-at-railsconf</link>
      <category>Fun</category>
      <category>RailsConf</category>
      <category>Eric</category>
    </item>
    <item>
      <title>Paper Bullet</title>
      <description>&lt;p&gt;Work has me visit lots of software teams around the world.  This past week I visited a particularly fun team.  They worked in a large open work area with desk space for pairing and wall space for BCV (Big Visible Charts).  Anyhow, there was one member in particular, I&amp;#8217;ll call him Dan, that was notorious for his mischief.  Most notably, he&amp;#8217;d start paper bullet wars. &lt;/p&gt;

&lt;p&gt;Paper bullet is not the term they used but that&amp;#8217;s what I&amp;#8217;m gonna call it.  What you do is tear off a piece of paper and roll it lengthwise.  Then fold it fold it in half so you&amp;#8217;ve got a wedge shaped paper bullet. Then take a rubber band and stretch it between your thumb and index finger.  Slide the wedge onto the center of the rubber band, stretch, aim, and release.  &lt;/p&gt;

&lt;p&gt;Dan had apparently surprised everyone on the team with a paper bullet in the face or neck at one point or another.  They held a friendly grudge against him.  &lt;/p&gt;

&lt;p&gt;Early in the week I was unaware of the paper bullet wars and I found it peculiar that there were all these bit of paper on the floors and desks.  Apparently wars were taking place all week but, being the guest, no one wanted to hit me and so who ever was pairing with me had immunity.  &lt;/p&gt;

&lt;p&gt;In the final hours of the last day they confessed at how nice they were and how lucky I was that I didn&amp;#8217;t get shot all week.  Frankly I was disappointed that I didn&amp;#8217;t get to play all week so I spat out some fighting words&amp;#8230; &amp;#8220;You&amp;#8217;re lucky you never got me involved!&amp;#8221;. It began.  I could hear them whistle past my ears as I was writing so unit tests or bounce off the wall behind me as I pass the keyboard to my pair, but I never got hit. &lt;/p&gt;

&lt;p&gt;Thankfully, other team member armed me a rubber band and a hand full of paper bullets.  At a quiet moment, I figured I&amp;#8217;ve give this game a try.  Grabbing the rubber band and paper wedge, I loaded and aimed right at Dan&amp;#8217;s head.  The rubber band was surprisingly flexible.  Not knowing how hard to stretch it, I just kept pulling.  As I looked down the trajectory, I was sure the projectile would curve.  When I released I was shocked and horrified.&lt;/p&gt;

&lt;p&gt;The bullet screamed across the room, straight as an arrow, pegging Dan right in the side of the head.  It made a loud smacking noise upon impact.  The whole team heard it and the room went silent.  I was terrified.  This was no way to treat your clients, I thought.  The poor guy never even hit me so he didn&amp;#8217;t deserve it.  Apparently I was wrong.  Everyone else thought he deserved it.  The room broke out in laughter.  Team members (not Dan) gave me a thumbs up, telling me &amp;#8220;Thanks&amp;#8221; or &amp;#8220;Good job&amp;#8221;.  &lt;/p&gt;

&lt;p&gt;I apologized to Dan later, trying not to stare at the red welt just below his temple.  Dan, the sportsman that he is, congratulated me on my marksmanship.  He&amp;#8217;s a good guy.&lt;/p&gt;

&lt;p&gt;So what&amp;#8217;s the moral of the story? None really.  But I will note that many of the development environments I visit are much more sterile and &amp;#8220;professional&amp;#8221; than this team&amp;#8230;. and much less productive as well.&lt;/p&gt;

&lt;hr/&gt;

&lt;p&gt;Wed, 19 Apr 2006 10:21:32, Greg, hey !?
Did you visit my office recently and I didn&amp;#8217;t know? We&amp;#8217;re also doing this, but since there&amp;#8217;s only 3 of us in the office, we sometimes &lt;em&gt;have&lt;/em&gt; to use other targets than ourselves (when the red marks are becoming too obvious). We just destroyed an ugly dummy cd of some bad dutch singer here.&lt;/p&gt;

&lt;hr/&gt;

&lt;p&gt;Wed, 19 Apr 2006 02:52:29, Mike, My mother used to say
it&amp;#8217;s only fun until someone&amp;#8217;s eye is put out!&lt;/p&gt;

&lt;hr/&gt;

&lt;p&gt;Tue, 18 Apr 2006 10:49:47, Dan (yes that one), Injury update
The swelling is down&amp;#8230;I can see out of that eye now&amp;#8230;hope you come back soon :) :) :)&lt;/p&gt;

&lt;hr/&gt;

&lt;p&gt;Tue, 18 Apr 2006 06:44:08, Ryan Platte, Nice shot!
Don&amp;#8217;t be surprised if I hang out by a pillar if you come to another Chirb meeting, yikes!&lt;/p&gt;</description>
      <pubDate>Mon, 17 Apr 2006 00:00:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:d6329b49-b89f-47b6-98df-258b60350b18</guid>
      <author>Micah</author>
      <link>http://blog.8thlight.com/articles/2006/04/17/paper-bullet</link>
      <category>Fun</category>
      <category>Micah</category>
    </item>
    <item>
      <title>Apples and Tigers</title>
      <description>&lt;p&gt;&lt;a href="http://developer.apple.com/events/techtalks/"&gt;Tiger Tech Talk&lt;/a&gt;, Chicago.  This was a free, one day, conference held by Apple.  The intent was to give developers a preview of the new features and technologies in OS X Tiger, their next os which will be released in the first half of 2005.  Wow!  A year ago I transitioned from Windows XP to OS X Panther.  I fell in love almost immediately.  Panther is superior to Windows XP is almost every way.  Better graphics, better usability, and much much much more stable. A little over a year later, Tiger will be released.  Apple has made progress in leaps and bounds with Tiger.&lt;/p&gt;

&lt;p&gt;Perhaps the most impressive new feature will be the Dashboard.  Dashboard is invoked by a pressing F12 or some key, at which point a hidden screen will appear on top of the desktop via Expose.  If you haven&amp;#8217;t seen Expose before, find someone with mac and have them show you.  It&amp;#8217;s incredible.  Once Dashboard appears there are a bunch of widget that you can run.  Dashboard widgets are mini applications, written in HTML, that remain on the dashboard and tie into various applications or resources.  The idea being that you can keep these mini apps running out of sight on Dashboard and make them appear only when you need them.  Perhaps the most impressive dashboard is opening a new widget that will literally splash onto your screen.  The presenter had to show us this &lt;a href="http://www.macrumors.com/downloads/tiger/dashboard_address.mov"&gt;mesmerizing ripple effect&lt;/a&gt; several times before we were satisfied.   &lt;/p&gt;

&lt;p&gt;Add Style, Organization, and Efficiency to your Applications Aqua User Interface.  This talk made it clear the me that Apple has really thought through it&amp;#8217;s interface development and had guidelines for 3rd parties to follow when developing for OS X.  There were 5 main ingredients:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Planning
&lt;ul&gt;
&lt;li&gt;The major point here was that the best applications often have the smallest feature set.  Similar to the Single Responsibility Principle, every application should have one responsibility or solve one problem and avoid the clutter that comes from overloading feature sets.  Planning also includes getting users involved so they can help figure out what the problem and solution are exactly.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;First Impression
&lt;ul&gt;
&lt;li&gt;In essence, everything should work the first time and the user should be off and running without a hitch.&lt;/li&gt;
&lt;li&gt;Simple download&lt;/li&gt;
&lt;li&gt;Simple Installation&lt;/li&gt;
&lt;li&gt;Easy to use interface.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Fundamentals
&lt;ul&gt;
&lt;li&gt;One menu bar&lt;/li&gt;
&lt;li&gt;Windows that behave like Mac windows should&lt;/li&gt;
&lt;li&gt;&amp;#8230;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Design for Aqua
&lt;ul&gt;
&lt;li&gt;The presenter used a nice analogy.  Imagine packing all the interface components (button, text-fields, text, &amp;#8230;) into a sawed-off shotgun and shooting it toward the screen.  This is a fair representation of many existing application.  &lt;/li&gt;
&lt;li&gt;Components should be grouped together by function&lt;/li&gt;
&lt;li&gt;The menu bar should have the right menus in the right order&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;High Performance
&lt;ul&gt;
&lt;li&gt;self explanatory&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;X Code is indeed an advanced IDE.  It supports multiple languages, unique WYSYWIG GUI editing, distributed building, dynamic UML generation, &amp;#8230;  This was a very popular session and there were lots of people with questions including me.  &amp;#8220;When will X Code support practices such as Unit Testing and Refactoring?&amp;#8221; I asked.  Matt Formica, the presenter, responded by saying that he had been to several meetings on the topic.  However, there are no immediate plans to include these agile practices in X Code.  I pressed on to see what Apple&amp;#8217;s general feeling was on Unit Testing and Refactoring.  Matt told me that a few developers practice agile practices because they like to but that&amp;#8217;s it.  I was disappointed that Apple doesn&amp;#8217;t take this more seriously.  X Code&amp;#8217;s lack of Unit Testing integration and automated Refactoring is a HUGE shortcoming compared to IDEA and Eclipse modern IDE.  &lt;/p&gt;

&lt;p&gt;The last session I attended was about Core Image.  This is an image processing library that allows developers to perform over 80 filters to images or applications.  The details of the filters was over my head but the concept was very sweet.  Core Image will allow developers to spice up their application, by adding elegant transitions and eye catching animations.  OS X is full of these graphical pleasantries and it truly improves the user experience.&lt;/p&gt;

&lt;p&gt;According to the &lt;a href="http://cbs.marketwatch.com/news/story.asp?guid=%7BA3148182-DA1F-4659-A4AD-4070C035821D%7D&amp;amp;siteid=google&amp;amp;dist=google"&gt;most recent news&lt;/a&gt;, Microsoft intends to release Longhorn in the second half of 2006.  This date has been pushed back a couple times so far. By the time Longhorn does come out Apple may already have Tiger&amp;#8217;s successor out.  Longhorn had better be like jarred lightning to keep up with OS X. &lt;/p&gt;

&lt;hr/&gt;

&lt;ul&gt;
&lt;li&gt;Sounds like a good time, dude.  Gotta love those Macs!  Are you doing any OS X development? &amp;#8211;DaveHoover
&lt;ul&gt;
&lt;li&gt;Nothing serious.  I&amp;#8217;m just playing with Cocoa for now. -MicahMartin&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr/&gt;

&lt;ul&gt;
&lt;li&gt;Xcode already supports unit testing indirectly.  A number of third parties have packages that provide automated unit testing directly in Xcode.  I use OCUnit (www.sente.ch, I believe.  If not, Google it).   It includes project templates, file templates and is quite easy to use.
&lt;ul&gt;
&lt;li&gt;I tried OCUnit for a while.  A few weeks ago Tim Hart showed me his framework [[!-TestKit-!][http://testkit.sourceforge.net/]] for unit testing Cocoa. I&amp;#8217;ve found !-TestKit-! easier to use and geared more to the way I work. -MicahMartin&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;James Duncan Davidson&amp;#8217;s UnitKit is really nice, very well documented, and integrates well with XCode.  You should have a look at that too.&lt;/li&gt;
&lt;li&gt;I want to second the comment about UnitKit - it is more Cocoa like than JUnit like but it makes sense for ObjC developement. -Daniel Steinberg&lt;/li&gt;
&lt;/ul&gt;

&lt;hr/&gt;

&lt;ul&gt;
&lt;li&gt;Thanks for sharing the info. I was particularly intrigued with the 5 main ingredients of interface development, and your comments on the overlap with OO principles (SRP) I&amp;#8217;d be interested in hearing more about this, and observations of the practices of companies that make great products. -KelleyHarris&lt;/li&gt;
&lt;/ul&gt;

&lt;hr/&gt;

&lt;ul&gt;
&lt;li&gt;&amp;#8221;The major point here was that the best applications often have the smallest feature set. Similar to the Single Responsibility Principle, every application should have one responsibility or solve one problem and avoid the clutter that comes from overloading feature sets. Planning also includes getting users involved so they can help figure out what the problem and solution are exactly.&amp;#8221; 
     * I would be interested to see how you would apply this reasoning to a program like Photoshop.  It seems to me that there are some inherently complex tasks that require an inherently complex program to carry out those tasks.  I, for one, would hate to be opening lots of different applications to crop, colour-balance, contrast-enhance, re-size, sharpen, etc a photograph. &amp;#8211;ChrisBooth&lt;/li&gt;
&lt;/ul&gt;</description>
      <pubDate>Wed, 17 Nov 2004 00:00:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:66b47714-c871-43f1-8e75-d0530ea6aa9c</guid>
      <author>Micah</author>
      <link>http://blog.8thlight.com/articles/2004/11/17/apples-and-tigers</link>
      <category>Fun</category>
      <category>Micah</category>
    </item>
  </channel>
</rss>
