ProgrammableWeb3 Open Source Alternatives to Using the Google Maps API

The rise of data mining, mobile applications and social media, among many others, has dramatically changed the face of Geographic Information Systems (GIS) and what they can accomplish. This has led to the creation of tools suited to various use cases.

Jeremy Keith (Adactio)Metadata markup

When something on your website is shared on Twitter or Facebook, you probably want a nice preview to appear with it, right?

For Twitter, you can use Twitter cards—a collection of meta elements you place in the head of your document.

For Facebook, you can use the grandiosely-titled Open Graph protocol—a collection of meta elements you place in the head of your document.

What’s that you say? They sound awfully similar? Why, no! I mean, just look at the difference. Here’s how you’d mark up a blog post for Twitter:

<meta name="twitter:url" content="">
<meta name="twitter:title" content="Metadata markup">
<meta name="twitter:description" content="So many standards to choose from.">
<meta name="twitter:image" content="">

Whereas here’s how you’d mark up the same blog post for Facebook:

<meta property="og:url" content="">
<meta property="og:title" content="Metadata markup">
<meta property="og:description" content="So many standards to choose from.">
<meta property="og:image" content="">

See? Completely different.

Okay, I’ll attempt to dial down my sarcasm, but I find this wastage annoying. It adds unnecessary complexity, which in turn, I suspect, puts a lot of people off even trying to implement this stuff. In short: 927.

We’ve seen this kind of waste before. I remember when Netscape and Microsoft were battling it out in the browser wars: Internet Explorer added a proprietary acronym element, while Netscape added the abbr element. They both basically did the same thing. For years, Internet Explorer refused to implement the abbr element out of sheer spite.

A more recent example of the negative effects of competing standards was on display at this year’s Edge conference in London. In a session on front-end data, Nolan Lawson decried the fact that developers weren’t making more use of the client-side storage options available in browsers today. After all, there are so many to choose from: LocalStorage, WebSQL, IndexedDB…

(Hint: if developers aren’t showing much enthusiasm for the latest and greatest API which is sooooo much better than the previous APIs they were also encouraged to use at the time, perhaps their reticence is understandable.)

Anyway, back to metacrap.

Matt has written a guide to what you need to do in order to get a preview of your posts to appear in Slack. Fortunately the answer is not yet another collection of meta elements to place in the head of your document. Instead, Slack piggybacks on the existing combatants: oEmbed, Twitter Cards, and Open Graph.

So to placate both Twitter and Facebook (with Slack thrown in for good measure), your metadata markup is supposed to look something like this:

<meta name="twitter:card" content="summary">
<meta name="twitter:site" content="@adactio">
<meta name="twitter:url" content="">
<meta name="twitter:title" content="Metadata markup">
<meta name="twitter:description" content="So many standards to choose from.">
<meta name="twitter:image" content="">
<meta property="og:url" content="">
<meta property="og:title" content="Metadata markup">
<meta property="og:description" content="So many standards to choose from.">
<meta property="og:image" content="">

There are two things on display here: redundancy, and also, redundancy.

Now the eagle-eyed amongst you will have spotted a crucial difference between the Twitter metacrap and the Facebook metacrap. The Twitter metacrap uses the name attribute on the meta element, whereas the Facebook metacrap uses the property attribute. Technically, there is no property attribute in HTML—it’s an RDFa thing. But the fact that they’re using two different attributes means that we can squish the meta elements together like this:

<meta name="twitter:card" content="summary">
<meta name="twitter:site" content="@adactio">
<meta name="twitter:url" property="og:url" content="">
<meta name="twitter:title" property="og:title" content="Metadata markup">
<meta name="twitter:description" property="og:description" content="So many standards to choose from.">
<meta name="twitter:image" property="og:image" content="">

There. I saved you at least a little bit of typing.

The metacrap situation is even more ridiculous for “add to homescreen”/”pin to start”/whatever else browser makers can’t agree on…


<meta name="msapplication-starturl" content="" />
<meta name="msapplication-window" content="width=800;height=600">
<meta name="msapplication-tooltip" content="Kill me now...">


<link rel="apple-touch-icon" href="">

(Repeat four or five times with different variations of icon sizes, and be sure to create icons with new sizes after every. single. Apple. keynote.)

Fortunately Google, Opera, and Mozilla appear to be converging on using an external manifest file:

<link rel="manifest" href="">

Perhaps our long national nightmare of balkanised metacrap is finally coming to an end, and clearer heads will prevail.

ProgrammableWebWhy API Developers Loveto Use GitHub

GitHub is one of the most popular forms of source control for API development, boasting a community of over 11 million users and 27 million projects. In a recent post on the Nordic APIs Blog, Kristopher Sandoval discussed why developers love the service.

David MegginsonAutomatically reloading Apache WSGI apps with emacs

If you’re using a WSGI-based framework (like flask) for building Python-based web applications, you might want to be have the application auto-reload whenever you change the source code, especially on a development or testing server.

In the general case, this is a ridiculously-complicated problem, because the Apache WSGIScriptReloading parameter monitors only your WSGI file, not the rest of your application code. If you’re lucky enough to be using the emacs editor, however, the problem becomes simple.

First, you still need to add WSGIScriptReloading on to your Apache VHOST configuration file. After that, simply create the file .dir-locals.el in the root of your WSGI application source code, with the following contents (substituting the actual path to your .wsgi file as the value of wsgi-file):

((nil . ((wsgi-file . "/my/source/dir/my-app.wsgi")
         (after-save-hook . (lambda () (shell-command (concat "touch " (shell-quote-argument (wsgi-file)))))))))

And that’s it. Now, every time you save a file in that directory or any of its subdirectories, Apache will reload your WSGI app.

Tagged: apache, flask, python, wsgi

Thomas Vander Wal (InfoCloud)Photo [Flickr]

vanderwal posted a photo:


I'm at Pizzeria Paradiso!

ProgrammableWebAmazon Releases Version 1.0 of the AWS SDK for Go

Amazon Web Services (AWS) is the popular cloud computing provider that offers reliability across storage, database, analytics, applications and development services for a range of industries.

Matt Webb (Schulze & Webb)Filtered for air and light and war and stories


I was complaining out loud the other day about the distracting man I was sitting next to, hammering his keyboard, typing like a donkey falling downstairs. But then it occurred to me, I always blame external factors for ruining my focus when really I lack it for internal reasons. If I genuinely had focus, nothing could disturb me.

Eric piped up with this poem by Charles Bukowski, air and light and time and space.

if you're going to create ... you're going to create with part of your mind and your body blown away



Muji's mission statement:

MUJI's goal is to give customers a rational satisfaction, expressed not with, "This is what I really want" but with "This will do." "This is what I really want" expresses both faint egoism and discord, while "This will do" expresses conciliatory reasoning.


Machines generating stories about images.

He was a shirtless man in the back of his mind, and I let out a curse as he leaned over to kiss me on the shoulder. (Looking at an image of two sumo wrestlers grappling.)

Uses a technique with the astounding beautiful name of skip-thought vectors, a machine which is able to reconstruct the surrounding sentences of a passage in a book.

See also: A video of the same stories-from-images trick being performed from a live webcam feed: a man is eating a hot dog in a crowd.


From this explanation of Soviet Deep Battle theory, an insight into military science:

War is no longer a series of short and sharp engagements but rather a flowing affair, with larger, strategically oriented battles ('operations') that often encompass several smaller, shorter battles-within-battles (tactical engagements).

Which leads to approaches:

Deep Battle, or Deep Operations in particular first begins to develop as a theory in the 1920s. Like most developing theories of Mobile Operations at this time, it had one, over-arching goal: Get the battlescape moving, and keep it moving



I've been skiing like once and my main metaphorical takeaway was that it's easier to course correct when you're in motion. Try to turn when you're going forwards slowly, you'll tumble. There's a lesson there for company strategy, and I find myself reaching for this metaphor again and again. But now it turns out that military science understands movement, ability to adjust to circumstances, and flow, in a far richer way than me and my experience on the side of a mountain in Canada.

We tell stories to ourselves about what we experience, then we use those stories to approach the world. What stories we choose matters.

War has a vocabulary and a philosophy all of its own, and the fact I don't know anything about it tells me I'm missing out on something valuable -- as unpleasant as the subject matter is.

See also: Frieze magazine on the Israeli Defence Forces (from 2006) who, it turns out, are heavily influenced by contemporary philosophy:

Most important was the distinction [Deleuze and Guattari in A Thousand Plateaus] have pointed out between the concepts of "smooth" and "striated" space ... In the IDF we now often use the term "to smooth out space" when we want to refer to operation in a space as if it had no borders. ... Palestinian areas could indeed be thought of as "striated" in the sense that they are enclosed by fences, walls, ditches, roads blocks and so on. When I asked him if moving through walls was part of it, he explained that, 'In Nablus the IDF understood urban fighting as a spatial problem. ... Travelling through walls is a simple mechanical solution that connects theory and practice.'

A startling article.

ProgrammableWebDaily API RoundUp: Heroku Connect, microBees, Sisense, Episerver, SetPay

Every day, the ProgrammableWeb team is busy, updating its three primary directories for APIs, clients (language-specific libraries or SDKs for consuming or providing APIs), and source code samples.

ProgrammableWebTop 10 Games APIs: EVE Online, Riot Games,

According to a recent research report by the Entertainment Software Association (ESA), more than 150 million Americans play video games and approximately 42 percent of Americans play video games at least three hours per week.

Matt Webb (Schulze & Webb)Like to Continue, a fictionbot

I wrote a poem on Twitter. It's 36 tweets long, and happens entirely in your notifications panel.

Or maybe what I made is a fictionbot. You say "hi" to it and it tells you a story. You get sent each line only when you like the last. The story is about liking, and continuing.

So it's called @liketocontinue and you should just introduce yourself to start. Then watch out for what it tweets at you, and like to continue.

If it gets too much attention it'll break, that's part of the fun.

Whys and hows

You can tell I'm interested in chatbots and - with my business hat on - I'm especially excited about digital coworker bots, being pioneered by the likes of Howdy which helps you run meetings (see screenshots). All the energy is around Slack which is bot-friendly group messaging for work... a great product and a great marketing strategy: They've figured out how to make virality work in enterprise by having a frictionless on-ramp below the expense threshold and treating the team as the viral atomic unit.

And back in the day, I used to make chatbots that you used individually on AIM. For instance, googlematic let you search Google -- and that got me a bunch of nice attention, and in a bunch of trouble too.

But I'm into Twitter. Twitter is something between these and something different too. Twitter is a place where people talk to each other and groups. It's not quite personal, and it's not focused on work... it's public. I'm curious about what you can do with bots in public space. I'm in love with @mothgenerator and its gorgeous computer-generated moths. But more than that, there's something for me about interactions that happen over time, and interactions that can start with one person and widen up to more people, sometimes deliberately and sometimes accidentally because they're visible. It seems like there's a lot of creative potential there. Stories! Text adventures! Collaborative poems!

So much potential.

Which is why I'm taking my own advice and exploring the potential with art. Well I say art. Amateur poetry really.

I wanted to explore the feeling of a like and in particular waiting for a response, especially because Twitter just shifted from faves to likes. So that's what I wrote. Made. Wrote.

Technically, I have a basic Python 3 app that I use to get started on any new project. It has everything I want already set up... sign in via Twitter, a database capable of storing emoji, nice web templates, email error logging, solid deployment to my webserver, and an asynchronous loop to run background tasks like listening for tweet activity. Custom for how I tend to work. It's taken me a while to get happy with this (my coding is rusty) but it's neat that I can get something written and live in an hour instead of a week.

And I've learnt a ton about the tech things like Twitter limits and what you can and cannot see via the API (such as: you can see @-mentions from users you don't follow, but you won't get notified of their likes on your tweets). And lots of details about how to make a system where it won't break in-progress stories when I edit the words.

But mainly I've been seeing how reading (and having to like!) tweets feels, versus lines on paper, and how that changes what I write. So I've spent most of my time on the words not the code, which is just as it should be.

I want to keep digging with fictionbots. Like I said above, there's so much potential. If you'd like to collaborate, I'd be up for chatting... it would be great to work on a little project with someone who can actually write!

Anyway, nice to have shipped something, no matter how simple, or rather, snuck it out the door. Or rather rather - because it's a poem - published. I hope you like it.

ProgrammableWeb: APIsSalesforce Heroku Connect

The Heroku Connect API is an application development platform, and is used to exchange data between a Salesforce organization and a Heroku Postgres database. It can be used to sync accounts, and custom objects from Salesforce. This REST API responds in JSON format, and uses OAuth version 2.0 for authentication. Salesforce is based in San Francisco, and develops CRM software.
Date Updated: 2015-11-25
Tags: [field_primary_category], [field_secondary_categories]

ProgrammableWeb: APIsSisense

Sisense provides big data and business analytics services. The Sisense API allows integration of Sisense server functions including user management and widgets manipulation. Use the API to implement a widget of the service, automate processes, or implement a UI over Sisense. Available in REST and JSON formats & accessible with token.
Date Updated: 2015-11-25
Tags: [field_primary_category], [field_secondary_categories]

ProgrammableWeb: APIsEpiserver

Episerver is a platform for brands to manage and connect content, ecommerce and digital marketing. With the interface, developers can integrate catalog, inventory, pricing, and order information. The Episerver API allows developers to integrate the platform with business applications. It's available in REST and XML formats with a token.
Date Updated: 2015-11-25
Tags: [field_primary_category], [field_secondary_categories]

Amazon Web ServicesNew AWS Quick Start – Sitecore

Sitecore is a popular enterprise content management system that also includes a multi-channel marketing automation component with an architecture that is a great fit for the AWS cloud! It allows marketers to deliver a personalized experience that takes into account the customers’ prior interaction with the site and the brand (they call this feature Context Marketing).

Today we are publishing a new Sitecore Quick Start Reference Deployment.  This 19-page document will show you how to build an AWS cluster that is fault-tolerant and highly scalable. It builds on the information provided in the Sitecore Scaling Guide and recommends an architecture that uses the Amazon Relational Database Service (RDS), Elastic Load Balancing, and Auto Scaling.

Using the AWS CloudFormation template referenced in the Quick Start, you can launch Sitecore into a Amazon Virtual Private Cloud in a matter of minutes. The template creates a fully functional deployment of Sitecore 7.2 that runs on Windows Server 2012 R2. The production configuration runs in two Availability Zones:

You can use the template as-is, or you can copy it and then modify it as you see fit. If you decide to do this, the new CloudFormation Visual Designer may be helpful:

The Quick Start includes directions for setting up a test server along with some security guidelines. It also discusses the use of Amazon CloudFront to improve site performance and AWS WAF to help improve application security.


ProgrammableWebDaily API RoundUp: BaasBox, Sikka Healthcare, Akamai Connect, Tradable Bits

Every day, the ProgrammableWeb team is busy, updating its three primary directories for APIs, clients (language-specific libraries or SDKs for consuming or providing APIs), and source code samples.

Web AnalystDon’t fall for the Amazon discount trap

In these days of pre-black Friday discounts and deals (farewell black Monday!), savvy online shoppers should beware of deals that seem too good to be true. As a father and uncle, I’ve regularly looked for discounted Lego toy sets on, with searches such as this one: Toys & Games : 50% Off or More :”lego”. In the past this has yielded a number of good Christmas presents.

No more. A large share of Amazon’s revenue and profit comes from Amazon sellers, who sell their inventory on for a fee. Today, my search for discounted Lego sets came up with a tempting hit: A 71% discount on the Star Wars set 75037, offered at $21.95 with free shipping by an Amazon seller, discounted from $75. Another fifty-nine different Amazon sellers offer this product for a higher price. Seems like a good deal? Not so fast.

If you search for Lego set 75037, three items are shown: in second place, the discounted set I originally found. In first place, however, Amazon itself ofsearchfers the set for only $12.19, with free shipping – a much better deal! Another 97 sellers offer it for a higher price. As a reference, the MSRP for this set was $14.99, but it is sold out on

What happened? When listing an item to sell, Amazon sellers are trusted to create their own listings if they cannot find a similar item in Amazon’s catalog. In this case, an enterprising Amazon seller “overlooked” the original item listing, created a duplicate, and another fifty-nine sellers jumped on the bandwagon. These sellers are not competing with Amazon on price – they’re competing to catch discount-seeking customers.

infoHow successful is this tactic? Based on the product reviews, at least 14 customers fell for the trap of the higher-priced set, and gave it an average three-star rating, realizing too late how they were tricked. Just a few days ago, Barbara F. left this comment: “Disappointed. This was never a 75.00 item. This is the first time I felt deceived by Amazon. Please note this is a very small set. There is no sale or special pricing on this item.”

Without access to Amazon’s tools, it is difficult to gauge how pervasive this “duplicate, inflate & discount” is across all product lines. But a quick scan yielded at least a few suspicious duplicate Lego sets: 42020, 75035, 31036, 41026. Lego conveniently numbers its sets, which makes finding duplicates easier.

The bottom line: until Amazon finds a way to quickly and simply prevent duplicate listings, buyers beware: when you find a good deal, always cross-check that you truly got the best price – across both the Web and And read the reviews.

Note: pricing and inventory on Amazon is dynamic, and the prices and items referenced in this article may no longer be available when you read this. A special wishful thinking award goes to the Japanese seller who is offering the 75037 Star Wars set for $77 under the third listing!

ProgrammableWebAerohive API Platform Integrates Wi-Fi Network Data with Business Applications

Aerohive, cloud networking solution provider, recently announced a new Application Platform that integrates wireless network data with business apps and workflows. The API-driven platform provides monitoring, location, and identity elements that enable a broad range of business applications.

ProgrammableWeb: APIsAkamai Connect

The Akamai Connect API is a deployment and management service for Akamai Connect Cache engines. It allows users to register, activate, and authenticate caches. It includes resources to interact with clients and devices in addition to references to build information about deployed projects. Akamai offers cloud and content delivery services.
Date Updated: 2015-11-24
Tags: [field_primary_category], [field_secondary_categories]

ProgrammableWeb: APIsPriava

Priava offers venue & event management services in the cloud. The Priava API allows developer access to the platform for integrating into third-party applications. API methods include query for venues, event types, create and get contacts, opportunities, or event sources and more.
Date Updated: 2015-11-24
Tags: [field_primary_category], [field_secondary_categories]

ProgrammableWeb: APIsBaasBox

With the BaasBox API, developers can integrate backend solutions to mobile applications. The open source interface provides JSON and REST formats accessible with an Api Key. Additional resources include console, plugin engine, and user cases. BaasBox offers backend services for mobile applications.
Date Updated: 2015-11-24
Tags: [field_primary_category], [field_secondary_categories]

ProgrammableWeb: APIsTradable Bits

Tradable Bits Media offers social media marketing services for sports, tourism, entertainment, hospitality, retail, and other agencies. The Tradable Bits API allows developers to implement marketing services into applications. It includes a console URL to try most calls. Developers can query stream and user data as well as CRM push notifications. The API offers documentation accessible with an API Key. API Reference for Facebook Apps (Campaigns) Data, Stream Data, CRM Data is available.
Date Updated: 2015-11-24
Tags: [field_primary_category], [field_secondary_categories]

ProgrammableWeb: APIsSikka

The Sikka API allows developers to access the opt-in HIPAA / HITECH compliant rich data generated by their healthcare practices. Developers can use the API to build their own custom apps for their practices, or they can use any of the 30+ apps already provided by Sikka. Sikka is a company that developes software to help providers in the retail health industry optimize their businesses.
Date Updated: 2015-11-24
Tags: [field_primary_category], [field_secondary_categories]

ProgrammableWebDaily API RoundUp: Ditto Labs, OpenStack Monasca, ReminderDrop, Pure Storage

Every day, the ProgrammableWeb team is busy, updating its three primary directories for APIs, clients (language-specific libraries or SDKs for consuming or providing APIs), and source code samples.

