<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
 
 <title>Matt Gauger</title>
 <link href="http://blog.mattgauger.com/atom.xml" rel="self"/>
 <link href="http://blog.mattgauger.com/"/>
 <updated>2010-03-28T13:41:54-05:00</updated>
 <id>http://blog.mattgauger.com/</id>
 <author>
   <name>Matt gauger</name>
   <email>matt.gauger@gmail.com</email>
 </author>
 
 
 <entry>
   <title>Introducing John December on How Does Wisconsin Get the Job Done?</title>
   <link href="http://blog.mattgauger.com/2010/03/28/introducing-john-december/"/>
   <updated>2010-03-28T00:00:00-05:00</updated>
   <id>http://mbleigh.com/2010/03/28/introducing-john-december</id>
   <content type="html">&lt;p&gt;It&amp;#8217;s been awhile, but I&amp;#8217;ve got a brand new interview with &lt;a href='http://blog.mattgauger.com/thesetup/johndecember'&gt;John December&lt;/a&gt; on &lt;a href='http://blog.mattgauger.com/thesetup/'&gt;The WI Setup&lt;/a&gt;!&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Introducing Jason Gessner on How Does Wisconsin Get the Job Done?</title>
   <link href="http://blog.mattgauger.com/2010/02/14/introducing-jason-gessner/"/>
   <updated>2010-02-14T00:00:00-06:00</updated>
   <id>http://mbleigh.com/2010/02/14/introducing-jason-gessner</id>
   <content type="html">&lt;p&gt;Another week, another new interview with &lt;a href='http://blog.mattgauger.com/thesetup/jasongessner/'&gt;Jason Gessner&lt;/a&gt; on &lt;a href='http://blog.mattgauger.com/thesetup/'&gt;The WI Setup&lt;/a&gt;! Hot off the presses!&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Web414 Feb 11, 2010</title>
   <link href="http://blog.mattgauger.com/2010/02/11/web414-feb-2010/"/>
   <updated>2010-02-11T00:00:00-06:00</updated>
   <id>http://mbleigh.com/2010/02/11/web414-feb-2010</id>
   <content type="html">&lt;p&gt;These are my notes from the February 2010 Web414 meeting. I wrote them in Markdown as the meeting progressed, so there&amp;#8217;s not a whole lot of explanation or context.&lt;/p&gt;

&lt;h2 id='part_1_workflow'&gt;Part 1: Workflow&lt;/h2&gt;

&lt;h2 id='what_do_you_use_for_bug_tracking'&gt;What do you use for bug tracking?&lt;/h2&gt;

&lt;p&gt;Mantis, Trac, Bugzilla, Pivotal Tracker, Intervals&lt;/p&gt;

&lt;p&gt;Hacking OpenAtrium case tracker to support bug tracking&lt;/p&gt;

&lt;h2 id='what_do_photographers_use_photographer_workflow'&gt;What do photographers use? (Photographer Workflow)&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Lightroom, Photoscape (John December)&lt;/li&gt;

&lt;li&gt;The DAM book: &lt;a href='http://thedambook.com'&gt;thedambook.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id='bandwidth_backups'&gt;Bandwidth, backups&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;There isn&amp;#8217;t enough upload bandwidth to mirror all your content if you have a lot of data.&lt;/li&gt;

&lt;li&gt;Everyone sign up for Google&amp;#8217;s fiber program.&lt;/li&gt;

&lt;li&gt;Amazon S3(Jungle Disk), Dropbox, Carbonite.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id='then_things_went_like_this'&gt;Then things went like this:&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;GIT GIT GIT GIT GIT GIT GIT Mercurial Microsoft GIT&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id='ides'&gt;IDEs:&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Eclipse/Aptana: No longer supports PHP ** Eclipse just got git support&lt;/li&gt;

&lt;li&gt;BBEdit&lt;/li&gt;

&lt;li&gt;Netbeans has some PHP support&lt;/li&gt;

&lt;li&gt;Textmate users? Quite a few.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id='time_trackers'&gt;Time trackers:&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Harvest&lt;/li&gt;

&lt;li&gt;Intervals&lt;/li&gt;

&lt;li&gt;MacFreelance or iRachet.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id='batch_processing__hourly_jobs'&gt;Batch processing / hourly jobs:&lt;/h2&gt;

&lt;p&gt;Do all of your photoshop tasks for different projects at once. Who makes that part of their workflow? 5 Getting Things Done: lump actions together&lt;/p&gt;

&lt;h2 id='pomodoro'&gt;Pomodoro&lt;/h2&gt;

&lt;p&gt;Study technique. Way of focusing.&lt;/p&gt;

&lt;h2 id='file_transfer'&gt;File transfer:&lt;/h2&gt;

&lt;p&gt;Replacement for Cyberduck?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Transmit.app: costs money but it is included in Coda&lt;/li&gt;

&lt;li&gt;Filezilla&lt;/li&gt;

&lt;li&gt;Flow.app&lt;/li&gt;

&lt;li&gt;FireFTP - Firefox plugin&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id='customer_relation_managements'&gt;Customer Relation Managements&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Highrise - Manages people&lt;/li&gt;

&lt;li&gt;Sugar CRM&lt;/li&gt;

&lt;li&gt;CiviCRM&lt;/li&gt;

&lt;li&gt;Kevron is building CRM into their OpenAtrium project.&lt;/li&gt;

&lt;li&gt;Salesforce sucks!&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id='part_2_frameworks_versus_cmses'&gt;Part 2: Frameworks versus CMSes&lt;/h2&gt;

&lt;p&gt;A web application framework has some things written, but things like delivering web pages is up to the coder. -&amp;gt; An incomplete web application, a framework that you hang your business logic on.&lt;/p&gt;

&lt;p&gt;Arlen: &amp;#8220;The future of the web is in frameworks, not in CMSes.&amp;#8221;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Every CMS does things its own way. &amp;#8220;one size fits all.&amp;#8221;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Arlen: &amp;#8221;I&amp;#8217;m fighting the CMS. The CMS has a way it wants to do things. I have to write the business logic in such a way that the CMS can do it. Every CMS brings in POV.&amp;#8221;&lt;/p&gt;

&lt;p&gt;The big three of CMSes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Drupal&lt;/li&gt;

&lt;li&gt;Joomla&lt;/li&gt;

&lt;li&gt;Wordpress&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example web app frameworks: PHP:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CakePHP&lt;/li&gt;

&lt;li&gt;Zend&lt;/li&gt;

&lt;li&gt;CodeIgniter (behind ExpressionEngine)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Other languages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ruby on Rails for the Ruby language.&lt;/li&gt;

&lt;li&gt;Django for Python&lt;/li&gt;

&lt;li&gt;Catalyst for Perl&lt;/li&gt;

&lt;li&gt;Seaside for Smalltalk&lt;/li&gt;

&lt;li&gt;Lift for Scala.&lt;/li&gt;

&lt;li&gt;ASP.NET MVC or .NET Webforms&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Derek: &amp;#8220;Are we arguing the semantic difference between being a developer and being an integrator?&amp;#8221;&lt;/p&gt;

