We recently completed the process of spinning off the uWink technology into its own company named Tapcode. It's an exciting time as this separation allows us to focus exclusively on the licensing of our self-service and entertainment product suite to third parties. It turns out a "tap code" is a cipher for communicating, similar to morse code. As a word nerd, I can't help but like the double entendre in the new name! Visit the new Tapcode website here.
technology
Laser Maze /
Tyler, Dan, dad and I exhibited our laser maze (for the first time to the public!) last night at the February Mindshare. The object was to traverse the room without breaking any of the beams, ring a bell, and then navigate back to the start. Attendees pretended to be [take your pick of cinema's security-breaching thieves] employing everything from commando crawls to acrobatics to get across. Thanks to Seth Margolin for an excellent filming and editing job on the video!
Laser Maze at the Firehouse from Brent Bushnell on Vimeo.
[nggallery id=2]
BIL Conference /
Had a great time at BIL in Long Beach this past weekend. The presentations were on a very broad range of topics... open source architecture to cyborgs, politics to consciousness, a girl even presented on blow jobs. A contingent of Mindshare labs (Dougie, Eric and I) setup an installation in the interactive room and gave a talk Saturday afternoon titled "Interactive Spaces". I highly recommend BIL as an alternative to TED (seriously).
Interactive Display Conference /
The Interactive Display Conference in San Jose 4/21-4/23 is coming up fast. It was announced today that Jeff Han will be keynoting! See my slot and the rest of the line up here.
Ergonomics and a chair /
After taking ergonomics at work very seriously, I finally got around to fixing my home office. The last missing piece was a good chair. With my Aeron living at work and nothing solid at Staples, I broke down and got another Herman Miller. I wanted something smaller than the Aeron that would act as more of a lab chair and found the perfect solution with the Caper.[singlepic id=32 h=250 w=250]
80/20 and Touchkit /
Eric and I put together a frame for the TouchKit FTIR multitouch screen last night. We used 80/20 and a few custom cut angle brackets. The favored vision system for use with it so far has been reacTIVision. Note, though, that it assumes the screen fills the whole camera view. [nggallery id=6]
ArtFall /
I had a blast collaborating with Eric Gradman last month on an interactive art installation named ArtFall. There's a complete description here, and a downloadable iPhone encoded video here.Update: Artfall was covered in Makezine, Hackaday, Matt Cutts blog and a French blog. ArtFall from Eric Gradman and Brent Bushnell on Vimeo.
Pygame on OSX /
There are a few options for getting pygame running on OSX, namely, the MacPorts version and the version off of the Pygame site. The MacPort is available here. Note it's named py-game. It has a huge number of dependencies. Install this via the command:
sudo port install py-game
If it fails for you like it did for me, use the following:
Download the source ball from here. Follow their OSX instructions here with these caveats: - The MacPort package names are wrong in the instructions, use the following command instead:
sudo port install libsdl-framework libsdl_ttf-framework libsdl_image-framework libsdl_mixer-framework
- If you're running SVN 1.5, it isn't supported by the standard OSX python install of setuptools, meaning that pygame won't install. Run the following to remedy:
svn co http://svn.python.org/projects/sandbox/branches/setuptools-0.6 setuptools cd setuptools sudo python setup.py install
In theory, you're done! Download a good game to verify you've got everything running here (tgz file)
import this /
I love python for a lot of reasons, not the least of which are easter egg gems like this:
[brent@ronin ~]501$ python Python 2.5.1 (r251:54863, Jan 17 2008, 19:35:17) [GCC 4.0.1 (Apple Inc. build 5465)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import this The Zen of Python, by Tim PetersBeautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't special enough to break the rules. Although practicality beats purity. Errors should never pass silently. Unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one-- and preferably only one --obvious way to do it. Although that way may not be obvious at first unless you're Dutch. Now is better than never. Although never is often better than *right* now. If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea -- let's do more of those! >>>
VIM settings for Python /
Here are a few VIM settings that have been helpful to me for python. This adds improved syntax highlighting: http://www.vim.org/scripts/script.php?script_id=790
Add the following to your .vimrc file. This is usually located in your home directory at ~/.vimrc
autocmd BufRead *.py set smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class autocmd BufRead *.py set tabstop=4 autocmd BufRead *.py set shiftwidth=4 autocmd BufRead *.py set smarttab autocmd BufRead *.py set expandtab autocmd BufRead *.py set softtabstop=4 autocmd BufRead *.py set autoindent
karma /
I'm hanging out with my younger brother Wyatt and show him a GPS/radio unit I'm thinking about buying. His response? Deadpan. "great, now you can chat with the only other geek in the world that has one." Regardless of whether he has a point, the sibling hierarchy might be eroding.
Joomla XSL Mambot /
I recently came across a nice little mambot that allows using XSL to format XML in Joomla. I modified it a bit so that it can pull in remote XML. Usage is easy:
{mosxslt my.xml my.xsl}
OR
{mosxslt http://foo.com/my.xml my.xsl}
You can download it here
cool toys /
The last few weeks I've wanted more and more to have the free time of a teenager. There are lots of toys out there right now:
There's an open hardware/microcontroller platform:http://arduino.cc/
An open programming language with an art bent: http://processing.org/
An open mote platform: http://www.libelium.com/squidbee/
Swarm robots: ($800): http://cs.gmu.edu/~eclab/projects/robots/flockbots/pmwiki.php ($200): http://www-bsac.eecs.berkeley.edu/projects/cotsbots/ http://www.swarmrobot.org/
iRobot opened up their platform: http://www.irobot.com/create/
Open humanoid robot: http://www.symbio.jst.go.jp/PINO/OpenPINO/open_pino.html
An open mobile platform: http://www.openmoko.org/
ASCII Words /
Alternate names for a few of the ASCII characters:
# = the octothorpe
& = the ampersand
` = the grave accent
@ = abbreviation for "at the rate of"
/ = solidus
Running Kcachegrind on Mac OSX 10.4 /
This is a great app for profiling and optimizing your PHP, Perl and Python code. When used in conjunction with the cachegrind files produced by APD or Xdebug one can profile PHP scripts with a high degree of granularity. Getting it running on Mac is not immediate however.
The short recipe to get it setup is:- Make sure you have X11 installed.
- edit /sw/etc/fink.conf, add unstable/main and unstable/crypto to the Trees. (I've not seen the app to be unstable though)
- From the command line: # fink selfupdate; fink index; fink scanpackages
- run the command: # sudo fink install kcachegrind
NOTE: If you've installed Lesstif via some other package (there will be a file here: /usr/X11R6/include/Xm/Xm.h) Then you need to move the Xm directory temporarily somewhere else so Kcachegrind builds.
My php.ini settings look like this: ;;;;;;;;;;;;;;;;;;;;;;; ; Xdebug stuff zend_extension="/usr/local/php5/lib/php/extensions/no-debug-non-zts-20050922/xdebug.so" xdebug.default_enable = 1 ;increases memory usage xdebug.extended_info = 0 xdebug.auto_trace = 0 xdebug.trace_output_dir = "/var/log/php/xdebug" xdebug.collect_includes = 1 xdebug.show_mem_delta = 1 xdebug.remote_enable = 0 xdebug.auto_trace = 0 ; Careful... these 2 produce a lot of output xdebug.collect_params = 1 xdebug.collect_return = 1 xdebug.profiler_enable = 1 xdebug.profiler_output_dir = "/var/log/php/xdebug-profile" ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
With that you should be good!
Quick list of tools for web development /
There are a number of tools that we like to use at Izolo.
A number of them help a great deal with understanding what is really going on with web services. Some speed development and others provide the necessary error correction to produce great, international sites.
For validating XHTML:validator.w3.org
For validating CSS: jigsaw.w3.org/css-validator
For checking file sizes and transfer optimality: www.websiteoptimization.com
For international speed testing: www.alertsite.com
Some excellent Firefox extensions:
A window into AJAX requests: Firebug
For filling a page with words before the real content is ready: Lorem Ipsum Generator
A fantastic talk on UI Design from Oscon '06.
Hopefully these help you understand and develop web sites.