Amazon Web ServicesNow Available – EC2 Dedicated Hosts

Last month, I announced that we would soon be making EC2 Dedicated Hosts available. As I wrote at the time, this model allows you to control the mapping of EC2 instances to the underlying physical servers. Dedicated Hosts allow you to:

  • Bring Your Own Licenses – You can bring your existing server-based licenses for Windows Server, SQL Server, SUSE Linux Enterprise Server, and other enterprise systems and products to the cloud. Dedicated Hosts provide you with visibility into the number of sockets and physical cores that are available so that you can obtain and use software licenses that are a good match for the actual hardware.
  • Help Meet Compliance and Regulatory Requirements – You can allocate Dedicated Hosts and use them to run applications on hardware that is fully dedicated to your use.
  • Track Usage – You can use AWS Config to track the history of instances that are started and stopped on each of your Dedicated Hosts. This data can be used to verify usage against your licensing metrics.
  • Control Instance Placement – You can exercise fine-grained control over the placement of EC2 instances on each of your Dedicated Hosts.

Available Now
I am happy to be able to announced the Dedicated Hosts are available now and that you can start using them today. You can launch them from the AWS Management Console, AWS Command Line Interface (CLI), AWS Tools for Windows PowerShell, or via code that makes calls to the AWS SDKs.

Let’s provision a Dedicated Host and then launch some EC2 instances on it via the Console! I simply open up the EC2 Console, select Dedicated Hosts in the left-side navigation bar, and click on Allocate a Host.

I choose the instance type (Dedicated hosts for M3, M4, C3, C4, G2, R3, D2, and I2  instances are available), the Availability Zone, and the quantity (each Dedicated Host can accommodate one or more instances of a particular type, all of which must be the same size).

If I choose to allow instance auto-placement, subsequent launches of the designed instance type in the chosen Availability Zone are eligible for automatic placement on the Dedicated Host, and will be placed there if instance capacity is available on the host and the launch specifies a tenancy of Host without specifying a particular one. If I do not allow auto-placement, I must specifically target this Dedicated Host when I launch an instance.

When  I click Allocate host, I’ll receive confirmation that it was allocated:

Billing for the Dedicated Host begins at this point. The size and number of instances are running on it does not have an impact on the cost.

I can see all of my Dedicated Hosts at a glance. Selecting one displays detailed information about it:

As you can see, my Dedicated Host has 2 sockets and 24 cores. It can host up to 22 m4.large instances, but is currently not hosting any. The next step is run some instances on my Dedicated Host. I click on Actions and choose Launch Instance(s) onto Host (I can also use the existing EC2 launch wizard):

Then I pick an AMI. Some AMIs (currently RHEL, SUSE Linux, and those which include Windows licenses) cannot be used with Dedicated Hosts, and cannot be selected in the screen below or from the AWS Marketplace:

The instance type is already selected:

Instances launched on a Dedicated Host must always reside within a VPC. A single Dedicated Host can accommodate instances that run in more than one VPC.

The remainder of the instance launch process proceeds in the usual way and I have access to the options that make sense when running on a Dedicated Host. You cannot, for example, run Spot instances on a Dedicated Host.

I can also choose to target one of my Dedicated Hosts when I launch an EC2 instance in the traditional way. I simply set the Tenancy option to Dedicated host and choose one of my Dedicated Hosts (I can also leave it set to No preference and have AWS make the choice for me):

If I select Affinity, a persistent relationship will be created between the Dedicated Host and the instance. This gives you confidence that the instance will restart on the same Host, and minimizes the possibility that you will inadvertently run licensed software on the wrong Host. If you import a Windows Server image (to pick one that we expect to be popular), you can keep it assigned to a particular physical server for at least 90 days, in accordance with the terms of the license.

I can return to the Dedicated Hosts section of the Console, select one of my Hosts, and learn more about the instances that are running on it:

Using & Tracking Licensed Software
You can use your existing software licenses on Dedicated Hosts. Verify that the terms allow the software to be used in a virtualized environment, and use VM Import/Export to bring your existing machine images into the cloud. To learn more, read about Bring Your Own License in the EC2 Documentation. To learn more about Windows licensing options as they relate to AWS, read about Microsoft Licensing on AWS and our detailed Windows BYOL Licensing FAQ.

You can use AWS Config to record configuration changes for your Dedicated Hosts and the instances that are launched, stopped, or terminated on them. This information will prove useful for license reporting. You can use the Edit Config Recording button in the Console to change the settings (hovering your mouse over the button will display the current status):

To learn more, read about Using AWS Config.

Some Important Details
As I mentioned earlier, billing begins when you allocate a Dedicated Host. For more information about pricing, visit the Dedicated Host Pricing page.

EC2 automatically monitors the health of each of your Dedicated Hosts and communicates it to you via the Console. The state is normally available; it switches to under-assessment if we are exploring a possible issue with the Dedicated Host.

Instances launched on Dedicated Hosts must always reside within a VPC, but cannot make use of Placement Groups. Auto Scaling is not supported, and neither is RDS.

Dedicated Hosts are available in the US East (Northern Virginia), US West (Oregon), US West (Northern California), Europe (Ireland), Europe (Frankfurt), Asia Pacific (Tokyo), Asia Pacific (Singapore), Asia Pacific (Sydney), and South America (Brazil) regions.  You can allocate up to 2 Dedicated Hosts per instance family (M4, C4, and so forth) per region; if you need more, just ask.



Amazon Web ServicesAWS Week in Review – November 16, 2015

Let’s take a quick look at what happened in AWS-land last week:


November 16


November 17


November 18


November 19


November 20

New & Notable Open Source

  • goofyfs is a filey (their terminology) system for S3.
  • aws-sdk-perl is an attempt to build a complete AWS SDK in Perl.
  • aws-ses-recorder is a set of Lambda functions to process SES.
  • flywheel is a proxy for AWS.
  • aws-sdk-config-loader is an AWS config file loader for the CLI tools.
  • caravan is a lightweight Python framework for SWF.
  • rusoto is a set of AWS client libraries for Rust.
  • ng-upload-s3 is an AngularJS directive to upload files directly to S3.
  • aws-templates is a collection of custom CloudFormation templates.
  • ec2-browser is an EC2 browser.
  • Consigliere is an AWS Trusted Advisor dashboard that supports multiple accounts.

New SlideShare Presentations

New Customer Success Stories

New YouTube Videos

Upcoming Events

Help Wanted

Stay tuned for next week! In the meantime, follow me on Twitter and subscribe to the RSS feed.


ProgrammableWebLatest Release of Android Studio 2.0 Includes Instant Run Feature

Google has announced the release of Android Studio 2.0 which includes a new Instant Run feature and incremental builds support. The Android Studio 2.0 release also includes previews of a new GPU Profiler tool and Android Emulator featuring a new user interface.

ProgrammableWebHow APIs are Fueling Modern Day Affiliate Marketing

Have APIs reached their potential with affiliate marketing programs? As the API economy continues on its journey, we may see more applications for APIs in the affiliate marketing industry. Meanwhile, this article outlines how APIs serve affiliate marketing programs today.

ProgrammableWeb: APIsPlytix Resellers

The Plytix Resellers REST API allows developers to access and integrate the reseller functionality of Plytix with other applications. Some example API methods include managing different sites, managing different products, and managing users. Plytix provides a collection of product images for advertising, as well as analytics about products.
Date Updated: 2015-11-23
Tags: [field_primary_category], [field_secondary_categories]

ProgrammableWeb: APIsMonasca

The Monasca API allows developers to integrate monitoring as a service into their own systems and applications. It includes methods for storing and querying metrics and historical information. Monasca can process hundreds of thousands of metrics per second with data retention periods of greater than a year without data loss.
Date Updated: 2015-11-22
Tags: [field_primary_category], [field_secondary_categories]

Jeremy Keith (Adactio)Notice

We’ve been doing a lot of soul-searching at Clearleft recently; examining our values; trying to make implicit unspoken assumptions explicit and spoken. That process has unearthed some activities that have been at the heart of our company from the very start—sharing, teaching, and nurturing. After all, Clearleft would never have been formed if it weren’t for the generosity of people out there on the web sharing with myself, Andy, and Richard.

One of the values/mottos/watchwords that’s emerging is “Share what you learn.” I like that a lot. It echoes the original slogan of the World Wide Web project, “Share what you know.” It’s been a driving force behind our writing, speaking, and events.

In the same spirit, we’ve been running internship programmes for many years now. John is the latest of a long line of alumni that includes Anna, Emil, and James.

By the way—and this should go without saying, but apparently it still needs to be said—the internships are always, always paid. I know that there are other industries where unpaid internships are the norm. I’ve even heard otherwise-intelligent people defend those unpaid internships for the experience they offer. But what kind of message does it send to someone about the worth of their work when you withhold payment for it? Our industry is young. Let’s not fall foul of the pernicious traps set by older industries that have habitualised exploitation.

In the past couple of years, Andy concocted a new internship scheme:

So this year we decided to try a different approach by scouring the end of year degree shows for hot new talent. We found them not in the interaction courses as we’d expected, but from the worlds of Product Design, Digital Design and Robotics. We assembled a team of three interns , with a range of complementary skills, gave them a space on the mezzanine floor of our new building, and set them a high level brief.

The first such programme resulted in Chüne. The latest Clearleft internship project has just come to an end. The result is Notice.

<video controls="controls" height="350" poster="" src="" width="500"> Watch the video </video>

This time ‘round, the three young graduates were Chloe, Chris and Monika. They each have differing but complementary skill sets: Chloe is a user interface designer; Chris is a product designer; Monika is an artist who knows her way around hardware hacking and coding.

I’ll miss having this lot in the Clearleft office.

Once again, they were set a fairly loose brief. They should come up with something “to enrich the lives of local residents” and it should have a physical and digital component to it.

They got stuck in to researching and brainstorming ideas. At the end of each week, we’d all gather together to get a playback of what they were coming up with. It was at these playbacks that the interns were introduced to a concept that they will no doubt encounter again in their professional lives: seagulling AKA the swoop and poop. For once, it was the Clearlefties who were in the position of being swoop-and-poopers, rather than swoop-and-poopies.

