Automated Deprecation Detection: Coming Soon to an RFC Near You

So, I got my druthers in bunch and decided that the Internet really needed a new standard. So I wrote one.

I build APIs for a living (thats Application Programming Interface to everyone else.) Part of the horror of what I do for a living is cleaning up after tenures of really bad decision making. It is a daily thing for me now.

But as I continuously support these horrid ideas that people previous to myself (and, well, including myself if I am to be quite honest) part of the issue is trying to correct the errors of our ways. The problem, however, is that once you publish a public interface you’re kinda stuck with it. Because people can then use it and write software that depends on your (lets be honest) crappy implementations.

Publicly, all software engineers say our stuff is keen and clean while privately we panic almost daily when we dig up one of our long forgotten gems we thought was a really great idea at the time. Now it stares back at us as we wonder, “What in the hell was I thinking?” If only it were easier to fix things that are publicly facing. If only there was a way to let your customers know about breaking changes and the newer, better way to use your services before they actually break.

Enter Automated Deprecation Detection.

The gist of the RFC I have authored is to introduce a whole new HTTP status code: 286 Deprecated. The whole point of this code is to behave like a 200 OK status code while alerting clients that the service they depend upon may be going away or changing at some time in the future. The 286 Deprecated status code is accompanied by header metadata that indicates when a resource will be removed and where more information about that deprecation can be found.

The idea is that software engineers write software to automate the things we don’t want to monitor ourselves (shocker, I know….) and may actually miss the feeble attempts of API maintainers to warn us of impending doom. But now with the introduction of the 286 status code clients can check for it and alert their maintenance teams accordingly, so that they know well in advance that a dependency will be break before it actually does.

I can’t tell you how awesome this is, unless you’ve ever written any software that depends on some 3rd party system, which was deprecated at some point in a blog like this and you didn’t happen to be reading the blog that day. Then one day, you’re sipping on your coffee and all things are grand, when all of the sudden–WHHHAAAPAA–your shit stops working.

For the laypeople who happen to be gluttons for punishment, when an HTTP client makes a request to an external system they’re usually looking for a 200 OK response code that says, “Yup, I know what the hell you’re asking for and here it is!” But until now there was no way–outside of posting in a changelog blog or sending warning messages when no one is actually listening–that the service being requested was being removed or replaced with anything else.

286 Deprecated means “Ok, but what you’re asking for is being 86d in the near future.” This status code now lets software engineers look for the 2xx SUCCESS portion of the code, but notice the x86 portion of the code which says, “Okay, BUT…” and then let the people who wrote that software know to look into it before it becomes a coffee-spoiling, day-ruining thang.

Of course none of this is official yet. The RFC has been submitted for editorial review and it is up to the IETF to determine if this is as awesome as I say it is or not. But I have my hopes. And I think we very well may be looking at RFC#### in the near future.

Believe me, when that day comes I’ll let everybody know.

Ahoy-hoy!

I’m Austen Hoogen, and I think I’ve probably had a blog or a website in some form of disarray going on 20 years now. I always say I’m going to pay more attention, but they always file for divorce and leave anyway.

Probably for the best, since this last iteration is the most sparse thing I’ve ever put out in quite some time. Hopefully I can make up for that with some stellar content on all things that make me squee. “Cat videos,” you ask? It is very likely that it could happen, but mostly I want to use this blog to track the things I do for a living, the things I wished I did for a living, and all the things I fill my time between.

The tricky part, of course, is making enough room in all those things to sit at my desk and plunk out stupid messages like this in the hopes that I can attract the attention of frantic Googlers, searching desperately for something else but wind up on this page nonetheless. I’ll do my very best to help them, but I am a procrastinator still searching for my Panic Monster; it may take a while.

I’m a Software Engineer

I work at a company called TUNE where I program things you’ve probably never seen. I am a back-end systems engineer building software that happily chugs along and does lots of work without people needing to see it. I like it that way. Because CSS and Javascript make me cranky, just like PHP. Yeah, yeah… This blog is written in PHP (I DIDN’T DO IT!!) however one of the many, many things on my to-do list is not to write yet-another-blog-platform in Go or Java or Python or C–you know, real programming languages–so this blog will just have to do.

I brew beer

I’ve been doing it for God knows how long (which is 12 years). I love everything about beer and can probably tell you more than you ever wanted to know about the process, its history, the industry, etc.

Someday, I will have a brewery. You should come by my fantasy future brewery and have a beer. No need to bring your own, I’ll sell you one.

No, seriously, I’m crazy about this shit. One time, in between jobs, I decided what was really missing in my living room was a yeast propagation lab. Well let me tell you, my living room is not missing a yeast propagation lab anymore! I have a homemade temperature controlled incubator with heating and cooling (via a homemade propylene glycol chiller housed in the freezer portion of my homemade kegerator) and about as much microbiology lab equipment that one can reasonably fit in their apartment living room. (I super love my 2000x trinocular microscope!)

Burton Ale Yeast at 400x magnification
Burton Ale Yeast at 400x magnification

I dabble in electronics

Microcontrollers, embedded systems and BTLE sensor projects mostly. If I’m working on something it is probably trying to build or automate something in my beer making. Current projects include better temperature sensing and system controls on my incubator, a BTLE in-line thermometer, and other brewery automatia that suits my fancy.

And of course there’s the programming of these things. I like to work on projects making better software for brewers who want to manage their brewing lives. Seriously, with all the engineers out there brewing beer you’d think there’d be better software!

I make food

I love cooking. Especially if it involves fermenting. Yogurt/sour cream/creme fraiche/cultured butter/bread. YUM! And I make a borscht that will bring tears to your eyes.

I dream of having a workshop just like Adam Savage

I like to pretend, quite often, that I am friends with Adam Savage and get to hang out and build lots and lots of shit. What kind of shit? Who cares! And then I like to pretend, quite often, that I had a shop like his, because my apartment really is a terrible place to try and build messy things (no, I didn’t build my incubator in my apartment…)

Also, there’s the things like welding that just don’t go over well with the downstairs neighbors when you roll out your tig on the top-floor balcony. Extra space is all that jazz!

I learn new things

I love reading and learning new things. I have this delusion that I can actually know everything about everything. And I try, oh my God do I try! If it is science fiction, or fantasy, or non-fiction or academic I’m probably reading it. If it has to do with beer I’ve probably already read it.

YouTube and Wikipedia rabbit holes are one of my favorite pass times. Currently I’m in love with Khan Academy. The Internet truly is amazing!

Am I a snob?

In many more ways than one; I’m more than half German in ancestry which adds to the allure, I’m sure. But I’m not an asshole about it, I promise! Pay no attention to my face that looks like I’m ready to murder people! I’m a super nice snob who likes to share, I just can’t help that my face is sending people mixed messages (I am INTJ if you care to follow that). It usually doesn’t change its threatening shape for several encounters at least…. Just give my face some time, eventually you’ll see the signature Hoogen smile!

I’m a snob just because I know what I like, is all. How do I know? Because I try everything. And I will happily report that I prefer Tillamook to Kraft, pFriem Pilsner to Rainier Lager (although I love their commercials, being a NW native and all) and that I prefer a good, crusty loaf of Ken’s Artisan Bread to just about everything.

If we differ? To each their own. Everybody likes what they like. Who am I to tell people what they can and can’t like?

If I went around acting like Fred Phelps I’d be, well, an asshole. “Don’t be like Fred,” my mother used to say! Best advice if there ever was any.

Until next time,

Ciao