A sea of roofs at Thamesmeade (photo by author)

If you read back over my adventures with AWS Lambda functions over the past few months, you may not be surprised to see my attention has turned to wanting to explore bolting an API in front of a Lambda function. There is some method in this madness: while I’m happy with the Lambda based pipeline for processing and archiving photos, I really would like to put a web interface on it to make it easy to browse through the photos. My initial thought was to just periodically build static web pages (since I’m organising by date), but on reflection decided…


oval stone with the word “Tranquility” and a Chinese character engraved on it.
Tranquility — Photo by the author

If you’ve read any of my previous writing, you will have noticed I’m a fan of services that don’t involve me directly building and managing a server anywhere. Call them “Serverless”, call them “X-as-a-service”, the crux for me is that I can focus on using the service and not worry much about where and how it runs.

CodeArtifact falls squarely into that category for me. I recently wrote about building a serverless CI/CD pipeline for Go code. For Go, the ultimate output of the pipeline was an executable published into an S3 bucket. …


Or, “How I built Flickr with some events and a pub/sub queue”

Wind blown snow on the side of a tree
Image by the author

In my last note, I talked about how I set up some serverless code build pipelines on AWS to assemble Go code into a Lambda function. At the time, I mentioned that I would be ploughing on into writing up how I used those Lambdas to build — or at least move toward — a personal photo archiving service.

To recap what I want the service to do: I want a place in S3 that I can drop a collection of photos, then have The System have a…


Bo the dog in the winter sun. Photo by the author

Or, “How I built Jenkins with a few lines of Terraform and some Christmas Cake”.

Almost a year ago I wrote up my comparison of Wasabi and AWS S3, and hinted at the end that I was going to use Wasabi as part of a personal system for archiving photos. Well, 2020 got fully up to speed around then, and my plans were thrown into disarray.


A dog on a dirt track, looking back at the camera

Over the holiday period I finally settled down to spend some time building a photo archiving service for personal use — you’ll hear more about that incoming days. This also meant that I buckled down to start writing some serious Go code, rather than playing around with initial tutorials and lessons. Here’s how it unfolded.

So, first, some caveats. This is not a how to article. It’s not even a this is how to do AWS Lambda with Go. It’s a quick survey of some of the things I learned, and the journey I went on. Part of that journey…


Evening sun on the Thames — Photo by the author.

If you start paying some attention to keeping safe on line, it doesn’t take long before you start seeing articles — and advertisements — telling you that you need a VPN. So then — do you need a VPN?

No.

To be a bit more accurate: probably not, under most circumstances.

It might help if I talk about what a VPN is. I could start by saying it’s a Virtual Private Network, but that’s not going to help. Let’s go back a bit. At the highest level, when your laptop or phone is communicating with a remote service, we might as…


There are a handful of problems that keep recurring across my decades of working in information technology. Some problems are simple to address, some are always annoying, and a few of them seem doomed to need re-solving each time.

Photo by the author

The one on my mind today is that of addresses, and locations. The crux of the problem is this: addresses and locations are two very different things, and yet information system designers and implementers persistently and repeatedly mix the two up, and fail to grasp the subtle complexities of either.

I’ve struggled with the consequences of this in many different arenas…


Russian dolls
(Russian Dolls — photo by myself)

I love scams. I love the improbable email, and the cunning SMS tricks, and the eternal optimism of the inexperienced con artist. There are few things in the world of technology, and the world of information security, that reveal so much humanity as scams.

There’s one simple technique to inoculate yourself against most scams:

If it sounds too good to be true, it probably is.

The thing about scams is that they appeal directly to our emotions. …


Sunset over the water with a bridge in silohuette

Last time I wrote I spoke at some length about passwords, and why you should use a password manager. The nice thing about sophisticated password managers like 1Password is that they usually provide a way to make your passwords shared across your various devices — laptops, desktops, tablets, phones and even smart watches. The big drawback to that is that there is some risk of your passwords being exposed if your device is stolen or used by someone else.

It’s not only passwords that are a problem with mobile devices. For convenience we usually have them set up so that…


If you look online for advice on keeping safe online, two pieces of advice that are usually at or near the top of the list are “use a strong password” and “use a password manager”. Great advice, but useless if you don’t know why. What’s a “strong password”? One that bench presses it’s own weight? A password manager? What does that even mean?

I’ll try to unpack those and explain why “strong password” and “password manager” are actually good advice, and at the top of the list. …

Robert Hook

Founder and CTO of Little Dog Digital, with a belief that technology can be simple, easy and fun. 30+ yearsbuilding robust, secure data driven solutions.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store