Contact

admin

About Me · Send mail to the author(s) E-mail · Twitter

At GROSSWEBER we practice what we preach. We offer trainings for modern software technologies like Behavior Driven Development, Clean Code and Git. Our staff is fluent in a variety of languages, including English.

Feed Icon

Tags

Open Source Projects

Archives

Blogs of friends

Now playing [?]

Error retrieving information from external service.
Audioscrobbler/Last.fm

ClustrMap

Charles Petzold on Software Development

Posted in Geek Mode | Tools and Software | Visual Studio at Monday, 31 October 2005 02:01 W. Europe Standard Time

Charles Petzold, the author of all Programming Windows editions, wrote a rather long but very good article on the state of software development with tools like Visual Studio. Does Visual Studio Rot the Mind? he asks, and while reading his article, I wonder how large software projects could be carried out without such development environments. Nevertheless, he points out that a strong knowledge of design principles, understanding of the interface of the libs you're coding against and a good design/coding style is crucial to writing applications. Main takeaway: Do not blindly trust designers and drill into the code they generate.

Now playing: New Order - Get ready - Run wild

A little Application to extend PC-Bibliothek

Posted in Tools and Software at Saturday, 29 October 2005 19:01 W. Europe Daylight Time

PC-Bibliothek is a powerful (and yet not LUA-compatible [1]) application that acts as your personal digital library. There's a wide variety of extensions like dictionaries and encyclopaedias available.

PC-Bibliothek Screenshot

One drawback that bugged me for the last months is that there's no documented way to hand over a search string to the application. You'll either have to type or copy/paste the search term or use their annoying tray application to perform a quick search. Not to speak of browser integration. This application is virtually isolated from the rest of the world. And yet I like it for it's outstandingly good content.

This is when the dev in me awakes :-) I've written a little app, PCBibStarter, that's able to invoke PC-Bibliothek and set the search term in the "Search for" edit box. I had to do it the dirty way by using the FindWindowEx and SendMessage APIs. After PC-Bibliothek has started up, the app searches for the edit box that contains the search term. When the window has been found it sets the search term that has been passed to PCBibStarter as command line arguments.

private void SetKeyword(Process process, string keyword)
{
    
using(process)
    {
        
try
        {
            
// Wait for process to get idle (i.e. started up).
            if (process.WaitForInputIdle())
            {
                // Search tree of windows.
                ...
                




                
// Set search keyword.
                IntPtr result = NativeMethods.SendMessage(parent, NativeDeclarations.WM_SETTEXT, IntPtr.Zero, keyword);
                
if (result == IntPtr.Zero)
                {
                    
throw new ApplicationException(...);
                }
            }
            
else
            {
                
throw new ApplicationException(...);
            }
        }
        
catch(Exception ex)
        {
            MessageBox.Show(ex.ToString(),
...);
        }
    }
}

PCBibStarter reuses already running instances of PC-Bibliothek and sets the search terms accordingly. PC-Bibliothek now integrates well into SlickRun where I can type something like "bib my search term" to get PC-Bibliothek searching for "my search term" ("bib" acts as the magic word). Another nice feature is the browser integration I am now able to come up with.

PCBibStarter Browser Integration

This is accomplished by putting a JavaScript file besides the PCBibStarter executable that extracts the selected text out of a browser window using IE's DOM. PCBibStarter is then launched with the text as the command line argument. The JavaScript file has to be registered with IE by adding a key under HKCU\Software\Microsoft\Internet Explorer\MenuExt in the Registry.

Almost the whole setup is done by the installer. However, there are two files you'll have to tweak. First, there's PCBibStarter.exe.config that tells the location of your PC-Bibliothek installation.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
        <add key="Executable" value="C:\Programme\PC-Bibliothek\pcbib_bi.exe" />     </appSettings> </configuration>

Secondly, the JavaScript file containing the browser integration code, PCBibStarter.js, has to be adjusted to match the path of PCBibStarter. Note the double backslashes.

shell.ShellExecute("C:\\Programme\\PC-Bibliothek Starter\\PCBibStarter.exe", selectedText, "", "open", "1");

DownloadHere are the files:

