MSI Installer Errors? Do you have PGP 9.5 installed?

Just hopefully going to save someone out there some time.  If you get MSI errors when trying to install or uninstall an application, and you've tried all 24,676,297,462 options on the MS KB to resolve it without success, and you have PGP 9.5 installed, then it's probably this solution (Reply 9).

Lame 1: New LAME posts, why the internet sometimes sucks, and other great designs...

I have decided that I can no longer sit by quietly with such wonderful gems of lameness on the web, so I've decided to rant about these in a series of what I will call LAME posts (I hope this is not copyrighted somewhere!)

Without further ado, lame # 1:

 

This is a strange idea, since I had to already login with my Live ID, and then had to create a new password and account (with a random number as my username) for the newsgroup, and then I still have to wait up to 4 hours in this age of high speed digital technology?  Lame. Lame.

PS: I know I could use Internet Explorer and connect to the integrated newgroups, but that's also lame (since I don't use Internet Explorer).

PPS: Opera can circumvent this by chaging the site settings to "Masquerade as Internet Explorer".  Why web developers insist on assuming that their browsers are the only ones that will render a page is beyond me. Also Lame.

Posted 19 June 2008 09:54 AM by brian | no comments
Filed under:
Intel/AMD Assembly TextMate Bundle

If, like me, you are a user of e-TextEditor for Windows (it's the Windows version of the ever-popular TextMate for Apple Mac) then I have attached a bundle for the Intel/AMD opcodes and registers.

This is for those of you that still need to view assembly files (or edit them). It's far from complete, but has the opcodes and most of the registers set. Shout if there are issues or mistakes.

I am not that well versed in TextMate bundle development (and online forums make it no clearer), so I am not sure how to configure things like MASM vs TASM assembler support nicely yet. If anyone can shed some light on the best approach to split these syntaxes out, then I can make the necessary changes. In the meantime I will update the file as I go.

What's preventing me moving to Vista / Vista SP1? Quite a bit... Still...

A while back I wrote about how I would be avoiding Vista RC1/2. Amusingly, in there I say, and I quote, "I know that the upgrade will be well worth it when it happens". Oh how I laughed.

Not too long ago I thought the upgrade was a necessity, and rose to the challenge of installing Vista Ultimate (who wouldn't want all the toys??). Here's a brief list of my brief (I did give it two months on my workstation) interlude with what I will call the Black-ish Beast of Traag:

  • There are some applications that are still not available on Vista.
  • Some applications that are on Vista now offer the 'upgrade' for a fee (I'm looking at you and you!). Some of these upgrades come off a recent release for XP that I had just purchased.
  • Vista 64 is still as reliable as XP 64, and that's not a good thing.
  • The minimum hardware requirements are still a complete debacle! Since when does 2 GB of RAM, 3GHz Processor, RAID 5 Hardware (yes, an actual Areca Card, not the built-on software kind) and nVidia 6800 GS (like a 6800 Pro) get a rating of 4.1, and yet sill feel like trying to swim through toffee (the hard, refrigerated kind)?
  • As pretty as the interface is, why does it take an nVidia 6800 to work it, yet my Toshiba Laptop using an Intel 855GM produces a more 'intense' look-and-feel in Ubuntu with Beryl? Honestly, it's just a bit of see-through-ness and some glowy effects, software was doing that years ago on a Voodoo2!
  • How can I get the same damned startup time on the hardware Raid 5 as it does on 1 slow hard disk, erring to the lowest common denominator!? XP at least has the decency to start up quicker (by a lot) on the hardware Raid 5 setup. Sure, throw in the "but Vista starts up completely differently to XP". I know it does, it's slower.

Well, at least in my original post I did foresee this by closing off with "I am just hoping I can do it with the least amount of pain". How I laughed...

Financial Management 101 - The really cool website!

If any of you are like me and enjoy watching your finances day to day but are fed up with Microsoft Money or Intuit Quicken, then look no further than Wesabe! I have used Microsoft Money for years, and you know what one of the hardest things to find is (without manual intervention)? Your total monthly bills!  Money and Quicken both have a concept of categories that are hierarchical, so general bills can cross multiple categories (bills: telephone, insurance: life) that are completely unrelated, so there's no way to view them on one report conveniently. 

Here's where Wesabe kicks in: it uses good ol' tags.  You basically tag all your transactions just like you would tag del.icio.us bookmarks (or even your blog entries on here).

Since going over to their site I have not looked back, it's the first financial application I've used where I can really tell where my money is going.  It's hard to praise it enough, so I would suggest going over there, signing up, and trying it out (or check out their tour).  It's free too!

The basic system works as such: create an account (type and bank), upload an OFX (or some other formats) that you downloaded from your bank directly to the configured account (important to note here is that Wesabe never keeps any login details for your banks), and you're done.  Next up you start tagging your transactions, and editing the merchant details.  Hereafter you start seeing other user's tips related to tags.  So for example, if you tagged a transaction "credit card payment", then tips related to this start appearing with your transactions.  The power truly comes in when you literally start playing around!  It also remembers what merchants and tags you've set up based on those nasty bank merchant details and autofills them next time you upload.

Have fun, and let me know what you think!

Oh, nearly forgot to mention: they have an API for accessing your data, so you can write your own applications or reports against your data! Pretty neat :) 

Keyboards, ooooo...

I am a horder of keyboards.  It's not because I like them, it's in fact the opposite.  I am picky, I want good tactile feedback, short throw, and good response (wireless keyboards have just not delivered).  Think of a good notebook keyboard, but with a decent layout.  Just when I think I have found a new one, it's either a poor quality Microsoft one (where certain common key combinations cause keyboard locks), a Logitech one that at the time seemed good until you've used it for a few days, or a work issue HP keyboard (ironically one of the better ones anyway, but lacks the extended multimedia keys you take for granted).  I still have yet to find a keyboard that beats my old Microsoft Multimedia Keyboard, and it's not even that good to begin with.  I am not sure what has happened to the Microsoft range of keyboards, but in the last few years their keyboard quality has gone to pieces (of the several at my workplace that people have purchased, 1 has not had any problems).

I bought the latest SACM, and found a review of what could be my next really cool keyboard that hopefully won't be put on a shelf: the Speed-Link Ultra Flat Metal Keyboard.  SACM mentioned that there were others in the range, and I happened to find this one. Now if its feel is as good as its looks (and backlighting for those late night coding sessions? That's a winner!), then this may just be what I've been looking for for the last 10 years.  I will keep you posted...

[EDIT] The local supplier is Vidis SA, and can be reached on 021 794 8000.  Price for the SpeedLink Ultra-Flat Metal Keyboard is listed as R599.00. [/EDIT]

ER Studio: Any other suggestions that don't suck?
Having used ER studio for many years, I am now in a company that is not licensed, and am in need of a new ER tool. Since the cost of ER studio precludes a personal purchase, and for the same cost I can get software that is actually far less buggy (in fact, I can get 1 and a half MSDN Premium subscriptions for the same price), I would like to know if anyone else uses anything that is both affordable, and well featured (and no, the MS SQL Diagram Editor is neither of these)? My basic requirements are a way to edit my ER diagram, and be able to sync this design to a DB and reverse engineer existing databases. Most often I will be using MS SQL Server, but may need to access others. So if anyone has any suggestions, please let me know :)
Just one question: Why?

