I just unlicensed my software

I just relinquished my copyrights for Sidenote and Puzzle Code. The software is now in the public domain for everyone to enjoy more freely.  You could say I unlicensed my code.

Before just now, this code was copyrighted and licensed to the world under the Apache License.

The practical significance of my decision is that, now, if you copy my code you no longer need to give me credit. Nor display the Apache License.

I think this change will make it easier for people to recycle my code snippets. And although you’re not required to, I would still appreciate if you give me credit if you copy my code. No one likes a plagiarist.

I deliberated unlicensing my code for about three minutes. It was an easy decision. The timestamps are here.

What motivated my change of heart?

I learned about the unlicensed movement. I am a fan of public domain software because it affords users the most freedom. Copy it. Paste it. Snip it. Hack it. Do anything you want.

I believe I maximize my contribution to the world by setting my software free.


It’s annoying when people criticize my personal decisions. Nevertheless, I enjoy defending myself.

Some lawyers don’t know how to deal with public-domain software.

I’m OK with that.

Some corporations are afraid of using public-domain software.

I don’t know what they’re afraid of. Also, I’m OK with that.

What if someone steals your ideas and profits from them?

This concern applies to open source software in general.

No one can steal my ideas because I am freely giving them away. I love my ideas. I want them to spread.

The public domain isn’t applicable everywhere.

Just as copyright is a man-made concept, so is the public domain. Supposedly some governments don’t recognize the public domain.

If your government limits your freedom to use my software, let me know. I will cut you a special licensed version of my software. I would also encourage you to file a bug report to your legislator. 

The UNLICENSE is nonsensical

For example, it specifies a warranty, which supposedly cannot apply to public domain works. I’m happy to have a warranty statement just in case some judge thinks it is sensible. Also, I love non sequiturs.

People who use allegedly nonsensical (un)licenses are cargo culters

I am not a lawyer. You are probably not a lawyer. Even if you are, lawyers, judges, and juries often disagree.

If you think it’s cargo culting to use an (un)license you don’t fully understand then we are all cargo culting. Who reads and understands every word of every license and EULA they use and submit to?

You should use [some other public domain statement] instead

I prefer the UNLICENSE. It best represents my philosophy and style.

If you are curious about other ways to similarly set your code free, check out CC0BOLA, and WTFPL.

Other criticisms

If you have a criticism I haven’t heard before, let me know!

Thank you


Lots of side projects

I’ve been working on a lot of side projects lately.


Puzzle Code is a video game that teaches computer programming, just by playing the game. It’s nowhere near complete, but it already features 12 levels and three instructions: move, turn, and goto. The source code is on github.

There’s already lots of free programming tutorials, classes, games, etc. for free on the Web today. Why does the world need yet another one? Well, mine is going to be different. ;-) Specifically, I am focusing on the following goals with Puzzle Code. 

  1. Remove all unnecessary impediments to programming. Programming is fundamentally challenging, but introductions to programming (whether a game, a course, or something else) usually force the aspiring programming to endure torture (such as compiler error messages) that is unrelated to that fundamental challenge of programming. One of things I’m doing is using an assembly language  (inspired by RoboCom) instead of a high-level language. I hope this will make it easier to give good error messages, and the simpler syntax will make it easier to learn new programming concepts.
  2. Make programming fun all on its own. 
  3. Self contained. No need to have “course materials.” Simply playing the game (with assistance from help and hint buttons) should be sufficient to learn programming. There is no need for in-person mentorship & teaching makes this form of computer-science education scalable.
  4. If you have a programmer inside of you, I want this game to bring it out of you and help you realize you love programming.
  5. A stepping stone to real world programming. Completing the game should be sufficient to easily transition students to real-world programming (like how Esperanto is used as a pedagogic language).
  6. Make it fun for novice, intermediate, and expert programmers.
  7. As the player’s programming skills become more sophisticated, provide an increasingly rewarding playing experience.
  8. Make it fun for both students who do and don’t have their own inventive ideas right away.
  9. Teach sophisticated programming concepts.
  10. Help students develop habits of teaching themselves and similarly don’t force feed students information. 
  11. Foster a community around the game. E.g. forums and chat rooms where players can brainstorm, help each other, design puzzles.

Ultimately, I am trying to recreate the learning environment I had when I taught myself how to program with QBasic and advice from AOL’s message boards.


Sidenote is a new document format optimized for reading & writing skimmable documents. In a way, it represents a new take on tabbed browsing. Rather than describing it here, just go to sidenote.io, and see for yourself.

I tested it out by porting an FAQ on the NSA mass surveillance into Sidenote format. I really like how it turned out. I think it’s much easier to digest the FAQ when its presented in Sidenote format.

Beer Garden Tech Talk

In June, Ivan Balepin and I visited the Wikimedia Foundation’s headquarters to give a tech talk on our security research project Beer Garden. Of course, I used Sidenote to deliver the presentation: mikegagnon.com/beergarden.

They recorded the talk and posted it on youtube. Watching the youtube video is tough for me; I now realize I use lots of verbal fillers…


I’ve been developing a party game with my brother-in-law Jon Manning. The goal is to come in second place. The instructions are of course written in Sidenote format.