Archives
-
Folle lok en seine!
As they say in the part of Holland I come from: Folle Lok en Seine! or in plain English: Happy New Year! :)
-
Merry Christmas & Happy New Year!
I would like to wish everybody a very Merry Christmas and a Happy New Year, or in other words: Happy Holidays!
Here a small christmas message from us, with the Pier of Scheveningen, and part of the beach, that's 300meters from my house.
-
Yes! EU Software patent directive stalled!
More here. This is great news! All credits go to Poland. Of course my own minister (Brinkhorst, The Netherlands) was asked by the parliament to do the same thing as Poland's minister did but refused to do so, to avoid losing credibility among fellow ministers...
-
Darwin in full effect
Peter Torr did spend a lot of time to tell the world why he doesn't trust Firefox as a browser.
-
Sometimes rants are funny :)
Via Scoble I stumbled into this rant today. I must say, it was a great read and he has a point. I'm not sure if it will ever change though. I mean, most people find it even too hard to setup a TV, despite the tremendous effort manufacturers put into the setup logic.
-
WinFS delayed again: corporate politics or incompetency?
Friday, Microsoft brought the news that WinFS, the highly anticipated new filesystem annex object store, is delayed again. It is now said they hope to release a test version in late 2006 and it will not be present in Longhorn server as well.
-
VS.NET 2003 C# code-editor tip of the day
Three tips actually. All color coding related. Open VS.NET, click Tools - Options and then Environment - Fonts and Colors
- Under display items, browse down to Operator. Select 'Maroon' for foreground color and check 'Bold'.
- Under display items, browse down to String. Select 'Dark Blue' for foreground color.
- Under display items, browse down to Xml Doc Comment. Select 'Custom' for background color and select a very light grey, like RGB 245, 245, 245. Do this also for Xml Tag
-
Object^H^H^H^H^H MSN Spaces
No... no objectspaces, but MSN Spaces! and no O/R mapper, but a blogging site! . Of course, I created a spot, err... space, over there: http://spaces.msn.com/members/fransbouma. I'll use it for off-topic rambling, but I'm not sure if anyone will ever visit that blog . Oh well...
-
Language Oriented Programming.
Via Andres Aguiar I stumbled into one of the most insightful articles I've read in the last couple of months: Language Oriented Programming, The Next Programming Paradigm, written by Sergey Dmitriev of Jetbrains.
-
EA: White collar slavery
Just read it: http://www.livejournal.com/users/ea_spouse/
-
SqlServer 2005 and VS.NET 2005 delayed
From theserverside.net:
Microsoft has decided to delay the release of SQL Server 2005 from the first half of 2005 until later in the summer of that year. A Community Technical Preview will be released as an interim beta with possibly more to come before the final beta and the product’s eventual release.
-
Solving the Data Access problem: to O/R map or not To O/R map
On the www.asp.net forums (the architecture section), a person asked in the 'Your favorite O/R mapper' thread, why someone would use a 3rd party component for data-access and why would that be an O/R mapper and if so, which one? I've tried to answer these questions in that thread, but because I think it can be of benefit for more people than just the readers of that long forum thread, I've reworked the text into an article you'll find below. Keep in mind I've tried to keep things simple to understand, so perhaps I've left out a detail here and there, however I don't think these details will matter much to the overall conclusions and descriptions. As I've addressed a couple of questions, which I think are related to each other, I've re-written the forum response as a Q & A.
-
Major upgrade of LLBLGen Pro released!
After 3 months of hard work, today, a major upgrade of one of the leading O/R mappers for .NET, LLBLGen Pro, has been released! . A large amount of new features are added to the new runtime libraries and templates, among them: MS Access 2000/XP/2003 support, prefetch paths, paging in entity collections and lists, aggregate function support and sql expression support and much more. Below is the full list of new things.
This upgrade is of course free for our customers . -
Synchronized .NET collection classes not thread safe?
Marcus Mac Innes discusses the possibility of synchronized .NET collection classes not being as tread safe as they are advertised to be . I can only conclude... he's absolutely right.
-
Killing a Yukon myth
About once a week or so I get the question what the strategy will be with our O/R mapper LLBLGen Pro in relation with Yukon (SqlServer 2005): will the O/R mapping code run totally inside the database server or will it be running outside the database, like with SqlServer 2000. This is actually a question that I can imagine is puzzling a lot of developers, also the ones not using any O/R mapper at all: will we be able to run the DAL inside Yukon and with that benefit from the close connections between DAL code and database server, and how do we call this DAL?
-
Ghostdoc 1.1.1
Roland Weigelt has released an update to his plugin-contest winning Ghostdoc add-in for C#: version 1.1.1. Now you can configure how Ghostdoc threats your parameter names. Very cool! Everyone who hasn't checked Ghostdoc out yet: please do, it's highly recommended!
-
Stunned: WinFS removed from Longhorn
C|Net has the scoop. I simply can't believe it. Allchin: Don't call it 'Shorthorn'. well, Mr. Allchin, I will.You see, what are the consequences for us? Microsoft Business Framework anyone?
-
About the add-in contest results
First of all, congratulations to Roland Weigelt for winning the first prize in Roy's Add-in contest!. I think his entry deserved the first prize without a doubt as the tool is amazing and, when extended with some additional logic/features, could become a big commercial success.
-
And... gone was the nice moderation system *sob*
Apparently something was wrong with the new .Text engine as the admin interface is back to its old version, so no moderation possibilities for comments anymore. I therefore again disabled comments till the interface is back up again. Sorry for that.
-
Assembly '04 ends
One of the most famous demo parties ever, Assembly, has just finished. I just saw the winning 64KByte (that's 64*1024 bytes, people) intro and it's simply breathtaking. Another one worth watching is the 2nd placed demo competition winner of Andromeda Software Development: really a kick-ass demo and to me far superior to the 1st place winner.
-
[OT] What Dutch do when it is 30+ degrees Celcius...
... they jump into the water. Below are two photos I took 10 minutes ago, at about 300 meters from my house in Scheveningen, The Netherlands. Needless to say, it's a bit erm... crowded
-
Comments enabled again.
Scott updated .Text last night with a moderation feature. Cool stuff, thanks Scott! . Due to this moderation feature, comment spam can be prevented: all comments first have to be approved by the blog-owner before they're visible.
-
Windows XP SP2 pulled at last moment
The Inquirer reports (and C|Net as well, so it's not an Inq. crackpot story) that Microsoft has pulled Service pack 2 for Windows XP at the last moment. It was scheduled to RTM last night and to be made available for MSDN subscribers today. . But I'm sure they have their reasons. I however hope that MS realizes that their patching strategy of releasing one big pile of fixes every 2 years is not working: 1 glitch in 1 patch inside that SP2 can delay the complete set of fixes. With smaller set of fixes released more often, this wouldn't have been the case. But I'm sure they'll address this in the (near) future.
-
Ok the spammers win: no more comments...
This is the second day in a row where I have to delete a massive amount of comments full with just URLs to obscure sex sites and other crap , so enough is enough: for now comments are disabled. Personally I don't like this situation of not offering the ability for the reader to leave a comment, but at the moment there is no other option.
Until .text is updated with a better system for comments (i.e.: not being anonymous), I'll leave comments off. Sorry for that. -
Doom III is GOLD!
Doom III is done! It was confirmed by Todd H. of Id Software earlier today! . In stores around August 6th (Europe). Now, let's find myself a decent Ati Radeon 9800 Pro
-
VS.NET 2005 will not have a multi-line search/replace feature :(
A couple of days ago I blogged about VS.NET lacking a multi-line search/replace feature. I filed it as a suggestion in the MSDN feedback center. And I did receive a response:
-
VS.NET 2005 Express: find / replace accept only single line strings
I filed it here, so you can vote on it . Early in the whidbey alpha program proposed screenshots were posted of the new search/replace dialogs. I then mentioned it would be great (because I ran into this limitation a couple of times) if the find/replace dialog would accept multi-line search and replace strings, so you could search for 2 lines for example and / or replace with a multi-line string. A lot of people in the whidbey alpha group agreed.
-
VS.NET 2005: dialogs will not be resizable :(
I filed a suggestion last week about the fact that a lot of the VS.NET 2005 dialogs are fixed size and often (read: always) too small to show all the content they contain and that these dialogs should be made resizable.
Here's the response I got:
Thanks for the suggestion. This is a know limitation of our current architecture, and one of the first things I want to tackle in the next version. -
34!
Time flies!
-
Tech-ed 2004 impressions.
Tech-ed 2004 is my first Tech-ed / Microsoft conference ever, I didn't know what to expect however it turned out to be really cool. It's Thursday evening now, just before the party starts. Yesterday I hosted the O/R mapper BoF session and it went really well. At first I had to warm the audience up a little, most people were waiting for others to answer the questions. What surprised me was that so little people had actually worked with an O/R mapper, about 15% or so of the audience of roughly 50-60 people. The number one issue most people seemed to have was what are the advantages of an O/R mapper over the dataset approach. Related to that was the discussion about which situations are best for an O/R mapper and which situations are probably better handled with a more set based approach. The session progressed really well after the slow start (which I filled with a short lecture about O/R mapping in general) and it turned out there wasn't enough time to handle all the questions people had. A session worth repeating!
Currently I'm typing this on my laptop in one of the wireless work areas on Tech-ed, and it's also my first experience with wireless networking, which was kind of a struggle at first, due to me not having configurated my VPN settings correctly, ah well ;)
The network is very good, a little slow sometimes, but that's fine. At least there aren't any situations like we had in the old days on demoparties where your computer suddenly switched off because some person pulled the power plug out of the socket, forgetting that his powersocket block was powering a whole set of computers next to him. :).
The sessions are nice and there is a truckload of different material to choose from. They graded the sessions with numbers so you can see if a session is at the level you expect it to be (so you don't end up in a session where they try to explain what an object is when you expect some lowlevel CLR hacking info and vice versa). Not always are these levels matching the real session level but that's ok. Overall there is always something to learn.
In the MVP lounge I met Thomas Tomiczek of EntityBroker and we had some nice discussions about O/R mapping, C# and .NET. It was great to meet him. I also ran into Lorenzo Barbieri, a fellow weblogs.asp.net blogger, great to see the faces behind the names you see and discuss with every day :)
Ok, I'm a little exhausted now so I'll end this little Tech-ed impression by showing a picture of the main hall where we have our lunch. :)
-
LLBLGen Pro v1.0.2004.1 released!
After 3 months of development, we finally released a new LLBLGen Pro version, v1.0.2004.1! This update was focussed on upgrading the GUI with various new features like creation of relations and custom properties (name-value pairs, usable to generate gui elements at runtime for example), updating our database provider model to make sure all logic and gui elements is located in the driver assemblies, adding various small enhancements under the hood and add support for Oracle 10g and Firebird 1.x/Interbase 6.0.
-
Farbrausch releases their demo creator tool werkzeug!
Farbrausch, one of the PC demoscene's leading groups, have released their tool Werkzeug to the public. Werkzeug is a tool to create stunning graphical demos, by including 3D effects, music, textures, 3D scenes and more.
-
VC++ New DLL project humor
I started a little C++ Dll test project this morning and a good start for that is to fire up VS.NET 2003, create a new Win32 project and specify that it is a DLL.
VS.NET creates an initial .cpp file for you with some plumbing code. Here's the code it generated, no editing has been done on my part:// TestLibrary.cpp : Defines the entry point for the DLL application. // #include "stdafx.h" #include "TestLibrary.h" BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; } // This is an example of an exported variable TESTLIBRARY_API int nTestLibrary=0; // This is an example of an exported function. TESTLIBRARY_API int fnTestLibrary(void) { return 42; } // This is the constructor of a class that has been exported. // see TestLibrary.h for the class definition CTestLibrary::CTestLibrary() { return; }
Now, take a good look at function 'fnTestLibrary'. . It's always good to see there are still developers with a good sense of humor around -
TechEd 2004 Europe: O/R mapping BoF session scheduled!
The BoF about O/R mapping, hosted by yours truly, is scheduled as follows: BOF003 O/R Mapping and .NET 14:45 - 16:00, Wednesday, 30 June 2004
-
.NET Tool/Control vendors/creators: new directory site: www.developerfood.com!
A good friend of mine, Scott Wallace, has created a new .NET tool/control directory site: http://www.developerfood.com! If you are a tool / control vendor or a freeware/open source tool/control programmer, feel free to add your tool/control to the directory. The site is free, doesn't sell the controls / tools it lists nor is it affiliated with a tool/control vendor.
-
O/R mapping BOF at TechEd Europe 2004!
My proposal for an O/R mapping BOF at the TechEd Europe 2004 event has been accepted! If you're planning to go to TechEd Europe 2004, please vote for this BOF at this URL: http://www.ineta.org/bof. (select TechEd europe, then in the top menu, select Proposed Topics)
-
RSS Feeds at weblogs.asp.net should be static
Phil Winstanley blogs about the very slow pace of the SqlServer(s) behind the blogs here at weblogs.asp.net. I agree, the blogs are very very slow (posting a comment takes ages and reading the main feed is often resulting in a timeout).
-
Objectspaces will be merged into WinFS
Alex Thissen blogged about it this morning after keeping his readers into the dark for more than a day after his announcement that some big news related to Objectspaces was about to be posted:
-
Now, for the people with an XBox...
... have you seen the Gran Turismo 4 trailer already? If not, check it out here. As a PS2 and GT3 owner I already knew what kind of quality the name 'Gran Turismo' stands for, but after seeing this trailer... I'm beyond words... Unbelievable, how realistic it looks and acts. Can't wait!
-
Microsoft Business Framework (MBF) delayed till 2006
Tim Brookins blogs that MBF (Microsoft Business Framework) has been delayed and will be released when Longhorn is. For what I've seen from MBF, it will be a very great platform and reading Tim's explanations I can fully understand why MS is delaying it, as much in MBF requires technology released with Longhorn anyway.
-
New Dutch blogger!
One of my best friends, Jeroen van den Bos, is now also blogging on weblogs.asp.net! Welcome!
-
Windows Update will include worm removal tools. Not that helpful
Internetnews.com reports that Microsoft is working on a new feature for Windows Update which will remove all worms from your system. It's slated for release at the end of the year. Personally I find every initiative to offer a service for customers to fix their systems a good one. However will this particular initiative be a good one?
-
VS.NET Add-in contest
Roy Osherove organizes a very cool contest for .NET developers out there: the Most Useful/Innovative VS.Net Add-in/Macro contest! The amount of prizes is very high, so don't miss this opportunity to win cool stuff with writing some cool add-in. I'm one of the judges but I promise I'll be gentle .
-
Really complex databinding: ITypedList with weakly typed collections
I've finally managed to finish an article I wanted to write for a long time: Really complex databinding: ITypedList with weakly typed collections. The article describes in full how one of the most complex interfaces of .NET, ITypedList can be used to provide information to controls like the DataGrid control so complex databinding can be controlled by the developer: which property to hide, which property has to be set as read only because of the state of an object, which inner structure has to be exposed as a property etc. etc.. The example used in this article walks the reader through various topics: Custom attributes, ITypedList implementation for hierarchical data and non-hierarchical data and how to hide a property of a class in a databinding scenario. Source code for this example project is provided in C#. With this article I hope to pass on some information I've gathered during the past year working with ITypedList as the documentation on this important interface is pretty limited and a lot of developers will have to implement ITypedList some day.
For the article, click here. -
Really complex databinding: ITypedList with weakly typed collections
Preface
When you, as a developer, have written a class library which has to be bound to complex user controls like a datagrid, and you want control over the databinding process, you are confronted with one of the most complex interfaces to implement: ITypedList. I'm not sure if the reason why complex databinding is called complex is because of the complexity of the interface which makes this all possible, ITypedList, but I wouldn't be surprised. -
Marketing tools in full effect
In LLBLGen Pro I currently use the 1.7.4.0 release of the Magic Library for several GUI elements like docking windows. As this release was the final release before the library went commercial, no support was given, but that version was free, came with sourcecode, so no complaints here. As I'm adding new GUI functionalities to our O/R mapper, I required a nice tab control which not only looked nice but was more flexible than the .NET tab control. As Magic contains such a tab control, it was the obvious choice.
-
MVP!
Microsoft made me a C# MVP! . I don't have to add that I'm very very very happy with this title and I hope I won't disappoint as an MVP in the coming year.
-
My entry to the Phraser compo
The1 has posted my entry to his Phraser programming competition here. It's in C# and shows some basic techniques like clever usage of a hashtable and recursion. A list of all entries to the compo can be found here. Competitions are fun, it keeps the mind fresh .
-
Do not read just code, learn algorithms.
Joseph Cooney wonders which sourcecode should be read by a programmer to learn to become a better programmer. I'd say: none. At least, not the code for which you don't have the design documents or algorithm descriptions. A lot of code is very bad and it's pretty useless to just read code. The reason for that is that code is the end phase of programming software. What's way more important is the algorithm or set of algorithms the code has to represent. Only then you can learn something, because you can then see the start (algorithm) and end (code) of a transition every developer has to make a lot of times. Only with the algorithms in your hand you can check if the code you're reading is good code or not: if it doesn't describe / represent the algorithm(s) it has to represent, the code is buggy, bad and should be rewritten. You don't know that if you read sourcecode without the algorithm descriptions.
-
Objectspaces hostility and the separation of marketing and technology
Alex Thissen reported yesterday (and we all know what day it was yesterday ) about a rumour that Objectspaces would be removed from .NET 2.0 and would be released as a separated package.
-
Service pack 6 for Visual Studio 6.0 released
Get SP6 for Visual Studio 6.0 here: http://msdn.microsoft.com/vstudio/downloads/updates/sp/vs6/sp6/default.aspx
List of fixes: http://msdn.microsoft.com/vstudio/downloads/updates/sp/vs6/sp6/default.aspx (only VB6 and VC++ 6.0 have fixes) -
[OT] Chernobyl, our pompei
Slashdot posted today a link to a photo journal of Chernobyl, made by a Ukrain girl called Elena who went back to the Chernobyl area, 18 years after the nuclear disaster. This is a good example of the true power of the Internet: real journalism, real facts and available to everybody worldwide.
-
Nasty winforms bug
I've been fighting this bug all day and it annoyes me more with every minute I spend on it. Here's the deal: I have a ListView control and a Textbox control on a winforms form (.NET 1.1). With the Textbox you can edit a field of the object on the current selected row in the ListView. Easy right? I thought so too .
-
The MS - EU ruling
For all the people who think the EU ruling in the Microsoft case is about Realplayer vs. Windows Media Player: you don't get it.
It's not about some crappy player vs. some other crappy player program. It's about the difference between integrating a program into an OS and shipping a program with an OS. In both occasions the user will not see the difference, as in both occasions the program is in the start menu. The difference is in the fact that the real (pun intended) customers of Windows (the OEM's) should be able to decide which package of extra software they ship with the OS. They can in the situation where the programs are not integrated with the OS. They can't when the programs are part of the OS. -
VS.NET Service packs and why they're not here
Dan Fernandez blogs about the Whidbey release date slip and VS.NET service packs. An understandable article and I thank him for giving some insights in the why-o-why's. He also talks about service packs and why this is a problem. He gives some reasons why service packs for VS.NET aren't released yet. Let me warn you first: reading the reasons may cause you to fall of your chair so grab your desk or other strong, solid piece of material to avoid you getting hurt. Please acknowledge that Dan is most likely not the origin of these statements so a "Don't kill the messenger" is appropriate.
-
Yukon and Whidbey: a marriage not worth fixing
eWeek has an article about the release date slip of Yukon and Whidbey. It's more an article about Yukon than about Whidbey and for a reason: it's a known fact that Yukon holds back Whidbey, not the other way around, so if Yukon slips, Whidbey will slipperdy slide with it.
-
O/R mappers and concurrency control
Paul Wilson and Alex Thissen both blog about concurrency control related to O/R mappers. Let me start by pointing you to an article about concurrency methods I wrote some time ago: Concurrency Control Methods: is there a silver bullet?. I don't believe in low level concurrency methods, as they give you the false sense of 'it has been taken care of', while they just don't do that: they still cause loss of work.
-
Does SOA require Object-Message mappers? It depends.
Steve Eichert blogs about the question if we need an Object-Message mapper (O/M mapper he calls them) in a Service Oriented Architecture (SOA) world. It's my understanding that he thinks we need an O/M mapper when we're going to use SOA. I beg to differ.
-
BSD2 license violation solved
CodeAse has changed the documentation and application they based on my code so it now shows the right copyright clause as stated in the BSD2 license which was shipped with the original LLBLGen 1.x sourcecode they based their product on. The earlier reported license violation (and thus code theft) is hereby solved.
-
Code theft: Codease uses my LLBLGen 1.x sourcecode as if it is theirs!
This morning I found out that CodeAse, sells a tool, CodeAse 2.0, which is just LLBLGen 1.x but with different screencolors. LLBLGen 1.x is BSD licensed, but that doesn't mean you can simply rebadge it and sell it as if you wrote it! The BSD license clearly states you have to mention the original author of the work you use in your software in the About box and documentation. This didn't happen.
-
Subversion: unbeatable sourcecontrol.
I'm now almost done reading the docs of Subversion, and I can only say: this is open source done right, and when open source is done right, it's unbeatable by any software vendor. The system breaths quality, well thought out design and passion for software engineering. The documentation is very good, it reads like a novel. The win32 explorer plug-in (TortoiseSVN) is also very good, and offers a rich quality of services. Subversion has two more things to offer: it's free and it runs on a wide range of platforms (Win32, *BSD, Unix, Linux, MacOS X).
-
Private classes and full type name
This morning I was checking how my Xml serialization code was doing and I stumbled upon a phenomenon I hadn't seen before: the FullName property of Type will return a '+' instead of a '.' when the class is a private class. For testing I had defined some private classes and I set a property to an instance of one of those classes. My Xml serialization code will then add an Xml node with attributes for Assembly name and Type name. When examining the produced Xml, I saw:Type="DALTester.AdapterTester+OrderEntityValidator".
-
VB.NET stupidity
Consider the following enum definition (which is defined in a C# assembly)
public enum EntityState:int { New, Fetched, OutOfSync, Deleted }
-
Microsoft Support, Round 3, the flaw of the Hotfix
Julien writes:
PSS is the first line of contact for issues and if you contact them and tell them about your issue we will look into it. If we have a hotfix available for it, even if the SP is not yet released, we will provide you it. If we don't have a hotfix and your issue doesn't have a good workaround, we will make a hotfix for you (that's how they get done usually).
-
Microsoft Support, Round 2!
Jeff writes as a reply to my previous blog about Microsoft Support:
I found an actual bug in the framework (one of the RewritePath() overloads) and had a nice exchange started via the online support ticket system, finished by a member of the .NET team. It's one of three times I've had to contact MS directly, and every time my problem was resolved or at the very least explained. At the company level, I think they do a fine job.
-
Microsoft support? Where?
Alex Lowe wrote a blog about Microsoft and developer support. In there he ventilates his misunderstanding about a blog Roy wrote about information sharing.
-
Jimmy Nilsson on AOP
Jimmy Nilsson blogs about AOP, or Aspect Oriented Programming.His article combines some different insights on the matter, good links to articles about AOP and is a good starting point for the people who have ignored AOP for a long time and find this the right moment to get started with AOP and what the fuss is all about.
-
Objectspaces and orthogonal design
Ralf Westphal has written an excellent article about Objectspaces and orthogonal design. Highly recommended food for your mind.
-
Hostile attitudes
Paul Wilson blogs:
In fact, several have went out of there way to tell me how much the hostile attitudes of Frans and Thomas had turned them off!
-
.NET Reality check, my €0.02
S.B Chatterjee refers to an article which is a follow up on a blog by Michael Earls concerning a .NET reality check. (If this sentence sounds a little complex, it is, but just start with Michael's excellent blog entry and you're on track :))
-
Thought experiment: Objectspaces will limit interest in O/R mapping
Today I've posted this as a reply in the Microsoft.public.objectspaces newsgroup. I think it's also blogging material, so that's why I post it here too. You can decide to react here, on your own blog, but also in the microsoft.public.objectspaces newsgroup, available on the msnews.microsoft.com USENET server.
-
A plea for full multiple inheritance support in .NET
Disclaimer
Although I find it absurd to put in a disclaimer, I know for a fact that talking about Multiple Inheritance (MI) is risky, because it is one of those subjects which can cause irrational reactions, resulting in flame-fests. Discussions about MI should be theoretical and thus based on theory, not about one of the many different implementations. I'm discussing the theoretical benefits of MI and am not discussing a real implementation like C++'s MI. I've done some research on this subject prior to writing this article and have read many discussions about MI and .NET and also discussions about MI and languages like Eiffel, so I'm aware of the disadvantages of MI, I also am aware of the reasons (of the ones that are publicly stated) why .NET doesn't have MI at the moment. Still I think .NET contains enough functionality and implementations of classes and interfaces which require MI to be fully utilized. MI is a complex concept, however so is the concept of generics. MI can result in unmaintainable code, but so can Single Inheritance (SI) (any language can be used to write unmaintainable, bad code). You can work around MI in most situations, but you can also work around the lack of polymorphism (in C for example, by using function pointers) or even OO. Still it's seen as an advantage to have OO, polymorphism and (soon) generics. -
Happy 2004!
I wish everyone a happy, good, healthy, warm and above all, .net-ful, 2004! :)