[1] PC-Bibliothek stores its settings in an ini file inside of %ProgramFiles%. Limited User Accounts (LUAs) are not allowed to write to this location by default.

A strange Google Error Message

Posted in General at Saturday, 29 October 2005 16:25 W. Europe Daylight Time

This is what Google tells me when I navigate to their start page (www.google.de):

Google Error Message

I'm pretty sure my system is clean as neither Microsoft AntiSpyware nor Ad-Aware reported spyware infections. Hopefully all other computers of our network are not infected as well.

Now playing: Oasis - Heathen Chemistry - (Probably) All in the mind

PDC05 - The Videos

Posted in Geek Mode at Thursday, 27 October 2005 00:00 W. Europe Daylight Time

All sessions from this year's Professional Developer Confererence (PDC) are available online for six months from now. You can watch them online via streaming media or pick a talk or two for download.

Now playing: Audio Lotion - Metrosensual - Eclipse

Software Usability

Posted in Geek Mode at Wednesday, 26 October 2005 18:29 W. Europe Daylight Time

Yesterday I had an interesting discussion on software usability with Robert. We focussed on operation systems, especially Mac OS X vs. Windows. Neither of us has deep knowledge of Linux, so we just didn't talk about it.

Robert stated that when you've got a Mac you just plug in some kind of hardware and it just works. Unlike as in Windows, no driver needs to be installed and as the OS recognized the new piece of hardware it will happily get along with it. On Windows you have to install drivers and pray that the systems doesn't stop working when the new hardware is initialized.

To my understanding the principles of Plug-n-Play are the same on all operating systems. The implementation might differ, but the interface a PnP device sees and leverages is the same. Installing drivers on a OS is a crucial necessity as no OS vendor will be able to include drivers for all devices that are available. So I won't agree to the statement that Macs don't need drivers.

The Mac hardware platform has been pretty closed during the last years. Apple had almost full control over their hardware and software, so they were able to create a performant OS that comes with a bunch of good-looking eye candy. Windows, on the other hand, tries to reach a far broader hardware market. One may assemble a custom PC and install Windows on it; it's supposed to run. Microsoft had to make sure that the core OS is compatible with a wide set of PC hardware. That definitely is a task hard to achieve when you keep in mind the many possible hardware combinations. It's all about a well defined driver architecture and isolating OS code from device drivers (this is not always possible and/or performant).

Microsoft does not write all drivers for their OS. To protect against possibly bogus hardware drivers they set up the WHQL certification program. A WHQL certified driver was tested by Microsoft and is supposed to be running stable. MS even adds a digital certificate to these drivers as this will prevent displaying the warning message when an uncertified driver is installed. However, the user usually wants to get the hardware to work, so who has ever clicked "Stop installation" when such a message box appeared? Microsoft cannot prevent you from installing those drivers, but you have to keep in mind that this might introduce BSODs by doing so.

Also, every software written by human beings will be prone to bugs. There are secuity holes in Mac OS X as well they are in Linux or Windows or (place your favorite OS here).

Wie ich blogge.

Posted in Geek Mode at Tuesday, 25 October 2005 20:21 W. Europe Daylight Time

Wie ich blogge?!

Who put that question mark/exclamation mark combination in the picture?

Now playing: Audio Lotion - Your Sonic Beauty Case - Kalifunk (with Noreen)

Keep your ASP.NET BrowserCaps Up to Date

Posted in ASP.NET | Browser at Sunday, 23 October 2005 22:09 W. Europe Daylight Time

There's a neat project on The Code Project that will issue updates for the browserCaps section of the machine.config file which is located in %windir%\Microsoft.NET\Framework\<version number>\CONFIG. Note that this applies only to ASP.NET web sites, IIS has another file (%windir%\system32\inetsrv\browscap.ini) that will be used for non-ASP.NET web sites.

BrowserCaps are used to determine which browser type visits a web site. ASP.NET will decide upon this information how to render content for specific browsers, versions and platforms.

There's also a write-up on how to use various ASP.NET configuration files and settings.

IIS and Unknown MIME Types

Posted in IIS at Sunday, 23 October 2005 18:06 W. Europe Daylight Time

