Current projects

2006-09-24

After some much needed rest and catching up on schoolwork, I'm back to working on some of my own projects this weekend. At the advice of Potter, a CSH alumni, I went to Wal-Mart, bought a $10 UHF antenna and connected it to my MythTV box. So far, the results have been great! A quick channel scan was all I needed to get ten channels, double the number of channels I was getting with QAM256 over Time Warner Cable.

I've finished adding NNTP support to pynewspaper and am using it on a daily basis. The new version of the code is available from the repository. My list of features I gave in my Sept. 6th post are still in the works. Earlier today I started playing with Kismet and it's drone functionality on a WRT54GL for the purpose of sniffing out rogue access points. This is not an extremely useful feature in a dorm environment where the 2.4 GHz spectrum has more noise than the city zoo in the middle of an earthquake, but the ability to passively seek out malicious users will be a very effective skill in a corporate environment.

Most recently, I've been tweaking this blog's layout and updating a few things. I'll post again if anything significant is added.

pynewspaper updates

2006-09-06

I've updated pynewspaper with some new code to eliminate the need for the buildpaper.sh script. I didn't like the dependence on an external script to begin with and felt that the program could benefit from the advantages of threading on a per-page basis as well as per-feed. Simply untar the source and run "python newspaper.py feeds/" from within the source directory. All of the default feed pages in the feeds/ directory will be built. If you want to customize your feeds, create a new directory and place a text file with a list of URLs in it for each page you want to create. You will need to manually update header.res if you want the correct links to be reflected on the resultant pages. I'm not considering this a final release, but I feel that I'm getting pretty close to a 1.0 status application. I still need to solve some problems with columns disappearing and make configuration of the page header links automatic. Once these remaining bugs are worked out, 1.0 will exist. Features slated for 2.0:

  • Proper length columns
  • Web based configuration of feeds
  • Packaging goodness
  • Some cool feature using AJAX? Search?
Additional feature requests should be submitted to synack >at< csh.rit.edu

It's a longshot...

2006-08-26

While I wait for GTK to compile, I've been reading about Project Longshot, a mission developed in the late '80s to send a manned craft to Beta Centauri. It reads just like something out of science fiction: a nuclear ship setting off on a century long voyage for a group of planets that may or may not be habitable. The most interesting part of this report is the fact that they engineered solutions for every problem using existing technology in 1986. While some of the systems would need to be further developed and tested (eg. propulsion) the numbers do add up. This mission still isn't feasible yet. We need a large, manned space station or base in a low gravity environment to assemble the various pieces of the craft. If you've got some time to kill, this paper is worth a read for nothing more than a laugh at the expectations of future technology (artificial intelligence is still a few decades off).

Summer of Code 2006 - Final Report

2006-08-21

Project Title

IETF Event Notification Service

Synopsis

The IETF's working groups are constantly changing and evolving with new documents and ideas. Currently, users must visit the website and browse through overview pages to find new updates to drafts, last call announcements, published RFCs, and new working groups. There is an apparent need for an event system that can notify users of updates of interest in a timely manner.

About this document

This document serves as a summary of the progress made on the ietfnotify project throughout the duration of the Summer of Code 2006 program. The following is a direct comparison between the final project state and the goals set in the project proposal. The open source repository of code for the ietfnotify project may be accessed through the SourceForge.net project page

Deliverables

  1. Event format - A format for delivering new events to the ietfnotify has been decided upon and is documented within the doc/ directory of the program's source code. Within the first few days of the Summer of Code, it was decided that a format similar to email headers would be preferable to an XML based format because of simplicity and it's ability to be human readable with little to no documentation.
  2. Storage system - The ietfnotify daemon has methods to store and retrieve events from a filesystem based structure using a unique UUID as a search key. This type of storage makes sense in comparison to a database because it is less volatile, requires minimal additional resources beyond the operating system's builtin functionality, and performs reasonably considering current and future usage patterns.
  3. Web interface - The web interface portion of the project allows users to manage their subscriptions and view archives. The subscription management functionality is working as expected though the archive viewing capabilities are limited to a fairly basic set of features as this was not seen as a primary goal of the project and took a lower priority than more critical portions of the application.
  4. Notifier - A flexible daemon has been implemented that listens to a socket for events then parses, archives, and sends notifications out based upon users' subscription settings. An extendable interface has been defined to allow developers to add additional notification types in the future by simply writing a new method and adding a reference to a list. Currently, the following notification types exist: RSS, Atom, Jabber, HTML Email, and Plaintext Email.

Project Details

  1. The implementation language is Python using MySQL statements for managing subscriptions, the Django templates for styling notifications, and HTML for the web interface. Django was chosen for templating to make it easier for administrators to customize the notification format to their liking without needing to know the Python language.
  2. Apache, Python, and MySQL are used for the web interface, daemon, and subscription storage respectively. The web interface also works under the lighttpd web server. Python 2.3 and 2.4 have been tested though other versions may be capable of running ietfnotify with little or no modification. MySQL 4.x and 5.x have been tested.

Project Schedule

  1. Planning: This stage was completed on May 27
  2. Format definition: This stage was completed on May 27. Additional changes to the fields that the daemon must accept are ongoing. The daemon has been written such that changes to the field naming are trivial to accomodate.
  3. Storage design: This stage was completed on June 2 (Revision 12). The storage of subscription data was moved from CSV to MySQL on June 9 (Revision 57)
  4. Web interface: This stage is in progress. The web interface is working and satisfies the basic functional requirements but it still needs more work to complete the implementation of templating and archive viewing.
  5. Notifier: This stage is in progress. The notifier meets the functional requirements set in the planning stage, but is in need of heavy testing and code refactoring in some places. However, I still consider the notifier to be of the quality expected from version 1.0
  6. Testing and debugging: This stage is in progress. Testing and debugging of an open source project is an ongoing process and will continue throughout the life of the project. A public 'beta' release of the service to end users will begin on or before September 2. I will continue to handle bug reports and feature requests as time permits.
  7. Enhancements: Of the enhancements listed in the proposal, two of which have been integrated into the project. Jabber notifications are available and the web interface fits my definition of 'pretty images' by supporting external templates.

