Skip to main content

Posts

Showing posts from March, 2013

AWS S3 versus CloudFront Performance

Yesterday I took Amazon CloudFront for a spin. Creating the CloudFront distribution was pretty simple - the wizard process flowed nicely. I found myself relying on the help text in places, but the most surprising thing was how long it took for the distribution to become enabled. I didn't time it exactly, but I probably spent 45 minutes waiting for my new CloudFront distribution to change from "In Progress" to "Enabled" status. The performance is a bit confusing. Compared to the S3 bucket, I didn't see any improvement in performance in a few tries - in fact, the CloudFront CDN performance was worse than the S3 bucket on its own for my 217 KB image file. I decided to take a larger sample, loading the same image 30 times in Chrome and noting the timing data from the "network" tab in the developer tools. I'm located in Brooklyn, have CloudFront configured for the US/Europe with download mode configured. My S3 bucket is in the US Standard zone, w

Second System Effect

Software engineers often stick close to successful designs used in our past. We have favorite tools and techniques that we reach for without deliberation, and the more specialized our knowledge, the more this tendency dominates approaches to software design. How do we know the difference between the best solution and the one that we're most comfortable with? In a word, the answer is experience . The second system effect postulates that the second system a designer creates will tend to be over-complex for the problem it solves, but eventually experience will help the designer to distinguish between core technique and chance detail. Many online commentaries focus on the way features accumulate as systems mature. There is merit in this view, but I think the key observation is rather that acquired experience is what allows software designers to create more elegant solutions. Different software design projects build experience in differing amounts. Imagine solving very similar probl

AWS Summit 2013

I am officially registered for AWS Summit 2013 | NYC on April 18th. I've been using Amazon AWS in various ways for the past 3 years. Kanban Solutions, my current employer, hosts its own virtual infrastructure on VMware and serves clients who pay for "high touch" support from RackSpace and others. I didn't expect they would have much interest in letting me attend an all-day conference on Amazon AWS. Surprisingly, not only are they sending me but our director of engineering and another engineer were already planning to attend. I need to decide which breakout session to attend. They have a few options that are pretty interesting to me. The use cases session is interesting because it will cover Amazon's new operations tool OpsWorks , which allows administrators to manage the configuration of servers and resources deployed in the AWS cloud using "Chef" recipes. I think I'm going to attend their architecture session, which address how to scale applica

Parsing HTML with JSoup

The transit demo site I'm building uses data from several websites - such as the Port Authority's press page. Unfortunately, most sites aren't designed for easy parsing; usually data is only available as HTML. So I need to parse HTML to uncover useful information, and if you've ever looked at the source of an average web page, writing a parser from scratch is a challenging task. Enter the jsoup library. This programming interface exposes the structure of a HTML document in a way that can be queried, traversed and even altered by Java programs. I had previously used it to clean out HTML tags from user-submitted content, but recently have been taking advantage of its powerful query engine, which is similar to the way jQuery selectors operate. Let's say I'm parsing some markup that repeats for different stories: I would want to parse this by first finding all of the stories using the <div class="story"> element, and then for each story, quer

Hello, World!

This is my new blog! This is my first foray into writing about technology - of course I've written my share of documentation, specifications and proposals, but this is different: this blog is completely open-ended. I'm not constrained by what a client wants or the marketing team likes. So...to start with, I'm going to talk a little about myself. I grew up near Albany, NY and studied at Cornell University where I graduated with majors in Mathematics, Computer Science and Philosophy. Since graduating in 2005, I have had a variety of software-related jobs. My job titles have included Systems Analyst, Project Manager, Software Developer, Development Manager and Lead Engineer. I have been working in the New York City metro area since early 2010, and recently moved to Bay Ridge, Brooklyn. Working in software technology is great in NYC - it's one of the top places in the US for technology jobs and I find the urban lifestyle fits my tastes very well. Most of my engineering