Articles

Your time starts now: when Taskmaster uses proxy metrics
Disclaimer: this post is just an excuse to talk about some of my favourite topics: Taskmaster and complaining about metrics pitfalls. On Friday evenings, I have a ritual. I make a simple egg-based dish, grab a cold beer, and put on an episode of Taskmaster. Currently, I’m re-watching Series 7. While it looks like a comedy show about comedians doing ridiculous things for a golden bust of Greg Davies, a task reminded me of a typical metric pitfall.
Complete your Go Testing Pyramid: Single-Service E2E Tests
An often overlooked level of testing in the pyramid is the one between e2e full scale tests and component integrations tests. They could be called single service e2e tests, or they could be defined as integration tests (as they test the integration of service components). In my opinion this intermediate level of testing strikes a good balance between thoroughness and speed, and when implemented in Go they consist of building the binary as close as possible to production and to execute it locally, with local or mocked external dependencies (databases, apis, …).
Applying DI to IaC (Terraform edition)
Use Dependency Injection principles in Terraform modules to improve code organization, reusability, and maintainability by making dependencies explicit and centralizing shared configurations.
Simple Req Cookie Jar
A simple req cookie jar plugin. It can be used when automating or scraping websites that implement cookie based sessions. The cookies are set using set-cookie header and are sent back to the server in the headers of each following request. The implementation is naive and probably misses advanced and corner cases.
Android Profiles and DIY Launchers
My current job does not provide a company phone but allows to set the company google account on the personal devices, the account does not install a separate profile, I initially just added the google work account to my phone but felt wrong. Randomly on hackernews or reddit I found out that is possible to install TestDPC that allows to separate accounts for applications, exactly as if a work profile is enforced. This is nice and good but my DIY launcher did not support work profiles, so I rolled up my sleeves and after few too many searches I was able to implement it. The following is a summary of what is needed to support work profiles in a launcher, with the hope it can helps anyone looking for similar information.
#genuary #genuary1 Particles, lots of them
Build your own launcher: Neurhome
!!!! TL;DR; I became accustomed to the features of an experimental Nokia Android launcher, and during the pandemic, I rebuilt it using Flutter and then again with Kotlin Compose. I'm the only user, and anyone can download it from https://github.com/carlo-colombo/neurhome/releases. !!! 2016-2019 Z Launcher Z Launcher was an experimental launcher from Nokia that learned users' application habits based on the time of day, day of the week, and location. It also allowed users to quickly search for applications and contacts by scribbling letters on the home screen. When the experiments ended, I was still able to retrieve the APK from an online repository. However, the layout eventually broke on my Pixel 3a, and I had to abandon it in favor of the default launcher.
jq fzf powered filtering
When needing to explore a JSON file for a long time I just reached into my history and looked for a oneliner that I copied from a github gist echo '' | fzf --print-query --preview "cat *.json | jq {q}". This worked quite well, but I have now decided to improve it leveraging the fzf features.
Introducing Elixir Buildpack

This is something I am working on (and off) for the last year, it started as a way to play with Elixir and Cloud Native Buildpacks but then I started to use it to create images to deploy on a small k3s Kubernetes cluster I maintain.

Deploy TiddlyWiki on Kubernetes

I discovered TiddlyWiki reading the blog of the late Joe Armstrong (of Erlang fame). After reading a post about Erlang and Elixir I started looking into other posts and I found his introduction to TiddlyWiki. The author presented how was using the wiki as his blog and as todo list systems.

I periodically start to investigate, use for a few weeks, and then abandon todo list systems. I went through at least Trello, Google Tasks, Google Keep, textfiles, command line tools, and probably some mobile app. I did not experiment with these systems for a while so I decided to give it a go. As bonus point it can be used personal knowledge base and it seemed infinitly configurable and extendable with JavaScript. A few minutes and I downloaded the one html file that is all that is needed to start use TiddlyWiki.

Decorate functions using macros in Elixir

After I decided to make public a telegram bot to monitor bus time in Dublin (@dublin_bus_bot). Before the release I became curious to see how many people will use it (spoiler: just an handful) and I thought that would be a good idea to track the use on google analytics.

Serverless Telegram Bot on GC Functions

I played for some time with the idea of having a telegram bot run serverless in the cloud. Obviously the code run on some server but it is not necessary to care to provision, deploy, starting the application, etc. All you care about is your code.

GC Functions can be triggered by Pub/Sub events, buckets events and HTTP invocations. The latter is the one that we are going to provide as webhook to Telegram to be invoked when a message is sent to our bot.

Using Docker Cloud on Scaleway vps

Docker Cloud (formerly Tutum) help to deploy containers image on node clusters. Nodes can be provisioned directly from the service (Digital Ocean, Azure, AWS, Packet.net, and IBM SoftLayer). Additionally is possible to use the function Bring your own node (BYON) to add any linux server connected to the internet as node and deploy on it.

The 3 E: Elixir, Exrm, and Environment variables

I’m building a bot for Telegram, once make a build with exrm I found myself some problem configuring the telegram api key using environment variables. I decided to share what I found because my google foo was not helpful at all.