Project Overview

I feel that in the timeframe of the Summer of Code, I have made significant progress bringing the ietfnotify project from the planning stage through the first beta release. Throughout the duration of this project I have learned how to work in an open source development environment and have gained a more detailed understanding of software development in general. I will continue to remain active in the development of the ietfnotify and the open source

MIA

2006-07-26

If you're one of the many people that have been trying to contact me for the last couple of days, I appear to have fallen off the surface of the planet. I feel that I should probably explain why I've gone out of contact. On Saturday night I got on a red-eye flight from Phoenix to Atlanta and then on to Rochester after a three hour layover. After landing and complaining about my lost luggage, I sat in the car for two hours on the ride back to Corning. Needless to say, when I got home I was exhausted.

On Monday I started on the complicated and time consuming task of rebuilding every computer on my network here. In the process of rebuilding things, I took yt.neohippie.net offline. yt was hosting my website, asterisk, and jabber which explains why I wasn't online. I spent the better part of the day attempting to get NetBSD to run as a Xen 3.0 domain 0 host. By the end of the day, I had a NetBSD box that would crash upon startup. Not very usable.

Tuesday morning, I decided to scrap NetBSD for the time being and built a Gentoo box with Xen. The install went relatively smoothly as I combined the Gentoo Handbook and a Howto on installing Xen into a set of instructions in my mind that worked very well. I'll probably document this process a bit better when I have some free time. By lunchtime on Tuesday, I had a working Gentoo domain 0 and was about halfway through building the domain U image. By the end of the day, I had running virtual machines with automounted home directories, internal DNS, and a second domain 0 box with working live migrations between the two.

When I woke up this morning, I started hacking away at getting MythTV running inside a domU machine. Building and installing MythTV went fairly well. I had to recompile the domU kernel a couple of times to get the ivtv modules to build. I am now stuck on loading the ivtv drivers. The module appears to load into the kernel, enumerates the hardware, and attempts to create a DMA buffer to the card. For some reason, modprobe segfaults here. I found some mailing list messages that describe a similar problem with Xen 2.0 and a working patch. I would expect that the patch has been merged into Xen 3.0 by now but it still doesn't work.

I took a look at the Xen PCI DMA kernel code and I think I've found the method that is causing the problem (dma_map_single()) and have done a quick and dirty hack that I hope will fix the problem and am waiting for the kernel to finish compiling now.

The goal of all this hackery is to get all of my servers condensed into two boxes so that when I move back into the dorms in a month, I won't have piles of computers all over the place. Once I've got my servers setup and squared away, I've got a sonar sensor that I'm going to mount on my RC car for data collection. Hopefully I'll get something usable out of this and will be able to start writing some AI and mapping algorithms to run on the car to make it autonomous.

Finally, the Summer of Code is coming to an end and I've only got a few small tasks to finish up. The web templating needs to be finished in forms.py, Atom and RSS feeds need to be checked for validity and tweaked if necessary, a quick and dirty archive summary needs to be written, and syslog messages need to be fully implemented. None of these are large tasks, I just need to sit down and knock them out. I should have time for this sometime next week.

Summer of Code - Days 32 - 48

2006-07-13

Starting off from where my last SoC post ended, I've finished implementing Django templating for event output and am nearly done converting the web interface to a python dict based formatting. Logging to a file is now supported and syslog isn't too far behind. All configuration options have been moved into the config file, the exception being the location of the config file itself which must be set in notify/config.py.

A little more than five weeks to go, my remaining goals for this project are to finish the web templating, make sure RSS/Atom feeds validate, build a simple archive viewing interface, and get syslog working. Extra features that might be nice are web page polling and a full-fledged search mechanism for the archives.

Google keynote from CES 2006

2006-06-30

I finally came across a mostly uncut video of Larry Page's keynote from CES 2006. Make sure to watch both of the parts with Robin Willams for maximum effect.

Other projects

2006-06-26

I've found that the most difficult part of the Summer of Code has been refraining from working on too many other projects at the same time in order to keep focused. However, I have a few projects in mind that I am planning to put some time into when I get back to RIT. My class schedule for the Fall has no classes on Friday so I figure that will be my project day.

I spent a good part of the weekend catching up on Hak.5 and am really pleased with the progress they've made since the first episode. It has also gotten me thinking about a vidcast that I would like to produce. They spend a lot of time on Hak.5 showing software and projects that you really need a solid home server/network setup to get anywhere. It has come to my attention that the knowledge of how to get a geek network running is not widespread. Following that thread, I want to produce a vidcast that shows how to setup and maintain your own network for geek related activities.

I envision the first few episodes being about selecting network equipment and running cables in order to get the infrastructure up and running. Following that, I'd start with good network security on the cheap (read: OpenBSD) and a few cool tricks like VPNs and possibly an IPv6 tunnel. Next, I'd start building servers... One Linux box, one Windows (or a virtual server setup). The Linux box would run a basic LAMP setup (done right) and the Windows server could run game servers and possibly SharePoint.

