htty: Ruby console application for interacting with web servers

htty screenshot

From the htty home page:


  • Intuitive, Tab-completed commands and command aliases
  • Support for familiar HTTP methods GET, POST, PUT, and DELETE, as well as PATCH, HEAD, OPTIONS and TRACE
  • Support for HTTP Secure connections and HTTP Basic Authentication
  • Automatic URL-encoding of userinfo, paths, query-string parameters, and page fragments
  • Transcripts, both verbose and summary
  • Scripting via stdin
  • Dead-simple cookie handling and redirect following
  • Built-in help

The things you can do with htty are:

  • Build a request — you can tweak the address, headers, cookies, and body at will
  • Send the request to the server — after the request is sent, it remains unchanged in your session history
  • Inspect the server’s response — you can look at the status, headers, cookies, and body in various ways
  • Review history — a normal and a verbose transcript of your session are available at all times (destroyed when you quit htty)
  • Reuse previous requests — you can refer to prior requests and copy them

Article: Parallel Change (AKA expand and contract): Pattern to safely make backward-incompatible changes to an interface

Parallel Change

From the article:

Making a change to an interface that impacts all its consumers requires two thinking modes: implementing the change itself, and then updating all its usages. This can be hard when you try to do both at the same time, especially if the change is on a PublishedInterface with multiple or external clients.

Parallel change, also known as expand and contract, is a pattern to implement backward-incompatible changes to an interface in a safe manner, by breaking the change into three distinct phases: expand, migrate, and contract.