View burn.rb
# Sublime load test for
# On my 15" 2016 rMBP:
# 4 is not noticeable
# 8 is noticeable and just barely keeps up with typing
# 20 lags way behind my typing
def compute_things()
sum = 0
10_000.times do |i|
pub fn suffix_vec_ref(s: &str) -> Vec<&str> {
let mut vec = Vec::with_capacity(s.len());
let mut slice = &s[1..];
while !slice.is_empty() {
slice = &slice[1..];
View merlin-sublime-popups.patch
diff --git a/Packages/Merlin/ b/Packages/Merlin/
--- a/Packages/Merlin/
+++ b/Packages/Merlin/
@@ -248,6 +248,57 @@
opened_view.run_command("insert_code", { "arg": sig })
+class MerlinInfoPopup:
+ """
+ Pop up a menu at a point describing an expression
View unix201.txt
Unix 201:
☐ Man pages (including searching)
☐ The internet
Customizing your prompt:
☐ Basic PS1
☐ Fancy stuff
☐ Basics
☐ ranger-cd

This is a response to a tweet by @jordwalke asking me about Nix and PackageJsonForCompilers. Twitter is too short form to answer well, so I wrote up some thoughts here. I might turn this into a blog post at some point.


Nix is a package manager, but also a meta-build system and deployment system. It works based off a global /nix/store/ folder where everything is stored keyed by a hash of its description and the description of all its dependencies. This way you can have multiple versions of any package, and not only that different copies of the same version compiled against different versions of its dependencies or with different compile flags. All dependencies must be fully specified and the way the building works enforces this completely. This way completed binaries can be served from a "cache" with no issue. This gives the best of source-based package managers and binary ones.

The way it handles build vs. runtime depe

View 0-sublime.json
"auto_complete_commit_on_tab": true,
"characters": "<",
"selector": "text.html"
"characters": ".",

Basic Income

Calculations done by Tristan Hume for a public policy class report.

basic income = $10,000/year

number of adult citizens = 27131010 => 27,131,010 total cost = number of adult citizens * basic income => $271,310,100,000/year

Stuff in Canada that could be eliminated

View FittsTaskTwo.cfg
# Above goes participant \n condition \n block
# ----------------------------------------
# Configuration arguments for FittsTaskTwo
# ----------------------------------------
# -----
# PARTICIPANT CODE (part of output data file names)
# P21
View datasummary.rb
# Summarizes data produced by my FittsTaskTwo fork
require "csv"
data = []
Dir["FittsStudy/FittsTaskTwo-P*-C*-B*-sd2.csv"].each do |f|
_, p, c, b = /FittsTaskTwo-P(.*)-C(.*)-B(.*)-sd2\.csv/.match(f).to_a
table =, headers: true)
tps = table["TP(bps)"].map { |e| e.to_f }
avg_tp = (tps.inject(:+) / tps.size).round(3) unless tps.empty?
data << [c, p, b, avg_tp]
View DataShipper.cs
// Used to send data from a VMWare VM running the EyeX software
// with a Steelseries Sentry to a Mac OSX host over UDP.
namespace MinimalGazeDataStream
using EyeXFramework;
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using Tobii.EyeX.Framework;