ASP.NET Hosting


Archives / 2003 / May
  • AOP for tracing

    Simon Mourier says that he is "missing good tracing support from the CLR".

    In my opinion, this is one area where AOP (Aspect Oriented Programming) can bring value into. Although the tools are not ready yet for prime time for .NET, it should be possible with AOP to dynamically activate trace for an application or specific methods of an application with a config file or a GUI.
    I know that LOOM.NET has an exemple of this. Dunno for the others.

    Although not quite AOP, but a post-compiler instead, we can do that with eXtensible C# (including getting the values of parameters). If someone is interested in having an example of this, just let me know.

    I guess AspectJ covers this for Java as it is very advanced compared to what we have for .NET.


  • SequoiaView

    If you need to do some clean-up on your disk, you should definitly download SequoiaView to get an idea where the big files are hiding. If offers a nice and efficient treemap view of your disks.


  • CodeSmith rules

    Just wanted to let people now that CodeSmith is a powerful yet simple tool that can help you with code generation tasks. You should definitly give it a look.
    Bravo Eric!

    Note: Codify seems like a valid competitor too, except that unlike CodeSmith it's not free and won't probably become open source while CodeSmith may.


  • Ward Cunningham and the Fit Framework

    Here is a nice quote by Jon Udell from his interview with Ward Cunningham:

    There is a vast gulf between the process mappers who model business systems pictorially, and the programmers who grind out the C++ or Java or .Net services that support those business systems. Between the two camps lies a fertile land of opportunity. It's time to jointly explore it.

    Famous for his contribution to XP, Ward Cunningham is - among a lot of other interesting things - working on the Fit Framework which he summarizes as being "about tests that people can read" ("people" here means all kind of people, not only developers).
    The Fit Framework is worth a look as it proposes a way to easily associate the testers and the developers around unit testing. This is definitly a good approach reminding us that unit testing is not solely for developers, but should also be used to validate business rules expressed by people that have no development talents.

    I think that this approach is a step forward in the land of opportunity that Cunningham is speaking about. The relationships between business and our technological world need a lot of smoothing. My guess is we will soon see many opportunities following the same path.

    Update: Ward Cunningham has a weblog.


  • Generic doesn't mean "do-all"

    As a follow-up to my article on generic data access, I'd like to clear something up.

    I think that everybody would agree that there are so many peculiarities for each DBMS that it is not possible to write code (don't even think about SQL) that would work with every SGBD.

    What the article shows is that it's possible to write a good portion of the code generically, without having to rewrite the utility classes (such as DBHelper) each time. So, the main goal isn't necessarily to be able to switch to another DBMS without having to change an application’s code (we don’t change an application’s DBMS that often…). The goal is instead to have at hand utilities that will continue to work tomorrow, even if that next application we have to write requires a different DBMS.


  • Generic data access with ADO.NET and the Data Access Application Block

    I've published an article on a french site named DotNetGuru. This site is dedicated to technical articles mainly about architecture in .NET (often with comparisons with J2EE).

    The subject of my article is Generic data access with ADO.NET and the Data Access Application Block. In this article I show:

    • how to compensate the lack of genericity in ADO.NET by going beyond the interfaces provided by ADO.NET and introducing the Provider and DataSource classes.
    • the generic DBHelper class I created from the DAAB's SqlHelper class.

    Warning: this article is in french. Si quelqu'un souhaite le traduire...

    Source code which shouldn't need translation (C#) is included.


  • Switching to RSS Bandit... not

    I'm probably not going to win any friends, but...
    I've uninstalled RSS Bandit Beta 5. I did this for a couple of reasons.

    [News from the Forest]

    Same here. Everything is so slow! What's going on?
    I'll stick to SharpReader.

    So, Luke, my wishes for SharpReader are:

    • a lower memory consumption (currently everything is kept in memory right?)
    • multi-selection for feed items and for feeds
    • properties for feeds to be able to change the refresh rate for example
    • being able to stop applying a filter right next to the Apply Filter button

    What are the plans Luke?


  • Mozilla Firebird 0.6 (formerly Phoenix)

    The long due Mozilla Firebird 0.6 release is out

    Mozilla Firebird 0.6 (formerly Phoenix) is available for download. This release features a fresh new look, a redesigned preferences window, preliminary support for Mac OS X and much more. Read why you should be using Mozilla Firebird and get the latest release.


    You should definitely give it a try. The tabbed browsing and the extensions are just wonderful.
    Still lacking the "Send a Link" and "Send Page" commands though :-(


  • switching to RSS Bandit?

    Everyone (including me) has been raving for the last month or so about SharpReader (rightfully so).

    However, in that same time frame
    Dare and Torsten have made HUGE strides with RSSBandit. I am actually starting to feel like a kid in a candy store. I am going to play around with RSSBandit over the weekend, but I think I might be making a switch. I really like the tabbed browsing and hitting the space bar to tab through new items (see some more new updates here). Again, Great Work.


    Maybe I should give the latest release of RSS Bandit a try? The first ones I tried would not work...

    Hopefully I'll enjoy the tabbed browsing as I do with Phoenix/Firebird. Hopefully it will have a lower memory consumption than SharpReader. Hopefully it will have multi-selection for items and feeds. Hopefully...

    Well let's see!


  • Generic comparer

    I had lost the link to these smart pieces of code here and here.
    Now I'll be able to find them again :-) Might be of interest to others as well.

    Similar code is also available.

    The goal is to be able to compare multiple kinds of objects without having to write code of each kind of object. A real time-saver if you ask.


  • Tips from Scott Guthrie himself


    This is the cleanest solution to one of ASP.NET most common problems, setting focus:

    Scott Guthrie notes in his
    Blackbelt WebForms presentation:

    Sub SetFocus(ByVal controlToFocus As Control)

    Dim scriptFunction As New StringBuilder
    Dim scriptClientId As String

    scriptClientId = controlToFocus.ClientID

    scriptFunction.Append("<script language='javascript'>")

    RegisterStartupScript("focus", scriptFunction.ToString())

    End Sub
    [Richard Caetano]

    The sample is from Scott's new set of slides here.

    Richard beat me to it :), Very clean.


    A must read. See ScottGu's post.
    The goodness even starts on the first slide: the ~ feature is one of those were you get a shock asking you "how come i did not know this?!".


  • Tips for reducing bandwidth

    The Fishbowl has a nice explanation on conditional HTTP GET, the Last-Modified header and ETags.

    This article can help you reduce bandwith consumption if you are creating an RSS (or anything else) client or server.

    Also add support for HTTP compression and you'll save a lot of bandwith. Free HTTP compression libraries are available here and here.

    Update: SetETag(), SetETagFromFileDependencies(), SetLastModified(), and SetLastModifiedFromFileDependencies() may be of help...


  • Smile people, smile

    Don't worry Luke. Keep up the good work!
    People are reading to quickly nowadays. This is understandable due to the amount of information wa have to face and the quantity of weblogs around.
    But people, please pay attention before commenting on something you've read too fast.

    Smileys still mean something, don't they? ;-)


  • kinda uml

    I guess nobody noticed that I own kinda uml.
    Good! Thanks to Google I can state on my resumé that I can produce a kinda UML.


  • New RSS feeds for the list of .NET tools

    Post out of date. See this post.

    For those of you who want to play with the new RSS feeds for the list of tools, you can paste the following links into your favorite reader:

    Please report issues or just tell me what you think. I'd ask you however not to spread the word on those yet. This is still work in progress. Updates to come soon, stay tuned! 


  • Sequence Browser: UML sequence diagrams from assemblies

    Quite a while after I created it (oh my god, almost one year ago!), I decided to release the source code of my Sequence Browser.

    The Sequence Browser integrates with Lutz Roeder's .NET Reflector. It displays kinda UML sequence diagrams for method calls. It's actually just a prototype, but I thought I should release the source code. Maybe someone would be interested to take the idea and build on it. You could use this code to improve the Sequence Browser or include it in your own product.

    To see the Sequence Browser in action, you have to build it and add it as an add-in for .NET Reflector.
    You can then navigate for example to System.Windows.Forms.Button.ProcessMnemonic, right-click and invoke "Sequence Browser".
    If the "Sequence Browser" command is not enabled, you may have to insist by trying on other nodes. Reflector seems not to work always well.

    Here is a picture of what you should see.
    You can try to change the depth to 0 and hit the Redisplay button.
    Note: every text is a link.

    I'd be interested to know what you do with this idea/code, please let me know. I would enjoy to share with you the extra ideas I have for this kind of tool.