A close up picture of a delicious looking hamburger.
A close up picture of a delicious looking hamburger.
The hamburger is a terrific metaphor for the tiers of an n-tier application. Photo by Media News and used within the terms of its license.

And what are the skills that comprise a full-stack project team?

Just like sand, you can put different kinds of components into different buckets. (Photo by Don DeBold and used under the terms of its license)

Care and handling of pure and simple vs display, and self-managed components

Component types

  1. The component gets all of its data from props, or
  2. It gets some data from props, and some from somewhere else (context, state, app-state, etc)

Autumn in Canberra is my favourite time of year. (Image by the author)

Because recursion rules.

An example

const ITEMS = [
title: 'The One',
contract: '1',
author: 'alice'
title: 'It Takes Two',
contract: '2',
author: 'alice'
title: '3x a lady',
contract: '1',
author: 'beck'
title: 'Four on the Floor',
contract: '1',
author: 'candice'
title: "In de'Pipe Going Five by Five",
contract: '3',
author: 'candice'

Welcome — an NFT from the Three Years in India collection on OpenSea

And what’s a shitcoin?



Bitcoin is the OG cryptocurrency

EV charging in regional Australia is getting more mainstream. (Photo by the author)

A form-letter for your clean-air taxing local senator or local member

refs: pick one, or find another
- https://thedriven.io/2020/11/11/south-australia-to-impose-road-user-tax-on-electric-vehicles-from-2021/
- https://www.theage.com.au/politics/victoria/pallas-zaps-electric-cars-with-road-charge-20201121-p56gp3.html

The proposed tax is bad policy

An extract from ASCII Cthulhu by Dave Sag
An extract from ASCII Cthulhu by Dave Sag
Extracted from ASCII Cthulhu, my first ever NFT based artwork.

Finally a way to create and sell digital originals.

The programming bug can strike anywhere, so you’d better watch out — Photo taken today at Memory Cove, South Australia.

My first PR for the year, and a lesson to us all.

const Copyright = ({ holder }) => (
{'Copyright © ' + holder}
{new Date().getFullYear()}.
Copyright.propTypes =…

My first car, bought the day the Covid 19 lockdowns started.

In the age of Covid 19

A rapsberry reduction. Photo by the author.

Judicious use of map and reduce functions is a core skill, but one seldom used effectively.

export const VERBS = ['start', 'stop']
export const ACTIONS = VERBS.map(verb => import(`acts/${verb}`))
import { VERBS, ACTIONS } from 'acts'export default function action(verb) {
const i = VERBS.indexOf(verb)
return ACTIONS[I]

A Shadow Over Canberra: Photo by the author.

I just tracked down a bug that, for a while, made me doubt my grasp on the very foundations of Javascript .

// This fails as it thinks the scanner has not started.const commonData = getCommonData();
console.debug('commonData', commonData);
*** Hey I’m a feedscanner ***
*** Hey I’m a feedscanner ***

Javascript imports are cached so why am I seeing two ditinct feedScanner modules?

Dave Sag

Blockchain Tsar & Senior Javascript Practitioner at Industrie&Co. (https://industrie.co)

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store