Month: May 2014

In which I pen a small piece about Transistor (with spoilers)

Posted on Updated on

WARNING: Major plot spoilers for Supergiant Games’ Transistor follow. If you haven’t played through the game yet, don’t even think about reading this. Go play it. Form your own opinions about how it goes together. See the ending. And then, come back and read this post.

Read the rest of this entry »

Why the “Number Game” isn’t secret at all

Posted on Updated on

In short: humans are very bad at generating random numbers and obscuring themselves from set theory analysis.

Today, the “Number Game” swept Twitter, Facebook, and other social media. The premise is simple: privately message an individual a number, and they will publicly post their thoughts about you to that number.

Secrecy, then, relies on two pieces of information. First, it requires that the recipient party not divulge the name of the party providing the pre-shared numeric key. Second, it relies on each key existing as a nonce, as any additional use of the same key is compromised to prior parties.

Unfortunately, as I discovered just by trawling my own timeline, many people failed to provide this second guarantee (affording false positives, such as 666). The higher the information entropy of the number selected and reused, the more likely it was selected by a single party.

This has several interesting ramifications. First, it means every identifiable key shared more than once is unmasked to all other recipients. Each recipient will know what the others have said about you.

Second, message passing for this “game” on Twitter is handled by direct message. Because this requires the recipient be following the sending party, there is a public record of a small pool of candidates for every key. By performing set intersection upon each reuse, each participant’s followers whittle the candidates down until there exists one (and only one) party who could have shared the original key. Add any metadata provided by the message text itself (such as, “this person’s art…”), and this whittles down even faster.

While this game may be “cute” and “fun”, I do not advise playing. It does not work as advertised. If you continue to do so, please be aware that you are publicly speaking about someone to your audience with dubious, trivially breakable secrecy.

The fact this is so noisy is a matter to address separately. And, accidentally presciently, I addressed my thoughts on this yesterday. I intend to filter these messages and continue on my merry way. I couldn’t ask for better data to test my new tools against, so collectively, thank you!

But, as many other people do not have this luxury: please be considerate to your audiences. Twitter is broadcasting these to everyone who follows you, many of whom desire timely, relevant information. Filling their channels with noise is not generally appreciated.

Now, if you’ll excuse me, I’m going to go try lucky number 8. 8 hours of sleep, that is.


A Patch for Social Media Bankruptcy

Posted on Updated on

As evidenced in blog posts predating this WordPress account, I have a keen interest in social media. Particularly, I would like to make it less of a noisy place and more usable “at a glance” than it exists today.

A recent post from tacit reminded me that, in some respects, this problem has been solved. Email messages are remarkably similar to posts on Twitter, Tumblr, and Facebook, which isn’t a huge surprise given their Usenet and BBS roots, which are themselves rooted in much earlier and older methods of human communication. Email messages are furthermore just as disposable, just as informative, and just as easy to abuse as the sites we now use as aggregators for our communication.

So, I wonder: why don’t we see more spam filtering in social media? For that matter: why aren’t we using this same class of machine learning algorithms to determine legitimate interest instead of “driving engagement?”

Is it because the gatekeepers have a vested interest in serving advertisements? Well, in some part, yes: by maximizing the amount of time people spend with the site, reading duplicate but engaging information, they get more opportunities to gather data and serve advertising. But, there’s a second side to this: pattern recognition is difficult to get right generically. For a simple example, try Google Voice transcription or Google Translate. They’re serviceable, but often, hilariously wrong.*

But, there’s nothing stopping client authors from writing their own classifier for each user. Imagine this for a moment: a theoretical Twitter client where each tweet gave you an “interested” and “uninterested” button. “Interested” includes more content similar to what you selected. “Uninterested” selects less, affecting future tweet selection as well. Both have configurable fall-off and the ability to randomly bypass the filter as desired, so even as one’s interests change over time, you’re guaranteed to not get a perfect echo chamber (unless you want one, of course).

And I’m not even thinking of anything fancy here. Under the hood is just a naive Bayes classifier trained on your selections. If you want to be fancy, consider using information entropy as a low-pass filter. Maybe you want to use your favorite machine learning algorithm instead? Sure, go for it.

