Work

There are 19 articles in this category.

Implementing IComparable

Posted on 2010-08-24 10:55:10

In the most recent project I’m working on at work, we’re using a self-made generator for generating the business entities. The generator creates the class, properties, and implements the IComparable interface.

IComparable contains a CompareTo() method that should return 0 when the objects are equal, a negative value if the current object is less than the other, and positive if the current object is greater than the other.

A generated class looks like this:

public class SomeObject
{
    ... properties ...
    public int CompareTo(SomeObject other)
    {
        if (Id = = other.Id &&
            Name = = other.Name &&
            SomeProperty = = other.SomeProperty &&
            SomeOtherProperty = = other.SomeOtherProperty)
            return 0;
        else
            return 1;
    }
}

It’s a good thing the business entities are not actually compared to each other, but only checked for equality. Sorting these objects will be a downright failure…

Posted in: Work

Oracle inequality

Posted on 2010-06-08 19:24:07

While converting a bit of Oracle PL/SQL to Java today, I found this nugget:

if to_number(nvl(r_status.some_field,0)) < 2 or
   to_number(nvl(r_status.some_field,0)) > 2
then
  -- do something
end if;

Obviously the coder who wrote this has never heard of the ‘<>’ and ‘!=’ operators…

Posted in: Computers, Work

Small coding error

Posted on 2009-01-23 08:56:16

Found a nice gem today, in a Java class that’s responsible for sending mail:

// CC Receiver
if (ccAddress != null) {
    message.addRecipient(
       Message.RecipientType.TO,
       new InternetAddress(ccAddress));
}

I haven’t heard the customer complain yet that the CC receiver is actually listed in the “To” field…

Posted in: Work

Microsoft licence agreements

Posted on 2008-12-30 10:19:42

Funny clause I encountered today at work while installing a bunch of software related to Visual Studio 2008: the end user licence agreement of the TFS 2008 power tools included this clause:

You may not:

  • disclose the results of any benchmark tests of the software to any third party without Microsoft’s prior written approval;

Hmm, I wonder why that clause was added. I mean, you have the licence to use the software, which would include running benchmarks on it, right? They’re probably afraid of someone finding out how crappy their tools were programmed.

As a side note, that licence agreement is not valid for me anyway, since there’s no way to print it.

Posted in: Computers, Work

The FedEx site...

Posted on 2008-07-27 09:25:54

So I ordered my welcome kit/certificate/whatever from Microsoft, and I’ve been keeping an eye on the order status. Today, the thing said it “shipped” on the 24th of July (even though I checked a few days ago and it said no such thing), but okay…

The carrier is “FedEx International Mail Service”, no tracking because apparently they don’t do tracking on international packages. To get an idea whether the thing would arrive here before I went on holiday, I tried to find out what the average shipping time is for a package from the USA to the Netherlands.

Oh boy, what a mess is the FedEx site! First of all the menus on the site are making my computer slow down so much that it’s hardly possible to select anything from said menus. Secondly, I couldn’t find any nice table with shipping time to “the rest of the world” (nor within the US). What I did find was a big “transit time calculator”, where I had to fill in the postal code of the sender and the receiver (like I know where the Microsoft office is), what kind of package (um, envelope?), the customs value (what?), and the “service” (yes?), among others.

At the end of the road, I still don’t know how long it’s gonna take… estimate: some time next week?

Posted in: Work

Slow internet connection at work - solved.

Posted on 2008-07-27 09:15:20

Since September/October last year, I suffered from a very bad internet connection at work. My colleagues had a snappy connection, but mine was very slow, in particular when resolving DNS names, which could take up to half a minute. Interestingly, this problem didn’t occur when using the nslookup command line utility.

The service desk didn’t want to help me because I have IE7 and Firefox installed: the only supported browser is IE6. Even if I uninstall IE7 (and thus revert to IE6) they won’t support it, because IE7 might have left traces (not an unreasonable assumption). Still, not a good thing if the problem would actually be in the network rather than the PC.