Playback at Clearleft

As the midway point of the internship approached, there were some interesting ideas, but no clear “winner” to pursue. Something else was happening around this time too: dConstruct 2015.

Chloe, Monika and Chris at dConstruct

The interns pitched in with helping out at the event, and in return, we kidnapped some of the speakers—namely John Willshire and Chris Noessel—to offer them some guidance.

There was also plenty of inspiration to be had from the dConstruct talks themselves. One talk in particular struck a chord: Dan Hill’s The City Of Things …especially the bit where he railed against the terrible state of planning application notices:

Most of the time, it ends up down the bottom of the lamppost—soiled and soggy and forgotten. This should be an amazing thing!

Hmm… sounds like something that could enrich the lives of local residents.

Not long after that, Matt Webb came to visit. He encouraged the interns to focus in on just the two ideas that really excited them rather then the 5 or 6 that they were considering. So at the next playback, they presented two potential projects—one about biking and the other about city planning. They put it to a vote and the second project won by a landslide.

That was the genesis of Notice. After that, they pulled out all the stops.

Exciting things are afoot with the @Clearleftintern project.

Not content with designing one device, they came up with a range of three devices to match the differing scope of planning applications. They set about making a working prototype of the device intended for the most common applications.

Monika and Chris, hacking

Last week marked the end of the project and the grand unveiling.

Playing with the @notice_city prototype. Chris breaks it down. Playback time. Unveiling.

They’ve done a great job. All the details are on the website, including this little note I wrote about the project:

This internship programme was an experiment for Clearleft. We wanted to see what would happen if you put through talented young people in a room together for three months to work on a fairly loose brief. Crucially, we wanted to see work that wasn’t directly related to our day-­to-­day dealings with web design.

We offered feedback and advice, but we received so much more in return. Monika, Chloe, and Chris brought an energy and enthusiasm to the Clearleft office that was invigorating. And the quality of the work they produced together exceeded our wildest expectations.

We hereby declare this experiment a success!

Personally, I think the work they’ve produced is very strong indeed. It would be a shame for it to end now. Perhaps there’s a way that it could be funded for further development. Here’s hoping.

Out on the streets of Brighton Prototype

As impressed as I am with the work, I’m even more impressed with the people. They’re not just talented and hard work—they’re a jolly nice bunch to have around.

I’m going to miss them.

The terrific trio!

ProgrammableWebWhy the Skyscanner API Appeals to Travel Startups

UK-based global travel search site Skyscanner has been gaining considerable market share over the last two years, now boasting 50 million unique monthly visitors. Now, travel startups are encouraged to leverage Skyscanner’s technology in a recent article by Sean O’Neill for Tnooz.

Norman Walsh (Sun)The short-form week of 9–15 Nov 2015

<article class="essay" id="content" lang="en">

The week in review, 140 characters at a time. This week, 20 messages in 26 conversations. (With 4 favorites.)

This document was created automatically from my archive of my Twitter stream. Due to limitations in the Twitter API and occasional glitches in my archiving system, it may not be 100% complete.

Monday at 01:58am

RT @Pinboard: If I can make you look like an ass by retweeting what you say, it’s not because I have some kind of odd superpower requiring …—@ndw

Monday at 04:12am

Train to AMS delayed briefly...locomotive engine needs to be rebooted. #livinginthefuture —@ndw

In a conversation that started on Monday at 06:46am

Nasty, leaky smoking "areas" at @schiphol airport. #Blechhh —@ndw
@ndw Hi Norman, we appreciate your feedback. Could you tell us where exactly you encountered this problem? 1/2—@Schiphol
@Schiphol Dutch Kitchen outside D gates.—@ndw
@ndw Thanks, Norman. We've forwarded your message to our colleagues. ^WHU—@Schiphol
@ndw We'll notify the concerning department accordingly. 2/2 ^SHJ—@Schiphol
@ndw @Schiphol Short memory Norm? That was the norm!—@dpawson

Monday at 06:49am

RT @JeremyCorbyn4PM: .@TheSun newspaper run with an out-and-out lie on their front page this morning.RT if you think this is unacceptable h…—@ndw

Monday at 06:52am

RT @stevenpemberton: The slides from my #xmlamsterdam talk "HTML is the New Flash" are online.—@ndw

Monday at 07:16am

RT @jllord: Gender pay gap: women effectively working for free until end of year—@ndw

Monday at 07:21am

What do we want? Google+ post by ᎫᎾℕ ℳℐℂ—@ndw

Monday at 11:17am

RT @neiltyson: 1.4 Million: Americans who died in all Wars fought since 1776. 1.4 Million: Americans who died via household Guns since 1968—@ndw

Monday at 03:38pm

Solving the problem of deeply nested (performance-sucking) programmatic ad fulfillment chains, that's the big one for the web right now.—@eaton

Tuesday at 03:55am

RT @mnot: "Silicon Valley can’t operate without the trust of their customers, and trust, once lost, is hard to regain."…—@ndw

Tuesday at 07:12am

XML Stars, the journal is out! Stories via @ndw —@dominixml

Tuesday at 02:43pm

Coder epitaphs—@CommitStrip

In a conversation that started on Tuesday at 05:56pm

Hello, Austin. Can I have my margarita now, plskthxbai?—@ndw
@ndw welcome home—@grechaw

Tuesday at 10:08pm

RT @kplawver: The best damn thing The Oatmeal’s ever done.—@ndw

Tuesday at 10:11pm

RT @jacqui: Happy birthday, Neil Gaiman. I may be forever thankful for the goth eyeliner validation Sandman granted, and of course Good Ome…—@ndw

Tuesday at 10:14pm

RT @lmorchard: Yes. Yes. A thousand times yes.—@ndw

Wednesday at 03:32pm

In Ruby, everything is an object. In Clojure, everything is a list. In Javascript, everything is a terrible mistake.—@duggan

Thursday at 03:35pm

RT @BadAstronomer: Here. I fixed the Starbucks cup for y’all. #RealReasonForTheSeason #HoHoHobliquity —@ndw

Thursday at 03:36pm

RT @austin360: Edible Austin's ninth annual Eat Drink Local Week takes place from Nov. 28 to Dec. 5.…—@ndw

Friday at 07:12am

XML Stars, the journal is out! Stories via @ndw @JamieXML —@dominixml

In a conversation that started on Friday at 02:10pm

Rule of thumb: "n" weeks on the road = "n" hours of expense reporting.—@ndw
@ndw I always tell myself that I'll update an expense report during the trip, and it will be easy. Never happens.—@dmcassel

Friday at 03:29pm

@StephenBuxton @peteaven @hunterhacker @ndw Surely this was a poor decision and not the official @marklogic stance:—@bsletten

Friday at 05:00pm

@MadelineAshby @scalzi Or, you know, ideally, forever.—@ndw

Friday at 06:08pm

I was here when the Nazis thought they'd own #Paris 4ever. Paris will rally, rise & win, & so will the world. Paris has stood for 2000 yrs.—@QuiltingMuriel

Sunday at 10:40am

RT @ESQPolitics: There is only one way to defeat ISIS—and it starts with money:—@ndw

Sunday at 10:42am

RT @petecordell: "Don't give in to hate. That leads to the Dark Side." - Obi-Wan Kenobi—@ndw

Norman Walsh (Sun)The short-form week of 2–8 Nov 2015

<article class="essay" id="content" lang="en">

The week in review, 140 characters at a time. This week, 27 messages in 50 conversations. (With 12 favorites.)

This document was created automatically from my archive of my Twitter stream. Due to limitations in the Twitter API and occasional glitches in my archiving system, it may not be 100% complete.

Monday at 01:21am

"any sufficiently advanced technology is indistinguishable from Nature" — Karl Schroeder (via @debcha)—@fugueish

Monday at 04:12am

Hello London. I have successfully traveled from one small island nation to another. To celebrate, plan to sleep for a week.—@ndw

Monday at 07:28am

Just a reminder: everything your beautiful 'safe' language depends on is still written in C, and also we all die alone.—@matthew_d_green

In a conversation that started on Monday at 12:22pm

@dauwhe That was odd, wasn't it?—@ndw
@ndw Time to add a proper mug, some decent tea, and a deck of Werewolf cards to my usual travel kit.—@dauwhe
@dauwhe If it's any consolation the coffee was worse.—@ndw
@ndw That's what I heard. Sounds like they need to update this:—@dauwhe

Monday at 01:38pm

RT @stephenjudkins: It's crazy that once personal video recorders became ubiquitous UFOs stopped visiting Earth and cops started brutalizin…—@ndw

Monday at 03:51pm

Every photo isn't a masterpiece. Every workout isn't a record. Every day isn't your best. But keep showing up and some of them will be.—@james_clear

Monday at 04:50pm

RT @xmlprague: Ready for XML Prague 2016? ✅Speakers: CFP open ✅Attendees: Registration open...…—@ndw

Tuesday at 10:55am

@AlecMuffett Because MS Word is a pile of three-day old rotting dog's viscera that no sane person would use? :)—@puellavulnerata

Tuesday at 11:14pm

Best ways to contact me 1. Slack 2. SMS 3. e-mail 4. Twitter DM 5. Facebook Messenger 6. Carrier Pigeon 7. Stone Tablet 8. LinkedIn—@mdkail

Wednesday at 02:53am

"I made [the font of] the listing [in this presentation] very small so you wouldn't debug it while I'm speaking" #IETF94 —@justin__richer

Wednesday at 04:42am

RT @staeiou: I think a core reason we feel so upset at UI changes is that it briefly reminds us that our public spaces are privately owned …—@ndw

Wednesday at 04:52am

RT @afewbugs: Cycling shouldn't need a bloody movement, it should be a safe, every day, entirely unremarkable mode of transport just like a…—@ndw

In a conversation that started on Wednesday at 05:56am

If this favorite / like nonsense means the JSON payloads are / have changed, I *am* going to be annoyed.—@ndw
@ndw I was looking for the haiku in that.—@grechaw