That would complete "Season One" Season Two would build upon those basic components to do increasingly cool things such as a MythTV box, a Jabber server, rolling your own web environment for the cost of an internet connection. Hosting a blog, building a community (using something like Drupal or a Wiki), setting up an authentication server, etc. A show like this could probably go on indefinitely.

If somebody reads this and thinks it's a good idea, drop me a line and we might be able to get something going. I could probably get started on my own but I just don't have the time/skills/resources to do that sort of production in a reasonable amount of time. Not to mention that this sort of thing is always more fun if you've got friends involved. Perhaps some other CSHers would be interested in helping out?

Switching to another train of thought, I've ordered parts to build a CMoy pocket amp in preparation for getting a decent set of headphones (Something in the range of Sennheiser 555 or 595 if I can afford it). The CMoy design is simple and shouldn't be too difficult to get working. Just in case, I ordered enough parts to build at least two of them. I'd like to build one of the more complicated amps at some point, but we'll see how I do with the CMoy design first.

Yet another project I've started is a Hipster PDA for the purpose of collecting all of these random thoughts and other scraps of information that have become important. I used the "Classic" size (half a letter sheet) because my handwriting tends to be sloppy and I like to have lots of space to work. My primary motivation for doing making a Hipster PDA was because the Stickies app that comes with OSX was really starting to clutter up my desktop and most of the information is only useful when I'm away from the computer.

Moving along to the next idea, I saw the FTIR Touch Sensing display and was inspired by the simplicity of the design. I'm planning to build something along those lines eventually...

I'm also trying to come up with a good way of building a portable server/network setup. I ran into some pictures of an audio rackmount case filled with some 1U servers at HOPE and thought it was a pretty good idea. The problem is that most of my boxes could not be transplanted into anything smaller than 2U so I'd probably have to buy new hardware. Unfortunately, new hardware tends to get expensive fast. Still trying to come up with better ideas here. Perhaps I could machine some custom cases...

Other projects I've had on my mind: A hex editor for EEPROMs built out of bunch of seven-segment displays, fix the formatting of &thinsmp; in the Gecko engine, an open source implementation of the Atom/XMPP stuff coming out of the atompub working group, a magstripe reader built out of a cassette tape head, and a RJ45 jack that lights up the connector with an LED when certain conditions are met (DHCP acquired, HTTP request received, etc) instead of just putting the LED next to the connector.

I hope you enjoyed this core dump of ideas... Perhaps you might be inclined to take the initiative and do one of them?

Summer of Code - Days 20 - 31

2006-06-26

I realize that I haven't posted an update on ietfnotify in a while but I felt that it was more important to spend more time focusing on the code than writing about focusing on the code. I've made quite a bit of progress toward adding a bit of polish to the daemon and web interface and am getting ready to start implementing a templating system for notifications.

I have moved almost every aspect of the notification data into the database to aid in more automated operation. New fields will now be detected automatically and added to the database where they can be marked as hidden or visible to users of the web interface for setting up filters. This allows us to add new fields to the notification format at any time without any maintenance to the notifier application.

Debugging is now much easier with a log module. I will later implement syslog through Python's builtin logging module for general operation. I moved some of the formatting code for various notification types into a new message module that will later be replaced with the templating system.

After evaluating a few possible options for templating, I have narrowed it down to Django's template system. It seems to be the easiest to work with under the circumstances. I attempted to implement a Python dict formatting based approach but it just isn't flexible enough for some of the things we need to do. Not until Python 3000.

I am no longer committing new code to my local repository but am instead committing directly to the subversion repository on the SourceForge servers. Henrik and I have come up with a rough schedule for the remaining eight weeks of the Summer of Code and I am confident that I can complete the project in that timeframe.

Summer of Code - Days 16 - 19

2006-06-13

The notifier is now available as an open alpha release. You will need to have an account on the IETF Tools site. You can register here. Once you've registered and verified your email address, you can login to the notifier web interface and set up your notifications. Please do not rely on the notifier at the moment. This is an alpha quality program, take it for what it's worth.

SourceForge has approved the ietfnotify project and I've moved my development infrastructure to the SourceForge servers. The subversion repository is available through SourceForge now and I will continue doing all development in that repository. My repository here on CSH will remain for a while but I will no longer continue active development on it.

In terms of development efforts, I spent a bit of time last night tightening up the security of the web app, eliminating a few SQL injection holes and a few other possible problems.

Summer of Code - Day 15

2006-06-09

Good news! The web interface is done, subscriptions have been moved into a database, and the notification daemon is now completely modular. I didn't sleep much last night and got quite a bit of good code out of it.

I'm planning to open up the web interface for some beta testing sometime next week so you can look forward to that. Still waiting for SourceForge to approve the project... Their site shows that it's been in the queue for six business days, double the estimate of three days given on the submission page.

I decided to make the notification daemon a bit more modular after my experiences with building the web interface. I find that it's easier to maintain, debug, and add to existing code when it's split into smaller pieces. I built the various components of the daemon into a Python package called "notify". I'm trying to keep in mind that I may want to use this code for other projects in the future, so having things modular will also make it easier to steal bits and pieces.

Summer of Code - Days 12 - 14

2006-06-08

I've spent the last few days building the web interface and I finally have something functional. With any luck, I should be rolling out a 'beta' within a few weeks. Still waiting for SourceForge...

Summer of Code - Day 11

2006-06-05

I made a bit of visible progress today with the first working notifications. Things still aren't entirely stable, and I haven't even started thinking about the web interface. But, the Atom feed is working as are email notifications. Still waiting for SourceForge to approve the project.

