Saturday, December 20, 2003

Speed of light

The odometer of my car just went over the one light-second mark this morning. :-)

Wednesday, December 17, 2003

What's it all about?

First of all, a little bit of history. Since the mid 1980's I've been very active on newsgroups and forums run by CompuServe and Microsoft. In fact, since I became a self employed consultant. I give out a lot of information freely and I've always made an effort to explain the principles behind my answers rather than just paste a link to somebody else's answer or tell somebody where to look in the help file. Furthermore, I maintain a web site with comprehensive articles, extensive code in both C# and visual basic which is used as a resource by literally thousands of engineers all over the world.

I discovered many years ago that helping people out for free can be advantageous because people often contact me afterwards and offer me contracts, both short and long term, and even fulltime employment in their companies. As a consequence, I am able to make a living through the Internet and those forums and newsgroups which I frequent are often the primary point of contact between me and my clients.

Whenever I post in a newsgroup my signature carries links to my website, articles and products. This has always been the case. Furthermore, I often post announcements to my products and services which are clearly marked as such and are easily filtered by those people who do not wish to see such announcements by the simple expedient of a filter that removes the subjects tagged with a ANN: prefix.

Recently, I was given the MVP award by Microsoft, largely for my work on the newsgroups but significantly, for the content of my website and my advocacy of Microsoft products. This is to say that my practices are certainly not incompatible with the Intent of the Microsoft public newsgroups. Indeed, I am somewhat surprised because having been recently singled out by members of a newsgroup because of "unacceptable practices" I looked back through the newsgroup archives to discover that there are numerous announcements for commercial products from other MVPs and companies which have drawn no comment whatsoever.

One thing I will not do is to be drawn into a public flame argument on a newsgroup. I have a comment section on this blog and anyone is free to put whatever they like on there.

Monday, December 15, 2003

MSDN style documentation

I've been an advocate of inline documentation for source code for many years. In a previous incarnation as Director Of Engineering at stingray, I hassled my poor teams relentlessly for good source documentation. I was very pleased indeed when I saw that C# provided built in XML documentation and quite liked code comment reports generated by the visual studio IDE.

For the last week or so, I have been involved in heavily documenting a project that has taken me almost a year to complete for a client in the UK. Although I had already used the bill in XML documentation for the C# based classes and have generated the code, and report pages on several occasions I found them lacking and to be honest, I think my client did too. After revisiting all the documentation and beginning to document several of the visual basic classes and examples in my project using the VBCommenter from the GotDotNet site. I discovered the absolutely superb nDoc project on the SourceForge site.

nDoc enables you to produce MSDN style documentation in the form of .CHM files and web sites that look absolutely fantastic and integrate with the standard MSDN help files for such information as inherited members and so on.

Someone asked me the other day if I would put help files on the site for xray-tools so as an experiment, and because I've had to make a change to the tool recently, I have read on the documentation for the RectTracker control and put it up on my site.

Wednesday, December 10, 2003

New article posted in GDI+ FAQ

I've just posted an article on the GDI+ FAQ on the subject of colour saturation in images and how to adjust it using the ColorMatrix class.

Tuesday, November 25, 2003

Yahoo domains.. big problems.

I just discovered something odd concerning Yahoo Domains.

A bug in their billing software has cause many customers to not be charged for services for some considerable time despite the fact that service continued. Even though the error was theirs, when they discovered the problem, they suspended thousands of accounts that were past-due (according to their billing system) without any notice, cutting off businesses and individuals from their sites, causing loss of revenue for many of them and only restoring service after they had resolved the problems internallly. There are apparently still thousands of accounts suspended and they are working to clear the backlog.

I think that an error on their part should be met with good grace and the accounts in question remain in-service until customers could be contacted and the internal problems fixed. After-all. The problem was not the fault of the individuals who suffered.

They post this message on the main login page, Note there is no mention of the fact that the fault was all theirs...

"November 21 2003 . Reactivation of Suspended Accounts
Important note for accounts which are suspended due to past due payment: It will take 24-36 hours to reactivate your account once you provide valid payment information. Until your account is reactivated, your domain name and associated services will not function. "

