Handwriting Recognition with CellWriter on the N900

2 Comments Written by Etienne Laurin on 2010/04/18 in Code, Software.

For the adventurous, the source and package are available on the project page


Record or Stream Live Gameplay at Full Quality with No Lag

No Comments Written by Etienne Laurin on 2010/03/02 in Software.

Yukon, a tiny but amazing command-line software, allows you to capture a video of an OpenGL screen or window. Share it later or stream it live.


Loopy

No Comments Written by Etienne Laurin on 2010/01/31 in Games, Software.

Also called Slither Link or Loop The Loop, Loopy is one of the many types of puzzles that came out of Japan. It is part of Simon Tatham’s Puzzle Collection, and can be played online on his site, at Nikoli and on puzzle-loop.com.

Rules

The goal of the game is to draw a single loop that never crosses itself. The restriction is that squares containing a number must have exactly that many sides that are part of the loop.

Simple Properties

Some simple properties can be easily derived from the rules:

  1. Every dot touches exactly zero or two segments of the loop.
  2. Any line or squiggle that crosses the board will intersect the loop an even amount of times.

Patterns

Tatham’s downloadable version of the game is the best version I could find, but it does not include a timer nor does it keep score like minesweeper does on windows. Speed runs are still possible, but intimate knowledge of many types of patterns is required.

Corner Patterns

Corner patterns usually appear in the corners, but some of them also apply when the numbered square has a corner in common with a 0. The patterns for a 1 and a 3 are easy, but it is a little less obvious for 2.
In Tatham’s version and in other versions with a unique solution, when a 2 is completely alone in a corner, 6 segments can be filled in.

Side Pattern

When a 3 and a 1 are together on the side, another simple deduction can be made.

Patterns with 3

The 3 square is very special because all but one of its sides are in the loop. It is often easy to predict two of it’s sides.

A dot with two diagonal 1s and a 3 will always be part of the loop. The 1s always shoot inward.

When 3s touch diagonally, they shoot at each other and fly away from each other.

When they share a side, they make a parrallel formation. The two segments that continue the middle segment are never part of the loop.

A little vocabulary

I invented my own vocabulary to make discussing loopy easier.

  • Shooting happens when two adjacent sides of a square contain one and exactly one segment of the loop.
  • Flying happens when two adjacent sides of a square are both part of the loop. The shape looks like an arrow, a plane or a bird.
  • A turret is a 2 with a side that is known not to be part of the loop.

This vocabulary allows me to say that 2s shoot sideways when they fly and that 3s fly away when they are shot.

Patterns with 2

The interesting thing with 2s is that shooting and flying propagates along diagonal 2s.

For example, two 3s connected by 2s can still shoot at each other and fly away.

A 2 in a corner or diagonally across from a 0 is a flying 2. It flies towards the corner or away from it, and it shoots sideways.

It is impossible to fly into a 3, so flying 2s always fly away from 3s that are directly in their path.

Flying 2s shoot sideways at 3s that are on the side.

A 3 that has a side in common with a flying 2 will fly away, at a 90 degree angle with the flight path.

Turrets

It is common to have a 2 with a side that is not part of the loop. I call them turrets. Turrets behave like 3s because all but one of their unknown sides are part of the loop.

  • Like 3s, turrets love to shoot at each other and at 3s.
  • Unlike 3s, turrets cannot fly away. When they shoot on one side they get a leg on the other side.

Turrets automatically appear when a 2 shares a side with a 0. In this example, a turrent and a 3 are shooting at each other.

A 3 on top of a turret (that is, on the opposite side of the turret’s empty side) always has a segment of the loop on the side opposite of the turret.

Combining Patterns

A parrallel formation of 3s next to a few well placed 2s often creates a nice avalanche of turrets.

Other inferred rules

There are a lot of other patterns that I won’t mention. They can all be discovered by simply applying the rules or by using brute force.

Don’t forget that

  • Shooting a wall turns the wall into a segment of the loop.
  • Flying into a wall or away from a wall removes the side on the wall from the loop.
  • Shooting a 1 removes it’s opposite sides from the loop.
  • Flying into a 1 or away from a 1 makes it shoot away from you.
  • When a segment is in line to shoot a turrent or a 3, it always does. The other side is not part of the loop.
  • When a segment is in line with a flying 2, it flies towards the 2 and the 2 flies away.

Have fun!


Boxee Beta

No Comments Written by Etienne Laurin on 2010/01/14 in Software.

Installing on Debian Sid

Boxee is now publically available. Boxee is more than just a media player. Although it works very well on a computer screen, it was designed for high definition TVs. It also allows users to stream music and video from the web.

Official builds of the Beta version of Boxee are available for OS X, Ubuntu and Windows. The 64bit Ubuntu package only required one package that I did not have: the libcdio7 package from Lenny. As is usual for Debian unstable, YMMV.

$ sudo dpkg -i libcdio7_0.78.2+dfsg1-3_amd64.deb
$ sudo dpkg -i boxee-0.9.20.10261.x86_64.deb
$ /opt/boxee/Boxee

What You Can Do With Boxee

Before starting to use Boxee, you need to create a free account by registering on the boxee website.

Boxee first starts showing off it’s sleek interface with the login screen.

There are many ways to control the Boxee interface, the built-in guide explains how to use a mouse and keyboard or a remote control. Other methods are also available such as an iPhone app or a local web server.

The home screen is populated, by default, with featured content from various online sources like youtube. If you don’t like the default feed, you can connect with your friends through Boxee or other social networks and add RSS feeds to your account.

You can view photos as a slideshow or a list.

You can  sort through your music collection and listen to your favorite songs.

You can watch movies you own or stream movies and trailers from the web. Boxee automatically sorts and identifies your local files.

It also sorts and identifies TV shows and helps you find the right episode.

There are also many other sources of content provided by apps.

These apps are actually python scripts that extend what you can view with Boxee.

Why Is Boxee In Beta?

A few features only have the most basic functionality implemented. For example, apart from the main queue, it is impossible to create playlists.

The video player, on my linux computer, has trouble playing some videos and even crashed once.

Luckily, Boxee is being actively developed and the developers are open to feedback and ideas.

Even though it’s not perfect, Boxee is now my favorite way to browse online videos. There is a bookmarklet for adding video on a webpage to your Boxee queue. There is also a lot of documentation for writing python apps and plugins.

Other links: