Thursday, December 30, 2004

Possible new Mersenne Prime found?

Some guy posted with an Italian email address asking what he should do about his copy of Prime95 beeping and flashing at him. This is something that Prime95 will do if it finds an exponent "p" that passes the Lucas-Lehmer test (indicating that 2^p-1 is prime).

George hasn't heard from him since that posting, so it very well could be a prank or a known bug with small exponents. It would probably be easy enough for George to check which exponent was assigned to his client (since he has already matched the email address to a PrimeNet user), and start the verification process on that exponent.

The last Mersenne prime was discovered in May 2004, and the one before that in November of 2003. These numbers have no practical use, other than perhaps for random number generators. The ones being found today are millions of digits long.

Interesting FFT Explanation

I found a link to this person's web page where FFT Multiplication is demonstrated using an Excel spreadsheet.

Tuesday, December 14, 2004

Comet Machholz

There's a comet in the sky that is brightening, and will continue to do so through January. Currently located near the feet of Orion, it is a Magnitude 5 object, just visible to the naked eye. At its brightest, it's expected to be around a Magnitude 4 object.

Comets are amazing sights to see. I missed Halley's back in '86, but I sure took in Hale-Bopp in '97. Machholz is not going to be nearly as spectacular, but it will be worth looking for in January to say the least, if only to say that you were able to pick it out of the sea of background stars.

Thursday, December 09, 2004

Kerry Absent More Than Not

Ok, I know that Senator Kerry was campaigning for presidency, which required him to be away from the Senate floor more often than not over the past year, but where I'm going to have a problem is if he receives his full salary for 2004. The law states that if a Senator is not present when Congress is in session, and he is not sick, then pay shall be deducted.

I, for one, will be interested in seeing his tax filings for 2004 when he releases them in a few months. Same for Edwards and anyone else who had any absenses from Congress.

This isn't about the Presidential Election.... This is about holding our lawmakers fiscally responsible. These are the same people who can give themselves a pay raise while the rest of the country is working on frozen salaries.

Thursday, December 02, 2004

GBPVR: First Thoughts

Despite having developed for the GB-PVR platform, I don't actually have a HTPC running yet. Well, I don't have a complete one running with a remote control, etc.

I currently have a P3-800 box with 256MB and about 60GB of combined HDD space. It has a SB-16 sound card, and a WinTV PVR-150MCE capture card. Right now, there's a SIS AGP video card in there.

It took a little bit of trial and error to get GB-PVR to work on this interim setup. One lesson learned, and I'm not sure if it was made clear in the documentation or not (probably was, but I tend to skip over important details), is that you need a MPEG-2 decoding software (aka, a software DVD player that integrates with Media Player, etc) like WinDVD, etc. Or at least, GB-PVR started playing for me after I installed one.

In the current set up, I still have intermittent problems with live tv and watching video in GB-PVR, but scheduled recordings fire off without a hitch. I'm proud to report that I was able to record Ghost Hunters on SciFi last night during the busy Wednesday Night 9PM timeslot and play it back later (through Media Player, but it was still a great picture).

I'm sure my issues are related to the fact that Sub just put in support for the WinTV 150MCE, and probably issues related to the video card (it's not supported by Media Center, so it's going to get upgraded sometime). I won't rule out my software configuration either.

Annoying Website Feature

Here's something that annoys me, and I run into it using of all places:

Some sites take a while (meaning >1 second) to load, but the browser renders the page and its form elements while it's still loading. Then, there's a "onload" event handler for the body tag that sets the focus to a particular control.

That in itself is not the annoying part, but my bank and both do this on the login screen.

So, what happens is that I type my username, hit Tab, and then start typing my password. Well, in the middle of the password, that "onload" handler fires off, moving the cursor back to the username box, and it usually ends up with the latter half of my password being typed in clear text within that username box.

Monday, November 29, 2004

GBPVR Widgets

As I began writing plugins for GB-PVR, I noticed that some things were being done in code that seemed to be repeated over and over between the plugins (and even within a plugin). Specifically, the creation of listboxes within a plugin seemed to really bloat the code, because the plugin author has to maintain the list, handle navigation, and then render the list.

So, I thought it would be handy if plugin authors could have a reusable library of widgets (controls, functions, data structures, etc) that would handle a lot of the harder stuff, and allow the coders to really concentrate on the "business" logic.

A design challenge was how to make these things skin-friendly. Sub has put a lot of effort in making GB-PVR skinnable, so I want the widget controls to make it even easier, if anything. I decided that the controls themselves would not be skin-aware. That is, they have properties like "Font", "BackgroundColor", etc, that the MenuTask item (a.k.a., the plugin) will control. In this way, someone could use a widget control "out of the box".

However, by adding a layer between the MenuTask and the WidgetControl, I can have a totally skin-aware container to hold the controls, and offset some of the user-interface functions (like navigation, focus handling, messaging, etc) to this middle layer. I'm calling this layer the WidgetForm, and it will also have the ability to deserialize WidgetControls from XML representations. This will hopefully enhance the skinning (by giving the ability to totally change control look-and-feel outside of code), and what's even better, is that it could be extended to allow for some design-time manipulation of the controls (i.e., a skin designer).

I've started a Sourceforge project to contain this effort. For now, I'm taking on a lot of the design and development in order to establish the initial direction of the project. But, once I have a solid start and a beta release, I'll gladly give up control if a team wants to continue to expand the library.

