Thoughts on Hypermedia APIs

The REST architectural style is defined in Roy Fielding’s thesis, primarily chapter 5, where the style is described as a set of architectural constraints. A quick summary of these constraints is: client-server The system is divided into client and server portions. stateless Each request from client to server must contain all of the information necessary to understand the request. cache Response data is implicitly or explicitly marked as cacheable or non-cacheable.

Why Lab Week Is So...Awesome

At work, once a quarter, we have “lab week”: folks are allowed to form groups and work on self-directed projects. We usually finish up at the end of the week with a “science fair” where folks set up posters and demos of what they’ve worked on for the week (we even had cookies and lemonade at today’s science fair!). I am always amazed at the amount of innovation and progress that comes out of these weeks; in some ways it outshines what our organization manages to do over the rest of the quarter.

Agile Architecture Kanban

We’ve recently spun up a new software architecture group at work, and at least some of what the architects are expected to do is provide “consulting” services: providing feedback on technical designs and approaches, doing technical research, providing technical opinions to product managers, etc. Since many of these are similarly sized, and “cycle time” for getting a response to our clients is an important metric, we opted to manage this work using a kanban system.

NoSQL East 2009 Redux

I just attended NoSQL East down it Atlanta over the last two days. This was a fantastic conference, well-organized, with not only great content and speakers, but also a very well-educated audience. There was a telling moment in the first non-keynote talk where the speaker asked the audience “How many people have read the Dynamo paper?” and easily 95% of the audience put their hands up. I’d divide the major focus areas into the following groups:

Object calls == message passing in Erlang

I started playing around with Erlang last night as a result of learning about Basho’s key-value store Riak at NoSQL East yesterday (more specifically, it was due to Justin Sheehy’s talk, and two realizations: (1) this guys gets a lot of important operational design choices in this space, and (2) he decided to build his system in Erlang). So I decided to read the online Erlang “course” and started working on the exercises.

Economics Always Guide Adoption

In her recent article, "Study Says Economics Not A Driving Factor in Cloud Computing Adoption", Lori MacVittie reports on several studies that show that the current macroeconomic climate is not having a big impact on cloud computing adoption. In particular, the cost-savings purported to be offered by the cloud do not seem to be the major selling point. And yet, companies are adopting cloud computing technologies left and right, so it must make business sense: in other words, economics are driving adoption.

Agile Architecture Anti-Patterns

I have been the solution architect for an enterprise-spanning project which is now getting geared up for its next phase. This project touches more than 10 different development teams across at least three company divisions and involves at least one external ISV. So, you know, a pretty small project. As I reflect on the process of hashing out all the technical details, I realized I got stretched pretty thin. I really didn’t have time to write much down in any formal fashion this time around, due to the time pressure on the project and the number of other things I was also trying to juggle.

RSA public key cryptography in Java

Public key cryptography is a well-known concept, but for some reason the JCE (Java Cryptography Extensions documentation doesn’t at all make it clear how to interoperate with common public key formats such as those produced by openssl. If you try to do a search on the web for RSA public key cryptography work in Java, you quickly find a lot of people asking questions and not a lot of people answering them.

Downloading your Blogger archives

A friend was looking for a way to grab an archive of his Blogger posts into a CSV file he could do text mining on (and presumably, for a low-fi backup mechanism). I wrote this Python script for him, enjoy. #!/usr/bin/env python # # Copyright (C) 2009 by Jon Moore # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version.

Operational Cost Transparency

Cloud computing providers have gained a lot of attention based on their ability to provide massive economies of scale in server deployment; however, their pay-as-you-go billing methods (e.g. Amazon EC2 and S3, Google App Engine) actually provide something of far more strategic value to a business: operational cost transparency. This actually works best for web sites and web services built according to RESTful design principles: namely, "everything is a resource"