2021 articles

"Ready, Fire, Aim!"

"Ready, fire, aim. Do it! Make it happen! Action counts. No one ever sat their way to success."Tom PetersSometimes the exhilaration of solving a problem is so exciting and pressing that there is no design to design. You would like to see a solution now - however ugly. …

Ensure PyPI Publish Action Does Not Fail Because of Wrong Version

Here is the scenario: you run a Github action which automatically publishes to PyPI on new tags (I'm yet to figure out how to publish on push only). Since there are two places to label the new release (the tag and the setup.py file), it is very easy to find …

Change Is Your Biggest Risk

Change is the law of life. And those who look only to the past or present are certain to miss the future.John F. KennedyIf there is any guarantee that any project should anticipate it is CHANGE. You can be 100% sure that something will change. You might not …

Simple Communication Between Threads In Python

I've just discovered the threading.Event class, which has the methods set() and is_set() to communicate between threads. There is also a wait(timeout=None) method, which blocks until the flag is set.import os import sys import threading import time # this is where the real work is done def function(duration, e): …

Runtime

Every computation occurs in some runtime. The challenge is to accomplish complex tasks using available runtime even when it is clearly impossible to use a single runtime to complete the task. Therefore, there is a need to atomise the complete task into a coherent sequence of runtimes to accomplish the …

Management Is…

Process development, maintenance and optimisation.

The Software Studio: A Software Production Process

"The Fog Creek approach really is that programmers are talent... the programmers here are like the stars and the directors of a movie." Joel Spolsky on Fog Creek SoftwareHaving worked over the last few years on a relatively unstructured project, I have a growing angst to elaborate a clear …

Producing Software: The Myth of the Life Cycle

Every time I read about how to produce software I invariably come upon the phrase 'software development life cycle'. What is cyclical about it? It's confusing and should not be referred to this way. It's almost as if once software is delivered the production team go back to the begin …

Code is Movement, Architecture is Direction

There is a recurring theme in my thoughts at the moment. I've been thinking about what it would take to sign up on one of the freelancer sites like upwork or freelance or fiverr. The thought of making an extra buck with my 'extra' time (I don't really have any …

Writing Quality is Domain-Bound

There is no such thing as good writing apart from a domain. Writing is thought expressed and for it to be excellent in and of itself, divorced from any domain, is ludicrous. This also means that, though one may be regarded as a prodigious and proficient writer in some …

Coding as Exploration

Consider this article as a brain dump. One day it will be refined..."Software is not building. It's not construction. It's design. And design is like exploring a space of possibilities and what all the possibilities are, and you don't know how long it's going to take. It's like science. …

Teamplayer?

This is a raw dump of a swirl of ideas running through my mind. If they are incoherent it is because I'm still in the process of organising them.The vision of teamwork is accomplishing more than what a single individual can accomplish.If you're like me, it is rare …

Make Change A Core Feature

You haven’t designed well if you haven’t accounted for change. You can spend ages designing the best software but everything can be thrown down the toilet with a simple unanticipated changes. This is the reason I have a growing respect for the idea of emergent design.

Draft CLI Architecture

Here is a draft architecture that I have been working with for CLI applications. It is not complete because it has some holes in it. The whole idea is that it is built will layers each of which enjoys the services of the layers below it. Personally, I think there …

Think Process

Process is more valuable than product. Here is why.What is the true value of the world's best companies? Obviously it is not the products they sell since they relinquish them once they produce them in exchange for cash. Rather, it is total ownership over their production process that gives …

How to Move Fast in Software

"Take time for all things: great haste makes great waste."Benjamin FranklinWho wouldn't want all their features implemented immediately? It depends. How long will this software be used for? If it will be single-run code then nobody cares because it will not need any maintenance and we can always …

How to be 'productive'

“If you want to go fast, go alone. If you want to go far, go together.”African ProverbThe solo developer can appear to cover far more ground than a team until the rest of the team needs to contribute. Only then will it be clear how coupled the developer …

Career Progression in Software Engineering

ProgrammerA programmer knows how to turn user requirements into code. The programmer should have adequate experience but still need to accrue experience in producing high quality code.Software DeveloperA software developer is a programmer who has learned additional professional skills to turn user requirements into code with a …

Declarative vs. Imperative

Most programming languages are designed to be applied imperatively i.e. the programmer has to lay down the sequence of steps to be taken to modify the input to the required output. This lends itself quite naturally to algorithmic thinking. On the flip side, declarative design is built around the idea …

The Key to Great Design

...is good boundaries.

Python Exit Codes

~$ python Python 3.7.4 (v3.7.4:e09359112e, Jul 8 2019, 14:54:52) [Clang 6.0 (clang-600.0.57)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import os >>> os.EX_OK 0 >>> dir(os) ['CLD_CONTINUED', 'CLD_DUMPED', 'CLD_EXITED', 'CLD_TRAPPED', 'DirEntry', 'EX_CANTCREAT', 'EX_CONFIG', 'EX_DATAERR', 'EX_IOERR', 'EX_NOHOST', 'EX_NOINPUT', 'EX_NOPERM', 'EX_NOUSER', 'EX_OK', 'EX_OSERR', 'EX_OSFILE', 'EX_PROTOCOL', 'EX_SOFTWARE', 'EX_TEMPFAIL', 'EX_UNAVAILABLE', …

Hardlinks: Fun facts

First we will create a discardable directory calls rm.dir into which we shall add two directories: dir1 and dir2. ~$ mkdir rm.dir && cd rm.dir ~$ mkdir dir1 dir2 Now paste some rubbish into a dir1/file1.txt (find your least favourite website and copy and paste everything):~$ cat > …

Simplicity

The essence of simplicity is economical i.e. simplicity can only be accomplished through economical activities. By ‘economical’ I mean characterised by the academic sense in which we allocate scarce resources that have alternative uses. There are only four such resources that exist: space, time, matter and knowledge. Everything …

What Architects Do

If you are interested in building a house, unless you are an architect, you would do well to consult an experienced architect. You might have a good idea how your future house should look like but you wouldn't know much about how to bring together these various desirable elements into …

Generic Architecture for Interactive Application

There are four parts to any interactive application:core runtimeinput (optional)config (optional)output (optional)The beautiful things is that with this in mind you can now chain applications knowing which parts link to one another.

Digital Service Taxes are like...

Photo by Robert Gourley on Unsplash...taxing the unknown person at the other end of the line. They should apply equally to all kinds of consultants, physicians, experts etc ... anyone who willingly picks up the phone and charges a fee for a response. The term 'digital service' is actually …

On Knowledge

This is an exploratory article I.e. it will take a long time before I understand what I mean. Knowledge must be explored to be understood. Case in point is this article. I don’t know the full extent of the consequences but over time time a clear structure will emerge. The …