Thursday, November 20, 2003

Productivity shifts in visual studio.net 2003.

For many years visual basic programmers were able to crow about the fact that productivity was so much better using visual basic and using C++. Now however, C# programmers have the upper hand because visual studio provides enhancements for them that are not available to the VB programmer. For example, implementing an interface for a C# programmer is as easy as pressing the tab key. Visual basic programmer's however still have to select the interface in a drop down and then the method in another drop down which can become tedious if you have a whole lot of interfaces to implement. The same is true for event handlers.

Problems sorted. Get on with life.

The web-site is back up. I must remember to change hosting provider. I need a site with ASP+ hosting and Yahoo domains don't cut the mustard.

Wednesday, November 19, 2003

The world has gone nuts!!!

Now my web-site isn't working.

I can be contacted on bobpowell1@yahoo.com

Tuesday, November 18, 2003

Relief.....

I got home from the cybercafe where I was trying to do my mail and run my life with a bunch of teenage kids playing quake and making a fuss and the networks back up again.

Four days without internet is like an eternity or three.

Disaster strikes

My son recently moved to another apartment and so I phoned up for him to cancel his phone account. Instead of cancelling his, the idiots at France Telecom cancelled mine because it was the one from which the call originated. I have to re-order my ISDN connection and wait for it to be set up again. You can imagine how happy i am about that!!!!

Tuesday, November 11, 2003

String manipulation of a different kind...

I saw a link to the US PBS network Nova site the other day and was enthralled by the 3 hour program on string theory. If science grips you, check it out!.


Back to blog

I've been deep in documentation, help files and installs for my consulting clients this week and all other spare time has been taken up with a marathon article on text formatting for Well Formed which I'm just finishing up for this month.

Wednesday, November 05, 2003

Bugs that were reported over a year ago still apparent in Whidbey

I've seen somebody complaining on one of the newsgroups today that a bug that was reported over year ago is still apparent in the PDC release of longhorn. I have just verified myself that there is another bug which I reported over a year ago that has not yet been fixed in the GDI+ Whidbey code. Both bugs are extremely simple defects and in the case of the one which I reported I even told them what line of code to add to fix it and yet it still malfunctions.

The two bugs in question are problem with clip rectangles that don't clip to the correct pixel and a serious memory leak in Region.GetScanRects.

The second of these errors is a serious showstopper because it means to say that you cannot use a GDI+ region to clip a directx surface because there's no way of extracting the region rectangles to hand off to the directX clipper.

New Graphics classes for Whidbey.

The new GDI+ classes in the Whidbey alpha include classes called BufferedGraphics ans BufferedGraphicsContext.

A BufferedGraphicsContext enables you to allocate a rectangular graphics buffer, encapsulated by the BufferedGraphics class, which you can draw on using standard Graphics methods and then render at any time with a Render() method.

The following snippet shows how a buffer is allocated and drawn into. It can then be rendered at any time. In this instance I rendered it before and after painting on the graphics in the normal way.

The buffered graphics are always maintained in the allocated area.

private void Form1_Paint(object sender, PaintEventArgs e)
{
BufferedGraphicsContext c=new BufferedGraphicsContext();
BufferedGraphics bg = c.Allocate(e.Graphics,new Rectangle(10,10,200,200));

bg.Graphics.FillEllipse(Brushes.Red,0,0,300,300);

bg.Render(e.Graphics);

e.Graphics.FillEllipse(Brushes.Pink, 30, 30, 400, 20);

bg.Render(e.Graphics);
}

Monday, November 03, 2003

Toolbox Bitmaps.

Sometimes, just sometimes, the toolbox bitmap for windows forms control can be a complete pain, especially I've noticed in VB controls. This is often true if your control needs to reside in a particular namespace.

The toolbox bitmap attribute accepts as its parameters the type of a control in the assembly from which the toolbox bitmap is to be drawn and the name of the resource which holds the toolbox bitmap. Often however, the fully qualified name of the control which includes the namespace can confuse the compiler which results in it being very difficult to find the toolbox bitmap and it seems no matter how hard you try your control is always endowed with a little gear wheel and not your carefully prepared icon.

