Slideshow + Faaland Clock

I wanted to more often see all of the photos that my wife and I take, so I set both of our phones to automatically upload to the same OneDrive.  I bought a computer on a stick and attached it to a TV in our family room.  On the computer I wrote a slideshow app that would pull down photos from the cloud and display them.

A challenge is that I hate fan noise, and this was going to be running all the time.  The computer I bought was a Compute Stick from Intel, and I thought I was buying one with passive cooling, but when I plugged it in to my horror it had a small fan!  I could return it.  But instead I mounted it inside the wall, and set about writing a 4K 60fps dynamic slideshow that used so little CPU/GPU that the fan hardly ever kicks on.  I am kinda proud of that.

I also got to add fun features, like showing album art for whatever was playing on Spotify, but the best one is the Faaland (Weasley) clock.


On every family member's phone I set up IFTTT with location tracking.  When they enter or leave areas (eg home, school, work) it sends a message to a web service.  The slideshow then monitors that service, and updates the hands of a clock with our faces on the hands.  If someone has changed location, it chimes.  The inspiration was that everyone could know when I left work (and so when to expect me home), but it's one of the family's favorite things I've done and (to my slight surprise) all of them wanted their location tracked on it.

Fun facts:  the battle at the end of the Harry Potter series occurred in May 1998 -- shortly before the release of Windows 98 and the founding of Google -- and I am one year younger than Fred and George.

Silly Games

A few times I've gotten a notion to do simulations of simple board games.  I was inspired by playing Chutes and Ladders with my son.  I realized that I would much rather write a computer program to play this game for me, so I did.  It could play 2.8 million games per second, and I collected some data:
  • Average game is 18.7 rounds, with 73.4 spins.
  • Shortest observed game was 7 rounds, longest 145. 
  • The ladders help more than the chutes hurt.
  • Players going first have an advantage.
  • Most of the game is spent on the bottom half of the board.
Heat map of most common player positions
// 100 entries, containing the space number you should move to.
// If a ladder, contains a number higher than the index it's at
// If a slide, contains a smaller number than the index it's at
// If neither, contains its own index.
int[] spaces;
// current space each player is on, size == 4
int[] players;
while (true) // keep playing 'til someone wins
{  
  for (int i = 0; i < playerCount; i++)
  {    
    int p = players[i] + Spin(); // add between 1 and 6
    if ((players[i] = spaces[p]) == lastSpace) 
      return i; // return the player number of the victor
  }
}

I did similar projects for Bingo and Tic Tac Toe, and I dunno probably others that I don't remember.

Relatedly, check out http://xkcd.com/903/.  On the mouseover text, it reads:

"Wikipedia trivia: if you take any article, click on the first link in the article text not in parentheses or italics, and then repeat, you will eventually end up at 'Philosophy'"

So I wrote a bot to check.  As of June 2, 2015, out of 259,184 articles found and "resolved", which means to trace back until I find where they lead, 93% lead to Philosophy, 6% to other loops, and 1% to dead ends.  Average distance from an article to Philosophy was 19.95 links.  The longest chain found was 313.  An interesting challenge was that as I was trying to collect statistics, there were active edit wars on key articles intended specifically to either break or fix this game!

Eyeball

When the Kinect for Windows came out I had an idea for Halloween, and so I used a Kinect plus the SDK version of Virtual Earth 3D to make an eyeball that would follow your movements and make scary sounds if you got close.


This first version was on a computer monitor that I put in a window next to the front door.  Over the years I switched to Unity and added a bunch of different texture variants, 3D models, particle effects and the like.  The current version is projected on a sheet covering my garage.  Kids really seem to like the jump scares.


The delay in the jump scare scream is because of a setting I was using for a bluetooth speaker.  It seems every year there's some sort of little hurdle.  I fixed it in time for the kids to see it though!

Draw Free!


My most successful side project happened when Windows Phone 7 came out.  WP7 was actually pretty good, and I wanted to get in on the ground floor of its app market.  So I did, with an evolution of the drawing apps that I'd done for the Zune HD.


I called it Draw Free! (well, the first version was called Draw! but that was back when I had an illusion that people might want to pay for it), and it had a pretty sweet interface that could adapt to different ages of user.  It was all written in Silverlight with all drawing (stamping, alpha blending, image processing) done on the CPU in C#.

With Windows 8 I rewrote it in XAML and using SharpDX, which allowed me to use shaders (!!!).  This version was eventually ported back to Windows Phone, and is in fact still available.  On Windows 10, search in the Store for "draw free".

You like how I kept the rainbow house theme across every version I made?
Honestly it's a good app, and over the years has just above 2 million downloads.  I got messages from kids all around the world, and people sent me some amazing stuff they did with it.

I also made an app called Face Warp that did live video manipulation to make silly faces and stuff.  It was done almost entirely using LUTs (on CPU, in C# in Silverlight!).  My favorite was a Geordi La Forge mode that also unlocked an easter egg in the settings menu:


Zune HD Apps

When I got a Zune HD, I noticed that all the other parents could distract their kids with apps on their iPhones.  No in a fit of pique, I wrote several apps for the Zune HD.  They got picked up by an enthusiast site and as I recall it got several thousand downloads.  So, like, 10% of Zune users?  Har, har, har...  Yes the comedy was all gold back then.

Ultima 7 Maps

Back in 2007 or so I was working at Microsoft on Bing Maps, and I decided to make an ajax map of Ultima 7 The Black Gate, and Serpent Isle.  I used Exult to output the game's raw map imagery, chopped it into tiles, loaded them onto AWS, and made a website.  It got noticed by a few enthusiast and even mapping sites, but after some hosting hiccups I took it down (and some people even noticed that).

All that's left online is a couple low-res images in a post about it.



At that time, Bing Maps had a 3D control (that I also wrote a lot of) called Virtual Earth 3D, so you could sort of fly around Britannia on a globe.

Welcome

My name is Nikolai.  I've worked for Microsoft and Google and that was super interesting and all, but this is a website I will use to talk about silly projects.