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.
Chicago Code Camp 2011
I attended the third Chicago Code Camp last Saturday. I haven’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.
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.
I had a nice evening at the Double Tree I was staying at however I don’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.
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.
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’s (@mjeaton) presentation Going Indy 101. I really enjoyed Michael’s presentation it was worth the day off and the trip to Code Camp. Michael’s presentation covered networking, insurance, lawyers, accountants, making contacts and priming your work pipeline. Here are my notes from the session.
- Networking → 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
- Insurance → carry Errors and Omissions insurance in order to protect yourself
- Lawyer → 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
- Accountant → you need to have one do your taxes
- Make contacts → it is very helpful to be able to share your experiences and concerns with others doing the same type of work
- Work Pipeline → you need to have your time booked in October for the end of the year and preferably the beginning of the next year
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.
The second session I attended was the Git More Done 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’t feel like much of it stuck
with me. I did learn more about git rebase, git reflog, and git
bisect so I got a little extra knowledge out of this session.
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.
After lunch I was off to the Onion Architecture with MVC talk by Matt Hidinger 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.
The fourth session I attended was Micah Martin’s (@slagyr) Clojure; It’s the new Ruby talk. Micah’s talk was the most entertaining one of the day. Micah is “Uncle” Bob Martin’s son and his presentation covered how he created the cleancoders.com website in Clojure with his dad and ran it off of Google’s App Engine platform. Micah wrote a library for Clojure to interact with Google App Engine called gaeshi.
I have had a passing interest in Clojure since it’s a LISP implementation that runs on the JVM. I don’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.
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 JC Grubbs Introduction to mongoDB. This presentation was not great I don’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.
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’Reilly ebook of my choice which aside from one of the XBox’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’t had one in a long time.
RSpec Database Cleanup
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 before :all and then run assertions. I
wasn’t getting out of the before :all 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
rspec doesn’t seem to roll back changes
if you are setting up data in a before :all you have to cleanup after
yourself in an after :all. 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.
Family Health
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.
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.
Jekyll Render Archives Tag Plugin
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.
I give you the Jekyll Render Archives Tag Plugin. You can see it in action here on my blog by following the archives link at the top of the page.
It took me a little while to get the hang of what was going on because there aren’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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | |
First Game of Catch
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’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’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.
Ringling Bros. Circus
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.
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.
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.
Japanese Red Cross Donation
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’t have been easier.
Gotta Catch ‘Em All
Toys’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’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.
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.
Playing a game at the same time as my son is a lot of fun. We are both pretty into it. I don’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 “No spoilers”.
Kindle Love
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’s much better eink screen I started considering a new way to consume books.
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’t read again. I decided in order to not be buried under books I could use a Kindle for reading books I don’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.
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 Send to Kindle that does just that. You can also setup the website Instapaper 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.
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.