Ian Lewis Ian Lewis is a web developer living in Tokyo Japan. His current interests are in Go, Python, alternative databases and rapid web application development.
About Me...

HTTP/2 and Go

> UPDATE (2015/10/15): HTTP/2 is now enabled by default for http servers in tip and will be released as part of Go 1.6. That means that you will be able to create HTTP/2 servers without even calling `ConfigureServer()`. > >> At #golang tip @HTTP_2 server now enabled by default. https://t.co/dcaTfboGVe & https://t.co/c8xbVtBqRe Thx @enneff, @bmizerany & others! >> >> -- Brad Fitzpatrick (@[...]

Cross-Region HTTP Services on Container Engine

We recently released a new tutorial on using Google Cloud Platform’s HTTP load balancer with Container Engine. This is really exciting because it opens up lots of possibilities based on the features of the HTTP load balancer. The HTTP load balancer enables you to route traffic to different backends (Container Engine clusters, normal Compute Engine instances, etc.) based on the URL. But, the m[...]

Testing Django Views Without Using the Test Client

The normal way to test Django views is via the test client. The test client fakes being a wsgi server and actually makes an HTTP request through all of Django’s request routing machinery. There are a number of reasons why this isn’t an ideal approach. ## Tests are Slow When you use the Django test server, you are making an HTTP request from the WSGI server level on up. This invokes logic fo[...]

Using Kubernetes Namespaces to Manage Environments

One of the advantages that Kubernetes provides is the ability to manage various environments easier and better than you have been doing. For most nontrivial applications, you have test, staging, and production environments. You can spin up a separate cluster of resources, such as VMs, with the same configuration in staging and production, but that can be costly and managing the differences be[...]

Deploying Go Servers with Kubernetes on Container Engine

> UPDATE (2015/07/13): Now using the v1 API. > > Cross posted on medium I was trying to get a Go app running on Container Engine and couldn't quite find what I was looking for. There are guides out there about how to use Go and Docker, and how to use Kubernetes but but not many about Go apps and Container Engine. I also found it easy to deploy apps but most guides lacked information on bes[...]

Why I Joined Google

As some of you may or may not know, I joined Google as a Developer Advocate on the Google Cloud Platform Team in January. I just completed my first 3 months and, like many others, it's been a whirlwind experience. The sheer amount you need to learn and get used to is overwhelming. Google has been doing a lot since it started almost 20 years ago and it shows. There is a huge amount of built-up[...]

Orchestration with Fabric #1

When figuring out how I wanted to deploy my website I had a few things that I knew I wanted. I wanted to be able to create my server(s), provision them, and deploy the app all from one tool. This will be the first in a series of posts about how I used Fabric to achieve that. Tools like Vagrant can be used to create servers and provision them, but deploying an app using a provisioning tool li[...]

Javascript Templating Languages

I have been looking at JavaScript templating libraries recently for a personal project and I'd like to write about my thoughts here. Up until now, I had only really needed to use JavaScript on the client side, in the browser. While most libraries will work on the server side as a matter of course, many aren't particularly good at rendering entire documents. I wanted something that would be e[...]

Pickling Objects with Cached Properties

Python descriptors allow you to create properties on python objects that are the result of executing some code. One of the simplest ways of doing that is using the `@property` decorator. Here, accessing the `myprop` will call the method and return the resulting `"data"`. class MyClass(object): @property def myprop(self): return "data" [...]

Some General Trends in Programming Languages

There are a number of next generation of languages that have come out and are becoming popular in recent years that are trying to use what has been learned from large development projects. Some of the more popular languages aimed at servers are Go, Rust and Haskell. Others like TypeScript, and Dart are targeting the client side as well as server side applications. There are some common threa[...]