public class ValidationHelper {
 private static final String validLetters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ";
 private static final String validNumbers = "0123456789";
 private static final String validEmailCharacters = "_-.@";
 private static final String validPhoneCharacters = " -()";
 private static final String validAddressCharacters = " #.";

 public boolean checkNumbers(String pFieldValue) {
  boolean isValid = true;
  char[]charArray = pFieldValue.toCharArray();
  
  for (int i=0; i<charArray.length; i++) {
   if (validNumbers.indexOf(charArray[ i ]) < 0) {
    isValid = false;
    break;
    }
  }
  return isValid;
 }
}

The above just looks frighteningly familiar, albeit a next-gen iteration.  I would let this slip if I know it was written in the 90's, before Java had any regular expression support, but the above code was written last year, and is just plain inexcusable.

Seems my beloved Voo2do is gone?

I like online time management thingies (Voo2do and Gmail Calendar) and email stuff (Gmail).  I am a bit worried about Voo2do though, as it has vanished off the internet.  I am hoping it's temporary!

In the meantime I thought I'd find alternatives, and came across this: RememberTheMilk.  Love the name, and it seems to be almost as useful as Voo2do.  I may make it my replacement if it comes to that.  Anybody else using anything similar that they would recommend?

Do Regular Expressions scare developers?

I have harped on about the joys of Regular Expressions before, and find them an indispensable tool in my developer toolkit.  In fact, I never leave home without this one.  What concerns me gravely is the fact that too many other developers appear to completely overlook (or ignore) regular expressions, although this lack of knowledge does produce some fine examples of user input validation code that usually has me in giggles (and defining further parameters of "Developer Culling" that is fast becoming a sport I will be partaking in).