Having written my last blog entry, I noticed that IIS won't serve the attached kmz file that stores the Google Earth location data.

It appears that the outcome of Microsoft's Secure Development Lifecycle (SDL) hit me, especially Secure by Default, as IIS won't serve files of unknown content type: IIS responds with a HTTP/404 Not Found error and blocks access to those files. You will have to add a content-type mapping using the IIS MMC add-in to permit serving such files.

Configure MIME Types in IIS.gif

There's no way of disabling MIME type blocking in IIS 6.0. Instead of defining content types on a file-extension basis, you may add a new MIME type for files of extension * with a type of application/octet-stream. This will provide a default MIME type for all files that don't have one and bypass the blocking.

Now playing: Anathema - Judgement - Make it right (F.F.S.)

Rezept: Gulasch

Posted in Recipes (German) at Saturday, 22 October 2005 21:10 W. Europe Daylight Time
  • pro Person 150 g Gulasch (Rind, Schwein oder gemischt)
  • Margarine
  • ein Haufen Zwiebeln
  • edelsüßer Paprika
  • Salz, Pfeffer
  • Lorbeer, gemahlener Kümmel, gemahlener Piment
  • Senf
  • getrocknete Pilze
  • Brühe
  • Sahne

Fleisch in gleich große Würfel schneiden. Das Bindegewebe muss nicht unbedingt entfernt werden. In einem großen Topf in Margarine scharf anbraten, salzen und pfeffern. Wenn das Fleisch bräunlich wird, jede Menge grob gewürfelte Zwiebeln hinzugeben. Wenn der Bratensaft etwas verdunstet bzw. das Fleisch kross ist, 1 TL edelsüßen Paprika drüberstreuen und sofort rühren (sonst wirds bitter). Mit Wasser auffüllen und die Gewürze (Lorbeer, gemahlener Kümmel, gemahlener Piment) hinzugeben. 1 EL Senf und, wenn vorhanden, getrocknete Waldpilze hinzugeben. Mit Deckel ca. 1 Stunde simmern lassen. Danach evtl. mit Brühe nachwürzen. Sahne nach Geschmack hinzugeben und die Soße andicken. Dazu passen am besten Rotkraut und Semmelknödel.

Now playing: The Prodigy - The fat of the land - Narayan

Easter Eggs in Software

Posted in Geek Mode at Saturday, 22 October 2005 00:20 W. Europe Daylight Time

A great article on Easter Eggs by Larry Osterman.

Now playing: The Smashing Pumpkins - Mellon Collie and the Infinite Sadness - 1979

Top 10 Blog Design Mistakes

Posted in Geek Mode at Thursday, 20 October 2005 21:07 W. Europe Daylight Time

Jakob Nielsen writes on the most design mistakes made regarding blogs:

  1. No Author Biographies
  2. No Author Photo
  3. Nondescript Posting Titles
  4. Links Don't Say Where They Go
  5. Classic Hits are Buried
  6. The Calendar is the Only Navigation
  7. Irregular Publishing Frequency
  8. Mixing Topics
  9. Forgetting That You Write for Your Future Boss
  10. Having a Domain Name Owned by a Weblog Service

Me as a blogger relatively new to the medium appreciate that I've done well so far in many points. A bio is missing, but that's something to be done during the next months.

Update: These design recommendations do not apply to Planetkris.

Neologisms, anyone?

Posted in Fun Stuff | General at Thursday, 20 October 2005 11:42 W. Europe Daylight Time

Splog stands for spam blog, a new method of spammers spreading their garbage around the web.

Now playing: Roxette - I wish I could fly

Binding a StringCollection to a ListBox

Posted in Geek Mode at Wednesday, 19 October 2005 18:04 W. Europe Daylight Time

During the development of my Smart Tag I needed to bind a StringCollection to a ListBox on a Windows Form. The initial databinding itself worked fine, i.e. the original contents of the collection showed up. I even could add items to the collection or remove them. The UI remained unchanged, however: Basic collections don't support two-way databinding as I discovered.

