Rusty Divine

Live, Love, Learn, Teach

Spooky Coincidence?

My 3-year-old son is interested in the difference between being alive and dead, and what it means to be dead. It started with a visit to Morrill Hall – a museum with plenty of bones – where his curiosity was piqued by the Plesiosaur in the floor. It’s a great exhibit of the long neck of that marine reptile under protective glass running the length of the exhibit room so that kids like Rowan can run atop the entire length of the neck.

My wife and I have a science background, so explaining how the dinosaurs lived and died and leading into how all living things eventually die was a natural progression for us; we’re not ones to sugar coat or out right fib, but we try to be careful to present death in a way that is natural and not scary.

On the drive to pre-school today, Rowan was talking about what would happen if his eyes fell out. I think he is tangentially thinking about how skeletons do not have eyes, because he has talked about that before. I had some fun with it and told him it would be rather painful, but I put my hands up to my face and pretended to move my dangling eyes to different places – crossed, or on the side of my head – and we laughed about how funny it would be to see things with eyes that we could reposition.

Although sometimes a little comedy helps, we usually talk about death in a practical way; it happens, but not often and usually not until someone is very old. I like to remind him that his grandmas are around to take care of him, so when he is a “Daddio” we should still be around to take care of his kids.

Rowan does know that my father passed away shortly after Rowan was born. We don’t talk about it much, but we have told him that he died in my mom’s house, which is where Rowan spends a lot of time after she picks him up from pre-school each day and before my wife picks him up after work.

So, I got a voice mail from my mom tonight that something a little strange went on today and she wanted me to give her a call. It was 10pm before I got back to her, but she wanted to know how much we had told Rowan about my father’s death. I told her that we have told him he died in the house, but that was about it; and I think I told him that just once.

Evidently, today Rowan crawled under the kitchen table. He then told my mom that someone had died under there and then some men took him to the cemetery to bury him. He said that he saw some writing under the table, so that’s how he knew someone had been under there.

My mom was spooked out for good reason since that is the room my father died in. So, she crawled under the table to see if there was some paranormal message, but there wasn’t – only a few letters. Rowan wasn’t bothered at all, he just went into another room to play.

After getting some chills down my spine from this story, I put Rowan on speaker phone to hear it from his point of view again. I asked him what he saw under the table and he said he saw the number D and so he thought it was my Daddio who was under the table writing a message when he died. I asked if he saw any one or heard anyone and he said he didn’t, that the man must have already been taken to the cemetery.

My mom then crawled under the table again and saw the letters E and B, or maybe the number 3. They were marks from the construction of the table, nothing more. Still, having Rowan pin-point the location of my father’s death was spooky. The added details about the men who took him to the cemetery only made it weirder, since he doesn’t usually have stories that are that intricate.

I told my mom that I would start paying attention to spooky things he said around here or at his other grandmother’s house to see if he just talks like that – maybe he is just starting to make up elaborate stories. I said that if he keeps bringing up more details or dwelling on the dining room table, then I’d start to get concerned – for now, I choose to believe it was just a spooky coincidence.

I wished her good luck sleeping tonight, though; she’ll need it.

Effective Scrum and High Quality Code – LNK .Net Talk by Rod Clarr

Tonight Scrum Master Trainer Rod Clarr presented at the Lincoln .Net User Group on Scrum and High Quality Code. The main point he made was that agility and high-quality code need to go hand-in-hand; developers need to produce the highest quality code they can.

Rod walked us through how to measure quality from different angles. From a functional standpoint – does the product perform as expected – quality is easy to test if you have done a good job defining what the product should do. From a structural stand point, it may not be obvious how to determine what quality code is, but poor quality code does rot faster, especially when it does not have unit tests.

Rod described two concepts to help qualitatively evaluate the quality of code from a structural standpoint:

  1. Viscosity – how hard is it to move the project in a different direction by adding or changing a feature. The more viscous, the more rigid, the worse the structural quality is.
  2. Testability – how difficult is it to write automated tests for the product – the more difficult, or the less coverage you can achieve, the worse the structural quality is. A project needs to have good quality before it gets to QA-style testing; by that point it is likely too late to improve structural quality.

Rod also talked about the sweet spot of the intersection between Scrum, Acceptance Test-Driven Design, and Component-based Architecture. Scrum is the process to manage risk in the process, ATTD is the top-down approach to defining what done is, and Architecture is the bottom-up test-driven development that results in good OO-based design.

Most of what Rod talked about resonated with my experiences. We’re currently focused on moving a number of iterations worth of work to production so that users can validate the progress we’ve made – the longer we wait to get to production, the more risk we incur in assumptions that we may have made that won’t be revealed to be wrong until users really pound on the code.

We also need to include more technical debt stories as we go; which Rod talked about as being important, or at least, not adding more technical debt knowingly. Our team has discussed adding two technical debt iterations per year, but I wonder if a better approach might be to allocate a number of story points per iteration to beat back technical debt.

Rod talked about getting the whole organization on board with the importance of quality and the Scrum process. Keil commented about this after the meeting, and I totally agree, that it is a very different thing for management to be OK with a project being run in an agile process versus management running their own process in an agile way (the latter being the much less risky option of the two).

