Todd Grooms

Tommy Boy

Floating point equality is hard when you don’t think about it.


You Know You're not Really Peter Pan, Don't You?

A screenshot from the film Hook, where Dustin Hoffman has Robin Williams pinned down, while Hoffman is sharpening his hook on a grinder.

This is only a dream. When you wake up, you’ll just be Peter Banning - a cold, selfish man who drinks too much, is obsessed with success, and runs and hides from his wife and children!


🔗 The long arrow operator in C++

I’ve always enjoyed a step into the absurd. This long arrow operator fits the bill.

Now, before we continue, you should realize that this post is not a serious one.

This also introduced me to the left arrow and the WTF operator.


🔗 Replacing My Kid’s College Fund with a “Start Something” Fund

I understand wanting to provide opportunities to your kids, but this feels misguided. I think providing options is the most important thing one can do for their children. Max may not be like me, and that’s okay. Actually, that’s better than okay; it’s great.

This culture of entrepreneurship is good in small doses, but it’s hardly the silver bullet that people want it to be.

Having said that, the author’a idea is an interesting one. I just find it to be a bit shortsighted.


🔗 NBA Jam Oral History

I loved playing NBA Jam. I remember getting royally pissed at the “rubber-banding system” when I was a kid. It was entertaining to read the developers' story.


Friday nights are for movies and pizza. 🍕


Father's Day

I had the good fortune of watching Cars 3 today with the reason I’m able to celebrate Father’s Day. Max had been looking forward to this day for the past week. We talked about how we were going to take him to see this (his second theater experience) and how we would get popcorn (his first popcorn experience). Leading up to today, Max talked about this at least once a day. He was excited.

I reserved tickets a few days in advance just to ensure we had seats (our local theater is fairly small; I didn’t think a Sunday morning showing would be sold out, but when your theater seats about 50 people for the screen it would be showing on, you can never tell). Our showtime was 10:45AM. Easily the earliest showtime I’ve ever been to for a movie at a theater. I can remember staying up for midnight showings on Thursday night releases. Now I’m hitting up brunch specials for Pixar movies.

Before the movie, we went out and had breakfast. We shared a smorgasbord of scrambled eggs, bacon, hash browns, and hot cakes. Max was a bit restless leading up to the food being served. Fortunately, there was a coloring book with crayons at the restaurant. Unfortunately, Max didn’t want to color, but insisted that I color the picture so that he could watch. The juxtaposition of this meal to popcorn at the theater was definitely something I had yet to experience (even for a man who loves brinner).

Cars was the first Pixar movie that we watched with Max. I feel like there is a lot of dislike towards Cars out there (maybe this is a byproduct of Cars 2). It also feels like hating on Pixar these days is as about as fashionable as hating on Eagles. I am not one of those people. Maybe my tastes are unrefined and I’m easy to please, but I’ve enjoyed every Pixar movie I’ve seen. I even enjoyed Cars 2. It’s not my favorite, but it amused me and gave me a few dad joke chuckles. I felt that Cars 3 is better than Cars 2. Maybe not as good as Cars, but it’s still pretty good (except for the fact that Chick Hicks wasn’t voiced by Michael Keaton and that nearly ruined the movie for me). However, my enjoyment of the film may be skewed by the fact that Max seemed to have thoroughly enjoyed the movie.

After the movie, Max was ready to get up and leave before we could stick around for the end of the credits. Alas, I do not know if there is anything special after the credits of Cars 3 (I assume there is, but I did not get to see it). We walked into the lobby and Max looked up at me and said, “I want to race”. So I did what any responsible father would do: we raced. Once we got outside, he held my hand and we raced to the car. Making car noises the entire time. It was a pretty special moment.


I’m now attempting to alter the Python script to prefix the posts with the proper yaml metadata. 🐍


This is a test! Just a trial balloon. 🎈


I’m kind of infatuated with micro.blog. The idea of “micro” blogging is right up my alley (with my limited time and attention to a full fledged site). So much so, that I’m not starting a new feed for these types of posts.


