Metaphors we live by

I’ve been thinking about ways we use metaphor when talking about (new) technologies for a bit. Choosing the metaphor with which we describe a new technology does real work: it can help kick-start understanding, but its price is limiting how we conceptualize the technology and thus close-off our minds to... [Read More]

Introducing Bottle

Now that age, a new tool to encrypt and decrypt files, has hit version 1.0, I’ve been trying to use it more. (I wrote a basic exploration of age a few months ago.) [Read More]

Tidy v 0.2

I’m excited to announce that I’ve added a slew of new features to Tidy, my Rust command-line tool that helps users combine and clean large word lists. [Read More]

Exploring restic for backing up data

A confession: I’ve never been very good about backing up my data. Yes, I’ve had one external hard drive or another for more than a decade, but my back up plan for most of that time was to drag some folders to the closest USB drive every few months, or... [Read More]

Cleaning up large Rust binaries in target directories

As a (bad) Rust developer, I have a lot of built projects sitting in target directories. These take up quite a bit of space, and ideally I would not back them up. I, naturally, have been on the look out for easy solutions for this problem, preferably using tools written... [Read More]

Exploring age v 1.0

About one year ago I learned and wrote about age, a “simple, modern and secure encryption tool (and Go library) with small explicit keys, no config options, and UNIX-style composability.” Basically it’s a new tool for encrypting files, and it just hit version 1.0.0. Exciting! [Read More]

Revisiting Compound Safety

Back in 2018 I wrote a Rust script and corresponding blog post about a concept involving passphrase word lists that I imagined and then named “compound safety”. [Read More]

Rust's find_map method

In a program I wrote for work in Rust, I had a function that needed to try running another function 3 times, each time with a different argument, and only returning a value when the sub-function returned a Some rather than a None. To do this in Rust, I had... [Read More]

Notes on my Rust + Neovim setup (2020)

I’ve been writing a fair amount of mediocre Rust in Neovim. I finally have a setup I like, but to be honest I’m not entirely sure which components I’ve install do what, or if I’ve listed all of the necessary components to reproduce that setup below. [Read More]

Terminal Redox: Some Developer Tools Written in Rust

In my very slow and not very steady quest to learn the Rust programming language, I’ve come across a few projects written in the language that I use everyday. I thought I’d write a quick post about them, with some configuration tricks that I’ve made to make them suit my... [Read More]

Medic: A Rust CLI that checks the passwords of a KeePass database

Midway through January, 2019, news broke of a large cache of emails and passwords, dubbed “Collection #1”, surfacing on the internet. Troy Hunt writes that it includes 772,904,991 unique email addresses and 21,222,975 unique passwords. Wow! Hunt cleaned and loaded the data into his service called HaveIBeenPwned, which allows (non-technical)... [Read More]

Optimizing Rust: The Evolution of My Day 5 Advent of Code Solution

Day 5 of this year’s Advent of Code involves scanning “the chemical composition of [Santa’s new suit] material. We “discover that it is formed by extremely long polymers (one of which is available as your puzzle input).” We have to take these “polymers” (strings of upper and lowercase characters) and... [Read More]

8 Lessons from First Days of Advent of Code 2018

I’ve got two days of Advent of Code 2018 under my belt and four stars to show for it! But I’ll be the first to admit that I had plenty of help, so I thought it only fair that I write out some of the things I’ve already learned about... [Read More]

eyeoh: My first Rust library

For the past year I’ve been fumbling around with Rust (here’s my first post on Rust). In those 12 months I’ve certainly had some lulls where I wasn’t learning or writing much Rust, but I did buy two books on the relatively new language and did some cool projects in... [Read More]

Fishing in an Abyss: Building a Password Cracker in Rust

Ahead of this year’s World Password Day, 1Password – maker of password management software – announced a password cracking challenge. The company ostensibly wanted to find out how hard it would be to crack a three-word passphrase master password on one of their vaults, assuming that the attacker had the... [Read More]

My Compound Passphrase List Safety Checker

I’ve been thinking about information theory, entropy, and passphrases for a couple of months now. I’ve been particularly interested in using random passphrases as passwords. An example of one of these passphrases would be “stamina turret backlands ruby”. The words have to be as purely random as possible – using... [Read More]

Trying Go and Rust

