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.
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.
There is still a lot of activity around the Java Pet Store and .NET Pet Shop sample applications. Here are the latest news from the front:
- Microsoft releases a new version of its Pet Shop (V3) sample. This version has been re-architected to comply with Microsoft's Prescriptive Architecture Guidance.
- The DotNetGuru team presents its own Pet Shop reference implementation.
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.
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.
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.
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.
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?
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 :-(
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!
Aaron Swartz created xmltramp as an easy way to manipulate XML documents in Python.
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.
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
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?!".
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.
SharpReader 0.9.0.2 has been released. See all about it on Luke Hutteman's weblog.
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? ;-)
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.
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:
- Categories with the list of tools in each category
- Categories without the tools
- Tools by category (the sample category here is "Documentation - Code commenting")
- Flat list (like the current RSS feed)
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!
These guys are creating the WYDIWYG kind of development.
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.
After his interview, Michael Stuart (Senior Consultant with Microsoft Consulting Services and responsible for the Microsoft Application Blocks) has released more information about UIP (User Interface Process). A Powerpoint presentation is available on DotNetGuru (french site).