Tuesday, December 16, 2014

FLONG goes long

and catches a touchdown!  FLONG has won the first FLIR One Hackathon!  Judges seemed to appreciate it as the first use of the FLIR One as a HID (human interface device) and a sign of great things to come!  See below for the pitch and presentation.  Thanks to all my friends who helped me, including Eugene, Sophi, Bartek, Simon, Jason and John Bessire.  See below for the presentation and award ceremony (thanks John Sokol for the links).

Andrew Felch presents FLONG at FLIR One Hackathon

Andrew Felch wins grand prize at the first FLIR One Hackathon!

Sunday, December 14, 2014

FLONG, the FLIR One pong game.

We just submitted FLONG for the FLIR One Hackathon.  See below for summary and pictures!  I will post an update when the winners are announced!  Fingers crossed that we get in the Top 5 and win a FLIR One.

I'm a huge fan of video games I can play with my 8 eight-year-old son David.  That's why I wanted to use the FLIR One to let me play games with my kids and friends wherever I spend time with them.  Studies have shown that playing games together can help us build bonds that last a lifetime.  And besides that, they're fun!  Cell phone games have always felt very single-player and although they are social in the virtual sense they've never helped much for in-person socializing.

FLONG is the world's first simultaneous multiplayer cell phone game.  In other words, FLIR Pong turns the FLIR One into a party machine for kids and a conversation starter for adults.  Tests show screaming kids love it and when their little brains engage they often get quieter.  It was simple enough to make in a weekend but hints at good things to come for this platform.  Although the controls are smooth and easy to learn the game is difficult to master.  It is enhanced with a reflective stand that allows users to play with their hands above the phone instead of behind it, which is way more fun.  Such a stand could be integrated into the FLIR One packaging quite easily, allowing for users to play games right out of the box.

Prototype 1.0:

Prototype 2.0:

Saturday, March 15, 2014

Slashdot comment of the day

I have said this same thing in different words many times this week.  In the post "Why San Francisco is the New Renaissance Florence", hessian writes:

"Sorry, finding new ways to rent out your car through an iPhone app is not any kind of Renaissance.  If anything, it's the decline of computer science from world-changing to trivial amusements for trivial, pointless people."

Wednesday, August 14, 2013

"I want to play baseball as soon as possible"

That's what my 7-year-old son David said to me just before bed time last night.  I said, "What do you mean?" and the conversation went along like this:

David reiterates "I want to play baseball as soon as possible"
I reiterate "What do you mean?"
David reiterates "I want to play baseball as soon as possible"
I reiterate "What do you mean?"
David reiterates "I want to play baseball as soon as possible"
I reiterate "What do you mean?"
David reiterates "I want to play baseball as soon as possible"

Now David has a _very_ slight speech delay so he was completely patient with me, and I with him, because we are used to misunderstandings.  What I thought David meant was that he wanted to play baseball next season instead of t-ball.  My wife Nancy has forced the vocabulary on us that t-ball is not  baseball.  David had finished watching a Dodger game earlier that evening and I had even suggested we go outside and play baseball during the game (though we ended up playing video games instead).  I don't want to suggest to David that he play baseball instead of t-ball next season because he is bound for success at t-ball but while he would probably be fine at baseball he is likely to be harder on himself than if he is playing t-ball (and he is quite hard on himself unfortunately).  So instead of saying "do you mean you want to play baseball instead of t-ball next season?" I just said "what do you mean" so that in case I was wrong I would not put the idea into his head :-)

Finally, I realized what the other option was, which was that he really just wanted to play baseball with me at the next possible chance, and that right now was not a good idea so instead of setting himself up for a "not right now" he replaced "I want to play baseball now" with "I want to play baseball as soon as possible".  Thus, "as soon as possible" did not mean "next season" but, "right now or as soon as possible".

Once I realized what the two options were I said "Do you mean you want to play baseball instead of t-ball next season, or do you mean you want to go outside and play baseball with me tomorrow?"  He said, "I want to play baseball with you tomorrow, which is as soon as possible."

The subtext in such a simple communication is sort of ridiculous.  Perhaps we humans make this all way too complicated because, when we first learned to communicate as monkeys, we did it to gossip about or endear ourselves to other monkeys.  Thus all communication had a purpose of instilling a point-of-view into another monkey.

