« Back to home

Serverless Analytics

I’m annoyed by Google’s Analytics. It works great, but it’s heavy and overkill for my needs. Not to mention that it’s very privacy-intrusive. It’s not like I don’t give Google all my data already, but perhaps you don’t make that same choice, and you shouldn’t be forced into it simply by visiting my website. I’ve been looking for a solution that lets me see what content folks are looking at and where they’re coming from, while being extremely cheap, and easy to maintain.…

Read more »

Advent of Code 2022, Day 16

I’m doing Advent of Code 2022, and Day 16 was - in the parlance of our time - a doozy. The problem presents a cyclic graph with each edge costing 1 second (weight of 1), and nodes have state (on or off), it takes 1 second to turn the node from off to on (default off), and when a node is on it contributes a certain amount of benefit each following second.…

Read more »

The Benefits of Lazy Evaluation

I was solving Advent of Code this morning and generally thinking about programming when an event from my weekend struck me as an excellent example of the benefits of lazy evaluation. Allow me to explain. My wife is pregnant, and loves chewing on pellet ice. You know, the kind from Chic-Fil-A or Sonic. Well, it was Sunday and my wife was out of pellet ice, so it fell on me and the kid to go get some.…

Read more »

Exploring VPC Networking in AWS

This is a tutorial for a class I’m teaching right now.

Amazon’s documentation of Virtual Private Clouds (VPC) is excellent. It is in-depth, and covers many use cases. It’s too complicated for the class I’m teaching though.

This tutorial will cover the topic of creating Internet-accessible and non-Internet-accessible EC2 instances within the same VPC, by hand within the AWS Console. At the end we’ll have one Internet-accessible Linux box which will be able to talk to a second, non-Internet-accessible Linux box. The instances will be accessible on ports 22 and 4000 from anywhere.

Read more »

AWS Lambda Function URL Hello World

The ability to create a URL to AWS Lambda functions has existed for a long time - but has never been as easy as it is today. In April AWS announced Lambda Function URLs, and now adding a world-usable non-authenticated URL can happen in the Lambda function creation wizard.

With great power comes great foot-gun though… When the whole world can easily access your Lambda function URL, without authenticating, the whole world can run up your AWS bill easily.

Delete your Lambda function when you’re done with this tutorial

This blog post is a tutorial for creating a simple Hello World application using this new Lambda feature. I’m teaching some folks in my unit how to use AWS, and while there are many Lambda Hello World tutorials out there I didn’t find one that was quite right. This tutorial will go through almost the simplest setup possible, deploying Python code at a URL, then will iterate on the initial code to demonstrate some basic computation.

Read more »

Rust Number Conversion - Don't Follow the Book...

Bottom-Line Up Front: I think as should be harder to use for Integer conversion in Rust. I recommend you use TryFrom/TryInto instead. Here’s how I recommend doing it (more complete example of right/wrong at the end): use std::convert::TryInto; fn main() -> Result<(), Box<dyn std::error::Error>> { let orig: u64 = u64::MAX; let ti_u64: u64 = orig.try_into()?; let ti_i64: i64 = orig.try_into()?; let ti_u32: u32 = orig.try_into()?; Ok(()) } I’m at an intermediate level with the Rust programming language.…

Read more »

Using AWS Lambda as Proxy

AWS Lambdas are some of the original “serverless computing” implementations. These little bits of code run when you hit an API endpoint, taking whatever inputs you provide and returning the output. They can be written in many programming languages, including my favorite: Python 3. So I wondered - could I use this to build a simple little proxy at a URL? Why not, right? They can run any Python code… If I wanted to, I could use the result to evade perimeter firewalls that might be blocking many arbitrary destination hosts, but not AWS assets.…

Read more »