This past week I got the feeling that I hadn’t really given myself any programming challenges in a while. I had also been thinking about trying a statically typed, compiled language for a few weeks. I had C++ in mind, mostly because I actually wrote some in my high school... [Read More]

Switching to Jekyll

A few months ago I hit a Ruby gem-based error when trying to publish my blog via Octopress and decided to switch to a static site generator called Hugo. [Read More]

Getting Started With KeePassXC

2020 UPDATE: The guide below was written back in 2017. While it still may be helpful to some, KeePassXC has changed quite a bit in the last three years, both in functionality and aesthetics (almost universally for the better!). Since this guide may be out-of-date, I’d recommend their new, official... [Read More]

Goodbye to All gchat

As some of you may know, Google is killing gchat (aka Google Talk) and moving users to Hangouts after June 26th. [Read More]

Reexamining my Password Management System

For the last year and a half I’ve been using both 1Password and KeePassX to manage my passwords. I’ve been storing most usernames and passwords using 1Password, since I can easily access it on my iPhone and I have the Chrome extension installed at home, making signing in that much... [Read More]

Getting Started with Syncthing

I was looking for an open-source, free, and secure way of frequently moving files between computers. Privacytools.io pointed me to Syncthing. I subsequently found a few blog posts recommending it. It doesn’t store any data in the cloud– it merely keeps a list of folders in sync across any number... [Read More]

Switching to Xfce and Other Linux Notes

This post is a bit of a sequel to my post about installing Ubuntu on my old Macbook Pro. This is just a collection of notes on improvements I’ve made to my Ubuntu 16.04 Unity installation, the bulk of which has been changing my desktop environment from Unity to other... [Read More]

Building KeePassXC from GitHub Source on MacOS 10.10.5

I’m excited about a community fork of KeePassX called KeePassXC. They offer binary builds for the three major operating systems on their website, however I wanted to build it from source for two reasons: (1) I was a little dubious of KeePassHTTP, which the developers are now building into the... [Read More]

Moving to Hugo

A couple of weeks ago I was proud of myself for switching from RVM to rbenv. The reason I made the switch was that I wanted something light-weight and I didn’t like the RVM installation process, in particular the need to use the GPG command line tool. [Read More]

Installing Ricochet 1.1.4 on Lubuntu 16.04

When I first installed Ricochet IM on my machine running Lubuntu, I either ran sudo apt install ricochet-im, or downloaded it through Ubuntu’s GUI “Software” application. Regardless of which I chose, I think both methods install Ricochet version 1.1.2, as opposed the to latest release: 1.1.4. Considering this is a... [Read More]

YubiKey and OpenPGP

On Cyber Monday, I took advantage of Yubico’s 2-for-1 YubiKey deal and got two YubiKey 4s for the price on one ($40). [Read More]

Some Privacy and Security Measures I've Taken Recently

Over the summer of 2016 I started to pay a little more attention to my privacy and security on the internet and when using computers more generally. Some of this impetus had been slowly growing since the Snowden/NSA revelations and catching the documentary Citizen 4. More recently I read a... [Read More]

Installing Ubuntu on my old MacBook Pro

I had an old 17 inch MacBook Pro from 2009 (college) lying around and I figured it’d be a fun challenge to install Linux on it. I had never installed or even used Linux before (to my knowledge). I also, confusingly, hadn’t found a clean, step-by-step guide for doing this,... [Read More]

Messy Technology

In Master Switch I got in my head the book’s central idea: that information technology goes through a certain Cycle. A refresher: [Read More]

True (HEX) Colors in Vim with iTerm2 3.0.1

Last fall I was delighted to figure out how to get true HEX colors with Neovim and iTerm2. However I have recently learned that you can have these same colors available in regular old terminal Vim (aka command line Vim) and iTerm2. [Read More]

The Boy Who Could Change the World

I hadn’t heard of Aaron Swartz until his suicide in January of 2013. Soon after, I hungrily read the news and remembrances I could about the young man (enough so that I ended up writing a short note on those mourning him for The Daily Beast). At the time I... [Read More]

More Bowie Books: Notes From the Left

Having read three more of David Bowie’s favorite books, I thought it’d be nice to write a little. The three books, the plots of which, unintentional on my part at least, had something to do with the far left, were The Leopard by Di Lampedusa, Darkness at Noon by Koestler,... [Read More]

vim-zipper: My First Vim Plugin

At work I was working with Highcharts, a JavaScript charting library. The specific file I was working in had a number of these charts defined in it, each of which had a good amount of settings and functions within them. As a result, in spite of other vim awesomeness, I... [Read More]

A Problem with Vim's gx Command, And One Solution

I’ve been playing around with Vim’s gx command, which in normal mode, when on a URL, opens that URL in your default browser (see :h gx). However today I ran into an interesting problem– if a URL has a ? in it gx thinks the URL ends at the ?.... [Read More]

Bowie Books

On January 11th, the day after David Bowie died, The New York Public Library’s blog posted a list of the musician’s 100 favorite books, based off of a Facebook post on his verified page from 2013. A friend sent me the NYPL link and I, delighted by the idea of... [Read More]

Best of My vimrc

I just realized that I’ve been using Vim for just about a year now (here’s one of my early posts on starting to make the switch), so I figured it’d be a good time to go over some of favorite parts of my vimrc. I’m certainly no Vim expert, but... [Read More]

Software Updating As Ritual

A few weeks ago I read a blog post by Bryan Horstmann-Allen (h/t Paul Ford) about him getting frustrated with OS X. Here’s how he framed his issue: [Read More]

Vim Line Completion with FZF

On r/vim and r/neovim I’ve heard a lot about fzf, “A command-line fuzzy finder written in Go” by junegunn that plays well with Vim and Neovim. [Read More]

They Would Take Their Saddle With Them

Via r/MechanicalKeyboards, the mechanical keyboards subbreddit, I found this interesting interview with Eiiti Wada, the creator of the Happy Hacking Keyboard (which I love and use and have written about before). The interview’s introduction cites a previous interview with Wada where we apparently gave a quote that I think is... [Read More]

Advent of Code: 25 Days of Coding Challenges

I was jumping around Reddit earlier this month and stumbled upon Advent of Code, a site created by Eric Wastl that has “small programming puzzles” for each day of the 25 days of Christmas. Like Project Euler, they are presented in such a way that you can solve them any... [Read More]

Vimium: Vim in Chrome

I was browsing my vim multireddit today and, a few turns down a rabbit hole, found a Chrome Extension called Vimium. It’s purpose is to provide Vim-like keyboard shortcuts for navigating the web. Here is the link to the Chrome Store page. [Read More]

Neovim dot app

I was lurking in the Neovim Gitter room this morning and saw someone drop in a link to this page on projects related to Neovim. [Read More]

Passing Notes, Or How I Quit Evernote

