The long way through Software Craftsmanship

The value of worthless projects

Sep 11, 2021 - 3 minute read - Comments - pet-projectprojectpersonal-projectworthless-projectdeliberate-practicebusinessidearayw

Many people suggest pursuing personal projects in their free time 1. Some of these projects can be turned into businesses (but then you need to work on other parts, not only developing the project). Among these projects, you can also find worthless (in the economic term) ones. These are useful, among other reasons, 1) for having fun 2) for getting away from a work-related mindset 3) for deliberate practice. Practicing with these projects gives you the opportunity:

Using a Native C Library in Android

May 2, 2021 - 5 minute read - Comments - androidnative-libraryandroid.mkkotlingradleccppabijni

For a client, we needed to integrate a pure C library into an android application. The library is written in C (not C++), the application in Kotlin. Context We have created an Android application, that is using a native C library. This library provides an upgrade in performance over using a JVM library. For this particular example, we’re showcasing how to integrate libsodium, but this can be expanded to any other library.

On private but leaked information in a SaaS

Nov 4, 2019 - 3 minute read - Comments - gitexamplesensitive-informationcodenameuuidtoolboxtoolstealth-modenon-disclosure-agreementsecurity-clearance

This is another tool for your toolbox: how to uncorrelate public and private information. Context Context: there are clients who have sensitive information. Some is just ‘companies being stealth’ (e.g., don’t want to make public until launching), some is just protected by a Non-Disclosure Agreement (NDA), some are protected by security clearance. The more sensitive, the greater protection needed. This tool applies to all sensitive information, regardless of where it’s stored or how it is used.

Automatically keeping the intermediate history of your work using git

May 29, 2019 - 2 minute read - Comments - tooltoolboxgitdocumentationspikeautomationmarkermarker-interfaceflowproblemsolution

This is another tool for your toolbox: using git to automatically document your development process (special cases only.) Context When I’m spiking a feature, I usually get in the zone (e.g., Csikszentmihalyi’s Flow), and I can forget my good engineering practices, searching for that desired answer. After a few of those bouts of coding, you realize you’re wandering. You circle around, get lost, get back on track, then get lost again.

Writing safe(r) bash scripts

Jul 13, 2018 - 13 minute read - Comments - bashshguidescriptone-offmaintenancesolidsingle-responsibility-principleperlrubymaketip

After writing more and more bash scripts for a client, I’ve decided to write down my thoughts about it. This assumes you have some knowledge about bash, as it is not intended as a beginner’s tutorial. Why bash scripts? Bash is present in almost every unix/linux-based stack, now some Windows as well. An exception is the ‘alpine’ docker images, which have a smaller, lighter shell (more on that later) Everything that you can automate, you can do from bash.

Questioning the existing choices

Jul 4, 2018 - 2 minute read - Comments - clientquestioningchoicepragmatismversioninggitsolutionif-it-aint-broke-dont-fix-it

Context For a client, we have worked on a service that works with files (containing sensitive data) that get corrupted very often. The use case is generally: Two/Three file opens per day One modification per 10 file opens One corruption per 100 file opens Initial solution The initial solution was just to copy the file (file.txt) before opening, after closing. This results in two files (YYY-MM-DDTHH-mm-ss_before_file.txt, YYY-MM-DDTHH-mm-ss_after_file.txt). As this solution quickly became unmaintainable, the client developed a solution to hash the contents of the file and to remove the duplicated files.