Introduction In any programming language, it is common to compose functions by pipelining functions: h = g ∘ f such that h(x) = g(f(x)).
The function f is applied first, then g, then the following. 1
For me, it would be more comfortable and easy to understand to write it f COMPOSE_THEN g, indicating that this function composition is not the usual, but a different operation.
Introduction in Clojure This function composition can be written in Clojure by pipelining or chaining functions:
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:
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.
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.
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.
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.