Last week, I finally figured out what was causing the slowdowns: somehow a “microsoft proxy client” had managed to find its way onto my computer around 2006. And the period when I started having problems was exactly the period when I changed to my current computer. Anyway, after digging through the install files, I discovered that most of the proxy client files were dated 1997. That would’ve been around the time of Win98. I’m actually surprised that it “works” on XP.

Anyway, after uninstalling the thing (and confirming with a colleague that he didn’t have it on his PC), I’m enjoying a fast internet service at work again!

[edit] Addendum:
Two other colleagues also had the same problem, which was also solved by removing the proxy client. As it turns out, around October last year there was a change in proxy-land: the old proxy was turned off and everyone was supposed to be using the new one (which had already been in service for over a year). The proxy client tried to contact the old proxy, which led to timeouts and thus 30-second waits.

Posted in: Work

Microsoft certification, oh joy...

Posted on 2008-07-15 19:27:48

So yeah. Last week I took another Microsoft Certification exam. I have posted my opinion about them earlier.

The result?

  • I will be some 250 euros richer (exam bonus from the employer)
  • My employer will be 140 + 431 euros lighter (exam costs plus my bonus (gross: 431 minus 42% income tax is 250))
  • I get to order some junk from Microsoft (“welcome kit”, including officially printed certificate to hang on your wall!) because I’m now officially a certified “technology specialist” (wooo, I always wanted to be that, NOT!)

That last part was the most horrible of all: I tried to order it last Sunday using Firefox on my Linux PC, but it gave me a weird error: “Your session has timed out or some other error occurred, please try again later. If the problem persists, contact your regional support center.”

I thought, hey, temporary problem, let’s try it Monday morning at work. So I did. With Firefox. And it failed again. Then I tried it again, with IE. First it complained about my shipping address: there had to be a space between the numbers and the letters of the postal code. Weird… it didn’t complain about that when I used Firefox to update my address.

After I corrected the postal code, I tried again with Firefox: no luck, still the same error. Then I tried again with IE: “Thank you for your order, it will be processed”. What the fuck????

One might wonder: why go through the trouble to receive some junk I don’t want anyway? Because I can. And because it sets back Microsoft by, I dunno, $10?

Posted in: Work

Taking over system maintenance: a nightmare

Posted on 2008-07-10 22:07:42

Some time ago, one of our externally hired programmers was about to be leave, because we didn’t have enough work available to keep the external people and still turn a profit. This programmer had a few small systems under maintenance (on his own), and I was about to inherit one of them: a small-ish web application for registering change requests and problems.

It was currently in the last phase of some feature enhancements, including automatically reading a mailbox and adding the mails to the database. The programmer promised to finish his work, and on his last day, when we talked through the changes and the system in general, he assured me that everything was done for the new release, that it was currently in acceptation test and that I wouldn’t have to do anything about it.

I didn’t hear anything about the system for a while: no test comments, nothing. Near the end of June, someone decided that the new features should be released to production, and started to test the changes.

The results? My inbox was chock full of test comments: from features that were only half implemented or not implemented at all, to features that were now broken: some web pages didn’t even load properly.

What happened? The programmer thought the application architecture wasn’t quite optimal and had started to refactor it to an entirely different architecture. And he committed half-finished work to the versioning software, leading to pages throwing exceptions. On top of that, the mailbox was not working: the password had expired.

To be honest, the application’s architecture is flaky, but in my opinion that’s no reason to just change it because you can, meanwhile spending hours and hours on a rebuild that the customer didn’t want.

All in all, this meant that I had to fix just about every corner of the application, test through it again and ensure that everything worked according to specs. The result: an angry customer, an official inquiry into our work process, and a release that was delayed for a month.

In the end, I managed to fix it all, but it’s been a nightmare…

Posted in: Work

Microsoft DevDays impressions

Posted on 2008-06-10 22:33:12

This year the Microsoft DevDays happened again in Amsterdam on May 22 and 23. Through work I could go there for free, so I went on the first day. Some general impressions:

