TL;DR: Update your Github Profile Readme dynamically with recent blog posts. There’s an example (profile and code).
Github Profile Readme Github introduced the option to a add profile readme, which is a special repository that is used to display a readme on your profile page. I wanted to post links to my recent blog posts there, so I wrote a simple python script to check for the latest X posts, and update the readme with links to them.
TL;DR: cleaned up a simple chatbot module that I wrote in Python, originally as a way to impersonate a friend in my Slack chat.
How it started I wrote a chatbot in python to impersonate one of my friends on Slack. It was a fun project, but originally I set it up a pretty hacky way. Here’s an example of what it looks like integrated into slack:
Ok so that’s a pretty goofy impersonation of a friend of mine (littered with inside jokes) - but it can actually be useful.
TL;DR: this a short post about the configuration steps I took to get django running with the GDAL extension and postgreSQL/postGIS backend. These notes are what it took to get it deployed on GCP Cloud Run, and to use Github Actions to run automated tests on push or pull request. Pretty straight forward, but I had to iterate a few times to get it right so hopefully this helps someone else.
TL;DR - Using a Markov Chain to model your historical sales pipeline data can help you understand the probability of eventually closing a deal based on (1) the stage the opportunity is currently in and (2) your historical data. This lets you estimate the future value of your current pipeline based on your own past data.
What is a Markov Chain? It is a mathematical model used to describe how probabilistic systems or processes evolve over time.
TL;DR - Here’s a web app to list labelled traffic cam images from the RI DOT website. I used YOLO (You Only Look Once) to detect objects (vehicles) in the images and FastAPI to serve the results to a React app. The displays the cam images and results and uses LeafletJS to display the cameras on a map. The backend is hosted on Railway and the front end on Github Pages.
TL;DR - Here’s a list of shipwrecks plotted on an interactive map, all over the Narragansett Bay and greater New England area.
Motivation At FarSounder I work on the development software of 3D Forward Looking Sonar products. Part of that development process of course includes collecting data from a lot of different situations and running it through some processing algorithms to evaluate performance and make improvements. To that end, we’re often out on the Narragansett Bay collecting data with the system, and always looking for areas in the bay with interesting features that we can use to test and benchmark our algorithms (pilings, super steep shoals, rock piles, piers, etc).
TL;DR - choose either the option containing the largest number, or the fewest tiles and you’ll be ok!
Read on to learn more…
What am I talking about? Over the summer at a friends house, I was presented with an “old bar game” that I was completely unfamiliar with. It’s a wooden tray, with the numbers 1-12 printed in ascending order on little wooden tiles.
Here’s an example of what it looks like:
Overview Memoization or memoisation is a method used to optimize programs. Usually, at least in my experience, it’s one of the first topics introduced when dynamic programming algorithms are being discussed. With a quick google search you can find the Wiki or a trillion other blogs about it - most will show the canonical example - the “hello world” of the topic - that is, using memoization to optimize a recursive implementation of a function that generates the n-th Fibonacci number (or sometimes a function computing factorials).
In celebration of pi-day, let’s look at a method of computing pi using random numbers that is often presented in probability, statistics or other classes, as an elementary example of using random sampling and / or simulation.
In my case, the first time I remember seeing / hearing about this example was in a probability class, however we didn’t actually write any code to try it, we just looked at the idea.