Finally, Rod talked about the importance of feed back loops in requirements gathering. The first thing you need to do is confirm you understand what the customer is asking for, and then ask questions. We have started doing a better job of this on our team by creating good meeting notes to record decisions made (which have proven very valuable to refer back to), and by adding conditions of acceptance to all of our user stories to help us define and agree on what done is.

Three Weekend Projects for a Toddler

We’ve been getting creative this winter to keep our three-year-old busy! A closet dedicated to art supplies, including boxes and canisters that can be re-used, can be a source of inspiration when looking for something to break up the day.

Make a Geometric Puzzle

fish_puzzle

This puzzle was inspired by the 7-piece tangram puzzles, which would also be a fun project on their own. We weren’t sure our son would be interested in a nice wooden tangram puzzle, so I created this cardboard puzzle of a fish to test his interest level.

  1. Do a Google image search for something, like fish.
  2. Click on Search Tools and change Color to Black and White and Type to Line Drawing.ImageSearch 
  3. Download the image and print it on a sheet of construction paper.
  4. Cut out an 8.5x11” section of cardboard box, and use some Elmer’s glue to glue the picture on. Putting a book on the page for 30 minutes will be enough to let the glue set.
  5. Take a blank sheet of paper and draw some line across the page. Make each line intersect an edge of the page, and make about 7 internal shapes for the best configuration. Make sure there is a little bit of the image on each piece.
  6. Lay the page on top of the picture and use a ruler and razor to cut out the pieces.

Make a Monster Truck Hauler

monster_hauler monster_hauler_inside

We had some mailing tube end caps laying around that looked a lot like monster truck tires; and there’s nothing my three-year-old likes more than monster trucks.

  1. Take some mailing tube ends and use a razor to trim off the rim so that they look more like wheels.
  2. Find 4 washers and screws where the washers are large enough to cover the holes in the mailing tubes.
  3. Trace around a 3/4” dowel where the axels will go through a box; approximately 2” from each edge and 1/4” from the bottom of a box.
  4. Use a razor blade to cut out the holes in the box where the dowel will slide through.
  5. Find the right length for the dowel by pushing it through the box and putting the wheels on; leave about 3/8” spare so that the wheels have some room to turn.
  6. Cut the dowels and then assemble them onto the monster truck with the washers and screws.

We found it rolls well on carpet, but slides on smooth surfaces.

Make a Snake Car

snakecar_1 snakecar_2

Our son fell in love with a wooden snake toy we found at a nature center here in Lincoln. It was made by someone here in town who has an Etsy shop, but this toy doesn’t appear to be listed at the time of this writing (he may make one for you if you ask, though).

I made this toy one afternoon with a hand drill, which made it difficult to get the holes drilled straight. After that lesson learned, I asked my mother nicely if I could buy or borrow her drill press, and she kindly obliged. So, although you can do this project with a hand drill, it will turn out better with a drill press.

  1. Cut 12 wheels in 3/4” segments off of a 3/4” poplar dowel.
  2. Cut 10 body parts in 2 1/2” segments from a 5/8” square poplar stick. Sand these to round the edges. Drill a 5/8” hole in the end of each segment – in two of the segments drill only one hole; these will be for the head and tail segments.
  3. Cut 6 axels from 1/4” oak dowel at about 3 1/2” length (enough to go all the way through the wheels and leave some wiggle room for the body segments).
  4. Use a drop of wood glue on each axel and push it flush into a wheel, then thread on the body segments as shown in the pictures above.

Our son loves to play with this car and have it wrap up onto itself. It reminds me of a Jacob’s Ladder in that fluid sort of way.

Some Tips on How to Get Started Programming for Adults

My brother-in-law recently decided he would like to learn how to become a software developer so that he could pivot in his career, or at least use the skills he learned to make it easier to do his job. He knows I didn’t get a traditional CS education – I have a BS degree in Geology – so he wanted to know how I did it and get some advice for what he should do. I sent him an email with some tips, but wanted to also post it here for anyone else who may benefit, and because Scott’s advice on saving keystrokes is something I’d like to strive for.

My brother-in-law is going to take some courses at the community college here, which  is great. I have had a good experience hiring a software developer who completed that program. I also encouraged him to explore some resources on his own because I know if he can be exposed to topics from different perspectives it will be easier to understand and retain the ideas he encounters in class.

Below are some resources I recommended for him to look at. If you are considering whether programming is right for you, then these resources could help you explore different topic areas and decide if you like it.

If you are ready to take the next step and invest some money in your education, you would do very well by purchasing a subscription to Pluralsight.

When you are ready to start experimenting with code, you should definitely look into the 10 free websites you can get through Azure, or even setup your development environment on one of their virtual machines that might cost of few cents an hour, but that can be turned off when you aren’t using them and cost you nothing. And sign up with GitHub or Visual Studio Online.

My path out of college started with databases and spreadsheets, moved on to putting that on the web, and then to more complex line of business web applications. I always loved solving problems and especially automating processes, but one of my motivations to learn programming was the salary range I could expect after 5 years.

He had the choice between classes in Java or C#, and I told him that there were a lot more jobs in this area with C# than Java.