Keynote: Why software sucks by David Platt
An interesting keynote, though David made one goof: he asked the audience a couple of questions, one of them was: “how many of you drive a car with manual transmission?”, expecting to get maybe 10% of the hands up, like is usual in the US. Instead, he got ‘round 80% of the hands, and I’m guessing most of the other 20% are those who don’t drive a car at all. I think David should do a bit more research in his audience before asking such questions…

Session 1: 19 deadly sins of software security by Steve Riley
This spot wasn’t filled until the last week before the DevDays itself, so it was a last-minute topic and speaker, and it shows. I went there expecting to be presented with all 19, but nooo… the title of the presentation is also the title of a book (which the speaker didn’t even write), and we got only 5 of them. Three of them didn’t even apply to managed code (buffer overruns, string formatting problems, integer overflows), and the other two (SQL injection and cross-site scripting) were well known to me already. Pointless waste of time.

Session 2: Embedded Development by Robert Miles
A solid presentation about the .NET micro framework, including demo (sadly done through a simulator rather than the real thing). An interesting topic to me, since I did embedded development on wireless sensor nodes for my masters thesis. However, those sensor nodes I worked with had approximately 10KB of main memory, while the .NET micro framework needs a whopping 512KB. I think I rather prefer TinyOS then, which offers more abstraction from the hardware with a much smaller resource footprint.

Session 3: Increasing software quality through better testing with VSTS by Pieter de Bruin
This turned out to be more of a bird eye’s view of the possible options for testing available in VSTS, rather than concrete examples of how you use them. A disappointment.

Session 4: Five Cool Things to Know and Use for Smart Client Development with Microsoft Visual Studio 2008 and the Microsoft .NET Framework 3.5 by Daniel Moth
The title is a mouthful, and there was a lot of material to cover in the time available. It’s a good thing Daniel talks fast… Whether the cool things were so cool after all I’m still not sure about, but I do know that I won’t be using any of those five things in the near future at work.

I left the building a little disappointed: “Is this it? Is this what other people pay $200+ for?”. No, I’d rather spend some time reading Slashdot: much more informative.

Posted in: Work

Another coding folly

Posted on 2008-05-08 19:25:22

A few weeks ago, I fixed a problem with the same scheduler service I talked about earlier: one of the plugins written is used to extract data from the database and re-pack it in such a way that another (external) program can read it and make pretty management graphs from it. The plugin works by executing a (huge) view on the database, exporting the result to a CSV file, and then running a tool on the CSV files so that another file is generated which can be read from the management program.

Anyway, what the plugin first did:

  1. Execute the view
  2. Read the results into a data table
  3. Write the data table to disk as CSV file

This is fine and dandy, if the data set you read from the database is fairly small. In this case, it had to execute at least 4 views that were around 250MB when exported to CSV file. I don’t quite know exactly how much memory that would take up when it’s stored as DataTable in memory, but I think that’d be at least twice as much.

With the lazy garbage collection in .NET, you’re running into a bit of a memory problem if you execute four such views consecutively. And indeed: the plugin took 2.5 to 3 hours to export the data of several views. Most of the time was spent swapping memory around: the server on which this is running only has 512MB RAM.

My solution to this was: don’t store it in a data table, but write the rows directly to the CSV file as they come in from the database.

The result: the plugin now executes in 30-40 minutes, a speedup of 4.5 to 5, just by changing the way data was read!

Posted in: Work

Pet peeve: fixed size windows

Posted on 2008-04-15 21:48:45

Since I’m working a lot with windows applications at work, I’m getting more and more annoyed by the following problem: the dialogs in most office applications are fixed size.

For example, take the “folder sizes” dialog in Outlook. It’s a teeny tiny window of approximately 390 × 260 pixels, in which all my 32 folders including their sizes are listed, with a scrollbar because only 7 folders can be shown at any time in the window. If maximizing or resizing this window were possible, I would have an overview of all folders without scrollbars. This makes my fancy 1280×1024 screen quite useless: let’s all go back to 640×480!

