Read my post on Mozilla Hacks Read my interview with The Creative Independent

Published on Nov 26, 2018

I'm leaving Beaker!

I’m leaving Beaker! You might be expecting this post to expose a controversy or detail complaints about working on the project, but there is no controversy, and the complaints I do have will be familiar to anyone who’s formed a company or maintained an open-source project.

Read more →
Published on Jun 12, 2018

Organizing my kitchen with Airtable

My kitchen is by no means a shipwreck, but there’s definitely room for improvement. I’ve been hearing a lot of buzz about Airtable which proclaims to help you “organize anything”, so I thought “hey some organization can’t hurt” and spent Sunday inventorying my entire kitchen.

Read more →
Published on Jan 01, 2018

2017: Year in review

2017 was my most productive year yet. Not because I achieved superhuman levels of productivity, but because I made the transition between figuring out what to do with my life and doing something with my life. It feels damn good.

Read more →
Published on Aug 02, 2017

Building a peer-to-peer Photos app with Beaker and Dat

Inside of the Beaker browser, we’ve implemented a set of new Web APIs for connecting apps to the peer-to-peer network. This is part 1 of a series about how to build peer-to-peer Web apps.

I recently published a peer-to-peer Photos app using the Beaker browser. Today we’ll step through how the app was built, and how you can make other peer-to-peer Web apps like it.

Read more →

How Merkle trees enable the decentralized Web

Earlier this month, I spoke at bangbangcon about how Merkle trees are the backbone of nearly all decentralized technologies. Here is a summary of my presentation: The Web is centralized, but why? There are two powerful centralizing forces that affect how the Web works today: The server problem Host-based addressing We’ll address them in turn. 1. The server problem If you want to host files on the Web, you need a server. Read more →
Published on Oct 06, 2016

Recurse Center Day 9: A Peer-To-Peer Chat System

Today I worked on a fun ‘lil set of p2p exercises written by mafintosh. I wrote a very basic p2p chat tool, which at the moment requires that the network be fully connected, or rather that each node in the system is connected to every other node. The code is on GitHub, so you can try it out for yourself! In 3 separate terminals run these commands, which will connect three peers and allow them to chat on your local network. Read more →
Published on Oct 05, 2016

Recurse Center Day 8: Hamming Weight: I Am So Confused

I’m reimplementing my cryptopals solutions in Python, and today I worked a challenge that required me to calculate the Hamming distance between two equal-length strings. Hamming distance is a measure of difference - it indicates how many corresponding characters in the input strings are different. For example, the Hamming distance between TARA and TART is 1. Well, that’s not entirely true. More often it’s more relevant to determine the specific number of differing bits. Read more →
Published on Oct 04, 2016

Recurse Center Day 7: I Moved Fast and Broke Things

Today I moved fast and broke things – this site to be specific – but it’s all OK because I know what went wrong and (I think) I know how to fix it! Here’s the short story: I currently host this site on Amazon EC2, but since it’s just a static site, it’s hard to justify the cost of EC2, especially since there are much cheaper options that still allow me to manage my TLS certificates (which is a non-negotiable requirement for me). Read more →
Published on Oct 03, 2016

Recurse Center Day 6: Raft's Safety Argument and Cryptopals Round 2

Today I read a lot. Per the recommendation of Mike Nielsen, I’m working through The TCP/IP Guide and practicing working with Wireshark along the way. I also re-read some parts of the Raft paper, specifically focusing on the the arguments that support Raft’s safety guarantee – the guarantee that it if any server has applied a log entry to its state machine, then no other server may apply a different command at that same log index. Read more →
Published on Sep 30, 2016

Recurse Center Day 5: Heaps, Logarithms, and Interviews

Today was great. Something I’d been trying and failing to understand for days finally clicked, and it feels so good. Basically I didn’t intuitively understand why an algorithm is O(log n) or O(n log n), but now I do! I wrote a post so that if I ever forget I’ll have notes to help me relearn it. It finally started making sense because while I was learning about the heap data structure and trying to implement insertion, I became incredibly frustrated that I knew the insertion op was O(log n), but I had no idea why. Read more →
Published on Sep 30, 2016

Time Complexity and Logarithms

