it’s a blog, yo — by brian copeland

CategoryStuff I Like

The Reverse Geocache Puzzle

You’ve heard of geocaching, right? Go to a location specified by GPS coordinates and find a hidden cache?

Mikal Hart created a box with a GPS inside that only opens when the box is at a set of GPS coordinates.

…a puzzle box that won’t open until it is taken to a certain location.

Quoted from http://arduiniana.org/projects/the-reverse-geo-cache-puzzle/

It’s such a cool idea, I really want to be the kind of person that makes something like this. I especially love the end of his writeup:

This little box is a novel way of combining a GPS, a servo, a button and a display. How many more marvelous combinations lurk out there, if only someone has the imagination to put them together the right way?

Quoted from http://arduiniana.org/projects/the-reverse-geo-cache-puzzle/

Fizz Buzz Enterprise Edition

This one’s hard to explain unless you’re a programmer, so bear with me…

The first thing you learn when programming is how to print “Hello, world!”. Very shortly afterwards, they teach you to do something slightly more complicated, the “fizz buzz” problem, meant to teach children about division:

[Children] generally sit in a circle. The player designated to go first says the number “1”, and each player thenceforth counts one number in turn. However, any number divisible by three is replaced by the word fizz and any number divisible by five by the word buzz. Numbers divisible by 15 become fizz buzz. A player who hesitates or makes a mistake is eliminated from the game.

quoted from https://en.wikipedia.org/wiki/Fizz_buzz

It’s not meant to be hard, just a toy problem to program. The code you write should output something like:

1
2
fizz
4
buzz
fizz
7
...

Working in Corporate America™, you code differently. Clear, concise code doesn’t get you ahead: “scalable”, jargon-filled code does. You’re supposed to write code that can run on computers around the world and serve billions of users. If one’s code is too simple and straight forward, the bosses will think one’s work is too easy.

Enter one of my favorite coding projects: Fizz Buzz Enterprise Edition.

FizzBuzz Enterprise Edition is a no-nonsense implementation of FizzBuzz made by serious businessmen for serious business purposes.

Project description from Fizz Buzz Enterprise Edition

Normally, fizz buzz can be written in a few lines:

for number in range(1, 100):
    if number % 3 == 0 and not number % 5 == 0:
        print("fizz")
    elif not number % 3 == 0 and number % 5 == 0:
        print("buzz")
    elif number % 3 == 0 and number % 5 == 0:
        print("fizzbuzz")
    else:
        print(number)

Fizz Buzz Enterprise Edition (FBEE) spreads this same logic across dozens of files. It’s really a work of art.

Now, explaining a joke sorta kills it, but here’s a few bullet points to help you get the joke. FBEE:

  • …is configurable to print on numbers other than 3 and 5
  • …can alter what “division” means
  • …has a rigorous testing package to ensure it performs accurately
  • …features a Contributor Code of Conduct

Not being a java programmer, my eyes sorta glaze over reading it. But I really appreciate the effort put into it. It’s also an open source project, which means anyone can contribute. This leads to a ton of issues raised by the community, such as #429:

It is apparent that people are pirating FizzBuzzEnterpriseEdition at an alarming rate, which the Accounting and Finance Team says is having a dramatic effect on our bottom line.

We need to look into options to protect our investment and our IP. I suggest some kind of Enterprise license manager with a USB dongle and quarterly subscription model.

Issue #429 submitted by drelephant

There’s a special place in my heart for a joke being taken as far as possible.

Woodburn Fractals

It’s a month into 2020 and I’m still clearing out my todo list. I don’t know about you, but I have a habit of bookmarking things I love with the intent of returning to them. But those bookmarks sit dormant and start to weigh me down with regret; why aren’t I doing cool stuff like this?!?

Because it’s a new decade, it’s time for a new approach. For the next several days, I’ll be blogging a few things I’ve stumbled across that inspire me. These are things I wish I had done myself, but it’s time to admit defeat and just admire the creativity of others.

First up is this amazing project where Kevindk9 saturates particle board wood in water, then uses a microwave oven transformer to burn beautiful patterns in said wood.

If you browse Kevindk9’s profile, it looks like he does a ton of cool stuff. Browse the gallery for some amazing close-ups of his work, then browse his profile for other crazy science-art. You won’t be disappointed.

The Burger Hunter

tl;dr: The Burger Hunter ‘dissed’ White Castle, but still wrote solid burger reviews. I studied him and used machine learning to replicate his reviews after he quit writing.

I subscribe to Secrets of the City. It’s twice-weekly email that informs you of stuff coming up in the Twin Cities. Super good.

Back in 2017, it had a regular feature called “The Burger Hunter”. This guy reviewed hamburgers around the Twin Cities, ranking them from 1-10 on Flavor, Presentation, and Originality. Even better, this guy had a very specific writing style:

As you can imagine the meat gets dominated by onion and renders that smell we all know from 50 feet away. I order mine without the O’s because they’ve been pretty much marinating in um. Topped with cheese and tbh it’s the only contrast you’ll get in the flavor on this ride. It’s so BOM bun onion meat that the cheese actually stands out.

[Quoted from the White Castle review, for which I hate him for]

Seriously, Mr. Burger Hunter had such a distinctive voice: liberal emoji’s, acronyms no one understands, sentences to make an english teacher cry:

First off it’s a hot mess. But glorious. It’s like I hope nobody’s looking kinda good. Just dig in.

[Quoted from Joe Sensor’s review]

I originally started paying attention out of hate. If you sum the three scores, he gave my beloved White Castle a 17.1, the lowest ever. Which is also bullshit: his only four in any category ever was White Castle’s presentation. Those boxes are a national treasure. I’m not sarcastic at all – just look at this photo from the review of the burger tavern:

That’s ugly as shit. Especially compared to these beauties:

[photo stolen from godairyfree.org]

Enraged, I did what any Data Scientist would do – I scraped his corpus and made a dataset. Definitely explore for yourself, but some highlights:

  • Only one perfect score ever was granted to The Red Cow
  • The worst two scores were the first review (Annie’s Parlour, 17.5, which he still called “A damn good burger”) and last review (White Castle, 17.1)
  • Flavor exclusively exists between 7.1 and 10, making a ten point scale strange
  • The third lowest score ever (Miller’s Corner Bar) is described as “Before us is probably my number 1 most favorite hunt so far”)
  • To be fair, he starts his top review ever, “Have you ever woke up and said, ‘I had too much to dream last night?'” (Red Cow)

Needless to say, this guy is somewhere between, “I love hamburgers” and “BOW BEFORE YOUR HAMBURGER GOD“.

3D plots suck, but here’s every score he gave:

Really, they suck. See how Matt’s Bar looks high on presentation and low on flavor? It’s a Originality:10; Presentation;5, Flavor:10. The lightness of the dot is supposed to tell you it’s low on the presentation scale. Or not, I don’t really know. 3D plots suck. ¯\_(ツ)_/¯

More important than pivoting on 90+ reviews (such as discovering that Kelly’s Depot Bar is the best flavor, in spite of its originality or presentation), we need technology to fill the empty hole left by the Burger Hunter.

Enter Andrej Karpathy. This guy is writing about “Recurrent Neural Networks”, a brand of machine learning that’s good with sequences (like the sequence of letters you’re reading now!). Train a RNN with enough text, it can learn how to spell. Seriously – just give the model a seed of a few letters in a sentence, it guesses the next letter.

For example, let an RNN run through Shakespeare. Then, start it out by providing the first little bit of a text:

PANDARUS:
Alas, I thi

It starts guessing that the next letter is ‘n’. Shift one space over, it thinks the next letter is ‘k’. Eventually, it writes:

PANDARUS:
Alas, I think he shall be come approached and the day
When little srain would be attain’d into being never fed,
And who is but a chain and subjects of his death,
I should not sleep.

I’m glossing over details, but the takeaway here is that this is not a quote from one of Shakespeare’s plays. This RNN model is writing brand-new-Shakespeare. Let’s do this with the Burger Hunter!

I trained a model on every word the Burger Hunter ever published. It’s really entertaining how bad my model is at the beginning. Here’s an excerpt from early in training:

ed burger is a burger is a burger is a burger is a burger is a burger is a burger is a burger is a burger is a burger is a burger is a burger is a burger is a burger is a burger is a burger is a burger is a burger is a burger is a burger is a burger

Notice, the RNN gets the idea – after the sequence ‘burg’ comes the letter ‘e’. But it’s stuck in a loop, it doesn’t realize that ‘i’ does not follow after ‘is a burger ‘. But that’s okay, this was only about twenty minutes of training. Let’s zoom forward an hour:

e is so the burger is a sertise shat conled of cheese and the burger is a big burger cutter frilled and some fresh and they don’t spedite. the bun is soft, fresh and the burger is a secret saled frinl. the burger is topped with a secret sale a burger

It’s gibberish… but not bad! After only an hour of training, it’s starting to write coherent phrases, like “the bun is soft, fresh and “.

More training!

juicy & old timey! but the burger is to food in and the bacon is a big slice and down that are so good that anla to the sime cause they are doubling to the slime chute the meat flavor is fooding and put of some garlic just a smoked galf po y

That looks like something that a human might have written a little (a lot) drunk. It falls apart at the end… but notice, there’s no repeating. It’s just shy of cohesive sentences that tell a story. This is trained off only ~90 reviews. While this was the best result I achieved back in late 2017, technology is constantly getting better. 