A little trick, which I will pass on to you, is to create in your assembly a class with internal access, which I often call resfinder, which is created outside of any namespace declarations. Then, however your name spaces are arranged internally, you will always be unable to find the toolbox bitmaps in your assembly by providing the type of resfinder instead of the type of the control that you wish to provide a toolbox bitmap for.

I must remember to put this in the tips and tricks.

Sunday, November 02, 2003

Feeling flattered, but...

Don't get me wrong, I love it when people send me their projects and ask me to help out. When I first started the GDI+ FAQ almost two years ago, I was really happy when people sent me information because it meant people were reading my site. Now, I get literally thousands of hits a day and probably ten projects zipped up with a little note saying "I've got this problem I wonder if you could help me". I look at all of them and I try to reply to all of them but to be honest, the load is getting to be a little more than I can cope with.

If you're one of those people who've send me a project and I haven't answered, please don't think you're being ignored, there's only one of me and lots and lots and lots of you!

Saturday, November 01, 2003

Bilinear interpolation is much better for soft shadows.

Some time ago I published an article in GDI+ FAQ which explained how to create soft shadows for text. It took advantage of the interpolation mode used during bit blitting of images to create the fuzzy edged effect on text. Basically, the idea is that you create a memory bitmap upon which to draw all the text. This bitmap is then shrunk to half or 1/4 its original size thereby reducing its resolution. When this bitmap is copied back to the screen it's expanded again by two or four times, depending upon the original reduction, and the interpolation mode anti-aliases the edges of the text to create a fuzzy edge. I've just been using this effect in a program I designed for client and have discovered that the bilinear interpretation is far better than the bicubic. I must update the article in the GDI+ FAQ.

More on the subject of voice recognition.

I've been using this thing for about a week now and have discovered that on the one hand it's very easy to use and on the other, you have to watch it like a hawk. It's very easy to get into a dictation session and discover only too late that a fair percentage of the text entered by the voice recognition system is complete and utter rubbish. The problem is I suppose, that it's good enough to fool you into a false sense of security by transcribing most of what you say completely faithfully. I've recently written most of a 30 page help document using the voice recognition system. Certainly, it took less time to speak it than it would've taken me to type it although I spent much more time checking it than I would have normally done. The program has an annoying habit of putting in spurious capital letters and missing capital's where you need them. Punctuation can be a little clumsy and I can see only too well the voice recognition will not be a viable medium for programmers in the near to medium future. You would absolutely talk yourself to death trying to say "if (X ==five) {application.exit () ; } " you see, it's possible, to a certain extent, but it took me well over a minute to type in that unhappy if statement above using voice recognition. It might be better for VB because the VB editor takes care of camel caseing etc. for you. Maybe someone should come up with a programmers voice recognition system.

A big welcome to all new subscribers!

Last night's Halloween special offer was very successful , the Well Formed family has grown again!

I'm currently hard at work on this months issue, preparing an article on text justification.

Something I found very interesting is that around 75 percent of subscribers are C# users. To be honest I expected a few more VB readers simply because VB is supposedly that much more popular. Perhaps I don't post enough on the VB newsgroups? Although to be honest, from a personal point of view, VB is by far the inferior of the two languages. It always looks to me as though object orientation was somewhat of an afterthought, which I suppose it really was, and I find editing a VB program a clumsy and unrewarding experience.

Friday, October 31, 2003

Happy Halloween!!

No tricks, only treats tonight! Order before midnight October 31 vendor one year subscription to well formed for just $10.00. Check out the special offer page

Just started work on the November issue.

Thursday, October 30, 2003

The Whidbey text editor.

It's not just the framework getting a makeover in Whidbey the whole I. D. E. is being upgraded too. Most notably the text editor has some new features. The context coloring system has changed so that now classes are also identified with a bold text. This includes classes that you define yourself. There is also a new method of indicating which part of the file has changed. When you load a file the left hand margin is clear but as you type a yellow area appears in the margin to indicate changes which have not yet been compiled. When you compile these yellow change indicators turn into green ones that show the extent of changes in the file during the current edit session. I found this to be very useful for quickly checking which parts of the file have been modified.