I wonder if computers will need to understand language at this level in order to be useful, or if it will be easier for them to learn language and understand "I want to play baseball as soon as possible."  I suspect understanding motivations will be key to understanding communication, but perhaps many communications are simpler and do not require it, and thus computers will be useful users of language without being fully competent.  I suppose it depends on the task and whether there is much drawback to the computer making a mistake or admitting that it does not understand.  Siri makes a decent case that for some tasks, like finding restaurants, those two failure modes are OK.  But once you've found the restaurant, Siri is not much use, and the cell phone goes back to being useful mostly for connecting to humans or human-generated content like websites.


Wednesday, July 31, 2013

CAP theorem for dummies

For some reason, I am a geek and yet it still takes me a while to understand things that are written formally.  In general it feels like I understand something intuitively, or not at all.  Perhaps it is analogous to one of Richard Feynman's great quotes "What I cannot create, I do not understand", with the additional condition that I cannot build what I do not understand intuitively.  If my brain contains an accurate model of a system then it will certainly be easier to build in any case.

The point is that I have at various times come across Brewer's CAP theorem, which states that a system that desires to be "Consistent, Available, and Partition Tolerant" can only have two of these features and not all three.  Consistent means that changes to the system are transactional and no transactions that are partially complete are visible to the user.  Available means that the user will get a good response time to a query.  Partition Tolerant means that the system is resilient to the failure of component systems.  Even with these explanations it can still be quite unclear as to what this theorem really means, or why it is true and important.

The theorem would be better-phrased in three parts and with three example systems being described.

1) If a system is Consistent and Available then it will not be Partition-Tolerant:
A system that performs transactions atomically and is very responsive to queries is not robust to failures. Such a system takes on the form of a single computer holding a database in memory, which performs transactions in a serial order.  The system will be very responsive and transactions will be respected utterly, but if that one computer crashes then the whole system goes down because the system is not redundant ("Unpartitioned").

2) If a system is Consistent and Partition-Tolerant then it will not be Available:
A system made of multiple computers that each store a copy of essential data will be robust to failures.  This system can accept transactions but in order to provide a Consistent view of the data to the user, each replica must execute the transaction and verify when it completes before proceeding.  Because subsequent queries must wait for the previous transaction to finish on all replicas the performance will be bad, and hence said to be "Unavailable".

3) If a system is Available and Partition-Tolerant then it will not be Consistent.
A system made of multiple computers that each store a copy of essential data will be robust to failures.  Such a system will be very responsive to user queries if, when the queries arrive at the computers, they are handled right away and do not wait for previous transactions to complete.  Unfortunately, the state of the data will be inconsistent while old transactions are still running, so the view of the data is said to be "Inconsistent".

If I have simplified something in the above text that must not be, then by all means leave a comment and I will attempt to correct the error.  In the interim it shall be entered into dailycircuitry canon.

Wednesday, February 13, 2013

Slashdot Comment of the Day #5

Today's comment of the day comes from epine regarding new developments in asteroid mining.  The cherry on top is the zinger at the end:

"The real reason a supermodel isn't going to sleep with you is not because you're boring and ugly and proud of your Costco luxury goods—it's because you're living the wrong life, with the wrong crowd, on the wrong spiral arm of the social graph.

It's there, you're here, and never the twain shall meet."

Burn!  lololol


If you've never heard Rilo Kiley I must highly recommend them as they are one of my favorite bands.  My brother-in-law Daniel introduced me to their music as we traveled across the country during my move to Palo Alto from Hanover NH (which I told him at the time was a once-in-a-lifetime adventure, to which he responded that it was a 50-hour drive that could be done whenever.  I responded, "yeah, but it will never be the first time again".  The epic-ness of that adventure has only increased in my mind over time... I love it when I'm right :-P  ).

My favorite song of their's is "Close Call".

I get tingles down my spine when I think about foreseeing that something is going to be chancy, and if it succeeds it will be by the skin of teeth, and doing it anyway with teeth and fists clenched.  It is the feeling of being consumed by hope and fear at the same time.  To me that is what defines courage.