What I would like to know is whether or not regular expressions are feared by developers?  Surely in this day and age of distributed systems and complex architectures regular expressions should be part of what you know.

I have come to realise however that most developers appear to be 'writers of lines of code' rather than true developers; there's a very worrying sign of a lack of understanding of why things should be done in a particular way, and a lack of awareness of basic tools.  Regular expressions are probably one of the most powerful concepts for user input validation, which also happens to be one of the most forgotten steps in code development (how many systems I come across that throw "data is too large for column" errors is also a worrying trend).  Could there be a relation here?

I won't list all the samples of painfully written loops and conditions I have seen to validate a South African ID number, or the laughable routines used to determine South African Mobile Phone number validity.  I will however make a statement: Learn the tools, know they exist.  You do not have to be a master of them, but know they are there.  There are places to find the information you need for specifics that you do not know (the internet, use it), but at least realise that these things are actually available for your use.

Remember this quote: "good code is written by good programmers".  By deduction we can then say that bad code is written by bad programmers (and trust me, these particular validation routines fall well within this realm).  Also remember this other quote: "You need someone who is creative enough to find innovative solutions to problems".

Regular expressions have been around for years, and all of .NET's life, deal with it.

 

Okay, so I've not blogged for a while... Here's something to make up for it...

In my daily work I get to do many things.  I make coffee for myself.  I browse.  I read.  I may even do some work.  It's this last one that usually provides me my day's worth of fun.  I have mentioned many WTFs in the past, and it's with great glee that I can now add a new one to the list.  What's even better is this is from a completely separate set of people from before, so now I know this is a more common occurrence that previously thought (sadly).

The basic story: A certain company "that has proven they have nothing to back up the claims that they can also actually deliver the solution on time and in budget" (we'll call them Vendor X) was "forcibly" inserted into a project by a certain senior manager against the will of the Project Manager.  During the process of weekly status meetings, Vendor X managed to, without messing up (the only time they wouldn't), convince the Project Manager that the project was ahead of time, well within budget, and working like a charm.  In fact, even demo's "proved" this.  It was only 4 weeks before the deadline that we realised that there was actually no solution, just merely "slightly altered screens from the original prototype".  I will cut this story here...

Vendor X's biggest selling point was that they have a "framework", an entire environment for managing and maintaining ASP.NET sites along with security access at page level.  This too was non-existent.  However, since they were now 4 months behind with 1 month to go, I was naturally nominated to "help them sort out their sh*t" (one of the lesser pleasures of contract work).

The first issue of course was that the promised framework, which was critically required to be on ASP.NET 2 so as to align with the proposed technology strategy, was in fact on 1.1 (yes, I even had to install Visual Studio 2003 again).  Having now smelled an entire fish market before me, I thought I'd take a look at said framework, and see how much I could learn from their clearly superior capabilities.  What I was to find shocked me. The realisation that there are companies out there that can maintain a living through lies and deception alone is a very scary thing.  It's worse when the original senior manager claims the reason they were behind was due to the project being managed poorly. There's clearly a financial gain going on here somewhere... But I digress...  back to the fun stuff.