Get your RSS here...

Thanks to Roy Osherove's SiteFeeder I can now provide RSS for your news aggregators. This will give me more incentive to make announcements in here.

Tuesday, October 28, 2003

PDC underway.

Unfortunately this year I'm not going to the PDC, I was lucky enough to be there in 2000 when they announced .net and have been to Tech-Ed and PDC since but I'm very much an outsider this year.

One good thing however is that I did get e-mail from Microsoft this morning saying that as an MVP and Whidbey alpha tester I was no longer restricted in what I said about the current code. Keep an eye open here for insights into what's coming in windows forms version 1.2 and visual studio.net for the future.

I don't have them yet but I will very shortly be receiving a copy of the PDC bits of Longhorn and will be discussing that both here and in Well Formed.

Sunday, October 26, 2003

Well Formed VB edition for October released

Just a little bit late this month the Well Formed VB edition is now available. one or two annoying delays including having to reformat my laptop and then set up a completely new computer system have contributed to what's been a relatively disastrous week.

I am just in time now to start on the November edition which I hope will go a little more smoothly than last month's. I'm looking forward very much to obtaining the PDC longhorns builds soon and will be doing a preview of the graphic system in a forthcoming addition.

Saturday, October 25, 2003

Converting C# to visual basic

For some time now, Kamal Patel Has been running a web site with an excellent program to convert C# to visual basic. This can be accomplished in two ways, directly through the website or using a standalone program. Personally I prefer the standalone program because sometimes I don't like the idea of providing my code to web sites for conversion.

Generally the software works well but it has a few problems converting even simple classes and very often chokes on constructors. It also seems to have a problem with if statements and particularly changing curly braces in C# to the corresponding if, then, else, end if construct in visual basic.

It seems a shame that the software hasn't been upgraded recently to correct the simple errors because with such correction the software would be excellent. I often use it to convert examples written in C# into VB quickly and easily but I find I have to trim code or put it in in small chunks so that the converter doesn't tell me that it couldn't convert the code.

Friday, October 24, 2003

The end of an era

Sadly, today saw the last commercial flight of the Concord which left John F. Kennedy Airport for London carrying about a hundred celebrities. During its service life Concorde has been a victim of politics and despite its advanced design has been superseded by slower less advanced aircraft.

It almost seems as though the world is taking a technological step backwards by putting these marvelous machines into museums rather than keeping them flying. Worst of all the pig-headed attitude off the British airways bosses who prevented Richard Branson from taking over operation of the Concord a few months ago. I'm certain that if anyone could run Concord at a profit it would be him.

Having lived for many years under the flight path of Concord as it traveled from London to Abu-Dhabi I can say from experience that the noise pollution from a sonic boom is far less than that of a slow moving aircraft such as a 747 which moves across the sky slowly. I, like so many people, will be sad to see it go.

Thursday, October 23, 2003

Voice recognition training pays off

After installing the voice recognition software yesterday, I have been through several of the training sessions and I decided to make this entry entirely by dictation.

You go through the training by reading to the machine. So far I've read text from a philosophy book by Bertrand Russell, the introduction to the war of the world's by H. G. wells the standard voice training manual, and I've also trained it to recognize such words as GDI+ FAQ, these words and phrases are put in individually and you speak the pronunciation for them.

In this entry I've made very few corrections by hand, a word here a space there, and since yesterday the program seems to be recognizing my voice very much better indeed. I'm impressed.

I think one of the advantage is that I have is that I use a very high quality microphone not one of the very small ones that come with many headsets or cheap audo input kits. The microphone is a Sony F. V. 320 which is a midrange home use microphone.

Interestingly, it seems that using voice recognition enables me to use a more relaxed style than I would normally use while typing. I don't know whether this would be a good or bad thing for technical article. certainly voice recognition enables me to input text much faster than I can type. I'm not much of a touch typist.

Is there anybody out there?

I'm just interested to know who reads this. You are probably a programmer and read the Microsoft newsgroups. To get a free subscription to Well Formed simply reply to this post before midnight eastern standard time October 23 2003. Remember to include your e-mail address and your preference for visual basic or C#.

