Leah is my little sister. At the moment, I’m sitting here in her hospice room as she sleeps (we’re at the place where that’s most of her day) while Indiana Jones and the Kingdom of the Crystal Skull plays on the TV for what is I’m sure the 3rd or 4th time today and I’m trying to figure out the right way to describe a life that in many ways I fundamentally just…
Back in 2012, the folks at Code Project interviewed me as part of their ongoing series profiling developers — their backgrounds, projects, interests, and pet peeves. At the time I was a PM on the ASP.NET team at Microsoft, freshly off of a stint running MSDN Magazine. A decade-plus later, they reached out again to do a follow-up — same questions, very different answers, as a lot has changed. Sadly…
If you’re at all like me, you have on occasion scanned upwards on the proverbial organizational chart and muttered something to the effect of, “those good-for-nothing idiots have no clue what they’re doing.” I get it. A large chunk of my career has been spent in the trenches of executing technology projects within large companies where there has been a good bit of distance…
Before we get too far into it, I wanted to quickly let you know that towards the end of last year, my longtime friend and product leader, Glenn Block and I started a new podcast called “Until the Ice Cream Truck”. If you’re wondering what in the world that crazy name is all about, please allow me to tease episode 1 where we get into those details. However, the big idea for the…
I recently interviewed with a company who was looking for a senior engineering leader, and the conversation took a surprising turn related to management and organization size, so I want to take a few minutes with you good folks and comment on the following question: Is organization size a useful measure in predicting whether a new or potential manager will be successful? The Context First,…
In almost every engineering all-hands I’ve been a part of, the senior engineering leader has a slide where they present a set of core engineering values. I guess it shouldn’t have come as too much of a surprise, then, when a colleague finally asked me what my core principles were. It’s more than just a reasonable question - being clear about values and principles can provide a…
In my side-life, I’m working on developing a backend and reference architecture for a lightweight, reactive, RDF-based architecture, and as things go - particularly in NodeJS applications - clearer understanding of component usage caused me to want to refactor larger components into smaller ones. This componentization meant that I now had the need to manage Node package dependencies between…
Jeff Atwood, the co-founder of Stack Overflow and developer who famously said “Any application that can be written in JavaScript, will eventually be written in JavaScript” wrote a post back in 2005 entitled “You Can Write FORTRAN in any Language”. At the time, Microsoft’s .NET framework was relatively new, and there were lots of heated discussions around a new…
Some friends of mine recently released a podcast episode on the topics of attention management related tools, and it turned out that one of the resources they referenced was an old blog post of mine on the topic; so maybe that’s a decent place to start and see what’s worked out, what hasn’t, and what new circumstances necessarily change strategy. As I read back through that post,…
(I’ve been sitting on writing this post for a while now because there have been quite a few different pices of the puzzle all up in the air and I’ve been waiting for at least a few of them to land. I now have enough clarity to go ahead with sharing.) TL;DR In short, our time in the Pacific Northwest is coming to a close this summer. We moved here a little over 13 years ago when I…
If you’ve been around me for any period of time, you’ve probably heard me say that I find two common approaches to software development: the mathematician’s approach and the linguist’s approach. The mathematician views the software design process as an equation to balance and typically does incredibly well at problems relating to algorithms, analysis, and lower-level system…
I’m a big believer that functional programming may be the only way to write reliable Javascript code and stay sane. However, I also want to acknowledge the reality that functional programming in general can be intimidating to developers who are relatively new to it (and/or who may have nightmares of lisp programming from a survey of languages course at university); and it can be hard to do…
One of the most commonly-implored techniques that I’ve heard by the REST faithful to shut down any questioning of the faith is what I’ll call an “appeal to the WWW”. There are variations, but they all tend to sound something like the following (I’ve added the snarky rhetorical phrasing because that’s what all variations sound like in my head): If only there was…
I received the following question from one of our service teams last week and thought it was likely the type of issue that a lot of you are dealing with (or have solved) in our current world of “microservice all the thingz!” The question went something like this: For a current (or future) transactional API endpoint (for example CREATE [entity]]), with the move to micro services do you…
Every now and then, somebody will ask me what I’m currently reading or researching. As such, I want to provide my current reading list along with the top items on my backlog. I’ll also try to publish these posts more frequently so that you [and I] can track progress as well as see what topics and resources have sneaked in. Currently Reading Terraform: Up & Running - We use Terraform at…
Some of you may know that I’m passionate about helping people from non-traditional computer science background enter our industry and have done quite a bit of work over the last few years towards that end through partnerships with immersive code schools like General Assembly and Code Fellows. In fact, at this point, nearly one third of my organization has come from one of those programs. There are…
And it’s likely that neither do you One of the projects that my team works on is a GraphQL server. The service provides a consistent, data-focused interface between multiple types and versions of front end applications and multiple types and versions of back end APIs. Now, let me be clear up front: this post is not about GraphQL vs. REST. As I’m sure will be unsurprising to the vast…
I originally wrote this as talking points for a conversation I had with my team and wasn’t planning on sharing it more broadly. However, as I’ve been watching this crazy industry of ours over the last several months, I think that these thoughts apply to many more people than just those on my team and I hope that at least one other person finds them useful. So first, a bit of…
“A rose by any other name would smell as sweet” I’ve written and spoken on the topic of API versioning numerous times over the last several years - particularly in regard to RESTful APIs. However, as APIs become more mainstream and the number of scenarios and expectations grows, it seems like it may be time for another turn of the crank in thinking about API versions. As always,…
Over the last two years, I’ve had the opportunity to look at a number of different API Gateway products as well as participate in the design and development of a fit for purpose gateway service for my company. Through these opportunities, I have landed on a conclusion about the current API Gateway landscape and a vision for the future of API Gateways. First, on the state of API Gateways…
I initially became interested in personal workflow methods and tools when I started at Microsoft in 2006. Microsoft differed from my previous roles in that projects generally required coordination across multiple teams - meaning that there were lots of tasks to manage. Additionally, the corporate culture made heavy use of emails and meetings - meaning that tasks could originate from a variety of…
I’ve been completely unfocused this week waiting to hear the outcome of a meeting that I knew was planned for Tuesday. The meeting was of the admissions committee for MIT’s Sloan School of Management. In the fall, I began work on applying to the executive MBA program - and this process took me through writing 4 essays, securing 3 letters of recommendation, and even dusting off…
In 2015-2016, there was a fair amount of discussion in the industry about the rise of polyglot development. The idea was simple enough: rather than standardizing on a set of programming languages and tools, development organizations would choose the right tool for the right job. Successful developer in this brave new world needed then to learn a host of new tools, from languages and frameworks…
Let me open this post by wishing all [ten] of you who read this blog a very happy new year! I wish for you all a 2017 full of accomplishment and growth - and I hope that some of my ramblings here are able to play a small part in that. In typical fashion, I spent the last few weeks of 2016 reflecting over the year for both myself and my team.
Over the last few weeks, I’ve been working on a side project to generate a documentation Web site using Metalsmith for any linked data vocabulary. Today I published the repository to GitHub and the package to NPM. There are already a lot of improvements that I plan to make as I evolve the project, but I’m excited to get this first version out there and look forward to getting your…
I was asked by a colleague recently to share my backlog of business and management related books, so I wanted to share them with you as well. Some of them, I’ve read. Many are in my queue but still a ways out due to all the tech books and journals that I’m also trying to get through. Team of Teams, General Stanley McChrystal Kellogg on Marketing, Alice Tybout and Bobby Calder…
Over the past several years, I’ve seen lots of architecture-related efforts come and go when it comes to services. These efforts have typically involved introducing one more more technologies that, if everyone would just get onboard, would move the organization to a next-generation, 100% available, reliable, compliant, secure stack. A few examples include REST, Kubernetes (then Swarm, then…
One of my pet projects is an international postal address formatter library. I built this for one of my teams as they have this as a requirement and there was nothing already on NPM - so now there is. In the process, I got to stretch myself in my functional programming skills using Ramda, and I wanted to show you a [I think] cool example. 'use strict'; let cf = require('.
I’ve spent much of the last couple years thinking about linked data and what that can mean for Web APIs. Whenever I’ve given a talk on the subject, there are generally 2 questions that get asked. The first is: what are the practical benefits of applying linked data principles such as globally scoped names, RDF, and linking to published vocabularies? For these questions, some answers…
As large technology companies transition to services and APIs, there will inevitably be quite a bit of debate around what data a service “owns” (and related: how to stop another service from owning that data), what document schemas should be supported, how to create and expose Swagger documents, and so on. As I’ve observed and participated in many of these kinds of discussions, I…
Software developers tend to be a bit hipsterish in that we seem to have an inherent attraction to novel things - especially when those novel things are lifted from the old things of other disciplines. The Andon Cord is one of those nuggets lifted from the same corpus that brought us much of what is now termed “agile”: Automobile manufacturing - specifically, the manufacturing practices…
One of the less stated charters of my team is to push the bounds on system design and innovation within our company’s larger technology group. In doing so, it is expected that we will push people out of their comfort zones and while this will undoubtedly create friction, the idea is that the final outcome will be better for the larger group. While I think the final outcome is still to be…
For a while now, I’ve held the belief that the biggest reason people get the whole “REST" thing wrong is because they are looking at Roy Fielding’s doctoral dissertation – the paper that coins the term “REST” - as a prescription for how to design APIs. There are 2 things wrong here that I think explain the current state of the API world when it comes to REST. First, is the idea that the terms and…
In response to my recent post on Swagger and REST, I was asked the following on Twitter: @howard_dierking Trying to dig deeper into the philosophy of API specs. Got recommended reading beyond your links? — Aram Zucker-Scharff (@Chronotope) October 11, 2016 Rather than a Twitter stream of references, I thought I would just consolidate my resource list here. Note that for the most part, this…
If you’ve spent much time with me, you’ve undoubtedly heard me ramble on at length about linked data. And in those conversations, you’ve likely heard me say something to the effect of “linked data is REST”. However, I haven’t really spent much time talking about REST by itself - especially considering the amount of importance heaped on it by proponents of the…
While I love the simplicity of Jekyll for generating static Web sites from markup documents, the fact that Jekyll is built on Ruby and its respective ecosystem has been giving me increasing frustration. The reason for the growing frustration comes down to this: A Ruby app is a bait and switch. Looking at the code itself, the language has an apparent elegance to it (I mean, if you factor out all of…
I’ve spent some time talking with my teams recently about REST from the perspective of an API, and also how APIs built through the lens of technologies like Swagger go against some of the most important principles of REST. As I’ve reflected more over conversations, there is one even more fundamental thing that tends to get lost in the conversation. And that is that REST doesn’t…
One of the projects that my team owns is the Concur Developer Center. Among other information, it houses the documentation for Concur’s Web APIs. The documentation for the more recent API versions uses Swagger and until recently was generated by reflecting over the .NET API code. There were a bunch of problems that resulted from this approach as I’ll describe in a second. But…
If there’s one thing that I want for the 10 of you that read this blog (hi dad!), it’s that you know that I want to be as transparent as humanly possible with you - about both the successes and failures. I started with Concur as a development manager about a year ago and was promoted to director a few months ago. This is post is an update of what’s gone well, what hasn’t…
For the next generation of the Concur Developer Center, we decided to break away from the standard enterprise, CMS-backed Web site and do what has become pretty common practice in the open source world for Web sites: we generated a completely static HTML Web site from markdown files using Jekyll. Even with a static Web site, we want to do as much as possible to reduce latency - especially for…
[Warning: Potentially Inflammatory Topic] Today was a bit of a rough day for me in that I did something that is generally a bit aggressive for me. I abruptly closed an issue that was opened by one of our QA folks, thereby halting the discussion. The issue wasn’t really a bug - even though it was opened as one. It was more of a questioning of the API’s resource naming strategy (more…
I have a million and one things that I should be doing right now. There’s code that needs to be reviewed, more code that needs to be written, customer calls to prepare for, expense reports to approve (and submit). I’m not doing any of those things right now. None of that feels all that important. I learned today that my friend and former colleague, Thomas Remkus, just lost his fight…
Do you or your company build Web APIs and, if so, do you use an API gateway to broker traffic between your customers and your products? In this post, I want to tell you a little about our experience with this class of products and add a little of my opinion, but if you’re using an API gateway, I want to hear about your experience - the good and the bad.
I’ve been a dev manager now for about 9 months and I have to say that I’m really enjoying this role. It’s not a job without frustrations, and I haven’t escaped the all of the frustrations that I had as a PM - particularly that of trying to balance writing code with “other duties as assigned.” However, when it’s all summed, I think that I’m a much…
Yup. All of it. (Warning: this is a bit of a rant, so thoughts are based more in anecdote than data) I understand that there was a point in time where building software that was capable of supporting large companies used to be an incredibly difficult task. At some levels, it still presents challenges. However, in the world of multi-tenant, mobile-driven, Internet-facing consumer applications, this…
We all have see them; most of us have to deal with them; many of us contributed to writing at least one of them. Legacy code bases tend to evolve over decades and will with rare exception get messier and more entangled as a function of the number of people working on the project and the lines of code they produce (a phenomenon that seems pretty consistent with the rest of the known universe).
I’ve been going around to different teams inside of my company recently and talking about how we’ve gone about the task of selecting different tools and technologies for our projects. I figured that if this many people inside the company were curious, there may be some value in sharing it with you good folks as well. So here, I’ll attempt to cover the principles, strategies, and…
I’ve been trying to get caught up on my backlog of things that I generally like doing but haven’t been finding the time to do recently, and a current project at work has me working in the same technology on which this blog is based - so it gave me a convenient excuse to - yet again - try and revive this blog. We’ll have to see how well I do in keeping up with writing.
I’ve been kind of quiet in the weeks since leaving Microsoft. It’s been a good quiet - in fact, the best kind of quiet there is. It’s the quiet the results from being completely overwhelmed, engrossed, and excited about the challenge ahead. I’ll describe some of these challenges over the next few weeks in more detail, but one of them is about making large scale…
After 8 amazing years, it’s time for me to move on. I’ll articulate my own rationale for leaving shortly, but it would be disingenuous to not first list some of the many, many ways that I have grown and benefited from my time working at Microsoft. I got to run the developer certification program where I designed and built programs that helped start and grow the careers of many. It was…