My first worry was the following piece of code strewn across the entire solution (and think about this, considering the site's name):

sRedirect="http://" + sServer + "/WebSite1/correspondence/CreateMail.aspx?sUrl=" + sUrl.Replace("&", "$");
Response.Redirect(sRedirect);

I also loved the manual url encoding.  I thought this was really funny.  Not half as funny as their "forms authentication", the manual way (I remember now, always write your own security):

Session["LoginSuccess"]="true";

They also failed to realise that the web.config needs to be configured for forms authentication.  They just left it as Windows authentication.  Of course, this would not be half as funny save for the fact they rarely check this session variable.  This means that the user can be logged out after a while even though they're busy with pages.  Couple this with the fact that most pages can be accessed without logging in so long as you know the URL.

There are other tidbits of complete incompetence too. But I think I'll leave those out.  There is one other one that I would like to show as an example of why I am beginning to think developer culling may not be as bad an idea as it sounds.  I came across this test to validate that an input is alpha-numeric:

bool bAlphaNumeric=true;
if(sValue!="")
{
 
 char [] sArray = null;
 sArray = sValue.ToCharArray();
 foreach (char s in sArray)
 {
  switch (s.ToString().ToUpper())
  {
   case "A":  bAlphaNumeric=true;
    break;
   case "B":  bAlphaNumeric=true;
    break;
   case "C":  bAlphaNumeric=true;
    break;

   // All others here ...

   case "Z":  bAlphaNumeric=true;
    break;
   case "1":  bAlphaNumeric=true;
    break;
   case "2":  bAlphaNumeric=true;
    break;
   case "3":  bAlphaNumeric=true;
    break;
   case "4":  bAlphaNumeric=true;
    break;
   case "5":  bAlphaNumeric=true;
    break;
   case "6":  bAlphaNumeric=true;
    break;
   case "7":  bAlphaNumeric=true;
    break;
   case "8":  bAlphaNumeric=true;
    break;
   case "9":  bAlphaNumeric=true;
    break;
   case "0":  bAlphaNumeric=true;
    break;
   case " ":  bAlphaNumeric=true;
    break;
   default:   bAlphaNumeric=false;
    break;
  }
  if(bAlphaNumeric==false)
  {
   return bAlphaNumeric;
  }
 }
}
return bAlphaNumeric;

There were 4 other similar functions.  Clearly "regular expressions" never cropped up.  If I had started coding the above, I certainly would have asked myself "there must be a better way?"... 

What's preventing me from moving to Vista RC1/2? Quite a bit...

I really love the new Windows Vista.  It's pretty, and it has moved forward in terms of where everything is and how it works.  It may confuse some intially, but once you get used to it it's hard to go back to XP.  But what is stopping me from launching myself head-long into RC1 (or 2)?  Turns out quite a bit.

I use quite a bit of software, and to my surprise (and pain) most of it does not work on Vista.  For one my Antivirus does not (and yes, I could use another one in the meantime, but I already trust my current one).  My AntiSpyware also does not.  Neither does Virtual CD.  In fact, I tried several bits of software that I have come to rely on and realise that I am not moving across anytime soon.  My only fear is how long it will take for these vendors to update their software to support Vista, as I would have thought by now there would be Beta releases at least.  Unfortunately, I have a feeling that not only will I not be delving into the happy place now, it may not even happen soon after launch.  A lot of these issues remind me of the XP 64-bit pain; "Oh, sorry, but your software will not work and we have no plans to support XP 64 right now."

Although these initial teething issues are a nuisance, and that my desire to upgrade has been thwarted for now, I know that the upgrade will be well worth it when it happens.  I am just hoping I can do it with the least amount of pain.

400+ Visual Studio differences.. and do I care?

I was forwarded an email originally from Ernst on the 400+ differences between Visual Studio 2003 and 2005.  A good chuckle to read, here are some of my favourites (and not for the right reasons):

Item 4: 50+ new web controls... Some nice ones, but still no [censored censored beep beep] date drop down!  I have yet to find a use for the Calendar control, since most data entry is heavily biased to the data grid and detail view controls.  And a calendar control looks daft on a grid view.

Item 5 & 7: Erm, 64 bit support AND a 64 bit debugger? Man, I am sure glad they made that two features! Hell, imagine a 64 bit debugger without 64 bit support?

Item 12: Advanced data object binding? Let's not go there...

Item 20: Assemblies... Weren't they in 2003? In fact, weren't they in 2002 as well?

I won't continue, but many of the other "features" have been around in 2003, or many Java IDE's (like Eclipse) for years.  Many others are welcome fixes (atomic checkins) that have been sorely needed since Visual Studio 5.  And to fill in 400 with things like "203: you get an apple corer" and "208 you can use the apple corer to core apples" leaves me a bit disgruntled.  I am surprised they did not say 450+ differences, and list each ASP.NET web control individually...

 

Cool link on code quality...
Interesting and relatively true: http://www.informit.com/articles/article.asp?p=457502 Smile [:)]
ORM Happiness at last...

Earlier I had tried my hand at NHibernate, and although it's a great concept, in practice it's a lot of work to use it as-is.  In fact, I would say it should only be used if you are writing some form of data access framework.  I even tried cheating by using FireStorm DAO (since I am in a Java based environment) to generate the Hibernate classes and mapping files and converting them to C# using the Java Conversion Wizard (don't ask, it was an interesting journey - let's just say that converting is not that simple).

I soon scrapped that idea, and had a poke around the web (and Craig's head) for some other options.  Eventually I rested upon LLBLGen Pro.  This is a fantastic piece of software.  Very easy to use and very powerful.  It is template driven too, so just about everything is customisable.  The TypeConverter concept is also very powerful for things like CHAR(32) to Guid conversions of Oracle table data.

If you are ever in need of a good ORM framework, then take a look at LLBLGEN.  Only costs EU225 for a license for your department or division.

More Posts Next page »