Kelly Norton is a software engineer living in Surf City, North Carolina. He holds degrees from Georgia Tech's School of Electrical and Computer Engineering and from the MIT Media Lab where he studied under John Maeda. From 2006–2012, he was a software engineer at Google working on Google Web Toolkit, Speed Tracer, Google Chrome and other stuff. He co-founded Connexxia LLC in 2000 to help universities effectively recruit high school seniors through online social engagement. He was co-founder at FullStory. He worked on product search at Etsy. Now he is a Principal Software Engineer at MailChimp.


This post is just some fascinating (or quite boring depending on your perspective) minutia that arises in the handling of time and timezones in programming. This deals with a little corner that exists in almost every time library yet I’ve never had much reason to explore it. That little corner is daylight savings time transitions.
About 5 or 6 years ago, I decided to form better sleep habits. Included in that was a committment to try to sleep for at least 8 hours every night. It is a committment I struggled with for quite some time. In recent years, though, I seem to have adapted to a more consistent sleep schedule. I'm also fortunate that activity trackers, like my Garmin watch, are able to record sleep related data each night. In this post, I export all of my 2019 sleep data from Garmin Connect and use it to determine how well I'm sleeping and what else I might do to sleep better in 2020.
The only paper periodical that is still delivered to my house is MIT’s Technology Review. In the back of every issue, there is a section called Puzzle Corner. The column consists of densely packed reader-submitted math puzzles and solutions to puzzles published in earlier editions. Recently, I enticed my daughter, Zoe, into solving one of the problems with me. This is a summary of our adventure.
We recently solved the mystery behind a pattern of failures that have been happening very infrequently over a long period of time. The culprit turned out to be a very suprising bug in PHP's MySQL driver, so I thought it might be worthy of a public blog post.