That's a Hell of an Old Hound Dog You Got There

The Royal Tenenbaums

What’s he go by?

On January 18th, 2017, I made one of the hardest decisions I’ve ever made in my life. After a short battle with cancer, Ashley and I decided to put down Buckley. We adopted Buckley in March of 2008. Buckley has been a great companion. He knew all of my fears, anxieties, and secrets. We had many highs together and very few lows. On Wednesday, I quipped that I wish I had many little Buckleys. However, the truth is if I had many Buckleys, then he wouldn’t have been as special. I love him so much and I miss him greatly.


🔗 How I’d Teach Computer Science

I think this is an interesting idea, but it’s a bit short sited. I can’t emphasize this enough, but Computer Science != software development. There is definitely overlap between the two, however, it is certainly possible to have one without the other. I have met many software developers who were excellent at writing software that didn’t know the first thing about the time complexity of a given algorithm. I feel that distilling computer science down to what equates as process training is a disservice to the Computer Science field (says someone with a Masters of Engineering in Computer Engineering and Computer Science).

I do think offering courses with development methodologies in the curriculum is a worthwhile goal for college course work. I’m embarrassed to admit that fresh out of my college course work, I was fairly unfamiliar with source control. I had classes that taught us how to create UML diagrams to map model relationships for our OOD assignments, but I had not learned how to properly use source control, or how to plan a project, or what constitutes a good bug report. Shortly after landing my first job, I felt shame in what I didn’t know. I felt like a failure because I was unfamiliar with some of the technology stack. I felt inadequate around coworkers even though I held the highest degree. I remember being bitter towards my education.

Over time, my bitterness faded. I learned the different methodologies, different languages, and different tools of the trade. These came easy to me with a little patience. I still wish I would have had professors who had pushed us to use some of these tools/methodologies in our projects, but I eventually forgave them. I learned to be proud of my Computer Science background and it eventually set me apart from others in my field. It alone does not make me a better developer, but it’s an extra tool in my toolbox that others may not possess. I think this appreciation for my education has turned me off toward some of the formal education bashing that resides in my profession. There are many developers who tend to negatively view a traditional education. That’s okay. It’s their right. I just want to point out that those things are not equal, but they also don’t have to be mutually exclusive either.


How'd That Get in There?

A few weeks ago, Ashley and I were watching John Oliver’s piece on the state of Puerto Rico’s economy. One of the contributing factors in Puerto Rico’s current state is the limbo in which the territory finds itself. It’s not quite a state and it’s not quite a sovereign nation.

One of the more interesting revelations in the piece is that there were laws passed that hurt Puerto Rico that were buried in a larger bill. This intrigued me. My initial thought was, “Why would congress allow seemingly unrelated proposed laws in a larger bill?” I then immediately thought of all the terrible commits I’ve had in projects where I bury some seemingly innocuous change in a patch for a completely unrelated issue and it comes back to bite me on the ass. Suck.


Prince Rogers Nelson

A picture of the musician Prince

I was generally aware of Prince and some of his music in high school. It wasn’t something that I listened to, but I was aware of his more well known music. At an impressionable time of my life, my brother and I made a playlist of Prince songs. He was much more of a fan than I was and he set me up with a playlist of what he considered to be Prince’s best work. That playlist blew my mind. The CD I burned that playlist to didn’t leave my CD player for months. I listened to it for many hours. I loved the sound. I thought the lyrics were clever and very smart.

I don’t really care if anyone reads this. This is for my own self-therapy. I came across Prince’s work at a very important time in my life and it influenced my musical tastes for the rest of my life. I never met you. I never had the good fortune of seeing one of your shows. I enjoyed your work and it had a huge impact on me. Thank you.


Sleeves

A screenshot of a negative review left for a Nordiques jersey, with a funny quip: “fix the darn sleeves!


Relocated

I recently relocated for a job to the Bay Area. I’m not going to mention the name of the company, but if you’re clever enough you’ll figure it out. This post is not about my job or company. I’m quite happy with both of these things. This post is about my struggles coping with the move to a new location and the stress that has been placed on my family.

