RSSAmplifier

Blog

Jiby's toolbox

Recent content on Jiby's toolbox

jiby.techRSS feed ↗28 posts

Latest posts

Solving Wordle with information theory and SQLite

I’ve previously spent some time implementing wordle , and since then enjoyed watching others discuss how to solve the game using programming, especially the solutions based on information theory. 
 Naturally, I was interested in trying them out, given my own implementation of the game. Let me show you how I used SQL to solve Wordle, using maths from information theory. 
 Wordle?…

Full-text search using DuckDB

I like to explore data, as can be seen in previous posts.
I also love to learn new tools on the way.
In this case, a friend’s request for help turned into a challenge around fuzzy matching of text strings.
So I took the opportunity to go and learn a new tool, and to present it here. 
 Let me tell you about DuckDB, which acts like sqlite on steroids, perfect for data analysis…

Mobile-based development with Termux on Android

I’ve written a lot about Termux in the past , and since then, have continued to refine workflows around Android terminals, trying to push it to extremes. With extra software, or accessories, how light can you go without a real computer, while retaining a good development environment? 
 In this post, I want to show how far a tiny bit of hardware and software together have pushed my…

Keyboard navigation Vimium in Firefox

Today I want to celebrate niche tooling that makes life more comfortable on the computer.
For context, I like to work with computers from the keyboard, minimizing use of the mouse.
But this is often difficult to do consistently, especially when everything is a web app, a world known to be mouse-focused.
Let me tell you about the fantastic Firefox extensions Vimium, and Edit With Emacs,…

You need a risk register

I’ve been thinking a lot about risk registers recently. I feel like people don’t
know enough about them, or reject them on principle for being “more process”. 
 I’ve worked in projects where the process was heavy, and like many, I very much
didn’t like it then. But since moving to more “agile” environments, I’ve
repeatedly been…

Documenting Makefiles via a help message

I’ve written in the past about using Makefiles for build automation and documentation .
But sometimes I wish to provide help to users, that doesn’t require
being a Makefiles expert to read! 
 Let’s explore how we can teach users our build system by turning
the project’s Makefile (and awk ) into a cheap documentation-as-code tool. 
 What it looks like…

My python toolbox

The packaging workflow of Python has historically been a bit messy, starting
with pip being just good enough, and virtualenvs being a great idea but a
bit unwieldy. Installation was difficult, and tools like anaconda filled the
gaps. 
 Lately, there’s been renaissance of package tooling in Python thanks to other
languages innovating in the area, inspiring and pollinating…

Reframing tickets as engineering records

In the software world, tickets (as implemented in Jira, etc) often have a bad
reputation, and I think it’s undeserved, once we reframe what, or who tickets
are for . 
 In this article I want to revisit the purpose of tickets, usually “tickets for
project management”, explore an alternative viewpoint of “tickets as engineering
records”, and…

Embrace the Early Exit

In programming, there are patterns everywhere: patterns of building code,
patterns for organising components, even patterns for how to test things. A
whole industry is looking for
patterns to solve all their problems. 
 But amongst them all, there’s one pattern I whole-heartedly love, it’s the Early Exit. In this
short and sweet post, I want to declare my undying…

Offline developer docs: Dash docsets via Zeal

Since my earliest university days, I’ve spent a lot of time trying to get better
at computers, immersing myself in the world of Linux, and generally
improving my software development skills. 
 One of the aspects that was the most helpful to help me grow was attempting to
replicate my normal dev workflow, but with less: Learn to operate on Linux not
Windows, then learn to…

My git worfklow

Every now and then, at work, I find myself discussing git worfklows, commit
messages, branching, releasing, versioning, changelogs etc. Since my opinion has
remained fairly consistent for the past few years, I found myself repeating the
same points a lot, so I wrote it down. This page is the resulting compilation of
my opinions on the software development lifecycle (SDLC), without…

Quick-start project templates via cookiecutter

The most boring part of setting up a new code project is typing the boilerplate:
it’s easy to forget bits, so we just copy the last project’s folder and “file the serial numbers off” on the project name. 
 Copy-pasta-driven project setup is not great though, as it’s too easy to forget
replacing values in obscure files, or misunderstand why project is set…

Presentation: Makefiles for build automation and documentation

Last Friday, I performed a presentation to my colleagues about Makefiles, and I
want to share it to the public. 
 Of note, this presentation is setting aside what people usually know of
