Archives

Archives / 2005
  • Blizzard Screws Up - World Of Warcraft

    I strongly advise everbody NOT to buy World Of Warcraft!

    My brother bought the game today, I installed it, and then I wanted to create an account for him. And that's when the trouble began...

    It seems Blizzard does not care about money, since all it's account creation pages are unavailable, throwing errors everywhere.

    Or wait, they get the money from you at the shop, and then make it unable for you to use what you bought an hour ago!

    Judging from their own forums (which I cannot post on because I don't have an account, and cannot create either) this problem is going on for some days.

    First a normal 'Service Temporarily Unavailable' error, indicating their servers can't handle it. Which is really very bad for their image, a company like Blizzard, which can't keep their main billing pages up and running? Normally it's the other way around, the 'we want your money'-pages always work

    And then everything is just falling appart, have some errors:

    • [ServletException in:/WEB-INF/jsp/authkeyView.jsp] /WEB-INF/jsp/authkeyView.jsp(86,18) Unable to load tag handler class "org.apache.taglibs.standard.tag.el.fmt.MessageTag" for tag "fmt:message"'

    • [ServletException in:/WEB-INF/jsp/agreementView.jsp] File "/WEB-INF/jsp/base/language.jsp" not found' [ServletException in:/WEB-INF/jsp/base/footer.jsp] Error running /usr/local/java/bin/javac compiler'

    • org.apache.jasper.JasperException: Unable to compile class for JSP

    • Error running /usr/local/java/bin/javac compiler
    And if you happen to not get an error, it will simply tell you that your session timed out, after 2 seconds...

    Slow poke! You took too long to complete the Account Creation process and your session has timed out. You will have to start again from the beginning. Sorry!

    If you are persistent and can get through, to step 4, you notice you can select a game-card as a paying option. (After that, it dropped out again) But if you want to use the guest-account that comes with the box, that option is gone... It's a guest account to play 10 days, but they want your credit card info for that...

    Don't expect any response from Blizzard either...

    I'm really disappointed, 45 EUR for the game and then you can't play it!

    Best thing, even their contact form is throwing errors. And nothing is mentioned on the main site, everybody has to figure it out themselves.

    I'm going to start calling them starting from Monday untill I can create the account, otherwise they can give my money back and take their game back untill they get their crap together.

    Good game, terrible service...

    If anyone from Blizzard reads this: Try to turn this negative publicity into something positive...

  • Changing Pocket PC Language

    The Pocket PC I recently received was completely in French, so I figured 'I'll just change this to English'.

    It can't be that hard, can it? Apparently it was trickier then I thought.

    The Pocket PC has the OS in it's ROM, and it has limited ROM, so no multilanguages in there.

    It quickly became obvious to me the ROM had to be flashed with an English version, but where to get it?

    I didn't buy the Pocket PC, so asking Dell to give me an English one probably would fail, and from various messageboards I discovered they won't do it anyway.

    So, where to get it? From the Dell site I guessed, in the download section there was an English update for Windows Mobile 2003 Second Edition.

    Since this update just flashes the ROM and puts the new version in it, I guessed this was ok.

    But when trying to flash it, it started complaining about being the wrong language.

    Apparently French can only be upgraded to French, and since I don't speak French fluently this wasn't practical :)

    So, search engine to the rescue. I found this post on Aximsite, a site dedicated to Dell Axim resources.

    It seemed logical, get the English and French ROM, make the updater believe the English ROM is actually a French language, and flash.

    The process looked obvious to me, so, let's get started!

    I opened up the French ROM and English ROM in a hex editor and located the differences:



    Note:

    This is different from the forum post! It's not the first 7 lines you have to copy paste.

    Pasting the first 7 lines results in an Integrity Check error. It's enough to change everything before the "AXIM30".

    After having modified the English ROM with the new header, I saved it to the French updated directory, overwriting the original French ROM update. (So, now you have a filename which indicates it's a French ROM, but it's actually the English ROM with the French header)

    I did the same for the other image (there is a C and an N image).

    Now I ran the updater, which did not give me an error about Integrity Check anymore, and also not about wrong language.

    It succesfully updated the ROM and after the Pocket PC restarted, everything was English!

    So, now I have an English Pocket PC :)

    Ofcourse, the disclaimer on my blog applies especially to this post, as this is not something you should do quickly if you have no technical skills.

    So: I (David Cumps) cannot be held responsible for any damage what-so-ever that might come from this post. You do this at your own risk.

  • XP SP2 using Alternate Data Streams for Security Warnings

    A while ago I blogged about Alternate Data Streams and how they are hidden from the users.

    At that time, you could presume when an ADS was present, it was something special, because not many normal files have an ADS attached to it.

    But yesterday I got an interesting question about XP SP2 showing a Security Warning when you want to execute something downloaded from the internet.

    We guessed Alternate Data Streams were used, so I checked this out and it turns out XP SP2 indeed adds an ADS when you download a file from the Internet.

    This stream is called Zone.Identifier and contains the following information:

    D:\Tmp>more < TestZip.zip:Zone.Identifier
    [ZoneTransfer]
    ZoneId=3

    Since SP2 did this, it probably means it's a modification to Internet Explorer.

    So, I got the Firefox 1.0.3 and downloaded a file with the default settings, and as I guessed, no ADS with Zone.Identifier.

    (I believe Firefox doesn't have such thing as Zones, but it would be nice if Firefox added this ADS to let the new Security Warning, informing you it's a downloaded file, come up).

  • Presentation: eID in .NET

    Yesterday I gave a presentation about eID in .NET, if somebody is interested I have uploaded the presentation together with some sample code to my personal website: Cumps.be

    The purpose of this session is to give an idea about what's possible with the eID card in .NET and what is needed to get it working.

    Some background information about eID is provided, after which four possible usage scenarios are described and what is needed to build them.

    Note: The code are just technical tryouts, not ment to go straight into production :) Provided "AS IS".

  • A day in Paris - Visual Gaming Finals

    Yesterday I got invited by Microsoft France to Paris, to the Wax Club, to see the French Visual Gaming Finals.

    My team mate, ZogStriP, participated in the High School competition there, so it was very exiting!

    It was also a very good experience to learn french ;) And to get to know Paris, where the people are really crazy in traffic. Apparently, stop signs are just for decoration... Green or red, it all means the same :p

    They played the games before and played the replay files on big screen, which were also recorded by a french television station. The station is on sattelite and is called GameOne, I don't know yet when they will broadcast it. I'll have to find someone who can digitally record it, because they interviewed me as well :p

    So, the High School competition: there were 2 pools, one with 3 games and one with 6. Our best competitor was Z² who lost with a very little difference each time.

    In the end, our dll won the High School competition! Resulting in a PDA for my team mate (I'm too old for High School ;p).

    But here is where something special happened, he gave me the PDA!

    He recently became MVS in France and just received one as well. Isn't it a nice gesture? Microsoft France made a very good choice making him MVS, he really deserves it with this kind of attitude, a real teamplayer. (So, for all French companies reading my blog, go to his blog and check it out, he would be a great asset for your company!)

    After this, it was time for the Open Division.

    There, our bot had a hard time. We lost the quarter finals by 1 point, due to a bug causing the AI to stop :/ So, chances for 1st and 2nd were gone. Finally we ended up at the fourth place, because the same bug occured again in the next game, which is really a shame.

    One thing is sure, being 4th already is good, especially in France, the country of Visual Gaming, now we only have to fix this bug :p Result of ending on 4th place: A fingerprint reader and I also got interviewed, in English :p This is really a nice example of "dissolving boundaries" :)

    And to finish, here's a picture of ZogStriP and me (ZogStriP right, me left):



    To ZogStriP: Thanks!

  • eID.Chat

    To demonstrate the possible use of eID in Windows applications, I created a small client/server application. This application contains a central server, which listens on a certain port for possible clients. After a client connects, it has to authenticate with the user’s eID card. The server then validates the certificate and checks if it is in the list of allowed users to connect.

    If everything is valid, the client can connect and chat with other clients. Every message send to the server is signed by the client and validated, making sure each message arriving at the server originated from that user. The server then extracts the username from the certificate and uses this to broadcast the message to the other clients. Ultimately, this means users only have to insert their eID card, enter their PIN and are safely chatting away with others.

    The steps used to authenticate a client are as follows:


    • The client asks for a logon.
    • The server sends a random challenge back to the client and remembers this value.
    • The client signs this challenge and sends the signed challenge back to the server along with its certificate.
    • The server first validates if the serial number of the certificate is in the database of allowed serials, otherwise the client gets denied.
    • After this it validates if the certificate is still valid. If it is expired or revoked, it denies the client.
    • The server takes the public key from the certificate and verifies the signature of the client.
    • If the signature is valid, the client is really who he claims to be, and is allowed to logon. The client certificate is stored to be used for future communication verification and to extract the client’s name to include in the broadcasted communication.
    These steps can be implemented with CAPICOM or WSE in C# to provide authentication with eID.

  • eID

    Another thing I had to do was a feasibility study on eID. This means I had to look into this technology, research what the possible uses are, if they can be implemented and how they have to be implemented.

    The eID project is an initiative from the Belgium government, to replace the current passport of every citizen by an eID card. This is a smartcard which looks like the current Belgian passport, and contains certificates and identity data on its chip. Main functionalities of the eID card are data capture, authentication and digital signature.

    Data capture is used in applications to read identity data from the card, such as name, address, gender and others. This gives an advantage to business applications which use this data, because it takes less time to enter the data, and no more typing errors can occur.

    Authentication is done by using a certificate on the card. When the private key of the certificate is accessed, the eID middleware, provided by the government, will show a dialog asking for the PIN code of the card. Normally, only the owner of the cards knows this code, and can allow access to the private key. Authentication could be used on websites, physical locations, client-server applications and others.

    A digital signature can be used to proof that some content originates from a certain user and has not been modify along the way. Possible uses are signing an email or a document. With eID, a digital signature has the same legal proof as a written one.



    Every eID card contains an authentication and digital signature certificate, signed by the Citizen CA, which itself is signed by the Belgium Root CA.

    When a citizen request and eID card at his municipality, it gets registered at the population registry, which requests a new certificate. After this a citizen can logon to a website, which will validate the certificate trough the OCSP protocol with the CA.

    On the eID file system there are two main directories. One contains the specific user data in a proprietary format and the other one is PIN protected and contains the certificates.

    Windows applications can use the Crypto API to access the certificates while everything else can use PKCS#11. There are also toolkits which hide the internal workings of the card.

    A certificate always has to be validated, meaning the validity period has to be checked and the serial number of the certificate has to be checked with OCSP or against a CRL.

  • Virtual PC - Differencing Disks

    During my internship I had to test against different kinds of products, and to be sure everything worked on a clean install of this product, I had to create multiple virtual PC’s. One method of doing this was to create one clean Windows 2003 installation inside Virtual PC and copy this image to a new folder for every different server I needed. This was the method I started with, but one disadvantage was that it required a lot of disk space, as the base image already required 1.8 GB.

    A solution to this problem was to use a feature of Virtual PC, called Differencing Disks. This allows for the creating of a base read-only image, which is called the parent, which can be shared with unlimited other virtual machines, the children.



    Every child stores their disk changes in a separate file, making it possible to have one clean Windows 2003 parent image, and having a child which only adds Windows SharePoint Services to a separate file. The combination of parent and child would then become a Windows 2003 machine running Windows SharePoint Services.

    This way, having a lot of different children uses a lot less space than having to copy the complete base image each time.

    Additionally this method also can be used on a network to provide complete base images to all network clients. Making it possible to create an archive of base images for each platform (Windows 98, 2000, XP, 2003, Linux, BSD, …) and placing them on a read-only network share, ready to be consumed by all users creating their own local child disks.

  • Asp.net 2.0 On Tour



    On March 2, 2005 the ASP.NET 2.0 On Tour came to Belgium, Brussels. This is an international tour, all about the latest Microsoft technology, featuring speakers such as David Platt and Dave Webster.

    The subjects of this event were about showing what ASP.NET 2.0 and Visual Studio 2005 had to offer, and how to migrate to these new products and technologies.

    One of the sessions was about “Personalization & Membership in ASP.NET 2.0”, by Gunther Beersaerts and Bart De Smet, which was very nice thanks to the good balance between demos and slides.



    They talked about the Membership Service, which takes care of the management of users, password generating, validating logins and everything else related to authentication. Other areas of ASP.NET 2.0 they touched were the Role Management Service and the Profile Service.

    Trough the Role Management Service, everything related to authorization based on roles can be done in a simple way with static methods to perform key management tasks. While the Profile Service takes care of storing user-specific data persistently in a strongly typed manner, thus making it very easy to customize your site to the logged on user.

    This event really gave a good view on what is to come in the web development area.

  • Blogging

    Blogs are a new communication medium, mainly used as a single-direction information channel. On a blog, the owner publishes new posts, which can be read and commented on by readers.

    This model looks a lot like a forum where treads are started and replies are given, expect on a blog, only the blog owner creates new posts. Some compare this model to an online diary or the private newspaper of an amateur journalist.

    The greatest strength of blogs is the fact that they are very personal and contain a lot of valuable information. They also show the human side of companies when employees are blogging.

    Another great advantage of a blog is syndication. This is the use of a particular XML file, using a described schema, called an RSS-feed or an ATOM-feed, to display all the information on a particular blog. By using so called feed-readers, it is possible to read several blogs from one application.

    As a part of my internship, I had to post articles about what I did on my blog. Most of these articles correspond with the content of this report.



  • Virtual PC

    Another tool I had at my disposal was Microsoft Virtual PC. This is a product that enables you to run several operating systems inside your existing one, each one of them acting as a real PC.



    This was very useful when I needed to test some of the things I created on a different server, a Windows 2003 server running Windows SharePoint Services for example.

    After I had created my Windows 2003 image, I could use it on any PC I wanted to work on, on my laptop and on my desktop as well. This proved very useful when having to test against a specific machine.

    A virtual PC can share its network with the host operating system, making it possible to run several virtual machines at one, simulating a complete network, acting as if it were unique servers on the network. This was a very nice feature before deploying something to the real production servers.



  • NSurvey - Microsoft Layout

    As this application was going to collect feedback from Microsoft events, it had to look like it belonged to Microsoft, and it had to be designed professionally. To do this, I visited the Microsoft site, and saved the page to my dev pc. There I stripped all the content and created a template with two user controls, SiteHeader and SiteFooter.

    The next step was to include the previously created SurveyListControlOverview on the Default.aspx page to provide a starting point for the user.



    When they user selected a survey and clicked the button, the OverviewSurveyId property was retrieved and forwarded to the Survey.aspx page, which displayed the survey in the same layout, together with the survey title.



    If an error occurs, the user gets redirected to a generic error page and an email gets dispatched to the site administrators.



    A contact page was also added to provide a contact person for users having problems or questions.



    The last step in creating the layout was testing if it worked the same in Internet Explorer and Mozilla Firefox. Luckily it worked the same from the first time and the layout was finished.

  • NSurvey - Survey Overview

    The first thing I noticed is the small dropdown in the admin section listing all available surveys. This would become my starting point for users, a perfect place to choose the survey they want to take.

    I tracked this down to the SurveyListControl user control which I inherited to create SurveyListControlOverview. This user control removes to automatic postback when it’s in overview mode and also provides an OverviewSurveyId property to indicate the selected survey. It also displays all surveys, because it had to run in anonymous mode, without users having to log on before being able to answer. A shared password would be provided on the event, giving access to the survey.

    After this, the user could select a survey from the dropdown list. The only problem was that the choices were ordered by creation date, which would become a problem in the long run when a lot of surveys would be available. To change this I added a simple ORDER BY Title in the vts_spSurveyGetList stored procedure.

    At this point, I had a dropdown list with all surveys listed alphabetically to add to any aspx page I wanted.

  • NSurvey

    For one of the projects I had to do, I had to create an online survey application, which would be used to gather feedback from Microsoft events. Up until then, feedback was collected by handing out a form and entering the data manually.

    As I was given free choice on how to solve this problem I suggested using an existing open-source framework and extending it to meet the requirements. This suggestion was quickly approved because on one side it meant commitment from Microsoft towards open-source and on the other hand it prevented re-inventing the wheel. The project used for this solution is called NSurvey. This provides a survey framework, making it very easy to setup surveys, add questions, add users, do mailings, implement security on a survey-based level, perform statistical operations on the answers and add new functionality by extending on existing classes.



    NSurvey is an ASP.NET application, written in C#, which uses a SQL Server back-end, using stored procedures, and various other layers. The installation of NSurvey went very smoothly because of an msi file, placing all files in their correct location.

    I started by testing the application and learning the big structure of how it worked. During this small test round, I began thinking on how the final solution would look.

  • Reflector

    One of the tools I had in my toolbox was Reflector. This tool is written by Lutz Roeder and allows you to examine a .NET assembly. Through the use of reflection it can display all namespaces, classes, methods, properties, events and fields in the dll.

    It is possible to view the code in IL, C#, VB.NET and Delphi. Some of the useful features are the Call and Callee Graph.

    The Call Graph shows you which items are used by a given method, while the Callee Graph displays all the methods that call a given method.







    Forgot something for blog readers, the url where to get it: http://www.aisto.com/roeder/dotnet/

  • Imagine Cup

    Important note (to not get confused):
    The text below (and the future ones) is written in the past tense, because they are text that have to go into a book for school, which you have to write after your internship, giving info about what you did. But I'm writing it piece by piece, because otherwise it will be too much to remember, and a lot less detailed :)



    For the second year in row, Microsoft organized the Imagine Cup. This is an international contest with various categories. As a part of my internship, I had to compete in the Visual Gaming and the Information Technology category.


    The IT category was about diving into solving real life IT problems. With questions about networks, databases and various servers the content was really diversified.

    You get 30 minutes to solve 30 questions, scoring 3 for each correct answer, 0 for a blank answer and -1 for a wrong answer. The first 5 people of a country advanced to the next category, which was the first goal of my internship.

    After having spent half an hour taking the quiz, I had to wait a day to get the results, to prevent abuse. My score ended up being a 66/90, placing me at a shared first place in the Belgian competition. My first goal was reached.



    The Visual Gaming competition was a coding challenge. In this competition you were given an SDK, which included a 2D-viewer, 3D-viewer, documentation and the required assemblies.

    In the VG competition you had to write code for robots in a small game, their brains, or also called, AI. The main things I learned thanks to this competition were algorithm-knowledge, performance issues and logic thinking.

    Algorithm knowledge was useful to find optimal actions for the robots, for example, the A* algorithm explained above, helped to find the shortest path. Other algorithms such as Traveling Salesman Problem also had to be solved and implemented to gain a strategic advantage in this game.

    Performance was a very important aspect in the VG competition. Because your code had a limited time-window it could run in, it had to be very fast, making sure it stayed inside that window. This was the reason why I implemented a binary heap in the pathfinder, and why I made a lot of performance optimizations, such as preventing boxing and unboxing, storing certain 2-dimensional arrays in a 1-dimensional and cutting back on object initializations.

    But knowing how the algorithms work and how to tweak for performance alone didn’t do the trick. The difficulty lies in making it all work together and operating as a big unit, working its way to a victory. That’s where logic thinking came in, to determine what tactics to use, and which algorithms to use.

    After having played with this an afternoon I managed to get 1325 points, which was enough to get to Round 2, and to achieve another internship goal. My personal next goal was to try to score as good as possible in the second round.

    (Which I will talk about when the second rounds is on its way :p)

  • Internship at Microsoft

    As some of you might now, I'll be doing my internship at Microsoft.

    One of the things I'm supposed to do, is blog about my time there.

    So, because of this, there is now an MS Internship category on my blog.

    Ofcourse not everything I do will be posted, but I'm sure there will be enough :)

    I'm really looking forward working there!

  • DevDays 2005 Belgium - Day 1 - Full Report

    Allright, currently it's a very busy time, but some people asked for more info about the previous DevDays 2005, so here is my attempt :)

    First of all, I haven't taken any pictures this time, because I had to give my bag away at the start, and the camera was in there.

    The first presentation after Bill Gates' keynote was by Philippe Destoop about Closing The Gap Between Development And Operations: A Developer's Perspective.

    The main problem lies withing a lack of communication between developers and operations. Depending on the size of a company Operations has either little power or unlimited power. In either case, not talking to Operations can lead to your company suffering loss when your application crashes, or when Ops have a lot of power, prevent your app from being deployed.

    The solution to this is to work together with Ops during development and to make them like your app ;)

    You do this by communication a lot and by implementing monitoring and control functionality into your app, to be used by Ops later on.

    The good thing is, a lot of the code needed to do this already exists, in the form of the Enterprise Library. More particulary, the Logging and Instrumentation Application Block.

    Using this block you can raise events and timed events to about anything you want. Making it possible for Ops to receive these events in their monitoring programs and do something with it.

    You can view some examples of code in the presentation.

    Next presentation was IT Fortress: Developing On A Secured Infrastructure by Raf Cox.

    He talked about security, first examine what you want to protect and why, then choose a technology to protect it with, and don't be shy of using built-in technology of the OS, it's better then re-inventing it.

    In a secure environment you have to be aware as a developer that your application isn't as "free" as it might be in your development environment. It can be run as a normal user, not fully trusted, with limited network access.

    You always have to think about possible security bugs, if you don't, they will be there and hackers will know them.

    After this he explained the possible authentication choices in Windows, how Basic Authentication, SSL and Kerberos works.

    You can use Windows for authorization as well. By using the Authorization Manager it is possible to define common roles in your organisation with common used operations and define their permissions in the manager in a central place. After this applications all can use this information.

    Last part of the presentation was about using least privilege. You can read all about it in the presentation.

    Third presentation of the day was by Clemens Vasters about Interop & Integration: Best Practices For SOA With Today's Technologies.

    During this presentation everything that has been shown is readily available, no future products were used, which is a nice thing for a presentation! :)

    The presentation was based on a demonstration example to explain how service-oriented architecture works.

    Basicly every functionality in the example is a service, when you take a look at the big overview it looks like a very modular system where each service has one well-defined task and works together with other services.

    Some properties of these services are autonomy, where each service control and hide their state, services also are never hard linked to each other and are platform independant, so no returning DataSets.

    Services also contain "edge code", which is code specifically written for the borders, and do nothing but forward to the real code that handles the logic, which are basic classes.

    This was a very energy-rich session, with a lot of new information, which is still being processed by my brain :)

    You can view all the diagrams in the presentation.

    Next presentation was Best Practices For Windows Forms Development by Marc Ghys and Bart Debeuckelaere.

    The first issue was to improve performance for Smart Clients. This can be done by using a lot of caching, compress the SOAP messages, and possibly use ngen.exe to precompile your assemblies. Also when you have to do something intensive, do it when the user expects it, for example, make a web-service call when a user clicks a submit button while showing a loading msg, and not when he leaves a textbox for example.

    Next was how to secure webservices, by using the integrated authentication mechanisms in Windows and by using WSE.

    Other things during this presentation were creating your own controls to provide a consistent look and feel in your application, using code generation to save time and to have consistent code. Then some info was given about ClickOnce, but the demo failed and then the time was up. But you can view the presentation for more info.

    At the end of the day there was a community block left. These were the Lightning Talks where I talked about Alternate Data Streams. And these are the only photos I have of the day, taken by Tom Mertens, tnx!



    This concludes day 1, tommorow I'll try to do the same for day 2, I also ran out of time now ;)

  • DevDays 2005 Day 2 - Exams & Internship

    The Developer & IT Pro Days 2005 are over, as well are my exams.

    During day 2 we saw what is going to come with the next .NET version (partial files, generics, ClickOnce, ...) and what mistakes an admin can make in his IT setup and how to fix them.

    The last one was really funny, but sadly enough those mistakes are often made, running SQL Server as SYSTEM, SQL Injection, simple passwords, no defense in depth, logging on as domain admin, ...

    My exams are also over now, the last one of my current education, coming up next is a 3-month internship at Microsoft.

    And just like Tom's doing, here is a picture of the Channel 9 guy, sitting together with the Azlan mascotte on the tower of stuff I had to learn these last 3 weeks for my exams :)

  • Is a CAPTCHA test really the way to go?

    CAPTCHA tests have become more and more popular. These visual confirmations needed to do some action, post a reply, register somewhere, ... can now be seen a lot more then a year ago.

    The description of a CAPTCHA test:

    A CAPTCHA test is a program that can generate and grade tests that:

    • Most humans can pass.
    • Current computer programs can't pass.
    But is this really such a good solution? I have just read a post about the Windows Genuine Advantage Program giving blind users problems, because they have to provide the key, which can only be read, which is a problem for blind users.

    Something that I immediately thought of was the CAPTCHA test... If this gets widespread, all blind people will basicly be unable to do anything. They cannot see the test, their browsers can't help and then can't register, reply or anything else where there's such a test.

    There isn't a real solution to it, you can't give the blind any information about the test, because that would beat the purpose of the test. IF someone invents software to help blind people with it, spammers can use it as well, so I don't see a solution to help blind people with CAPTCHA, besides not implementing one.

    Your thoughts?

  • Personality Tests

    Following Firoz Ansari and taking the Intelligence Quiz my result is:

    Your Dominant Intelligence is Logical-Mathematical Intelligence
    You are great at finding patterns and relationships between things. Always curious about how things work, you love to set up experiments. You need for the world to make sense - and are good at making sense of it. You have a head for numbers and math ... and you can solve almost any logic puzzle. You would make a great scientist, engineer, computer programmer, researcher, accountant, or mathematician.

    Makes sense since I'm a coder :p

    And while I'm at it lets take the Number Quiz as well:

    You Are the Reformer
    1
    You're a responsible person - with a clear sense of right and wrong. High standards are important to you, and you do everything to meet them. You are your own worst critic, feeling ashamed if you're not perfect. You have the highest integrity, and people expect you to be fair.

    Can you see I currently have some spare time, but just not enough to do anything usefull? The Element Quiz:

    Your Element Is Earth
    You excel at planning and strategizing. You could be a champ at chess or Survivor. Well grounded, you are able to be realistic and rationalize. On the inside, you have a hard core. It's tough to phase you. You are super productive, and you are able to think anything through. Focused and super charged, your instincts are a good guide for your next step.

    And according to the Age Quiz I'm five years older than I really am :p

    You Are 25 Years Old
    25
    Under 12: You are a kid at heart. You still have an optimistic life view - and you look at the world with awe. 13-19: You are a teenager at heart. You question authority and are still trying to find your place in this world. 20-29: You are a twentysomething at heart. You feel excited about what's to come... love, work, and new experiences. 30-39: You are a thirtysomething at heart. You've had a taste of success and true love, but you want more! 40+: You are a mature adult. You've been through most of the ups and downs of life already. Now you get to sit back and relax.

    And that's enough for today's quizes :)

  • Adding Search to my Blog

    Important Notice:
    If you want to add this to your blog, read:
    http://www.google.com/services/terms_free.html
    http://www.google.com/stickers.html
    http://www.google.com/permissions/guidelines.html

    As noted in the comments to this post, the code below violates their agreement. You can fix this by putting a Google logo of the stickers site next to your search, you can't modify the logo! If you use a search, you can only put Google on your site, not together with MSN.

    If you do all of this, you're fine. Now you have three choices:
    1. You don't care and use it like this in minmalistic form, some say your site will be removed from Google when doing so.
    2. You make the changes I just said, and everything is fine, it just doesn't look that much finished anymore :)
    3. You remove it all together. (my choice) 
    The choice is yours, never complain to me if Google removes your site :p

    Now back to the post.

    After reading Heather's post about searching and taking a look at Geoff Appleby's JavaScript function I decided to add a Search box to my blog as well.

    Here's a step by step explanation on how to add it:

    • Go to your blog's Admin section.
    • Go to Options.
    • Go to Configure.
    • Add the following to 'Static News/Announcement':
      1<h3>Search</h3> 
      2<input class="BlogSearch" type="text" name="searchBox" id="blogSearchText" value="" onkeypress="return blogSearch(event, this);">
      3<input type="button" value="Search" onclick="return blogSearch2('blogSearchText');" class="BlogSearchButton">
      4<script type="text/javascript">
      5
      6function blogSearch(event, oInput) {
      7 var keyCode = (event) ? event.keyCode : keyStroke.which;
      8 if (keyCode == 13) {
      9    top.location = 'http://www.google.be/search?q=' + escape(oInput.value) + '+inurl%3Acumpsd+site%3Aweblogs.asp.net';
      10    return false;
      11 } return true;
      12}
      13
      14function blogSearch2(oInputId) {
      15 var oInput = document.getElementById(oInputId);
      16 top.location = 'http://www.google.be/search?q=' + escape(oInput.value) + '+inurl%3Acumpsd+site%3Aweblogs.asp.net';
      17 return false;
      18}
      19</script>
    • Replace cumpsd with your blog url.
    • Save.
    • Admire your new search.
    If you want to use MSN as a search engine use the following code (and replace cumpsd with your own url):
    1<h3>Search</h3> 
    2<input class="BlogSearch" type="text" name="searchBox" id="blogSearchTextMSN" value="" onkeypress="return blogSearchMSN(event, this);">
    3<input type="button" value="Search" onclick="return blogSearchMSN2('blogSearchTextMSN');" class="BlogSearchButton">
    4<script type="text/javascript">
    5
    6function blogSearchMSN(event, oInput) {
    7 var keyCode = (event) ? event.keyCode : keyStroke.which;
    8 if (keyCode == 13) {
    9    top.location = 'http://search.msn.com/advresults.aspx?q=' + escape(oInput.value) + '%20cumpsd&FORM=SMCA&adv_f=all&adv_dom=weblogs.asp.net&adv_depth=&adv_dt=html&adv_dt=pdf&adv_dt=ppt&adv_dt=msword&adv_dt=x';
    10    return false;
    11 } return true;
    12}
    13
    14function blogSearchMSN2(oInputId) {
    15 var oInput = document.getElementById(oInputId);
    16 top.location = 'http://search.msn.com/advresults.aspx?q=' + escape(oInput.value) + '%20cumpsd&FORM=SMCA&adv_f=all&adv_dom=weblogs.asp.net&adv_depth=&adv_dt=html&adv_dt=pdf&adv_dt=ppt&adv_dt=msword&adv_dt=x';
    17 return false;
    18}
    19</script>
    Update: Fixed script to work with Firefox as well (removed window.navigate and fixed event parameter and keyCode)
    Update2: Added escape(), MSN version and site: restriction
    Update3: Fixed MSN version, had a typo in the function name and id
    Update4: Added important notice about Google terms. (This does mean I have informed you of it and you don't have to comment here about legal issues...)

  • Trying Microsoft Fingerprint Reader

    Today I got the chance to experiment with the Microsoft Fingerprint Reader and I love it!

    I believe this is very usefull for elder people who can't remember any passwords at all. For example, I can now setup a computer for my grandmother, and the only thing she has to do when use it, is touch the reader briefly.

    Yes, I already hear people saying, why not set it to logon automatically for her or use a password manager? Well, I don't want to have it login automatically, because it could have multiple users, like her grandchildren. And I didn't use a password manager, well, because I had to change to test this, which is in essency a sort of password manager.

    Bringing up the point about her grandchildren, it can be configured to detect who touches the reader and log in to the right account as well, and also allows fast user switching by a touch.

    The installation was very easy and clear, with graphics explaining how to register your fingerprint with the reader. Everything is very dummy-proof, making it perfect for a normal user on a normal XP installation.

    As a normal user mostly uses IE, it doesn't matter if it doesn't work 100% in Firefox (as I have read somewhere). I like the simplicity, the wizard to create a new website logon is also very clear, indicating which field is the username field, the password field and the logon submit button.

    It does say it shouldn't be used for corporate networks, but as this is mainly a home product, that's not a big problem. It's really a usefull tool.

  • BlogCast - Alternate Data Streams

    Some time ago I saw something about Alternate Data Streams, but I can't find the source anymore to give credit :(

    Alternate Data Streams are a "feature" of NTFS, making it possible for one file to store data in multiple streams, attached to the file.

    I have made a small BlogCast about Alternate Data Streams, demonstrating them using a cmd, and a C# program.

    It's 8 minutes in length, 6.2 MB in size and I also included the used source code.

    This is my first attempt at a BlogCast, and in English, if you have any comment on how to improve it, please tell me :)