This past week I needed to be able to read some data from a Google Sheet and then update a column for each row after processing it. This sort of thing should be simple, Google is built on APIs and has client SDKs for just about every language. I’ve also integrated with several Google Admin APIs previously so I expected this to be a breeze. I was wrong. I started out by reading the Quickstart for Sheets API with the PHP Client, but almost immediately I could tell it was not written for my use case.
Last year at php[tek] 2015 during the hack time I messed around and created a Docker image to run and test PHP7. It was surprisingly easy and I quickly learned that the app I was working on at the time ran fine in PHP7, good deal. So since then I’ve been awaiting the general availability release of PHP7 to move forward with upgrading my apps. The main thing holding me back was I just didn’t want to maintain an image based on compiling from source.
This year I decided to try to participate in the Global Hack day for Docker. Most of the Docker ecosystem of tools are based on the Go language and I’ve never worked with Go before. At work we run a private Docker registry to store some of our Docker images, but unfortunately it does not come with an easy to use interface for browsing the images stored in it or deleting them.
At work we’ve recently started using Amazon’s EC2 Container Service (ECS) for running Docker images in staging and production. In order to simplify our CI/CD process we wrote a script for triggering blue-green deployments. I wrote an article explaining the how and why over on the Codeship Blog, check it out: https://blog.codeship.com/easy-blue-green-deployments-on-amazon-ec2-container-service/
Over the past several months my team at work has been integrating Docker into our software development life-cycle. We’ve run into several road bumps and come up with solutions to work through them in order that we could have a consistent development experience on Docker. The good folks at Codeship published an article I wrote on the topic. If you’re considering using Docker I recommend you check it out to kick-start your process.
Based on my experience and previous series about the their APIs Nexmo asked me to write an article for publishing on ProgrammableWeb. Of course I said sure, that sounds like fun. So I wrote about Nexmo’s Verify API that makes end user verification quite simple and user friendly. Head over to ProgrammableWeb.com to read my article: http://www.programmableweb.com/news/end-user-verification-even-your-grandma-can-use/sponsored-content/2015/05/12
This is Part 4 in a series, you can read Part 1 here or Part 2 here or Part 3 here or Part 3.5 here. At this point in this series we have a complete PHP client for the Nexmo APIs. Hopefully I’ve been able to teach some good practices and designs in the process of developing it, but I know many of you test-driven-development advocates are probably screaming that I’ve left out the most important part: testing, and testing early.
This is a small follow up on Part 3 in a series, you can read Part 1 here or Part 2 here. In Part 3 of this series we completed API clients for Nexmo’s SMS and Number Insight APIs. Today I implemented the rest of the clients for Voice, Number Verify, and Developer APIs. As I’ve hit on several times, using the Guzzle Web Service description way of developing an API client can save a lot of time.
This is Part 3 in a series, you can read Part 1 here or Part 2 here. Ok, quick recap: in part 1 we explored what API calls to the Nexmo API look like to send an SMS and a few ways we could write them. Then in part 2 we built out the ground work for a Guzzle web service client and implemented the Send SMS API with it.
This is Part 2 in a series, you can read Part 1 here. In Part 1 of this series we laid a foundation for consuming the Nexmo SMS API and covered a few ways to interact with it. In this part we’ll create the actual Guzzle Web Service Client to interact with it to demonstrate how simple it can be. The first thing we’ll do is get our project space ready by creating a folder (these steps assume you’re working on a Mac or Linux based system):