The Revolution - Technology

December 24, 2005 10:33 AM

I have a dream... a dream of owning a house that is completely networked with computers throughout. I want to have a digital recording media hub in whatever the main TV family room, wireless access for any laptop systems, the fastest ethernet I can get built into every room, a command center desk with multiple LCD displays in an office, and a ketchen computer terminal built into a wall or cabnet or something. Most importantly this digital dream house will be built without using ANY Microsoft technology. Idealy it will be a completely Macintosh powered house but I have no problem with using some Linux systems to get the job done, especially in roles that are transparent to the user like some kind of central server or database.

So the other day I was taking a shower thinking about my wired (and wireless) house. I just bought a cookbook the other day and I was thinking about how poorly organized cookbooks are. So I started thinking about my kitchen terminal - how can I improve the common cookbook. My solution: Create some cookbook software that can be used to enter, manage, and view recipes. I'm thinking that my kitchen computer will be something like a Mac mini that is built into a wall or something. Idealy I'd like to have only something like an LCD touchscreen built into a wall, cabinet, or countertop but that might be too hard/expensive. At first it will probably just be a normal LCD + keyboard and mouse - but touchscreen would be really cool. So I was thinking of designing my cookbook program with this in mind - read: big buttoms easy to touch/click with fingers and the ability to search through categories instead of typing in search strings when looking through the reciepes.

There are several ways one could implement a system like this. My first idea was to make it just a standard desktop application - built with the Cocoa framework on Mac OS X. All the reciepes would be stored on the user's system. Then I started thinking about making it into some sort of client/server model with a database of reciepes stored on some other computer in the house and the kitchen terminal only querying the server. But this might be too much of a custom approach and it might makes it to difficult to turn into a product that other people could use. Then I started thinking about just making it an internet application with something like PHP. Then I could have a database of reciepes that everyone on the internet could add to - so you wouldn't be forced to manually add reciepes to the program. Right now I'm thinking about using some combination of the first method (Cocoa Application) and internet database. I'd like to make it a Cocoa App because that would give me a lot more flexibility with the interface and the user wouldn't be locked out of their cookbook if the internet was down. I would like to have some sort of online reciepe database that the user could download reciepe files from.

I think there is probably software out there already that does something like this and I'm sure there are already online reciepe databases. I think I can come up with something that is a lot easier to use though, possibily leveraging the same algorithms Russ is talking about using for our organizer program to store reciepes in a kind of dynamic way. I'd like to have a lot of metadata so that the user can search by all kinds of things (nationality: Chineses, italian... type: dessert, breakfast, dinner,... ingrediants: chicken dishes, shrimp dishes...). It could be an interesting project.

Helicopter Rescue
December 24, 2005 3:07 AM

Well, after staying up all night working the day before it was due, we finally finished our final cpsc 481 game project. It's a helicopter rescue game and I've created a site to host it. Also of interest is the link to the other projects posted on our professor's web site. I'm pretty proud of the way our game turned out.

October 10, 2005 9:09 PM
Bonjour Logo

There is an interesting new piece of technology that I think is going to have a major impact in a few years - in fact, people with Apple computers are already using it and they know it by the name Bonjour. Bonjour is Apple marketing-speak for their version of an open network protocol called Zeroconf. Bonjour, or Zeroconf (whichever you perfer), uses DNS packets to allow computers on a network to automatically discover each other. For example, I have a Apple Powerbook and as soon as I plug into my home network it autmatically notices my HP PSC Bonjour-enabled printer and I can print with zero configuration. No ip address, no drivers - done. This technology has also had some other interesting applications as well. For example, I can log into my AIM client and it will automatically pick up anyone else on the network using Bonjour (if they want to of course) and add them to a special Bonjour buddy list. One successful Mac OS X application (SubEthaEdit) makes use of Bonjour by allowing multiple people to work on the same text document over a local network. This would be especially useful in a development environment.

But aside from these simple applications, I can see this type of technology becoming far more important. Take your television for example. In the next few years a bunch of companies are going to be despertly trying to take over your living room with media center TIVO-like PVR systems. Microsoft's XBox 360 is the first entry into this emerging market. Then factor in the expanding role of Voice over IP (VoIP) and people speculating that it will replace traditional telephony. It's easy to see we are entering a world that is increasingly IP based. I'm betting that in the near future most common eletronic devices will only have two cords - ethernet and power.

So how are all these devices going to communicate. How are we going to make the dream of the "smart house" a reality for mom and pop? It is certaintly not going to be through complicated network configurations with 32 bit IP addresses. Here is where Zeroconf enters in. Now you can plug in your media center box and your computer sees it automatically - no configuration. IP is the future - but something like Bonjour is going to make it easy.

CpSc 481 - Program 2
October 6, 2005 9:17 PM

Here is my solution to the second assignment of my 2D Game Design class. I'm a little less pleased with this one. Basically the goal was to improve our first assignment by adding the following features.

  1. Interception of keyboard input
  2. Scrolling background
  3. Game timer

I was able to complete everything in the assignment but I decided to go for a bit more and that has caused a few issues why my code. For example, I made it so that the background only moves when the player reaches a point close to the edge of the screen. This means the background isn't constantly scrolling left or right. For some reason, the stopping and starting of the scrolling has caused a seam to appear where the background loops around. It is only 2 pixels wide and only occurs once in a while. A second problem is that Luke normally runs faster than the stormtrooper. However, when you reach the edge of the screen, luke stops and the background moves instead. The problem is that I forgot to make the stormtrooper move in the other direction so he is still moving the same with respect to to Luke. Also, my main method is very sloppy now. Hopefully I'll improve these problems in the next assignment

CpSc 481 - Program 1
October 6, 2005 7:54 PM

Here is my solution to the first assignment of my 2D Game Design class. I think it's pretty good. Star Wars themed of course. I got most of the sprites from this random sprite resource web site. If you can't tell, they are straight from Super Return of the Jedi. Except the background of course. The sprites are a little jerky but not because of the program but because I don't think I have all the frames of the animation. This assignment had several goals.

  1. Two sprites that move (don't have to be animiated)
  2. Some type of background
  3. Some type of animated sprite

Computer Book List
Programming in Objective-C
The Singularity is Near
Cocoa Programming
Cocoa Programming for Dummies
Professional Software Development
The C++ Programming Language
Modern C++ Design: Generic Programming and Design Patterns Applied
C++ Templates: The Complete Guide
The C++ Standard Library
The Art of Computer Programming
Effective C++: 55 Ways to Improve Programs and Designs
The C Programming Language (2nd Edition)
Design Patters: Elements of Reusable OO Software
C++ From the Ground Up, Third Edition
Advanced Mac OS X Programming
Core Mac OS X and Unix Programming
Building Cocoa Applications: A Step By Step Guide
Learning Cocoa with Objective-C
Cocoa Programming for Mac OS X
Programming Ruby
Designing Interfaces
Writing Great Code
Code Complete