Picking up your roots and moving somewhere else is difficult. Now add a wife, a kid, and two dogs. I was fortunate enough to have movers pack up our belongings and our belongings were shipped across the country. Our vehicle was shipped on a trailer. We were able to just hop on a plane and arrive at our new residence. Despite being afforded many luxuries during the move, it’s been very stressful on us. This is the farthest that we have ever been from western Kentucky (where my wife and I grew up). One of the biggest pain points has been food (believe it or not).

Moving somewhere completely new leaves some of your favorite restaurants behind (unless you’re a restaurant chain only connoisseur, in which case I’m sorry for you). I was somewhat prepared for this eventuality as someone I had interviewed with mentioned that being one of his hardest things to overcome. No matter where you live, there are always a few restaurants that are comforting to you. If that restaurant happens to be a chain, you might be in luck (however, you might not: one of my comfort restaurants is Qdoba and the closest Qdoba is a two hour commute), but more often than not you will lose a staple in your diet. With a heavy population of Asian descendants, there are many of what I consider to be Asian style restaurants. I’m largely okay with this, but it’s difficult in finding one that I like, seeing as how I’m accustomed to the fake American/Chinese food commonly found in Kentucky and Tennessee.

Another large stressor has been the cost of living. I tried, in vain, to prepare myself for this. I created a spreadsheet to try to map out our income and our expenses. I knew that my income tax would increase when moving from a state with no state income tax to a state with state income tax. I came up with an estimate based on some information I could find online. My estimate was wrong, by hundreds of dollars per pay period. Take that with the huge increase in housing (again, I wasn’t blind to this) and you have a recipe for stress. I keep updating that spreadsheet and I’m doing all I can to stay on top of our expenses. We’ll be okay, but the cost of living adjustment has been larger than I planned for and it’s something that’s difficult to wrap your head around.

Then you have the small things that just add up: my vehicle’s registration expired the month we moved, finding a daycare for our son, registering our vehicle, applying for a new license (which also happened to be expiring this December). It was nearly overwhelming. Did you know that if you have purchased a vehicle in the same year you move to California that California will demand a payment based on the taxes of that vehicle you purchased? I did not. I suppose this measure is to crack down on people buying vehicles out of state and bringing them in, but for someone who purchased a vehicle in March/April without any intention of moving to California at that time, it was a pain in the ass (and the wallet).

The one thing I didn’t believe I would experience has been the overwhelming amount of homesickness I have had. I’ve never thought of myself as being attached to the area where I was born and raised or the area where I have lived for the past six years. I’m not sure if I miss the places so much as I miss the people (family and friends), but I have found myself wishing to visit or to call more frequently. We FaceTime with family so they can see Max. I feel as though I actually talk to my family more due to our FaceTime schedule. We have allotted days to particular family members so that everyone has a chance to talk to us and see him. It’s not ideal, but it’s the best of a bad situation. Before we left Nashville, I rarely used FaceTime with family members (some of this was just due to the fact that my dad did not have a smartphone and my grandmother did not have a device capable of FaceTime). After we broke the news to them and after the necessary setup, we started to FaceTime with them and it has been a blessing.

This is not meant to be a complete written capture of my feelings over the past few months. This is me, capturing some of my thoughts.


Broke Down

Monday was one of the most difficult days of my life. Monday was our pack and load date with our movers for our upcoming move. Watching as our lives were packed into nondescript boxes was an emotional experience, especially when they were packing my son’s belongings. My irrational thought was that the movers were packing our life away. They were packing our son away.

It’s surreal to equate your life, your being, to the possessions in your house and to see those possessions stacked like malformed Tetris blocks in a trailer, tied down and prepared for a cross country trip. I just wanted to get out of the house. I was supposed to stay on the premises the entire time to answer questions, but I couldn’t really take it. While watching movers efficiently box our belongings, I wanted them to take time to appreciate what they were packing. Didn’t they know how important those things were? Those toys and toddler clothes?

