author: @sleepyfox
title: Fox's laws of software development
date: 27 October 2021
preamble: A not entirely serious treatise on the immutable fundamental laws of software development activities
A not entirely serious treatise
(defun vulpea-project-p () | |
"Return non-nil if current buffer has any todo entry. | |
TODO entries marked as done are ignored, meaning the this | |
function returns nil if current buffer contains only completed | |
tasks." | |
(seq-find ; (3) | |
(lambda (type) | |
(eq type 'todo)) | |
(org-element-map ; (2) |
GTD/BASB Templates for Emacs and Org-Mode
As I’ve said on Twitter, I don’t actually necessarily perform these on a chronological basis.
First, head here to join our Zoom meeting. It will help me following along while you work through the assignment.
Write a program that calculates purchase price for movie tickets using any language you like. It should not be a full-blown web app; it can be a simple class or collection of methods invokable by your test suite. We'll provide you with some requirements, test-cases, and even a sample interface - all you have to do is give us some software.
defmodule Article do | |
defstruct [:content, comments: []] | |
# public commands | |
def execute(%Article{}, %PublishArticle{content: content}) do | |
%ArticlePublished{content: content} | |
end | |
def execute(%Article{}, %CommentOnArticle{} = comment) do |
Code.require_file("router.exs") | |
defmodule Commands.User do | |
@behaviour Router.PreParser | |
@impl Router.PreParser | |
def call(state) do | |
%{state | assigns: Map.put(state.assigns, :user, %{id: 10})} | |
end | |
end |
Copyright © 2016-2018 Fantasyland Institute of Learning. All rights reserved.
A function is a mapping from one set, called a domain, to another set, called the codomain. A function associates every element in the domain with exactly one element in the codomain. In Scala, both domain and codomain are types.
val square : Int => Int = x => x * x
It's now here, in The Programmer's Compendium. The content is the same as before, but being part of the compendium means that it's actively maintained.
An agile designer should be able to articulate goals and risks and users, frame hypotheses, estimate stories, prioritize work, draft a product roadmap, derive MVPs, run a standup meeting, participate in Design Crit, onboard a new teammate, talk to stakeholders, whiteboard a userflow, win an argument, lose an argument, cut scope, write copy, facilitate a meeting, ask good questions, Get Out Of The Building, take orders, give orders, cooperate, act alone, analyze a new problem, lead a sketching session, let go of an idea (even when it's yours), parse analytics, design experiments, distinguish a bug from a chore, conduct a usability test, tell hard truths in a retro, accept hard truths in a retro, design for delight, write CSS, debug Javascript, commit to Git, pair program, test-drive a feature story, model a domain, craft a brand identity, design a visual system, earn trust, give trust, fight efficiently, die gallantly. Specialization is for insects.
(With apologies to [Robert Heinlein](http://c2.com/cgi/wik
require 'set' | |
def figure_it_out(procs, **params) | |
params_provided = params.keys.to_set | |
procs = procs.each_with_object({}) {|proc, lookup| lookup[proc.parameters.transpose[1].to_set] = proc} | |
procs[params_provided][**params] | |
rescue NoMethodError | |
raise "Unknown set of params, slacker" | |
end |