Tobler.SoftwareArchitecture()
John Tobler's somewhat ordered collection of thoughts and resources mostly related to software architecture and software engineering.
-
[.NET - General] Return of the .... STL!
Coming from a C++ background, it is interesting to see that the Standard Template Library (STL) has been reincarnated as STL.NET for VC++ 2005. Stanley B. Lippman provides a new STL.NET Primer that not only introduces the undead beast but also gives some rationale for its .NETification. Lippman's article is the beinning of a series on STL.NET. Evolving STL into STL.NET is a Good Thing (TM) but it is not enough.
When STL first came into existence, it quickly became an essential tool for C++ engineers, myself included. I also derive from a SmallTalk lineage, and have grown used to SmallTalk's powerful collection class libraries, so the STL collections (containers) were certainly welcome, limited as they were. Alexander Stepanov's approach to providing templated algorithms was quite revolutionary and represented a very creative contribution at the time. I welcome the aspirations of the venerable STL to join the .NET generation because it will provide a much needed migration path for C++ engineers who have invested time and energy into learning these powerful tools. I can only hope Lippman is right and that STL.NET will play well with others (C# and VB.NET and the many other new CLS-compliant languages). I eagerly await the other articles in his series to find out.
My main thesis here, though, is that STL.NET is not enough. Making STL.NET available for C++ is a nice gesture, but what about the rest of the CLS/CLR world? Collections are important! A solid set of collections can make architecture and engineering much easier and you quickly find that collection abstractions enhance your thinking ability. I sincerely hope that Microsoft will bite the bullet and take this opportunity to rework the whole idea of collections intelligently.
The original System.Collections offering was, frankly, not even a respectable token gesture. I'm not sure Microsoft has ever taken collections seriously. Even the Java Collection Framework (JCF) is arguably better than .NET's collections. Does Microsoft have any empowered, strong advocate for putting a real set of collections into the .NET Framework? If so, I would like to know that person's name!
Wintellect has started a Power Collections for .NET initiative. This effort could be a vehicle for work toward a new and effective collections framework. At least, it is a community where some people want to discuss the matter and where some people are currently writing code. They are asking for our help. If you care about collections, you might want to participate. The opportunity is here and the time is now!
PS Thanks to Mike Taulty for bringing the STL.NET issue to my attention.
Update: Kevin Downs has provided a link to the very interesting C5 collection class library project. To make sure the various collection class projects at least know about each other, I have forwarded the link to the Power Collections for .NET Class Ideas Forum to make sure those folks are also aware of it and have emailed information about Power Collections for .NET to the author of C5.
-
[Human Factor] Not as far from the Holodeck as it once seemed
We always expect something cool from Siggraph, so check out Siggraph 2004 Brings Sci-Fi Imagery Closer to Reality.
-
[Security] Defensive Security Programming Resource
Security conscious software developers, certainly including .NET developers, should take particular note of the Metasploit Framework released into the wild by Metasploit. I have to stretch a bit to have faith that this information and toolkit will be used more for good than harm. Still, with all sorts of very nasty new viruses appearing, ones that can even hop from Bluetooth to your Symbian-enabled cellphone (see SymbOS.Cabir), all of us serious software professionals had better educate ourselves on the tools and techniques being used against us by the denizens of the Dark Side. Frankly, I think the virus wars have escalated beyond the coping ability of the normal anti-virus vendors and their products. From what I see, most organizations are absolutely clueless as to the new hazards we face today! If you care about your users, you will need to work very hard to protect them and your applications from the kinds of tactics demonstrated publicly by Metasploit and similar exploit information sources. May the Force be with you!
-
[Human Factor] When Blungry Blog!
I was inspired by this post on 0xDECAFBAD to think about the art of blogging and I'd like to share these thoughts with any other potential blogger burnout candidates. Here is how I answered this particular author (with minor edits added):
-
[Software Architecture] "Getting from use cases to code," a great article series
Gary Evans has written Getting from use cases to code Part 1: Use-Case Analysis and Getting from use cases to code Part II: Use Case Design, absolutely the clearest exposition I have yet seen about how to proceed from use cases to an actual design. As a .NET architect, I can use Gary's articles to cleanly lead user representatives, stakeholders, and managers through the process and can show them how we can get to shippable results by starting with a decent set of use cases. Gary gets my personal ".NET Architect's Helper of the Month" award for his work on these.
-
[TDD][ASP.NET] Some help for unit testing server-side ASP.NET
In the "Why didn't I think of this?" category falls a very helpful new article, "Server-Side Unit Testing in ASP.NET: How to create an HttpContext outside of IIS" by Steven Padfield, who did think of it. I started down this path, once upon a time, but didn't follow through. Padfield's approach is potentially helpful when you want to integrate NUnit testing with ASP.NET (not an easy task, unfortunately!).
-
[SoftDev] Book: Kerievsky, Joshua, _Refactoring to Patterns_
Now this one looks interesting enough that I may actually need to buy and study it!
-
[Human Factor] In Honor of a Different Kind of Code Hacker
Francis Crick, who, in 1953, unravelled the structure of DNA along with James D. Watson, died on July 28, 2004. Crick and Watson's discoveries led to our present understanding of the genetic code, which is arguably far more important to all of us than the computer code we celebrate on our weblogs every day.
-
[Languages] IronPython is out and OpenSource!
I am *so* stoked! Python, one of my very favorite languages, is now a real .NET language. The incredible Jim Hugunin has just released IronPython-0.6. Furthermore, IronPython is Open Source, under the Common Public License - v 1.0. Here is one Pythoneer's sincere "Thank you!" to Jim!
-
[Languages] o:XML Object-oriented XML, the Language
Check out this new XML-based programming language, o:XML. I have long anticipated something like this but am embarrassed to admit that I didn't discover it two years ago, when it got started. Version 1.0.0 was proudly released on the project's second anniversary. I only found about it because it was featured in the Daily Python URL (on 2004-07-23), one of my favorite non-.NET information sources (Rss 2.0 feed).