Wednesday, December 05, 2007

wxPython - Cleanup resources OnDestroy

Within your __init Method

self.Bind(wx.EVT_WINDOW_DESTROY, self.OnDestroy)

Then add OnDestroy:

def OnDestroy(self, event):
## clean up resources as needed here

Wednesday, November 21, 2007

Storing Windows Application Data Properly

Use SHGetFolderPath for backwards compatibility, SHGetKnownFolderPath for Windows Vista and beyond.

Additional reference:

KB 310294

Tuesday, October 30, 2007

DIG MX Records

Query mx record using default DNS server for operating system:

dig mx

Specifying a DNS server to query:

dig mx

Friday, October 05, 2007

wxPython - Multiple Panels Without Tab Control

Wanted to display multiple Panels, one at a single time the rest hidden. Without showing the tabs. Found this gem on the wxPython news group from Robin Dunn:

to have no tabs at all but still show a page window? If so, then
you can do that simply but not using the notebook at all when you don't
want the tabs. Just put all the page windows in a box sizer, each with
proportion=1 and wx.EXPAND flag set, and Hide() all but the one you want
to be visible. If you need to change which is visible then Hide() the
current one, Show() the other and call sizer.Layout().

Wednesday, October 03, 2007

C# SqlCommand

Dynamic SQL queries in ADO.Net. How to bind dynamic parameters to a query and avoid concatenating strings. Avoiding problems with cross site scripting attacks. Good link SqlCommand bind parameter info.

SqlCommand cmd = new SqlCommand( @"SELECT something, anothervalue FROM sometable WHERE something > @param1 AND anothervalue > @param2" );

cmd.Parameters.AddWithValue("@param1", "2007-10-02");
cmd.Parameters.AddWithValue("@param2", 5678 );

