Sunday, April 29, 2007

TweakUAC

I constantly hear/read complaints about Windows Vista's UAC dialog. The complaint usually goes something like this, "Whenever I do Administrative task X while logged in as an Administrator, Vista asks me if I really want to do said task X."

UAC, also known as User Account Control, is designed to not stop users from doing stupid things so much as to stop automated programs from taking over the computer system. But users do get annoyed when they want to do a series of administrative-level tasks and see dialogs popping up in their face constantly asking if they really want to do those tasks.

Which is where a tool I found comes in really handy. I don't run Vista, but I have found a solution for the #1 complaint I hear from those who do:

http://www.tweak-uac.com/what-is-tweak-uac/

TweakUAC allows system administrators to do administrativey things without being annoyed by the UAC privilege elevation dialogs. Of course, most users who own Vista are usually logged in as Administrator. So, the tool isn't perfect because using "quiet mode" kind of defeats the purpose of UAC. It would be great to see a feature in the tool where "quiet mode" can be enabled for, say, 2 hours and then at the end of that time period, it would revert to regular UAC.

Some people might note that Vista already has a "disable UAC" feature. This is true. What those same people don't realize is that disabling UAC only disables the dialog...it doesn't actually stop UAC. Turning off the UAC dialog causes all manner of user confusion and application breakage (turning off/disabling UAC is the equivalent of saying "Cancel" to every UAC dialog).

Which is why TweakUAC is cool. It creates a happy medium for users who are Administrators. It is useful to note that other types of user accounts still see the UAC dialog (usually followed by the credentials dialog for non-admins who click "Continue").

The name of the product is kind of funny. You can pronounce it as Twee-Quack...which sounds like the Elmer Fudd'ism for "Tree crack". AKA "cheap weed".

Wednesday, April 25, 2007

The Internet brings out the weirdest people...

...And they end up on my blog. For some weird reason or other, this blog attracts the weirdest people. Not that it is bad, it just is weird. For instance, my last post caused a RentACoder troller to show up and start ranting, uh...trolling...about some RentACoder experience that happened years ago. I deleted the messages and turned on comment moderation. I figured normal people would show up but they haven't.

Well, one exception: One of my posts _finally_ had a normal, everyday person who used it and actually appreciated the post. It was my "Lexmark Printer Driver Removal" post where I provided a tool (old-school batch file) to completely remove what Lexmark was unable to remove with their uninstaller.

I suppose talking geek just automatically attracts the wrong crowd. If I started talking about how to use Windows Movie Maker 2 or did Photoshop tutorials on forum avatar creation (borderline geek) or how to safely lose weight (most weight loss programs are unsafe - including those prescribed by doctors), normal people would probably show up.

That reminds me, someone said to me a couple days ago that I should write a book on how to lose weight. I only weigh 120 lbs. - very unsafe weight (zero body fat - literally) but try as I might, I can't bring myself to eat the foods that would cause me to gain weight. Might as well start formulating how to do the book. Initial thoughts crossing my mind are, uh, "picture book". Oooh...that's evil... Hehe. Such a book would, uh, diversify my product line. My goal is to have a diverse product line and this would certainly contribute to that goal.

And normal people might start showing up.

Monday, April 23, 2007

Rent-a-Coder

Let me begin by saying, "100th post!!!!!!!!" And no one is probably going to read this now that I've trolled my own blog.

A couple years ago I ran into a site called RentACoder, or more commonly seen on the site, RAC. RentACoder is a site where people can place bid requests and other people place bids for those bid requests and RentACoder holds escrowed funds until a software project is completed. Most requests have a cap put on them as to the limit of the bids.

I've got a few hundred projects I would love to see done but don't have the time nor resources to do them. So, I decided to run a few small, semi-scientific experiments on RentACoder. My first project was for the coder to use MFC and several pre-made third-party open-source/freeware components and piece them together into a cohesive shell that will form the basis of a new software product. I'm pretty good at MFC, but it would have taken me weeks to figure each little library out. I paid $70 for the shell and was quite happy with the overall results.