Wednesday at 05:57am

@mollydotcom Definitely not just you.—@ndw

Wednesday at 06:45am

Hello, Amsterdam! #XMLAmsterdam —@ndw

Wednesday at 10:56am

@doctorow Favourite line on Twitter recently: "Does 'Homeopaths Without Borders' want money, or just envelopes that once contained money?"—@IanConway

Wednesday at 04:35pm

@tomcoates I use—@ndw

Thursday at 10:05am

"Yes, I marked that tweet as offensive. Because it contained the phrase 'marketing cloud' that's why."—@founddrama

Thursday at 11:09am

RT @kplawver: This is really good:—@ndw

Thursday at 11:35am

This street art in a local gallery window caught my attention on my morning walk recently—@stevemuench

Thursday at 01:50pm

Incredible juggling. Impossible. Inconceivable. Beautiful.—@donttrythis

Thursday at 03:54pm

@kplawver Was going to observe in my #XMLAmsterdam talk that if you'd been born when I started w/markup you'd be old enough to drink.—@ndw

In a conversation that started on Thursday at 03:54pm

@kplawver Turns out, that was last year.—@ndw
@ndw Time flies when you’re having arguments about semantics!—@kplawver

Friday at 02:01am

RT @TechnicallyRon: If you let Google finish the lyrics to Frank Sinatra's My Way you create something beautiful. —@ndw

In a conversation that started on Friday at 03:35am

"It's all XML, some is just weirdly serialized" - @ndw #XMLAmsterdam —@grtjn
RT @grtjn "It's all XML, some is just weirdly serialized" - @ndw #XMLAmsterdam // ...said any community tightly married to a metamodel ever.—@dret

Friday at 03:39am

"...back when we used to spell XML with 4 letters". Thanks for the reminder for us old timers :-) @ndw #xmlamsterdam —@XMLAmsterdam

Friday at 03:40am

@ndw opens #xmlamsterdam—@stevenpemberton

Friday at 03:46am

"I'm not saying they should have used XML. They should have, but I'm not saying that." @ndw at #xmlamsterdam —@stevenpemberton

Friday at 03:47am

"I wrote a JSON parser. In SGML" @ndw at #xmlamsterdam —@stevenpemberton

Friday at 03:52am

JSON parser written in SGML. Yes, you're crazy, @ndw but it must have been fun! #XMLAmsterdam —@XMLAmsterdam

In a conversation that started on Friday at 03:54am

"HTML5 isn't helping authors" @ndw at #xmlamsterdam ( @mollydotcom )—@stevenpemberton
RT @dret: RT @stevenpemberton: "#HTML5 isn't helping authors" @ndw at #xmlamsterdam // that was never a goal; it exists to help #webapp dev…—@ndw
RT @stevenpemberton: "#HTML5 isn't helping authors" @ndw at #xmlamsterdam // that was never a goal; it exists to help #webapp devs.—@dret
@ndw Gotta keep saying it (deep breath): interface, interface, interface...—@docum3nt

Friday at 03:59am

"In SGML times, there were tens of projects that cost millions. Now there are millions of projects that cost nothing" @ndw at #xmlamsterdam —@stevenpemberton

Friday at 04:33am

RT @dret: RT @stevenpemberton: "#HTML5 isn't helping authors" @ndw at #xmlamsterdam // that was never a goal; it exists to help #webapp dev…—@ndw

Friday at 05:58am

@ndw Gotta keep saying it (deep breath): interface, interface, interface...—@docum3nt

Friday at 07:12am

XML Stars, the journal is out! Stories via @ndw @JamieXML —@dominixml

Friday at 07:48am

Hello XML Amsterdam #cheerlights red green blue—@ndw

In a conversation that started on Friday at 08:03am

FYI: my #XMLAmsterdam talk:—@ndw
@ndw @XMLAmsterdam The omission of format is too much for me to bear.—@erikagain
@erikagain @XMLAmsterdam Consider me duly chastised and repentant.—@ndw
@ndw @XMLAmsterdam Let us speak no more of it. ;) Just wanted to make sure you were familiar with org. It's great for structured metadata.—@erikagain
@erikagain @XMLAmsterdam I use it myself, just a brain cramp.—@ndw

In a conversation that started on Friday at 08:46am

@Twitter is a good platform for talking to yourself. What think @mollydotcom @SomSnytt @ndw @propensive @gclaramunt @AlainCouthures @et-el?—@MartianOdyssey
@MartianOdyssey @Twitter @mollydotcom @SomSnytt @ndw @gclaramunt @AlainCouthures @et Not sure replying affirmatively supports the claim...—@propensive
@MartianOdyssey @mollydotcom @SomSnytt @propensive @gclaramunt @AlainCouthures Sorry, I don't think I understand the question.—@ndw

Friday at 08:48am

OMG! is awesome! Thanks @ndw :)—@optimistic_dev

Friday at 09:19am

OMG just realised my #JSON/#Twitter payloads need changing for new schema update @ndw @argumatronic @gclaramunt —@MartianOdyssey

In a conversation that started on Friday at 10:11am

@digiphile Unquestionably DIY was at the original heart of HTML et al. What's asked these days (HTML5): is that still true? @ndw @w3c —@JamieXML
@JamieXML @ndw @w3c Good Q. I don’t hear a lot about teens & college students learning to build Web pages much these days.—@digiphile
@digiphile @ndw @w3c Indeed. Tools. Tumblr, Twitter, Medium, etc. As with open source software, the Q becomes, does that reliance matter?—@JamieXML

In a conversation that started on Friday at 10:21am

Delightful tour de force: "HTML5 is the New Flash" @stevenpemberton #XMLAmsterdam —@ndw
@ndw @peteaven @stevenpemberton I would love to have heard that talk!—@SirRocket

Friday at 10:28am

RT @doctortovey: The war against #HTML5 has begun... Seize back the Declarative Web! #XMLAmsterdam @stevenpemberton —@ndw

Friday at 02:35pm

:-)FlashBack RT: Delightful tour de force: "HTML5 is the New Flash" @stevenpemberton #XMLAmsterdam (via @ndw)—@TVRaman

Friday at 06:40pm

@ndw Nice!—@TVRaman

Saturday at 08:12am

@ndw does his best photo face in #Amsterdam.—@doctortovey

Saturday at 11:35am

If your argument can be restated as "I don't have that problem, so why are you complaining," you should maybe stop arguing.—@kiplet

Sunday at 02:43am

RT @lmorchard: Why are ad blockers a thing again? And why did I uninstall Flash? Oh yeah "PageFair serves malware on the Economist" https:/…—@ndw

Sunday at 08:05am

RT @kendall: I don't want any part of this shit—@ndw

Monday at 01:58am

RT @Pinboard: If I can make you look like an ass by retweeting what you say, it’s not because I have some kind of odd superpower requiring …—@ndw

Norman Walsh (Sun)The short-form week of 26 Oct–1 Nov 2015

<article class="essay" id="content" lang="en">

The week in review, 140 characters at a time. This week, 13 messages in 11 conversations. (With 2 favorites.)

This document was created automatically from my archive of my Twitter stream. Due to limitations in the Twitter API and occasional glitches in my archiving system, it may not be 100% complete.

In a conversation that started on Thursday at 10:22pm

Following @edd, Verifying that +ndw is my blockchain ID.—@ndw
@ndw @edd Rather a slick way of advertising (blockchain)?—@dpawson
@dpawson @edd I don't think it's advertising, exactly. It's another angle on identity. Presumably the blockchain ID lasts forever.—@ndw
@ndw @edd Pondering how blockchain ideas / principles might be used by [data|doc]heads.—@dpawson
@ndw @edd MSDT jumps in!—@dpawson
@ndw hopefully it might be worth it something :)—@edd

In a conversation that started on Monday at 01:46am

@mojavelinux It appears that asciidoctor expands :docinfo: but asciidoctorj 1.5.2 does not? Or have I not passed in the right option(s)?—@ndw
@ndw It should work in 1.5.2, but the configuration will be much clearer in 1.5.3. Here's the current state:—@mojavelinux
@mojavelinux Well, it doesn't seem to. Is there a guide that explains how templates work? Where's the code or template that converts X to Y?—@ndw
@ndw There's no guide yet for how to make the templates. It's top priority for docs. Partial guide here:—@mojavelinux
@ndw I need more details to help you solve your docinfo problem.—@mojavelinux
@mojavelinux Re: more detali. I understand. Will try to construct a small example in due course. Buried in a big example now.—@ndw
@ndw I'll keep an watch out for your reply.—@mojavelinux
@mojavelinux Just a pointer: here's the template that turns this markup "..." into this output "...". I presume they follow a pattern :-)—@ndw

Monday at 04:15am

RT @labuzamovies: Reading an 1866 complaint that the advent of book selling on trains is making people less sociable because everyone stare…—@ndw

In a conversation that started on Tuesday at 04:12am

highly recc XML Amsterdam #xmlamsterdam ... @ndw going to speak ...hmmm trying to figure out if I can go!—@_james_fuller
.@_james_fuller You should! My talk is starting to come together. On review, literally called "nuts" and "one very sick puppy". Good times—@ndw

Tuesday at 05:44pm

RT @tommorris: HTML is for structure. CSS is for presentation. JavaScript is for modal pop ups and breaking "open link in new tab".—@ndw

Wednesday at 06:09am

Learning from the @TalkTalk_UK hack, we have DOUBLED our database encryption strength. Passwords are now protected by TWO rounds of rot13—@status_updates

Thursday at 09:52am

RT @sanityinc: Heisenberg's Release Uncertainty Principle says you can accurately know what the software will do, or when you'll get it, bu…—@ndw

Thursday at 10:05am

RT @Balisage: Balisage 2016 scheduled: pre-conference symposium 8/1/16, conference 8/2 - 8/5/16. North Bethesda, MD, USA Details: http://t.… —@ndw

Saturday at 08:25pm

Today, for a slightly generous definition of "day", I will cross two oceans and a continent in relative comfort and near perfect safety.—@ndw

Sunday at 01:30pm

