General
Posts about Smart Development principles in general, without going in too much technical detail.
I bought a big-ass (42"), kick-ass TV recently, a Samsung. If you're looking for a great plasma panel TV, you can't go wrong with the Samsung line. They feature a 1024 x 896-pixel resolution (great for HDTV and use as a computer monitor), dynamic image enhancement with noise reduction and color adaptation to your taste, simulated surround sound, picture-in-picture, burn-in protection, and much more. The image quality is just amazing! Wonderful, rich colors, sharp image, just great. Far better than any LCD TV I have seen so far, and with a 60,000 hour life, you can watch TV for six hours a day for 27 years before the screen finally gives up.
To top it off, I also purchased a kick-ass multimedia PC (which I haven't installed yet, unfortunately) to turn the TV into a full-scale digital entertainment system, and a Philips home cinema to get to that full cinematic experience. This setup, in combination with Star Wars III, makes the whole house tremble!
And the really amazing thing is, this whole lineup of kick-ass entertainment technology is available at roughly 2/3 the price of a year ago: just € 1800 for the TV, € 1000 for the PC (dual-core Pentium and full multimedia capabilities including a dual TV tuner, hard disk recorder with delayed viewing, a dual-layer DVD burner and a second DVD-ROM drive, yeah!) and € 300 for the home cinema. It's cheaper than a Team Foundation Server license ;-)
In his blog, Peter Himschoot suggests the creation of a Belgian User Group (BUG, for short :-)) centered around Team System. I think this is a great idea and I'll certainly join and do my part. If you'd like to join too, send an email to peter@u2u.net and let him know!
In the meantime, I've been "playing" with Team Foundation Server Beta 3 and I really love it. My methodology of choice is MSF for Agile Software Development, which is very very close to the pragmatic mix and selection of best practices from other agile methodologies (MSF, XP, Scrum) that I once concocted under the name "Smart Development". Team System is great for every team that wants to keep its eye on project progress and deliver a quality product.
In short, Team Foundation Server is the back-end part of Team System that supports collaboration, project "planning" (work item tracking), bug tracking, daily build processes etc. You can develop software using Visual Studio without using Team Foundation Server, of course. But I really recommend using the tool, even if it's still just a beta, because it's so incredibly valuable. It integrates agile development processes right into the IDE, as they should be. For instance, the tool generates a team website for you, where you can post announcements, downloadable tools, conventions documents etc., and where build and unit test results are automatically posted. You can also keep track of the number of work items that still need to be done, the amount of work already done in the current iteration, etc. The source code control system is really powerful, and checkin policies make it possible, for instance, to disallow checking in code that doesn't build. How great is that??
Incidentally, if you have an MSDN Subscription, then you can download a great virtual PC (VPC) image with Team Foundation Server Beta 3 and the RC version of Team System on it, complete with a sample project (AdventureWorks, of course).
Microsoft has just published issue #5 of The Architecture Journal. This excellent publication for .NET Architects features the following articles:
Metropolis and SOA Governance (part 1), about the need for SOA services to be both generalistic and specialized
An Introduction to Topic Maps about an ISO XML standard for mapping real-world resources to abstract concepts
Value-Driven Architecture: Linking Product Strategy with Architecture about how value models, as opposed to business requirements, influence application architecture
Process and Criteria for Evaluating Services-Based Integration Technologies about the evaluation of technologies for integrating service-oriented systems
Service-Oriented, Distributed, High-Performance Computing about a clustering/grid strategy for building HPC systems over the Internet
Planes, Trains and Automobiles: Choosing Alternate Transports for Web Services about using message queues or an HTTP/SMTP combination for SOA instead of straight HTTP.
Every article is about 15 printed pages.
How's this for inventive ways to make money without effort? Some funny, silly person is selling a GUID on Ebay!
Somehow, I wish I had thought of that :-)
I went to a number of Tech-Ed sessions today of course, some more interesting than others. DEV320, about Exception Handling Best Practices, I found really rather basic (of course it was a level-300), talking about the obvious practices of avoiding having to throw and catch exceptions when they're not really necessary, the cost of exceptions, rethrowing exceptions etc. The presenter did a good job of explaining these basics. He should know them pretty well, as exception handling is one of his priorities in the CLR development group.
Windows Mobile Development
Then there was the Windows Mobile development cabana talk -- a soft of informal talk targeted to a smaller audience -- which was kind of interesting. A couple of topics were covered such as developing using the emulator images (you can develop for Windows Mobile 5.0 now here at Tech-Ed; the emulator images for this new OS are available in the Hands-On Labs), using mobile controls in ASP.NET applications and the use of SQL Server Mobile (the new name of SQL CE) for database-oriented smart device applications. The coolness here is that you can synchronize and replicate SQL Server databases between your desktop/server and smart devices directly via ActiveSync.
Software Factories
One of my favorite topics as of late: software factories. The basic idea is that you find patterns in your software projects and pour them into a “factory,” i.e. a collection of code templates, configuration presets, reusable blocks etc. so that you can generate parts of your new applications automagically. The talk gave an introduction to software factories and there was a live demonstration of using a factory. If you're going to one of the international Tech-Ed events and you're into software architecture, this session is not to be missed!
The way Microsoft envisions software factories in Visual Studio 2005 is by using that tool's support for DSLs (Domain-Specific Languages and the upcoming Guidance Automation Technology, or GAT.
DSLs are abstractions of given problem domains and the solutions to those domains -- or rather, your solutions. You can compare this roughly to UML in sense of notation (class diagrams, use cases etc.) of the problem and the solution, through patterns. Visual Studio 2005 comes with designer support for DSLs and you can even create them programmatically using the DSL SDK. GAT then provides a “recipe“ infrastructure for building your apps step by step, as a set of Visual Studio extensions.
Basically, you open an application recipe (a software factory) in Visual Studio, you design the flow of your solution as a state machine on a drawing canvas in Visio/Rose style, and you connect the missing parts by filling in the code that does actual work. Some of the code will be generated by the DSL system based on templates (compare to CodeSmith and ASP.NET, because you're embedding code that must be run at code generation time between <# ... #> and <#= ... #> tags).
The speakers demo'ed building an application that allows users to complete an order. The code they generated used the UIP Application Block to manage how users navigate from one screen to the next, which is of course the smart thing to do. When data needed to be retrieved from a back-end system -- a web service of course -- they created a Web Reference proxy as usual and added a caching Service Agent on top. Data would only be retrieved from the back end if it was not already in the service agent instance's cache. And, yes, the service agent was auto-generated too, again based on a code template and some input from the developer. The generated code used the Caching Application Block. As Darth Vader would say, “Impressive... Most impressive!“
Yes, you can do it with other tools too
Of course, the basic ideas here are not new. You can use Visio templates today to come up with reusable general designs; you can use tools such as CodeSmith to generate code based on templates, including code that uses the Enterprise Library and the other Application Blocks. But in Visual Studio 2005 and the extensions these gentlemen demonstrated, it's all so nicely integrated with the IDE and wizards and designers make it much easier, saving us developers and architects time.
Software Factories are the Architect's Domain
I think that consuming software factories is for developers and that creating them is mostly work for the Solution Architect and the Senior Developer, based on code written in previous projects. It is their job to spot patterns in the enterprise's software designs and needs, and to extract those into a set of reusable factories and application blocks. Moreover, I think that while software factories are definitely another step in the right direction towards delivering 4GL's promise, the common problems related to reuse will resurface with factories: are people going to spend time to write code and create templates and factories that are actually reusable, and will they actually be reused? From experience I have learned that this is only true if reuse is enforced on the team by the Solution Architect, who must posess strong reuse and mentoring skills to drive this point home and to actually get it used by the rest of the team...
Smart Client Architecture
The final session I attended, or at least entered before I left 10 minutes later, was the one on Smart Client Architecture. This subject is “totally my bag,” to quote Austin Powers, and again I felt as if the presenters were dissing up old material that anyone can find in the Patterns & Practices materials. Anyway, I left the session quickly without waiting for any potential juicy bits to appear because I got tired of listening to the Buffalo Bill-soundalike onstage...
Well, I'm off to the reception now. Talk to you again tomorrow and keep those comments coming :-)
Microsoft launched a really cool initiative today: the Virtual Lab. Using it, you can perform exercises such as those at Tech-Ed's Hands-On Labs from your own PC over the Internet.
That's right: via your Internet Explorer, you connect to a full virtual PC that has all the software installed you need to do the exercise you selected first -- for example, you may want to experience ClickOnce Deployment firsthand, or you may want to experiment with C# 2.0 without downloading and installing Visual Studio 2005 Beta 2 or the Visual C# 2005 Express Edition Beta 2.
The procedure is simple: register for free, select the virtual lab you want to try your hand at, open the PDF that guides you step by step (a good idea is of course to print it), then connect to your very “own” virtual PC over the Internet and start clicking away! You don't have to be afraid of f..., ahem, messing up because it's a virtual machine and it gets deleted after you've used it anyway. Run into trouble? Close your session and open another, fresh one.
Microsoft is putting a number of such virtual labs online and more are coming. I think it's the greatest idea since trialware!
This morning Microsoft CEO Steve Ballmer's keynote speech kicked off Tech-Ed talking about the “New World of Work” as envisioned by Microsoft. This reminded me very much of the yearly internal-only Microsoft Technical Briefing (MTB) and Microsoft Global Briefing (MGB) events that I attended while at MS -- every year there's a new slogan such as “Realize Your Potential” etc., and they all boil down to the same thing: we want to create software that makes people's lives easier, tools that help them jump farther and with less effort. It's just like Apple's slogan a few years ago, “The Power To Be Your Best.”
Anyway, the current wave of potential-realizing new world of work stuff generally means better communication and connectivity. People want to travel, use software and devices etc. using a single identity, they want to know who they can reach and how, etc. This is nothing new really; it has been a central tenet of portals for years.
The key is, however, that the new tools make it easier to get there, or make it easier for developers to write software that gets people there. Microsoft's Live Communications Server is an example of the former, and Visual Studio 2005 is an example of the latter. What I'm really looking forward to, besides the full RTM versions of Visual Studio 2005, SQL Server 2005 and BizTalk Server 2006, not to mention Longhorn at some time, is actually using the recently-announced Windows Mobile 5.0. According to Steve, or should I call him Mr Ballmer, some 40 OEMs are going to ship devices based on this OS this year. In addition to that, we can expect Windows 2003 Release 2 this year too, and of course the 64-bit version of Windows 2003 is here already (if not, Microsoft put a bogus DVD in my event bag...)
.net is gaining momentum
Earlier this year, I heard from Microsoft Belgium that .net had surpassed Java as an enterprise development platform in Europe. Ballmer quoted some numbers, claiming a 43% market share for .net as developers' primary platform vs. 35% for Java. That's quite impressive, given that .net is much younger and that version 2.0 is still in Beta today. Part of that success is of course due to Microsoft's excellent marketing, but most of it, I think, to the sheer quality of the environment.
I've been coaching a couple of Java developers during their switch to C# for a while now, and they too realized the value of C#/.net quickly. Okay, Visual Studio.NET 2003 is not up to par with Eclipse, but Visual Studio 2005 definitely is. The fact that .net Beta 2 scores up to 200% faster execution time than IBM WebSphere 6 on Sun Microsystem's own WS-Test 1.1 benchmark also shows that it's far superior on the server.
Seeing that .net is a core technology in upcoming systems such as SQL Server 2005 and Longhorn, and seeing that it looks like it's going to get integrated into the other server products such as Commerce Server 2006 more and more, Microsoft's strategy and vision of interconnected systems based on managed code is starting to come together, and will provide a huge payoff soon...
On Tuesday, I'll be presenting 2 "Lightning Talks" at the Developer & ITPro Days event organized by Microsoft Belgium: "5 Ways to Improve your Unit Testing" and "How to make Session state strongly-typed and early-bound".
Other topics that are presented that evening (after 5 PM) include "Generating WordML with XSLT" by Wim Verhaeghen and "5 Ways to Secure your Web Applications" by Bart De Smet, among others. See also Bernard Vander Beken's site http://jawn.net/talks/ for details.
See you there?
Remember my previous post about how Visual Studio.Net ruined my day? The story didn't end there...
Because the next day, the problem came back. Everyone on the team was suffering from it, it was spreading like wildfire. That's the disadvantage of source code control I guess :-)
But after a lot of swearing, sweating, bleeding, and a lot of other unpleasant things, we found the actual cause of the problem -- never mind the fact that, in the case of a Parser Error with Global.asax.vb, you could solve the problem by adding a space to the source code, saving, compiling and repeating...
The cause of the Parser Error which kept cropping up, everywhere in the project, was inconsistent use of namespace casing (in my defense, I joined this project very late and the codebase didn't use the proper naming conventions.) That is, a number of .aspx files would contain an "Inherits" attribute which contained proper Pascal casing for the namespace, whereas the project settings would not:
<%@Page Language="vb" ... Inherits="Company.Project.UI.Web.MyPage.aspx.vb" ... %>
and
project settings' Default Namespace: Company.PROJECT.UI.Web
This inconsistency caused Visual Basic.Net to totally lose it and go nuts on us. The solution was to have everyone check in their code, and let an appointed "volunteer" do a complete Checkout, find/replace all occurrences of the capitalized word by the Pascal-cased word, update the necessary file and directory names, delete the IIS Virtual Directory and create a new one, recompile and check everything back in. The Cleanup utility was a tremendous help here (of course :-)).
So try this first before you strangle anyone! (I sincerely apologize to my victim's family and friends. I feel their pain...)
So far, 22 people will be there at the 3rd Belgian Geek Dinner on January 21, 8 PM -- ... in Brussels at the Attila (see also my previous post).
Come on people! There are a lot more partyin' IT folk around! We're going to have a great time at the Attila, no need to be shy! But please tell me you're coming so I can make reservations.
What -- you're not sure? That means you don't not want to come... Or you don't want to stay away, whatever :-) Let's make this a great event.
So far we have the following list:
- Karine Bosch
- David Boschmans
- Birgit De Metsenaere [optional]
- Roy Dictus
- Doggi
- Gert Driesen [optional]
- Jelle Druyts
- Mark Faulkner
- Pieter Gheysens
- Yves Hanoulle
- Peter Himschoot
- Rudi Larno
- Jose Maria-Guzman
- Tom Mertens
- Ann Moerenhout
- Joris Poelmans
- Stefaan Rillaert
- Arif Shafique
- Jan Tielens
- Patrick Tisseghem
- Wim Verhaeghen
- Patrick Verbruggen [optional]
- You
See you there!
If you're into hot new search tools, check out the beta of Google Suggest... I call it "Google with IntelliSense". Fun stuff!
I just finished a great book, David Bank's 277-page "Breaking Windows -- How Bill Gates fumbled the future of Microsoft". The title suggests an anti-Microsoft book, but The Wall Street Journal reporter David Bank paints an objective and detailed picture of the period 1997-2001, which was a very difficult time for Microsoft and its senior management.
There were the difficult launches of MSN, Internet Explorer 4, and Windows 98; the battle inside the company between the diehard "Windows hawks" who cared only about protecting Windows and properietary technology and the "Internet doves" who wanted to use open standards such as XML in Microsoft products; and of course the many court cases including "the one" that nearly broke the company in pieces. The title refers to the fact that Bill Gates at first didn't "get" XML, open standards and the Internet while there were real technology visionaries inside the company who realized how crucial support for open standards was in the times-that-were-a-changin'. It also refers to his hardball tactics against the government and the courts which cost the company dearly, not just in fines but also in loss of public image and an exodus of valued talent...
The book is a fascinating read and gives great insight in how Microsoft's senior management works, thinks up strategies and aligns the company along the lines of those strategies. This is one of the best Microsoft books I've ever read. If you want to learn what goes on at the top of MS, go get it!
Christmas time again, and looking forward to a week of vacation... And so I have a couple of Christmas gifts for you :-) Our friends who are now celebrating Hannukah or another cultural holiday, please consider these gifts Hannukah/... gifts...
I got 5 more Google Mail accounts to give away to those who can come up with the most original reason why they need one :-) Just send me a request, my e-mail address is roy.dictus@gmail.com.
Happy Holidays everyone!
Google has added a few Asian languages to its Google Translate service.
This service looks suspiciously like AltaVista's Babelfish to me. If you try to translate the text "My name is Bond" to French, you get the same result as with AltaVista's translation service -- "Mon nom est en esclavage" ! I guess auto-translation technology isn't at its peak just yet.
The Altavista service offers more languages than Google, by the way.
Oh yeah, not to be Google-bashing, but the Blinkx Desktop Search tool, which I find not as easy to use as Google Desktop, does support searching in PDF files. Just FYI...
Scott Guthrie, program manager for ASP.NET,