I’ve been practicing evaluating time complexity with Big O notation, and while I can intuitively recognize when an algorithm runs in linear time, constant time, or quadratic time, I’ve not been able to intuit why and when a runtime is O(log n) or O(n log n). Until today! So here are some notes that hopefully will be helpful for understanding why a program has a time complexity of some factor of log n. Read more →
Published on Sep 29, 2016

Recurse Center Day 4: Tara Learns to Sort

I don’t have a formal CS education, so one thing I’m focusing on at RC is filling in the gaps in my knowledge of data structures and algorithms. Today I focused on sorting algorithms. I learned about and implemented insertion sort and quicksort, in the process became much more confident with Big O notation. I used to be intimidated by evaluating algorithm efficiency, but as with most unfamiliar concepts, it’s much less complicated than I’d made it out to be. Read more →
Published on Sep 28, 2016

Recurse Center Day 3: Asking for Help

Today was marked by the realization that when one asks for help at the Recurse Center, amazing things happen. I woke up this morning with the intention of addressing the issue with my zsh configuration as quickly as possible. The bug had dragged on to the point that I was thoroughly frustrated, so before I spent any time tackling it myself, I asked for help in zulip and sure enough a bunch of folks jumped in with suggestions. Read more →

Recurse Center Day 2: Pairing Is Great

Today was the first “regular day” of RC, wherein the schedule was structured as it will be for the remainder of the batch. I started the day with two goals: Make the process of publishing new posts to this blog as frictionless as possible. Work on the password manager that I wrote in Rust. I didn’t complete either of these tasks, but I made progress on #1 and was really productive in some other ways. Read more →
Published on Sep 26, 2016

Recurse Center Day 1: New Faces and W-Shingling

Today was the first day of the Recurse Center. I’ve understood for a while that RC is a special place that attracts special people, but experiencing it firsthand was better than I could have imagined. I met so many smart, curious, and kind people and I can barely believe I have the opportunity to be colocated with these folks for three whole months! Most of the day was spent socializing or enjoying workshops that the RC staff and Fall 1 batch members organized, but I did find the chance to sit down and write some code. Read more →
Published on Jun 03, 2016

Learning Rust

Lately I’ve been spending my time learning and practicing Rust, in part because I want to learn more about systems programming, but also because I’m interested in financial cryptography, and I suspect that when Rust is mature enough, many blockchain, Bitcoin, Ethereum, etc. applications will be built in Rust. From the outset, I knew that learning systems programming was going to be a huge undertaking - I learned to program by writing JavaScript, so memory management and type systems have been hidden behind a smoke screen. Read more →
Published on Sep 04, 2015

Web security specifications you should know about

The W3C WebAppSec working group is tasked with developing web standards to tackle some of the most persistest threats on the web. Whole categories of attacks, like cross-site scripting (XSS), are largely understood and preventable, yet tragically few web pages implement proper defenses. This suggests there is an opportunity to build better tools that enable developers to practice better web security, and the WebAppSec WG has worked hard to do exactly that. Read more →

Axolotol, an attempt at a summary

After Zooko introduced me to TextSecure/Signal a few months ago, I started using Signal for all of my encrypted asynchronous messaging. The app is terrifically usable, and most of my friends use it, so I was excited to start using the app. But I wasn’t satisfied with just using the app; I wanted to understand what was going on behind the scenes, so I dove in and tried to understand as much as I could about the cryptography that powers millions of people’s secure communications. Read more →
Published on Apr 22, 2015

Cryptography in the browser

Yesterday I spoke at AustinJS about in-browser cryptography, and the future of cryptographic protocols being executed by JavaScript. I addressed some of the challenges of cryptography running in the browser and how we might tackle them in the future. I’d like to expand on some of the topics I discussed, and a few others I didn’t have time to address. Current Tools Are Not Usable If you use GPG to encrypt email, whether you use it on the command line, with GPGTools, or an extension like Enigmail, you understand that it can be inconvenient to use, and leaves something to desire – consider features we’re accustomed to in modern mail clients – quickly reading messages, cc/ing recipients, and searching message bodies. Read more →
Published on Mar 21, 2015

My information revolution

I grew up in a rural area, in a town with a population of < 300. In addition to a lack of diversity of ideas and people in my community, we couldn’t afford a computer, we didn’t own a lot of books, and our public library sucked, so I didn’t have access to much information as a kid. I didn’t realize how closed off from the outside world I was until 2010, when I began my first year of college. Read more →
Published on Mar 02, 2015