Hello. My name is Inigo Montoya. You killed my father. I would like you to join my professional network on LinkedIn.—@er0tikka

Sunday at 07:35pm

RT @maradydd: @quinnnorton @ErrataRob shame is weaponised status. always has been. any society built on shame is doomed to hierarchy.—@ndw

Norman Walsh (Sun)The short-form week of 19–25 Oct 2015

<article class="essay" id="content" lang="en">

The week in review, 140 characters at a time. This week, 29 messages in 36 conversations. (With 6 favorites.)

This document was created automatically from my archive of my Twitter stream. Due to limitations in the Twitter API and occasional glitches in my archiving system, it may not be 100% complete.

Monday at 05:35am

RT @doctorow: Bad governments are elected by people who don't vote #cdnpoli #elxn42 —@ndw

Monday at 07:12am

XML Stars, the journal is out! Stories via @james_clark @ndw —@dominixml

Monday at 07:13am

Tech consulting firm advertises in the airport: "Some things just won't work." I'm not sure that sends the message they intended...—@ndw

Monday at 08:16am

RT @j4: "This is from the website [screenshot]". What website? If only there was some kind of unique locator for these things!—@ndw

Monday at 08:31am

RT @iand: Someone wrote up all the reasons why I don’t answer most phone calls—@ndw

Monday at 10:29am

@hunterhacker I'm just implementing my own evernote setup in MarkLogic. Everyone dies that, right?—@ndw

Monday at 10:32am

@gcarothers @github Well, they actually let me pay them for the service, that might scale.—@ndw

In a conversation that started on Monday at 10:33am

@dcm @Lightroom Never. Ever. Let software update automatically.—@ndw
@ndw I have failed you all! Never again. @Lightroom —@dcm

Monday at 07:10pm

I hate all these bloody Java frameworks. Why devs keep using them? No, you won’t die if you write some code yourself. #accidentalcomplexity —@sandromancuso

Tuesday at 12:53am

Hello Tokyo!—@ndw

Tuesday at 02:02am

I think the 300 might be the baud rate, but the mascot sure is cute!—@ndw

In a conversation that started on Wednesday at 01:39am

#AsciiDoctor→#DocBook 5→#HTML5→reveal.js (Yes, I know there's an AsciiDoctor backend for reveal.js; I want the DocBook xform elsewhere)—@ndw
@ndw Perfectly reasonable approach. That's the beauty of the DocBook converter. Options.—@mojavelinux

Wednesday at 06:34am

That thing where they still *cough* smoke in bars and restaurants in Japan. #notafan —@ndw

Wednesday at 06:43am

RT @nazgul: I love this quote from the ever amazing Gina Torres.—@ndw

Wednesday at 06:44am

RT @wjflowers: "No flying cars yet?", he wrote from a 2 inch by 4 inch pocket computer instantaneously to subscribers worldwide using only …—@ndw

Wednesday at 06:54am

"Is your money really safe in the cloud?" Over to you @Pinboard for appropriate snark.—@ndw

Wednesday at 07:44am

@koalie I'd be crazy not to!—@ndw

Wednesday at 09:12am

A hard science-fiction version of Back To The Future II where they die in space because Earth isn’t in same place 30 years in the future—@harrisj

Wednesday at 04:51pm

Owning a Mac is like playing a very slow-paced video game in which your character has to dodge iTunes updates—@GabrielRossman

Wednesday at 05:27pm

Doc Brown from 1985 and Doc Brown from 2015 can’t be together, because that would cause a pair of docs.—@wilw

Wednesday at 07:41pm

RT @tomcoates: Occasionally I get tweets from Evangelicals telling me to repent. I'm not going to repent. I'm an atheist and I'm not doing …—@ndw

Wednesday at 07:41pm

RT @tomcoates: You bloody repent for making Twitter less fun, you miserable bunch of joyless self-important arse badgers.—@ndw

Wednesday at 07:56pm

RT @AlecMuffett: Warrantless airport seizure of laptop “cannot be justified,” judge rules—@ndw

In a conversation that started on Thursday at 01:30am

My ~/Public folder (which I don't care about and would have assumed to be empty) is full of random TTF fonts. Nearly 500. WTF?—@ndw
@ndw Adobe Type Kit? :D—@gcarothers

Thursday at 07:12am

XML Stars, the journal is out! Stories via @ndw —@dominixml

Thursday at 07:15am

RT @kdrum: Red States Spent $2 Billion in 2015 to Screw the Poor—@ndw

In a conversation that started on Thursday at 10:22pm

Following @edd, Verifying that +ndw is my blockchain ID.—@ndw
@ndw @edd Rather a slick way of advertising (blockchain)?—@dpawson
@dpawson @edd I don't think it's advertising, exactly. It's another angle on identity. Presumably the blockchain ID lasts forever.—@ndw
@ndw @edd Pondering how blockchain ideas / principles might be used by [data|doc]heads.—@dpawson
@ndw @edd MSDT jumps in!—@dpawson
@ndw hopefully it might be worth it something :)—@edd

Thursday at 10:28pm

the classic story—@BananaKarenina

Friday at 12:13am

RT @mdubinko: Everything's eventually consistent.—@ndw

Friday at 03:31pm

Complexity is a bug light for smart people—@Pinboard

In a conversation that started on Friday at 09:29pm

So it turns out I've been paying ¥400/cup for the really awful coffee provided in this hotel room. That's...nice.—@ndw
@ndw is that yuan or yen? I really hope it's the latter.—@CanOfBees
@CanOfBees Yen, thankfully.—@ndw

Saturday at 06:27pm

Not that I felt I needed anyone's permission, but I thought this was a good read on ad blocking. /via ... someone—@ndw

Saturday at 06:28pm

Next: HND ✈ CTS. Good bye for now, Tokyo!—@ndw

In a conversation that started on Sunday at 03:02am

Happy 600th anniversary of the Battle of Agincourt. Longbows #FTW #literally —@ndw
@ndw Such a sad day... ;-)—@AlainCouthures

Sunday at 07:12am

XML Stars, the journal is out! Stories via @ndw @georgebina @JeniT —@dominixml

Monday at 04:15am

RT @labuzamovies: Reading an 1866 complaint that the advent of book selling on trains is making people less sociable because everyone stare…—@ndw

Norman Walsh (Sun)The short-form week of 12–18 Oct 2015

<article class="essay" id="content" lang="en">

The week in review, 140 characters at a time. This week, 49 messages in 60 conversations. (With 6 favorites.)

This document was created automatically from my archive of my Twitter stream. Due to limitations in the Twitter API and occasional glitches in my archiving system, it may not be 100% complete.

In a conversation that started on Thursday at 04:54pm

A tough call, even for a seasoned decision maker like myself. /cc @ndw #LinkedIn #XML —@gimsieke
@gimsieke @ndw "Does Norman Walsh know about looking uncannily like a werewolf?"—@doctortovey
@doctortovey @gimsieke I am an innocent villager.—@ndw
@ndw Can we agree on you’re the moderator? (Now thinking about rules for a demojam/werewolf mashup.) @doctortovey —@gimsieke
@gimsieke @ndw Now *that* is an exciting idea!—@doctortovey

Monday at 12:18am

RT @JPBarlow: Thanks to #WikiLeaks - still kicking it! - the vile TPP is visible at last. We still have time to stop it.…—@ndw

Monday at 09:13am

RT @doctortovey: Colleague: "Why is the adulting so difficult?" Me: "Because capitalism, systems of privilege, and the patriarchy". C: "FUC…—@ndw

Monday at 10:00am

"TPP" on Tweeted Times - top stories by @ndw, @bvernoux, @fheinz —@StormyCyclone

Monday at 07:38pm

My advice: Just block all of the ads, indiscriminately. Every one you can manage to. Scorched earth.—@McGrewSecurity

Monday at 07:40pm

So sorry your business model depends on my choice of what to execute and display on my turing machines—@McGrewSecurity

Monday at 08:59pm

RT @Pinboard: Two steps to better mobile design: 1) Make sure that the most critical elements of the page download and render first. 2) Sto…—@ndw

In a conversation that started on Monday at 09:04pm

Preparing to spend a few days in Tokyo (mostly working) and a week in Sapporo (also mostly working). Advice of all sorts humbly solicited.—@ndw
@ndw Yes, don't work so much while you're there. #nothelping —@kiphampton
@ndw don't work so much—@kendall
@ndw I documented extensively many of the highlights of my trips to Japan, including Tokyo—@koalie
@ndw don't get lost in Shinjuku Station's maze. you might never be able to get out. #almosthappenedtome —@rdeltour
@ndw 1. Take your camera (given). 2. Buy something in a dept store and have it wrapped. Exquisite.—@dpawson
@ndw I like touchscreen sushi like Genki or Uobei for low-effort meals alone. Tokyu Hands in Shibuya is great for unique gifts.—@jclip

Monday at 10:55pm

RT @Snowden: Richelieu: "Give me six lines written by the most honest man and I will find in them something to hang him." How many tweets h…—@ndw

Tuesday at 12:22pm

"hellos world" in arm assembly, as hand illuminated manuscript. #anachronisms—@mikeestee

Tuesday at 06:27pm

RT @Popehat: "I said this horrible thing, and was protected by the First Amendment, so you'll like me!" No. You're an asshole.—@ndw

Tuesday at 07:17pm

@Popehat @ndw Correct. And completely irrelevant.—@kendall

Wednesday at 07:49am

@koalie @olivierthereaux It looks great! I'll put it to the test next week!—@ndw

In a conversation that started on Wednesday at 08:40am

@torgo @medium Apparently, I need the app to comment. #facepalm No, I don't want your [expletive deleted -ed] app. Period.—@ndw
@torgo @Medium In addition, when, rarely, I do want an app that uses your API, it is almost a dead certainty that I don't want *your* app.—@ndw

Wednesday at 11:30am

I've lost track of where I encountered this, but it's fabulous. /cc @holliepoetry #immigration #poetry —@ndw

In a conversation that started on Wednesday at 03:44pm