About a week ago I started thinking about how I take notes on desktop and my iPhone. Sometimes I email links and information to myself, other times I use Evernote. But, like everyone else, my email inbox is a messy place (despite my GMail label just for emails from and... [Read More]

A Brief, Accessible History of Cryptography

After reading a history of Bell Labs, I took a slight detour in my reading list. First, I read about half of an introduction to information theory, then sort of bailed when I got to calculating the information entropy of continuous variables and jumped to a lighter history of cryptography... [Read More]

Bell Labs: An Institute of Creative Technology

This week I finished the most recent book in my self-guided study of 20th century technology, namely The Idea Factory: Bell Labs and the Great Age of American Innovation, by Jon Gertner. As the title implies, it’s a chronicle of research and development wing of AT&T, a history that lasts... [Read More]

Ditching NERDTree and Using Vim's 'Default' File Explorer

When I started using Vim the first plugin I downloaded was NERDTree, a sidebar file explorer similar to what the text editor I was leaving, Sublime Text, had. It was a good crutch to get me into managing multiple files in Vim, but as I get more comfortable in Vim... [Read More]

Two Types of Vim Plugins

Last week I watched most of the videos in this YouTube playlist of Vim meetups from Thoughtbot. One of the more revelatory for me was one from John Crepezzi in which he simply goes over how he uses Vim, with an emphasis on the plugins that he uses. [Read More]

Connecting Twitter Bots

Over the past few weeks I’ve been chipping away at a little side-project I dreamt-up around 3am one morning. I wanted to make two Twitter bots who would play Connect Four against each other over and over again. I got the idea after I, human Sam, played an emoji-based game... [Read More]

Basic Begin-Rescue-Pry Pattern

Sometimes I get an error on a seemingly-random iteration of a loop that occurs many times. Normally I would drop in in a binding.pry from the Pry Ruby gem, but this is not always a sufficient solution, since I’d have to exit through all the successful iterations until I found... [Read More]

Neovim, An Open-Source Project

When I was moving around Watch People Code the other day while figuring out how to livestream my work on a new project, I found a interview by the site’s administrator, Alexander Putilin, with Justin M. Keyes, a contributor to an open-source project called Neovim. [Read More]

From Terminal Vim to MacVim

On my work computer I’ve been having some trouble getting the 2015 MacBook Pro’s Terminal Vim to access the system clipboard. There is a chance that the version of Vim that shipped with the computer does not support the feature in which the * register is connected to the system... [Read More]

Where Wizards Stay Up Late

As I wrote yesterday, the next book in my semi-impromptu study of late 20th century technological innovation has been Where Wizards Stay Up Late: The Origins of the Internet by Katie Hafner. (Previously: The Master Switch and Hackers.) [Read More]

Markdown HyperLink Remap for Vim

I’ve been writing these blog posts in Vim for a few months now. It’s been a great way to practice and hone my Vim skills in a slower, less intense environment (as compared to deployed code). [Read More]

The Hacker Ethic

As I mentioned in my post about The Master Switch, right after I finished Wu’s book I dove into Hackers by Steven Levy. [Read More]

On Twitter Image Ratios

Many websites and infographics I have consulted claim that on Twitter, shared images, images that users attach to their tweets as opposed to profile and banner images, are always displayed in a 2 to 1 ratio, whether in-stream or when “expanded.” [Read More]

Amazon Prime Days

Right, so yesterday, July 15th, 2015, was Amazon’s first “Prime Day”. They offered a bunch of deals (which turned out to be pretty crummy) to their Prime customers. Whatever! [Read More]

Two Books About Computers

Thanks in part to my two days of jury duty last week, I was able to speed through two books about information technology and computers recently. The first one, which was recommended to me, is called The Master Switch by Tim Wu, and the second is Hackers by Steven Levy.... [Read More]

My Basic Understanding of PGP Encryption

Last week I attended a class on basic digital security at the BuzzFeed office, which included some basic encryption techniques. Before the class I knew nothing about how PGP encryption works, but now that I’ve got a bit of a handle on it I figured I’d lay down what I... [Read More]

Changing Where Your Screenshots Are Saved

Earlier today BuzzFeed published these 17 Desktops So Untidy They Will Make You Seriously Uncomfortable. From experience I know that since by default OS X saves screenshotted images to your Desktop, they often contribute to Desktop clutter. [Read More]

Formatting Text in OS X

Note: Neither of the solutions presented herein are quite right, so like, read through the post before you just start installing stuff. [Read More]

The Terrible Laughter

Everyone here who knew Gary will recall that if you spent time in his company, you were always laughing. You spent half the day laughing, he spent half the day laughing, or so it seemed, at least if he was in the company of other people… [Read More]

Why I Want Text-File Preferences For Every Application I Use

I recently started using a text editor called Vim. For the uninitiated, Vim is a lightweight text editor often used for writing code. It comes pre-loaded on some if not all remote servers. Since it’s designed to be used without a mouse, there are tons of keyboard shortcuts to learn.... [Read More]

Getting Friendlier With Vim

A few months ago I wrote a post about my first time tipping a toe in the water of Vim, an intensely keystroke-based text editor. Despite getting the basics down, I still did 95% of my coding in Sublime Text 2, my old go-to editor. [Read More]

Taking Screenshots Easier and Quicker

Previously I had recommended a not-free app called Glui for taking screenshots on Macs (in addition to the standard Command + Shift + 4 shortcut). Advantages to using Glui were and still are two-fold: (a) you can add arrows and text to your screen shot right in Glui and (b)... [Read More]

Update on My Keyboard Usage: The Happy Hacking Keyboard

Three months ago I wrote a post on Medium about how I had gotten pretty deep into the world of mechanical keyboards. Over the course of my post, after explaining some of the benefits (as I understood them at the time) and a brief explanation of the key things to... [Read More]

Catalog of Radiation Updates

On May 21st 2015, I migrated a handful of blog posts of mine from my totallynuclear page back to this GitHub blog. (If the totallynuclear page is down, you might be able to find a back up of my posts in this GitHub repo.) [Read More]

Some Tips for More Efficient Mac OS Usage

We use our computers a lot. It pays to take some time to learn how to use them even just a little bit more efficiently. In general one way to be more efficient is to use your mouse less and your keyboard more, hence keyboard shortcuts. Yes, they can be... [Read More]

Getting Started With Vim

Since 2012-ish I’ve been using Sublime Text 2 as my primary text editor. It’s very simple out of the box, but also allows for a fair amount of customization through its packages, settings, snippets, and custom keybindings. I’ve written about how I use Sublime Text before, and I still think... [Read More]

Strike 9 Game

At my second meet-up of this week, I ventured north to the east 20s for Building JavaScript Games. Our task was to build a seemingly simple game called Strike 9. [Read More]

Interactive Score Card

Every June my family has a big reunion down south. One of our traditions is playing a card game called Contract Rummy. If you don’t know the game here is one version of rules, but basically it’s gin rummy with 5 pre-set hands everyone plays. In the first hand, the... [Read More]

JavaScript Prototypes: The Basic Basics

I was always understood JavaScript as a functional programming language, but it turns out there are in fact ways to create basic objects and even “object factories” (what Rubyists know as Classes). [Read More]

Exploring Project Euler Problem #9

For practice with Ruby and Rspec, I’ve been working through some Project Euler problems. One of my favorites so far is #9, which asks us to find the one Pythagorean triplet for which a + b + c == 1000. Here is the GitHub repo with my solution for you... [Read More]

SquawkBot Part 2: Extracting URLs

In my first post about SquawkBot (public GitHub repo), I went over how the app connects to the Twitter REST API. In this post, I’ll be discussing the second main part of the app: extracting the URLs from the tweets. [Read More]

Using Chosen with Rails

Daniel and I are working on a Skillshare-like site for Flatiron students. Basically users can post lessons that they either want to teach as teachers or want to take as students. Then other users can sign up for these lessons, as either students or teachers. [Read More]

Window Management with Better Touch Tool

In my most-recent post I wrote about some Sublime Text tips and tricks I had picked up from an instructional video. I’ve since been using these new techniques almost constantly, especially the window management keyboard shortcuts (set via Sublime’s key-bindings). I’ve found them to be super-helpful, especially as we moved... [Read More]

Recall

Troublingly, I’ve taken very few notes during lectures at Flatiron. How will I remember niche methods and strange, counter-intuitive syntaxes?! [Read More]

Refactoring with POODR

Over the weekend I’ve been working a new side project in order to get more practice generating dynamic webpages using ERB. I’m calling it Recall and it’s supposed to take a Ruby method as a user input from the command line and then dynamically generate a new webpage that displays... [Read More]

Successively Greater Things

“What we fight with is so small, and when we win, it makes us small. What we want is to be defeated, decisively, by successively greater things.” [Read More]

Apps, Fonts, and Colors of my Current Coding Setup

I’ve been playing with my color theme and default font-face in my code editor, Sublime Text 2, this cold, snowy weekend, so I thought I’d share a little about my current application setup. I don’t know, maybe this is boring? Self-involved? I try not to get too bogged down in... [Read More]

Introducing ink version 0.0.4

I’m happy to announce that I’ve made some decent improvements to ink, my shell script for making Octopress blogs a little easier. I’ve just pushed version 0.0.4, which introduces two new improvements. [Read More]

Thoughts on Week 1

Phew! My brain has been hurting (in a good way) for the first time in years. Looking back over the last 7 days, I’d say I spent at least 14 hours a day dealing with code. The best metaphor I can think of is that part in the Matrix when... [Read More]

Day 3: Into the Ruby Mines

The pace is starting to pick up! Today marked our first tepid steps into Ruby, introducing not only a new topic, but a new way of thinking required by the course: programming logic. [Read More]

Flatiron Day Two

It’s day 2 and I’m already thinking about my computer differently. As Avi says, for us it will become more of a tool to build things and less of a device to consume media (he doesn’t like iPads either!). [Read More]

Flatiron Day One

What a luxury it is to be a student again! It’s amazing to raise your hand, ask a question, and get a definite answer. Hell, even when our T.A.s (T.A.s!) gave us cryptic answers to our questions, I was ecstatic. [Read More]