I'm hoping to get a bit more testing done tomorrow morning and start work on the RSS feed. It shouldn't take much more work than the Atom feed did. Following that, I need to make things a bit more robust so that things like malformed fields don't crash the server. Once we've got some real events running through the system reliably, I'll start in on the web interface. Seeing as how I'm getting through things much faster than I had expected, I'll probably spend a bit of time making the web interface look nice.

Summer of Code - Days 09 - 10

2006-06-04

I took a break yesterday from my Summer of Code project under the philosophy that I should allow myself the benefit of weekends that most jobs offer. I've talked to people that telecommute in the past, and they've mentioned that the biggest problem is separating work and personal life. In this respect, I've started to regiment myself a bit more in an effort to keep making progress.

Earlier this afternoon, I decided that I felt like writing some code and took a stab at extending my notifications interface. I found that it's almost a little too easy to write new notifiers. This type of plugin interface will definitely come in in handy when I try to do more exotic things. I have come across a few new obstacles though.

The most apparent problem is that everything is single-process and single-threaded. If a notification hangs (or is significantly slowed), all other notifications, and the event protocol hangs too. I'm considering just running all notifiers in separate threads, to keep things nice and parallel. On the other hand, it may only be advantageous to have a new thread for each notification type so that I don't end up pounding an already slow mail server. These will definitely be things to think about.

The good news is that even with all of the rather barbaric methods I used to parse some things, the program is still much faster than I need it to be. Memory utilization is kept to a minimum, and I expect that as long as the python interpreter can be loaded, I won't have much trouble on a high load server.

I'm still waiting for SourceForge to approve the project request, so I don't have that repository up yet. I'll post here as soon as it's up.

That's all I've got for now, take a look at the latest repository if you're curious about the code.

More rebuilding/Summer of Code - Days 05 - 08

2006-06-02

Good news! Google had a cache of the last few blog entries, so I have recovered and posted them here. Unfortunately, any links that existed inside the posts are gone (and a lot of the information is outdated already). Just a few quick clarifications: The subversion repository is up and running with more than just the ietfnotify project, I can be reached through jabber at synack@jabber.org until I get a new jabber server up, and I will be posting daily progress (with a few missing days) from now on.

A quick overview of what's been going on with ietfnotify:

  • Domain and Inet sockets are working (selected via a config file)
  • Incoming events are parsed into a usable structure
  • Events are checked for required fields based on a config file
  • A new UUID is generated for every event
  • Files containing the processed event data are generated and named after their UUID
  • Events are timestamped in proper RFC3339 format
  • Packets are handled properly so that netcat can be used for debugging
  • KeyboardInterrupts are handled properly
If you want to see detailed information about the changes, take a look at the changelog.

Summer of Code - Day 04

2006-05-28

I'm not sure what just happened, but a bunch of things just fell into place and I've got real progress to show for the day. The subversion repository is now public and my newspaper script is now online for everybody to see. Feeds are updated once every hour. I love it when a plan comes together.

Summer of Code - Day 03

2006-05-28

I spent the better part of yesterday formalizing the protocol to be used for sending notifications to the ietfnotify service. I also read up on UNIX domain sockets and played with some implementation in python.

I've been working this morning on getting a public subversion repository up and running to comply with Google's requirement for all development to happen in the open.

I will be offline for most of the day tomorrow as I will be traveling to Phoenix, AZ for the summer. Sorry for the short post today, I've been busy trying to get packed and ready to leave for the summer. I expect to get to doing some real coding on Tuesday.

Summer of Code - Day 02

2006-05-26

I spent most of the morning talking to my mentor, Henrik Levkowetz about various project details. We've decided on a notification format loosely based on RFC2822. I'll be writing up a detailed specification in the next few days, then it's time to start in on implementation.

There are suggestions of Summer of Code meetups floating around the Summer-Accepted-2006 list. At this point, it looks like the closest one to me will be at the Googleplex in Mountain View, CA. Not sure if I'll be able to get there, but we'll see.

I also got my Jabber server up and running this afternoon. Feel free to IM me at xmpp:synack >at< neohippie.net. If you're still on AIM, I have a transport setup so that people that already have my screenname can contact me, but I will no longer be giving this out as a form of contact. This is my way of saying "Get a real messenger."

This post

has also inspired me to build a seven-segment hex editor for an EEPROM. I plan to then connect the EEPROM to an older microcontroller (perhaps a 6800) and learn the instruction set. Unfortunately, I have neither the time or money to implement such a project right now, so this project has been effectively shelved.

More random code

2006-05-25

Forgot to mention in the other post... As I was waiting for the Summer of Code acceptance to be announce, I wrote a few small scripts to generate a page that looks like a newspaper using content from RSS feeds. It has quickly become my favorite way to read the news. I've posted a tarball of the source and support files for generating such a page. You need to have feedparser installed and of python 2.4.

Edit the feeds list at the top of newspaper.py (or read my feeds) and run ./buildpaper.sh. When it has finished, you should have a shiny new news.html. Just open it in the nearest web browser and enjoy. The titles of all of the articles are linked to their sources and everything is sorted by date, starting with the most recent in the top left, articles following down the page.

Summer of Code - Day 01

2006-05-25

Yesterday was an interesting day. Mailing lists, IRC channels, google groups, all came to life as the Summer of Code began. It's quite an amazing feat when so many technically minded people are thinking around the term "collaboration". In the flurry of activity, I somehow got subscribed to Jabber's Summer of Code mailing list. Initially, I had submitted applications for both Jabber and Internet2 but according to Google's Summer of Code page, only the Internet2 project was accepted.

