If you’ve ever met me, you probably know that I really like trains, specifically the New York City Subway. I’m fascinated with the idea of moving 6+ million people around over 660 miles today. However, as with any public transit system, there are often reliability problems with the service.
When I’m standing on the platform for a while waiting for a train, my first question is always “is my train fucked?”
So I built a website - ismytrainfucked.com.
IsMyTrainFucked (IMTF) is written in python and intended to be an AWS Lambda microservice. I used Apex for function uploading, version management, and testing.
The way it works is actually pretty simple:
- MTA information is regularly loaded into DynamoDB by the
update_logfunction. A CloudWatch “scheduler” kicks this off every 15 minutes.
update_s3_sitefunction is invoked as a DynamoDB INSERT trigger, and a new
index.htmlfile is written to the IMTF S3 bucket.
With this, I don’t have to pay for a server running 24/7, and the cost of running this app is nearly zero. It was also really fun to learn about building an application that is embedded entirely into the AWS ecosystem.
As always, the source code is on github - PRs welcome!
header photo credit: Jackie Barr