Even worse is the Outlook address book quick search: if multiple people match the input, a fixed-size dialog box comes up, with a list of matching people. This list includes all details: name, phone number, office, company, email address, etc.. all in a box of 260×70 pixels, with both horizontal and vertical scrollbars. Even worse than that, dragging the scrollbars doesn’t scroll “live” through the list, so if you want to see the email address, you have to scroll sideways to where you think the email address column would be, release the mouse (scroll wheel doesn’t work sideways), check position, repeat.

In addition, I’ve also seen multiple instances where some piece of (Dutch) text was too wide for the available space, resulting in cut-off text.

What were they thinking when they wrote the software? In a way, I can understand it: having worked with the GUI of the .NET framework, I know that creating dialogs and windows that resize well with their contents is nigh impossible.

You want to have a split panel in which the left part takes 1/3 of the space, the right part 2/3, and that this aspect ratio holds when resizing? You gotta code that yourself, reimplementing the Resize() method of the control. This in contrast with Qt, where you can set a “stretch factor” on each of the parts and be done with it. On top of that, Qt widgets will resize themselves automatically to fit their contents, whereas you have to do that yourself in .NET.

Lessons learned:

  1. Don’t use fixed size dialogs for anything other than simple messages
  2. Don’t use .NET for resizable dialogs as it’s a hell to program

Posted in: Work

Something funny I encountered today

Posted on 2008-04-03 22:18:00