We’ll meet again, Mr. Burger Hunter. 

Micro Posts and Finding Meaning in Life

I’ve been a bad blogger. I see interesting content on the internet and don’t share it. I think, “eventually I’ll write an intelligent and meaningful post about it.” Then, months (years) later, I haven’t ever done anything and this blog goes months (years) without new content. Today is the day I stop the bad habit. Here’s the first in a (hopefully) long line of posts about small little things I like, or at least things I find insightful.

Fittingly, my first share is about someone displaying the kind of discipline I can only dream of:

A videogame player once spent 500 hours reaching level 99 in the first area of Final Fantasy VII via random low level encounters, in order to express his hatred for a player called Dick Tree

Long story short: Mr. “Dick Tree” had a theory that you could max out your character at the very beginning of a video game. That person promised a follow up proving it was possible, then fell off the map. Frustrated, anonymous internet writer “CirclMastr” did it himself. He spent five hundred hours manually beating the smallest enemies in the earliest stages of the video game to prove it was possible. This is boring, menial, tedious labor, to say the least.

Necessary disclosures:

  • Final Fantasy VII was (is) my favorite video game of all time, but this sounds like torture
  • I’ve made a career out of “just doing it to get it done”, so I totally get the attitude of CirclMastr, but this still sounds like torture
  • I dream of being the kind of person with the kind of discipline this would take, but fuck that, discipline for discipline’s sake is torture

I think my initial reaction was probably the same you feel right now: what a fucking waste of time. Even if he’s listening to podcasts while playing… or working out… or some other distraction… it is a shocking amount of time to spend with no pay off. I mean, this guy will get no money from it. No one will invite this guy to speak at a video gaming conference. Heck, he did it to spite someone that may never know he did it.

So… meaningless? Should we laugh at this guy?

CirclMastr has a response:

Life does not have inherent meaning; to say that our lives are pointless and our achievements meaningless is to state the obvious. No matter how grand our achievements or how broad their scope, time turns all to dust and death destroys all memory. But that does not mean we cannot ascribe our own meaning to what we do. It is because nothing has meaning unto itself that we are free to create meaning, to make metaphor, and in doing so reflect on ourselves and our world.

I found this article via reddit back on September 1st, 2017, but I still think about it. This story is perhaps the most meaningful thing I’ve read in recent memory. When it comes down to it, stupid passion is still passion.

Ice Candle

Got one of those things you really like, but never remember to use? For me, it’s this Mathmos Ice Candle.

What’s that tantalizing glow?

You’re seeing a cylinder of ice surrounding a tea light. The ice is sitting on a grate with a rubber bucket below to collect the water as it melts.

It’s all frosty in the beginning, and then physics kicks in:

It’s pretty cool that the tea light doesn’t burn completely: the surrounding ice prevents all the wax from melting. It lasts about 1.5 hours, which is a lot longer than you’d think ice could withstand sitting next to a candle. I usually go through at least two tea lights in one sitting.

I’ve been trying to get rid of the useless junk I own and this almost certainly qualifies. Not only do I have to store it for the sole purpose of being pretty, it takes up space in the freezer, which is much more valuable space than your usual knick-knack. Fuck it, it’s cool.

/pun

Kanye West iPhone Cover

It’s been two years, but it’s time to retire the Kanye West Exclusive Art iPhone Case.

Exclusive art by Kanye West for my iPhone

I snagged this guy for $0.54 at the Office Depot that closed in downtown Minneapolis. It was grey, tacky, and suitably prevented scratches on the back of my iPhone.

Should you have doubted the AUTHENTICITY of this iPhone case…

You know it’s good when it’s signed by the artist himself. Lesser art certainly doesn’t have a CERTIFICATE OF AUTHENTICITY.

I normally go sans-case, as I don’t mind scratches and hate adding precious millimeters to my designed-to-be-thin devices. But I broke my screen last February and decided I was no longer worthy of a sexy case-less phone. Luckily, this bad boy was amazingly tacky and my favorite color. Plus, it claims I donated to charity by purchasing this for less than a dollar. Win-win!

Interestingly enough, the case started causing my phone to crash starting in November. I don’t know if it was holding a button down, or simply not dissipating heat. As the phone is now over two years old, I’m just going to risk it and go sans-case again. Bare-back is better, anyway.

Backyard Fire Pit

Close up of some winter flames

One of my new year resolutions is to spend more time outside, even in the winter. As a result, this sexy propane fire pit (a Christmas gift two years ago from my folks) is getting a lot more use. It’s peaceful outside, it’s great getting fresh air, and it makes the winter suck less.

Copeland backyard in the dead of Winter