@placeme @ndw any update on data export? Was just thinking I'd love to export my data ...—@ThedeTech
@ThedeTech @placeme Uh. I'm not going to use it if I can't get my data back out of it.—@ndw

Wednesday at 10:23pm

RT @stilkov: Top reasons your marketing department wants a native mobile app: 1. Illusions of grandeur 2. Fake revenue projections 3. Lac…—@ndw

Wednesday at 10:27pm

RT @fightfortheftr: Retweet this until it breaks. Then retweet it again. We need this all over the Internet now. htt…—@ndw

In a conversation that started on Thursday at 01:59pm

@shelleypowers Cool. Good luck! Hope you win all the fights with the light bulbs! :-)—@ndw
@ndw I refuse to lose to a light bulb. A motion sensor, maybe, but not a bulb.—@shelleypowers

Thursday at 02:02pm

@mollydotcom Uh huh.—@ndw

Thursday at 02:03pm

RT @mollydotcom: One of the reasons the Web is getting messier and more difficult to manage is because of #HTML5's blatant disregard for kn…—@ndw

Thursday at 02:06pm

RT @psd: Trying to process a CSV file with quoted fields spanning multiple lines with embedded XML containing double quotes. I think I need…—@ndw

In a conversation that started on Thursday at 02:08pm

@mollydotcom @svgeesus @glazou It's an appendix in The SGML Handbook. Might also be elsewhere.—@ndw
@mollydotcom @svgeesus @glazou I was thinking of Annex E, apparently an extract of ISO/IEC 9573, Techniques for using SGML. HTML like.—@ndw

Thursday at 02:30pm

@psd @ndw of whiskey?—@mathling

Thursday at 04:07pm

"Why did you decide to cure cancer?" "Centering shit in CSS was too hard."—@LittleMxSurly

In a conversation that started on Thursday at 07:58pm

@kendall My condolences.—@ndw
@ndw thanks Norm—@kendall
@kendall Excepting a photo of me in a dishpan bathtub at about age 1 with one gran, I never met any of mine. Alas. I heard they were great.—@ndw
@ndw he taught me a lot—@kendall

Thursday at 08:17pm

RT @ShawnKing: “Character assassination because she said something critical of A Popular Person.” This is why I’m a misanthrope. http://t.c… —@ndw

Thursday at 08:22pm

RT @RonDeibert: How is NSA breaking so much crypto?—@ndw

Thursday at 08:37pm

@TripIt Clickbait tweets? I want to have more respect for you than that, I really do. Please don't let me down. #tripitprosubscriber —@ndw

In a conversation that started on Thursday at 08:43pm

.@gcarothers Y'all know we're hiring and you won't see better, right?—@ndw
@ndw heh, last round with ML ended with “Well Norm works remote but that’s a special case”—@gcarothers
@gcarothers If that's important, we should talk. I used to be the only remote engineer; that's not true anymore.—@ndw
@ndw @gcarothers or, you know, come work with us on Stardog and really have fun... ⚡️—@kendall

In a conversation that started on Thursday at 08:45pm

@kendall I want to believe it would be a game changer on the grandest scale. I'm horrified that it might not be.—@ndw
@ndw well the odds that it's true are nearly zero and I have no idea how it could ever be confirmed. But if it—@kendall

In a conversation that started on Thursday at 09:24pm

.@mojavelinux I'm still trying to like AsciiDoctor. How can I add more document metadata (for the DocBook backend): abstract, for example.—@ndw
@ndw So to get an abstract, you just define an abstract block somewhere, then create or change the converter to make that output.—@mojavelinux
@ndw Btw, here's how you create an abstract for a section: == Section Title [abstract] -- any complex content here -- main content—@mojavelinux
@ndw But that's just one way to skin the cat.—@mojavelinux
@ndw This isn't unlike the DocBook toolchain in that sense. Except instead of XSLT, you can just write normal code (or templates).—@mojavelinux
@ndw We just provide default output because if we didn't, then it wouldn't be very popular :)—@mojavelinux
@ndw There's what Asciidoctor does by default (generic cases), then there's whatever you want it to output. That's the beauty of it.—@mojavelinux

Thursday at 10:29pm

RT @bsletten: I will feel like we have advanced as a species when hotels have 13th floors and rooms that end in 13.—@ndw

Thursday at 11:27pm

Friday at 05:28am

@psd @ndw Have you tried #pgloader yet? See —@tapoueh

Friday at 07:12am

XML Stars, the journal is out! Stories via @ndw —@dominixml

Friday at 08:41am

Logged into mall wifi. Selected "don't send me spam." Spam. Unsub form includes "I only wanted wifi, didn't want to receive emails" reason—@ndw

In a conversation that started on Friday at 03:02pm

@kendall Six is plenty, in fact. —@ndw
@ndw Yeah, I'm a boss so I have to do a bit more each day, but 8 is enough if you avoid stupid ritual and work *smart* and intensely. IMO.—@kendall

Friday at 04:39pm

RT @cenewman0: Live tweeting speciation class: this appeared on slide -- I APPROVE. #evolution —@ndw

Friday at 06:34pm

Superb. 'The God of the Old Testament is arguably the most unpleasant character in all fiction...' - @RichardDawkins —@Woodlandbookshp

In a conversation that started on Friday at 10:40pm

@amyvdh Buckaroo! Blue blazer irregular at your service! See you in Sapporo?—@ndw
@ndw /me returns a Blue Shield salute. Great, see you Sapporo!—@amyvdh

Saturday at 12:20pm

RT @dan_schmidt: I'll say one thing for Twitter, it finally got me to stop putting two spaces after a period.—@ndw

Saturday at 07:30pm

RT @mathling: Every accumulation of data is an attractive nuisance. We need to start holding accumulators responsible for the harms to the …—@ndw

Saturday at 10:21pm

.@dan_schmidt @ndw Twitter age was prophesied by Unicodamus. Lorem ipsum. Justi fication. 36 chrs Lorem ipsum. Justi fication. 36 chrs—@MartianOdyssey

Saturday at 10:50pm

RT @AshiLabouisse: Will you marry me? = A marriage proposal. Will, you, Mary, me? = A foursome inquiry. #PUNCTUATION MATTERS.—@ndw

Saturday at 11:30pm

More #PUNCTUATION MATTERS. @doctortovey @ndw—@MartianOdyssey

Sunday at 12:18am

Voormalig docente Marthe Uenk van @ndw is aan de blog: —@WF_Mobiliteit

Sunday at 04:59am

When I write 50 Lies Users Believe, I'll definitely include "The nice man in the Vodafone shop knows how to transfer data between iPhones".—@tommorris

Sunday at 07:39am

@_james_fuller fyi, I settled on dnsmasq for managing container hostnames.—@ndw

Sunday at 07:41am

RT @randfish: The science of poverty is getting clearer: —@ndw

Sunday at 09:50am

If you didn't have one before...—@ndw

Sunday at 03:47pm

RT @aspyker: Wish XML won on the web. apps/json/web20 great for UI, but man does it make the web unqueriable. optional structure isn't ba…—@ndw

Sunday at 03:53pm

RT @JamesGleick: Reminder that the Trump thing really isn’t all that funny. —@ndw

Sunday at 10:06pm

@_james_fuller Please share what you learn, I'm definitely still a container novice.—@ndw

Sunday at 11:01pm

RT @matthew_d_green: On the subject of Twitter censorship, this is a pretty interesting (and worrying) result. http:… —@ndw

Sunday at 11:02pm

RT @jedisct1: Retweet if you still type “sync” before “reboot”. Or even “sync; sync; sync”.—@ndw

Sunday at 11:03pm

RT @dale_e_ho: "there is something fundamentally wrong when ... elected officials go out of their way to make voting difficult"… —@ndw

Sunday at 11:06pm

RT @logtournament: Shots. Fired. —@ndw

Thursday at 09:52am

RT @sanityinc: Heisenberg's Release Uncertainty Principle says you can accurately know what the software will do, or when you'll get it, bu…—@ndw

Friday at 02:01am

RT @TechnicallyRon: If you let Google finish the lyrics to Frank Sinatra's My Way you create something beautiful. —@ndw

ProgrammableWebDaily API RoundUp: MOCA, Pinlogic, Picatic,, TipsGo

Every day, the ProgrammableWeb team is busy, updating its three primary directories for APIs, clients (language-specific libraries or SDKs for consuming or providing APIs), and source code samples.

Amazon Web ServicesNew – Saved Reports for the AWS Cost Explorer

The AWS Cost Explorer allows you to explore and forecast your AWS costs (read The New Cost Explorer for AWS to learn more). You can use Cost Explorer’s built-in filtering and grouping facilities to analyze your expenditures by Account, Service, Tag, Availability Zone, Purchase Option, and API Operation. For example, here’s a quick look at my personal AWS account, with charges grouped by service:

Earlier this month we added a new feature that allows you to save your Cost Explorer reports. After I create the report above, I can save it by entering a new name (Monthly Spend by Service) and clicking on Save report:

Then I can see the built-in reports, along with the ones that I have created, in the menu:

As you can see from the menu, I also created a report named Daily Spend by Service. I can view it by choosing it from the menu. The reports are saved on a per-account basis. They can be accessed by the “root” account and by any IAM users that have the proper permissions.

I spent some time exploring my own personal expenditures, and found that it was illustrative to explore my costs on a per-API basis. I can actually see the cost of the resources created by each API call:

The tall blue bar on the right indicates the charge that I incurred when I renewed one of the many domain names that I own.

Use it Now
This functionality was released earlier this month. If you have not used Cost Explorer before, you will need to enable it for your account (read Enabling Cost Explorer to learn more).



ProgrammableWebAccurate Background Adds International Search to Background Check API

Accurate Background, comprehensive employee screening solution provider, has enhanced its Accurate API to include international searches. With the latest version of the API, users can screen employees and candidates across a wide range of international markets.

Amazon Web ServicesAmazon EMR Update – Apache Spark 1.5.2, Ganglia, Presto, Zeppelin, and Oozie

My colleague Jon Fritz wrote the guest post below to introduce you to the newest version of Amazon EMR.