As I investigated the Jabber mailing list a bit more, I came across a list of Jabber's accepted students, with my name at the top! Severely confused, I sent an email to Chris DiBona as I could not find any other contact information for Google's Summer of Code team. I hopped on my jabber.org account and started talking with the SoC mentor that had added me to the list. He's not quite sure what happened either, but we agreed that it'd be best to see just what Google says.

When I woke up this morning, my mailbox had 240+ messages from various Summer of Code mailing lists. The general content of most of the messages was "OMG! I can't believe I'm in!" I have to admit, I spent a few hours in this state after finding out that I was accepted, but I tend to avoid needlessly cluttering other peoples' mailboxes. I instead, bugged every online contact on my buddy list (which at 3am amounted to about four people).

I spent about two hours sorting through the messages and building procmail rules to keep the lists confined to their own folders. Finally, I found the needle in the haystack: an email from Chris DiBona. Unfortunately, it was just a form letter stating that I must submit my request to the Summer of Code support address. No problem, apparently this address was listed in the acceptance mail, I just skimmed over it.

So, as I'm waiting to hear back about my confusing acceptance to the Jabber project, I am beginning my work on my Internet2 project. One of the first tasks I have assigned to myself is to figure out the big picture view of the project. Here is what I've come up with so far:

  1. An event is sent to the server using a simple XML or RFC 2822 based protocol (To be decided)
  2. The server parses the event and adds it to the database along with a timestamp
  3. The server creates a new notifier object with a reference to the entry in the database
  4. The notifier sends out emails and updates static content on the web server. I'd like to use some sort of listener API to keep this open to new implementation formats

As far as the event protocol, I've tossed out a couple of ideas. In terms of Web 2.0 trends, everybody seems to be using SOAP/WebServices but I think this is overkill and something that HTTP was never designed for. For this reason, I think the underlying protocol should just be TCP, preferably SSL encrypted. The XML/RFC2822 object will be sent back and forth. My mentor, Henrik, wants to use UNIX domain sockets instead of TCP. I agree that this makes sense, I'm just a little unsure of the implementation. It looks like I'll be spending a few hours digesting man pages :)

I've posted this information about my Summer of Code project because I believe the spirit of this project is to spark interest in open source software. If I don't talk about it in public view, it's not very open, is it? I'm pretty sure the mailing list archives will be public, but I think that in blog format, I have a bit more freedom to be overly verbose in explaining how things work. I've found that by explaining the simple parts of a program, I often have an opportunity to simplify the complicated parts too so this is as much for my benefit as anybody else's. Finally, this will make great documentation in the future.

If you have any comments, ideas, suggestions, or rants about the way I'm writing this program, by all means, contact me.

Summer of Code

2006-05-24

Summer of Code It's official! I'm now working on an event notification system with the IETF Tools team and Internet2 Bulk Transport Working Group through Google's Summer of Code

program. I'm really excited to have this opportunity and am looking forward to writing some great code. I'll post further updates here as things get rolling.

Internet access in the middle of nowhere

2006-05-02

Now that I'm back in Corning, I face a problem that was never an issue at RIT... I no longer have ubiquitous access to the internet via wifi. Instead, I am relegated to no more than three (legal) public access points in town. For this reason, I've been researching prepaid cell phones and their data capabilities. I've come to the conclusion that Boost Mobile will fit the bill. They offer unlimited data at $0.20 USD a day and you only get charged on days you use it.

Their cheapest phone, a Motorola i415 also has builtin GPS that could allow me to do some nifty stuff in the future. The phone goes for $49.99 USD and Amazon lists multiple resellers that have a USB data cable for $4.73 USD. Boost puts $10 on your account at activation so if I only use the phone for data, I'll be able to use it for 50 days. Not a bad deal.

Pong GL

2006-02-11

