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 missing the structured aspects of writing things down, and wished for more rigour, more … process?| jiby.tech
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 make help Code Snippet 1: How to ask for help Figure 1: Result of asking for help| jiby.tech
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 the ecosystem, improving the comfort of development. I want to present here the tools that I use to work with Python, usual...| jiby.tech
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 highlight how tickets should be useable as asynchronous alternative to (synchronous) communication. Tickets as project management Under this fairly ...| jiby.tech
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 love to the Early Exit, sharing my excitement. From If+else to ladders and conditionals hell Functions routinely need to check so...| jiby.tech
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 do dev via on the terminal instead of GUIs, and eventually learn to do the same but offline, without any network calls.| jiby.tech
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 reasoning as we draft the program. So I picked up again a tool I always wanted to play with: Literate Programming.| jiby.tech
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 RFCs. Designing a file format I was idly thinking about designing a good binary file format for a side project of mine called qrxfil. The project aims at QR-code-based file export: split a file in many pieces (based on content limit of QR codes) before reassembling it on the oth...| jiby.tech
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 that I believe covers most of the value for none of the effort.| jiby.tech
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 execution, tracing them back to Gherkin Scenarios. We’ll set aside my personal feelings on these tools for a fut...| jiby.tech
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 minute changes to reach the original goal under pressure from deadlines.| jiby.tech
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 files1. Because those doodle-shapes do not export to PNG well, I first copy-pasted them into Powerpoint to get the familiar “save as picture” context menu. But a couple of images were still deformed beyond recognition.| jiby.tech
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 12/03/2018,ATM withdrawal,50,,1184.2 23/04/2018,Deposited check,,100,1284.2 Note the last line having 100 in a different column: The problem i...| jiby.tech
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 we can use to diff from “nothing” to the first commit:| jiby.tech
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 traffic to explore the API.| jiby.tech
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 the edit made in a long line of text? Kaushal Modi’s blog post on git diff for minified JS and CSS inspired this idea for all you prose lovers.| jiby.tech
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 workplace-specific tangeants. The article is broken down into ideas + recommendations, with recommendations in bold.| jiby.tech
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 up that way in the first place, leading to nasty surprises down the line.| jiby.tech
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 SQL commands as an example). We then move on to my plea for simple Makefiles, and their potential for both documentatio...| jiby.tech
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: [alias] graph = log --decorate --oneline --graph Code Snippet 1: Alias "| jiby.tech
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 below. Remember that there are speaker notes for people following at home, press `S` to use them.| jiby.tech
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 more posts as I try to condense my thoughts in written form.| jiby.tech
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 biggest pain is to install packages and folder structures and obscure commands required to set up some subsystems needs which c...| jiby.tech