Today we are announcing Amazon EMR release 4.2.0, which adds support for Apache Spark 1.5.2, Ganglia 3.6 for Apache Hadoop and Spark monitoring, and new sandbox releases for Presto (0.125), Apache Zeppelin (0.5.5), and Apache Oozie (4.2.0).

New Applications in Release 4.2.0
Amazon EMR provides an easy way to install and configure distributed big data applications in the Hadoop and Spark ecosystems on managed clusters of Amazon EC2 instances. You can create Amazon EMR clusters from the Amazon EMR Create Cluster Page in the AWS Management Console, AWS Command Line Interface (CLI), or using a SDK with EMR API. In the latest release, we added support for several new versions of applications:

  • Spark 1.5.2 – Spark 1.5.2 was released on November 9th, and we’re happy to give you access to it within two weeks of general availability. This version is a maintenance release, with improvements to Spark SQL, SparkR, the DataFrame API, and miscellaneous enhancements and bug fixes. Also, Spark documentation now includes information on enabling wire encryption for the block transfer service. For a complete set of changes, view the JIRA. To learn more about Spark on Amazon EMR, click here.
  • Ganglia 3.6 – Ganglia is a scalable, distributed monitoring system which can be installed on your Amazon EMR cluster to display Amazon EC2 instance level metrics which are also aggregated at the cluster level. We also configure Ganglia to ingest and display Hadoop and Spark metrics along with general resource utilization information from instances in your cluster, and metrics are displayed in a variety of time spans. You can view these metrics using the Ganglia web-UI on the master node of your Amazon EMR cluster. To learn more about Ganglia on Amazon EMR, click here.
  • Presto 0.125 – Presto is an open-source, distributed SQL query engine designed for low-latency queries on large datasets in Amazon S3 and the Hadoop Distributed Filesystem (HDFS). Presto 0.125 is a maintenance release, with optimizations to SQL operations, performance enhancements, and general bug fixes. To learn more about Presto on Amazon EMR, click here.
  • Zeppelin 0.5.5 – Zeppelin is an open-source interactive and collaborative notebook for data exploration using Spark. You can use Scala, Python, SQL, or HiveQL to manipulate data and visualize results. Zeppelin 0.5.5 is a maintenance release, and contains miscellaneous improvements and bug fixes. To learn more about Zeppelin on Amazon EMR, click here.
  • Oozie 4.2.0 – Oozie is a workflow designer and scheduler for Hadoop and Spark. This version now includes Spark and HiveServer2 actions, making it easier to incorporate Spark and Hive jobs in Oozie workflows. Also, you can create and manage your Oozie workflows using the Oozie Editor and Dashboard in Hue, an application which offers a web-UI for Hive, Pig, and Oozie. Please note that in Hue 3.7.1, you must still use Shell actions to run Spark jobs. To learn more about Oozie in Amazon EMR, click here.

Launch an Amazon EMR Cluster with Release 4.2.0 Today
To create an Amazon EMR cluster with 4.2.0, select release 4.2.0 on the Create Cluster page in the AWS Management Console, or use the release label emr-4.2.0 when creating your cluster from the AWS CLI or using a SDK with the EMR API.

Jon Fritz, Senior Product Manager

ProgrammableWebDaily API RoundUp: Deepomatic, ImgServe, Receptiviti, U.S. Department of Labor

Every day, the ProgrammableWeb team is busy, updating its three primary directories for APIs, clients (language-specific libraries or SDKs for consuming or providing APIs), and source code samples.

ProgrammableWeb: APIsMOCA

The MOCA API offers a variety of services which can be accessed via MOCA's SDKs. The API can be used to automate beacon fleet management, connect your CRM data, schedule proximity campaigns, and query analytics reports. The MOCA API allows developers to access MOCA’s raw data for custom analytics and analysis. MOCA is a context-aware platform that uses big data solutions to get in-depth data analysis on users' behavior. It helps companies to make real-time data-driven decisions. This is a private API but developers can access to documentation by signing up for free here
Date Updated: 2015-11-20
Tags: [field_primary_category], [field_secondary_categories]

ProgrammableWeb: APIsSHOP.COM

The SHOP.COM API allows developers to integrate SHOP.COM services and content into their applications. This enables users of the developer's applications to search and view product details for exclusive SHOP.COM products, and 1000s of major and specialty brand products. Return data includes pre-formatted referral links for publishers that are registered with the SHOP.COM Affiliate Publisher Network (APN). SHOP.COM is an online store offering a wide range of products.
Date Updated: 2015-11-20
Tags: [field_primary_category], [field_secondary_categories]

Amazon Web ServicesNow Available: Version 1.0 of the AWS SDK for Go

Earlier this year, my colleague Peter Moon shared our plans to launch an AWS SDK for Go. As you will read in Peter’s guest post below, the SDK is now generally available!

— Jeff;

At AWS, we work hard to promote and serve the developer community around our products. This is one of the reasons we open-source many of our libraries and tools on GitHub, where we cherish the ability to directly communicate and collaborate with our developer customers. Of all the experiences we’ve had in the open source community, the story of how the AWS SDK for Go came about is one we particularly love to share.

Since the day we took ownership of the project 10 months ago, community feedback and contributions have made it possible for us progress through the experimental and preview stages, and today we are excited to announce that the AWS SDK for Go is now at version 1.0 and recommended for production use. Like many of our projects, the SDK follows Semantic Versioning, which means starting from 1.0, you can upgrade the SDK within the same major version 1.x and have confidence your existing code will continue to work.

Since the Developer Preview announcement in June, we have added a number of key improvements to the SDK, including:

  • Sessions – Easily share configuration and request handlers between clients.
  • JMESPATH support – Query and reshape complex API responses and other structures using simple expressions.
  • Paginators – Iterate over multiple pages of list-type API responses.
  • Waiters – Wait for asynchronous state changes in AWS resources.
  • Documentation – Revamped developer guide.

Here’s a code sample that exercises some of these new features:

// Create a session
s := session.New(aws.NewConfig().WithRegion("us-west-2"))
// Add a handler to print every API request for the session
s.Handlers.Send.PushFront(func(r *request.Request) {
	fmt.Printf("Request: %s/%s\n", r.ClientInfo.ServiceName, r.Operation)
// We want to start all instances in a VPC, so let's get their IDs first.
ec2client := ec2.New(s)
var instanceIDsToStart []*string
describeInstancesInput := &ec2.DescribeInstancesInput{
	Filters: []*ec2.Filter{
			Name:   aws.String("vpc-id"),
			Values: aws.StringSlice([]string{"vpc-82977de9"}),
// Use a paginator to easily iterate over multiple pages of response
	func(page *ec2.DescribeInstancesOutput, lastPage bool) bool {
		// Use JMESPath expressions to query complex structures
		ids, _ := awsutil.ValuesAtPath(page, "Reservations[].Instances[].InstanceId")
		for _, id := range ids {
			instanceIDsToStart = append(instanceIDsToStart, id.(*string))
		return !lastPage
// The SDK provides several utility functions for literal <--> pointer transformation
fmt.Println("Starting:", aws.StringValueSlice(instanceIDsToStart))
// Skipped for brevity here, but *always* handle errors in the real world :)
	InstanceIds: instanceIDsToStart,
// Finally, use a waiter function to wait until the instances are running
fmt.Println("Instances are now running.") 

We would like to again thank Coda Hale and our friends at Stripe for contributing the original code base and giving us a wonderful starting point for the AWS SDK for Go. Now that it is fully production-ready, we can’t wait to see all the innovative applications our customers will build with the SDK!

For more information please see:

Peter Moon, Senior Product Manager

ProgrammableWebHelloSign Unveils New eSigning Experience

HelloSign, an eSignature solution, announced today a completely revamped eSigning experience, hoping to make it easier to electronically sign documents from anywhere on any device.

ProgrammableWebRunscope Simplifies API Test Management With New Import/Export Functionality

Depending on Web service APIs to basically make or break Web or mobile applications, could potentially make some developers a little anxious. That is, if they weren’t confident in the tools they had to monitor and manage the situation. API test management platform, Runscope, is committed to providing the reliable tools that make the creation and management of API tests simple and effective.

Amazon Web ServicesAWS Device Farm Update – Test Web Apps on Mobile Devices

If you build mobile apps, you know that you have two implementation choices. You can build native or hybrid applications that compile to an executable file. You can also build applications that run within the device’s web browser.

We launched the AWS Device Farm in July with support for testing native and hybrid applications on iOS and Android devices (see my post, AWS Device Farm – Test Mobile Apps on Real Devices, to learn more).

Today we are adding support for testing browser-based applications on iOS and Android devices. Many customers have asked for this option and we are happy to be able to announce it. You can now create a single test run that spans any desired combination of supported devices and makes use of the Appium Java JUnit or Appium Java TestNG frameworks (we’ll add additional frameworks over time; please let us know what you need).

Testing a Web App
I tested a simple web app. It opens and searches for the string “Kindle”. I opened the Device Farm Console and created a new project (Test Amazon Site). Then I created a new run (this was my second test, so I called it Web App Test #2):

Then I configured the test by choosing the test type (TestNG) and uploading the tests (prepared for me by one of my colleagues):

The file ( contains the compiled test and the dependencies (a bunch of JAR files):

Next, I choose the devices. I had already created a “pool” of Android devices, so I used it:

I started the run and then checked in on it a few minutes later:

Then I inspected the output, including screen shots, from a single test:

Available Now
This new functionality is available now and you can start using it today! Read the Device Farm Documentation to learn more.


ProgrammableWebInstagram Shuts Down Feed API as Part of Platform Cleanup

On November 18, Instagram announced updates for a simplified policy that will make the platform more manageable by streamlining the supported use cases. This update comes at the expense of feed reading apps who will be unable to access users’ feeds once the Feed API is shut down.

ProgrammableWebLastest SDK for Android Wear Updates Permissions Model

Google wants developers to update their Android Wear apps, and soon. The company released a revised version of its Android Wear SDK, which includes several key, under-the-hood changes.


Updated: .  Michael(tm) Smith <>