22. June 2005 14:45
In my program that copies podcasts over to my SD card
I noticed a few things that need to be changed.
The way I am using this the copy process is really a move. I am moving the file to the SD card from it's original place on the local PC hard drive. This means the file should retain it's original date. I do not think it is doing that in my program.
Files should be moved in chronological order. This helps to ensure the oldest files get copied first in the event there is not enough room on the destination.
21. June 2005 00:35
This is a follow up on my post about Listening to Podcasts
. I went ahead and developed a small application that grabs the podcast files and moves them to the removable media card. Here is a little idea on what it does.
- Tests to be sure the destination folder (removable media card) is available
- Looks for files of type MP3 in the source folder walking all the directories
- If a file is found verifies that enough room is on the destination folder
- Copies the file to the destination
- Removes the file from the source
- When all files are processed it looks for empty directories in the source directory and deletes them
All I have to do when I am done with listening to the podcast on my Dell is delete it. The only problem I have left is that the Windows Media Player does not support bookmarks.
Room for improvement:
Currently the application must be launched manually and pass into it the source and destination directories. It would be nice to have a service that just watches the source folder for new files and process them as they come in. The program looks for mp3 files only. It would be nice to add support for other media files.
19. May 2005 06:53
I have been doing a lot of Unit Testing in my day job using NUnit as the framework. I find writing code to test code is very interesting and makes my coding efforts less bug prone. However in my off time I often mess around with non .Net programming projects and I miss the ability to write test code in these projects. Well it is not too hard to follow the same sort of unit testing practices when you do not have a testing framework in place.
Just recently I was writing some BX24 code for a robotic project. I needed to create some conversion procedures to go from a Byte/Integer to a String and a String to a Byte/Integer. How would I determine that my new procedures would work as designed? Certainly I could not rely on the production robot code to test the conversion procedure.
The BX24 programming language has the concept of projects and source modules. A project is nothing more than a collection of source modules. One of the source modules must be the main entry point of the project for starting execution. This concept allows me to simply create test projects that are designed to test a single source module.
So I moved my conversion procedures into a Conversion Module and made a Conversion Test project. Then I proceeded to write test code in the main module of the Conversion Test project to exercise the Conversion Module. I now had unit tests that exercised the outer bounds of the Conversion Module. I proceeded to fix bugs in the Conversion Module until all tests passed.
Of course without a framework I did not have the nice GUI with Red/Green lights to tell me a test passed or failed but it sure did help me determine if my module was fully functional or not. So if you have a programming project that does not have a nice unit testing harness but your IDE supports module level programming you to can use the above techniques to write bug free code.
11. April 2005 15:24
Looks like Scott Hanselman is gearing up for some .Net Hardware related articles
. Some of his brainstorming ideas are similar to my Home Automation Ideas
. Like the use of X10 and a Video Monitor for the front door (Although I see I never documented the Video idea on my wiki). Maybe I can leverage some of the ideas Scott is going to write about.
Although his Lego Robot idea may not be Home Automation specific it sure comes close to the project I did with the ER1 robot from Evolution Robotics a couple years ago. I used C# to extend the capabilities of this wonderful robot.
I think I should break my project into more manageable sub-projects just to get something going. My Home Automation project is not getting off the ground so far. At least I documented a few ideas so I can get back to it.
5. March 2005 06:27
I have been listening to several podcasts over the last couple of months. I have to say I am hooked on some of the technical shows. Whenever I am in the car I listen to a podcast. The radio in my car is rarely tuned on. I use a Dell Axim x50v
with Media Player 10 and iPodder
1.1.4. I have been spending a lot of time trying to get the content to synchronise correctly. I am not sure if it is iPodder, Media player or my Active Sync program that has problems with this. But for some reason at times I noticed podcasts that are on my PC but are not on my Pocket PC. I think there is an update to Active Sync I do not have so I am going to try this first to solve my problem.
I have a few grips on this setup
- There needs to be a purge podcasts after x days setting.
- Finding new podcasts on the device is a real pain. Need a playlist that can be settup to show podcasts added in the last x days.
- Organizing podcasts with playlists is a real pain.
- Deleting podcasts on the Pocket PC should delete it from the PC. I don't want the podcast once I hear it and I listen to 90% of them on the Pocket PC.
- I need bookmarks. Stopping a podcast and starting it later is a pain.
- The media center interface is clunky. I have to click too many menu items to get to a playlist.
- The buttons and the screen on the Pocket PC are way too easy to bump while listening to a podcast.
I found one product that made finding podcasts on the pocket PC while driving real easy. Voice Command
from Microsoft. However I am not convinced I want to stick with Microsoft Media Player just yet, so I have not purchased Voice Command. The trial version worked out very well. I could ask the device to play music and it would come back with questions that would lead me down to a particular play list. Once in a play list I could easily skip ahead to next tracks without taking my eyes off the road.
3. March 2005 06:07
Well I signed up for the CodeCamp
that is coming to Charlotte, NC on April 30th 2005. Early registration was opened to Developers Guild
members. There are only 200 seats so I was glad I got in early. I have never attended a CodeCamp
before but as I look at the Session Lineups of other CodeCamp
s I think I will not be let down. It was announced at the Developers Guild
meeting this month that Design Patterns was the top track requested so far on the polls they did.
18. February 2005 18:20
Well I finally got around to checking out Vault by SourceGear. I used to be an avid source safe user for a long time. I have even used SourceGear's SourceOffSite for a while on a project for BattleBots. However I have been forced to use PVCS at my day job. I have never liked the client for PVCS and now that I work virtual I dislike it even more. I won't go into details about why I dislike PVCS because this post is about Vault.
Some reasons I chose Vault:
- Free for single users
- Works on SQL Server
- Built on .Net Built with remote users in mind
- Seems to be getting good reviews from users
- Works a lot like source safe (from a functionality perspective). Have I mentioned how much I hate PVCS :)
- Integrated with a Bug Tracking program also authored by Sourcegear
You can see some other good reasons why to use Vault over Source Safe from Eric Sink CEO of Source Gear.
Installing Vault on my local machine was a real breeze. Installing it on WebHosts4Life was a little trickier, but not that bad at all. Using the client application has been a real joy. I have used it off and on for 2 weeks now and I have to say it has some cool built in features. It is also very responsive as far as I can tell. I don't have any real big projects under source control yet, but just using it with what I have is very fast.
Some of the coolest features I like:
- Adding new files by folder with file extension filtering (already tailored for .Net development).
- Showing what source is out of sync due to changes made localy or in the repository.
- Merging local files with repository files is a breeze when local changes where modified without the source being checked out. All you have to do is check out the files and an automatic merge can be done.
- Searching for files by many options
- Treating check ins as one complete transaction (although I don't see how to place new files in this transaction, but that is not really necesary)
All in all I would highly recommend Vault to anyone. If I ever get a project that requires multiple developers I will definantely be using Vault as my source control program.
I am in the process of adding NAnt tasks for Vault command line operations. I know I can do this already by using the NAnt exec task but I wanted to capture the errors and success state that comes back as xml from the Vault command and expose them as properties that can be acted appon within NAnt build scripts.
12. February 2005 08:38
Just noticed that ActiveHomePro
has an SDK
that allows you to script your own X10 programs. It also allows for monitoring of X10 commands. Craig Andrea
is using it to monitor his build status
. Cool idea!
30. December 2004 07:16
I think the Creating Desktop Application Remote Controls with the .NET Compact Framework (Part 1) article will prove to be helpful when I begin to build my Home Automation project. The Pocket PC can act as a remote for my entire system.
Couple things I might have it do:
- Play audio
- Control video equipment
- Turn on/off lights
- Enable/Disable the security system