private void btnAdd_Click(object sender, System.EventArgs e)
{
    stringCollection1.Add(
"foo");
    
    
// Use the currency manager to sync up the listbox.
    CurrencyManager cm = (CurrencyManager) this.listBox1.BindingContext[stringCollection1];
    
    
if (cm != null)
    {
        cm.Refresh();
    }
}

The same applies for element updates and deletion.

Now playing: MC Conrad - Logical Progression Level 4 (Limited Edition) - Cool vertigo

Smart Tags and Visual Studio 2005 beta 2

Posted in Office | Visual Studio at Wednesday, 19 October 2005 01:54 W. Europe Daylight Time

Yesterday I started writing my first and rather simple Smart Tag for Office 2003. It's supposed to be nothing sophisticated, just a little demo that will be used by my colleagues Jörg and Karsten in their current research projects. These projects are about information retrieval and the proper presentation to the information worker based on the current task. You may be reminded of PreBIS, but in my opinion the current project takes the notion developed by PreBIS a step further. To get the picture, imagine you're writing on a corporate document. A Smart Tag pops up telling you there's something interesting about the topic you're working on. After you clicked on it you'll see a list of related items and resources that may support you completing the task efficiently. These resources are shared by all corporate users and grow over time based on experience employees gain.

Back on topic: I downloaded the Smart Tag SDK, added Smart Tag programmability support by installing the Smart Tag PIAs using Office setup and started implementing my solution based on the C# walk-through. After tackling some deployment and CAS issues everything seemed to be set up properly. I started the debugger. After some seconds Word came up and closed almost immediately. What went wrong? I tried again. Word was still exiting. After rebooting the machine still nothing changed. I tried tracking the problem down setting up a CAS policy that allowed all code to run under FullTrust but to no avail. The debugger hit not breakpoints and catched no exceptions (although explicitly set via Debug -> Exceptions [Link]).

I headed to Google searching for a solution. After an hour of trial and error testing questionable solutions I finally found this article on Google Groups stating that after removing the beta of Visual Studio 2005 Smart Tags work again. What do Office and VS 2005 have in common? Nothing I thought. I decided to give this solution a try and uninstalled VS. And, behold, my Smart Tag solution was running as expected for the first time!

Lessons learned: Always install betas inside a Virtual Machine, although they might be slowed down until virtually unusable.

Now playing: Big Bud - Producer 07 - High times

Screen shots made easy

Posted in Tools and Software at Thursday, 13 October 2005 12:31 W. Europe Daylight Time

My workflow of taking screenshots had to be revised: Instead of hitting Print (captures the whole screen) or Alt+Print (which captures the current foreground window), booting Photoshop, cropping the image and saving it I was looking for a nice and handy solution. I found Cropper that Daniel Fisher used during his talk at the .NET Summer Camp 2005 pretty straight-forward.

Cropper Screenshot

Start the tool, select the screen area to capture, double-click and you're done. I especially like that one has quick access to image format and quality via the right-click menu. Also note the size info in the top left corner. Neat.

BTW: This screenshot was made using the old workflow :-)

Now playing: Goldfrapp - Strict machine

Yes...

Posted in Fun Stuff at Thursday, 13 October 2005 01:20 W. Europe Daylight Time

Yes.

[Via Haacked]

Now playing: Morcheeba - Fragments of Freedom - Love sweet love (feat. Mr Complex)

The next hard drive crashes

Posted in Geek Mode at Monday, 10 October 2005 00:36 W. Europe Daylight Time

Oh my god... Seems like I ran into the hard drive hell. This morning my almost five year old IBM drive (120 GB) failed. After booting the machine Windows had a bad user experience (it went incredibly slow, the opposite is usual). The event log showed some events about paging operations that failed on the only partition on the drive. After the PC hang I booted into IBM Drive Fitness Test that revealed bad sectors after scanning the drive. After the unsuccessful try of repairing these sectors (i.e. the data of the files stored in those sectors will be lost), it reported a "component failure". Time to retire the hard disk after it served dutifully for long years.

This disk hasn't been in my RAID 1 array. Fortunately I did a backup yesterday so no important data will be lost.

I've decided to replace the faulty drive with a bigger drive (a Samsung SP2504C with 250 GB of capacity) that I'll purchase tomorrow. Hopefully my drives will keep quiet for some years now.