SqlDataReader reader = cmd.ExecuteReader();
while ( reader.Read() ){
Console.WriteLine( reader["something"].ToString() );

Tuesday, October 02, 2007

C# DateTime to String conversion

Found this helpful link on C# DateTime to String Conversion.

Issues with WebDav on Windows Vista

Had to install this patch for things to even work.

Thursday, August 30, 2007

Work vs Play, Boss Hoss Saves the Day

Ever feel this way? Remember those old Dukes of Hazard movies, where Boss Hoss sleeps all day? Boss Hoss has to be the worse boss of all time. Got to love those Bosses that sit on their rumps, or play all day while their employees slave away.

Tuesday, June 26, 2007

2 Linux Tips

  1. Use ntpdate to synchronize linux server with a public ntp server

    Do it automatically within crontab:
    0 3,9,15,21 * * * /usr/sbin/ntpdate -u | logger -t NTP

  2. Change the default editor in Ubuntu to VIM

    sudo update-alternatives --config editor
    Select VIM and say farewell to Nano.

Monday, June 25, 2007

Greek Alphabet

Ah, the Greek Alphabet. I just hate it when a book uses a symbol from the Greek alphabet, yet forgets to teach the reader how to pronounce the symbol. So here it is the Greek alphabet and English equivalent pronunciation:

(One may argue that any book that uses the Greek Alphabet is absolutely boring and I would have to agree.)

alpha, beta, gamma, delta, epsilon, zeta, eta, theta, iota, kappa, lambda, mu, nu, xi, omicron, pi, rho, sigma, tau, upsilon, phi, chi, psi, and omega.

Wednesday, May 09, 2007

TurboGears, MySQL Quirk

From the TurboGears FAQ. My comments injected in bold.

Why does my application work fine until it's idle for a while then the next request returns a "500 Internal Error" response?

Are you on mysql? If so, this is probably the mysql time out. Because cherrypy is a long running process it doesn't make a new connection on every page load. After a period of inactivity the mysql server will timeout the connection. This causes an error the next time the application attempts to use the connection. Why doesn't it attempt to reconnect before throwing an error?

One solution some people use is to set up a cron job that every so often wgets a page from the application that will cause a database query. There is also apparently a mysql wait_timeout setting that can be adjusted to stop the connection from timing out.

I noticed this Quirk/Bug on a TurboGears site I've been working on. This is really annoying.

Monday, May 07, 2007

Web Accessibility

The all to neglected topic of Web Accessibility. Found this W3C reference on Web Accessibility.

SQLAlchemy Supported Databases

Object relational mappers such as SQLAlchemy make database access so much easier. SQLAlchemy is my personal favorite. Below is a list of SQLALchemy supported databases.

Supported Databases

Wednesday, May 02, 2007

Wednesday, April 18, 2007

Paging Dr. Watson Postmortem Debugger

To enable Dr. Watson: drwtsn32.exe -i

To configure Dr. Watson to generate a mini dump file, launch drwtsn32.exe without any args. Check mini under Crash Dump Type, and make sure it's set to Create Crash Dump File.

Using Dr. Watson for postmortem debugging:

Tuesday, April 17, 2007

Alternative to LD_LIBRARY_PATH

Trying out pymssql example. After installing the prerequisite freetds. I got this fun error: ' cannot open shared object file'. Which ment it didn't like where my file was installed. So I had to update the load library path. Instead of something like this: export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH. I edited '/etc/' adding /usr/local/lib. Then I ran ldconfig. No more error.

Wednesday, April 11, 2007

Ricoh, IBM deal not all roses

Ricoh's purchase of IBM Printer Division what does that mean for IPDS printing?. Ricoh keeps relationship with Intermate giving them time to integrate with IBM code at later date. What they neglect to mention is that if you buy an InfoPrint now and want IPDS support you have to purchase an IPDS dimm. You make ask, whose code is on that dimm? From what I've seen, it is Intermate's (InfoPrint owners pop out your dimm and look for the word copyright Intermate hidden on the dimm).

So all this talk about native IBM IPDS support seems a little silly. Yes Ricoh will eventually gain control of the AFP/IPDS code that is used by PSF (kind of like the print spooler on windows, but specific to IBM's System i or zSeries services). But that's not the code embedded on the printers.

read more | digg story

Here's some links to other players in the IPDS market:

Sunday, March 25, 2007

Poem to Read at a Funeral

Here is a nice poem to read at a funeral or for a funeral service.

Crossing the Bar

by Alfred Lord Tennyson

Sunset and evening star,
And one clear call for me!
And may there be no moaning of the bar,
When I put out to sea.

But such a tide as moving seems asleep,
Too full for sound and foam,
When that which drew from out the boundless deep
Turns again home.

Twilight and evening bell,
And after that the dark!
And may there be no sadness of farewell,
When I embark;

For though from out our bourne of Time and Place
The flood may bear me far,
I hope to see my Pilot face to face
When I have crossed the bar.

Sunday, March 18, 2007

How to Check My Charter Email

Wordtracker is your friend. How else would you find out about "How to Check My Charter Email". Started a new blog about email. This one is about forwarded email. The obnoxious kind that friends and relatives tend to send you. Haven't been bold enough to reply with "REMOVE" in the subject line to any of them yet. So I waste my time documenting the emails at my forwarded email website.

new info on windows vista

Bought a new HP desktop over the weekend. The HP Pavilion Slimline. It came with Windows Vista Home Basic Edition preinstalled. Nothing fancy. It came with an AMD Sempron processor, 512 MB ram, 200 GB Hardrive, Modem, Ethernet, and Wi-Fi. I was one over by how tiny the box was. Now this is probably not new info for anyone, but Windows Vista sucks. It took forever, and I mean forever to do anything on my new computer. Now I know I don't have much ram, the processor isn't the greatest. But hey, it should at least be faster than my Pentium II I got hiding in the closet.

So my solution, install FC6. Would have went with Ubuntu, but figured if I was getting rid of Vista why not try some of the other linux distros before committing to just one.

My first impressions, it didn't auto detected my lcd monitor correctly, I had to do a ctrl-alt-backspace to kill xwindows and use system-config-monitor to get things right. Which is obviously not optimal. But speed wise, man FC6 is beating the pants off of Vista. I can actually use my computer for something. Granted, when you first get a new computer, especially from one of the bigger chains its full of crappy software that bogs it down and hinders performance from the get go. But hey, right out of the box when you get a new computer it should be fast, not slow and Vista, like it or not, is definitely SLOW.

tim mcgraw last dollar

a little bored, so here's some music. Tim Mcgraw's Last Dollar

Monday, March 12, 2007

Success Strategies for Optimizing Online Press Release Campaigns

By Craig Cannings

I was recently having breakfast with a good friend of mine who is in management with a large Brick and Mortar Company and the topic of Press Releases came up in our conversation. My friend questioned the real value of this medium and pointed out that Press Releases, while certainly apart of his company's communication strategy seemed to have little impact or value on their business as a whole and were rarely picked up by major news publications. Well, in my last online press release campaign, I can honestly say we did not receive an enthusiastic call from the Business editor of USA Today or the New York Times or even the Grand Forks Herald for that matter!
However, this recent Press Release campaign did result in a top 5 listing for one of my keywords in Google, multiple top 20 listings, strong placement in Yahoo and Google News, many new quality in-bound links and a significant íncrease in our overall web visibility. The campaign proved to be a roaring success in driving quality traffíc and gaining great exposure for our site, even though we were largely ignored by all of the mainstream news publications. So, how did we do it?
Before I outline the key steps we took in our own online PR endeavors, let's first review the key benefits of an optimized Press Release campaign:
• High Quality One-Way Links to Your Website
A well-constructed Press Release campaign can result in multiple in-bound links from various sources such as industry-related websites, news and media sites, many of which have a decent Google Page Rank. Given that our business was launching a new website, we literally went from zero exposure to hundreds of one-way links and listings within a couple days.
• Top Listings in the News Search Engines
An optimized press release may see top placement in many key news engines such as Google News, MSN News and Yahoo News potentially resulting in a steady stream of traffíc for up to a period of 30 days. To put it into perspective, Google and Yahoo News have the largest Internet News Audience in the world, even bígger than CNN or the BBC.
• Improved Natural Search Results for Particular Keywords
As mentioned earlier, a recent Press Release Campaign of ours resulted in a top 5 listing for one of our keywords in Google as well as multiple top 20 listings all in matter of a two week period.
• Increased Web Visibility
For new web companies, Press Releases can be a very effective and low cost means of increasing the sheer number of web listings and overall exposure.
• Enhanced Brand Awareness
Optimized Press Releases through useful media portals like and can significantly íncrease the brand awareness and recognition for both new and existing web businesses.
• Promotion in a Rapidly Growing Medium
Statistics have revealed that more than 70% of Americans actually read their news online, so press releases are certainly a part of an increasingly popular news medium.
• Low Cost Means for Increasing Exposure and Web Visibility
As mentioned, there are a number of key PR distribution portals such as that provide a great vehicle for syndicating your releases to thousands of news outlets as well as optimizing it for the Search Engines. I would highly recommend spending at least a couple hundred dollars to take advantage of a few SEO tools offered there.
• Quality Exposure to Industry Specific Editors
I include this last benefit as an added bonus since your press release might be deemed very newsworthy and subsequently picked up by multiple editors and news channels. However, I must emphasize the number of editor calls or inquiries certainly should not be the primary measure of success for your Online Press Release campaigns.
So, the big question here is how do you actually optimize the Press Release in order to achieve some of the results we experienced in previous campaigns. Let me roll back the curtain and show you the basic formula we employed.
1. Targeted Keyword Research and Selection
Before even commencing with drafting your online Press Release, it is imperative to conduct some thorough keyword research for your targeted audience and subject matter through such tools as and It is ideal to select targeted keywords that have the greatest degree of volume with the fewest competitors that will also make the most sense in the context of your Press Release. Again, it is important to marry relevant and newsworthy content with good SEO practices.
I would recommend narrowing your keyword selection to approximately two to three words for your Press Release with a primary keyword and a couple secondary words. You will löse SEO potency by trying to incorporate too many keywords into one 500-800 word Press Release.
2. Strategic Keyword Placement in the Press Release
It is essential to include your main keyword(s) in the title of the Press Release as well as in the first or second paragraphs of the body. I would recommend optimizing the first 250 words of your press release and then include the keywords in strategic and relevant spots throughout the remainder of the body.
It is also recommended to maintain a keyword density of approximately 3-5% for the main keyword and 1-2% for secondary keywords. (Keyword Density refers to the percentage of words on a web page that match a specified set of keywords) I must emphasize here though that while it is important to be aware of your keyword density, it should not come at the expense of relevant and high quality content. That will ultimately defeat the purpose and desired result of your PR campaign.
3. The Effective Use of Anchor Text
Creating Anchor Text (keyword-rich links) with your targeted keyword(s) will provide valuable optimization and relevant back-links to your respective landing page.
4. Relevant and Optimized Website Content
The use of targeted keywords in your Press Release will only have real value if you also include those same words with reasonable keyword density on your landing page. Make sure to include the keywords in the H1 Header Tag as well as strategically placed in the first 250 words or so of the landing page.
5. Tagging Strategies
Finally I have experienced great value in incorporating Technorati Keyword Tags as well as popular Social Bookmark tags such as and Digg at the end of the Press Release. Those visitors that like the Press Release and choose to clíck on a technorati tag or a social bookmark tag provide high quality trackbacks or back links that will ultimately enhance your site's link popularity.
In summary, I believe an optimized Press Release using some of the above strategies can be an excellent marketing channel with a good viral effect and great SEO potential long-term. I would highly recommend making the small ínvestment through popular PR distribution sites such as, and in order to maximize the potential for yielding top keyword listings, high quality back links and great long-term exposure for your business.
I should note that while the optimization of your Press Release is paramount, it is essential to provide a newsworthy and journalistic feel to the release as well. Great content combined with skillful optimization will yield the best results for your PR campaigns.

Wednesday, March 07, 2007

Linux Timezone Change

Pretty good instructions found here

Noticed my timezone wasn't set so did a:

ln -sf /usr/share/zoneinfo/America/MyTimeZone /etc/localtime

Monday, March 05, 2007

Visual Studio Quirks

Today's Visual Studio Quirk.

When using Visual Studio 2005 and numeric_limits (from #include ) I get the following error.

"not enough actual parameters for macro 'max'"

To resolve this
#define NOMINMAX in stdafx.h before #include

Thank you Microsoft!!

Wednesday, February 28, 2007

Why can't I unlink a read-only file on Windows?

Every now and then when programming on windows, you run into little quirks, that make you go huh? Then you file the quirk away in your mind and move on.

Today's quirk, which I can't believe I didn't realize a long, long, long time ago. unlink on Windows doesn't remove read-only files.

And the Fix:

Obviously we can't modify unlink to behave like Linux. So if unlink fails we need to remove the read-only attribute from the file to properly remove the file. Here is how to remove the read-only attribute from file programmatically in C++ on Windows:

::SetFileAttributes( "path to readonly file", FILE_ATTRIBUTE_NORMAL);

Saturday, February 24, 2007

Client does not support authentication ..

Having some fun with TurboGears. Trying out it's Python 2.3 support. Got the following error, Client does not support authentication protocol requested by server; consider upgrading MySQL client. I should be using at least Python 2.4, but doing work on an older server that only has Python 2.3 support. Not an optimal fix, but I found this one when searching on the topic.

Client does not support authentication

Login to mysql as an administrator, then, paste the following command, editing as necessary, to change the password of the user to the old format.

UPDATE mysql.user
SET password=OLD_PASSWORD('somepassword')
WHERE user='someuser'
AND host='somehost';

After you have set the passwords to the old format, flush the tables.

flush privileges;

Wednesday, February 14, 2007

685 of the best programming links

Some good programming links sorted by category and popularity. Includes: .net,ajax, c, c#, c++, flash, java, javascript, perl, php, python, ruby,sql and xml.

read more | digg story

The 10 Most Spectacularly Awful Gifts You Can Give Your Girlfriend

Here are 10 half-baked gifts you should never, under any circumstances, give your girlfriend on Valentine's Day.Though the Wind-Breaking Teddy Bear seems like it could be lots of fun.

read more | digg story

Monday, February 12, 2007

Creating a Discretionary Access Control List (DACL)

Needed to create a DACL for a Named Pipe today. Here's what I ended up with.

Microsoft Developer Documentation Links:

Creating a DACL

Some code below, (note LocalFree needs to be used on the SECURITY_ATTRIBUTES lpSecurityDescriptor member.)

#include <sddl.h>
TCHAR * szSD = TEXT("D:") // Discretionary ACL
TEXT("(D;OICI;GA;;;BG)") // Deny access to built-in guests
TEXT("(D;OICI;GA;;;AN)") // Deny access to anonymous logon
TEXT("(A;OICI;GRGWGX;;;AU)") // Allow read/write/execute to authenticated users
TEXT("(A;OICI;GA;;;BA)"); // Allow full control to administrators

if ( NULL == pSA ) { return FALSE; }
return ConvertStringSecurityDescriptorToSecurityDescriptor(

Saturday, February 10, 2007

Da Bears

So Da Bears lost the super bowl but it doesn't mean they didn't have a great season. Go Bears!!
Not a Bears fan, how about Ditka? Get a Ditka shirt from

Friday, February 09, 2007

One of these days

ESFP - "Entertainer". Radiates attractive warmth and optimism. Smooth, witty, charming, clever. Fun to be with. Very generous. 8.5% of the total population.
Free Jung Personality Test (similar to Myers-Briggs/MBTI)

Absolutely Must Have Software

Thursday, February 08, 2007

MySQL User Stuff

A stupid way to be easily hacked.

mysql> GRANT ALL ON *.* TO 'anybody'@'%' IDENTIFIED BY '123';
Query OK, 0 rows affected (0.14 sec)

Query OK, 0 rows affected (0.16 sec)

Wednesday, February 07, 2007

Ultimate Guide to Link Baiting

Copyblogger’s title cheat sheet:

  1. Who Else Wants [blank]?
  2. The Secret of [blank]
  3. Here is a Method That is Helping [blank] to [blank]
  4. Little Known Ways to [blank]
  5. Get Rid of [problem] Once and For All
  6. Here’s a Quick Way to [solve a problem]
  7. Now You Can Have [something desirable] [great circumstance]
  8. [Do something] like [world-class example]
  9. Have a [or] Build a [blank] You Can Be Proud Of
  10. What Everybody Ought to Know About [blank]

Want an example? Let’s run through the cheat sheet Andy Hagans style:

  1. Who Else Wants Build Links and Rank High in Google?
  2. The Secret of Link Baiting (It’s all in the title!)
  3. Here is a Method That is Helping Webmasters to Link Bait Better
  4. Little Known Ways to Link Bait Like an SEO Pro
  5. Get Rid of Your Backlink Problem Once and For All
  6. Here’s a Quick Way to Rank Highly in Google by Link Baiting
  7. Now You Can Have that #1 Rank in Google
  8. Learn to Link Bait like Andy Hagans
  9. Build a Backlink Structure You Can Be Proud Of
  10. What Everybody Ought to Know About Link Baiting

Friday, February 02, 2007

Windows Code Signing (Authenticode)

signtool.exe which comes with Windows Visual Studio 2005 has totally different command line options than signcode.exe, the later being part of the original Microsoft Authenticode toolkit and came bundled with Windows Visual Studio 2003.

If your migrating your code signing from VC7 to VC8 you'll need to take your PRIVATEKEYFILE and SPCFILE that you get from Verisign, Thawte, Geotrust, etc. and create a pfx file. This pfx file will be used to sign your files.

Creating a pfx file:

pvk2pfx.exe -pvk PRIVATEKEYFILE -spc SPCFILE -pfx your_new_pfx_filename.pfx

Signing a file:

signtool.exe sign /f PATH_TO_PFX_FILE -t /v $(OutDir)\$(TargetFileName)

See signtool.exe for more options.
See pvk2pfx.exe for more options.

Note to self

Found this snippet of Python code about a dictionary proxy metaclass. No time today, so I'll have to look at it later.

Sometimes when programming in Python I just want to type:
d = {}
d.some_key = 'some data'
instead of:
d['some_key'] = 'some data'
like you can in JavaScript.

Thursday, February 01, 2007

Boost C++ Libraries

The Boost libraries found at are wonderful. Been using them for years.

Here are the build instructions:

  1. Download latest boost source
  2. Download bjam.exe
  3. Extract boost source
  4. cd into the newly created directory
  5. bjam "-sTOOLS=TOOLKIT" --prefix=PREFIX install

Replace TOOLKIT with the appropriate toolkit for your compiler. That list can be found here Replace PREFIX with the prefix of choice Windows Default: C:\Boost. Others Default to: /usr/local on Unix. Linux, etc.

So if your using Visual Studio 2005 SP1 and want boost to be installed onto your D drive the command would be:
bjam "-sTOOLS=vc-8_0" --prefix=D:\Boost install
It's that simple. What you get from Boost? OS independent thread code, a good shared pointer implementation, and more.

Free website design tools

Trying to keep a list of free web design stuff.

Website templates:

Royalty free stock images:

Saturday, January 27, 2007

The Weekly Search Report

Question: Inno Setup how to not require admin rights on vista?
Answer: Get the latest version of Inno Setup at least version 5.1.9 or better.

Question: why does my computer not boot up?
Answer: Is your computer plugged in? Does your house have electricity? Are all the cables plugged in? Is your memory bad? Is your hard drive bad?

Question: my pc is too slow why?
Answer: Not enough memory? To many programs running in the background? Your still using your old 486? Your computer is infected with viruses and other malware?

Question: doctor's who make a lot of money?
Answer: Plastic Surgeons

Question: how to choose a genealogy test?
Answer: The more markers the better. See

Question: why is my pc so slow?
Answer: See answer for my pc is too slow why above

WorldFamilies.Net and Surname DNA Testing

World Families Network, Where Genealogy meets DNA Testing
Ever heard of If your into genealogy. You might want to give them a visit. They specialize in Surname DNA Testing, managing several thousand surname DNA projects. Search for your surname DNA project. Can't find your surname, ask them to add a DNA project for you.

Take a look at some of WorldFamilies.Net's top surname DNA projects:

Tuesday, January 23, 2007

Maxam-Gilbert DNA sequence method

When is Google going to do something about search engine spam? Take this page for instance. Wordtracker tells me the words "maxam-gilbert dna sequence method" where searched for 34 times in the last 24 hour period. Not knowing much about the maxam-gilbert dna sequence method I'd go to and find out that,
The Maxam-Gilbert method of nucleotide sequence determination is based on preferential, base-specific methylation followed by chemical cleavage to generate a nested set of end- labeled derivatives. The funny thing is within a few weeks because of this url, google will rank this page pretty high. Not that I even know a thing about the Maxam-Gilbert DNA sequence method.

Fried Cisco

Ever heard of a fish called Cisco? First thing I thought of was the company. Someone says these Cisco are only found at Bear Lake. They must mean the specific subspecies of Cisco found at Bear Lake are unique. Seeing as anyone can google Cisco and find more results than just Bear Lake. Was told they were spawning. Took a little drive down to Bear Lake for some ice fishing with the scouts, came back to Idaho Falls with a whole lot of Cisco.

Using a net or a hook, the later taking more skill; it was actually pretty fun. Bear Lake had totally frozen over the previous week. Not that it mattered the Cisco were right by the edge of the aptly named Cisco Beach. There had to be thousands of them. They seemed to like our Marabou Jigs, and Silver Kastmasters. One person would tease them with the bait, another scooping them up with the net.

The real fun was cleaning and descaling the fish. My 25 Cisco took way to long to clean (the daily limit is 30). It was worth it though. They sure were yummy. Deep fat fried them. umm, umm good.

Monday, January 22, 2007

(Great) Employees Only

So my boss has a subscription to Audio-Tech Business Book Summaries most of the cds are actually pretty interesting to listen too.

I was impressed with a cd he shared with me recently. (Great) Employees Only How Gifted Bosses Hire and De-Hire Their Way to Success by Dale Dauten. What I enjoyed most about it where the six questions Dale Dauten says to ask an employee that is in line to be de-hired.

1. Are you happy here?
2. What are you passionate about?
3. Does this job do that for you?
4. How can we make changes so that happens?
5. What would you rather be doing?
6. How can I help you move in that direction?

Wednesday, January 17, 2007

Compiler COM Support

Touching code that I had long since forgotten about. Documented in the source, but also here in case I ever need it someday long after I have left my current company. Not that the links will be valid, but at least It will help me remember search terms to get the knowledge back.

Compiler COM Support
#import directive

Windows Vista and Windows Help

I have to admit, I really enjoy reading Microsoft documentation. Especially marketing fluff. I have nothing better to do each day. Why not just waste it reading Microsoft marketing fluff, excuse me ... developer documentation. Maybe your familiar with what I'm writing about, the documentation that tells you how good Microsoft is but doesn't really tell you how to implement any of their technologies. My second favorite Microsoft documentation to read is the You can't do it this way anymore, but were not going to give you any links, cause we change them daily, so good luck figuring it out on your own style of documentation.

I've been reminded of my Microsoft documentation pet peeves, as I'm currently focused on migrating some old Windows Help files (.hlp files) to Vista.

Windows Help (WinHelp.exe and WinHlp32.exe) is being deprecated for Windows Vista. Windows Help is not supported in Beta 2 and some of the Windows Help code has been removed for the release ... HTML Help and .CHM files will continue to be supported for Windows Vista.

We strongly recommend that software developers stop using the Windows Help application in Windows Vista. Software developers who ship programs that rely on .hlp files are encouraged to transition their Help experience to an alternative Help file format, such as .chm, .html, or .xml. You will also have to change your calls from the WinHelp() API to the new content source.

Now I know HTML Help has been around forever, almost as long as WinHelp. But I don't work with Html Help everyday, so they should say. HTML Help uses the HtmlHelp api, here is a link to the documentation. Don't force me to use the msdn search engine, it's useless.

For my own benefit, a few years down the road if I actually have to worry about help files again.

Source: MSDN Documentation
The HTML Help API function is modeled after the WinHelp API function to simplify the process of updating existing programs from WinHelp to HTML Help. However, the HTML Help API command names and parameters are not the same as those in the WinHelp API, and the output file formats are very different.

Useful links:

Thursday, January 11, 2007

Windows Visual Studio 2005 Service Pack 1

Upgrade it's that simple. Download and Install otherwise be doomed to waste your time scouring the web for resolutions to obscure bugs.

The bug I'm most happy about being fixed this Memory leak. It also resolves the Vista Manifest Crash reported earlier without any fancy work around. Though you still have to worry about how to distribute the CRT dlls and such.

Wednesday, January 03, 2007

Thoughts on Windows Vista User Access Control

Bye, Bye Power Users

Finally, a parent can let a child view a DVD, while preventing them from installing software; courtesy of User Access Control(UAC) and the infamous split token.


"IT administrators will not need to replace the majority of pre-Windows Vista applications when running Windows Vista with UAC enabled."

The cynic in me thinks it should read, "IT administrators will need to replace the majority of pre-Windows Vista applications when running Windows Vista with UAC enabled."

Blog Sites

Some blog sites. Found these on some site off of Digg. Just here so I can slowly work my way through them in my spare time.

Name: 2RSS
Description:RSS Feed Directory
Add your blog here: On front page
Note: Requires RSS Feed

Name: Blogarama
Description:Small search engine
Add your blog here:

Name: Blogdigger
Description: Small search engine
Add your blog here:
Note: Need RSS feed

Name: Bloghop
Description: Small search engine
Add your blog here:

Name: Bloglines
Description: Search and aggregate RSS feeds
Add your blog here: No submission process, users add feeds they wish to track

Name: Blogmatrix
Description: Blog tool provider, offers search as well
Add your blog here:

Name: Blogsearchengine
Description: Blog search engine
Add your blog here:

Name: Blogtastic
Description: Metasearch
Add your blog here:

Name: Blogwise
Description: Categorized Blog search
Add your blog here:

Name: Bloogz
Description: Blog search engine
Add your blog here:

Name: Daypop
Description: News oriented search
Add your blog here:
Note: Requires your site to be "frequently updated"

Name: Eatonweb
Description: Blog search engine
Add your blog here:

Name: Globeofblogs
Description: Blog search engine
Add your blog here: Click "Register" in upper-right corner of front page
Note: Strange site, requires extensive classification of blogs

URL: ,
Description: Blogs and headlines by geographic region. GeoURL is by lat/longitude while LocalFeeds is by ZIP or country.
Add your blog here: (for both)
Note: Complex instructions, you must edit your blog's meta tags prior to submission.

NEW! Name: Memigo
Description: Customized news portal
Add your blog here:

Name: NewsIsFree
Description: Search for RSS feeds
Add your blog here:

Name: Popdex
Description: Hot topics listing and search engine
Add your blog here:
Note: "Fast Track" if you link to Popdex

Name: RDF Ticker
Description: Search and aggregate RSS feeds
Add your blog here:

Name: Read A Blog
Description: Blog Search Engine
Add your blog here:

Name: RSSFeedsDirectory
Description: RSS Directory
Add your blog here: Not clear

Name: Search4RSS
Description: RSS Search Engine
Add your blog here: Not available, must be added by site owners.

Name: Sindic8
Description: Search and aggregate RSS feeds
Add your blog here:
Note: Need RSS feed

Name: Technorati
Description: Index of links between millions of blogs
Add your blog here:

Name: Waypath
Description: Keyword searches and "find similar" searches
Add your blog here: Automatically adds blogs through a spidering process.

XP to Vista upgrade, is it worth it?

Upgrading from Windows XP to Vista is it really worth it? That's for you to decide. I've been using the Vista RTM for development/testing. It's not that bad, though there are some quirks to get used to. If you're thinking of upgrading, I'd recommend a clean install. Things have changed way to much, and your in for a world of hurt if you believe Microsoft and think most software will work on Vista out of the box. It won't. If you go into the upgrade realizing most things won't work, mentally, you'll probably be better off.

Recommended path of Upgrade:
  • Make a list of all the software you use
  • Verify that each software product you use works with Windows Vista
  • Backup configuration information for each of your products
  • Install Windows Vista on a brand new computer
  • Install the software you use
  • Import over configuration information
What you can look forward too:
  • Enhanced security
  • Better eye candy
  • User Access Control (UAC) prompts
  • Gadgets
Things you may miss:
  • Lack of UAC prompts