I finally got around to posting a formal copy of Pong GL. I wrote this program a few months ago after reading the first couple of chapters of the OpenGL Programming Guide. I thought to myself, "I know how to clear the screen and draw boxes, what can I do? PONG!" So, I set out to write this program. Have fun and drop me a comment if you like it (it's the little blue link right under this sentence)

Day 2: South Hall Take 2, The Sands, Race for Larry Page

2006-01-08

I decided that I had missed too many things in the South Hall on the first day and decided to go back for another round. It was worth the trip. I got a bit more swag and got to see some more reputable companies.

I took it slow, eyed every booth for interesting stuff, and came away with a Yo-Yo from the NEC booth. They didn't even ask me if I wanted to know about their products! At the HP booth, I took a closer look at their Media Center boxes as I've decided that I need to get one. HP will have the best offerings on the market once the HD-DVD models come out. They had a prototype of that model running and I've decided that that's what I'll be getting. I just hope it's not so ugly when it's finally released. Here's my advice to HP: Take a clue from Apple, make a good product and put it in a shiny box and they will fly off the shelves. I also decided to look at displays while I was there. Figure there's no point on blowing money on a nice media center if you don't have a good way to look at it. Again, HP came out on top. I searched all over the convention center and could not come up with a display that looked as good as their rear-projection DLP display. The only downside is that the MSRP is $5,000. I think it's about time I start making some money again.

Next I took a look at ATI's booth. Despite having incredibly good looking graphics, it's really hard to compare video cards without playing with one for a week or two first. There are so many factors that can differentiate a demo from real-life conditions.

Finally, I found the Google booth. Incredibly strange looking with a crane lifting what looked like cube shaped bean bag chairs out of a bin and dropping them back in. They had cards with multiple-choice questions about Google's services in a scratch-to-win fashion. I managed to get enough of the questions right to get a Google branded USB Travel Mouse. Not bad for fifteen minutes of waiting in line. I really do want to work for that company some day...

At this point, I figured I had seen everything I wanted to see in the South Hall and got on a bus to get over to the Sands. I stumbled around there until I found the CES show. The exhibition floor wasn't as easy to find as the porn show. Sadly, I didn't have a badge for the porn show. The lobby was ahem, entertaining.

I wandered around and enjoyed the spectacle that the "innovative" products afforded me. One exhibitor managed to get a guy on a bike connected to a thing that spun him in around in a vertical centrifuge fashion. The announcer commented, "It's amazing what people will do for a T-Shirt." He certainly wasn't kidding.

Then, a monumental thing happened. I somehow had wandered away from the beaten path and into the Robotics TechZone. Needless to say, I loved everything I saw. I didn't get to spend a lot of time there because I had to go to the Larry Page keynote but I'll definitely be going back tomorrow.

Of note was Lego's Mindstorms NXT kit that will be released in August, along with the SpongeBob Lego sets as I pointed out to the exhibitor. The kit is 100% Technic with the new NXT brick that replaces the RCX. The NXT brick features a 32-bit processor and Bluetooth for control and programming. Seven I/O ports for sensors, buttons, and cameras gives plenty of flexibility. There's also a USB port for those of us that don't have Bluetooth available to us. The NXT brick does NOT have a rechargable battery but the exhibitor mentioned that they will probably add that feature as they've had a lot of people asking for it. The new brick also comes with a new piece of software that's based on National Semiconductor's LabView software, allowing the user to do very simple as well as advanced tasks. The set will retail for $250 making this a nice kit to learn about robotics. It's targeted at advanced middle school and early high school students. That's not going to stop me from buying one to play with.

The last exhibit I caught in the robotics TechZone was a company making a knock-off of the Sony QRio without all the pretty casing and the movement wasn't as fluid. Nonetheless, the thing is on the market for anybody that wants one. The robots have an Atmel processor so they should be relatively easy to program and have some fun with. Unfortunately the kits start at $1,000 USD though educational discounts are available. The exhibitor did not know how much the discounts were or he wasn't willing to tell me. Either way, he wasn't very helpful.

It was at this point that I realized that I didn't have my ticket to the Larry Page keynote with me and that I would need to go back to the hotel for it. I had two hours to take a bus from the Sands to the Convention Center then another to the New York, New York because the Excalibur bus wasn't running for some reason. I walked through the New York, New York and over to the Excalibur. I dropped my bags, picked up my ticket, and left. At the bottom of the elevator I asked the guard what the fastest way to get to the Hilton was because at this point I only had twenty minutes before the presentation was to begin. As I had expected, he told me to take a cab. I blew $20 on the cab ride. I figure it was worth it because I had ten minutes to spare by the time I got to the keynote. They had just opened the doors and had started allowing ticket holders to file in.

I sat down in my seat and found a swag bag, courteousy of Google. Inside it was a Google Video T-Shirt and there was a little tavern game thingy in my chair's cupholder. Until the presentation started, the screen showed a five minute loop of queries headed for Google's search engine. Things like "thongs" and "large print bible" appeared next to each other, sparking ideas like incredibly perverted pastors.

The presentation began with a video generated by Google Earth that zoomed in and out around the planet, spotting different landscapes and pictures like seals on and african beach and the Grand Canyon. The stunning visual tour ended with the camera zooming down the strip and flying through the theatre right into the screen it was playing on. An impressive demo indeed.

Larry Page entered the stage standing on the bumper of Stanley, the first vehicle to win the DARPA Grand Challenge, wearing jeans and a lab coat. After explaining that he had considered Stanley to be a milestone in robotics technology, he introduced the team leader that worked on the project and congratulated him. The team leader then drove Stanley off the stage and the presentation continued.

Page began the presentation by talking about how he thinks all of these consumer electronics should be able to work with each other better. He outlined a few guidelines for hardware designers to make this goal more achieveable:

  • One connection does as much as possible. If a digital camera has a USB port, you should be able to connect that to anything else with a USB port and do any common task with it. The example he gave was if two guys in the audience just wanted to trade photos in a "I'll show you mine if you show me yours" fashion, this shouldn't require the intervention of a computer.
  • Use open standards. The most successful inventions like the internet were designed by academics that enforced open standards whereas things like instant messaging that were designed by large companies, tend to fail or make everybody's life difficult.
At that point, Page began talking about how Google Talk is a perfect model of efficiency in that department as it uses open standards and doesn't lock anybody into any specific software or platform.

He brought a developer out on the stage to demonstrate a new product: Google Pack, an application designed to make updating and keeping track of installed programs much easier than it currently is. He installed pack with an extremely small download and then it just took off doing all the work. It silently downloaded and installed Firefox, Adobe Reader, and a slew of other essential programs with nice loading bars to indicate progress. Installing all of the applications (about twelve of them) took a matter of seconds. Page also noted that Pack will limit it's bandwidth usage so that you can still get other work done while it's downloading stuff.

For entertainment purposes, Robin Williams was called to the stage to introduce the Google Implant. Page gave Williams queries like the ones he would type into Google. Absolutely hilarious. I'll post a link to the video if I can find it.

The other announcement he made was a significant improvement to Google Video. You can now buy, sell, and download content through Google Video. CBS, Hollywood Records, and the NBA are the biggest content providers that they've got lined up. I'm hoping that the other companies will follow CBS's lead and sell content on both iTunes and Google Video, giving the consumer options. Personally, I think Google Video will be much more successful because of it's flexibility with formats and the ability to use it's unencumbered DRM. Time will tell.

Page started a Q&A session and brought Robin Williams back out on the stage. Williams began to grill every person that came up to the mic, particularly a guy that said he was from the Screen Actors Guild Magazine. Again, absolutely hilarious.

That concluded the presentation. I strongly recommend trying to find a video of the keynote if you weren't fortunate enough to see it already. I'll post a link to it when I get a chance to go looking for it.

CES Day 1: South Hall, Central Hall

2006-01-08

I walked into the Las Vegas Convention Center at 9:10am, just after all of the exhibits opened. My first impression of CES was, "This is big, really big." But as I saw more and more, I started to get comfortable with the size and just went with it. I saw lots of things that I had heard rumors of but had never seen. Some of them were really cool, some of them were really pointless, but most of all, everything was new.

All of the exhibitors showed off their current products either in a display case, working demo, or at the very least, a product catalog. I found that the people working directly for the manufacturers tend to know a lot more about the products they're pushing than any website could ever tell me. Definitely a good thing.

So, I started in South Hall 4 and worked my way backward to South Hall 1, then I hit the Central Hall (not sure which area I started in there). The first booth I spent any reasonable amount of time in was the D-Link booth. The staff were very helpful, almost to the point of car salesmen... Scary. Anyway, D-Link is coming out with a new home network management suite that looks a lot like 3Com's old network manager software with lots of GUI enhancements and more features that a home network user might want. The software allows you to do lots of cool things that tend to be relatively difficult such as creating a protected Windows share. Their software will create all of the appropriate user accounts, assign privileges, create the share, set security attributes, and map the network drive on all of the other computers in the house. The sales guy said that it took an average of 20 clicks to complete this task for a home network, and 40 for a corporate network. D-Link's software will do all of that in a very easy dialog interface that takes no more than two clicks (though you may want to tweak a few settings).

The next booth I visited was Marvell. For the uninitiated, Marvell makes chips that do insanely complicated things and manages to make it look simple. At this point Intel, Broadcom, and Marvell are the only manufacturers with working pre-802.11n devices. I mentioned that I had done some embedded Linux work and would be interested in using their devices and was quickly informed that all of their boards run Linux on an ARM processor. The exhibitor suggested that I apply for a job... Score!

After those two booths, things get kinda blurry in my mind. I didn't see too many other interesting things in the South Hall (I missed a lot) and will probably go back tomorrow to finish up.

Next up on my tour de CES was the Central Hall. This is where all of the realy big, really expensive booths were. The first booth I walked into was Texas Instruments. They were really pushing the DLP chips as the next generation of projector technology. I watched their ten minute show where I got a firsthand look at one of these newfangled projector thingys. Needless to say, I was impressed. The picture was crystal clear, the colors were vibrant, contrast was excellent, no screen door effect, and extremely comfy chairs. Win one for TI. Also on display at the TI booth was the Mitsubishi pocket projector due out by the end of the year. This was not a prototype, but a working demo with a sign next to it quoting a price of $899 USD. They also had another competing projector in the same form factor using the same chip. I believe the manufacturer was Toshiba but I won't be sure until I sort through all of my pictures. The difference between the two: Mitsubishi quotes sub-thousand dollar prices, where the other one was $1,099 USD. The Mitsubishi projector seemed like a more durable and sturdy design whereas the other one was rather flimsy. I also thought the Mitsubishi one was also brigher but that may have just been the lighting setup. It looked like the menus and controls were a pain on the Mitsubishi projector. Hey, it's a tradeoff.

I wandered around a bit more until I made my way to the Microsoft booth. I pushed my way through many crowds (they're japanese, they're used to it, right?) and got some good looks at Windows Vista Media Center Edition. As far as I can tell, this is a killer app. The entire convention seems to be circulating around the release of better media apps for the home with much better integration with the rest of the home. Around the back of the Microsoft booth were a few Windows Mobile 5.0 demos. One in particular caught my attention: a prototype of a reciever for 320x240 TV feeds streamed from cell towers. No definite dates, prices, or release plans according to the exhibitor so this may never hit the market. Nonetheless, it was very cool. I played around with the latest build of Vista for a few minutes (5070) and picked up a couple of Vista T-Shirts.

I moved over to another part of the Microsoft booth and saw a prototype of a tablet/laptop/toy combo that was designed to be a low-cost computer for K-12 students to replace textbooks. Not a working model, just a mockup that Microsoft is working with the designers to find suitable manufacturing for. If these ever come to market, they'll be excellent hacking toys.

My last stop at the Microsoft booth got me a 60-day trial for their new Digital Imaging and Editing software that does strictly touch-ups. I asked about PhotoDraw but the girl had never heard of such a product. This leads me to believe that it's officially dead and will never be coming back. Oh well.

I wandered around a bit more and didn't see much else that sticks out in my mind. I left the Central Hall and made for the tents setup across the street. I rested a few minutes in the Gibson booth until the MC mentioned an upcoming country singer. I exited immediately following the announcement.

Next tent over was the CES Concierge. Nothing of interest unless you've screwed up your registration.

The next exhibit outside was the Digital House; a collaboration between Microsoft, HP, and a few home automation companies to demonstrate how existing technology can be leveraged to create a very cool, very expensive, technology enabled home. The tour started with a buggy prototype of a seven-inch wall-mounted touch-screen that sports software that gives one-touch access to almost everything you'd want to know about your home. Lighting, Window Shades, Music, Cameras, Weather, anything you'd want to manipulate. This device is still a prototype but should be on the market by the end of Q2 2006.

Next up was the butt-ugly HP Media Center PC that looks like a set-top box. This exhibit was meant to demonstrate the ability to use a media PC in a dining room environment. There is a plugin and service for Media Center that enables you to buy pieces of art to display on the screen when you're not using it. Royalty-free art starts at $0.99 USD. Another scenario that the exhibitor proposed was if you had just gotten back from a trip or something and wanted to show your friends some pictures. Just pull up the Pictures menu in Media Center and you're good to go. Any music from your library can also be played simultaneously... A handy feature. This demo reminded me of my mom. These are the sorts of things that I could see her using a media box for.

A few more minutes spent in the living room looking at a 52" HDTV and another HP Media Center box was a little boring only because it was a repeat experience from the Gates keynote. The next room was a video game room. It doesn't really exist in the average home, but I went along with it anyway. This room featured a smaller LCD HDTV (somewhere around 32" I think) connected solely to an Xbox 360. They used the Media Center Extender functionality of the Xbox 360 to stream Live TV, Movies, and Music, showing how once you've got the infrastructure (home network, media center pc) in place, another room can have all that functionality at the price of a TV and and Xbox 360. Not bad.