They didn’t know. And they shouldn’t know. And they shouldn’t care. They have a job to do and they were doing it. I’m glad they were doing it. I can’t imagine how difficult it would have been on me packing our belongings. Sure, the physical aspect of it would be trying. But the mental aspect of it would be brutal. I nearly lost it a few times while packing clothes into a suite case.

The truth is, I needed those movers. I couldn’t have moved out our stuff and held it together. As a matter of fact, every time I enter that empty house and I see that our belongings are missing, I break down and I cry. I broke down yesterday when doing the final walkthrough. I broke down this morning when running in to grab a few things. I’m going to break down tomorrow when going in to get our luggage prepared for our flight on Thursday. This is not regret for taking a job and moving to California; I’m looking forward to our time out there and to my new job (which I consider one of my dream jobs). This is the pain of leaving our first home. This is the pain of leaving Max’s home. This is the pain of realizing that Max won’t have a memory of that house.


Email Addresses

I recently read Evan Ratliff’s post, My wife found my email in the Ashley Madison database. I sort of understand where he is coming from here. No, my email address is not in the Ashley Madison database dump (as far as I know and I have not checked). My email address is, however, frequently used by other Todd Groomses around the country. I receive Lexus maintenance reminders for a Todd Grooms in Florida. I’ve received daycare notices for a Todd Grooms in Illinois. I usually attempt to respond to the sender to let them know that my email address does not belong to the person he or she is trying to reach, but this always feels so odd and so pushy on my part. Do I have an obligation to contact someone if the email seems to be important? Are they listing my email address knowingly to avoid spam in their own inboxes?

I believe there was just a misunderstanding and an error made when recording the email address for the Todd Grooms in Illinois. However, the Todd Grooms in Florida must knowingly give out the wrong email address as he frequently signs me up for newsletters from Lamborghini and Ferrari dealerships as well as boat dealerships. The Todd Grooms in Florida is kind of a jerk. Not only am I getting signed up for newsletters that I do not want, but I have to have this guys seemingly deep pockets flaunted in my face.

This also brings up the question: do we really own our email address? When I receive misplaced email, it almost feels as though someone out there is impersonating me. I sort of feel as though a small part of my identity has been taken away from me. I realize that my main contact address is a Gmail address and that at anytime it can be taken away from me, but I that email address has become apart of my identity. I’ve had it since 2005-2006 (it’s been so long ago, I don’t honestly remember). It’s a surreal feeling realizing that someone can essentially impersonate me or possibly represent me in a context that I do not want or am not aware of. It’s silly and, ultimately, trivial, but it’s something that I think about.


Relying On Experience

I’ve recently been pushing for use of pull requests in our workflow at LunarLincoln. I believe code review to be an important aspect of development and I feel that pull requests promote code review with every feature added. This kind of attention to detail isn’t just for open source projects on Github.

My Bad

There is an issue to opening an, ideally, small pull request for every new feature: inevitably, a new feature will rely on a feature that exists in an open pull request that has not been approved yet. What do we do in this situation? Normally, I would just create my new feature branch from the open pull request branch and work away. I did not do that this time. I had not thought that far ahead. After a few commits on my new feature branch, I realized I needed the work from an open pull request branch. So I did the logical thing and merged. I did not include the --no-commit --no-ff. I unintentionally merged code from an open pull request onto my new feature branch. To make matters worse, I edited the merge commit and royally screwed up my feature branch. So much so that later, I was testing my new feature branch after having merged in the approved pull request, the changes from the approved pull request was missing. Yikes.

My Experience

What was I to do? I had never run into this situation before. My first thought was to create a new branch and manually copy over my changes, then open a pull request for this copied branch. This would surely work, but there were a few commits worth of work (about 8) and that seemed tedious.

After pondering for a bit, I did create a new branch. I then used git’s cherry-pick command to bring over the commits from my fubar’d branch and save face. I had never used the cherry-pick function, but I was aware of its existence from the docs and from previous developer given talks at meet ups. While I didn’t have direct experience with it, I was able to use my indirect experience and solve my problem.