Microsoft Application Compatibility Toolkit and Screen Savers

Posted in Tools and Software | Windows at Friday, 07 October 2005 20:12 W. Europe Daylight Time

I just wondered if the Microsoft ACT 4.1 is able to create application fixes for misbehaving screen savers. I tried to create such a fix for the bogus screen saver "Endlosliste" of "Der digitale Grimm" (a German dictionary by the Brothers Grimm, the screen saver shows all dictionary entries scrolling like film credits). This nasty piece of software stores its settings and state (i.e. the last shown word) in %windir%\ecwords.dat, so it's virtually unusable for any user running with limited rights.

Unfortunately ACT's Compatibility Administrator isn't able to create fixes for files with extensions != exe. Renaming the according scr file to an extension of exe renders the screen saver invisible in Windows' desktop settings/screen saver dialog.

I am not sure if I should curse the screen saver devs or ACT for not allowing to select files other than exes. Maybe there are technical reasons for disallowing other extensions, but I haven't found something about that.

BTW: This entry was blogged from Silke's new laptop :-)

Now playing: Weathertunes - Characters - Holidays

Something for health

Posted in NonTech at Friday, 07 October 2005 11:41 W. Europe Daylight Time

Yesterday I went playing Badminton together with Marci and Krissi. I didn't practice for about seven years by now, but it was real fun to play again. It's kind of like driving bicycle, you'll always remember the basics. I am glad that not all of my skills went away and I was able to keep up with Marci, who has always been the better player of us. Nevertheless, I need to exercise on my condition and some technical skills the next time we meet. Done something for fitness, splendid!

Today Silke and Martin came back from their long-term stay in Korea and Dubai. I was the one who heard the bell ring an 8 AM and opened the door. After a short but warm welcome (hugs!) I went to bed again. :-) Yesterday evening has been pretty late because we went to the movie/concert evening at the UT Connewitz. I am really happy to see our apartment crew in completeness again. (And I don't have to water all plants!)

Now, let me have a look if there's some coffee...

Now playing: Bexar Bexar - Haralambos - KT

ItemReferralBlocked events, MovableType blacklist moved

Posted in dasBlog at Tuesday, 04 October 2005 00:21 W. Europe Daylight Time

Today I noticed a lot of ItemReferralBlocked events in the activity log of my dasBlog instance. Strangely enough, these blocked referrals were from common sites like Google and other search engines:

Info ItemReferralBlocked:
Item Referral blocked for Installing Windows on a HP Pavilion ze4500 Notebook
from http://www.google.com/search?hl=en&lr=&q=pavilion+ze4500+mod...
originating at IP Address 84.59.249.xxx
because of ""

Note the reason: It just states "".

I digged into the source code of the referral blacklist implementation and found that the MovableType blacklist has moved. Nevertheless, dasBlog's core engine will retrieve the blacklist from the original hard-coded URL and create a bogus internal representation based on the informal message behind the old URL. Of course, this message has nothing in common with the current MoveableType blacklist, so the comparison results of the referral against the blacklist are junk, i.e. the source of my blocked item referrals.

You'll have to change line 21 of newtelligence.DasBlog.Web.Core\MovableTypeBlacklist.cs from

private static Uri internetAddress = new Uri("http://www.jayallen.org/comment_spam/blacklist.txt");

to

private static Uri internetAddress = new Uri("http://www.jayallen.org/comment_spam/blacklist_initial.txt");

and recompile dasBlog.

You'll also have to delete the file blacklist.txt inside dasBlog\SiteConfig as it contains a copy of the blacklist that is updated once a day. A simple iisreset or copying the newly compiled assemblies into dasBlog\bin won't help since the aforementioned file isn't likely to be updated immediately from the new URL.

Update: The blacklist is gone.

DownloadThe patch for the file: MovableType Blacklist Patch.zip

Now playing: Cypress Hill - Black Sunday - What go around come around, kid

A late-night web find

Posted in Fun Stuff | General at Saturday, 01 October 2005 02:56 W. Europe Daylight Time

Something to agree to.

Now playing: Chemical Brothers - Exit Planet Dust - Three little birdies down beats