Wednesday, October 22, 2003

Speech recognition

This is an attempt a speech recognition using the system included with office xp. -, very little of this is said (has had) to be edited by hand because it does a reasonable good job of recognizing my voice even though I speak with a thick English accent.
all use (I used) dragon naturally speaking once before and it is completely unable to recognize me because my accent wasn't American enough this however , is great. whether or not I can type faster than I speak remains to be seen. publish (I wish) it was clever enough to put capital letters at the beginning of sentences (missed period) you can specify punctuation. (hmm it capitalizes after a period) And even , if you feel like it, do things like added (add a) carriage return.

the additions are made by hand in [softwoods, other directions for the mistakes that the speech recognition system might (total rubbish. Try again)

the additions I made by hand, in brackets, (missed "are") the corrections for mistakes that the speech recognition system made. I find I have to denounce your eight (enunciate)more clearly which would be quite destroying (a strain) When dictating along (spoke " a long paragraph" here and it thought it was a voice command)

Well, that's enough for the momentall close (I'll post) again later.

Sunday, October 19, 2003

The blogging Gestalt

...http://www.internetnews.com/dev-news/article.php/3093931

nuff said

AOL !!@!!$#$%%

How the hell does a pack of Viagra salemen get my AOL e-mail address if AOL don't sell it to them??

I use AOL because it's the only internet provider that sells an unlimited connection in this backwater hell they call France. I have NEVER used my AOL email address even once and yet I get between 10 and 30 e-mails a day selling me Viagra, Penis enlargement and various sexual services even though they don't realize that with a good looking blonde wife I need none of that crap!!!!

AOL must regularly sell thier e-mail lists because no-one could target a non-obvious email address like the pseudonym I use without trying about 20 billion others beforehand.

Saturday, October 18, 2003

Out at last

Managed to distribute the C# edition of Well Formed today. After suffering from bugs and bloat due to overzealous application of new features it's ready for the readers.
Hit the well formed link in my links to the left there or look at the current issue

Friday, October 17, 2003

Grr.. Frustration

So many times I've been working on a project and been brought up short by fundamental bugs in the .NET framework. One would have imagined that by now, superficial, easy to fix bugs would have been dealt with but no...
Here I am with an article in work for the magazine brought up short by an attribute bug that must have been there for years! Does no-one use this code in the QA department at MS??

Thursday, October 16, 2003

PocketPC

Well Formed will have a new feature this month. I am going to provide all the content in a form optimized for PocketPC so people can take the content on the road with them.
I did this using a FrontPage Add-In that re-works the pages for PPC and stores them in a mobile sub-folder of the main web. This add-in is available from MS here.

Wednesday, October 15, 2003

Saying thanks.

Just had a really nice note from a guy who I helped out online. He needed a soloution and I wrote one because I enjoyed doing it.

He asked me "Can I send you a payment, just to say thanks?" I said..

Treat yourself to a book, video or CD from Amazon using my link to get you there....

I get some click-through credits, You get a treat that you want and everyone is happy.

Tuesday, October 14, 2003

Databinding in ComboBox causes some odd problems

I did a short contract for a chap a while back and got the job of fixing his broken VB application. The symptoms were that of a crash but turned out to be a race condition caused by using a ComboBox control that was populated by a database using databinding. The SelectedIndexChanged event was wired automatically to the handler which went off and updated the form, changing the contents of the same combo box. Databinding fires SelectedIndexChanged and so this became a vicious cycle and the machine slowed to a crawl while the database thrashed the disk. I just posted a solution in tips and tricks...

Mr Irrelevant

Someone asks a perfectly sensible and valid comment in the newsgroup and some wally has to make a comment about it like it's a teen chat room.

What point is there to making dumb comments that don't help anyone??

Being an MVP now I don't feel like I can reply to the twerp and argue with him about how helpful he's being.

I'll just vent here instead.

Longhorn delayed till 2006?

