2022-10-18

Software Testing with Fakes instead of Mocks

What are fakes, what are their benefits, and why they are uncontestably preferable over mocks. Also, how to create fakes if needed.

Introduction

2022-10-12

50 things expected of developers


Games industry veteran Mike Acton gave talk/rant at GDC (Game Developers' Conference) 2019 where he listed 50 things he expects of developers: https://www.youtube.com/watch?v=cV5HArLYajE  This list was transcribed by Adam Johnson and posted here: https://adamj.eu/tech/2022/06/17/mike-actons-expectations-of-professional-software-engineers/ and I am copying it here for posterity.

I found this list useful as reference material; some of the items on this list do not apply to my job because I rarely do anything especially performance-oriented nowadays, and some of the items on the list are good to always have in mind but subject to the programmer's own judgement, on a case by case basis, whether they should be practiced or not.

Here it is:

2022-08-22

The Deployable Design Document

blueprint-technical-drawing-4056027 by xresch, in the public domain, from https://www.allaboutlean.com/cost-of-complexity/blueprint

Abstract

A need is identified and a solution is proposed for a novel set of software tools to facilitate the visual composition of technical software design documents as schematic diagrams consisting of predefined software components, and the automatic deployment of runnable software systems from such design documents.

2022-08-16

On Microsoft "Visual" products

The logo from Visio version 1.0

This post is intended as support material for another post of mine; see michael.gr - The Deployable Design Document.

One day back in the early nineties, when people were using Windows 3.0 and programming with the Microsoft C/C++ Compiler, a colleague showed me a software design that for the first time he had done not on whiteboard, nor on paper, but on a computer screen, using a new drawing tool called Visio

Screenshots of Visio 1.0 running under Windows 3.1. Click to enlarge.

He showed me interconnected components laid out on a canvas, and as he moved one of the components, the drawing tool re-routed the lines to maintain the connections to other components. This meant that Visio was not just a pixel drawing utility like Microsoft Paint; it had some understanding of the structure of the information that was being displayed. 

On Visual Programming Languages

Logos of various visual programming languages

This post is intended as support material for another post of mine; see michael.gr - The Deployable Design Document.

The idea of creating software using visual tools has existed ever since the first aspiring programmer was bitterly disillusioned by discovering that programming almost exclusively entails writing lots of little text files containing nothing but boring and cryptic text.

On UML (oh, do not get me started)

The UML logo, by Object Management Group®, Inc. from uml.org; Public Domain.

This post is intended as support material for another post of mine; see michael.gr - The Deployable Design Document.

The Universal Modeling Language (UML) (Wikipedia) was intended to be a standard notation for expressing software designs, and to replace the multitude of ad-hoc notations that software architects have been using on various mediums such as whiteboard, paper, and general-purpose box-and-arrow diagram-drawing software. The idea was that by following a standard notation which prescribes a specific way of expressing each concept, every diagram would be readily and unambiguously understood by everyone.

It has miserably failed.

2022-07-25

Common mistakes Dutchies make in the use of English

"Dutch Tongue" by michael.gr, based on the logo of The Rolling Stones.

"I will learn you how to skate." ("Learn" instead of "Teach".)

"When you want, we also have it in white." ("When" instead of "If".)

"Let's meet at sex." ("Sex" instead of "Six".)

"Dear colleagues, hereby the schedule." ("Hereby" instead of "Here is" or "Hereby I give you".)

"We have lot's of bicycle's" (Genitive instead of plural suffix.)

"Meet you at the busstop" (Concatenating words that are not concatenated in English.)

"Let's have a telco" ("Telco", which means "telecommunications company", instead of "Teleconference".)

Object-adjective instead of adjective-object. ("Emergency exit train driver" instead of "Train driver emergency exit".)

A sign that you can find inside virtually every single train in the entire Kingdom of The Netherlands. The English translation is urging us to not block the driver of the emergency exit train.

"I am a cineville" ("cineville" instead of "cinephille") -- there is even a .nl domain misspelled this way.

Also: Dutch pronunciation rules cause some really weird phenomena, for example when you call Vodafone, the recorded greeting informs you that you have reached "Fodavone".


2022-07-16

A Programming Language

"Coding Software Running On A Computer Monitor" by Scopio from NounProject.com

Abstract

My thoughts and notes on how I would like a new programming language to look like.

The goals of the language are:

  • Simple and elegant. (So that it is suitable for the academia.)
  • Expressive. (So that it is suitable for experienced programmers.)
  • Consistent. (So that it is attractive to developer teams.)
  • Guiding. (So that it promotes best practices.) 
  • Fast. (So that it is suitable for high performance computing.)
  • Lean. (So that it is suitable for resource-constrained computing.)
This is work-in-progress; It is bound to be heavily amended as time passes, especially if I try some new language, like Kotlin or Rust.

Summary of language characteristics

2022-05-25

Why the majority is always wrong | Paul Rulkens | TEDxMaastricht


I knew I was definitely going to watch this one, from just the title. It turns out that he comes across a bit annoying due to attitude; nonetheless, the talk is definitely worth watching.

2022-05-23

Bret Victor - Inventing on Principle


Interestingly enough, in his code snippets he is using JavaScript, whereas one of my personal guiding principles is thou shalt not suffer an error to go undetected, which means that no scripting language should be used under any circumstances, for anything at all, by anyone, anywhere, ever. But I digress. Excellent presentation.