2024
Selfhost Timetagger on a Raspberry Pi
A few weeks ago I started looking into options for time tracking software. The goal is to be more aware of how I spend my time throughout the day.
2023
CrystalConf 2023
Exciting news for me: I gave a talk at CrystalConf 2023!
Keeping up with my cat’s 💩 using a Raspberry Pi
As a former dog owner and first time cat dad I was amazed at how cats are “potty trained” practically from birth. I was prepared to deal with the smell when having to clean the litter box. However, I didn’t expect their bowel movements (💩) to carry a punch that would stink up half my apartment.
Background jobs for Kemal server in Crystal lang
Yet another post about the Battlesnake project I’ve been working on while diving in Crystal lang.
Database for Kemal server in Crystal lang
This is another post about the Battlesnake project I’ve been working on while diving in Crystal lang.
Algorithms and standard library modules in my Battlesnake
The first post in the series walked through the code of my current strategy. This one will share a few of the learnings from writing the utility algorithms in the project (as examples for) where I used Crystal’s standard library modules.
Documenting a Crystal open source project
This post is a quick overview of how Crystal lang built-in documentation features work and an easy setup to host them for free for Open Source projects. A compilation of things I’ve seen across Crystal repos and applied on mine.
Deploy a Crystal app with Docker and Opentelemetry
This is the continuation of the previous post about a Battlesnake server. This one will talk about what the deploy process looks like and some Opentelemetry data collected from it.
Learning Crystal with Battlesnake
Recently I’ve been interested in Crystal lang so I worked on a Battlesnake implementation to get more practice under my belt. I’m sharing an overview of it in this post and the code is open source on GitHub.
Contributed to the Crystal programming language
When I was starting out with coding in college I never thought I’d contribute to a programming language codebase. A small documentation fix of mine was included in 1.7.0
and I’m counting it as one, so this is the celebratory/milestone post for the occasion.
2022
Back to Top ↑2020
Everybody hates CSRF
The title of this post is a reference to the Everybody hates Chris TV show, which felt punny and suitable as I ran into some interesting problems in the last few weeks having to do with CSRF.
libusb backend for adb on macOS
For the past week I was stuck on what felt like a dead end. Although a bit more comfortable now than where I stood a few weeks ago I’m still learning the ropes of Android development, and this problem caught me outside my comfort zone.
The year is 2020
The year is 2020 and the world is upside down. It started off as a very promising year and I’d prefer to keep that positive mentality regardless of difficult times brought in by a global pandemic. I like to think stories of greatness are intrinsically elevated by the greatness of the challenges faced and eventually conquered. With this logic in mind we are living in a time of opportunity.
Browsing a localhost server from any device in your LAN
For most of us, a local development server proves to be good enough to get our day to day coding done. Even mobile device displays can be tested quite well on Chrome (or other browsers) using built-in developer tools. There are times though, where using a real device is better or even necessary.
2019
Elastic Beanstalk Apps using Docker Containers
This is a walkthrough of lessons learned from hosting a project on Elastic Beanstalk using Docker Containers as deployment strategy. I’ll link to documentation as much as possible and avoid explaining Docker/AWS basic concepts to try keep things short.
Customizing Jekyll Themes
After migrating my website/blog to Jekyll on GitHub pages I was left with this lingering feeling: The theme I was using felt too “stock/off-the-shelf” even after a few color tweaks. I gave customizing the theme a try instead of coding it from scratch and learned a thing or two along the way.
Reminders
Ideas pop in and out of existence unexpectedly, that’s my experience at least. This one professor from college always comes to mind when an idea is lost because I failed to write it down. He spent a few classes discussing with us some productivity/time management methods like Get Things Done, Eisenhower Matrix and others.
PostgreSQL backups to S3 with retention limits
This is a bit of an update on the latest version of Martilla. The feature introduced that I’m more excited about is the ability to limit the retention of your backups.
Headless Chrome - Dual mode tests for Ruby on Rails
Headless tests are necessary for CI environments and very useful for unobtrusive local development. No need to ditch the driver that directly controls the browser though, there’s lots of debugging value in being able to switch between both modes.
Martilla - A simple backup tool for simple everyday use
Martilla is a project I’ve been working on recently. It’s a CLI tool to help automate database backups. It’s main objectives are to remain modular, configurable and simple to understand.
GitHub pages & Jekyll
Instead of hosting this site myself any longer I’ve finally decided to move over to GitHub pages. This probably isn’t an interesting blog post for anyone other than myself. I just wanted it out there for the record.
Kubernetes integration with Rake tasks
Activek8s is a gem that relies on certain conventions to provide a thorough Kubernetes integration on a set of Rake tasks. The gem is a byproduct of a project that makes use of Kubernetes to orchestrate our services and other tools (Redis, CI/CD, logging, etc). This is not the absolute truth, it’s only a solution that worked for our team and we open sourced on GitHub.
2018
AKS easy as ABC
This is a “walkthrough cheatsheet” from my initial experimenting with AKS (Azure Kubernetes Service). Everything here can be run using Azure’s Free Account trial.
Tying Let’s Encrypt and Docker Swarm together
It’s no secret that Kubernetes has seen a booming interest in the past year or two. It’s also known that its learning curve is steep and its complexity remains relatively high. Because of this I’ve been interested in striking a simpler alternative in Docker Swarm for a while now. The following is my experiment for setting up a Swarm cluster that is able to publish different services using Let’s Encrypt SSL certificates with ease.
2017
Back to Top ↑2016
Publishing services using docker-compose and NGINX with HTTPS
This post will break down an example setup to deploy multiple HTTP services secured with TLS using docker-compose and an NGINX reverse proxy. I already had an SSL certificate for this website and figured my experiments could benefit from HTTPS, so here we are.
Swarm2k
Open-source software is a beautiful thing. Whether you’re coding, documenting, giving feedback, etc. there is something bigger than you out there. We live in a time where we can ride the whale wave together, regardless of where you happen to live.
Lightning talk
Something big went down last Tuesday, at least for me. Not only @mattfgl gave an amazing talk on kubernetes but I got to step in front of a room packed with fellow Docker enthusiasts to give my first lightning talk ever, on my Dockerized tests in a dockerized Jenkins blog post. Here are the updated slides
Let’s get swifty
I’m surprised by the fact I haven’t stumbled upon a single article with this title and the proper Rick & Morty pun (#FreeRick). Anyways, no backend code tonight, it’s been a long couple of weeks at work and university so this will be a short entry with a couple of patterns I’ve picked up around working with swift. Just some random jiberish that I will most likely find useful in the future.