Lot's of scuttlebut going around about the delay of Longhorn till 2006. I have two minds about the whole thing. Getting IT departments to standardise on an OS and not have a blue fit if they're asked to change it is nigh on impossible. With many people only just adopting Windows 2000 and many still running on windows 9X and NT4 demanding a change to yet another is a difficult thing to swallow.

I would like to see Longhorn happen because a managed environment has proven to be better with .NET and the ideas of using the processing power of the computer to beef up the UI is also good. I mean, how many new ways can you paint a window?. A leap forward is needed and using the techniques that have been available to games programmers for years in the OS is a great idea.

On the other hand I don't want to have to wade headfirst into a new system when I've only just come to the realisation that XP was any sort of advantage to me.

I don't think a delay will hurt it.

Monday, October 13, 2003

Cluetrain

Rogue Wave's BOD should have read the Cluetrain Manifesto. They are the archetypal corporation who lost touch with their customers and believed in abstract authority instead of the authority of experience.

For what it's worth

I really despise the open source movement for promoting the idea that intellectual property should be given away freely.

If you want source code and you're not bright enough to write it yourself at least have the decency to acknowledge the skills of the person who is clever enough by paying them a fair price.

The trouble with the bazar is that it's full of struggling merchants trying to scrape a modest living and customers who are happy to take free samples and never actually buy the goods. Eventually the merchants will all go out of business.

Friday, October 10, 2003

Join the club

Checking out the MVP private groups I see that about 50 MVP's, well, maybe a bit of an exaggeration, started a new blog in the last few days. I really did come to this decision on my own!
Well, they do say, publish and be dammned.

Incidentally I just spell checked this because I can't type more than about 5 letters without getting the character order mixed up and "Dammned" is not in thier dictionary. "Dammed" is though. Not much of a spell checker...

Haloscan.

The comment system on this blog is provided by Haloscan. Thanks to Jonathan Maltz for pointing out this service to me. The moment I get pennies in my PayPal account again they'll get a donation.
As a one time creator of shareware and someone who basically makes a living through the internet, I reckon people who provide a good service should be rewarded for it.

Hits..

Hits are definitely up. For a specialized site 2000-3000 a day is ok I think.

Singleton App

Posted a new article in Tips and tricks. The singleton app. All pretty simple but a much asked question.

Googled!!

It's a good day!. I checked out my placement on google today and I've been flagging behind my old colleages at SyncFusion for some time. Today I'm top of the google list!!! WAY HAAAYY!!
Do a google for GDI+ FAQ.
The tips and tricks page comes up second which is pretty good too. Google for "windows forms tips tricks"
Have to go check my site stats now...

Thursday, October 09, 2003

Just the way I want it (For the moment)

Enuff said...

still messin'

see if it happens again

Messing about

Just trying to get the template the way I want it. Ignore it for a moment. ha ha like anyone is goin to read this on day 1 :-)

Article idea.

Having looked all over the place for information on shell extensions in C# and found next to nothing on the subject I think I feel an article coming on. Well Formed will get the first bite at it this month.

Debugging a shell extension is not easy!

The last couple of days I've been working on a shell extension written in C#. The idea was to provide thumbnails for some custom file types rather than have some kludgy file browser encapsulated in the application.

I've found out a lot about the difficulties of writing a shell extension. Particularly debugging which seemed to be impossible at first glance. The extension is run by the system and doesn't show up in any recognizable form in the task manager. I did find out though that if you attach the debugger to the Explorer process you can stop the extension with the debugger.

Once used, the shell extension is kept alive by the system so any changes you make will fail to create the new dll because its in use elsewhere. Just terminate the Explorer process and the problem goes away. Sometimes Explorer starts on its own again so that you have access to the start menu and such, sometimes it needs running explicitly.

Let there be blog

I came to an odd conclusion today while answering my own posts on the MS private MVP news groups, yes, I said answering my own posts, that answering my own posts was the same as having a blog, so here I am.

Like many people I talk to myself when I'm working. Now I can write to myself too.

If you got here without going through the link on my web site then I suggest you visit there to get a bit more of an idea on who I am and what I do.

My GDI+ FAQ is the bit of my work that most people see. If you're a user of Windows Forms or GDI+ then there's probably something you want to know on that portion of my site.