<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title><![CDATA[Matthew Hinton]]></title>
  <link href="http://matthewhinton.net/atom.xml" rel="self"/>
  <link href="http://matthewhinton.net/"/>
  <updated>2012-01-11T11:58:58-06:00</updated>
  <id>http://matthewhinton.net/</id>
  <author>
    <name><![CDATA[Matthew Hinton]]></name>
    
  </author>
  <generator uri="http://octopress.org/">Octopress</generator>

  
  <entry>
    <title type="html"><![CDATA[Searching for a Task Solution]]></title>
    <link href="http://matthewhinton.net/blog/2012/01/11/there-is-no-perfect-task-management-solution/"/>
    <updated>2012-01-11T11:16:00-06:00</updated>
    <id>http://matthewhinton.net/blog/2012/01/11/there-is-no-perfect-task-management-solution</id>
    <content type="html"><![CDATA[<p>I have tried many task management solutions and I haven&#8217;t found any that I
really like. I have a few criteria for an acceptable solution but nothing I have
tried so far meets them.</p>

<ul>
<li>Multi Platform

<ul>
<li>I need to be able to access my tasks from the web, my iPhone, and if
possible a Mac.</li>
<li>Many solutions hit 2 out 3 of the platforms. I can accept not having a
desktop app if the web app is available but I don&#8217;t like it.</li>
</ul>
</li>
<li>Effortless Syncing

<ul>
<li>I want to be able to enter/close tasks on one device and have those changes
propagate within a couple of minutes across clients.</li>
</ul>
</li>
<li>Due Dates/Times

<ul>
<li>I want to be able to set a due date and time on a task.</li>
</ul>
</li>
<li>Reminders

<ul>
<li>I want to be able to set a reminder time on a task and preferably be
notified on my iPhone.</li>
</ul>
</li>
<li>Cheap

<ul>
<li>I am willing to pay for task management software as evidenced by the
numerous iPhone task managers I have bought in the last few years. However I
am not willing to let a company siphon money from me indefinitely and I find
the companies trying to charge extra for syncing particularly distasteful.</li>
</ul>
</li>
</ul>


<p>I have tried OmniFocus, Things, The Hit List and none of them have kept me using
it for more than a few days. OmniFocus is to expensive and has no web app.
Things has been promising sync forever and aside from a limited beta test hasn&#8217;t
produced it. Cultured Code the make of Things also doesn&#8217;t seem to updated their
website since last August. The Hit List was presumed dead for a long time until
it&#8217;s developer popped up with a new version and added syncing for an extra
monthly charge. So I have encountered show stoppers with all the big Mac task
managers that preclude me from using them.</p>

<p>I have tried many web applications however most of them aren&#8217;t available on any
other platform. I have been sporadically using iPhone clients that store their
data in the Toodledo web application. This gave me the 2 platforms I needed the
most web and mobile. However I haven&#8217;t been particularly pleased with any of the
iPhone apps and Toodledo&#8217;s UI is ok but not great.</p>

<p>I am currently giving Wunderlist another try because it&#8217;s available on
practically every platform Mac/Windows/Web/iOS I would want to use it on.
Wunderlist is very simple however it does support multiple lists, due dates and
times, syncing, and reminders on the iPhone. Wunderlist is free which isn&#8217;t
actually a good sign in my book because they have no revenue to keep them in
business.</p>

<p>I am going to try and stick to using Wunderlist for two weeks to really evaluate
it. There is one thing that annoys me already and that is the custom backgrounds
they use everywhere, I would prefer that the app use the native window
background on iOS and Mac/Windows. I also wish Wunderlist would use black text
in order to increase the contrast and make the test easier to read.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Web App Administration Responsibility]]></title>
    <link href="http://matthewhinton.net/blog/2011/12/09/web-app-administration-responsibility/"/>
    <updated>2011-12-09T14:11:00-06:00</updated>
    <id>http://matthewhinton.net/blog/2011/12/09/web-app-administration-responsibility</id>
    <content type="html"><![CDATA[<p>I had a very frustrating experience today where I suggested a very simple
automated solution to a problem that would take the responsibility of dealing
with a whole new category of customer support issues away from the company.  My
idea was to escalate the issue from one class of user to another and have them
be able to quickly address the issue thus avoiding any need to have one of our
employees spend time on it. This solution would be relatively simple to
implement and would be done fairly quickly. Unfortunately I was shot down in
favor of having developers handle these issues manually.</p>

<p>There are so many things wrong with this that I just had to write about it. I am
venting in this way because I had to refrain from saying something I would
regret after this decision was made.</p>

<p>First we are software developers not clerks in the 1950&#8217;s doing everything by
hand.  Our job is automate business processes not make them more inefficient.</p>

<p>We want to empower the users to address any issues they have rather than having
to contact us. We want users to feel capable and that our product meets their
needs.</p>

<p>The only way developers can fix this support issue is to go into the database and
delete records since we have no superuser capability in the system. This is
exactly what you never want to do unless it&#8217;s an emergency and then you better
think twice before touching the database.</p>

<p>I believe once this solution is in place and the extra work is factored in we
will end up developing a different solution to the problem so we won&#8217;t save any
time overall and I wish we were doing it right in the first place.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Git Go Round and Round]]></title>
    <link href="http://matthewhinton.net/blog/2011/12/07/git-go-round-and-round/"/>
    <updated>2011-12-07T14:23:00-06:00</updated>
    <id>http://matthewhinton.net/blog/2011/12/07/git-go-round-and-round</id>
    <content type="html"><![CDATA[<p>When <a href="http://git-scm.com/">git</a> is working it&#8217;s a dream however when I get
outside the regular workflow it is easy to get lost.</p>

<p>I have two projects where I have the need to pull commits from an upstream
github repo and then push to my own github repo. I kept finding myself with a
detached head after pulling from the upstream repo. I could resolve any
conflicts, commit my changes, and merge them back into HEAD but pulling from
upstream would just result in a detached HEAD again. I went around and around
with this issue until I was ready to cry uncle. I tried resolving this both
through the command line and several Mac Gui git clients.</p>

<p>Fortunately this project contains my files in a couple of isolated directories.
This let me copy those directories out of the repo and then delete the repo and
start over with a fresh clone of the upstream repo and then add my files back
in.</p>

<p>This shows me that I need to spend more time using git or stop trying to do
oddball things with it.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Steve Jobs]]></title>
    <link href="http://matthewhinton.net/blog/2011/10/06/steve-jobs/"/>
    <updated>2011-10-06T08:59:00-05:00</updated>
    <id>http://matthewhinton.net/blog/2011/10/06/steve-jobs</id>
    <content type="html"><![CDATA[<p>As I was sitting on the couch last night I checked Twitter on my iPhone and one
of the first tweets I read said Steve Jobs had passed away. I quickly pulled up
Safari and checked CNN and Steve Jobs passing away was the lead story. I was
greatly saddened by this news. Steve Jobs helped to create the personal computer
as an idea. He drove the entire industry to create better hardware and software
and to make computers more intuitive and easier to use.</p>

<p>My mom bought a version of the Apple II around the time I was starting high
school at the time I didn&#8217;t get into it that much. Since my mom was teacher she
had older model Macs for several years. My first real exposure to a Mac was when
I was working for a publishing company and we used Quark Express on really old
Macs running System 7 as the operating system. By this time in my life I loved
computers of all kinds and was learning everything I could about computers and
operating systems of all types.</p>

<p>It wasn&#8217;t until years later when I was attending college and that I was able to
buy my first Mac. With the release of Mac OS X I had developed a real interest in
Apple. I was studying computer science in college and I wanted a laptop computer
to use for school so I bought a 12&#8221; PowerBook. I loved everything about that
computer the portability, the aluminum enclosure, the joy I got from using it.
From that day forward I primarily used a Mac at home even as I was a Windows
developer at my day job.</p>

<p>A few years after I got my first Mac I bought an iPod Mini. I had a long commute
for years and having my own music in the car made it so much more tolerable.
When the iPhone 3G came out I bought one and fell in love it. I had a hand held
computer straight out of science fiction that just blew my mind. When the iPhone
4 came out I upgraded from my 3G and bought my wife one as well. The products
Steve Jobs designed have made our lives better and I think that is what Steve
was always trying to do.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Going to WindyCityRails]]></title>
    <link href="http://matthewhinton.net/blog/2011/09/13/going-to-windycityrails/"/>
    <updated>2011-09-13T09:25:00-05:00</updated>
    <id>http://matthewhinton.net/blog/2011/09/13/going-to-windycityrails</id>
    <content type="html"><![CDATA[<p>I will be going to my first real tech conference this weekend when I attend the
WindyCityRails conference in Chicago. I have wanted to attend WindyCityRails for
several years but I couldn&#8217;t really justify it when I was working as a .Net
developer. Now that I am actively employed as a Rails developer I am really
excited to go and meet other Rails developers and attend the conference sessions.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Blog Design Improvements]]></title>
    <link href="http://matthewhinton.net/blog/2011/09/07/blog-design-improvements/"/>
    <updated>2011-09-07T13:47:00-05:00</updated>
    <id>http://matthewhinton.net/blog/2011/09/07/blog-design-improvements</id>
    <content type="html"><![CDATA[<p>I finally got around to make some improvements to the colors Octopress uses by
default. I went with a much lighter color palate because I couldn&#8217;t stand the
default Octopress colors.</p>

<p>I tweaked some of the styles as well. I moved the post date to the right of the
post title so it doesn&#8217;t take up as much room vertically and flows with the post
a little better. I tightened up the spacing between posts and paragraphs as well
as shrinking some of the font sizes in order to give the design a tighter feel.</p>

<p>I wish a designer would pitch in a little time and come up with an actually
attractive default design for Octopress. I think that would make using it more
appealing to those of us who are design challenged.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Upgraded to Octopress]]></title>
    <link href="http://matthewhinton.net/blog/2011/08/11/upgraded-to-octopress/"/>
    <updated>2011-08-11T10:22:00-05:00</updated>
    <id>http://matthewhinton.net/blog/2011/08/11/upgraded-to-octopress</id>
    <content type="html"><![CDATA[<p>I recently considered changing the static blog generator I was using from Jekyll
to something like nanoc that is better maintained and has better documentation.
As I was mulling over whether I wanted to do that I saw the release of Octopress
version 2.0 which is based on Jekyll. Octopress adds a default theme and rake
tasks to help automate various tasks. Octopress also includes plugins for
twitter and pinboard along with extensive documentation which is something that
Jekyll was missing.</p>

<p>I decided it would be the least amount of work to move my posts into Octopress
rather than migrating to a different platform so that is what I have done. I
have been pretty happy so far. My next task will be to start modifying the
layout to be something I like better as I have never liked any blog engine&#8217;s
default theme so things may look a little wonky as I make changes.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Octopress Test Post]]></title>
    <link href="http://matthewhinton.net/blog/2011/08/03/octopress-test-post/"/>
    <updated>2011-08-03T14:21:00-05:00</updated>
    <id>http://matthewhinton.net/blog/2011/08/03/octopress-test-post</id>
    <content type="html"><![CDATA[<p>This is a first post to test Octopress.</p>

<figure class='code'><figcaption><span>- ruby </span></figcaption>
<div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>puts "Awesome!" unless lame</span></code></pre></td></tr></table></div></figure>




<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'><span class="k">class</span> <span class="nc">Fixnum</span>
</span><span class='line'>  <span class="k">def</span> <span class="nf">prime?</span>
</span><span class='line'>    <span class="p">(</span><span class="s1">&#39;1&#39;</span> <span class="o">*</span> <span class="nb">self</span><span class="p">)</span> <span class="o">!~</span> <span class="sr">/^1?*|^(11+?)\1+$/</span>
</span><span class='line'>  <span class="k">end</span>
</span><span class='line'><span class="k">end</span>
</span></code></pre></td></tr></table></div></figure>



]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Google+]]></title>
    <link href="http://matthewhinton.net/blog/2011/06/30/google-plus/"/>
    <updated>2011-06-30T00:00:00-05:00</updated>
    <id>http://matthewhinton.net/blog/2011/06/30/google-plus</id>
    <content type="html"><![CDATA[<p>Google introduced their Facebook competitor this week called Google+. I was
lucky enough to snag an invitation via an acquaintance on twitter. I then sent
out a few invitations of my own and started playing with it. Google is going
right at one of Facebook&#8217;s big weaknesses with the Circles feature that allows
you manage your social graph relationships which Facebook doesn&#8217;t easily allow
you to do. On Google+ you can keep your coworkers, family, and friends easily
separate and not inadvertently over share information.</p>

<p>One the core features of Google+ that I find interesting is how they have
leveraged their search technology to create a kind of dynamic saved search they
call Sparks. I think Sparks is really cool. I created a Ruby on Rails spark and
when I click on it I get job postings, news articles, videos, and blog posts.</p>

<p>I haven&#8217;t had a chance to upload photos yet to try out that feature or the
Hangout video conferencing/chat feature.</p>

<p>Google&#8217;s implementation of notifications is very slick and I believe web
and I like it a lot.</p>

<p>I don&#8217;t use an Android phone so I will have to wait awhile until Google releases
an iOS application but I am looking forward to being able to use it on my phone.</p>

<p>I also took this opportunity to add google&#8217;s +1 button to my posts on this blog.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Mac RSS Readers]]></title>
    <link href="http://matthewhinton.net/blog/2011/06/14/mac-rss-readers/"/>
    <updated>2011-06-14T00:00:00-05:00</updated>
    <id>http://matthewhinton.net/blog/2011/06/14/mac-rss-readers</id>
    <content type="html"><![CDATA[<p>Years ago before I bought my first Mac when blogs were just starting to be a
thing on the internet I was facinated by all the new content that was appearing.
I bookmarked any site I found interesting and then proceeded to methodically
visit every site whenever I sat down at the computer to see if anything new had
been posted. This was not a very efficient use of time but there was no better
way to check for new content at the time. Some smart people recognized this way
of searching for new content was a mess and invented the RSS content format and
not long after that one of the first RSS readers was released NetNewsWire for
the Mac. As a Windows user at the time I wanted an RSS reader as good as
NetNewsWire.</p>

<p>When I eventually bought a PowerBook laptop one of the first things
I bought was NetNewsWire and I have been using it practically every day since 2003.
I have been a big fan of NNW for years and years. NNW was created and developed
by <a href="http://inessential.com/">Brent Simmons</a> first as an indie developer then as
part of NewsGator when it bought NNW. However NNW now has a new home, Brent left
NewsGator to start a new company and before he left he conviced NewsGator to
pass off NNW to a new company <a href="http://blackpixel.com/">Black Pixel</a>. I have used
NNW as a client to Google Reader for years and while there have been some issues
with syncing between NNW and Google Reader I guess it just never bothered me
enough to even complain about it.</p>

<p>With NNW changing hands and the release of the Reeder RSS reader in the Mac
store I decided to try something new. I have used the Reeder iOS app on my
iPhone for a while but I don&#8217;t actually read RSS that much on my phone. I like
the iPhone Reeder app better than the NNW iPhone app. The Mac OS version of
Reeder is only $10 so I thought I would give it a try. So far I like it as a
stripped down RSS reader. The UI is very attractive and it looks like it&#8217;s ready
to be a part of the next Mac OS X version Lion already.</p>

<p>I do have a few quibbles so far with Reeder. Although it&#8217;s UI is very nice it&#8217;s
pretty opaque the toolbar buttons have give you no textual reference as to what
they do stand for. As someone who has so much ingrained muscle memory from having
used NNW for so long getting used to a completely new set of keyboard shortcuts is
a bit of a pain. Reeder also has a tendency to get a little hung up when I try
and quickly select the next unread item when the current item is large or
contains pictures or video. I know part of Reeder&#8217;s aesthetic is that the reading
pane is styled very minimally but I miss NNW custom styles and I hope Reeder
adds that capability in the future.</p>

<p>I will probably continue to use Reeder for the short term until I see what Black
Pixel has in mind for the next version of NNW. For basic RSS reading I think
Reeder is a pretty good application however I am hoping the next version of NNW
continues it&#8217;s tradition of being one of the best applications on the Mac
platform.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Last Day of Grade School]]></title>
    <link href="http://matthewhinton.net/blog/2011/06/02/last-day-of-grade-school/"/>
    <updated>2011-06-02T00:00:00-05:00</updated>
    <id>http://matthewhinton.net/blog/2011/06/02/last-day-of-grade-school</id>
    <content type="html"><![CDATA[<p>Today is the last day of grade school for my son. My wife went over to the
school to have lunch with him today and she said she is sadder than she expected
to be. I am not really sad about it now but I think I will feel more
apprehensive in the Fall when he starts middle school. I am looking forward to
this summer and spending time with my son while he is still our little boy.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Chicago Code Camp 2011]]></title>
    <link href="http://matthewhinton.net/blog/2011/05/18/chicago-code-camp/"/>
    <updated>2011-05-18T00:00:00-05:00</updated>
    <id>http://matthewhinton.net/blog/2011/05/18/chicago-code-camp</id>
    <content type="html"><![CDATA[<p>I attended the third <strong>Chicago Code Camp</strong> last Saturday. I haven&#8217;t been able
to attend a technical conference before but I have been interested in
attending one for years. A couple of months ago I saw Chicago Code Camp
mentioned on Twitter and I looked into it. Chicago Code Camp is a free
technical conference with a wide variety of speakers that was held in the
Northern Chicago Suburb of Greyslake. Since there was no cost to go to the
conference I signed up.</p>

<p>I decided I would take a day off work and drive up the day before the
conference. I used to live and work right by the Woodfield Mall in
Schaumburg so I stopped off there and got lunch at Portillos. I stopped in
at the bookstore and saw a movie. The unpredictable Midwestern weather
caught me though as I had only packed clothes for warm weather and it was
fifty-five degrees and blowing rain when I got out of the movie. I ducked
into the mall and bought a pair of pants then I went down to the Apple
store and played around with the new machines for a while. I really wish
downstate Illinois would get an actual Apple store rather than just the
display table in the Best Buy. After my afternoon of goofing around I drove
up to Mundelein to check into my hotel.</p>

<p>I had a nice evening at the Double Tree I was staying at however I don&#8217;t
sleep well in strange rooms so I was up early and ready to go early
Saturday morning. I drove the rest of the way up to Grayslake Community
College for the conference. I was one of the first people there and I ended
up standing around for forty-five minutes as the organizers got ready to
check people in.</p>

<p>The organizers of the conference had setup a very nice mobile version of
the code camp web site and I had preloaded it onto my phone in case there
was no wireless internet or 3G service in the college. However the wifi was
pretty good and I never had a problem using it. The mobile version of the
site let me flag the presentations I wanted to see so I knew which room I
wanted to look for for each presentation. I had some time to kill before
the first presentation time so I ended up talking to another attendee who
was local and lived two minutes from where I had stayed in Mundelein.</p>

<p>When the first session time was approaching I found the room it was being
held in and it was getting pretty crowded fast. I got a nice seat in the
front row for Michael Eaton&#8217;s (<a href="http://www.twitter.com/mjeaton">@mjeaton</a>)
presentation <strong>Going Indy 101</strong>. I really enjoyed Michael&#8217;s presentation it was
worth the day off and the trip to Code Camp. Michael&#8217;s presentation covered
networking, insurance, lawyers, accountants, making contacts and priming
your work pipeline. Here are my notes from the session.</p>

<ul>
<li>Networking &rarr; go to things like code camps, make contacts with
vendors (Microsoft), if you work with a headhunter let them know what
kind of work you are looking for such as having to work at least partially
remote, contact local business groups such as the chamber of commerce</li>
<li>Insurance &rarr; carry Errors and Omissions insurance in order to
protect yourself</li>
<li>Lawyer &rarr; having a lawyer will make you money, have a contract
designed that allows you to subcontract and allows either side to walk
away with 14 days notice</li>
<li>Accountant &rarr; you need to have one do your taxes</li>
<li>Make contacts &rarr; it is very helpful to be able to share your
experiences and concerns with others doing the same type of work</li>
<li>Work Pipeline &rarr; you need to have your time booked in October for the
end of the year and preferably the beginning of the next year</li>
</ul>


<p>Although I have only ever done a small amount of contract work if I need to
in the future I will be referring back to my notes from this session.</p>

<p>The second session I attended was the <strong>Git More Done</strong> session which was given
by Keith Dahlby (http://solutionizing.net/). This session started off
humorously because he bashed the really poor version control systems some
people where stuck using at their jobs such as TFS. Unfortunately the rest
of the session went by really fast and I didn&#8217;t feel like much of it stuck
with me. I did learn more about <code>git rebase</code>, <code>git reflog</code>, and <code>git
bisect</code> so I got a little extra knowledge out of this session.</p>

<p>After the two sessions it was lunch time and we all went downstairs and got
in line. The Code Camp was providing a box lunch that was a decent deli
sandwich, chips, applesauce, a cookie, and a drink. I sat with a couple of
guys who both worked for small insurance companies doing .Net development
and working environments that sounded like they were being forced to use
technologies that are more complex than need be to solve the business problems
they were trying to address.</p>

<p>After lunch I was off to the <strong>Onion Architecture with MVC</strong> talk by
<a href="http://www.matthidinger.com/archive/2011/05/17/Onion-Architecture-code-and-slides-from-Chicago-Code-Camp.aspx">Matt Hidinger</a>
This talk I found very interesting since I have experience developing a
site from the ground up using the ASP.NET MVC technology. The speaker was
advocating for an architecture that defines interfaces in a lower layer and
implementations in a higher layer. I found it an interesting practice but
it seems like it would be a bit frustrating to actually work with. I think
a little discipline and using some commonsense conventions along with an IoC
container could achieve the same things he was advocating.</p>

<p>The fourth session I attended was Micah Martin&#8217;s (@slagyr) <strong>Clojure; It&#8217;s the
new Ruby</strong> talk. Micah&#8217;s talk was the most entertaining one of the day. Micah
is <a href="http://www.objectmentor.com/omTeam/martin_r.html">&#8220;Uncle&#8221; Bob Martin&#8217;s</a>
son and his presentation covered how he created the
<a href="http://www.cleancoders.com">cleancoders.com</a> website in Clojure with his
dad and ran it off of Google&#8217;s App Engine platform. Micah wrote a library
for Clojure to interact with Google App Engine called
<a href="https://github.com/slagyr/gaeshi">gaeshi</a>.</p>

<p>I have had a passing interest in Clojure since it&#8217;s a LISP implementation
that runs on the JVM. I don&#8217;t have much experience with LISP other than a
year or two via Emacs customization. However if I needed to run a program
on the server to crunch some numbers and I wanted access to some Java code
I would definitely consider Clojure. One of the interesting parts of the
talk was when someone asked who is using Clojure and Micah mentioned
Groupon and one of the senior engineers at Groupon was sitting in the back
of the class and he described how they are using Clojure to analyse
purchases and look for fraud. The Groupon engineer said they had run tests
on several languages to see which would be appropriate for that project and
found Clojure to be 13x faster than python.</p>

<p>The last session of my day I had previously decided to go to a DI/IoC talk
and then I changed my mind at the last minute and went to
<a href="https://github.com/thegrubbsian">JC Grubbs</a> <strong>Introduction to mongoDB</strong>. This
presentation was not great I don&#8217;t think he spent enough time introducing
mongoDB and going over why you would choose it over a relational database.
He ended up spending a lot of time talking about sharding which I would
consider an advanced topic.</p>

<p>After all the sessions where done there was one last bit of the Code Camp
where they raffled off a bunch of technical books, some .Net tools, and a
couple of high end XBox packages. I ended up having my name drawn for an
O&#8217;Reilly ebook of my choice which aside from one of the XBox&#8217;s was my next
choice. I drove to the closest Portillos and had dinner and picked up an
extra Chicago style hot dog for my wife since she hasn&#8217;t had one in a long
time.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[RSpec Database Cleanup]]></title>
    <link href="http://matthewhinton.net/blog/2011/05/16/rspec-database-cleanup/"/>
    <updated>2011-05-16T00:00:00-05:00</updated>
    <id>http://matthewhinton.net/blog/2011/05/16/rspec-database-cleanup</id>
    <content type="html"><![CDATA[<p>Well I was trying to setup some basic testing for a new model today and the
first thing I ran into was a test that would only work once. I am using
factory_girl to setup test objects and RSpec as my test framework. I wanted
to create 2 model instances in a <code>before :all</code> and then run assertions. I
wasn&#8217;t getting out of the <code>before :all</code> setup block because there were
existing records in the database. RSpec is set to use transactional
fixtures by default so it should cleanup the database state before every
test. However according to this question on stackoverflow
<a href="http://stackoverflow.com/questions/3333743/factory-girl-rspec-doesnt-seem-to-roll-back-changes-after-each-example">rspec doesn&#8217;t seem to roll back changes</a>
if you are setting up data in a <code>before :all</code> you have to cleanup after
yourself in an <code>after :all</code>. This was a real pain to discover and much harder
than it should have been so I am putting it here in an attempt to make it
more discoverable.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Family Health]]></title>
    <link href="http://matthewhinton.net/blog/2011/05/02/family-health/"/>
    <updated>2011-05-02T00:00:00-05:00</updated>
    <id>http://matthewhinton.net/blog/2011/05/02/family-health</id>
    <content type="html"><![CDATA[<p>My family had a scare last month when my father had a health issue that
totally hit us out of the blue. My father was loosing control of his legs.
My mom and brother were able to get my father to the emergency room
at the hospital of the small town he lives in. They did some tests and
arranged for him to sent to the larger and better equipped hospital 30 miles
away. My mom called me from the hospital and said they were taking my dad
for an MRI. At midnight mom called me and said they were going to do surgery on
my dad and I should come to the hospital. I drove over to the hospital and
sat with my mom until 4:15 am when the doctor came to talk to us about the
surgery. My dad had a small tumor next to his spine that was bleeding and
impacting the spinal cord. The doctor removed and he was cautiously
optimistic that my dad would make a full recovery.</p>

<p>My dad spent a few days in the hospital and then he was moved to the
nursing home in his home town because it has a good physical therapist. My
dad is very slowly regaining movement in his legs and we are hoping for the
best.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Jekyll Render Archives Tag Plugin]]></title>
    <link href="http://matthewhinton.net/blog/2011/04/07/jekyll-archives-tag-plugin/"/>
    <updated>2011-04-07T00:00:00-05:00</updated>
    <id>http://matthewhinton.net/blog/2011/04/07/jekyll-archives-tag-plugin</id>
    <content type="html"><![CDATA[<p>I wanted to customize the layout of my archives page and looking around at
other Jekyll blogs I saw that most of them were just using a list of posts
for archives. There are Jekyll archives plugins that give you archive pages
by category or tag but that was not what I was looking for so I decided to
roll my own.</p>

<p>I give you the
<a href="https://github.com/mhinton/Jekyll-Archive-Tag-Plugin">Jekyll Render Archives Tag Plugin</a>.
You can see it in action here on my blog by following the archives link at
the top of the page.</p>

<p>It took me a little while to get the hang of what was going on because
there aren&#8217;t really any how to write a Jekyll plugin resources out there.
So the code for this plugin may not be the most elegant anyone has ever
seen but it does what I wanted it to and so I thought I would make it
available to anyone else looking to do so something similar.</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
<span class='line-number'>18</span>
<span class='line-number'>19</span>
<span class='line-number'>20</span>
<span class='line-number'>21</span>
<span class='line-number'>22</span>
<span class='line-number'>23</span>
<span class='line-number'>24</span>
<span class='line-number'>25</span>
<span class='line-number'>26</span>
<span class='line-number'>27</span>
<span class='line-number'>28</span>
<span class='line-number'>29</span>
<span class='line-number'>30</span>
<span class='line-number'>31</span>
<span class='line-number'>32</span>
<span class='line-number'>33</span>
<span class='line-number'>34</span>
<span class='line-number'>35</span>
<span class='line-number'>36</span>
<span class='line-number'>37</span>
<span class='line-number'>38</span>
<span class='line-number'>39</span>
<span class='line-number'>40</span>
<span class='line-number'>41</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'><span class="k">module</span> <span class="nn">Jekyll</span>
</span><span class='line'>  <span class="k">class</span> <span class="nc">RenderArchivesTag</span> <span class="o">&lt;</span> <span class="no">Liquid</span><span class="o">::</span><span class="no">Tag</span>
</span><span class='line'>    <span class="k">def</span> <span class="nf">initialize</span><span class="p">(</span><span class="n">tag_name</span><span class="p">,</span> <span class="n">text</span><span class="p">,</span> <span class="n">tokens</span><span class="p">)</span>
</span><span class='line'>      <span class="k">super</span>
</span><span class='line'>    <span class="k">end</span>
</span><span class='line'>
</span><span class='line'>    <span class="k">def</span> <span class="nf">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span>
</span><span class='line'>      <span class="n">posts</span> <span class="o">=</span> <span class="n">context</span><span class="o">.</span><span class="n">registers</span><span class="o">[</span><span class="ss">:site</span><span class="o">].</span><span class="n">posts</span>
</span><span class='line'>      <span class="n">posts</span><span class="o">.</span><span class="n">sort!</span>
</span><span class='line'>      <span class="vi">@collated_posts</span> <span class="o">=</span> <span class="p">{}</span>
</span><span class='line'>      <span class="n">posts</span><span class="o">.</span><span class="n">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">post</span><span class="o">|</span>
</span><span class='line'>        <span class="vi">@collated_posts</span><span class="o">[</span><span class="n">post</span><span class="o">.</span><span class="n">date</span><span class="o">.</span><span class="n">year</span><span class="o">]</span> <span class="o">||=</span> <span class="o">[]</span>
</span><span class='line'>        <span class="vi">@collated_posts</span><span class="o">[</span><span class="n">post</span><span class="o">.</span><span class="n">date</span><span class="o">.</span><span class="n">year</span><span class="o">][</span><span class="n">post</span><span class="o">.</span><span class="n">date</span><span class="o">.</span><span class="n">month</span><span class="o">]</span> <span class="o">||=</span> <span class="o">[]</span>
</span><span class='line'>        <span class="vi">@collated_posts</span><span class="o">[</span><span class="n">post</span><span class="o">.</span><span class="n">date</span><span class="o">.</span><span class="n">year</span><span class="o">][</span><span class="n">post</span><span class="o">.</span><span class="n">date</span><span class="o">.</span><span class="n">month</span><span class="o">]</span> <span class="o">&lt;&lt;</span> <span class="n">post</span>
</span><span class='line'>      <span class="k">end</span>
</span><span class='line'>
</span><span class='line'>      <span class="n">output</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
</span><span class='line'>      <span class="vi">@collated_posts</span><span class="o">.</span><span class="n">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">k</span><span class="p">,</span><span class="n">v</span><span class="o">|</span>
</span><span class='line'>        <span class="n">output</span> <span class="o">+=</span> <span class="s2">&quot;&lt;div class=&#39;archive_year&#39;&gt;</span><span class="si">#{</span><span class="n">k</span><span class="si">}</span><span class="s2">&lt;/div&gt;&quot;</span>
</span><span class='line'>        <span class="n">months</span> <span class="o">=</span> <span class="n">v</span><span class="o">.</span><span class="n">reverse</span>
</span><span class='line'>        <span class="n">months</span><span class="o">.</span><span class="n">each_with_index</span> <span class="k">do</span> <span class="o">|</span><span class="n">m</span><span class="p">,</span> <span class="n">idx</span><span class="o">|</span>
</span><span class='line'>          <span class="k">unless</span> <span class="n">m</span><span class="o">.</span><span class="n">nil?</span>
</span><span class='line'>            <span class="n">posts</span> <span class="o">=</span> <span class="n">m</span><span class="o">.</span><span class="n">reverse</span>
</span><span class='line'>            <span class="n">output</span> <span class="o">+=</span> <span class="s2">&quot;&lt;div class=&#39;archive_month&#39;&gt;</span><span class="si">#{</span><span class="no">Date</span><span class="o">::</span><span class="no">MONTHNAMES</span><span class="o">[</span><span class="n">posts</span><span class="o">[</span><span class="mi">0</span><span class="o">].</span><span class="n">date</span><span class="o">.</span><span class="n">month</span><span class="o">]</span><span class="si">}</span><span class="s2">&lt;/div&gt;&quot;</span>
</span><span class='line'>            <span class="n">posts</span><span class="o">.</span><span class="n">each</span> <span class="k">do</span> <span class="o">|</span><span class="nb">p</span><span class="o">|</span>
</span><span class='line'>              <span class="n">output</span> <span class="o">+=</span> <span class="s2">&quot;&lt;ul&gt;&quot;</span>
</span><span class='line'>              <span class="n">output</span> <span class="o">+=</span> <span class="s2">&quot;&lt;li class=&#39;archive_title&#39;&gt;&quot;</span>
</span><span class='line'>              <span class="n">output</span> <span class="o">+=</span> <span class="s2">&quot;&lt;span class=&#39;archive_day&#39;&gt;</span><span class="si">#{</span><span class="nb">p</span><span class="o">.</span><span class="n">date</span><span class="o">.</span><span class="n">day</span><span class="o">.</span><span class="n">to_s</span><span class="si">}</span><span class="s2">&lt;/span&gt;&quot;</span>
</span><span class='line'>              <span class="n">output</span> <span class="o">+=</span> <span class="s2">&quot; &lt;a href=&#39;</span><span class="si">#{</span><span class="nb">p</span><span class="o">.</span><span class="n">url</span><span class="si">}</span><span class="s2">&#39;&gt;</span><span class="si">#{</span><span class="nb">p</span><span class="o">.</span><span class="n">data</span><span class="o">[</span><span class="s2">&quot;title&quot;</span><span class="o">]</span><span class="si">}</span><span class="s2">&lt;/a&gt;&lt;/li&gt;&quot;</span>
</span><span class='line'>              <span class="n">output</span> <span class="o">+=</span> <span class="s2">&quot;&lt;/ul&gt;&quot;</span>
</span><span class='line'>            <span class="k">end</span>
</span><span class='line'>          <span class="k">end</span>
</span><span class='line'>        <span class="k">end</span>
</span><span class='line'>      <span class="k">end</span>
</span><span class='line'>      <span class="k">return</span> <span class="n">output</span>
</span><span class='line'>    <span class="k">end</span>
</span><span class='line'>
</span><span class='line'>  <span class="k">end</span>
</span><span class='line'><span class="k">end</span>
</span><span class='line'>
</span><span class='line'><span class="no">Liquid</span><span class="o">::</span><span class="no">Template</span><span class="o">.</span><span class="n">register_tag</span><span class="p">(</span><span class="s1">&#39;render_archives&#39;</span><span class="p">,</span> <span class="no">Jekyll</span><span class="o">::</span><span class="no">RenderArchivesTag</span><span class="p">)</span>
</span></code></pre></td></tr></table></div></figure>



]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[First Game of Catch]]></title>
    <link href="http://matthewhinton.net/blog/2011/03/22/first-game-of-catch/"/>
    <updated>2011-03-22T00:00:00-05:00</updated>
    <id>http://matthewhinton.net/blog/2011/03/22/first-game-of-catch</id>
    <content type="html"><![CDATA[<p>Yesterday was one of the nicest days of the year so far weather wise, it
was great. When I got the kids home we went into the backyard and enjoyed
the weather. My daughter is old enough to play t-ball this year so we
played our first game of catch with a ball and glove. My daughter is a
little to fearless so I was trying to get her to not run straight into the
ball so she didn&#8217;t get hit in the head. I was fairly encouraged that she
was excited and trying to catch and throw for a while. However she is only
four so it wasn&#8217;t long before we were just running in circles in the
backyard and laughing. The weather is supposed to cool back down to average
March temps later this week and we are going to be bummed because we are
all so ready for Spring.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Ringling Bros. Circus]]></title>
    <link href="http://matthewhinton.net/blog/2011/03/21/ringling-bro-circus/"/>
    <updated>2011-03-21T00:00:00-05:00</updated>
    <id>http://matthewhinton.net/blog/2011/03/21/ringling-bro-circus</id>
    <content type="html"><![CDATA[<p>I had never been to the circus before and when I saw that Ringling Brothers
was coming to the Champaign Assembly Hall I thought the kids and I would
get a kick out it. I bought four tickets as soon as they were available and
we ended up with some pretty good seats really close to action. The show
included magic tricks, tumblers, dogs and cats performing tricks, acrobats,
lions and performing elephants. My son and I really enjoyed the show while
my daughter was not really engaged.</p>

<p>I enjoyed the magic and the Asian tumblers who jumped through a burning
ring. My wife remarked the lions just looked kind of pitiful and she was
right. The elephants seemed to be in much better shape.</p>

<p>It seemed like the circus company was making most of their money on
concessions and cheap plastic toys of which purchased. I probably paid half
as much as the four tickets cost for popcorn/cotton candy and a toy for
each of the kids. It still made for a fun day out with the family.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Japanese Red Cross Donation]]></title>
    <link href="http://matthewhinton.net/blog/2011/03/16/japanese-red-cross/"/>
    <updated>2011-03-16T00:00:00-05:00</updated>
    <id>http://matthewhinton.net/blog/2011/03/16/japanese-red-cross</id>
    <content type="html"><![CDATA[<p>My family and I were watching the evening news the other day and we like
many other people were stunned by the video of the devastation in northern
Japan. The earthquake was bad enough but the real mess was caused by the
resulting tsunami that swept inland and left many towns destroyed. As the
situation unfolds with the Japanese nuclear plants we are all keeping our
fingers crossed that no further disasters befall the people of Japan.
Apple is making it very easy for anyone with an iTunes account to
contribute money to the International Red Cross through iTunes. You can
contribute as little as $5. I contributed through iTunes and it couldn&#8217;t
have been easier.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Gotta Catch 'Em All]]></title>
    <link href="http://matthewhinton.net/blog/2011/03/14/gotta-catch-em-all/"/>
    <updated>2011-03-14T00:00:00-05:00</updated>
    <id>http://matthewhinton.net/blog/2011/03/14/gotta-catch-em-all</id>
    <content type="html"><![CDATA[<p>Toys&#8217;R Us was running a sale last week on Nintendo DS games buy one get one
half off. The new Pokemon games Black and White had come out the same week.
We were having my son&#8217;s birthday parties on Saturday and I was keeping his
little sister occupied until it was time for the parties.  I called the
toy store to see if the sale applied to new releases and the clerk told me
it did so we went over there and I picked the two games.</p>

<p>I had never played a Pokemon game before but I was interested. The chance
to pick up one for half price persuaded me to pick one up. After all the
parties had wound down I brought the games out and gave the one my son
wanted to him and I took the other one. I then ended up spending most of
Sunday playing the game. I can see how kids get sucked into those games
they are a combination of a strategy game and a collectable card game.</p>

<p>Playing a game at the same time as my son is a lot of fun.  We are both
pretty into it. I don&#8217;t think the game would be nearly as much fun if I was
playing by myself. My son who has played several of the previous Pokemon
games is farther along than I am and he keeps trying to give me pointers
and tell me where I should be going. I keep having to tell him &#8220;No
spoilers&#8221;.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Kindle Love]]></title>
    <link href="http://matthewhinton.net/blog/2011/03/09/kindle/"/>
    <updated>2011-03-09T00:00:00-06:00</updated>
    <id>http://matthewhinton.net/blog/2011/03/09/kindle</id>
    <content type="html"><![CDATA[<p>I got a Amazon Kindle ebook reader for Christmas last year and I have come
to love it. I love to read and I have been buying books since I was
fourteen years old. I think a printed book is just about perfect. However I
am starting drown under the mountain of books I have. When Amazon announced
the Kindle 3 with it&#8217;s much better eink screen I started considering a new
way to consume books.</p>

<p>I put authors on two levels those whose books I buy immediately and I will
always treasure and those who I enjoy but probably won&#8217;t read again. I
decided in order to not be buried under books I could use a Kindle for
reading books I don&#8217;t have to have in print. This has worked very well for
me so far. The Kindle version of a book is usually discounted at least a
dollar or two and it is very convenient to get a book delivered to the
Kindle as soon as I decide to buy it.</p>

<p>A few other nice perks of using the Kindle are sending articles from the
web to the Kindle to read. I found a Google Chrome browser plugin <a href="https://chrome.google.com/webstore/detail/ipkfnchcgalnafehpglfbommidgmalan">Send to
Kindle</a>
that does just that. You can also setup the website
<a href="http://www.instapaper.com">Instapaper</a> to send a digest of web pages you
have saved to your Kindle each week. These features make the Kindle a
device I have quickly come to love almost as much as an Apple product.</p>

<p>I am stilling buying physical books from my favorite authors and I will
continue to do so as long as it is feasible. I also buy physical copies of
computer books because I like to use them as reference material. All in all
I am enjoying the Kindle even more than I thought I would.</p>
]]></content>
  </entry>
  
</feed>

