Hiram Software Blog


Day Two with the Amazon API Gateway

This post is an update to a lengthy "trip report" from my experience of porting the retail SheetsDB API over to the new Amazon API Gateway on the product's first day.

(I also turned off retail signups for SheetsDB since I was getting an unwanted influx of product tourists. Ironically, if I had been able to port the SheetsDB API over it would not have been an issue. If you would like to try out SheetsDB, send me an email, since the enterprise servers are obviously still running).

In the previous post I identified two functional issues that prevented me from migrating the legacy API over to the new platform, and within 10 days the product team has fixed both issues in production. My hope in documenting these issues was in part to provide feedback in the best way I knew how and also to help save a fellow developer from losing 5 or so hours of his or her time. I must thank the team for hearing the feedback and then acting on it.

The Amazon API Gateway may not be perfect, or it may have other issues, but I still have optimism for the product's direction and team's commitment to succeed. Maybe AWS releases too early (is this even valid criticism?), and maybe the Amazon API Gateway was not ready, but at this pace I would recommend kicking the tires now since it seems this product is getting serious investment and can become what many of us want it to.

Last, I would recommend checking out Stefano's answers on the AWS Developer Forum. He has been great in providing timely feedback and support to me and others. Maybe with better docs his involvement wouldn't be necessary, but my take is the Amazon API Gateway is behaving like a small startup, and I like the romantic idea that even products from large corporations can have souls.

Read below the fold for the specific changes.


Day One with the Amazon API Gateway

Update on July 22, 2015: This post is now out of date due to helpful and welcome updates from the Amazon API Gateway team within 10 days! See the next post to learn about the changes.

On Thursday, July 9, 2015, AWS launched "Amazon API Gateway", a product whose pitch is to remove the need to host APIs on virtual machines and compose them into AWS Lambda Functions.

I love the vision and direction, and I was excited to give the product a try. Different than the Lambda release, there was no "opt-in" form, and one only had to wait for the AWS Console updates to propagate regions.

tl;dr — Amazon API Gateway should be labeled as "preview" since it is blocking two basic scenarios:

  • Your API cannot both see the request body and the request metadata (headers, path params, and query params).
  • Your API cannot see which IAM role was authenticated with the request.

When these two items become unblocked, I think I will be able to recommend trying out Amazon API Gateway in the future. Read on to follow my experience prototyping the next version of the SheetsDB API.

Here's a summary diagram I'll cover throughout:

API Gateway Configured

Note: as of July 22, 2015, this diagram is out of date! See the next post for more info.


Blogging with Gulp and Foundation

Another year, another blogging upgrade. We are generally "buy-over-build," but this time we ended up building jekyll-like behavior into our ES6 Starter project.

Punchline: We are using the Foundation Blog Example, Highlight.js, and our ES6 Starter Gulpfile to generate this site.

We hope you agree that the content is easy to read and accessible across many devices. The previous version's layout had left some to be desired. Below, first, is the old Octopress site, and next, is the new Foundation+Gulp site:


ES6 Examples Published to Github

We have been dabbling with JSPM and AngularJS together to make new sites.

This dabbling uncovered some wrinkles you'll likely encounter during this transition phase, and we published two projects to github with our solutions in March 2015.



Amazon Prime Photos: Impressions after 300 GB

On Tuesday, November 4th, 2014, Amazon announced that Prime members now are eligible to upload an "unlimited" number of photos to the company's Cloud Drive product.

Prime Photos Promo Banner

If you have Amazon Prime or a Kindle, you already are a Cloud Drive customer, but it's unlikely you used the free 5 GB previously offered. Tuesday's new feature got a lot of buzz because it may have "changed the game" for photos.


Reflections using Spray.io

Last month the team took on building a REST API for a client, and the client asked us to use Scala so they could take possession upon completion. We normally are't dogmatic about programming languages or frameworks, but if it's important to a client then it is important to us.

This post outlines why we moved from Spray to implementing our own Servlet Service that used Akka.


Evaluating my photo backup options

I recently got married. Part of this process is getting a handoff of digital files from different vendors. What to do with these files? Archive them of course! And then share them with family.

Some photographers offer a hosted image site (perhaps white-label SmugMug) or similar, but I'm planning for this marriage to last decades and it seems unlikely for the photographer's site to persist. Given the tradeoff, my wife and I preferred delivery of the raw digital files over a glossy website. I trust myself to keep these files over the decades.

The problem is there currently aren't any good products that handle archiving sentimental files like photos and movies.

Even though I run an agency that in theory could build the perfect product, the reality is that photos are hard. Someone else, hopefully funded by a large brand, should solve this problem.

This blog is me writing down what I need so I can talk more intelligently about this at parties and startup gatherings.


Using ANTLR to parse S3 logfiles

Hiram Software recently published a small, but immensely useful (for us), tool to parse S3 logfiles. We do a lot of projects in the JVM, often in Scala, and it surprised us how there was no readily-available tool to do this "at scale."

Below is the writeup of the JSalParser one of my team members presented to team as justification for "building" the tool.

‐ Hiram

Github: https://www.github.com/hiramsoft/jsalparser


Learnings from writing EXIF data

Last week Hiram Software took on a contract to add automated photo organization features to a popular CRM product. We discovered a couple details about EXIF that frustrated us, and wanted to take our emotions out on a blogpost.