Testing An Ios Jekyll Publishing Workflow With Editorial

After seeing An iPad-Only Workflow for Creating Jekyll Posts , I decided to try my own hand at it.

I purchased Editorial and started accruing workflows. I downloaded a New Jekyll Post workflow and made a few adjustments tailored to my site setup (namely asking for whether or not comments should be enabled and asking for tags). Next I found a Publish Jekyll Post workflow for publishing my posts to my Github repo. While these weren’t perfect, I was able to learn how workflows in Editorial are built and I was able to customize these workflows to be more inline with how I work. I had been looking for a way to publish content to my site given my new Jekyll setup and I had been unhappy with what I had found. I had even contemplated writing my own app to accomplish this task (and I still might), but I think I’ll give this a try for now.


2015 Stanley Cup Playoffs

In preparation for the start of the Stanley Cup Playoffs tonight (that’s hockey for you non hockey people), I’ve been doing a bit of research into the Nashville Predators regular season record against the other teams coming out of the west. It’s important to note that of the eight teams in the playoffs out of the west, five of them come from the Central (the Predators' division), leaving three from the Pacific. The first spot goes to Anaheim with 109 points. The eighth spot goes to Calgary with 97 points. The West was so tight this year that only 12 points separate the 1st seed from the 8th seed. This year’s playoff race felt much tighter than last years (but this could be due to my increased interest with the Predators being smack dab in the middle of the race for the Central division crown; after all, perspective is everything).

Once the playoffs were set, I started thinking about how the predators do not match up too well against any possible matchup that they might have. This curiosity led me down the path of looking at their regular season record against potentail foes.

Predators Regular Season Record Against Western Conference Playoff Teams

Team Record
Anaheim 0-3 (1)
St. Louis 3-2 (1)
Chicago 1-3 (1)
Vancouver 2-1 (1)
Minnesota 2-3
Winnipeg 3-2
Calgary 0-3 (1)
*The number in parenthesis denotes a shootout loss, which are special cases and in my opinion come down to chance.*

First Round

The Predators have drawn the Chicago Blackhawks in the first round. Out of the teams from the Central, the Predators only played Chicago four times (versus five times for the other teams). This has to do with the Western Conference having seven teams in each division (whereas the Eastern Conference has eight teams in each division). During the first loss to the Blackhawks, the Predators started their backup goalie, Carter Hutton and only lost 2-1 in OT. This is a pretty good outcome, especially considering the Predators played this game on the backside of a back-to-back (the frontside being played against Winnipeg). The last loss to the Blackhawks ended with shootout (again, I chalk these up to luck and happenstance and I don’t personally find anything interesting in these losses or wins). If we discard those two games, that leaves the Predators with a 1-1 record (both games in Nashville) against the Blackhawks (a 3-2 win and a 1-3 loss). Both of these games had roughly the same number of shots for and shots against. Nashville had power plays in both games and did not convert on any of them. Nashville had to kill off penalties in both games and did not allow a power play goal in either. Rinne was the starter in both of these games for Nashville. The Blackhawks starting goaltender, Corey Crawford, did not start in either of these games.

Looking at the history, this series seems like a toss up. I think the Blackhawks have the edge (ignoring recent results from both teams). It’s hard to say because the last time these two teams met was in December. The last game between Nashville and Chicago was December 29th. That’s a big deal.

Other Interesting Notes

  • The Predators did not tally a win in the regular season against two playoff teams: the 1st place Anaheim Ducks and the 8th place Calgary Flames (both Pacific Division teams).
  • The Predators did not “earn” a shootout victory against any of the Western Conference playoff teams.
  • Out of the eight playoff teams in the west, two teams ended the season with a losing streak: Nashville ended with a 6-game losing streak (3 of which were to playoff bound teams), while Chicago ended the season with a 4-game losing streak (3 of which were to playoff bound teams).

Closing Arguments

This observation means nothing. It will not foretell who will come out on top in this series. I just found it to be an interesting exercise in prepration for the start of the playoffs tonight. Go Preds.


Make My Day

Lonely Planet recently had another featured app in the iOS App Store: Make My Day. This app is near and dear to my heart. Make My Day was one of the two apps that I worked on during my tenure at LP and was the one app that I worked on from start to finish (the other app that I worked on is slated for release later this year).

From what I can recall, this is the first app that I had a major hand in to be featured in the iOS App Store (Slacker may have been featured, but I cannot recall; additionally, I would not classify the involvement I had as “major”). Being featured is very exciting for me. There are many developers for whom this would not matter or for whom this honor has been bestowed upon many times and has now lost its luster. Not me. I am going to enjoy this. It is another milestone in my career.

If you are inclined, I hope you will check out Make My Day.


Saying Goodbye

I have mixed feelings today. I am excited because I am picking up a new (used, but new to me) vehicle, but sad because I am trading in my 2007 Volkswagen Rabbit.

The commute into work was uneventful and somber. I dropped Max off at his daycare a little earlier than normal. I then started the short drive to my office. I tried to savor every gear shift (for my Rabbit is a manual transmission). I reveled in every red light so that I may have the opportunity to accelerate through quick gear changes again. I tried to shift as smoothly as possible. I take pride in my gear shifting and in my opinion, there are only a few things in this world better than a smooth take off and a smooth gear change.

The Rabbit was my first new car. It was love at first sight. I wanted it since the first advertisement I watched when Volkswagen reintroduced the model in 2006. It served as a very dependable vehicle through long commutes to and from college. It was my escape. I could climb in, find winding roads, and focus on the drive, leaving all my worries behind (if only momentarily). I literally bought the thing right off the truck when it arrived at the dealer. I was the only owner. I was the driver for nearly 116k miles. I have logged many miles behind the wheel and many smiles as well.

You may think it is ridiculous to have such an attachment to a vehicle as I have to my Rabbit. I would argue that you would be the ridiculous one for not having an attachment to your vehicle. Your vehicle is an extension of yourself. Depending on the commute you have, you may spend more time in your car than you do awake at home. It may sound as though I am lamenting the loss of an old friend when I speak of my Rabbit. In truth, I am. Instead of suffering the pain of a something I care about being taken away too soon, I get the opportunity to possibly give someone else a modicum of the enjoyment that I have had behind the wheel of my Rabbit. I hope, in someway, that the owner who eventually purchases my Rabbit sees this. Take care of her. Enjoy the ride.

Goodbye friend.

A picture of my Volkswagen Rabbit.


Pressure is a Choice

While listening to Mark Maron’s interview with the Director Richard Linklater on his WTF podcast, Linklater brought up an interesting mantra: “Pressure is a choice.” Linklater heard this from former University of Texas pitcher Huston Street while filming Inning by Inning. In general, the idea is that everything in our lives is a choice. We choose what we focus on each day. If we can focus on the right things, then everything will fall into place. I feel like I need to change my focus onto things in my control and what I feel is important for my goals. It’s easy to get bogged down in the everyday grind and to focus on the wrong things. I do it everyday.


🔗 Increase Defect Detection with Our Code Review Checklist

An interesting piece from Fog Creek regarding their review process.

I found this link on HackerNews and one of the comments on the story caught my eye:

I don’t believe a code reviewer should even have to know about the requirements of the feature/bug, and should focus more on the design/quality vs. whether it works.

I believe this is a fallacy. This is like saying an editor does not have to understand what he or she is reading as long as he or she is focusing on grammar. Should the editor not be able to ensure that the author is getting his or her point across? Should the reviewer not be able to ensure that the code should functions as intended? If the reviewer does not understand what the code is meant to do, how can he or she understand whether or not something such as a conditional is behaving correctly? That a loop ends at the proper step? While the reviewer may not need to know every implementation detail, the reviewer should have at least a working knowledge of what is expected of the product. I can write nonsensical code that does not cover the requirements for a product that is syntactically valid and even clean. Should the reviewer focus more on the design/quality of code? Sure. I just believe the reviewer should know at least what he or she is reviewing.