The cost of clipping coupons

I used to clip coupons. I learned how to pinch pennies from the best. My dad was a frivolous man, and my great grandmother even more so. At Christmas, we unwrapped gifts with a careful touch and refolded the wrapping paper to be used again the following year. She really didn’t need to reserve such fiscal caution, and everyone in the family always shared knowing glances as we carefully removed the bow decorating our gift (an odd touch for for a gift from someone so frugal), wondering if we might see it repurposed as an adornment for next year’s birthday gift. Read more →
Published on Feb 25, 2015

On dropping out

After leaving university in the spring semester of my senior year, I’ve reflected deeply on my decision, and my college experience as a whole. While this doesn’t capture my thoughts perfectly, I’ll share a piece I wrote for a student-run publication at my university. The editor asked me to share something about my story. She thought it was inspiring, and that dropping out took some sort of courage. Well, not really, frankly I was just unsatisfied with my situation, and pretty depressed about it, so I left and tried to make my life better. Read more →
Published on Sep 22, 2013

Thoughts on Lost in Translation

I recently watched Lost in Translation, a film chronicling the loneliness of two Americans in Tokyo. One a young philosophy graduate and wife pondering her purpose over cigarettes and the Tokyo skyline from her hotel window, another a jaded movie star-turned-TV commercial actor burning cigars and time in a hotel bar between shoots. Their friendship, while forbidden by their respective marriages, and sometimes uncomfortable to witness, is forged with their shared ennui, and begs viewers to question if they might someday enter their steady state of pale, muted emotion. Read more →
Published on Jul 23, 2013

On happiness

Cobbling and exploring the caverns of discomfort. Laboring ‘til a project’s thorough completion. Reveling in piercing rawness and intimacy. Happiness, as I know it, is a product of the realization that prior-known happiness was only a preview. Read more →
Published on Jun 16, 2013

Success is whatever you call it

I’ve been prompted to respond to the question, How do you define success? Rather than being bound to narrow definition of reproductive success, humans are capable of cognition that offers us the opportunity to rethink success as imposed by parents, teachers, and perceived social mores. Seriously, wrap your head around this thought for a moment. You define your own success. I propose that regardless of any outward impositions, expectations, or criticisms, each individual’s definition of success cannot be meddled with. Read more →
Published on Jun 13, 2013

The power of people

This morning my grumblings were fueled by my vexation that the luxury of solitude would be stolen away from me by my required participation in…wait for it…human interaction. I know, right? What a pain. Actually, my attitude this morning wasn’t an anomaly. After picking my brain, I can’t recall a day of my life in which disgust aimed at human interaction didn’t pervade my thoughts. The very instigator of my discontent, it’s people, without fail, who transform my daily grump & gripe into laughter, joy, and as my good friend Bruce describes it, “smiles that speak to the soul…those soul to soul smiles…that make me realize how alive I really am. Read more →
Published on May 25, 2013


During an afternoon bike ride through downtown Mt. Pleasant, I found myself dodging dozens of people shouting protests against Monsanto, an agricultural company infamous for its purportedly shady business practices and use of genetic engineering. Observing this March Against Monsanto from a distance, repeated chants of “Hell no! GMOs!” served as the cadence of my whirring mind as I considered joining their protests. Ultimately, I chose not to participate. Frankly, I’m just not comfortable with the voice of a group of protesters representing my own. Read more →
Published on May 21, 2013

Paywalls and open access

As a student at Central Michigan University, I’m granted access to a multitude of academic journals. The most reputable of these journals circulate revolutionary insights that aim to tackle some of the most pressing and fascinating queries of this century: HIV treatment, bacterial antibiotic resistance, quantum theory, and global climate change. At any moment, I can log onto the university library’s website and access a research article about the latest and greatest research on nearly any topic, of any field of study. Read more →
Published on May 16, 2013

Growth and exploration, dude

This summer I’m participating in the CMU McNair Scholars Program Summer Research Institute (SRI) which involves conducting an independent research project with a faculty member, preparing to take the GRE in August, scoping out prospective graduate schools, and readying myself apply to graduate school. Oh, and engaging in personal growth too. I plan to chronicle my experiences as a McNair Scholar here mostly because Lynn said so…and also because I can appreciate the process of writing and sharing, especially during a time of great growth and exploration. Read more →