jonm.dev

The Art of Writing Software



The Power of Visualizing Iterative Waterfall

Tags [ Agile, kanban, process improvement, Scrum, WIP ]

We’re going through a process mapping exercise at work just to try to understand how we get things done. Now, we are running what I would describe as “scrumfall”; doing Scrum for development but having that sit inside a traditional waterfall process. The waterfall is run iteratively and pipelined, although the degree of true pipeline isn’t what most people think it is, due to developers having to support upstream and downstream activities like backlog grooming and addressing bugs in QA.

Testable System Architecture

Tags [ architecture, testing ]

At work we were having a discussion about how we wanted to do SSL termination for a particular web service. We had narrowed the possibilities down to doing hardware SSL termination in our load balancer or doing software SSL termination in an Apache layer sitting in front of our web apps. During the course of the conversation, we talked about factors like performance (would there be a noticeable effect on latency), capacity (were we already CPU bound on the servers that would run the Apaches), maintainability (is it easier to update configs on a single load balancer or to script config changes across a cluster with 40+ servers), cost (how much does the SSL card cost), and scalability (will we be able to expand the solution out to higher traffic levels easily).

RESTful Refactor: Combine Resources

Tags [ caching, HTTP, refactoring, REST, REST API, RESTful web services ]

I’ve been spending a lot of time thinking about RESTful web services, hypermedia APIs, and I’ve started to discover several design patterns as I’ve begun to play around with these in code. Today, I want to talk about the granularity of resources, which is roughly “how much stuff shows up at a single resource”. Generally speaking, RESTful architectures work better with coarser-grained resources, i.e., transferring more stuff in one response, and I’ll walk through an example of that in this article.

Thoughts on Hypermedia APIs

Tags [ architecture, hypermedia, REST, REST API, RESTful web services, XHTML ]

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

Tags [ innovation, LabWeek ]

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

Tags [ kanban, queuing theory, WIP ]

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

Tags [ cascading, Cassandra, Hadoop, HBase, key-value stores, Neo4J, NoSQL, NoSQL East, Pig, Redis, Riak, Voldemort ]

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

Tags [ concurrency, Erlang, message passing, OOP ]

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

Categories [ Cloud Computing Economics ] Tags [ Amazon Web Services, AWS, cloud computing, cost savings, time-to-market ]

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

Tags [ Agile, architecture ]

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.