So I opted to try something significantly harder for the next project: A complete solution using custom-built UI components and several obscure technologies. Someone bid $200 and said they would be done in two days. I wasn't in any big hurry so I gave the project a three month deadline. A competent coder who could have pulled it off in two days would have earned the $200 and major kudos from me. I expected results in the first two weeks. Instead, this coder was clearly incompetent - having taken on five other projects besides my own and was incredibly irresponsive to status reports. Not only that, they did not complete the project by the deadline to even a functional level. The stuff they sent me via on-site uploads simply did not work. On top of that, I had to babysit the entire process to get the coder to do anything. When someone tells me they will have something to me in "two days" not just one time but multiple times, I expect that person to carry through on the promise.

I could probably build the aforementioned solution in two weeks time. So, in the time I wasted with RentACoder, I could have written it myself.

Needless to say, I have mixed feelings about RAC. I mean, they can't really control the quality of the coders on the site. The first coder was perfect for the job but the job was easy. The second job was significantly harder and more complex but even it could have been built using components from existing source code on the Internet and a little hacky magic. The coder clearly did not realize this.

The RentACoder staff needs to be more involved with projects and create an environment where they get notified of projects that appear to be failing and start an interaction process to keep things running smoothly...sooner. The people making the bid requests have one option available during the project: Arbitration. This usually means the project has gone south. There should be a project status rating system that allows people placing bid requests to rate status reports. If such a rating system were in place, RAC could have detected imminent project failure two months ago (based on other projects using identical timeframes and project difficulty levels).

So what exactly does all this mean? For simple projects where the technology is fairly well-known and it would take a coder using that tech. a couple days vs. you spending 3-4 weeks on it, RAC is a perfect solution. For complex projects using obscure, rarely-used, hard-to-develop technologies, RAC is a bad idea unless you are after a specific coder on RAC that clearly has the solution you are after (e.g. the project history has 5-6 directly related examples of solutions involving the technology).

I should probably mention that there are other sites out there that bring freelancers and those that want work done together. RentACoder, however, is still the top site because they have been around the longest and have a reputation for being fair in arbitration.

Friday, April 20, 2007

Mozilla Extensions and breakage...

One of my major pet peeves with Mozilla products is Extensions and how they break between versions of the products and how developers are not on top of releasing updates to those extensions.

I'm not necessarily an early adopter of stuff, but I do have a tendency to be cutting-edge on certain applications. I don't run bleeding-edge stuff except for my own product line where I'm constantly adding a new feature here and there.

Mozilla Thunderbird is the latest of major annoyances. Thunderbird 2 just came out a couple days ago and several of my extensions broke. For the most part, extensions break because a single string that says "I work with versions of Thunderbird from x to y" where y is less than the current version exists.

Let's take a look at how Outlook would handle the scenario. You've got millions of happy Outlook users with their extensions implemented as COM objects (DLLs). The latest version of Outlook will attempt to load the extension and, if it fails, Outlook will crash. The user will be moderately unhappy that Outlook crashed but the next time they start Outlook the extension won't load.

Mozilla products will simply refuse to load the extension even if it would work just fine. They don't let users say, "I don't care if it won't necessarily work or even work as expected, let ME decide if it works or not." Just because it says it won't work doesn't mean it won't. In other words, I want to see an override option to force the extension to load anyway - in most cases, such an option will work just fine. There are certain extensions people can't live without and are willing to run the product with the potential for instability to keep those extensions. Mozilla developers are clueless to user needs. It would be interesting to know if an extension to forcibly load "out of version" extensions could be made.

I use several Thunderbird extensions, but two are business critical enough for me to drop back to TB1.5: XNote and Mail Redirect.

Wednesday, April 04, 2007

itoldyouso

I just discovered that dbghelp.dll has an undocumented export function called 'itoldyouso'. Those funny guys at Microsoft.

Feel free to confirm it for yourself using Dependency Walker. I saw it and chuckled to myself.

(I'd love to know who had the guts to name an export function 'itoldyouso'?)