software-development Task: On a dark night, use a flashlight to find a diamond ring that fell into a pothole on a road that has several potholes. This is an analogy about trying to find a specific bug in a codebase that has multiple bugs. It is 1 am in the morning on a moonless night. A very important person
soft-skills Handling the perpetual problem re: time spent improving code quality vs time spent creating new features... in a way that fosters career satisfaction and engagement. A change of perspective is worth 80 IQ points. ~ Alan KayRecently I was faced with a familiar situation at work. As I saw it, my team was pulling me off a bug fix
typescript When using TypeScript and streams in NodeJS, use the stream.Stream type until there is reason to use a wider type. It's easy to build a big ball of mud when working with technology we do not understand. Two years into a project, we found ourselves converting among typed arrays, streams, and buffers, without
software-development Parse jest --json test output with jq The following example installs jq, saves the jest test output to a JSON file, parses the JSON with jq, and then selects only the fullName of tests with a status of "failed&
software-development Some points and quotes in favor of trunk-based development taken from books, blogs, blikis from industry experts. This is a list of points in support of trunk-based development and its related practices. Continuous Delivery includes using Trunk-based Development and Continuous Integration. (Forsgren, 2018). Continuous Delivery “predicts lower change failure rates,
software-development At what point does a professional software developer need to say "no" instead of continuing to do what the client requires? What does it mean to be a professional software developer? Does part of it mean putting one's job at risk by eventually saying no to anti-patterns that cause burnout? I am interested in
software-development A short guide on a code commenting style, written by someone who is skeptical of its value, is terrible at writing that style of code comments, and despite that, is willing to learn how to write them the way a team has elected to write them. I tend not to read code comments and only to write them if something is unusual. As a result, I am terrible at writing a certain style of code comments. (The unrelated image
software-development Hypermedia as the Engine of Application State (HATEOAS) Is there an existing specification for describing (in computer readable form) the preconditions necessary for an API endpoint to succeed? E.g. for a /cancel-invoice/12345, the precondition is that the invoice exists
agile A spreadsheet with a priority queue might be the least expensive and most effective way to build software rapidly. My software teams have used Basecamp, GitHub, JIRA, PivotalTracker, Trello, and a spreadsheet for project management. The most efficient team was the one that used the spreadsheet as a simple priority queue. Whenever
typescript filter undefined and null values from an array while still satisfying TypeScript's strict null checks. In strict mode, TypeScript makes it illegal to assign an array of type (T | undefined) to an array of type T[]. This prevents bugs by preventing us from dotting into (de-referencing) an undefined
software-development Notes on Joel Spolsky's blog post on character encodings [An encoded] string only makes sense when we know what encoding it uses; otherwise, we cannot interpret it correctly.First, what does it mean to encode/decode a string? Encoding converts the abstraction
programming "Pair documenting" might produce higher quality documentation. Over the past two days I spent about 8 hours writing documentation. Was the documentation worth it? Will anyone ever read it? If they do, will it help? When is documentation done? Have
typescript TypeScript constructor parameters with public, private, and protected A class constructor can automatically create and initialize class properties by using parameter property declarations. public class Foo { constructor(public bar: string, private baz: number, protected qux: boolean) {} } That is the equivalent of
git Finding (searching for) things with Git Search file name git ls-files '<pathspec>' git log '<pathspec>' git rev-list --all -- '<pathspec>' Search file content git log -S '&
software-development Architecting Large Scale Software Systems Image by janeb13 at https://pixabay.com/en/europa-sailboat-fs-senator-brockes-1185800/ These are notes on architecting large scale systems. (Is architecting even a word?) The notes came out of a series of recent conversations with
software-development Software Testing Strategies and Canonical Names Note: This is a continuation of a previous post here: http://www.muddlingthru.ca/types-of-software-testing Using canonical test strategies and industry standard names helps because it: facilitates team communication, eases developer on-boarding, and
classic-mistakes The classic mistake of keeping a throwaway prototype In chapter 28 of Rapid Development, McConnel (2014) calls the "throwaway prototype" a software development best practice; he also warns that keeping the throwaway prototype is a classic software development mistake.
software-development How to name boolean returning functions and methods? Introduction This blog post is about how to choose a coding style for boolean returning functions. It represents about 2 hours of research. tl;dr Since there are sound reasons for several options,
goal-setting Some Career-Related Ultimate Goals for 2017 An ultimate goal is a goal that is not necessarily achievable; it is rather a compass north point: where do we want to be, eventually? Writing down ultimate goals has an almost magical