I meandered through the none-too-exciting kitchen and into the crowded bathroom to see a lighted water faucet that changed colors with the temperature of the water. A little over-engineered, but nifty. The bathroom also had a touch-screen with access to the Media Center so that you could stream your porn/sports from the pot. I don't spend enough time in the bathroom to warrant something like that, but I'm sure my dad would love it.

Next was the master bedroom. Again, an HP Media Center box with a rather large TV presented a nice way to view content from bed. A bit overkill, yes, but it was cool overkill. That was the end of the Digital Home tour. I walked out of there with one thing on my mind: I need to get a real Media Center PC and a nice display.

The next exhibit in the center court was the Yahoo! building. Hot girls handing out wristbands wasn't a bad way to start. Once inside, I noticed that everything was based around mediocre competition to Microsoft's Media Center. The UI wasn't as pleasant, there weren't nearly as many ways to obtain content and the actual usage scenarios I could come up with for Yahoo's software were limited. Sadly, Yahoo is a dying company. They're falling into the not-invented-here mindset. Hopefully they'll wake up before it's too late.

That was the end of the outdoor exhibits I could get into. Microsoft had another huge tent setup outside that was reserved for VIPs only. I heard through the grapevine that it's a swanky party with lots of swag. Perhaps next year...

We went back to the hotel for a while, then ate at P.F. Changs. It was really good and the staff were really nice and cooperative considering that we walked in off the street with a party of 13 and no reservations.

