Touch screen demo

We went to Fort Collins to see the Mesa Mundi multitouch system today. (See original post)

The IR sensor was mounted to a 46″ Sony (A Google TV). It is a very thin system, at most 1/2″ thick, and could detect more than 20 fingers at once. They were using it to run the D20pro role playing system (which was pretty cool). That system was not really designed with a large touch screen in mind, and some of the buttons and menus were a bit small to hit accurately. The sensor also had a higher latency than we had hoped. If you moved your finger across the screen, the cursor stayed a few inches behind.

William’s GemHoarder software ran flawlessly on the screen. The screen was sending out TUIO events and the game connected and played just fine. See a video of GemHoarder here.

The demo was enough to convince us that the IR sensor system was the way to go and so we bought the TV that we are going to attach the screen to. The TV was recommended by the helpful owner of Mesa Mundi as being a perfect match for the 46″ screen. It is the Sony Bravia NX720:

There are several features that make it well suited for our setup.

  1. It is very thin which will make mounting it in a table easier and will leave plenty of leg room under the table.
  2. There is no bevel around the edge. We need the screen to be as close as possible to the IR overlay so that there is a minimum of distance between when a touch is detected by the IR sensor and when your finger touches the screen.
  3. The viewing angle is excellent, even from the top and bottom. The top/bottom viewing angle is bad on many monitors because you are rarely looking at a TV from significantly above or below it (as opposed to sitting off to the side). But we plan to have people sitting all around the table.
  4. It was on sale at Best Buy for the super bowl.

It may be the only one of its kind that was sold during that sale that wasn’t used to watch the super bowl.

Multitouch table options

A multitouch table is a computer with a large display that can detect multiple fingers and or objects that are touching the display. Each of these fingers/objects can be tracked by the computer and used to control the software. Think Minority Report.

Imagine being able to play board games without having to waste time setting up and putting away the game, without having to have a ‘banker’, without misinterpreted rules. Or imagine playing computer games where your team or opponents are sitting around the table with you. Currently, the price of these systems put them outside the mainstream, but as the technology improves, I think they will be adopted by more and more people.

William has been in the market for a multitouch table for a long time and has considered several options.

  1. Projector and web-cam with acrylic screen
  2. Microsoft Surface and Surface 2
  3. Multitouch monitor
  4. IR sensor

Each of the options above has some advantages and disadvantages:

The projector/web-cam approach is what he considered first because it allows a large screen while keeping the cost low(ish). The main concern with this option is that there would be a lot of trial and error involved in getting the projector and camera setup in a reliable manor.

The Microsoft surface is a nice, if expensive, system. The original surface was a $7000 30″ unit. It was a little small and the sides of the table came straight down making it inconvenient to sit around. Surface 2.0 just came out. It is $10000, has a 40″ screen and looks like a normal table. It also has a per-pixel camera system so that it can detect objects and read bar codes on the bottoms of objects set on the surface. Another disadvantage is that the computer is built into the surface which would make it difficult to upgrade.

Multitouch monitors are smaller than we are looking for in a gaming table. And the large ones are prohibitively expensive.

The IR sensor system is an overlay that you can place over the top of any monitor that detects objects that break the ring of IR lights. It is a cheaper solution. William recently found a company called Mesa Mundi which sells large multitouch IR sensors. It turns out that an early prototype of their system is being used for a D20 gaming session being held at Gryphon Games in Fort Collins this weekend.

Practice Log – Android version

I have been using the PracticeLog for a little over a year now and have found it to be very useful. However, there are several features that I never use:

  1. The list of pieces that I am practicing. This would be nice to keep up to date, but even with the “Same as Yesterday” button, I just don’t have the motivation to keep entering the data.
  2. The stopwatch and countdown. I haven’t been practicing in the same room as the computer, so it is not handy to have to turn on the computer both before and after practice time. Instead I have been using a stopwatch on my phone, or just my watch to time the practice and then separately enter the time.

I would like to use my Android phone, which I usually have on me, to record the practice time. To do that, I am going to create a web database and php accessors so that I can load and update practice time from the phone or computer. While doing this conversion, I am going to make a few changes:

  1. Remove the list of pieces practiced per day. It would make the database more complex and I never use the feature.
  2. Make the database multi-user. This will allow me to publish the application and Android app. I am not sure if that will ever happen, but the software has been useful for me, so it might be appreciated by others too.

This will be the first time I have made a multi-user web database, so I am debating how to handle security. I want each user to only have access to their own data, but don’t want the overhead of encrypting all the data.

After my experience with the DurationAlarm application, I suspect that the Android app will take most of the time. But all of the GUI elements that I will need are built in.

Bialetti Moka

For Christmas I asked for and received a Bialetti Moka Coffee Pot. Check out the wikipedia page for a complete description.

It is a great little device which makes 3 shots of espresso on the stove top. It takes about three tablespoons of grounds and you fill the base with water. After about 2 minutes on the stove, the water boils and the steam pressure forces the water up through the grounds, up a stem and into the top of the pot. It takes about 20 seconds for all the water to run through the coffee once it boils. Then you just pour out your three shots of espresso.

Duration Alarm

I have had an Android phone for a while now, and one of the reasons that I picked that particular phone was so that I could create my own applications without going through a central marketplace. Until now, I have never actually done it. The Android marketplace has had all the utilities and apps that I have wanted. But I’ve decided that I want to learn how to write software for Android and there is an app that I have always vaguely wanted and haven’t found.

The app is a duration based alarm. This is a common way to set an alarm for a nap, but I would like to use the same system for an over-night alarm. Since I don’t have a day job, I don’t have to get up at any particular time, but I’d like to limit my sleep to the amount of time I need.

The application is simple enough to be a good problem to learn Android development with.

I have had bad experiences with Java and eclipse in the past, so I’ve decided to do all my Android development in a virtual machine. I used Oracle’s Virtual Box and an old copy of windows XP. While the Virtual Box software is nice (especially since it is free), this took a lot longer than I had expected. I had forgotten how old windows XP is and I spent hours installing updates. Installing eclipse and the android SDK went fairly smoothly and once installed, I was able to hook up my phone and run a sample app through the VM.

The Android SDK documentation is good, and the sample apps provide a lot of examples to follow and I was able to make quick progress on my program. The GUI builder is not bad, but I spent half the time editing the XML directly anyway. The hardest part was the lifecycle. It takes a while to get used to the idea that your program can be killed and re-started with very little notification.

The app took about three days of me working on and off. I was impressed by the Intent system which allowed me to easily use the built in alarm software to handle the alarm part while my app just does alarm scheduling. I was least impressed with the resource ID system and java in general. I have always disliked java and this project reminded me of all the ways that java makes my code ugly and my coding sloppy. There may be a better way to do this, but the default mode for the resource ID system makes all the GUI elements into global variables.

I used the local database to save off the user’s last alarm duration. Once I got used to it, that is a very convenient system. Much like what is built into C#.

I have no plans to put the completed app on the Android Market. It works fine, but I have no desire to test it on other phone models.

Price Tracker – Software

I have added a new feature to my personal PriceTracker application. I can now add computer games to the wishlist and get price updates from Steam. Since Steam doesn’t have an API like Amazon, I am simply scraping their web page. This makes the application even less likely to be released, since Steam could change their page layout at any time.