January 2006 - Posts
Today during lunch I caught myself saying, the following proposition “no requirements means no start architecture”. I gave this some thought on my way home wondering what led to this thinking… I remembered the chapter “Bringing the strategy together” in DDD, Evans. This is what I’ve come up with thus far.
The existence of a start architecture plan alienates its users. The users of the start architecture plan can have little impact on the future shape of their architecture because most of the important decisions have already been made.
Instead advocate a set of architecture principles to apply to every act of piecemeal growth, so that “organic order” emerges, well adapted to circumstances.
A lot of architects evangelize reference architecture to come to a start architecture. My idea of this reference architecture is that it is a resource containing a set of architectural best practices learned by experience. I would rather see a resource containing a set of principles in context that are adaptable.
Ok, so I got a little carried away :D
On most of my projects I noticed myself being positioned as dev lead/architect after a little while and this has started my thinking about the thin line, if there is any, between dev lead and/or architect. In my case I got stamped with the top-notch developer label and my affinity with software architecture that brought me on higher grounds. It was here where I suddenly got overwhelmed with politics and communication demands. Luckily I proved not to be the guy in the corner and did a reasonable/good job on the communication part. It struck me as I was phoning with my team lead the other day. It felt as if this promotion offer was an effort to retain me.
This experience brought me to the question Who is Right for the Architect Role?
The best architects, then, are good technologists and command respect in the technical community, but also are good strategists, organizational politicians (in the best sense of the word), consultants and leaders.
The Role of the Architect by Dana Bredemeyer, Ruth Malan, 2000
Sorry for the lack of updates, been in crunch-mode and haven’t been doing anything other than traveling, working, sleeping and traveling...
One of my favorite colleagues (this makes him smile) wrote a post (unfortunately in Dutch) on Query Notifications available in the ADO.NET 2.0 API. In this post he expresses his concerns regarding the need to enable the Service Broker in the database where the notification query runs.
ALTER DATABASE SET ENABLE_BROKER
To put down his argument, because query notifications use Service Broker, there are some additional requirements. I’d like to add that the user submitting the query must also have permissions to subscribe to query notifications.
GRANT SUBSCRIBE QUERY NOTIFICATIONS TO usr_paul
What’s more interesting is the fact that Dick ran into statement restrictions. What where those Dick?
I disagree query notifications should ideally be used with stam tables (is this proper English) assuming we use the same definition. For instance a table with infant, child and adult information. I’d rather see the application supporting this scenario with an explicit clear cache use-case. Thinking about it, this is / almost configuration and depending on your 24/7 online / bringing the site offline policy I would definitely not use query notifications. Instead I would advise to use query notifications for read-mostly lookup tables. A good example would be a table storing product information changing every couple of hours.
I finished reading Behind Closed Doors written by Johanna Rothman and Esther Derby released under the Pragmatic Bookshelf label. The book format fits exactly in my steering wheel which is very handy during the daily traffic jams here in The Netherlands. So regardless of its content it’s a great read for just this reason.
For those of you completely blank regarding project management... read Behind Closed Doors. It gives a great (pragmatic) introduction. I would advise developers to read it, to create awareness and to make it easier for your manager to mange you. For compensation also get yourself a copy of Guerrilla Tactics for Programmers. Intermediate or experienced project managers shouldn’t even bother.
Dennis links Ohad who mentions a lecture by Johanna Rothman linking the deck and video.
I’ve been asked for my Media Center PC hardware configuration so here it is:
I run Windows XP MCE2005 NL Edition (update rollup 2) on a Asus P4B533 motherboard installed in a standard midi case inc. low noise power supply containing a 120mm fan having 1024 MB ram accompanied by an Intel P4 1.8GHz cooled by a Zalman CNSP9500LED running in passive mode. A wireless PCI connects with my home network. To store my music and movies it uses a Western Digital 160 GB hard disk (and content server sitting on the network). Next, sound on board with a Hauppauge WinTV PVR 150MCE tuner and ATI Radeon 9250 128 MB connects with my TV/stereo setup. No DVD/CD player installed, instead it streams content using daemon-tools emulation. MCE runs fine on this budget hardware and does its work quietly with just a single 120mm fan installed.
I hope this will be of any help for those planning to build a budget Media Center PC.
In Advice semantics… Why is it called "advice"? From Wikipedia:
The term advice goes back to the term advising as introduced by Warren Teitelman in his PhD thesis in 1966. Here is a quote from Chapter 3 of his thesis:
Advising is the basic innovation in the model, and in the PILOT system. Advising consists of inserting new procedures at any or all of the entry or exit points to a particular procedure (or class of procedures). The procedures inserted are called "advice procedures" or simply "advice".
Since each piece of advice is itself a procedure, it has its own entries and exits. In particular, this means that the execution of advice can cause the procedure that it modifies to be bypassed completely, e.g., by specifying as an exit from the advice one of the exits from the original procedure; or the advice may change essential variables and continue with the computation so that the original procedure is executed, but with modified variables. Finally, the advice may not alter the execution or affect the original procedure at all, e.g., it may merely perform some additional computation such as printing a message or recording history. Since advice can be conditional, the decision as to what is to be done can depend on the results of the computation up to that point.
The principal advantage of advising is that the user need not be concerned about the details of the actual changes in his program, nor the internal representation of advice. He can treat the procedure to be advised _as a unit_, a single block, and make changes to it without concern for the particulars of this block. This may be contrasted with editing in which the programmer must be cognizant of the internal structure of the procedure.
Interesting materie!
Jimmy writes about Computing by Bricks in which he discusses a few typical (common?) solutions in a stateless environment. A side note…
Consequently, the updates must go to all servers at the same time. One solution to the problem is using generations of the catalogue so that all servers get the update, but the new generation isn't valid until a certain point in time.
What you often see in the field is that the system is pulled offline for the catalog updates. A few days ago I was searching information for my Media Center PC on one of the global asus.com sites and got a message saying “The product catalog is currently being updated”. So I took my business elsewhere! By choosing this solution you will need to think hard about any functional issues.
Looking forward, I hope to be able to contribute and share my experiences with the software development community. I’m already looking forward to meet you and exchange thoughts during the events in the upcoming year.
With a lot of interesting projects in the pipeline: delivery of my current project, pattern talks, working my way through Jimmy’s ADDDP manuscript, architecture workshop in Italy, MDD/DSL’s and training opportunities/global events I’ll make it through the first half of 2006.
More Posts