Skip to content

Instantly share code, notes, and snippets.

@rduplain
rduplain / becamp-2018-brand-refresh.md
Last active September 18, 2018 17:39
beCamp 2018 guest blog post for ButterCMS

beCamp: Charlottesville's Annual Unconference (now using ButterCMS)

beCamp is like any of the best conferences you've attended. Multiple sessions at a time take place throughout the day, with a generous lunch break. The topics are relevant, current, and thought-out, whether presentations or round-table discussions. The differences? It's local to Charlottesville, it's free to attendees--including refreshments and meals--thanks to sponsors, and the entire agenda was created the night before by conference attendees.

That evening, 100+ optimists show up to meet each other, often for the first time, and pitch ideas. It works, every time. Attendees leave the event with inspiration unlike anything they expected, better than anything they expected.

Two things happen when attendees organize the agenda:

  1. Whatever topic of most interest to the room is the one currently in discussion.
  2. Whoever has perspective on the topic has an opportunity to take the floor.
@rduplain
rduplain / ClojureScript - Native Executables.ipynb
Created June 7, 2018 23:20
ClojureScript - Native Executables
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@rduplain
rduplain / vpn
Last active October 10, 2021 10:11
OpenVPN rc.d script for VPN client on BSD (i.e. jail): connect to VPN, start another service once VPN is connected.
#!/bin/sh
# PROVIDE: vpn
# REQUIRE: LOGIN
# KEYWORD: shutdown
#
# vpn: connect to VPN, start another service once VPN is connected.
#
# Uses OpenVPN and assumes the configuration does not need any authentication
# beyond the given .conf file. Consider an approach using `expect` if needed:
#
@rduplain
rduplain / rrsync-mountpoint
Created December 27, 2017 22:46
Ensure rrsync subdirectory is a mountpoint.
#!/bin/bash
# Simple pre-rsync check to ensure rrsync subdirectory is a mountpoint.
# That is, only allow rsyncing to a mounted drive, and fail otherwise.
#
# Drop-in replacement for rrsync in .ssh/authorized_keys.
rrsync="$HOME"/bin/rrsync
# Assume -ro always comes before the subdirectory, if provided.
if [ $# -eq 0 ]; then
@rduplain
rduplain / 21-rules-of-thumb-how-microsoft-develops-its-software.md
Last active December 9, 2017 13:05
"21 Rules of Thumb for Shipping Great Software on Time" by Jim McCarthy at Microsoft

21 Rules of Thumb for Shipping Great Software on Time

Jim McCarthy, Microsoft Corporation

Shipping great software on time is a difficult but not impossible task. Elements you think would count the most count for very little. Development methodology, process, technical prowess, excellence of tools and depth of project management skills all influence the outcome of a software development project; but nothing indicates success as much as the manager's ability to focus on a few critical and conceptually simple things. These things can be expressed as rules of thumb.

I enumerate twenty-one of these rules of thumb. Pick a handful (or so), apply them, and your project will be more likely to succeed. I lump them into three groups: "Shipping," "Great Software," "On Time". Duh. I cover them in a different order, because the concepts build a bit.

On Time

@rduplain
rduplain / README.md
Last active April 10, 2019 01:48
Code Quarterly's 2011 Q&A with Rich Hickey, by Michael Fogus

From the Archives: Code Quarterly's 2011 Q&A with Rich Hickey

Rich Hickey is frequently quoted as saying:

You can reach a point with Lisp where, between the conceptual simplicity, the large libraries, and the customization of macros, you are able to write only code that matters. And, once there, you are able to achieve a very high degree of focus, such as you would when playing Go, or playing a musical instrument, or meditating. And then, as with those activities, there can be a feeling of elation that accompanies that mental state of focus.

@rduplain
rduplain / README.md
Last active November 29, 2016 20:44
Setting up libRETS with SWIG

Setting up libRETS with SWIG

2016-11-29

Goal: Get a working [SWIG][SWIG] build of the latest [libRETS][libRETS].

This setup will use Ubuntu with [vagrant][vagrant], a tool for creating development environments with virtual machines on Mac, GNU/Linux, and Windows.

Initial setup:

@rduplain
rduplain / doctest-in-hylang.md
Last active January 26, 2016 03:34
Investigate Python's doctest with hy (hylang.org).

Can I use [doctest][doctest] with hy (hylang.org)?

Yes, you can, with some limitations.

Writing doctests in hy

hy already supports docstrings, and simple-quoted strings can have newlines in them. Write the doctest using formatting of a Python REPL (not hy):

@rduplain
rduplain / match.hy
Last active December 22, 2020 06:22
Getting started with hy (hylang.org), a simple example.
#!/usr/bin/env hy
;; match.hy - Getting started with hy (hylang.org), a simple example.
;;
;; As executable, `chmod +x match.hy`:
;;
;; $ ./match.hy '(.*), (.*)!' 'Hello, world!'
;; ('Hello', 'world')
;;
;; Developed on hy master 14c412c (after 0.11.1) on Python 3.5.
;;
@rduplain
rduplain / build-python3.5
Last active November 18, 2015 17:26
Simple, throwaway script to build Python 3.5 from source on Unix systems.
#!/bin/bash
set -e
apt-get build-dep -y python-imaging matplotlib lxml python3 # Ubuntu 12.04+, adjust to your needs
cd /usr/local/src/
curl -L -O https://python.org/ftp/python/3.5.0/Python-3.5.0.tar.xz
tar -xf Python-3.5.0.tar.xz
cd Python-3.5.0
./configure --prefix=/usr/local/python3.5
make && make install
ln -s /usr/local/python3.5/bin/python3.5 /usr/bin/python3.5