Instantly share code, notes, and snippets.

Jonny Arnold jonnyarnold

  • Trussle
  • London, UK
View GitHub Profile

Let's assume we have a 16-bit computer with 4 words of memory (= 8 bytes, really underpowered!) that we can store variables in. Let's label them 01-04 and write out what's in them in binary:

00: 0000
01: 0000
02: 0000
03: 0000
View PlanForChange
Plan for Change
- Change is inevitable:
- Requirements change
- Teams change
- Technology changes
This talk aims to answer the question, "how do I deal with these changes?"
View Package Control.sublime-settings
View karma.conf.js
// The directory structure for this config is as follows:
// config.js
// client/
// app/
// ...(all app code)...
// spec/
// karma.conf.js [THIS FILE]
// spec_helpers.js
// app/
View notes.ex
# Makes the syntax look more sugary.
# Note that given's arguments are lists,
# hence the double-list.
def empty_list do
# A value of any type.
# Elixir has more, but you get the point.
def value do
View refactored?.rb
class Reporter
def send_report
message ="", "", "Your report").send(message)
class User
def self.expired_logins


  • It's fun.
  • It's useful.
    • Knowledge of how languages work is useful when you hit a really weird bug.
    • It gives you an appreciation of how languages are designed for the use case. It reduces WTFs.
  • I can say I've built a programming language; looks great on the CV!
  • It lets me experiment - are there features that could be better? Is there a combination we haven't tried?
  • It's hard. I like hard challenges.

How did you learn?


Cool Stuff from ThoughtWorks' Tech Radar


  • #5: Products over Projects is an important terminology change that reflects what we're doing in the development team more and more.
  • We should be aware of avoiding #26 Microservice Envy and #30 Seperate DevOps Team for the future.



In Lisp, we use brackets to determine where an expression starts and ends. This looks weird and adds a lot of cluttering brackets. Can we get rid of them?

Suggestion: Each form has an arity (which can be *); the parser uses left-to-right parsing to determine where an expression starts and finishes.

Let's assume + is a 2-form, and numerics are values (1-form):

+ 2 2     # => (+ 2 2)
View CSS-Transitions.html
<style type='text/css'>
body {
text-align: center;
h1 {