I welcome any .NET developers to join the development team. I've brought Jorm on to assist when he's got time (he's already helped me test how CVS works). Just shoot me an email or PM on the GBPVR forum, and I'll give you details.

Tuesday, November 23, 2004

Another Topcoder Challenge

Well, I did a little better this time around. For the longest time, I was actually in first place within my room. And then the system testing took me out (dropped me down a few positions).

Actually, I was a little careless in my unit testing and didn't test the simplest test that they provided. And wouldn't you know, that's what took me out.

The challenge problem dealt with parsing an English sentence and then translating it into some other language. So, a sample sentence might be "The dog jumps to the cat". In parsing this, my code needed to recognize that "The dog" was the subject, "jumps" was a present-tense verb, and "to the cat" was an objective preposition (or something like that) with "the cat" being the actual object. I would then have the components needed to perform the translation logic.

So, I tokenized the sentence into a string array, which worked fine. I then methodically determined the subject, verb, what kind of subject, the tense of the verb, etc. I also had code to handle the object, but this was optional data per the problem description.

At some point in the coding, I inserted a line of code to try to get the object by index number. In the above sentence, my code would do something like: obj=words[5] (and then obj would equal "cat").

Well, turns out that I inserted this line before my code that checked if there were more tokens (meaning, if there was an object). So, the test data was something like "Jason codes", and I was trying to perform: obj=words[2]. Since there's only 2 elements, index 2 (which would be the third element) is out of range.

Scoring is based on how quickly you submit a solution that compiles, so that's why I was pressured to not perform all example tests that they provided. I'm kicking myself now, because instead of losing another 10 points or so for the time that it would have taken me to run the last simple test, I lost 600 points (or so) for the entire problem.

BLAH! (kicking myself)

Wednesday, November 17, 2004

ILWWCM 2.0.1

I began working with ILWWCM 2.0.1 this week. I can't believe that they call this thing a production-level content management system (it feels very much like a beta product, and is limited in so many ways).

Setting it up was a little bit of a hassle. At least for me, Mr. Microsoft, who has been spoiled with Installshields for everything in the past. I had to pull out the old text editor to make a lot of configuration changes--things that I would have hoped that W.A.S. could have taken care of.

And since I installed it four different times, that meant doing the manual steps of the installation four different times. This includes copying the contents of the web-app folder into the installedapps .war folder, and editing the,, and connect.cfg files to find-and-replace about five variables to match your configuration.

I got wise after that and created a VBScript file (executed using Windows Scripting Host) to do these manual steps for me. And, thanks to the Internet, I'm placing it here for the world to use. Disclaimer: This is provided as is with no warranty or support. Use at your own risk.

Install ILWWCM into WebSphere Application Server per the IBM instructions. Some specific things that I chose to do:

context = ilwwcm
app name = ILWWCM
binding = server1 (port 9080)

When I got to the part of the installation instructions where they talk about editing the config/property files and copying the web-app directory, I just run my script. Then a restart of WAS and I was on my way.

Save this script to a .vbs file in the ILWWCM install directory (the one that has "app", "contentportlet", and "web-app" directories in it), edit the script to change the values to match the server's configuration (comments tell you what to replace), and then run the script either using wscript (i.e., double-click in Explorer) or cscript (i.e., from cmd prompt).

Tip: Copy this and paste it into Notepad, then save as a .VBS file (i.e., configme.vbs) in your ILWWCM install directory

' THAT IS REQUIRED WHEN SETTING UP ILWWCM 2.0 (and perhaps earlier)
option explicit

dim scriptpath

scriptpath = left(wscript.scriptfullname, instrrev(wscript.scriptfullname, "\"))

dim variables
set variables = createobject("scripting.dictionary")

' APPLICATIONS ARE (no ending slash)

WAS_INSTALLED_APPS = "C:\WebSphere\AppServer\installedApps\myserver"




variables("[HOST]") = "myserver"
variables("[PORT]") = "9080"
variables("[CONTEXT_ROOT]") = "ilwwcm"
variables("[WEB_APP_HOME]") = replace(WAS_INSTALLED_APPS, "\", "/") & "/" & WAS_APP_NAME & ".ear/ilwwcm.war"
variables("[ILWWCM_HOME]") = replace(scriptpath, "\", "/") & "app"

variables("file:///") = "file:" ' Per IBM documentation

' Everything that you need to change should be above this point

' Kind of messy, inefficient because each set of code is repeated for each config
' file, but I'm okay with that for now. If I get a chance to refactor, then I'll
' make this a lot cleaner.

dim fso
set fso = createobject("scripting.filesystemobject")

'--- Make sure that the samples are where they're supposed to be, else abort

if not fso.FileExists(scriptpath & "app\config\samples\") then
wscript.echo "Could not file sample Be sure that you
run this script from the root of your ILWWCM install directory."
end if

if not fso.FileExists(scriptpath & "app\config\samples\") then
wscript.echo "Could not file sample Be sure that you run this script from the root of your ILWWCM install directory."
end if

if not fso.FileExists(scriptpath & "app\config\samples\connect.cfg") then
wscript.echo "Could not file sample connect.cfg. Be sure that you run this script from the root of your ILWWCM install directory."
end if

'--- Back up any current existing config files using timestamp-based suffixes

if fso.FileExists(scriptpath & "app\config\") then
fso.MoveFile scriptpath & "app\config\", scriptpath & "app\config\" & cdbl(now)
end if

if fso.FileExists(scriptpath & "app\config\") then
fso.MoveFile scriptpath & "app\config\", scriptpath & "app\config\" & cdbl(now)
end if

if fso.FileExists(scriptpath & "app\config\connect.cfg") then
fso.MoveFile scriptpath & "app\config\connect.cfg", scriptpath & "app\config\connect.cfg." & cdbl(now)
end if

'--- Copy/Edit the config files to replace all variable placeholders with values set above

dim f, contents, v

set f = fso.OpenTextFile(scriptpath & "app\config\samples\", 1)
contents = f.ReadAll

for each v in variables.keys
contents = replace(contents, v, variables(v))

set f = fso.OpenTextFile(scriptpath & "app\config\", 2, true)
f.write contents

set f = fso.OpenTextFile(scriptpath & "app\config\samples\", 1)
contents = f.ReadAll

for each v in variables.keys
contents = replace(contents, v, variables(v))

set f = fso.OpenTextFile(scriptpath & "app\config\", 2, true)
f.write contents

set f = fso.OpenTextFile(scriptpath & "app\config\samples\connect.cfg", 1)
contents = f.ReadAll

for each v in variables.keys
contents = replace(contents, v, variables(v))

set f = fso.OpenTextFile(scriptpath & "app\config\connect.cfg", 2, true)
f.write contents

'--- Copy the web files to the web app home
wscript.echo "About to copy the web directory. After copying is complete, a message stating 'Done!' will be shown."

fso.CopyFolder scriptpath & "web-app\*", replace(variables("[WEB_APP_HOME]"), "/", "\"), true

wscript.echo "Done!"

Aurora as Seen from Satellite

This shows you how far south the auroral oval was during part of that geomagnetic storm last week.

Now, since the auroras take place in the ionosphere, which is some miles up, even though the oval was over Michigan, I was able to see it pretty high in the sky in Ohio (and it was visible further south into the Carolinas, I believe) because I'm looking into the "wall".

A lot of times, the oval will not progress any further south than Ontario or the UP , but you might still be able to see it low on the horizon if you're in dark sky Michigan (and know what you're looking for).

Monday, November 15, 2004

IBM Thinkpad R51

Finally, after using an old Gateway 9150 for five years, my company provided me with a new laptop. I've never been a fan of the Thinkpad, but this machine might just change my mind.

The quick specs:

Series: R51
Type: 1836
Processor: 1.6GHz Pentium-M
HDD: 60GB 4200RPM
Display: 15" SXGA+ TFT; ATI Radeon 9000 w/32MB
Networking: 802.11b/g; 1GB Ethernet; Modem
Media: DVD/CD-RW
Ports: USB, Firewire, S-Video Out, PC-Card

Now, perhaps I'm now spoiled since my frame of reference is an obsolete PII-400 with 256MB RAM and no working peripherals, including the keyboard. But this thing rocks.

One feature that so far has proven itself quite useful is a small LED that when activated, illuminates the keyboard. While not all that bright, it actually helps a lot when using the laptop in the dark (i.e., on your lap while watching television at night, or while riding in a car at night, etc).

Not that it's directly related to the Thinkpad, but I'm also currently using VirtualPC to create sandbox environments to isolate my development tools. Now, granted, I won't be able to run a lot of different VPC's at the same time with only 1.5GB of RAM, but I can keep a cleanroom onhand for testing, etc, while not polluting my main environment with a bunch of ad hoc software installations.

Tuesday, November 09, 2004

Active Week for Solar Activity

Again tonight, we were blessed with an active Aurora, though at the moment, it's little more than a glowing green fog in the northern sky.

At around noon my time, the first of two distinct shockwaves from CME's impact the Earth, which initiated a strong geomagnetic storm (Kp of 8). The second shockwave took the Bz component northward, and it remained that way until after darkness fell here. Then, around 8:30PM EST, the Bz component measured by the ACE spacecraft went south, giving me about 30 minutes go get out to my dark spot to observe the aurora.

We also had two major flare events occur back at the Sun. One, which happened minutes ago as I write this, was an X2 to X3 event, which likely has a CME associated with it that might have an Earth-directed component (if only a glancing blow, since sunspot 696 is nearing the limb). Give it maybe 3 days for travel, and that means that Friday night/Saturday morning, we'll have more Auroras lighting the sky. Though, I'm not optimistic about having clear skies when it arrives (but, so far, the WeatherChannel is predicting no clouds on Friday night).

Here's wishing you clear skies!

Monday, November 08, 2004

Very Active Auroras

My wife woke me up around 2AM. She had stepped outside, and saw for the first time the amazing pulsating auroras that lit up our skies as an Extreme level geomagnetic storm continues on. Despite partly cloudy skies, there were enough holes to be able to tell that the whole northern portion was alit in green, and pulse-like waves of colors rippled overhead and to the south.

I took her out to see the Northern Lights last year, but despite vivid reds and greens, the display that she saw didn't have much movement like we're seeing right now.

Perhaps now she won't poke fun at me when I chase auroras in the future. ;-)

Sunday, November 07, 2004

Cool Northern Lights Display

I just got back from observing the Northern Lights from a dark dirt road near Bowling Green, OH. It was impressive in the fact that it's been a year since the last really good display.

I observed curtains of light and rays. Colors were mostly green, with a little bit of pink (red) towards the top of the display. Activity extended from maybe 10 degrees above the northern horizon up through Cassiopea.

Even now, as I return home and am surrounded by city lights, I can make out a difuse green glow in the northern sky. It's a breathtaking sight if you've never seen it before.

Auroras are Back!

After what seemed to be a year's lull for me, the first major solar wind/geomagnetic activity is currently buffeting the Earth as a Coronal Mass Ejection's event horizon has passed by us and has consequently turned the IMF southward.

To be accurate, there were probably other events in the past year, but here in NW Ohio, it seems that every geomagnetic storm powerful enough to produce the Northern Lights this far south usually occur during total cloudovers. But not so tonight!

Right now, solar wind speeds are in the high 600's, the IMF is pointing south at around -40, and the hourly KP is going to be nearing 7. All perfect conditions that indicate that I should be able to see something once it gets dark enough.

My sources of data for current conditions:

Solar Terrestrial Dispatch
Space Weather Now

What's cool is that more CME's are coming our way, so if the clouds stay away, it could be an exciting week!

Saturday, November 06, 2004

Solitaire Plugin for GB-PVR

My second attempt at plugin development for GB-PVR was successful in the form of a Solitaire game playable entirely from the remote control (assuming that the remote has buttons that are mapped to the PC's arrow keys, Enter, Escape, and Zero key).

You can download the plugin from the GB-PVR Plugins page. The source code will probably be released later after I can do some cleanup. If you're really desperate, just use a .NET Reflector to disassemble it (I didn't obfuscate the code).

At Last!

Kind of hard to maintain a blog when the Blogger post page won't let you in for a couple days.

Tuesday, November 02, 2004

Search from Address Bar Fixed

As previously mentioned, my Internet Explorer Address-bar searching functionality got hijacked, and was not restored after running Spybot Search and Destroy.

I found another free tool called HijackThis that was able to restore the search functionality as well as report other suspicious system settings.

I would warn that HijackThis really isn't for a novice, because a lot of what was reported was legitimate for my particular system. But it's a lifesaver just the same.

No Intimidation Witnessed by This Voter

This morning, this Ohio Voter went to the local precinct's polls and cast a vote. And you know what? Despite what the ass known as James Carville is currently spouting off on CNN as I type this, there was absolutely no feeling of intimidation, and it was not a hostile environment either inside or outside the building. But, then again, I don't think that Mary Poppins and Dick Tracey was registered in my precinct.


Where does all of this spyware come from? All of a sudden, I started getting all kinds of popups on my computer and my search-from-address-bar in IE went to Shopnav (bastards!). I'm careful and knowledgeable, but somehow, this crap got installed on my machine.

It's nothing that Spybot Search and Destroy couldn't fix. But even after that, my IE search was left using "DRSN Search". BLAH! UPDATE: See this blog entry for how I fixed the DRSN issue.

Monday, November 01, 2004

Lotus Notes Still Sucks

The Achille's Heel of Lotus Notes still remains that ID file scheme that they use to protect your identity while using the Win32 client.

The Notes ID contains your password, or rather, your password unlocks the ID file (and all of the certificates contained within). So, it is the key to your identity.

The problem is that anyone with an old ID file and the password for that file can likely log in as you, modify your mailbox database, add agents signed as you, etc. Notes administrators, wanting to protect against accidental loss of the ID file and against a user forgetting their password will often ask for a copy of the current ID file and the password to unlock it.

I can think of no bigger security risk in todays world than this! Yet, it's perfectly acceptable in the Lotus Notes community.

What's worse is that often, an employee's job is at stake based on how they use company property (i.e., email). So, if I told our top clients to "F--- OFF! We don't want your business, and our CEO is a c---sucker" then I probably would be fired. Well, what's to stop an old administrator who leaves the company (or is forced to leave) from impersonating me and doing just that? Or anyone with a grudge who happened to come across the password information one day?

Or, what's to stop someone from creating an agent in our CEO's mailbox that blind copies all email sent and received to a gmail account for offline reading? Since they could sign the agent as that user, the user would not get a security warning when the agent executes.


Friday, October 29, 2004

GBPVR Plugin Modification

I worked on my first plugin for GBPVR. Actually, to learn about the plugin architecture, I took the Comics plugin (used for viewing syndicated comic strips on your TV) and modified it to chiefly add a zoom and pan function (otherwise, it gets hard to read comics on a television).

For me, the rendering (where all the hard work is done) is pretty easy, since I've used GDI+ quite a bit in the past.

I emailed it to "Sub", the author of GBPVR, and he put it up right away. So at least I've got that going for me... which is nice.

I'm brainstorming now for what other useful information could be accessed from a television and remote control environment.

Air Force One in Toledo

President Bush visited NW Ohio today.... again....

As a followup to my post a couple of days ago, this time Air Force One was the normal B747 (28000 or 29000). So, perhaps there's a jet that the President uses when he needs to get onto a short airfield, or maybe he has one just for the campaign. But, in either case, I haven't found any mention of it.

So, for the 4th time, I got to see Air Force One flying after it took off from Toledo Express. The first time I saw it was a couple days before 9/11.... hopefully this isn't an omen since the election is only a couple days away.

Thursday, October 28, 2004

Internet TV

Slashdot had an article talking about Internet Television. This got me thinking about something that I wished was available, but probably will never become reality due to local market affiliation, etc: Watching real/live network television feeds via the Internet.

A year or two ago, I found myself working late into the evening on a lot of nights. Normally, it wouldn't bother me, except this one Thursday night meant that I would miss a new episode of Friends.

I would have loved to have had access to a video stream of the live East Coast satellite feed, even if that meant suffering through the network commercials.

Hopefully something like this becomes a reality, but probably won't because local television markets would lose money somehow.

New Presidential Aircraft?

Yesterday, President Bush made a campaign stop in Findlay, OH. What I found interesting was when the local news channel showed footage of Air Force One taking off and/or landing at FDY.

UPDATED: I found a link to the news footage. WTOL carried the story--look for the video link on this page that says "Bush In Findlay" (it's javascript, else I'd link it here).

FDY does not usually handle heavy aircraft traffic like a B747. But, did my eyes deceive me? Yesterday's Air Force One was not a B747! The aircraft shown on the news only had two engines (one on each wing). And it did not have the "2nd story" hump in the forward fuselage.

I didn't get a good look at it, but I don't think it was a B737 because it didn't appear to have the flat underside of the engine. It if was Boeing, then I would guess that it was a B757 or B767 (I still can't recognize those on sight, and don't think they have any shorter runway requirements than a 747).

Whatever it was, it was light enough to land on a 6500' runway, and from the angle of the news shot, it appeared to be in presidential colors. (Note that the nearest commercial airport to Findlay is TOL, which has a 10600' runway that lands somewhere near 20 DC-8 Heavies nightly, and semi-regularly lands B747's. This is usually where the President flies into, and affords me the opportunity to see Air Force One live as it flies the departure pattern over my house)

Wednesday, October 27, 2004

Topcoder Challenge 217

I participated in the Topcoder Challenge tonight. In case you don't know what that is, it's a competition where a bunch of programmers get together in an "arena", are given three problem statements of varying difficulty, and must develop a solution for each problem that provides the correct output for a given input.

I don't think I'm allowed to discuss the problem statements here, so you'll have to visit the site, load up the competition arena program, and view the practice rooms (which have problem statements from past competitions). You'll need to create a user ID on the site.

Anyways, I've always considered myself a good programmer with good problem solving abilities and who brings innovation to my job. Let me tell you, there's nothing like going head to head with fellow geeks under a 1 hour (or so) time limit to make you humble (there are a lot of talented folks out there, and what's pathetic for me is that I bet a bunch of them are under the age of 16!).

In the past, I've usually screwed up with really minor mistakes. They use an automated test procedure to feed your program input and check the output to see if it's what's expected. If any test fails, you get no points for it. Otherwise, your points are based on the difficulty of the problem minus some factor for how long it took you to code it. If you're fast, you get more of the original point value (so the problem might be a 500-point problem, and if it takes you 10 minutes to write the program, you might end up with 350 points).

Tonight, I managed to submit solutions to 2 of the 3 given problems (then I ran out of time). The cool thing about this competition is that you can look at other people's solutions when it's over, and see how it could be done better/faster.

I spent the most time on the hardest problem tonight, and my solution involved some trigonometry to calculate lengths of sides of triangles. Looking at other (better) programmer's solutions, I see that my trig calculations were totally unnecessary because a simple iterative comparison worked just as well for what the problem was asking.

This is a great way for a coder to hone their skills (working in business consulting doesn't let you fully exercise your mind like the Topcoder Challenge does).

WinTV PVR 150

I took a leap of faith and ordered a WinTV PVR-150MCE today. This is the newest card in the WinTV PVR series, and is comparable to the PVR-250 (the standard workhorse in the HTPC market). It uses a newer chipset (Conexant -416), so a lot of PVR software is not compatible (like, I don't think at the time of this writing that MythTV would support it). But, it looks like GB-PVR will support it at least in the next release, if it doesn't already.

The card has the FM Tuner (I'm thinking Tivo for Radio, so I can listen to Bob-and-Tom later in the day), Composite and S-Video In, TV Tuner, and L/R Audio In.

I picked up the card for about $75 from PCAlchemy. I like this supplier because of their pricing and the fact that they accept PayPal. I chose UPS Ground shipping for $8 more, and should expect to see it about the middle of next week. Stay Tuned!

Greeting Card Scheduling Service

It never fails that I usually only remember special occasions (birthdays, anniversaries, mother's day) on that day. And by that time, it's too late to send a card in the mail.

So here's a good business idea for someone: Sell greeting cards with a scheduling service.

Here's how it would work: People could shop online for greeting cards. When they select one, they specify who to send it to and when it needs to be delivered by. Then there's a couple options of how to handle that delivery.

  1. Have the person's signature and/or personalized message be printed onto the card.

    Pro: No more involvement after the purchase is complete
    Con: Not very personal
  2. Have the person submit a scanned signature and/or personalized message (think handwritten) via the Internet or fax to be printed in color onto the card.

    Pro: No more involvement after the scanning and upload; Appears personalized
    Con: Depending on image quality, the receiver might notice the pixelation and become offended
  3. Mail the card and an addressed/stamped envelope to the sender where they can then write a message on the card and put it in the mail for delivery.

    Pro: The sender is reminded in enough time to send the card out; Little effort involved because everything comes to the sender
    Con: There's still manual effort involved, and the responsibility for re-mailing the card is placed on the sender

Now, I'm sure that there's people who think "How lazy can someone be to not want to fill out a simple card?" To that, I answer that it's not laziness. My life is so hectic that little things are often ignored or put off until it's too late. Also, not everyone thinks and acts the same, so what seems simple and effortless to one person might be a huge burden to another. Your strength is my weakness, and vice versa. Be quiet or I'll remove you from my automated greeting card list.

[followup! I checked Hallmark's site, and they do offer a scheduling and mailing service for about $0.50 or so more. So, once again, a day late and dollar short....]

Tuesday, October 26, 2004


In my saga to build a PVR (or actually, I guess the proper acronym is HTPC), I'm starting to lean towards using Windows instead of Linux, at least for my first PVR. One promising piece of free software (free as in beer) is GB-PVR.

As for hardware, it requires mpeg encoding to be performed on the card, as I understand. This rules out a lot of the really cheap cards that use BT878 chipsets. However, there appears to be a lot of cheaper cards available with onboard hardware encoding and Windows driver support (this is where Linux has the problem--most manufacturers don't develop Linux drivers, so most hardware is not supported). Since this first one is more or less a prototype, and I don't have a lot of disposable income to throw at it, I'm probably going to have to use cheaper hardware... as in no more than $50 is what I'm hoping for.

The other thing that looks promising about GB-PVR is that it's extensible via .NET. Being a .NET developer, this piqued my interest.

I'm not absolutely in love with some of the look and feel. Perhaps it's skinnable, or otherwise can be modified. But, since the core of GB-PVR is not open source, I don't know how much it can be changed.

I'm still weighing my options.

CBS News Does It Again

I've tried to stray away from active political commentry in this blog, but damn does CBS piss me off. The current allegation being circulated is that this week's hot story about missing explosives in Iraq was planned to be aired on October 31 [edit: corrected date] by CBS, right before Americans headed for the polls in the presidential election.

As we found out, this is really old news. The cache of explosives was actually missing from the site before the 101st Airborn got to the site (of course, the liberal media and the Kerry campaign continue to distort this fact, and make it seem like our Army was supposed to be guarding the stuff, and someone fell asleep on the job and allowed 350 tons of explosives to be trucked away).

Luckily, the NY Times screwed up and "broke" the story earlier than what CBS planned. The people were given the opportunity to actually verify facts before making a hasty ill-informed decision that may have changed the election outcome.

In my opinion, CBS's motives border on being criminal. Though lives were never at stake, their motives were the very same as the Madrid bombings--to create an atmosphere of panic in order to attempt to sway an upcoming election.

Just one more reason why CBS's credibility is continuing to go down the crapper. And you would have thought that they would have learned from that Dan Rather Memogate fiasco.

Nothing on TV

I think I'm spoiled. It used to be back when there were only 4 channels available to me that I could always find something interesting on television to watch. Now that there's hundreds of channels, I swear that every one of them carry dull programs, and I can't seem to find anything interesting at all. Even the movies that HBO and Showtime play seem to suck.

Is the real reason because of a lack of competition for programming to get airtime? I mean, in the past, someone had to have a quality show in order to get fit into the on-air programming schedule of a network. Now, all it seems that all they need to do is take their show to the specialized niche channel for that show's topic (i.e., cooking show would go to Food Network, home improvement show would go to HGTV or TLC, etc).

So the natural selection process that used to allow the strongest program to survive has fallen to the wayside. Now every gimp of a program has a chance, and most of the seem to air at the same time across all of the networks. The result: I channel surf for the entire 30-minute block of time that they all air, and conclude that "nothing's on".

Or, do I perceive this to be the case because I know that I have hundreds of options out there other than what's on the current channel.

Either way, it's exactly why I need a PVR for timeshifting. I can then collect the programming that I want to watch (those few gems in the sea of boring programming) and watch them when I have time. It's letting TV come to me instead of the other way around.

Monday, October 25, 2004

Skinnable Car Dashboards

I read something the other day about Microsoft getting more involved with the automotive industry, as in having Windows run on automotive electronics or something (this probably wouldn't be a full GUI version of Windows, but probably more like Windows for Smartcards). This made me remember an idea that I had a while ago.

I think that car dashboards (instrument clusters) should be skinnable. The whole dashboard can be a LCD panel, and users can apply skins to change the layouts and the look-and-feel of the dashboard.

Folks good at user interface design can create new skins for dashboards like they do today for other skinnable applications, like Windows Media Player, WinAmp, etc.

I'm sure that there's certain safety factors that must be adhered to, so perhaps skins will need to be validated before they can actually be installed. But each vehicle will be supplied with several factory-provided skins.

Build Your Own PVR :: Why Tivo When you can Freevo?

Build Your Own PVR :: Why Tivo When you can Freevo?

Just found this site while researching tv tuner cards. I still like the interface that MythTV gives you, but maybe I'll find other ideas listed here.... Stay tuned for this saga...

Keeping Dogs Off My Lawn

I don't own a dog. Not that I wouldn't like to, but the idea of picking up dog feces does not interest me. Yet, all over my lawn, there's dog crap. I can almost guarantee that most of it, if not all of it, comes from my neighbor's dog that roams free.

My neighbor's lawn is pristine. Of course the dog doesn't want to release bowels there. It would rather use my lawn, then it can lie around in its own lawn without worrying about rolling in its own crap.

The grown up thing to do would be to politely ask my neighbor to keep his mutt in his own yard, or to at least ask him to pick up the piles of crap that is in my lawn. But, I think my neighbor has denial issues (he's seen crap in my yard and blamed it on other dogs), and I avoid confrontation at all costs, so I simply let the crap accumulate.

I've tried spreading some smelly stuff that dogs don't like around the border of my lawn. Do you think that helps? Nope. The dog just walks right through the invisible fence of odor without smelling around first.

Then I think, how can I automate keeping dogs off of my lawn without absolutely annoying my neighborhood, avoid lawsuits from people simply using the sidewalk, and without killing the dog.

My original idea was to have a water cannon of sorts that would somehow target the intruder and spray it with water. That sounds too complicated, and I can just see the mailman complaining when he gets soaked while crossing my lawn to deliver the mail.

Thinking more about it today, perhaps some pneumatic solution would suffice. Dog enters the lawn, then a loud rush of compressed air is released to scare it away. Or maybe it powers a ultrasonic whistle or something that, again, is intended to scare the dog out of my yard.

I would need a sensor system to detect the intrusion. Infrared lasers could be used, perhaps in the same way that swimming pool alarms use them (the goal would be the same as swimming pool intrusion alert systems, so I could borrow from that pool of technology, pun intended).

Once triggered, a solonoid would release the compressed air, which would then power the [insert dog scaring aparatus here]. After a set time, the solonoid would turn off, and the system would be armed again.

Pneumatics don't work that well outdoors in the winter time where I live, so this might just be a seasonal approach. But, I guess the goal is to train the dog to stay out of my yard, so using the system from spring to fall just might suffice.

Cut the Cord

In my family, we only use our cell phones. There's no landline coming into our house (or rather, the line coming into our house has no service).

It's scary making the move to go totally wireless, but in my case, it works well for us. It was very expensive to pay Sprint for local service, pay to have the priviledge of being able to make a long distance call, pay for the long distance calls themselves, and then use that phone primarily to take calls from telemarketers and bill collectors. And since we needed cell phones anyways, we had to pay for that service too (that's where the expensive part came from, because we were essentially paying twice for monthly phone service).

Cell phones are priced about the same as landlines, at least in our case. We have 2 phones that share the same 500 minutes, plus we have free nights and weekends, plus we have some kind of in network calling so we don't eat minutes talking to each other. Plus we get free long distance (included in the minutes), and have all of the same call waiting, caller id and 3-way calling that we had on the landline (included in the service). And to top it off, each phone has its own voicemail. And, what's even better is that there's laws or regulations or something that automatically prevents telemarketers from random calling on cell phone exchanges. All of this for about the same price that we were paying Sprint Local each month.

On the downside, we can't use services like Tivo or DirectTV that require a landline to phone home. And our friends and family need to know 2 numbers to reach us (even though our phone numbers are only 1 digit apart). And despite the fact that we absolutely love Verizon's nationwide coverage, they are kind of nazi's in regards to how you can use your equipment (i.e., my T730 has all kinds of features that I can't use because they have been locked out by Verizon).

The ironic and funny thing is that when you sign up for wireless service, they ask for a landline number that you can be reached at. ;-)

Google Catalogs

Here's a nifty idea that I just came across--Google is scanning in mail-order catalogs that you can then view online. This saves the mess of having all of the catalogs that you are interested in coming to your house, and then somehow making their way underneath the couch, where you'll only find them months later when you do housework (I'm not the only one who cleans under the couch quarterly, am I?)

The concept is supposed to use OCR to produce a searchable text of the catalogs, but in my experimentation, it doesn't work. It is a Google beta product.

I think it's just cool to be able to browse the scanned versions of catalogs that I have yet to see.

Sunday, October 24, 2004

Ashlee Simpson fallout

Last night on SNL, Ashlee Simpson was busted for lipsync'ing her performance. Actually, a technical snafu started playing the wrong song, and she became the best tranquilatist because her mouth wasn't moving, but yet she was still singing.

Normally, I wouldn't care one way or another, except that this will probably put an end to the Britney Spears-created trend of having good looks and an intensive dance routine trump the ability to consistantly sing when needed to. Even I could probably put together a compilation of decent sounding songs with enough studio time and post processing, but would people want to pay to hear me perform live? Most definitely not.

I think this is a historic moment in the overrated, overpriced world of the recording industry.

Captures of the performance can be found on

Contemporary Insanity Audio/Video Zone


Oh, and the real reason that I included this rubbish in my blog is because I missed the performance. In my right-old two-and-a-half score age, I find myself asleep long before SNL starts. That's why I need Tivo or ReplayTV. I personally can't do Tivo because we only use cell phones in my family. ReplayTV can sync guide data through a broadband connection, so if I ever decide to pay for a DVR and service, I guess that I'll need to use RTV.

But, then again, MythTV sounds very appealing. I'm going to research this more, and will post findings here. Linux in general intrigues me because it's different. But, every time that I load it up and play with it, I'm left very disappointed at how far the GUI's still need to go in order to become more user friendly, like my pal and breadwinner Windows. Though, for a specialized application like MythTV, the actual GUI is specialized, so it is probably a great fit.

PC Repair Log

I had this PC that was in a MAME cabinet. I left it running for a while, and when I came back, there was this stench in the air like a capacitor had popped, and the computer was dead. Actually, the power supply was dead.

I swapped in a new PSU, and the PC still didn't boot. The fan would spin up, but no video signal (it has an onboard video as well as a PCI video card that was compatible with DOS AdvanceMAME, but neither would put out a video signal).

The problem turned out to be the PCI video card--it must have overheated or otherwise failed, drew too much current and popped the PSU's fuse (possibly more). When I remove the card, the PC powers right up.

Saturday, October 23, 2004

Improved Rumble Strips

Rumble strips.... Those repeating grooves cut into the sides of roadways (mainly highways) to warn tired motorists when they have strayed too far and are now driving on the shoulder of the road. Sometimes they're placed before a curve or an intersection to warn the driver that they need to slow down.

Whatever the application, they all do the same thing--make your car's tires produce a loud low-pitched sound (and vibration) when you drive on them.

How can something like this be improved, if only for novelty purposes?

I remember back to high school, where my physics teacher (affectionately known as "Doc Brown") had this toy. It was basically a cup (paper or plastic, can't remember) that had a plastic strip running through the middle of it. The strip resembled a tie-wrap, which electricians are very familiar with. People who watch COPS might think that they're called disposable handcuffs. ;-)

The difference between this toy's strip and the every day tie-wrap is that the grooves and ridges cut into the strip were not equally spaced out, but rather, they were arranged in a pattern to represent an acoustic message (similar to patterns in vinyl records--you know, those 12" Analog CD's?). Would this be amplitude modulation or frequency modulation? Doesn't really matter for my point....

So, the user would use their fingernail to stroke along the grooves, at a constant speed and the cup was simply there to amplify the resulting sound vibrations that were transferred to it through the attached plastic strip. This particular toy simply said "Merry Christmas".

So, my thought is that the rumble strips on a roadway can be modified to include a modulated acoustic message. "WARNING", "SLOW DOWN", "CURVE AHEAD", "MERRY CHRISTMAS". Whatever the novelty, it might be an improvement that could offer some safety benefit.

Lucas-Lehmer Sequence

I'm running several copies of Prime95, the Win32 client software for George Woltman's Great Internet Mersenne Prime Search. Are you? It's free, works in the background, and has a monetary incentive should your computer be the first one to actually prove that a given Mersenne number is prime.

George does a good job of explaining how the Lucas-Lehmer sequence is used to prove primality of a Mersenne number (number in the form of 2^p - 1). But, I wasn't satisfied just knowing that if you iterate through a sequence modulo a Mersenne number, that you'll eventually get zero (after p-2 iterations) if the number is prime. So, I did my own investigating trying to see if there was a way to shortcut the sequence, that is, to see if we could start the sequence somewhere other than the beginning.

My investigation is documented in a post at, but I'll summarize here.

Basically, after playing with the LL sequence and different starting terms, I discovered that in order to get a zero term (the result for primality), that the term before the zero term (p-3 term) had to be +/- 2^((P+1)/2). This might be a trivial observation, but I couldn't find reference to it.

I also experimented and concluded due to lack of contradiction that composite Mersenne numbers will never have a zero term, regardless of the starting term, with the exception of a starting term of +/- 2^((P+1)/2).

So, a way to shortcut the LL sequence is to prove that the p-3 iteration is +/- 2^((P+1)/2).

Why must the p-3 term be that? That's simple to show:

(2^((P+1)/2) ^ 2) - 2 = 2^(P+1) -2= 2*(2^P - 1)= 2*Mp= 0 (mod Mp)

So, if the LL sequence must have this special term in order for Mp to be prime, then all we need to do is try to prove that there will be a natural p-4 term that will produce the value of this p-3 term....

In other words:

T^2 = 2^((p+1)/2) + x*Mp + 2 [T is the p-4 term]


T^2 = 2^((p+1)/2) + 2 (mod Mp)

This is the same thing as proving that 2^((p+1)/2) + 2 is a quadratic residue modulo Mp.

Unfortunately, this is where I stopped my efforts, because proving that a number is a QR is just about as difficult as iterating the entire LL sequence.

I'll pick this up again later.

Friday, October 22, 2004

Location stamping video recordings

It breaks my heart every time I see one of those radical groups in Iraq videotaping civilian hostages, just knowing that the beheading will come a short time later. I began to wonder what it would take to identify where a piece of video might have been recorded.

Then I remember the house where I lived during college. Four doors down was a HAM operator with a big yagi antenna sticking above his house. I think his handle was Tenderfoot, or something like that because he had a bum foot. Anyways, everytime he broadcast, he totally saturated all of the electronics in our house to the point that you could only hear his audio on the television, and if someone was leaving a message on the answering machine, all you could hear was him on the tape.

It was extremely annoying, to say the least, but shows just how susceptable electronics can be to broadcasted signals.

So, what about establishing an array of beacons in trouble areas that will emit RF energy that could interfere with recording equipment. When a terrorist videotapes their proof of life video, it becomes watermarked, so to speak, and hopefully that can be used to triangulate a general location of where the video was shot.

CRT Analyzer/Rejuvenator

Looks like I started a new trend!

One of the most useful devices for the workbench of a video arcade enthusiast is a CRT Tester/Rejuvenator. This device allows you to test the CRT of a Television/Monitor to make sure that internally, it's in good working order. I managed over the course of time to pick up three of these things, including two B&K 467's and one B&K 470.

A couple weeks ago, I decided to clean out some of the extras in my garage, and the 470 was one thing that could go (since I use my working 467 almost exclusively). So, I sold it on eBay, but instead of marketing TV/RADIO repair folk, like other people do, I went after the Arcade Collector. I spent a good deal of time preparing a lengthy description that included usage instructions, because most sellers of these things simply buy them at estate auctions and turn around and sell them, stating "I have no way to test it".

The auction was a success in my mind, because of the description, marketing to the arcade group, and also because I threw in a CR-23 adapter, which is used on the majority of popular arcade monitors (I picked up the CR-23 a few weeks back for $5). I realized a return on my investment, and came out ahead, even with losing a little bit of money on the fixed shipping cost that I quoted in the auction.

Well, this week, I'm noticing a lot of people selling rejuvenators on eBay who are targeting.... yup, the arcade group. One guy (QUARTERMANCO) even ripped off my auction description almost verbatim. Granted, he added a few words and took out some too. I complained a little on RGVAC, and his auction ended early for "error in description". Now, I didn't really mean for him to shut down the auction, but I was a little taken back by someone using my unique marketing scheme without at least crediting where the description came from.

So the description doesn't get lost once the auction gets out of eBay's archive, here it is:

Here's a WORKING B&K 470 CRT Analyzer/Restorer (Rejuvenator) from my spare collection. I verified that the unit works by analyzing and restoring a Wells-Gardner K4900 that was in my shop. It does not include all of the default adapters, and is missing a knob (actually the center function selector knob is missing, but I moved the heater voltage knob over, as is visible in the pictures). Also, there's typical cosmetic flaws, like foam rot in the adapter storage.

What is included is the all-important CR-23 adapter, which fits most arcade monitors like the G07, K4600, K4900, 25" K7000 (not the 19", which needs a CR-31), and the Sanyo 20EZV just to name a few. This piece is worth $40 new, and can sometimes be found here on eBay by itself or part of a collection of adapters.

I work on a lot of coin-op arcade monitors, and it surprises me just how many come in with weak emissions. Sometimes, the picture will be dim and it's obvious that the emissions on all guns are low. Other times, there might be a missing color (or one color significantly dimmer than the others). Still other times, they will have a decent picture, but the analyzer will show that they are actually bad.

Arcade monitors see a lot of abuse in that they are left powered on almost all day every day. It seems that the larger tubes (25" and bigger) are the most consistent in needing restoration. And if you happen to lose a color due to a dead transistor on the neckboard or something, you can almost guarantee that the corresponding gun will have weak emissions after the problem is fixed (especially if the monitor was left on for a period of time after the failure).

What the B&K 470 will do is analyze the emissions of each gun (red, green, and blue) and show you via a meter if they are good or bad. It will also let you check tracking, which is how each gun operates compared to the other two, and will check for leakage, which is caused by tiny short circuits inside the tube, specifically H-K (Heater-Cathode) and G1-K (G1-Cathode) shorts.
If there is a problem, then there are restoration modes that allow you to attempt to correct the problem, which includes removing shorts, clean-and-balancing, and full rejuvenation. For the most part, all that I ever have to use is the clean-and-balance function, which uses low-power to try to clean up a gun's emissions. G1-K shorts can be fixed by this unit, but H-K shorts cannot.

Here's how a typical restoration session goes for a CRT using the CR-23 adapter (voltages used in this example may vary for other CRT's, so be sure to look up the numbers for the CRT you are working on before starting):

  1. Start with the function selector set at the "Power Off" position, and the monitor unplugged.
  2. Attach the CR-23 adapter to the 470's cable, then connect the CR-23 adapter to the neck of the CRT. Set the heater range to "4-7".
  3. Turn the function selector to "Set Heater".
  4. Turn the heater voltage dial until the needle on the meter points to "6.3" on the HTR scale.
  5. Turn the function selector to "LEAKAGE-HTR".
  6. Turn the gun selector knob to each color, and observe the meter. The needle is supposed to be in the yellow "OK" section on the Leakage scale (otherwise, you have a H-K short).
  7. Turn the function selector to "LEAKAGE-G1".
  8. Turn the gun selector knob to each color, and observe the meter. The needle is supposed to be in the yellow "OK" section on the Leakage scale (otherwise, you have a G1-K short).
  9. Turn the function selector to "SET G1 VOLTAGE".
  10. Turn the G1 Voltage dial until the needle on the meter points to "50" on the G1 scale.
  11. Turn the function selector to "SET G2 CUTOFF VOLTAGE" and the gun selector to "RED". Start with the Red Cutoff knob turned fully counter-clockwise. Note where the needle is pointing (in case it does not start on a tick mark). Slowly turn the Red Cutoff knob clockwise until the needle moves one full tickmark on the top scale (if it started in between two tick marks, make sure that it ends up in between the next two ticks)
  12. Repeat the previous step for the Green and Blue guns by first turning the gun selector to the color, and then adjusting that color's cutoff knob.
  13. Turn the function selector to "READ EMISSIONS".
  14. Turn the gun selector to each of the colors and observe where the needle points on the meter. All guns should have emissions in the green "GOOD" section.
  15. Turn the gun selector to the color that had the strongest emissions.
  16. Turn the function selector to "SET COLOR TRACKING".
  17. Turn the Tracking dial until the needle points to "SET TRACKING" on the meter.
  18. Turn the gun selector to each of the other colors and observe where the needle points on the meter. All guns should fall within the yellow section.
  19. If a gun was weak in either the emissions or tracking, select that gun with the gun selector, then turn the function selector to Clean-Balance.
  20. Wait 20-30 seconds for the heater to completely warm the cathode, and then press and hold the rectangle Restore button.
  21. Watch the meter, and when the needle falls into the red "BAD" section, release the button. (If the needle does not move after 30 seconds or so, go ahead and release the button anyways--you might need to use Rejuvenate instead of Clean-Balance).
  22. After restoring a gun, go back to step 11 and reset the cutoff for all guns, read emissions, and check the tracking. Clean/Balance other guns as needed.

New Blog

Starting a new blog to be used as a general purpose/random thoughts journal. My interests include .NET programming (C#), Coin-Op Arcade Games Repair/Resoration, Television/Monitor Repair, MAME, Number Theory (Factorization and Primality), Solar Activity and The Northern Lights (Aurora Borialis).

Like anything else I do, I hope that I stick with this for more than just a week. ;-)