Makefiles (autoconf-generated blobs, opaque to any inspection because
machine-created), and instead I introduce the concept of file transformation as
a graph, then teach Makefiles basics (using…

Literate wordle

I’ve recently written a series of articles about Gherkin: its usage for
requirements gathering , about its uses in BDD , and a lower-tech alternative to Cucumber , which I’m still experimenting with. 
 I wanted to showcase all of these ideas brought together, as well as show how
comfy modern Python tooling can be. But more than writing code, I would need to
explain my…

Reinventing IP Fragmentation

Let’s explore how a file-format design exercise turned into
reinventing the wheel, and let’s all appreciate how lucky we are that
the protocols that the internet are built on have fantastic public
documents called RFC s. 
 Designing a file format 
 I was idly thinking about designing a good binary file format for a side project
of mine called qrxfil . The…

Low-tech Cucumber replacement

In the previous post, I showed how Gherkin Scenarios provide a great framework
for acceptance test definition. I also showed how the dreams of the BDD movement
extend to automating Gherkin, using a tool called Cucumber, enforcing
traceability of acceptance tests. 
 In this article, I want to explain my disilusionment towards Cucumber, and show
how a low-tech alternative emerged…

BDD Dreams, Cucumber And Gherkin

In the previous post in this series on Gherkin , I showed the tools that Gherkin
Features provide for requirements tracking, and mentioned ambitious goals for
the Behaviour-driven Development (BDD) movement. In this article, I want to
expand on these BDD ideals, show Gherkin Scenarios, and explain how the dream of
traceability led to Cucumber, a tool for automating acceptance test…

Gherkin Features for user requirements

The most common mistake I see developers make is building the wrong thing : Not
tracking exactly what is required from the start, and instead getting excited
about the cool technical problems ahead. Fast forward a few days, weeks, months,
showcasing the product near completion, suddenly the rift between what’s needed
and what was built becomes obvious, in a frenzy of last…

Separating Spam from Ham with the shell

Here’s how attempting to export images off a Word Document
led to a quest for data deduplication and classification using the
shell. 
 The images I wanted to export were MS Word diagrams drawn in Word,
rather than PNG files 1 .
Because those doodle-shapes do not export to PNG well, I first
copy-pasted them into Powerpoint to get the familiar “save as…

Reproducible workspace deployment with Ansible and Vagrant

Like many developers, I keep track of my configuration files in
version control, to make moving to new machines is simpler and share
code with others. This process started out for my Emacs config files
at first, but grew to consume other aspects: bash functions, git
aliases… Since 2016, I have accumulated over 500 git commits . 
 Now the dotfiles are tracked, the next…

Using Awk to replace only some lines

I was trying to convert bank-issued CSV files that have a weird data
layout, for automatic processing by the excellent ledger . This made me
learn a new thing about awk . Follow me down the UNIXy goodness! 
 The data I was getting looks like this: 
 Transaction Date,Transaction Description,Debit Amount,Credit Amount,Balance
 29/02/2018,Restaurant,14.5,,1234.2
…

Git diff from empty commit

In order to troubleshoot a bug in the very early history of a project
using git, I needed a way to show the git diff from “nothing” to the
first commit. Since git keeps a linked graph of commits, what I wanted
was a diff from the commit before the first one. Searching the onlines
dug up this answer on StackOverflow , showing that there’s a specific
commit hash…

Reverse-engineering webapp APIs with Firefox

I’m writing code to back up my user data off a website that lets me
 see all of my info (including querying by time, account etc) but
doesn’t have export features (officially). I am certain there’s an API
behind the site that I just have to make sense of. 
 Since the webapp is requesting data from the API when I click, we
should be able to record the web…

Git diff for prose

When writing long sentences in documentation repositories, git tends to show
really unhelpful diffs. They are unreadable because long lines aren’t broken,
which hides edits happening towards end of line. A colleague of mine asked me if git
couldn’t be configured to make this sort of thing more obvious. Challenge accepted! 
 
			 Figure 1: Can you spot…

Git pretty graph

Get a cool graph of commits from the command line! For newbies and experts
alike, git is a bit hard to visualize. Here’s a handy git command to make
understanding git easier. 
 git log --decorate --oneline --graph
 
			 Figure 1: Git graph of this repository 
		 
 

 This can be made into a git command via an entry your ~/.gitconfig :…

Presenting Android terminal with Termux (EdLug)

Last night, I presented about Termux to EdLug, the Edinburgh Linux User group
(see the event page on meetup.com ) in a talk titled “The freedom of shelling
out on Android”. It was tons of fun showing off how your Android phone/tablet
getting a terminal unlocks a powerful tool! 
 
 
I've made the slides available on this website, click on the slide…

About me

Who am I? 
 I’m Jean-Baptiste Doyon, but everyone calls me Jb (sounds like “G-Bay” in
French). Across many misinterpretations, it evolved into the online handle Jiby
(my French friends make it sound like the English initialism for Great
Britain ), giving the domain name of this website. 
 While I’m natively French, originally from a town near Nice, I…

First post

Welcome to my website! 
 This blog is meant to record some of the thoughts I keep coming back to, or
discussions I’ve had over and over again with different people. My
rule of thumb for inclusion here is “if you’ve had to say it more than
twice, it’s time to write it down”. 
 See the About page for my background and motivations. 
 Look forward…