CES Day 0: Flying, Registration, Bill Gates Keynote

2006-01-08

After a night of watching the Orange Bowl and not sleeping, the apartment at Colony was suddenly full of everybody that would be going to CES. We loaded up, drove to the airport, checked in, got searched, and got on the plane. Simple enough, even without any sleep. Naturally, every person in our group was selected for extra screening meaning that the TSA guys were working overtime checking the bags of a bunch of geeks loaded up with gadgets.

Ironically, we were on flight 777 to Vegas. Needless to say, the flight was nothing unusual except for the fact that 90% of the people on the plane were also CES attendees. Eventually, we landed in Vegas and got off the plane. After some minor confusion as to where we were and where we were going, we got on a bus to the Excalibur so that we could check in to the hotel. On the way out of the airport we saw Adam Sessler from TechTV's XPlay.

After we checked in and dropped our bags, we went for some food at the Excalibur's buffet. It was very tasty. I left from there with a few of the other guys to go over to the Sands to get my badge and get all registered correctly. Following that, we took a shuttle over to the Hilton to get our keynote tickets. Once again, I saw Adam Sessler at the Hilton. This time I smiled at him; I think I scared him.

Having gotten all of my registration done, I had two hours before I had to be back at the Hilton to see Bill Gates' keynote. We took a bus back to the Excalibur that we thought would only take a few minutes. Seeing as how the bus driver was a complete asshole, it took us about 35 minutes. No time for a shower, I slipped on some new clothes and ran for the next bus. I made it back to the Hilton with time to spare. Glad I got those keynote tickets.

Bill Gates is an interesting person. He is the richest man in the world. Everybody knows he's the richest man in the world. Except him. Somehow, he manages to still exude that sense of being just another college kid that had a good idea. He stepped out on stage and started showing off some new Windows Vista builds and a short day-in-the-life segment that made use of way too much technology for any real person.

One of the demos really caught my attention; a table with a projector and a webcam that sensed a Windows Mobile phone and gave you a full desktop environment without any supporting peripherals. I can't really imagine that this sort of thing will be widespread, but I sure hope it is someday.

Gates also gave the center stage to some software enhancements coming in Vista, most of them being directly ripped off from Mac OSX. This isn't necessarily a bad thing, and I'm kinda glad that Microsoft is finally learning the value of style.

CES Coverage

2006-01-03

I'm starting my coverage of the 2006 International Consumer Electronics Show (CES) as is my duty as a blogger with access to such events. Currently, I'm sitting on the couch at Colony 264 biding my time until 4:30 AM rolls around and we leave for the airport. I'll be flying from Rochester, NY (ROC) through Atlanta, GA (ATL) and on to Las Vegas, NV (LAS) on AirTran airlines with a group of friends loosely associated with RIT's Information Technology Student Organization (ITSO).

I'll be attending CES under the guise of an editor for our radio show, It's So Tech. Hopefully, the radio station here (WITR) will grant me a press pass or something similar so that I won't have any trouble getting into the keynotes that I didn't get tickets to.

Currently I've got tickets to the Larry Page keynote on Friday and the Bill Gates keynote tomorrow afternoon. I'm expecting the Larry Page keynote to be fairly interesting because of the recent rumors circulating around a Google PC. As much as I doubt that there'll be a Google PC, I'd love to see such a thing.

More news coming soon.