Today, while improving the error handling of an application at work, I came upon a rather interesting piece of (C#) code. The application is a Windows service used for scheduling “plugins” that process documents or generate them and whatnot. Anyway, if a fatal error has occurred during the execution of a plugin, the following bit of code is executed after logging the event to a text file:

// dt = timestamp of error
// id = origin of the error
// text = error message
// Always send email in following case
if (type == SchedulerInfoType.FatalError)
{
  Mailer mailer = new Mailer();
  try
  {
    mailer.SendEmail(ConfigurationSettings.AppSettings["BugEmailAddress"],
      "scheduler@xxxxxx.xxx",
      "A fatal error has occurred " + dt.ToString(),
      String.Format(dt.ToString() + "-" + type.ToString() +
        "-" + id + "-" + text ),
      MailFormat.Html,
      MailPriority.Normal );
  }
  catch(Exception ex)
  {
    mailer.SendEmail(ConfigurationSettings.AppSettings["BugEmailAddress"],
      "scheduler@xxxxxx.xxx",
      "An error occurred while sending the error email " + dt.ToString(),
      String.Format(dt.ToString() + "-" + id + "-" + text + "\r\n") + 
      String.Format(ex.Message)
      , MailFormat.Html,
      MailPriority.Normal);
  }
}

Also note that the use of String.Format is rather superfluous in this case as there’s nothing to format…

Posted in: Humor, Work

On the usage of & and &&

Posted on 2008-03-21 23:27:51

A few weeks ago, I had a discussion with two colleagues about the use of “&” and “&&” in C#.

The first colleague asked the second whether the second argument of a boolean expression “a && b” would be evaluated if “a” was false. The second replied that “b” would not be evaluated if you used “&&”, but would if you used “&”.

My immediate reaction was: “eh? ‘&’ is a bitwise AND, and should not be used for booleans”. The second colleague reacted to that like: “eh? what’s a bitwise AND?”

After a short discussion in which MSDN was consulted, the second colleague proved to be right. If you think about it, a boolean is (conceptually) just an int of length 1, and if you do a bitwise AND between two ints of length 1, you get the desired result: true & true = true; false & true (or vice versa) = false; false & false = false.

Still, I think it’s corrupting the purpose of the bitwise AND to use it in exchange for the boolean AND: both arguments always need to be evaluated, while this is not the case for a boolean AND operation where the first operand is false. Still, one can wonder what would be faster…

After running both ways through the compiler and disassembler, the “&” compiles to shorter (IL) code, though that says nothing about speed. However, if one frequently has cases where the condition is of the following type, it’s not wise to use “&”:

if (false & some_really_long_computation()) {
    do_something();
}

Also, the same principle works for the “|” and “||” operators: bitwise OR and boolean OR. In checks for null, using the bitwise version wouldn’t even work as expected:

if (obj == null | obj.method() == value) {
   do_something();
}
// Throws a null pointer exception if obj is null

To prevent confusion and special cases, just use the boolean, lazy operators: && and ||.

Even then, more worrying is that the second colleague didn’t even know about bitwise ANDs. In my opinion, every programmer worth his salt should know at least a more “low-level” programming language than C#, preferably plain C, to really understand what s/he is doing. Today, it seems, there are more high level “scripters” than real programmers. Scripters who don’t have a clue about performance, just because what they throw together works fine on today’s powerful computers.

Posted in: Work

More Sharepoint frustrations

Posted on 2008-02-18 10:25:41

The company I work for is preparing for a merger with another (larger) company. The indirect effect of this merger is that we have to show the other company how “good” our communication to the personnel is, in the form of our intranet.

The current intranet, while outdated in some parts, is still adequate, in my opinion. Okay, its menu structure isn’t entirely logical and there is no search functionality, but it’s fast, clean, and when do we actually use it? Personally, I only check it to see this week’s restaurant menu, and to look up some P&O information every once in a while (twice a year, max).

But now, with the merger in sight, we just have to have a new intranet. And for what? Prestige. These are things beyond my understanding: if the other company interviews just one worker, they’ll know that the new intranet is only a few weeks old and that the old one was crap.

Anyway, since I didn’t have any project assigned at the moment, they tasked me to doing the HTML + CSS of the new intranet. The other guys seemed to be genuinely relieved that I would do that. Whether to take that as a compliment or not is still unclear to me.

So it was time to boot up that Sharepoint image again… horrible, just beyond horrible. The default masterpages are crap, writing your own masterpage has to include certain “controls” of which I don’t know the meaning, otherwise they don’t work. Automatically deploying a “feature” (that is, a bunch of master pages, layouts and stylesheets) is done using a collection of batch files which do certain things. And once you’ve defined a “content type” you can’t change it.

And then I haven’t even touched the subject of webparts… they’re rendered as a table within a table, with a width of 100% set on the outer table, completely messing up my beautiful div-only layout.

Bah! I really hope this is the last time I’m working on a Sharepoint project: I’ve had it.

Posted in: Web standards, Work

Windows forms and HTML: not a good combination

Posted on 2008-01-26 09:57:11

Some while ago, the request of one of our clients was this: they have a web application, and they wanted to publish some news on that. Because adding news management to the application itself was a little costly, they thought, “hey, we have a website as well, let’s publish news on that, and the web application can fetch the news from there”. This works fine: we get the news items as XML from the website, then parse and display it in the web application. All worked fine and dandy.

The client also has a windows application for the same system, which has a few more features than the web application, but works on the same data. So after a while they thought, “hey, let’s add the news to that as well!”. Good idea.

Adding the HTTP requests to this application to retrieve the news wasn’t the problem. The main problem we encountered: the news items themselves could contain (X)HTML to format the text, and the standard windows forms controls do not have support for displaying HTML.

Yes, there is a “browser control” that just calls up the internet explorer rendering engine internally, but that’s only a .NET 2.0 control, and the application uses .NET 1.1. Besides, bringing up such a heavy control just for displaying some simple <strong> and <em> tags is a little overkill. There is a “rich text box” control, but it only accepts RTF and doesn’t seem to know about HTML. In the end, we decided to just convert the HTML into RTF and be done with it. To this moment, only strong, em, br, and paragraph tags are supported… any other HTML tags are silently ignored.

The two other frameworks I’ve worked with for GUI applications, Java and Qt, both supported (a subset of) HTML natively, and with Qt you can put entire HTML pages into a simple label. Funny, that something so simple would be so difficult to do in .NET, especially since HTML seems to be more universal, compared with RTF, specially in the light of the “web centered” way of computing nowadays.

Posted in: Work

Hardware vs. software: same difference

Posted on 2008-01-15 21:25:30

Yesterday, one of my colleagues arrived at work and immediately noticed something wrong: his phone had stopped working. The irony starts here: “Who do I call to get my phone fixed?”

Anyway, a couple of hours later a guy from the “hardware” department shows up and goes through the standard checks: plug another phone to the same cord, check if it works, check the phone on another outlet, etc. After a while he determines that the cable running from the phone to the outlet (in the floor) is bust and needs to be replaced.

Now, those phone cables are bundled with the computer’s ethernet cable and power cord to keep it all neat and tidy and prevent a wire mess. The disadvantage of this is that it’s potentially difficult to replace one of those cables.

Anyway, the repair guy returned with a new cable, and installs it: he has to tug hard to get the old cable out, and plugs in the new one. After checking that the phone works, he packs up his stuff and leaves.

The affected colleague was getting some coffee while this all took place, so when he returned, the first thing he saw: “hey, they fixed my phone!”. And the second thing he saw: “hey, they broke my internet!” Second irony: “who do I email to get my internet fixed?”

What happened? While replacing the phone cable, the guy had pulled the ethernet cable apart. And in such a way that the “head” you put in the ethernet “hole” was still in there, with only some loose wires sticking out of it. An hour later, the same guy showed up again to replace the ethernet cable. Let’s hope he didn’t break anything else.

Makes me think a lot of the software development process: you fix one bug, and inadvertently create another in a different place…

Posted in: Humor, Work

Outlook annoyances

Posted on 2008-01-03 18:51:38

I’ve been working with Outlook (2002) at work for some months now. Since then, I’ve seen some of the more interesting quirks that this rather … complex program has.

First, I’m rather attached to the preview pane: I almost never really open mail in a new window, unless it’s lots of text or it has those funny poll buttons. So, I wanted to mark mail as “read” when I had opened the mail in the preview pane. Where would that option be, when I didn’t know this message area was called “preview pane”?

So there’s the options panel: a mindless collection of tabs and sub-panels and sub-sub-panels with options. Looking at the options panel, we have a couple of tabs. Where will this section be, in “Preferences”, “Email options”, “Email format”, or perhaps “Other”? After scouring through the multitude of pop-up panels I finally found the damned setting: Tools -> Options -> Other -> Preview pane settings -> Mark messages as read when displayed in preview pane. Was it hard to find? Yes. Was it obvious? No.

Second, the reminders. When a reminder for an appointment pops up, there are a few buttons on it: “Ignore”, “Ignore all”, and “Postpone”. The first time I saw such a reminder, I was desperately looking for a button that did so much as “Acknowledge & Dismiss” (also known as, “Yes, I know and haven’t forgotten about it, please don’t bother me again”). The best possible option was “Ignore”, and on subsequent reminders I’ve learned that this is the only possible response that will get rid of the wretched reminder permanently. Rather non-intuitive: “Ignore” means to me like “Ignore this appointment” …

The third interesting tidbit: how the Exchange server deals with replies. It’s nice when there’s a note on an email saying “You have replied to this email on [date] at [time]”, but this is rather unhelpful: if I start a reply, then discard it, it will still say that I have replied to the email, even though I did not. If I start a reply on Monday, finish it Tuesday and send it on Wednesday, it says I replied to it on Monday. So, what good is this functionality if it isn’t accurate?

I’m happy I use Thunderbird at home: it’s so much better on all above points, and the most handy feature is the easy search option that’s in plain sight and not hidden somewhere. At work, if I’m searching for an email, the first thing I do is sort the list and try to find it manually. Only if that fails I will hunt the menus to find the dratted button to the “search messages” option. And even then it refuses to search more than one folder at the time…

Posted in: Work

SharePoint 2007 and web standards

Posted on 2007-11-22 22:05:45

Since the start of this week, I’ve been tasked with writing up some HTML and CSS standards for our SharePoint team at work. As resident self-proclaimed “CSS guru”, I had already helped them to solve a few CSS problems they were having in the past few months. Most of those CSS problems were caused by SharePoint itself: it generates awfully bad HTML, and some default style rules. Furthermore, if a page is in “edit mode”, there are all kind of buttons and a floating toolbar added to each text field and text area, making a pixel-perfect design fall apart because boxes are suddenly 50 pixels wider than they are normally.

Anyway, so I’m in charge of writing up some standards. I’ve done that before both at HeavenGames and at my previous job. However, these standards will be specifically for SharePoint, so I finally got my hands dirty and acquired a VMWare image with Sharepoint on it from one of the Sharepoint guys, to see how bad it really is.

One of the boys helped me install one of the sites they made on it, and set up a “default” site as well, so I could see how Sharepoint thinks things should be.

When loading a site for the first time, one gets a mysterious error which says “try again later”. Hitting F5 instantly will properly load up the site. On top of that, everything is mighty slow when running it in a virtual machine: Sharepoint only runs on Windows Server 2003, and our workstations all run WinXP so development has to be done in VMWare images.

One look at View -> Source on the default site was more than my poor eyes could handle. A handful of atrocities:

  • HTML 4.01 transitional doctype. This wouldn’t be so bad (it was a full doctype including URL), if not for the next point:
  • Parts of the page in XHTML (self-closing tags: />), part of the page in HTML.
  • Invalid HTML too: a <span> with a <span> inside (okay), with a <table> inside. A what? A table, which brings us to the next point:
  • Tables used for layout. Come on, this is 2007 we’re talking about, not 1997.
  • A default stylesheet which contained at least 10 errors at first glance: the font-size was set in 10 different places, and always with a space between the amount and the unit, which is plain wrong. Internet Explorer understands it, the rest of the world doesn’t.
  • HTML generated by the visual editor looks like this:
    <p><span><span><span><span><span class=ms-rteCustom-ArticleTitle>Some
       text</span></span></span></span></span></p>
    

I could go on, but I closed the source viewer at that point, dismayed by what I saw. So this is how Microsoft expects us to develop websites, even though they’ve switched their own sites to (more or less) table-less layouts? Granted, it’s possible to do that in Sharepoint as well, but the site menus and management options will still be done with tables, inline CSS, and a buttload of Javascript which does not even run on alternative browsers such as Opera. They tout support for Firefox 1.5+, but editing text in a “rich textbox” still doesn’t work.

No wonder people have been having a lot of problems with it.

And I’m supposed to write some guidelines and standards for this mess? Ugh. The project leader for this moaned today: “do you think anyone at Microsoft uses Sharepoint at all?” My answer: definitely not.

Posted in: Web standards, Work

The nonsense of Microsoft Certification

Posted on 2007-11-08 21:54:00

When I started to work at my current job, I had to follow a 6-week course in .NET programming, followed by a Microsoft certification exam. If I didn’t pass the exam (.NET 2.0 Foundation), I would be fired.

The course started with reading through the book that covers all stuff you can possibly get in the exam. The next four weeks were dedicated to writing a program that will never be used and will be thrown away like yesterday’s meal left-overs after the course is over. Nevertheless, it was interesting enough.

In the last week, we were supposed to be preparing for the exam. Here comes the interesting part: the questions and answers to those questions of the exam itself were available. In effect, all we had to do was learn those questions and answers by heart and we would pass.

The exam itself was therefore a doozy: out of the 80-or-so possible questions, we got 45 on the exam. All of the question were either multiple-choice, or “select all that apply from the following list”, and, surprise, surprise, even the answers weren’t put in a random order. On top of that, there were several questions concerning DES encryption, and all of them had D as answer.

So, actually, passing the exam means that you can successfully memorize 80 questions and their accompanying letter(s).

After hearing multiple colleagues pass several other exams in the same way, I can conclude that there’s absolutely no value in the Microsoft certification process. Its only purpose seems to be to keep managers happy, and to fill Microsoft’s pockets.

I’ve heard that companies get a discount on Microsoft products if an X percentage of their people is certified. One question then remains: what’s cheaper, paying the full price, or paying less but having to pay for the exams your employees take? Only Microsoft knows …

[edit] I just heard at work that being a Microsoft Gold Partner means that our company saves about 50,000 euros in software costs per year. That’s quite a sum, but I still think this whole certification process is nonsense.

Posted in: Work