See how a minor change to your commit message style can make you a better programmer.
Format: <type>(<scope>): <subject>
<scope>
is optional
# In order for gpg to find gpg-agent, gpg-agent must be running, and there must be an env | |
# variable pointing GPG to the gpg-agent socket. This little script, which must be sourced | |
# in your shell's init script (ie, .bash_profile, .zshrc, whatever), will either start | |
# gpg-agent or set up the GPG_AGENT_INFO variable if it's already running. | |
# Add the following to your shell init to set up gpg-agent automatically for every shell | |
if [ -f ~/.gnupg/.gpg-agent-info ] && [ -n "$(pgrep gpg-agent)" ]; then | |
source ~/.gnupg/.gpg-agent-info | |
export GPG_AGENT_INFO | |
else |
;; Credits: | |
;; | |
;; * ClojureScript | |
;; * Reagent https://reagent-project.github.io/ | |
;; * Figwheel https://github.com/bhauman/lein-figwheel | |
;; * core.async https://clojure.github.io/core.async/ | |
;; * Christophe Grand's Life implementation http://clj-me.cgrand.net/2011/08/19/conways-game-of-life/ | |
(ns life.core | |
(:require [reagent.core :as r] |
# Gandi subdomain DNS configuration for Mailgun validation | |
# - Add the SPF record as TXT and SPF | |
# - Suffix the DKIM record and `email` CNAME with the subdomain | |
# ex: `mg.domain.com` | |
mg 10800 IN CNAME mailgun.org. | |
@ 10800 IN SPF "v=spf1 include:mailgun.org ~all" | |
@ 10800 IN TXT "v=spf1 include:mailgun.org ~all" | |
mailo._domainkey.mg 10800 IN TXT "k=rsa; p=MIG...QAB" | |
email.mg 10800 IN CNAME mailgun.org. | |
@ 10800 IN MX 10 mxa.mailgun.org. |
#! /usr/bin/env bash | |
# Get xv6 working with OSX Yosemite | |
# Most things were here: https://doesnotscale.com/compiling-xv6-on-os-x-10-9/ | |
# You need homebrew installed to make this thing work | |
brew tap homebrew/versions && brew install gcc48 | |
brew deps qemu | xargs brew install | |
export PATH=/usr/local/bin:$PATH | |
export CC=/usr/local/bin/gcc-4.8 | |
brew install wget |
Rich Hickey • 3 years ago
Sorry, I have to disagree with the entire premise here.
A wide variety of experiences might lead to well-roundedness, but not to greatness, nor even goodness. By constantly switching from one thing to another you are always reaching above your comfort zone, yes, but doing so by resetting your skill and knowledge level to zero.
Mastery comes from a combination of at least several of the following:
Rich Hickey on becoming a better developer | |
− | |
Avatar | |
Rich Hickey • 3 years ago | |
Sorry, I have to disagree with the entire premise here. | |
A wide variety of experiences might lead to well-roundedness, but not to greatness, nor even goodness. By constantly switching from one thing to another you are always reaching above your comfort zone, yes, but doing so by resetting your skill and knowledge level to zero. | |
Mastery comes from a combination of at least several of the following: |
;; simplest fold definition | |
(defn fold [f init l] | |
(if (empty? l) init (fold f (f init (first l)) (rest l)))) | |
;; by this time you are almost certainly comfortable with signatures like: | |
;; Int -> Int | |
(fold + 0 [1 2 3 4 5]) | |
;; => 15 | |
[info] Starting scala interpreter... | |
[info] | |
Welcome to Scala version 2.10.4 (OpenJDK 64-Bit Server VM, Java 1.6.0_32). | |
Type in expressions to have them evaluated. | |
Type :help for more information. | |
scala> def f = 1 | |
def f = 1 | |
f: Int |
(ns history | |
"Light wrappers and utils for js/history") | |
(defn back! [] (.back js/history)) | |
(defn forward! [] (.forward js/history)) | |
(defn go! [idx] (.go js/history idx)) | |
(defn replace-state! |