How to think about dates and timestamps, timezones, and offsets

Phil Karlton famously said that the two hardest things in programming are cache invalidation, and naming things. I’d add dates and times to that list. For something so seemingly simple and intuitive to humans, the interaction of dates & times, and timestamps & timezones, has proven deceptively tricky for many engineers. And just when we think that we’ve gotten it figured out, we are blindsided by nuances and edge cases, and confronted with ambiguous scenarios.

To be clear, I’m not an expert on this topic; few people really are. Heck, I picked up a few new things while writing this…


My approach to turning experience into words

I’ve been writing as a hobby since I was a kid. But it’s been only recently that I’ve written articles for wide publication.

Still, in that relatively short period of time, I’ve learned a lot about how to write compelling, informative articles (well, I hope that they are compelling and informative!) I’ve also developed techniques to keep myself productive and avoid writer’s block.

As I’ll discuss, I write partly so that I can share what I’ve learned with other readers. …


It’s the “Secret Ingredient”… and it’s a recipe for disaster

Anti-patterns — as the name suggests — are the opposite of patterns. Whereas the latter describes repeatable, effective solutions to common programming problems, anti-patterns illustrate common attempts to solve programming problems which, ultimately, tend to result in even worse problems.

Certain anti-patterns crop up again and again in our engineering lives. Popular ones include the God Object, Boat Anchor, and Golden Hammer. But there’s one particularly damaging anti-pattern that I’ve run into repeatedly, which I have never seen named or discussed.

It’s time for that to change. Let’s give it a name. And let’s discuss it.

Let’s talk about the…


Save the prose for your poetry

If you work long enough as a software engineer, you’ll see them. Those “funny” log messages sprinkled throughout your company’s codebase. A line written by someone who wanted to show that they’re a humorist as well as an engineer. Something like:

log.error(
"Couldn’t find the server. Guess it went on vacation!!! :)" );

Maybe you’ll chuckle to yourself the first time you see it in code. But be assured, there will be no chuckling when you’re dealing with a production outage, and that is the data to which your hopes of a quick resolution are pinned.

At this point, the…


But only if you care about advancing your career

Most of us get to a point in our engineering careers, after having learned from our architects and managers, and after having put up with our companies’ issues and inefficiencies. One day — as if by magic — we realize that the things we’ve been learning from our “superiors” haven’t at all been the right things. And those issues and inefficiencies can be solved… and maybe we are the ones to solve them.

In other words, we get to a point when we’re ready to move an individual contributor (IC) role to a true leadership role.

(Note that by “leadership”…


The Go programming language from a Java perspective — part 3

In this series’ first two articles, I described myself as a long-time Java engineer who has recently decided to give Go a go. Although I’ll always love Java, I know that it’s important to keep learning languages. I chose Go because it’s a statically-typed, compiled language that doesn’t face some of the issues (such as slow compile times and startup times) that Java faces.

This series is not meant to pit Java versus Go. Both are strong languages with their own strengths and weaknesses. Rather, it is meant to provide my first observations of Go as a Java developer. …


The Go programming language from a Java perspective — part 2

In this series’ first article, I described myself as a long-time Java engineer who has recently decided to give Go a go. Although I’ll always love Java, I know that it’s important to keep learning languages. I chose Go because it’s a statically-typed, compiled language that doesn’t face some of the issues (such as slow compile times and startup times) that Java faces.

This series is not meant to pit Java versus Go. Both are strong languages with their own strengths and weaknesses. Rather, it is meant to provide my first observations of Go as a Java developer. …


The Go programming language from a Java perspective — part 1

As someone who’s programmed in Java for almost as long as the language has existed, I’ll always consider myself a “Java guy”. Sure, as one of the predominant platforms in the industry, Java is sometimes looked down on today (“It’s verbose!” “It’s slow!” “It’s old!”) But I’m personally excited about the future of the language and the platform.

With that said, it’s important to learn other languages and technologies. So as I’ve been learning the Google Cloud Platform, I’ve also been learning Go. My approach to learning is to skip the tutorials and get straight to designing and building my…


If you’re going to move to microservices, make sure you move in the right direction

Your company’s monolithic web application has become too big and brittle. Deploying it has become slow and scary. So as a company, you’ve decided to follow the path so many others have taken — breaking apart the monolith into microservices.

As you probably know, the journey can be long and difficult. There are plenty of wrong turns lurking, and paths you’ll want to avoid. I’ve been there myself. So let’s take a look at where you’re at; maybe my experience can help.

Hmm…

Well, it’s great that your company is eager and has already gotten started. But I’ve noticed a…


Specifically, it’s calling myself a “software engineer” in the first place

I started my working life not in software, but in marketing. I’m a creative person, and I thought that a life of crafting taglines and writing jingles would suit me well. It turned out that the marketing world was far more rote than I had pictured it to be. Surprisingly (or perhaps not) I found that programming — hitherto a hobby for me — was instead providing me with the creative outlet I craved.

So after my first couple of marketing jobs, I found one in Web development. …

Dave Taubler

Software architect, engineering leader, musician, husband, dad

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store