Skip to content

Instantly share code, notes, and snippets.

Avatar

Bran van der Meer branneman

View GitHub Profile
View 1-array.js
// Array = ordered + indexed + duplicate values
// a.k.a. List
const arr = [1, 2, 3]
// size
arr.length //=> 3
// random-access
arr[1] // 2
@branneman
branneman / 2-declarative.js
Last active December 29, 2022 07:49
Code Simplicity is the Ultimate Sophistication - https://youtu.be/zxJnyMXhyvw
View 2-declarative.js
// Imperative: 'what' + 'how'
const makes1 = []
for (let i = 0; i < cars.length; i += 1) {
makes1.push(cars[i].make)
}
// Declarative: only 'what'
const makes2 = cars.map((car) => car.make)
@branneman
branneman / 1-function.js
Last active December 22, 2022 07:57
Functions, Iterators, Promises, Observables - It's all connected - https://youtu.be/5GCo8AGQ9Ck
View 1-function.js
// Producer
const range = (min, max, acc = []) => {
if (max < min) throw new Error('not supported!')
if (min >= max) return acc
return range(min + 1, max, acc.concat(min))
}
// Consumer
const lt100 = range(0, 100)
//=> [1, 2, 3, 4, ..., 97, 98, 99]
@branneman
branneman / 1.js
Created October 17, 2022 19:47
Interfaces
View 1.js
// Interface of a primitive variable: its name and type
const DEFAULT_DB_HOST = 'localhost'
// Interface of a container variable: its name, types and structures
const config = {
user: 'readuser',
pass: '******',
db: 'test-env',
}
@branneman
branneman / git.js
Last active March 23, 2023 13:15
How Git works - super simplified! — https://www.youtube.com/watch?v=T9Nag5IXVQ0
View git.js
// blob = file contents, identified by hash
const blobs = {
'73d8a': 'import x from "y"; console.log("some file contents")',
'9c6bd': 'D8 A1 31 0F ...',
'547d4': '# Readme\nThis is documentation',
'a0302': '# Readme\nThis is some updated documentation',
}
// tree = references to blobs and trees, identified by hash
const trees = {
@branneman
branneman / unit-testing.js
Last active October 5, 2022 21:03
How I write High Quality Unit tests - https://youtu.be/naL7-XQ7T70
View unit-testing.js
/**
* Returns a list of numbers from `min` (inclusive) to `max` (exclusive).
*/
const range = (min, max, acc = []) => {
if (max < min) throw new Error('not supported!')
if (min >= max) return acc
return range(min + 1, max, acc.concat(min))
}
/**
@branneman
branneman / log.py
Created November 30, 2021 10:55
Python log util, outputting elastic/filebeat compatible json
View log.py
import json
from datetime import datetime, timezone
LEVELS = {
"emergency": 7,
"alert": 6,
"critical": 5,
"error": 4,
"warning": 3,
"notice": 2,
@branneman
branneman / http-easy.rkt
Last active December 16, 2021 10:36
Racket: How to do HTTP requests
View http-easy.rkt
#lang racket/base
(require
net/http-easy)
(define (base-url path)
(string-append "https://httpbin.org" path))
; request: GET
; response: plain string body
@branneman
branneman / 1-web-server.rkt
Last active June 21, 2021 15:05
Racket: Example web-server which renders markdown
View 1-web-server.rkt
#lang racket/base
(provide
server-start)
(require
markdown
net/url
web-server/http
web-server/servlet-env
@branneman
branneman / 0-syntax.rkt
Last active May 24, 2021 13:34
Racket: Macro's
View 0-syntax.rkt
#lang racket/base
(require (for-syntax racket/base))
; Reading Quotes
; see: https://docs.racket-lang.org/reference/reader.html
; ' quote #' syntax
; ` quasiquote #` quasisyntax
; , unquote #, unsyntax
; ,@ unquote-splicing #,@ unsyntax-splicing