&lt;p&gt;[ Discussion on integration and its worth. I&amp;#8217;m not going to even try to record it all here. ]&lt;/p&gt;

&lt;p&gt;Arlen: &amp;#8221;I&amp;#8217;m worth more as a developer than an integrator.&amp;#8221;&lt;/p&gt;

&lt;p&gt;Steve Kleibel: &amp;#8220;It&amp;#8217;s about solving problems and delivering solutions. And most people don&amp;#8217;t care about what&amp;#8217;s going on under the cover.&amp;#8221;&lt;/p&gt;

&lt;p&gt;Curtis: &amp;#8220;Most of the time it is about how fast can I get this up and running? I know that Drupal/Joomla/Wordpress are well tested and quick to set up.&amp;#8221;&lt;/p&gt;

&lt;p&gt;Arlen: &amp;#8220;I think the future in web developers is in frameworks.&amp;#8221;&lt;/p&gt;

&lt;p&gt;Kevron: &amp;#8220;He said bit-twiddling. That was amazing.&amp;#8221;&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Book Review &mdash; The Productive Programmer</title>
   <link href="http://blog.mattgauger.com/2010/02/08/book-review-the-productive-programmer/"/>
   <updated>2010-02-08T00:00:00-06:00</updated>
   <id>http://mbleigh.com/2010/02/08/book-review-the-productive-programmer</id>
   <content type="html">&lt;p&gt;I recently finished Neal Ford&amp;#8217;s &lt;a href='http://www.amazon.com/gp/product/0596519788?ie=UTF8&amp;tag=httpmattgauco-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0596519788'&gt;The Productive Programmer&lt;/a&gt;&lt;img src='http://www.assoc-amazon.com/e/ir?t=httpmattgauco-20&amp;l=as2&amp;o=1&amp;a=0596519788' border='0' height='1' alt='' width='1' style='border:none !important; margin:0px !important; float:left' /&gt;, which was a fast read. It exists as a spiritual successor of &lt;a href='http://www.amazon.com/gp/product/020161622X?ie=UTF8&amp;tag=httpmattgauco-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=020161622X'&gt;The Pragmatic Programmer&lt;/a&gt;&lt;img src='http://www.assoc-amazon.com/e/ir?t=httpmattgauco-20&amp;l=as2&amp;o=1&amp;a=020161622X' border='0' height='1' alt='' width='1' style='border:none !important; margin:0px !important; float:left;' /&gt;. But where The Pragmatic Programmer gave maxims, The Productive Programmer discusses recipe-type solutions to common problems the author perceived at the time of writing, 2008. There&amp;#8217;s a slight bias towards Java, which was (mostly) king of the coding world at the time, and Java&amp;#8217;s two main IDEs, Eclipse and Netbeans. Luckily, the book goes beyond those topics and in some sections covers Windows, Linux and Mac OS X and their respective IDEs and editors. After presenting some &amp;#8220;recipes,&amp;#8221; the book goes on to talk about the process of finding ways to be more productive as a programmer, which explains the title.&lt;/p&gt;

&lt;p&gt;The author describes the reason for creating the book as thus: When stuck in an airport terminal with a software engineer friend, they wondered &amp;#8220;Did the world really need another book on regular expressions?&amp;#8221; While regular expressions are powerful, there are a bunch of books on that topic that are already excellent. O&amp;#8217;Reilly&amp;#8217;s &lt;a href='http://www.amazon.com/gp/product/0596528124?ie=UTF8&amp;tag=httpmattgauco-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0596528124'&gt;Mastering Regular Expressions&lt;/a&gt;&lt;img src='http://www.assoc-amazon.com/e/ir?t=httpmattgauco-20&amp;l=as2&amp;o=1&amp;a=0596528124' border='0' height='1' alt='' width='1' style='border:none !important; margin:0px !important; float:right;' /&gt; comes to mind. Becoming fluent in regular expressions is just one way to increase your productivity as a programmer. This book sets out with a loftier goal of teaching you to find ways to be more productive.&lt;/p&gt;

&lt;p&gt;Most of the recipes were things I already did on Mac OS X in developing software &amp;#8212; the Windows tips didn&amp;#8217;t really apply to anything I do. I already use &lt;a href='http://code.google.com/p/qsb-mac/'&gt;Google Quick Search&lt;/a&gt; as a replacement for &lt;a href='http://code.google.com/p/blacktree-alchemy/'&gt;Quicksilver&lt;/a&gt; and &lt;a href='http://www.obdev.at/products/launchbar/index.html'&gt;Launchbar&lt;/a&gt; to keep myself from wasting too much time in the Finder. I try to make the most of my text editor of choice, &lt;a href='http://macromates.com'&gt;Textmate&lt;/a&gt;, and its bundles. I keep data in plaintext (really a habit I picked up from The Pragmatic Programmer) and keep my files/code/etc much under little git repos. That isn&amp;#8217;t to say that the book wasn&amp;#8217;t interesting or helpful to me. Some of the things I picked up were in the Practice section (Chapters 6 to 16, so the bulk of the book) that covered coding, particularly object-oriented design, DRYing up documentation, and test-driven development.&lt;/p&gt;

&lt;p&gt;There is an appendix of concepts in the bash shell, which will be useful those that aren&amp;#8217;t familiar or comfortable with getting things done in the shell. Personally, I&amp;#8217;ve been using bash for so long that many of the tricks involving &lt;code&gt;grep&lt;/code&gt; and &lt;code&gt;find&lt;/code&gt; they discussed in the book I&amp;#8217;ve figured out in the past, sometimes with a wildly different solution.&lt;/p&gt;

&lt;p&gt;Ultimately, at roughly 220 pages it was a quick read and fairly informative. I&amp;#8217;ve been pushing friends to read it, especially people approaching coding from a web design/web app background rather than a Linux &amp;amp; Java background, to see how they like it. For those that have already read The Pragmatic Programmer more than twice, it&amp;#8217;s probably worth the quick read, but you&amp;#8217;re likely already doing and thinking similar things day-to-day. &lt;strong&gt;Recommended.&lt;/strong&gt;&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Introducing Pete Prodoehl on How Does Wisconsin Get the Job Done?</title>
   <link href="http://blog.mattgauger.com/2010/02/05/the-wi-setup-pete-prodoehl/"/>
   <updated>2010-02-05T00:00:00-06:00</updated>
   <id>http://mbleigh.com/2010/02/05/the-wi-setup-pete-prodoehl</id>
   <content type="html">&lt;p&gt;A great interview with &lt;a href='http://blog.mattgauger.com/thesetup/peteprodoehl/'&gt;Pete Prodoehl&lt;/a&gt; has just been posted. Check it out!&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Introducing Derek Dysart on How Does Wisconsin Get the Job Done?</title>
   <link href="http://blog.mattgauger.com/2010/02/02/the-wi-setup-derek-dysart/"/>
   <updated>2010-02-02T00:00:00-06:00</updated>
   <id>http://mbleigh.com/2010/02/02/the-wi-setup-derek-dysart</id>
   <content type="html">&lt;p&gt;Head on over for a brand spankin&amp;#8217; new interview with &lt;a href='http://blog.mattgauger.com/thesetup/derekdysart/'&gt;Derek Dysart&lt;/a&gt;.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Continuous Integration for the Lone Programmer</title>
   <link href="http://blog.mattgauger.com/2010/01/30/continuous-integration/"/>
   <updated>2010-01-30T00:00:00-06:00</updated>
   <id>http://mbleigh.com/2010/01/30/continuous-integration</id>
   <content type="html">&lt;p&gt;There&amp;#8217;s a laundry list of tools and practices in my head that I consider part of modern software engineering (version control, unit testing, code reviews, etc.) These aren&amp;#8217;t necessarily required on every project. Continuous integration seems to be a practice that many prominent developers are using. But continuous integration servers aren&amp;#8217;t very glamorous, and therefore don&amp;#8217;t get a lot of discussion.&lt;/p&gt;

&lt;p&gt;If you&amp;#8217;re working alone on a project, committing it to version control, and using unit testing, what does it matter whether you run the tests yourself or have a continuous integration server running them? True, there&amp;#8217;s a level of immediate feedback with running the tests yourself. But unless you&amp;#8217;re building all the various unit testing and integration testing frameworks into one rake task, you may forget to run them all. In the case where you do have a rake task, your CI server could be running that for you on every commit. A continuous integration server ensures that the tests get run, whether you remember or not.&lt;/p&gt;

&lt;p&gt;The other plus to this setup is that you can choose how and when the CI server interrupts you. You may be in a flow state and not want to be bothered by stopping to run the unit tests every five minutes when you know you&amp;#8217;re not breaking them. That could be dangerous, though. If you zone out for a half day and come back to find all the tests failing, you&amp;#8217;ll need to go back through the builds to see when and what commit first broke it. Luckily, the CI server should tell you that.&lt;/p&gt;

&lt;p&gt;I set up &lt;a href='http://integrityapp.com/'&gt;Integrity&lt;/a&gt; locally to run as my continuous integration system. Technically, Integrity could be hacked to build and test just about anything that gives a Unix return code, but I&amp;#8217;m using it in its most common purpose: building Ruby projects that are hosted in &lt;a href='http://git-scm.org'&gt;git&lt;/a&gt; repos. While many developers are using &lt;a href='http://github.com/'&gt;GitHub&lt;/a&gt;, I&amp;#8217;ve pointed Integrity at local git repos.&lt;/p&gt;

&lt;p&gt;I did consider setting up a Campfire chat room to receive build status messages in, but it seemed overkill to sit alone in a chatroom to be updated by Integrity. So, I enabled the email functionality, and now Integrity is configured to email me with build status. If I keep a Firefox tab open to the Integrity server and choose whether to look at my email or not, I have a fairly effective barrier to decide when to let myself be interrupted. Meanwhile, the builds continue.&lt;/p&gt;

&lt;p&gt;I&amp;#8217;m hoping to optimize this and integrate it fully into my workflow, as TDD/BDD is a new thing to me and Integrity is already serving to reinforce writing good tests.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>How Does Wisconsin Get the Job Done?</title>
   <link href="http://blog.mattgauger.com/2010/01/25/how-does-wisconsin/"/>
   <updated>2010-01-25T00:00:00-06:00</updated>
   <id>http://mbleigh.com/2010/01/25/how-does-wisconsin</id>
   <content type="html">&lt;p&gt;The title is the question I asked myself after reading through the latest interview at &lt;a href='http://usesthis.com'&gt;UsesThis.com&lt;/a&gt;. I&amp;#8217;d thought about using the Creative Commons-licensed stylesheets of Usesthis.com (aka TheSetup) for a nicer &lt;a href='http://blog.mattgauger.com/about'&gt;About Me&lt;/a&gt; page than I currently had on this blog. After tweaking the template a little, I realized I could use Jekyll and apply this template to any content I wanted.&lt;/p&gt;

&lt;p&gt;Instead of just post my own answers, why not interview everyone I know in the tech community here in Wisconsin? So that&amp;#8217;s exactly what I&amp;#8217;m doing. In the first round of interviews, we hear from &lt;a href='http://blog.mattgauger.com/thesetup/philgerbyshak'&gt;Phil Gerbyshak&lt;/a&gt;, &lt;a href='http://blog.mattgauger.com/thesetup/ashedryden'&gt;Ashe Dryden&lt;/a&gt;, and &lt;a href='http://blog.mattgauger.com/thesetup/mattgauger'&gt;myself&lt;/a&gt;. The interviews can currently be viewed at &lt;a href='http://blog.mattgauger.com/thesetup/'&gt;http://blog.mattgauger.com/thesetup/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There&amp;#8217;s more on the way, and I&amp;#8217;ll be announcing new posts through &lt;a href='http://twitter.com/mathiasx'&gt;my Twitter&lt;/a&gt; and on this blog. Oh, and please feel free to comment using the new Disqus commenting system!&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Fonts Are Good</title>
   <link href="http://blog.mattgauger.com/2010/01/23/fonts-are-good/"/>
   <updated>2010-01-23T00:00:00-06:00</updated>
   <id>http://mbleigh.com/2010/01/23/fonts-are-good</id>
   <content type="html">&lt;p&gt;I just started tweaking this blog&amp;#8217;s design again. The first step was doing a font makeover with &lt;a href='http://www.fontsquirrel.com'&gt;FontSquirrel&lt;/a&gt;&amp;#8217;s @font-face kits. I chose Droid Sans Regular, which is a free font that Ascender and Google put out. I&amp;#8217;m liking it a lot.&lt;/p&gt;

&lt;p&gt;More changes to the blog design are likely. This initial design was a quick attempt at something I had in mind, but on reflection it doesn&amp;#8217;t look finished.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Purpose, Part 2</title>
   <link href="http://blog.mattgauger.com/2010/01/18/purpose-part-2/"/>
   <updated>2010-01-18T00:00:00-06:00</updated>
   <id>http://mbleigh.com/2010/01/18/purpose-part-2</id>
   <content type="html">&lt;p&gt;(Finishing a blog post originally drafted on 12/29/2009)&lt;/p&gt;

&lt;p&gt;Now that I&amp;#8217;ve established a &lt;a href='http://blog.mattgauger.com/2009/12/28/purpose/'&gt;purpose&lt;/a&gt; for this blog, I thought about my own purpose.&lt;/p&gt;

&lt;p&gt;It seems to be part of human nature to question our purpose in life continuously. Even when we seem to have it figured out, the question sneaks up on us again. I&amp;#8217;ve attended several places of higher education in the last few years, and my concept of what I want to do with my life has shifted during that time.&lt;/p&gt;

&lt;p&gt;In the past 8 months or so, I had convinced myself that my interests didn&amp;#8217;t align with working on web applications anymore. After thinking about the problem I had decided that some day I&amp;#8217;d like to get a graduate degree in &lt;a href='http://en.wikipedia.org/wiki/Bioinformatics'&gt;bioinformatics&lt;/a&gt;, which is one field where being a clever programmer and applying Computer Science theory are both good things. Web apps, in comparison, rarely use CS theory and felt like copy/pasting functionality together to please a client.&lt;/p&gt;

&lt;p&gt;Bioinformatics also has the &lt;strong&gt;potential to do good&lt;/strong&gt; in the world. Diseases could be cured, science and medicine could be advanced, and people&amp;#8217;s lives could be made better with the suitable application of data, code, and computing power. Web apps rarely have the ability to change the world, much less do good in it. Sure, there&amp;#8217;s websites like &lt;a href='http://kiva.org/'&gt;Kiva&lt;/a&gt; making a positive change in the world, but the majority of work to be had in developing web apps is not so altruistic.&lt;/p&gt;

&lt;p&gt;The distinction for me is whether the problem space is &lt;strong&gt;interesting&lt;/strong&gt;. Interesting stuff is far more likely to make me happy and hold my attention. Interestingness is intangible, of course, but certain topics lend themselves to be interesting for me.&lt;/p&gt;

&lt;p&gt;In the past year I had a stint at a consulting shop doing Java &lt;a href='http://wicket.apache.org/'&gt;Wicket&lt;/a&gt;/Hibernate development and a Rails project. The consulting shop promised interesting in-house projects using natural language processing and location based services towards creating some interesting tools. Sadly, I never got to work on them. I was the last in the door, and so I was the first out when money got tight.&lt;/p&gt;

&lt;p&gt;There&amp;#8217;s a certain amount of soul-searching to do after losing your job. I went on that journey after losing my job and ended up back in school, studying primarily mathematics. And I&amp;#8217;m loving it. But I don&amp;#8217;t see math as a viable career, either in applications (like economics/finance) or teaching it. Those just aren&amp;#8217;t my strong points.&lt;/p&gt;

&lt;p&gt;One of the problems I&amp;#8217;ve run into is that I&amp;#8217;ve felt like my coding skills have gone stagnant in the time since I lost my job. I stopped needing to code and be on top of things, and at the same time stopped learning. One of my goals for 2010 to correct this is to &lt;strong&gt;learn constantly&lt;/strong&gt;. It&amp;#8217;s not an easy task in the scope of everything I want to learn in my lifetime. For me, learning goes beyond just getting a college diploma, or knowing enough to squeeze by in your day job.&lt;/p&gt;

&lt;p&gt;I was heavily influenced when I was younger by a book called &lt;a href='http://www.amazon.com/gp/product/0440508274?ie=UTF8&amp;tag=httpmattgauco-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0440508274'&gt;How to Think Like Leonardo da Vinci&lt;/a&gt; (Amazon affiliate link), which explained the concept of a Renaissance (wo)man. While the book&amp;#8217;s exercises didn&amp;#8217;t stick, the concept of being a modern Renaissance man did. The result is that I&amp;#8217;ve become an information sponge, especially on topics that seem useless to other people. Having a wide-ranging knowledge of the world doesn&amp;#8217;t necessarily pay off in terms of a better salary, but it ultimately makes you a better citizen of the world, in my book.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Web414 January 2010</title>
   <link href="http://blog.mattgauger.com/2010/01/14/web414-january-2010/"/>
   <updated>2010-01-14T00:00:00-06:00</updated>
   <id>http://mbleigh.com/2010/01/14/web414-january-2010</id>
   <content type="html">&lt;p&gt;&lt;a href='http://web414.com'&gt;Web414&lt;/a&gt; is a monthly technology meetup here in Milwaukee, which is responsible for &lt;a href='http://barcampmilwaukee.org/'&gt;BarCampMilwaukee&lt;/a&gt;, &lt;a href='http://milwaukeedevhouse.org/'&gt;MKE Devhouse&lt;/a&gt;, Milwaukee&amp;#8217;s coworking meetups, photowalks, and many of our other events in Milwaukee.&lt;/p&gt;

&lt;p&gt;&lt;a href='http://milwaukeedevhouse.org/'&gt;Bucketworks&lt;/a&gt; is the usual host of Web414, but they&amp;#8217;ve had some issues finding a new physical location in the past year. December was the first Web414 in their new location (fingers crossed!) near 5th &amp;amp; National. Bucketworks seems to be on track to open for business later this month at that location, but they didn&amp;#8217;t have an internet connection + wifi in time for the January 2010 Web414.&lt;/p&gt;

&lt;p&gt;Kevin Ciesielski (&lt;a href='http://twitter.com/kevron'&gt;Kevron&lt;/a&gt; on Twitter) hosted this month&amp;#8217;s Web414 and moderated a panel on radio. His panelists were Ryan Schleicher of &lt;a href='http://www.wmse.org/'&gt;WMSE&lt;/a&gt;, &lt;a href='http://twitter.com/RadioMilwaukee'&gt;Tarik Moody&lt;/a&gt; of &lt;a href='http://www.radiomilwaukee.org/'&gt;88.9 Radio Milwaukee&lt;/a&gt;, Jim Conigliaro of &lt;a href='http://www.journalcommunications.com/'&gt;Journal Communications&lt;/a&gt;, and &lt;a href='http://jbrust.com/'&gt;James Brust&lt;/a&gt; of online radio station &lt;a href='http://www.limbikfreq.com/'&gt;Limbiq Frequencies&lt;/a&gt;. The panel discussed the technical difficulties of streaming radio on the web, and the issues surrounding licensing music for broadcast. &lt;a href='http://creativecommons.org'&gt;Creative Commons&lt;/a&gt; licensing came up as a possible solution to the licensing issue. Unfortunately, the discussion didn&amp;#8217;t include any musicians (vocal ones, at least) and I would have liked to hear what artists think about Creative Commons versus what broadcasters think.&lt;/p&gt;

&lt;p&gt;At first, one might wonder why this topic was chosen for Web414. The panelists were not as involved (or prepared to talk about) the technical side of streaming radio online. In fact, I heard a few people whispering in the back questioning the relevance to to Web414 during the meeting.&lt;/p&gt;

&lt;p&gt;But I&amp;#8217;m going to go ahead and argue that the topic is entirely relevant to Web414. As a group, Web414 is exploring both the online realm and how to make a living working online. But Web414 is also concerned with the creation and publishing of content. That content could be writing, photography, code, art, interior design, music, etc. that just happens to live online. We&amp;#8217;ve all staked our careers on the awesome capabilities of the web and the fact that we can make a living on the web. That&amp;#8217;s why I think it is relevant to have a panel of radio folks or an &lt;a href='http://www.agaartka.com/blog/2009/06/12/i-am-aga-aga-is-my-brand/'&gt;interior designer&lt;/a&gt; or a &lt;a href='http://www.web414.com/node/880'&gt;singer-songwriter&lt;/a&gt; as the focus of a Web414 meeting.&lt;/p&gt;

&lt;p&gt;I may come off as a curmudgeon, but I think Web414 has already covered technical topics &amp;amp; tools in detail and doesn&amp;#8217;t need to go that route anymore. Often, these topics appeal to only a small subset of attendees, or the 1 hour time limit is too short to adequately cover the topic. An hour intro to Drupal or Joomla or even a web site like Flickr is barely enough time to cover the basics and will probably only appeal to people who are already interested in Drupal or Joomla or Flickr. When I spoke at Web414 on version control, I felt that I&amp;#8217;d barely scratched the surface of the topic and my talk failed (my fault, I&amp;#8217;ll admit) to interest the people it was aimed at: those not already using version control. Technical topics seem better served by a whole unconference event, like the very successful &lt;a href='http://www.drupalcampwi.com/'&gt;Drupal Camp Wisconsin&lt;/a&gt; which I&amp;#8217;ve had the pleasure of attending.&lt;/p&gt;

&lt;p&gt;So what topics would I personally like to see at Web414 in the future? I think we need to tap into our attendees and find interesting individuals to interview. I&amp;#8217;m curious to hear what they do, how they do it, and how they pay the bills every month. I&amp;#8217;m curious to hear what tools they use to stay productive and how they focus. And if we can draw in some interesting folks from Milwaukee and the surrounding area to interview along the same lines, I&amp;#8217;d be interested. I&amp;#8217;m not asking for a Lifehacker meet-up. I just think that the topic can now safely shift from specific technologies and websites and onto how to make ourselves better professionals.&lt;/p&gt;

&lt;p&gt;I think we need to allow for Web414 to change, too. In the past year, we had &lt;em&gt;The Web414 Show&lt;/em&gt; hosted by &lt;a href='http://writelarge.com/'&gt;Gabe Wollenburg&lt;/a&gt; and &lt;a href='http://rasterweb.net/raster/'&gt;Pete Prodoehl&lt;/a&gt;. They took Web414 in the direction of a late-night TV talk show, which was good, because Web414 was beginning to feel like an Twitter Anonymous member meeting before that change. We may need someone to shake things up again, though. Things change so fast on the web (and generally impact us so little) that I question whether we need a &amp;#8220;this week on the web&amp;#8221; news segment. The tools and technologies that people are using and making a living off of is such a huge list now that it would be an injustice to try and cover what is happening with everything. Similarly, the happenings of web bloggers and web personalities really don&amp;#8217;t have any relevance to us as a group anymore, if they ever did. (John C. Dvorak and Kevin Rose come to mind.) I&amp;#8217;d like to suggest instead that we try to cover local Wisconsin developments in the tech sector: new companies moving into town, new initiatives by the state or local governments in using the web (if they ever chose to) etc. Perhaps instead of covering &amp;#8220;web news&amp;#8221; we could devote that time to allowing meeting attendees to brag about neat projects they&amp;#8217;re working on or have been involved in, even though we&amp;#8217;ve discouraged this practice in the intros in the past. I&amp;#8217;d like to stay plugged in to what local folks are doing and be able to congratulate them for their successes and &lt;a href='http://thedreaminaction.com/2009/06/10/socialdreamium-lessons-learned-bumps-and-bruises-included/'&gt;their failures&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Milwaukee is noticeably lacking for particular technology users groups (such as Linux User Groups (LUGS), programming language user groups, etc), or they&amp;#8217;re not as successful as Web414. I rarely hear about other groups in Milwaukee that I should check out. So Web414 does help to fill that niche where users groups don&amp;#8217;t exist. But maybe Web414 can be a catalyst to letting people meet and spin off their own groups. Having a new permanent location would certainly help, if Bucketworks is game to open up their space in the future for other groups. I&amp;#8217;m looking forward to seeing what happens with all these groups and awesome people (who I&amp;#8217;m glad to call my friends) in the new year.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Pulled Thoughts</title>
   <link href="http://blog.mattgauger.com/2010/01/07/pulled-thoughts/"/>
   <updated>2010-01-07T00:00:00-06:00</updated>
   <id>http://mbleigh.com/2010/01/07/pulled-thoughts</id>
   <content type="html">&lt;p&gt;Below are several bits and pieces of my &lt;a href='http://blog.mattgauger.com/2010/01/05/emergent-behavior/'&gt;previous blog post&lt;/a&gt; which didn&amp;#8217;t ultimately get included. I thought that there were some neat thoughts in here, so I included them, without rewriting to add context. Enjoy.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Research in artificial intelligence can trace its roots back to the father of the universal computer, Alan Turing. He famously concocted the Turing Test, whereby a computer might be able to prove itself sentient. But as we&amp;#8217;ve found, being able to a fool a human and perhaps know how to respond in human language does not make a sentient computer.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;While there are several approaches to artificial intelligence, the two relevant disciplines I&amp;#8217;m going to discuss are top-down design and bottom-up design. Bottom-up can better be called behaviorism, or the emergent behavior approach. (note: these are my own classifications, not necessarily the academic definition, and blatantly stolen from Steve Grand&amp;#8217;s explanations in his book.) &lt;a href='http://en.wikipedia.org/wiki/Emergence'&gt;Emergence&lt;/a&gt; is the topic of several interesting books that I&amp;#8217;ve read over the years.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Grand suggests that a &amp;#8216;cyberspace&amp;#8217; be created and a first-order of complexity be coded into it to jumpstart artificial life, rather than trying to model and perfect an a-life creature with no environment or need for survival. Artificial life would be a second order of complexity that would emerge from the simulation. (He asks, what does a translation program care about its survival? Can we really reward it for better translation or punish it and threaten its survival for messing up?)&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Traditional software engineering is largely monolithic and still waterfall-based. Object orientation and various Agile/XP paradigms have changed that, but have not succeeded in breaking the monolithic concept. APIs and protocols are still brittle and lack the ability to adapt. I&amp;#8217;ve yet to work out all the implications, but a method of software engineering based on these concepts of adaptation and feedback loops could be very powerful.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;I&amp;#8217;ll be curious to monitor the progress of Jeff Hawkins and others&amp;#8217; research with the HTM model. I think that they may have the best model for working on a general artificial intelligence, even if it does not ultimately lead to one. Neuroscience is still a field where there is a lot left to learn on many levels, and hopefully a feedback loop is established in which the field of artificial intelligence continues to benefit from neuroscience research. ;)&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Hopefully some day Steve Grand will also get the recognition he deserves for the contribution the Creatures game made to a-life. Perhaps his work will inspire a different type of video game opponent AI that attempts to survive in its simulated world rather than just play against the human, but I have not seen that kind of complexity given to video game AI yet.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;End signal.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Feedback Loops and Emergent Behavior</title>
   <link href="http://blog.mattgauger.com/2010/01/05/emergent-behavior/"/>
   <updated>2010-01-05T00:00:00-06:00</updated>
   <id>http://mbleigh.com/2010/01/05/emergent-behavior</id>
   <content type="html">&lt;p&gt;This post started out as a review of two books. My friend &lt;a href='http://www.youtube.com/watch?v=vO_O4AD1MhI'&gt;Zac Witte&lt;/a&gt; introduced me to the work of Jeff Hawkins, previously of Palm and now working at a company called &lt;a href='http://numenta.com/'&gt;Numenta&lt;/a&gt;, which is working on a method of creating artificial intelligence. Hawkins wrote a book called &lt;a href='http://www.amazon.com/gp/product/0805078533?ie=UTF8&amp;tag=httpmattgauco-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0805078533'&gt;On Intelligence&lt;/a&gt; in 2005 detailing his research into artificial intelligence up to that point. Zac recommended the book while we were hacking on code at a coffee shop here in Milwaukee.&lt;/p&gt;

&lt;p&gt;I countered by recommending the work of Steve Grand, who is responsible for one of my childhood videogame addictions: &lt;a href='http://en.wikipedia.org/wiki/Creatures_%28artificial_life_program%29' title=' link to Wikipedia entry'&gt;Creatures&lt;/a&gt;. Creatures was an artificial life simulator that was deceptively simple and childlike. Yet behind the scenes, complex biological processes were being simulated and multi-lobed brains were allowing the Norns, the Creatures of the game, to think. At least, think in a rudimentary, simulated way.&lt;/p&gt;

&lt;p&gt;Steve Grand wrote a book called &lt;a href='http://www.amazon.com/gp/product/0674011139?ie=UTF8&amp;tag=httpmattgauco-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0674011139'&gt;Creation: Life and How to Make It&lt;/a&gt; detailing his experience in coding the game. It quickly runs through several thought experiments in how one might simulate physics, matter, and chemical reactions. (And indeed, what these simulations say about the real world.) Grand likes to link various disciplines together, and the book easily jumps from transistors and electrical engineering to neurons to chemical reactions and on to more abstract concepts. Grand&amp;#8217;s work can be said to be of the field of artificial life, or A-life, and not necessarily artificial intelligence.&lt;/p&gt;

&lt;p&gt;Emergent behavior theory suggests that complex behavior emerges from simple behavior. Or rather, that the whole is smarter than the sum of its parts. Think of an ant hill, which does not really have a leader yet manages to survive and adapt through simple actions of the ants. Emergent behavior found its popularity among the MIT Mobile Robot Lab, among other places. Simple behaviors telling a robot how to react to stimuli, for example, to back up its right wheel when the front left bumper is pressed or vice-versa, can produce seemingly intelligent behavior.&lt;/p&gt;

&lt;p&gt;Jeff Hawkins began to study AI by reading as many scientific articles as possible. But, he was frustrated by the seeming lack of progress and unwillingness of the AI field to study real neuroscience. Hawkins wanted to study the human brain and use that for inspiration into how to create a general artificial intelligence. Traditional academic approaches to artificial intelligence at that point completely ignored neuroscience. Hawkins does not want to fully simulate the brain at some chemical level, either. Instead, Hawkins studied the neocortex, in his view the most important key to understanding the human brain. His research led him to an architecture he calls Hierarchical Temporal Memory, or HTM, based on how the brain processes patterns and fragments across time rather than whole memories instantaneously.&lt;/p&gt;

&lt;p&gt;Hawkins discusses some of the shortcomings of traditional neural network research. Most neural networks, from the 70&amp;#8217;s to the present, were simply three stages of neurons: an input stage, a &amp;#8220;black box&amp;#8221; stage, and an output stage. Neural networks were trained with sample data, in which connections between neurons could strengthen or weaken. But after training, the neurons&amp;#8217; connections are &amp;#8220;locked&amp;#8221; and no further training occurs. Hawkins likens three stage neural network research to reverse engineering the transistors in a modern computer and being able to build simple amplifier circuits, or perhaps transistor radios. There is interesting behavior in an amplifier circuit, but it will never be a digital computer.&lt;/p&gt;

&lt;p&gt;So why are these two books together in one review? Grand is an artifical life video game creator, and not at all interested in the same kind of artificial intelligence that Hawkins hopes to create. Their research seems to be opposed, or at least completely different.&lt;/p&gt;

&lt;p&gt;The concept that these two differing authors agree on is the importance of &lt;strong&gt;feedback loops&lt;/strong&gt;. Those traditional three stage neural networks rarely included simulating feedback loops in the neural connection, while the human brain&amp;#8217;s neocortex is largely feedback loops. Further, the number of connections coming in from the senses to the brain is far outweighed by the number of connections going back out to the sensory organs, in a nearly 10-to-1 ratio. This is extraordinary if you think that the brain simply processes incoming data passively. It is actively responding and anticipating sensory data.&lt;/p&gt;

&lt;p&gt;You remember music in bits and and fragments rather than whole songs. There is a time element to these memories. You can&amp;#8217;t remember the whole song all at once, or hear every note at the same time. The same can be said for all memories. Hawkins points out that being able to predict the world led to the brain being organized this way. After all, prediction is a powerful survival skill.&lt;/p&gt;

&lt;p&gt;Grand writes:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Living beings are high-order persistent phenomena, which endure through intelligent interaction with their environment. This intelligence is a product of multiple layers of feedback. An organism is therefore a localized network of feedback loops that ensures its own continuation.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We can find feedback loops around us everywhere in nature. One of my favorite examples comes from the book &lt;a href='http://www.amazon.com/gp/product/0786887214?ie=UTF8&amp;tag=httpmattgauco-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0786887214'&gt;Sync&lt;/a&gt;. Fireflies in Thailand will swarm in tall grass, flashing randomly. But they synchronize with each flash, until the whole swarm flashes in unison. How do they do it? There is no leader or conductor telling the fireflies when to flash. They change the rate of their flashing slightly, faster or slower, until they all match and the flashing syncs. Surprising complexity and cooperation can therefore occur from simple, basic behavior.&lt;/p&gt;

&lt;p&gt;One of the places where a feedback loop exists in technology is in the TCP/IP protocol. In a simplified view, one could say that the rate of packets being sent is regulated based on signal loss. The machines at both ends of a network connection don&amp;#8217;t know anything about the connection between them or how good it is. They simply use the degradation of the signal - whether packets make it through and are responded to - to modulate whether to send more packets or the same packet over. This feedback loop has a speed regulating effect. The feedback loop ensures that the message will get delivered, even over a bad connection.&lt;/p&gt;

&lt;p&gt;Feedback loops and emergent behavior are both fields of research that I&amp;#8217;m actively interested in learning more about. These books have fueled my thoughts for further exploration of both concepts. While feedback loops and emergent behavior may not have applications in all endeavors, they can be powerful solutions to the right problem.&lt;/p&gt;

&lt;p&gt;The research of both authors is interesting and their books are highly readable. They both provide interesting thinking on the brain and the natural world, and I&amp;#8217;d like to follow up with more books in these areas. Both books are relatively short are definitely recommended reads. Too many &amp;#8216;pop science&amp;#8217; books seem to fall to the side of including too little real science, or paraphrasing studies that don&amp;#8217;t really have a neuroscience background. I&amp;#8217;ve had that issue with recent books on the human brain and learning marketed towards computer programmers: much of it was based on nonscientific surveys or speculation, which was highly disappointing.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>This is a Problem</title>
   <link href="http://blog.mattgauger.com/2010/01/04/this-is-a-problem/"/>
   <updated>2010-01-04T00:00:00-06:00</updated>
   <id>http://mbleigh.com/2010/01/04/this-is-a-problem</id>
   <content type="html">&lt;p&gt;I&amp;#8217;ve hit a snag in my workflow for writing blog posts. As I&amp;#8217;ve written about before, I&amp;#8217;m using &lt;a href='http://github.com/mojombo/jekyll/'&gt;Jekyll&lt;/a&gt;, which creates static HTML files for this blog when it is run. That should be fine, except for a few issues.&lt;/p&gt;

&lt;p&gt;The first is how Jekyll is designed. Published posts go in a &amp;#95;posts/ directory, with a filename of the form&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;	YYYY-MM-DD-title.md&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This presents me with two immediately problems. I have to finish the post in the day I start it. This rarely happens. Most of the time, I start a blog post with a few ideas that I&amp;#8217;d like to flesh out. And the file sits, unfinished, until I come back to it. While I&amp;#8217;d love to follow &lt;em&gt;release early, release often&lt;/em&gt; as described in the inaugural post, a few notes to myself do not add up to something that anyone else can read. I&amp;#8217;d like to occasionally draw a useful conclusion from my thoughts, even if it doesn&amp;#8217;t result in a long essay.&lt;/p&gt;

&lt;p&gt;The second snag in this system is usually the lack of a title. Or that I have a title and no content to go with it. I&amp;#8217;ve had both problems. Sometimes, without a good title to go with a post, I&amp;#8217;ve sat at the New File dialog box in Textmate and given up. And more than once on my old blog, I had a couple neat, catchy-sounding blog post titles that sat as drafts with no writing whatsoever. Because there wasn&amp;#8217;t a blog post to go with them, just a catchy title.&lt;/p&gt;

&lt;p&gt;Here&amp;#8217;s what I&amp;#8217;m talking about, a screenshot of my &lt;a href='http://bytecodex.wordpress.com'&gt;old blog&lt;/a&gt;&amp;#8217;s Drafts folder:&lt;/p&gt;

&lt;p&gt;&lt;img src='http://img.skitch.com/20100105-q74cbybg5d5xgnb44rqh9mt3w6.jpg' alt='Draft posts' /&gt;&lt;/p&gt;

&lt;p&gt;Note that at one time, these all seemed like good blog post ideas. Now, they don&amp;#8217;t, really.&lt;/p&gt;

&lt;p&gt;I suppose I can always rename files, but that&amp;#8217;s missing the point. The point is that there&amp;#8217;s a speedbump to getting blog posts out there that I need to get over. Maybe it&amp;#8217;s a mental block when I see that New file dialog box. Maybe I&amp;#8217;m just making excuses. But I certainly feel like I&amp;#8217;m failing at a simple task here.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Purpose</title>
   <link href="http://blog.mattgauger.com/2009/12/28/purpose/"/>
   <updated>2009-12-28T00:00:00-06:00</updated>
   <id>http://mbleigh.com/2009/12/28/purpose</id>
   <content type="html">&lt;p&gt;Every blog has to have a purpose. For awhile, I had a blog hosted on Wordpress.com, &lt;a href='http://bytecodex.wordpress.com'&gt;The Byte Codex&lt;/a&gt;. I had told myself that it was my coding blog, and that all insights I gained in coding would end up there. Also, I&amp;#8217;d blog about tech events I attended.&lt;/p&gt;

&lt;p&gt;Unfortunately, I wasn&amp;#8217;t coding enough and consistently at a level to produce world-changing &amp;#8220;insights&amp;#8221; on a regular basis. I got really wrapped up in trying to find something I could claim expertise on, and then blog about. But I wasn&amp;#8217;t an expert on anything and wasn&amp;#8217;t &lt;em&gt;creating&lt;/em&gt; anything. The frustration and self-censorship about what I told myself I was supposed to be posting crippled my posting momentum. Further, the Midwest wasn&amp;#8217;t providing many tech events for me to blog about, and the recaps all were more hazy memories surrounded by other people&amp;#8217;s Creative Commons-licensed pictures of the event. (I usually am having a blast and forget to take notes or my own photos.)&lt;/p&gt;

&lt;p&gt;All of my previous blogs had &amp;#8216;rules&amp;#8217; in my head about what they were &lt;em&gt;for&lt;/em&gt; and what could or couldn&amp;#8217;t be posted on them. All of them failed. There&amp;#8217;s something telling here. I think there&amp;#8217;s plenty of reasons to have a specialized blog for different topics, possibly even trying to keep your life or your work separated out. But for me, I&amp;#8217;m going to stick with a nice mix of personal anecdotes, book reviews, bike stuff (did I mention bikes yet on this blog?) and of course, little coding projects. I don&amp;#8217;t want to wall myself in with rules that those are the only things that can get posted here, either. I have to take a deep breath, put away my inner quality control and publish everything.&lt;/p&gt;

&lt;p&gt;A blog can have a purpose, but it shouldn&amp;#8217;t be so narrowly defined that it never gets updated. After all, a blog with new posts is better than an insightful blog that has gone stagnant, in my book.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;strong&gt;Appendix: A little history:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In the past, I&amp;#8217;ve had several blogs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;xiphidae &lt;a href='http://web.archive.org/web/*/http://tranzor.net/~xiphias'&gt;(archive.org link)&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href='http://bytecodex.wordpress.com'&gt;The Byte Codex&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href='http://mathiasdgauger.livejournal.com/'&gt;Livejournal&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href='http://mathiasx.baywords.com/'&gt;mathiasx.baywords.com/&lt;/a&gt; - notable for the RFID microwaving video and a rant on Facebook, which are the only real posts.&lt;/li&gt;

&lt;li&gt;and probably a few others that I&amp;#8217;m forgetting.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Luckily, those blogs are not too terribly embarrassing to share.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>The First 2500 Are the Hardest</title>
   <link href="http://blog.mattgauger.com/2009/12/27/the-first-2500-are-the-hardest/"/>
   <updated>2009-12-27T00:00:00-06:00</updated>
   <id>http://mbleigh.com/2009/12/27/the-first-2500-are-the-hardest</id>
   <content type="html">&lt;p&gt;Seth Godin is a prolific blogger. He&amp;#8217;s also a successful author. When he hit his &lt;a href='http://sethgodin.typepad.com/seths_blog/2009/02/luckiest-guy.html'&gt;3000th post&lt;/a&gt;, I remember him writing&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The hard part, as you can guess, is the first 2,500 posts. After that, momentum really starts to build.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Of course, I just started this blog. This is post number 3. And I&amp;#8217;ve never really been able to develop a blogging habit. But maybe this time it&amp;#8217;ll stick.&lt;/p&gt;

&lt;p&gt;Onto the continuing adventures of tweaking this blog theme:&lt;/p&gt;

&lt;p&gt;I was in the backseat of my parent&amp;#8217;s van after to go to a family holiday get-together.&lt;/p&gt;

&lt;p&gt;I had my laptop, and a vague problem of the nav buttons at the top right of the blog being fully rounded in Google Chrome on my macmini. But Firefox showed the nav buttons the way I wanted, with only the two lower corners rounded and a nice squarish block right up to the top brown border line. Luckily, I also had my &lt;a href='http://ashedryden.com'&gt;awesome girlfriend&lt;/a&gt; with me. The offending piece of CSS looked like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;	border-radius: 5px;

	border-bottom-right-radius: 5px;
	-moz-border-radius-bottomright: 5px;
	-webkit-border-bottom-right-radius: 5px;

	border-bottom-left-radius: 5px;
	-moz-border-radius-bottomleft: 5px;
	-webkit-border-bottom-left-radius: 5px;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;She pointed out that I was using the generic CSS method of rounding the corners, &lt;strong&gt;border-radius&lt;/strong&gt;, but also using the Mozilla (Firefox) and Webkit (Safari) specific methods as well for the lower corners. So, I commented out that bit about the &lt;strong&gt;border-radius&lt;/strong&gt; and waited, as we were barreling down the highway at 60 MPH in the backseat of a van, and for some reason the Department of Transportation hasn&amp;#8217;t started installing free wireless access points on the highway. Which limits my ability to update my blog from the road. Luckily, I don&amp;#8217;t find myself in the backseats of vans on the highway very often. (City buses are a different story.) So I uploaded the changes when I got home and tested it. &lt;strong&gt;Success!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now to move onto some minor &lt;a href='http://jquery.com'&gt;jQuery&lt;/a&gt; effects I want to implement. Nothing flashy, just the Javascript equivalent of hover effects, I&amp;#8217;m thinking.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Passion, Absurdity, and Creativity</title>
   <link href="http://blog.mattgauger.com/2009/12/27/passion-and-creativity/"/>
   <updated>2009-12-27T00:00:00-06:00</updated>
   <id>http://mbleigh.com/2009/12/27/passion-and-creativity</id>
   <content type="html">&lt;p&gt;Lately I&amp;#8217;ve been reminiscing about &lt;em&gt;&amp;#95;whytheluckystiff&lt;/em&gt;. He disappeared from the internet earlier this year, taking all of his code, writings, and other creations with him. There&amp;#8217;s more info on the &lt;a href='http://en.wikipedia.org/wiki/Why_the_lucky_stiff'&gt;Wikipedia article&lt;/a&gt; and there are &lt;a href='http://ejohn.org/blog/eulogy-to-_why/'&gt;several&lt;/a&gt; &lt;a href='http://ism.creativepony.com/post/169621989/the-physics-of-a-lucky-stiff'&gt;eulogies&lt;/a&gt; to &lt;em&gt;&amp;#95;why&lt;/em&gt;. His writings have been &lt;a href='http://viewsourcecode.org/why/'&gt;mirrored online&lt;/a&gt;, luckily, and his code put back on &lt;a href='http://whymirror.github.com/'&gt;http://whymirror.github.com/&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;One of &lt;em&gt;&amp;#95;why&lt;/em&gt;&amp;#8217;s passions was teaching programming to children, as evidenced by &lt;a href='http://viewsourcecode.org/why/hacking/theLittleCodersPredicament.html'&gt;The Little Coder&amp;#8217;s Predicament&lt;/a&gt;, &lt;a href='http://wiki.github.com/steveklabnik/hacketyhack'&gt;Hackety Hack&lt;/a&gt;, and the &lt;a href='http://github.com/Sophrinix/TryRuby'&gt;Try Ruby website&lt;/a&gt;. (These are all links to the current versions of these projects, as &lt;em&gt;&amp;#95;why&lt;/em&gt;&amp;#8217;s versions are all gone.)&lt;/p&gt;

&lt;p&gt;Hackety Hack was the modern self-contained equivilent of programming BASIC on a Commodore, full of simple functionality and even a component to send code to friends over the internet. Hackety Hack ran in Shoes, which I&amp;#8217;d used in the past and enjoyed. I&amp;#8217;ve been trying to get the &lt;a href='http://github.com/steveklabnik/hacketyhack/'&gt;resurrected Hackety Hack project&lt;/a&gt; to build as a standalone application because I have a few young cousins that I&amp;#8217;d like to give it to.&lt;/p&gt;

&lt;p&gt;In a &lt;a href='http://shack-a-nerd.livejournal.com/70594.html'&gt;blog post&lt;/a&gt; about &lt;em&gt;&amp;#95;why&lt;/em&gt;, &lt;a href='http://shack-a-nerd.livejournal.com/'&gt;shack_a_nerd&lt;/a&gt; wrote&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;When I was sad I would often return to the Poignant Guide and reread it, just pick it up from any chapter and start reading, and it would never fail to cheer me up, to remind me that there are wonderful things out there, and to inspire me to try to contribute something of my own.&lt;/p&gt;

&lt;p&gt;Once I commented on the poignant-stiffs mailing list that I thought it was less of a useful programming guide for people who didn&amp;#8217;t know how to program already, and more like a novel for computer programmers.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I thought a lot about what I was contributing and what I was coding. For months, I haven&amp;#8217;t touched any code. I was contributing nothing to the world. Before his disappearance, &lt;em&gt;&amp;#95;why&lt;/em&gt; created a wealth of amazing things. His creativity and ability to be nonsensical set him apart from the mindless programmer drones out there.&lt;/p&gt;

&lt;p&gt;I pulled up Why&amp;#8217;s Poignant Guide and blew the dust off. I haven&amp;#8217;t read it in years, abandoning it after deciding I wanted to be a &lt;strong&gt;serious&lt;/strong&gt; Ruby programmer and that the level of silliness was a barrier to actually teaching me Ruby. But now I want to be inspired, want to steal some of that creativity. I want to create things that other people will delight in using. I&amp;#8217;ve got a lot to learn from &lt;em&gt;&amp;#95;why&lt;/em&gt; yet.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Shiny, Captain!</title>
   <link href="http://blog.mattgauger.com/2009/12/26/shiny-captain/"/>
   <updated>2009-12-26T00:00:00-06:00</updated>
   <id>http://mbleigh.com/2009/12/26/shiny-captain</id>
   <content type="html">&lt;p&gt;Today I decided I wanted to start blogging again. I thought about my options on my hosting, and didn&amp;#8217;t particularly feel like running a full-blown blog engine like Wordpress or Drupal. I knew I wanted a nice custom theme but I didn&amp;#8217;t want to waste time trying to wrap my head around another theming engine.&lt;/p&gt;

&lt;p&gt;In the very far past, I had a blog run on a friend&amp;#8217;s server that was generated as static html files (and an RSS feed) by a perl script. It&amp;#8217;s still available on &lt;a href='http://web.archive.org/web/*/http://tranzor.net/~xiphias'&gt;archive.org&lt;/a&gt;. There are several Ruby-based projects that do the same thing. I chose &lt;a href='http://github.com/mojombo/jekyll/'&gt;Jekyll&lt;/a&gt;, which is what &lt;a href='http://pages.github.com'&gt;Github Pages&lt;/a&gt; runs on. I grabbed the gem off the Github gem server and set up the basic directory structure. The whole setup is extremely simple:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;	.
	|-- _config.yml
	|-- _layouts
	|   |-- default.html
	|   `-- post.html
	|-- _posts
	|   `-- 2009-12-26-shiny-captain.md
	|-- _site
	`-- index.html&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;After creating those files, I was off and running with creating a theme from scratch. I&amp;#8217;ve had my eye on HTML5 for awhile, and recently read an &lt;a href='http://www.smashingmagazine.com/2009/08/04/designing-a-html-5-layout-from-scratch/'&gt;article on Smashing Mag&lt;/a&gt; that inspired me. I used their method of defining the HTML5 tags as blocks in CSS to allow me to write HTML5 now and render it in today&amp;#8217;s browsers.&lt;/p&gt;

&lt;p&gt;After a few hours, while my girlfriend watched Law &amp;amp; Order SVU on Netflix next to me, I coded up the theme for this blog. I stole the template for the &lt;a href='http://blog.mattgauger.com/atom.xml'&gt;Atom feed&lt;/a&gt; from &lt;a href='http://github.com/mbleigh/mbleigh.github.com/blob/master/atom.xml'&gt;mbleigh&lt;/a&gt;. There&amp;#8217;s still plenty of room for tweaks and improvements I want to make. But I&amp;#8217;m trying not to be a perfectionist, and instead follow the maxim of &lt;em&gt;release early, release often&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Below is the &amp;#8220;Hello World&amp;#8221; post I whipped up initially to help with theming:&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;This is the first post!&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;this is a block quote!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This isn&amp;#8217;t a block quote!&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;	(Hpricot(open url)/:enclosure).map {|x| x.attributes[&amp;quot;url&amp;quot;]}.uniq.each do |vid|
	# File.exist?(vid.split(&amp;quot;/&amp;quot;).last) ? next : `curl #{vid}`
	filename = vid.gsub(/http:.+\//, &amp;#39;&amp;#39;)
	filename.gsub!(/-/, &amp;quot;_&amp;quot;)
	next if File.exist?(filename)

	puts &amp;quot;Downloading #{vid}&amp;quot;
	puts filename
	`curl -L #{vid} &amp;gt; #{filename}`&lt;/code&gt;&lt;/pre&gt;</content>
 </entry>
 
 
</feed>