$ whois Hardmath123

I am a geek. When not staring at math problems or code, I’m producing or consuming music. Hardmath123 is my alias on the internet. It was chosen in a much-regretted burst of spontaneity when I was young[er] and [more] foolish. It has inexorably linked itself with me since then. I don't mind.

I write English and code. I’m interested in raytracing, compiler design, and cryptography. I believe in legible web design. I care about CS education—I help write code for Berkeley Snap! and run CS events like Scratch Day and hackathons in the Bay Area.

If you have something to say, you can leave a comment on any of the posts. If you’re hardcore, file an issue on this blog’s Github page. If it’s a matter of life, death, or pizza, you can email me at contact (at) comfortablynumbered (dot) appspotmail (dot) com. I’m omnipresent on IRC as hardmath123 on irc.freenode.net.

Don't Call Us, We'll Call You 1/7/17

Monadic IO and the Sugarloaf Transformation

The FACADE Protocol 1/4/17

A cryptographic primitive for plausibly-deniable collusion.

Abandon All Scope, Ye Who Enter Here 12/4/16

Adding dynamic scoping to JavaScript, for fun and profit, because that is definitely a good idea that cannot possibly backfire at all.

All about that basis 11/13/16

Three ways to compute semantic primes

Nineteen 10/21/16

Explaining xenotonality with number-theoretic music theory

Dimensional Analysis: a worksheet 10/11/16

An article with absolute significance

TJCTF 2016 Writeups 6/10/16

In which we hack our way to second place.

Carnival of Mathematics 134 5/15/16

In which I have the honor of hosting an edition of a roving blog.

They did the MONSTER match! 2/29/16

Implementing regular expressions in Scratch using subway systems and coins.

Perchance to Scheme 2/14/16

A field guide to the menagerie of Scheme dialects

Armchair Philosophy 1/29/16

An allegory.

A Moiety of Reminiscence 1/23/16

Fifty ways the web has changed

Meet the Robinson: 4 1/11/16

Unification, equality and harmony heuristics: the grand finale.

Meet the Robinson: 3 1/4/16

In which we tame the infinite.

A Balance of Powers 11/19/15

A hunt for number-theoretic coincidences.

Meet the Robinson: 2 11/5/15

Continuing on our quest to build an automatic theorem-prover.

Meet the Robinson 10/18/15

An introduction to automatic theorem proving.

There are no rules in math 10/15/15

Don’t use hammers. Build them.

Wake Up, Sheeple: Falcon 9 Edition 9/17/15

We’re missing the point.

The Seasoned Scratcher 8/16/15

What to learn after Scratch: a definitive guide.

A Suspicion of Plausible Answers 8/14/15

Investigating the physics of Rendezvous with Rama

To Find Quarrel in a Straw 7/28/15

A pointless exercise.

Indefinite 6/8/15

Reflections on 40,000 words.

They do it with Mirrors 6/1/15

An idealized transcript of a talk I gave.

PreTTY Screenshots 5/14/15

How to use the command line for screen capture tricks

An Elementary Problem 5/3/15

Can you find the Solution?

I Believe in Magic 4/14/15

I hope you do, too.

Stop Teaching Intro CS 4/6/15

Reflections on a worrying trend.

How Random is xkcd? 3/20/15

A blatant abuse of statistics.

Capture the Hackathon 3/17/15

Why hackathons aren’t helping the world, and how CTFs can fix that.

Use Imperfect Tools 3/17/15

A promise to myself.

Harry Potter and the Diagon(alization) Alley 2/26/15

My attempt at Harry Potter/Über eine Eigenschaft des Inbegriffes aller reellen algebraischen Zahlen crossover fanfiction.

Nondeterministic 2/10/15

Be wrong on the Internet.

Embracing Types 2/8/15

What isn’t wrong with static typing.

Nasty Python Monstrosities 2/4/15

Why I’m not going to distribute any Python ever again.

Bower! Unlimited Bower! 2/1/15

How not to write a module.

Coding the Mandelbrot Set 1/10/15

A mirror of a post written a long time ago in a galaxy far away.

Array of Hope 1/5/15

Explaining why Scratch Arrays misbehave.

The Nightmare After Christmas 12/25/14


It's not socket science: Part II 12/17/14

In which we invade a chatroom.

Dear Hollywood 12/12/14

A rant about technobabble.

Don your tmuxedo 12/7/14

A tmux quickstart.

It's not socket science: Part I 11/29/14

A hands-on introduction to networking.

Notes on Binary Strings 11/13/14

A memory dump of useful functions

Some PicoCTF Writeups 11/8/14

In honor of PicoCTF, I wrote this post in pico.

Better Earley than never 10/25/14

An informal explanation of Earley parsing.

Detech Your Classroom 10/10/14

Technology isn’t helping.

Bingo is Boring 10/2/14

Memories of elementary school

Brown M&Ms 9/6/14

A request.

GamifiEd 8/31/14

The pitfalls of quantifying learning.

ANSIble 8/6/14

Using ANSI escape codes for more interactive CLI interfaces

Programming is not math 7/24/14

My two cents on a couple of blog posts.

Cryptolegal 7/18/14

A short story I wrote late last night.

Jazz is Open Source 7/1/14

Why jazz embodies the hacker spirit.

Lord of the Strings 6/14/14

String Theory for hackers.

Well, well, well, we meet again. 6/11/14

A new beginning?

Why Math is a Sport 3/23/14

And why we should worry.

How Newbies Codebreak 2/8/14

A story of codebreaking using Python, Google, and common sense.

Blown to Bitcoins 12/30/13

Bitcoin for Liberal Arts majors.

Lampshades and Analytic Geometry 12/8/13

Exploring conic sections with lampshades, potatoes, and smoke simulations.

Living Without Sudo 11/29/13

UNIX hacking for the faint at heart, or those blessed with mean sysadmins.

Hello, World! 11/27/13

Welcoming myself to my blog.