Archive for the ‘software’ Category

Linux in-flight entertainment

Thursday, October 19th, 2006

Linux entertainment LCD touch screen in every headrest of a Song airline 757.I traveled to Phoenix this week to give a BACnet and Lighting Applications presentation to the NEMA JSC on DALI. I flew there aboard a Song Airlines 757. During the powerup sequence for the plane, all the passengers were greeted with the image of Tux and the Linux boot sequence as the in-flight entertainment system in each headrest initialized. The touch panel color LCD screens provided games, movies, music, flight information, and satellite television. During the 3 hour flight, I watched Fox News, Mythbusters on Discovery, TLC, and Sunday night football. I also listened to some Ramones and The Smiths. I played trivia with other passengers – I came in 3rd place out of 3 players. I normally dread longer flights, but having satellite TV and Linux serving up entertainment really made the trip go by quickly.

BACnet Plugfest Complete

Friday, October 6th, 2006

Today was the final day of the BACnet Interoperability Workshop, or Plugfest as it is commonly called. Over the two and a half days we found only two bugs in the open source BACnet stack at SourceForge that I ported into our lighting panel in 5 days. I fixed both bugs in a few minutes and uploaded the firmware into the lighting panels using the in-circuit-debugger. The fixes were verified by the other vendor.

BTL Plugfest - Lighting panels and laptops

The MS/TP state machine worked. We tested it at 9600 baud, 19200 baud, and 38400 baud and worked fine. 76800 baud did not work, so I will need to figure out why. I may need to clock the processor at 40 MHz instead of 20 MHz to get some extra horsepower. I will also need to optimize the other processes, like the input reading and debouncing, to take less time in the main loop.

Lithonia Lighting and Loytec testing BACnet and DALI and LON.

The food was great and I met a lot of nice folks. Hopefully my flight home tomorrow will be uneventful.

Random Photos

Sunday, June 4th, 2006

Random photos and random music have different user expectations than what a random number generator provides. If I am listening to a bunch of songs on an MP3 player at random on a long airline flight, I don’t expect to hear the same song again until I have heard all the songs at least once in a random order. If I have desktop wallpaper displaying at random, I expect to see all the wallpaper in my list of wallpapers at least once before I see the same wallpaper again.

Pinwheel

So why don’t programmers in the photo display and music playing arenas meet the user expections? I suppose it is significantly easier to write the code using “x = random()” than it is to actually keep track of which photos have been seen or which music has been heard. Or perhaps they are just unaware of the user expectations.

Learning Python

Saturday, April 29th, 2006

Last year I started teaching my son Joshua, who was 10 years old at the time, to learn the programming language of Python. I had searched for and researched a Kids Programming Language, and settled on Python and the Livewires course. Python promotes good programming practices, the language and its tools are available for free on many platforms and operating systems, and the language can be used to develop some serious software. The Livewires course includes a series of worksheets and reference sheets that culminate in the skills necessary to write a game.

I decided that I wanted to learn to program Python too, so a friend of mine suggested reading Dive Into Python, a Python book for experienced programmers. You can buy a printed copy, read it online, or download it in a variety of formats.

Setting up Python is easy on most operating systems, and it came already installed on Ubuntu Linux. There are lots of libraries and frameworks for Python, including pyGame and wxPython. There are free and open source development environments that make editing and running your programs easy – I like DrPython.

I also want to write a BACnet workstation client using Python, and my friend Joel donated some core BACnet code that is written in Python just for doing that. Hopefully I will be up to speed soon on programming Python and will be able to create some demos for the project.

Personal Software Process – PSP

Saturday, March 18th, 2006

I learned the Personal Software Process from A Discipline for Software Engineering during lunchtime at work in 1996. During the course, the student is required to write some programs that perform statistical analysis of their data from writing the programs. I remember struggling to figure out the numerical methods for the programs, and then I stumbled upon Appendix A. It contained all the numerical methods that were needed in nice, procedural form. I occasionally get email about my Personal Software Process page where I have the programs and statistics posted from my experience. The most recent email asked about the chitest.c program, and what some of the results from the program meant. I had to dig out my book, and found Appendix A again, where all the nitty gritty details are explained. Ah, the memories.

I now mostly use Extreme Programming key practices instead of the data driven methods of PSP. Some day I’ll figure out Model-View-Presenter and be able to automatically test my user interfaces. Maybe someday I’ll even figure out how use Fitnesse to test my embedded systems.