I actually believed that these were just bedtime stories, but it seems that Noel actually gets to live the entire Agile dream to its fullest! You ever wanted to know how it works? Go check out A day in the life....
Acknowledging that OO is not always the sole solution, a full 339000 blog entries states that it is more important to do it right.
This time, we will have the opportunity to enjoy Paul Preiss, the President of IASA, giving the key note. Venue will be centrally located at Cornerstone's in Gothenburg and the date is 7-8 April.
Momentum is building within IASA and I have been appointed VP of Content and Knowledge Programs. This feels great and is a turn in the right direction from an IASA perspective - grouping our content together with our upcoming Knowledge programs.
I have been given the opportunity to work with a group of the most talented people in the IASA content team: * Marian Drumea, recently introduced as IASA VP of Chapter Activities * The blogfather of Visual Studio Team System, Rob Caron (proud father of A Team System Nexus) * Michael Confoy, Executive I/T Architect for Architecture, Process & Technology at IBM SWG Global e-business Transformation
These guys does an amazing job in editing material, keeping our site updated and finding all the architecture related information so our members won't have to. They also have first hand contact with our authors, a crowd that is turning out to be more and more impressive by the day.
Among our authors I would like to mention: * Scott Ambler * David Ing * Simon Guest * Lewis Curtis * Nick Rozanski and Eoin Woods * Cliff Berg ... and many more, no less impressive.
As a matter of fact, the IASA content team is a bit short on members at the moment. I you are interested in being part of this select team and have the opportunity to interact with some of the brightest minds in the industry, don't hesitate to contact me. At this moment we need experienced architects willing to help authors produce material that is of high enough quality to satisfy our demanding members.
IASA is also on a constant lookout for new material. If you have something to say, please drop me a line. Our editors are a great asset in guiding you to deliver above and beyond what you believe your capabilities to be.
I just took part of a presentation by Paul Preiss, President of IASA, on the upcoming F&T material. This is really going to rock the software development industry!
Terms under review at this moment, as stated on the F&T site:
- Architecture Style
- Architecture Pattern
- Architecture Methodology
- Architecture Toolset
- Architecture Framework
I have still only seen pre-alpha material but am nothing short of amazed! As it seems, the F&T working group have set their minds on providing the software industry with a complete taxonomy of software architecture. This means a glossary of terms, role- and object descriptions, definition of tasks and relations between all of these.
You will find both Microsoft, IBM and many other large corporations committing to the output of this IASA working group which means that the F&T definitions are terms that you eventually will be using in a not so distant future.
I suggest you keep an eye open when IASA releases this material on public review near the summer.
Yes, I am aware that I haven't posted anything in way too long. 'Nuf about that now.
If you're an enterprise developer, I'm certain that you already build most of your applications on top of Enterprise Library for .NET 1.1. If you don't, you should. If you don't even know what it's about, EntLib is a library of application blocks that guides you through the everyday tasks of an enterprise developer. As a bonus, the application blocks are designed to be easy to use and they are well suited to be integrated in your enterprise application. You can get yourself acquainted with the EntLib using some nice Hands On Labs that Microsoft gracefully has provided.
I have some good news for those that have moved on to .NET 2 as well. MS has release EntLib for .NET 2! There are a few webcasts and presentations but it seems that we have to wait until March to see the Hands On Labs.
You should keep an eye on Tom's blog if you are interested in building high quality enterprise apps. He never fails to keep us updated on the latest and greatest from the PnP EntLib gang.
dev112 (swedish), the group of developers that I am on a quest of fun with, has released its first two services to the public; Architecture Review (swedish) and Mentoring (swedish). This is going to be so cool! Imagine having one of Sweden's absolute top developers reviewing your architecture, or even better - guiding you to become a better developer or even an efficient team of developers. I can't imagine any other place in Sweden where you will find so much competence so accessible.
During the PDC, I spent a moment with Dag König, one of my partners in crime in the dev112 network. We talked a bit about our impressions of the PDC and the technologies it covers. This conversation got caught on tape digital recorder and is available here [sorry, swedish only].
During the second session of the Architecture Symposium, the guys kept evangelizing Agile Architecure. The plan is to run as short iterations as possible and involve necessary resources as soon as possible. For instance, there could be a lot of input from the Operations guys that could affect the basic structure and design of a system's architecture.
After this, the discussions moved more into good Web Service implementations patterns. WS-Security is one of the recommended implementations in the WS-* package, for instance. I'm pretty sure that there will be lots of blogging around this at http://pdcbloggers.net/Default.aspx.
Harry Pierson is hosting the PDC Architecture Symposium this last day of the conference. Harry keeps bringing one outstanding Microsoft architect after another up on stage, roleplaying their way through the architectural process, from defining the value chain to defining the service oriented implementation.
At this moment, Beat Schwegler is stressing the importance of Contract First modeling for the service implementation. By using VSTS, modelling the implementation of your SOA is a piece of cake! By modelling the application- and service designs in VSTS, you get an immediate relation between the model and the implementation. You can also use regular properties pages to add constraints to the web services that you intend to implement.
Simon Guest explains the operations- and deployment models in relation to the Dynamic Systems Initiative. From Beat's presentation, Simon referred to the SDM Document that should be a deliverable from the work Beat did during his part of the presentation. Using the Logical Datacenter Designer, Simon lays out the zones for his datacenter setup.
As I wrote the other day, I was listening to Brad and Krzysztof talking about The Art of Building a Reusable Class Library. Most of this PDC pre-conf was pretty much common sense. What I like about it is that it is formalized common sense. You see, it turns out that your common sense isn't always compliant with what others consider common sense. From this session, and especially with a copy of their soon-to-be-released book, Framework Design Guidelines.
One of the early tips they provided was to group similar functionality by name. It may seem trivial, but I see it all the time that class library designers fail on this.
Let's say that you have a string management class for instance, in which yo would be able to append, overwrite, read and manipulate the text by regex. At a first glance, method names such as Append, OverWrite, Read and Manipulate may feel pretty good. But what would happen if you hade more, say 30, methods in this class. Wouldn't it be hard to identify that you can write by either appending or overwriting? According to these friends, it would be a better idea to group the methods by changing the names slightly, into something like Modify, Read, WriteAppend and WriteOver. This way you'll get all the writing methods nicely grouped together in your intellisence.
My one favorite statement from that entire day was the following:
Use abstract classes when possible - interfaces when necessary!
Using interfaces instead of abstract classes hinders the evolvement of your framework. Interfaces are awesome for defining strict contracts of your framework but is a real pain if you'd want to add generic features to a group of classes. There are two occasions where you might prefer interfaces over abstract classes:
1. When you want to create a hierarchy of value types 2. When you want to simulate multiple inheritance
At any other scenario, do favor defining classes over interfaces!
Fields vs. properties Use properties. It is as simple as that. Even if you see no immininet reason to modify whatever value you'd want to expose, there might be a reason for it in v2. Have you considered that you might want to cache a value for performance reasons?
Documentation is important but it does not compensate for a bad API. What Brad said about that? "Good documentation on a bad API is like lipstick on a pig!" A bad API is a bad API. The solution is not to write fool proof documentation - the API in it self is what should be fool proof.
If in doubt - use the manual If you are the slightest bit uncertain of how to implement something - have a look for something similar in your team's existing source code base. If you don't find it there, you might find a clue in the .NET Framework. Download and check out the Rotor code - it's pretty much exactly what makes up .NET.
Finally, The Pit of Success Brad really focused on the importance of The Pit of Success - a definition that he has borrowed from Rico Mariani. As a framework- or class designer, you should design your deliverables so that someone using it would easily stumble into doing things right. The most intuitive route should not lead to failure or misuse of the framework. If you provide two options, the most preferrable should also be the one leading to the least work and the least risk of messing up the application that he's building.
After a somewhat insane shopping spree at Camarillo Premium Outlets and a sunny day at SeaWorld San Diego, I finally got to hear Brad Abrams and Krzysztof Cwalina talk about good framework design.
One thing they talked about was naming conventions. They said to definitely drop anything similar to hungarian notation. camelCase and PascalCase are good though. There is also one exception; KEEP the I-notation for interfaces, that seems to be something that Ingo disagrees with, and I didn't quite get where Jimmy is positioned in this case.
Oh... There is so much more. I'll have to get that into a separate note - I just liked this little anecdote thing. It's funny how these thinge keep getting debated. I think I'm going to play it safe though, and stick to what BradA says. :)
It's time for another meeting for IASA Sweden. As last time, Consignit will host the meeting, taking place in Mölndal, outside of Gothenburg.
Open up you calendar and note September 27, 16:30 in ink!
Lars Wiktorin, Software Architect extraordinaire of Swedish Computing Society will be talking about his view on software architecture.
We also have a common agenda: * Swedish Architecture Summit * News -- IASA Membership -- The revamped IASA Web site -- Sponsors and sponsorship * IASA and you
Most likely, there is more to come.
For planning purposes, I'd appreciate if you either register at the IASA web site or as a minimum write me a line at mfz[at]consignit.se.
This meeting is open for members and non-members.
Welcome!
Finally, the logistics again: When: September 27 2005 16:30. Coffee etc is served from 16:00 Where: The Consignit office at Göteborgsvägen 97 in Mölndal Cost: 0 kr/€/$
Really good information on the status of the Dependency Injection (DI) implementation in EntLib v2 and some sample DI code of mine
There are people who knows everything. Then there's the rest of us...
I found this great resource that I couldn't resist adding...
I'm back at work for a day, sipping on a cup of the mud water they call coffee around here...
Most of my friends know that I'm more fond of coffee than the next guy. Even if the stuff at work tastes like something foul, I still drink it in excess. Now that I've been on my summer holidays for a while, I have learned to appreciate not drinking it. At home, I roast and blend my own coffee. I usually mix 3/4 Indonesian coffee (Arabica from Sulawesi) with 1/4 Ethiopian mocca in order to get that full body. The mocca adds a little bite and bitter taste, while the Indonesian Arabica provides a warm, full taste. Mmm... Delicious! :)
If you want to learn a little bit more about enjoying your coffee or if you are an aspiring home barrista, I have a couple of must-visit sites for you: http://www.wholelattelove.com/ http://www.coffeegeek.com/ http://www.home-barista.com/
The first rule of really enjoying your coffee is to drink it fresh. I remember a great introduction I got a few years ago from a second generation coffee shop owner talking about his mistress: "You must stay away from rancid coffee (rancid, he said, is what most others call the vacum packed pre-ground coffe)! The pre-ground coffee stays fresh one day after the bag has been opened, and even then, there is no aroma. If you buy whole beans, you can store them for two weeks with fully maintained aroma. After that, they start losing their body and scent. Your regular raw coffee bean can be stored a couple, two or three years before you need to use them up. They stay fresh all the way until you roast them..."
Are you still here??? Go on now, go out and buy yourself a bag of coffee beans and a quality grinder, and start enjoying coffee the way it should taste. I do have a few extra tips if you'd get really interested, so don't be shy - you won't learn unless you ask.
I found this great (as it says - obvious, but still great) tip for working in Virtual PC environments. Virtuality is a developer's best friend since we normally want to try our software in various configurations, or have differents setups depending on different scenarios.
Check out Dunk's Sourcesafe, Virtual Machines, and BizTalk Server 2004 for some embarassingly obvious (yes, I missed them before) tips on how to integrate VPC in your daily work.
Update, July 15: I finally ran over this text on how to set up Differencing Disks. A friend told me that there was such a thing a good while ago, but I have not been able to find any info on it until now. Thanks, Don!!! Differencing Disks allows you to have a base virtual disk with your OS, and then apply other disks and virtually merge them into a (virtual?) virtual disk with the new configuration. This would save most of us a lot of HDD space.
OK, I know that I'm threading on thin ice in parts of this entry, but I'll take my chances.
A few days ago, I was having lunch with one of my coworkers. His plate was overly filled with lettuce and somewhere beneath that, you could, with some luck, spot a peace of feta and some pasta. Diets become more popular for each day that passes, and the GI method seems to be tha latest star on the horizon. It pretty much says that you should stay away from carbs and stick to protein and fat.
With that in mind, seeing my friend's excess of lettuce made me come to think of one of my mantras of food balance. You should not eat food's food! We don't eat grass and we don't eat hay. Those sources of nutrition belongs to the food groups cow and horse. It's not natural for humans to eat lettuce, since that belongs to the food group rabbit. Uhm, yes, I do like meat. 
However, from here it's easy to draw a parallel to software engineering. Components should not consume what their consumees consume! Or in plain english; Don't ever make a component dependent upon what datatypes or objects that are used within the component that it consumes. From a top-down perspective, a business component should never be aware of what data services its data component consumes. Data that is being transferred should never be in the form of datasets. There are a number of perfectly potent collection implementations that can be used for that purpose. Heck, even xml would be better! It's just not natural.
Yes, I am aware of the fact that my blog is starting to look more and more lika a notification board. I will try to remedy this very soon.
Anyway... There is a new kid in town - dev112 (swedish) is live and kicking! I will be one of the few chosen ones that get to be part of projects and provide services through the select group that is dev112. I will still be employed by Consignit; dev112 will be the playpit where I get to hang out with some of the brightest minds of swedish software development.
We will stick to posting weekly tips and news related to the group during the summer, and we will (try to) hold off until fall before we release some of the major services.
Go on, go check out dev112 right now. Don't forget to to start aggregating the dev112 feed (RSS2) for updated news and weekly tips.
|