My point is, of the gamut of social media clients available, very few bother to give us the tools necessary to manage information. I find this incredibly strange: either we’ve forgotten why they were relevant in the first place, or social media has forced us to recontextualize what is fundamentally the same problem as spam in email.

So, I intend to try this for my own purposes. Since I interact with the majority of short-form social media using IRC (using the truly wonderful IRSSI and Bitlbee), I’m going to write this into a plugin that color-codes incoming messages by how interesting they are. At any time, I can add the text to my classifier by just passing the message through it. All unclassified incoming messages push classification closer to neutral, while all “interested” and “uninterested” votes push them closer to bold or invisible (but never so invisible that mouse highlighting can’t unmask them).

And, we’ll see how that goes. If it works, I might advocate for other people to try it (or patch it into clients until more do).

* Conversely, this is why products like Dragon NaturallySpeaking are so good. They train on a set exclusive to the user, which is better at picking up deviations in patterns of speech, accents, etc. If Google or any of the other large organizations provided a training set per user, this could improve.

Fiction: The Return of Steve Jobs

Posted on Updated on

On March 27th, 2016, Apple shocked the world again. A large display banner and invitational on stated that Steve Jobs was alive. It was later confirmed to be legitimate.

That Thursday, amidst a bewildered and excited crowd of 68,587 people, a turtlenecked, seeming-40s Steve Jobs ascended the podium at Levi’s Stadium. Sharp eyed and keen for the camera, he addressed the crowd:

Friends. Colleagues. On August 25th, 2011, I resigned as Apple’s CEO. Back then, I was the first to tell you that I could no longer meet my duties and expectations as CEO. Today, I am also the first to tell you that I am once again fit for that duty. Effective September 1st, I will be returning to the company as CTO and CEO until further notice.

The news of my death did not go unreported. On October 5th, 2011, at 3:18PM Pacific Time, I died of metastatic insulinoma, a common, fatal complication of pancreatic cancer. I am standing here today because of the work of several amazing women and gentlemen whom, from my exact moment of death, recorded every detail of my mind, body, and soul. Every neuron. Every hair follicle. Every muscle, bone, tissue, and cell, down to the subatomic level.

He paused for water and effect before continuing:

Everything comes to an end. But often, that ending is also a new beginning. I am standing here today because I have been remade. Reborn. And I am the exact same person, the same human being, that I was before, free of the disease and constraints that had troubled me with age.

Within the week, Apple will announce a new product. I’ve decided to call it, ‘iBody’. This is, I think, our most personal product ever made, more personal than even my new life and my renewed mission to Apple. We’ve been working on it long before 2011, or even the year 2000. I think you’ll like it.

With that, he turned from the podium and walked towards the locker rooms. The media were unable to question him from the sidelines as he strode past, never once turning to address them.

This is the kernel for a near-future SF novella. I’ve left the iBody specifications ambiguous. What would you want them to be? What would they mean for you? And, would you trust a company like Apple with them?

The State of the Dragon (Game)

Posted on Updated on

Since my very simple proof of concept of King Under the Mountain last weekend, I’ve been continuing to work on the game. I can’t promise a releasable version in the near future because this is still a side project of mine, but I’d like to have a playable alpha as soon as possible, so you can pick it up and give me your thoughts.

I am currently experimenting with Unicode support. I have a build option set up that currently toggles this behavior, and I’ve doubled the X width of each display character to accommodate. Surprisingly, this looks great in both modes! But, there’s a problem.

Certain fullwidth characters, such as Emoji, behave badly with my terminal software. Rendering Apple Color Emoji, for example, has a transparency channel that makes look like Swiss cheese, as each character cuts a transparent region out of the back of the window. I haven’t yet found a good way to reconcile this, though it does look substantially better in other terminal software that doesn’t use Apple’s full color equivalents.

That’s my current quandary. My next steps after this are to rewrite the UI and make characters able to interact with one another.

Are these dev posts interesting to you all? I’d love it if you let me know.