<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-13111323</id><updated>2010-07-09T16:03:40.570-07:00</updated><title type='text'>Not Technical Really</title><subtitle type='html'>Various ventings on software development and user focused design.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.michaeldausmann.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13111323/posts/default'/><link rel='alternate' type='text/html' href='http://www.michaeldausmann.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Michael Dausmann</name><uri>http://www.blogger.com/profile/08589538455239742693</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>14</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-13111323.post-6580045439932108195</id><published>2009-05-08T07:53:00.000-07:00</published><updated>2009-05-08T07:56:38.489-07:00</updated><title type='text'>RuleClarity Brochure site now up</title><content type='html'>The software is still under development but the brochure site is up :)&lt;br /&gt;You can check it out at &lt;a href="http://www.RuleClarity.com"&gt;http://www.RuleClarity.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13111323-6580045439932108195?l=www.michaeldausmann.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.michaeldausmann.com/feeds/6580045439932108195/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=13111323&amp;postID=6580045439932108195' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13111323/posts/default/6580045439932108195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13111323/posts/default/6580045439932108195'/><link rel='alternate' type='text/html' href='http://www.michaeldausmann.com/2009/05/ruleclarity-brochure-site-now-up.html' title='RuleClarity Brochure site now up'/><author><name>Michael Dausmann</name><uri>http://www.blogger.com/profile/08589538455239742693</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02804563641078246687'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13111323.post-4187743894140135867</id><published>2009-01-22T01:12:00.000-08:00</published><updated>2009-01-22T02:25:48.200-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='brms'/><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><category scheme='http://www.blogger.com/atom/ns#' term='semantics'/><category scheme='http://www.blogger.com/atom/ns#' term='language'/><title type='text'>Tech Preview - Semantic Rules</title><content type='html'>I'm very excited about this new video.  It previews new technology that I have been working on.  Feel free to comment good or bad.  I apologise in advance for my abuse of clip art and slide transitions ;).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="640" height="498"&gt; &lt;param name="movie" value="http://content.screencast.com/users/MichaelDausmann/folders/Default/media/9e339c0f-de31-40d1-ab57-8b1d0d41c948/bootstrap.swf"&gt; &lt;param name="quality" value="high"&gt; &lt;param name="bgcolor" value="#FFFFFF"&gt; &lt;param name="flashVars" value="thumb=http://content.screencast.com/users/MichaelDausmann/folders/Default/media/9e339c0f-de31-40d1-ab57-8b1d0d41c948/FirstFrame.jpg&amp;amp;width=640&amp;amp;height=498&amp;amp;content=http://content.screencast.com/users/MichaelDausmann/folders/Default/media/9e339c0f-de31-40d1-ab57-8b1d0d41c948/SemanticRulesTechPreview.swf"&gt; &lt;param name="allowFullScreen" value="true"&gt; &lt;param name="scale" value="showall"&gt; &lt;param name="allowScriptAccess" value="always"&gt; &lt;param name="base" value="http://content.screencast.com/users/MichaelDausmann/folders/Default/media/9e339c0f-de31-40d1-ab57-8b1d0d41c948/"&gt;  &lt;embed src="http://content.screencast.com/users/MichaelDausmann/folders/Default/media/9e339c0f-de31-40d1-ab57-8b1d0d41c948/bootstrap.swf" quality="high" bgcolor="#FFFFFF" type="application/x-shockwave-flash" allowscriptaccess="always" flashvars="thumb=http://content.screencast.com/users/MichaelDausmann/folders/Default/media/9e339c0f-de31-40d1-ab57-8b1d0d41c948/FirstFrame.jpg&amp;amp;width=640&amp;amp;height=498&amp;amp;content=http://content.screencast.com/users/MichaelDausmann/folders/Default/media/9e339c0f-de31-40d1-ab57-8b1d0d41c948/SemanticRulesTechPreview.swf" allowfullscreen="true" base="http://content.screencast.com/users/MichaelDausmann/folders/Default/media/9e339c0f-de31-40d1-ab57-8b1d0d41c948/" scale="showall" width="640" height="498"&gt;&lt;/embed&gt; &lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13111323-4187743894140135867?l=www.michaeldausmann.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.michaeldausmann.com/feeds/4187743894140135867/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=13111323&amp;postID=4187743894140135867' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13111323/posts/default/4187743894140135867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13111323/posts/default/4187743894140135867'/><link rel='alternate' type='text/html' href='http://www.michaeldausmann.com/2009/01/tech-preview-semantic-rules.html' title='Tech Preview - Semantic Rules'/><author><name>Michael Dausmann</name><uri>http://www.blogger.com/profile/08589538455239742693</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02804563641078246687'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13111323.post-2684817865817096782</id><published>2008-07-07T16:48:00.000-07:00</published><updated>2008-07-07T17:22:10.406-07:00</updated><title type='text'>Gui Dazzles, Backend Frazzles</title><content type='html'>This is one of those truths that just hit me on the train this morning. You put a solution in front of a user, its the interface that gets them excited. All of the clever, performant and robust backend processing in the world won't impress them one bit. The backend is just 'stuff that can go wrong'.&lt;br /&gt;&lt;br /&gt;For a case in point, &lt;a href="http://www.metastorm.com/"&gt;Metastorm&lt;/a&gt;. I build applications for the financial services industry. A workflow solution has always been a good fit(document centric, process heavy etc...).&lt;br /&gt;&lt;br /&gt;A few years ago, i was involved in a pilot of IBM's &lt;a href="http://www-306.ibm.com/software/integration/wmqwf/"&gt;workflow&lt;/a&gt; solution. I was really impressed, it was well structured and the intrinsic use of MQ made orchestrating human and system processes seamless. The Pilot tanked.&lt;br /&gt;&lt;br /&gt;Fast forward to last year, there was a crazy buzz in the business. Everyone was talking about Metastorm. What is it, its a workflow solution. I was confused, why the excitement now about a workflow/orcestration. I was lucky enough to work on our Metastorm implementation and now I understand where the excitement came from.&lt;br /&gt;&lt;br /&gt;It's the GUI. The Metastorm workflow designer is fantastic easy to use and intuitive, the front end 'todo list' GUI is web based and similarly very nice.&lt;br /&gt;&lt;br /&gt;I'm pragmatic about software. While I really like several aspects of the IBM solution but my customers are exited about Metastorm. Its already working for them and is capable enough to support all sorts of new solutions so I am working with it.&lt;br /&gt;&lt;br /&gt;So just remember, if you want to build software that builds excitement, that can 'get in the door'. Get the GUI right.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13111323-2684817865817096782?l=www.michaeldausmann.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.michaeldausmann.com/feeds/2684817865817096782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=13111323&amp;postID=2684817865817096782' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13111323/posts/default/2684817865817096782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13111323/posts/default/2684817865817096782'/><link rel='alternate' type='text/html' href='http://www.michaeldausmann.com/2008/07/gui-dazzles-backend-frazzles.html' title='Gui Dazzles, Backend Frazzles'/><author><name>Michael Dausmann</name><uri>http://www.blogger.com/profile/08589538455239742693</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02804563641078246687'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13111323.post-1138665846972148022</id><published>2008-05-28T21:22:00.000-07:00</published><updated>2008-05-28T21:25:24.018-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruby Rails Java C# C++ build software'/><title type='text'>Building Blocks</title><content type='html'>Building software is a bit like building a house with bricks (please, for a moment, forget my brilliant cake analogy described earlier in blogtime).&lt;br /&gt;&lt;br /&gt;For a long time I have been using Visual Basic to build software.  Building with VB is a bit like building with leggo bricks.  The pieces are colorfull and easy to snap together.  You can build almost anything but if you try to build anything too big, people will either say 'wow, i dont believe you managed to build a 2 story villa with lego!' or they will just snigger at you.&lt;br /&gt;&lt;br /&gt;Building with Java is like building with house bricks.  Nice and square.  You have to use mortar but you can build big and small and you can put your house anywhere with pride.  Building with C# is exactly like building with Java but the bricks have a little logo on them ;)&lt;br /&gt;&lt;br /&gt;I dabbled with Ruby.  Ruby bricks are pretty, they are translucent and have an odd otherworldly inner glow about them.  To build with Ruby bricks, you dont need mortar and they dont snap together, you simply 'talk' them into place using a mystically mangled version of english.  &lt;br /&gt;&lt;br /&gt;'Ruby bricks, form of a payment....no...Payment class with ruby bricks create!....no...Please, sniff, just work...no...dang'.  &lt;br /&gt;&lt;br /&gt;Building with Ruby/Rails is like building a house...with a house. The only variable is how long it will take you to come up with the house.  There is a demo on the internet that shows you how to do it in 10 minutes.  It took me 2 hair pulling, eye scratching, forum crawling days to get close to the same result.&lt;br /&gt;&lt;br /&gt;Most recently (about 2 months) I have been building with C/C++.  I am finding this to be infinitely more fun than Ruby/Rails.  So far I have managed to build, well, a brick.  &lt;br /&gt;&lt;br /&gt;keep you posted :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13111323-1138665846972148022?l=www.michaeldausmann.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.michaeldausmann.com/feeds/1138665846972148022/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=13111323&amp;postID=1138665846972148022' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13111323/posts/default/1138665846972148022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13111323/posts/default/1138665846972148022'/><link rel='alternate' type='text/html' href='http://www.michaeldausmann.com/2008/05/building-blocks.html' title='Building Blocks'/><author><name>Michael Dausmann</name><uri>http://www.blogger.com/profile/08589538455239742693</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02804563641078246687'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13111323.post-2841240492591978740</id><published>2007-11-15T05:03:00.000-08:00</published><updated>2007-11-15T05:08:49.262-08:00</updated><title type='text'>You are living in a box</title><content type='html'>If you are like most people, you will be reading this humble blog post from within a browser application.  If you are like most people, you are probably taking for granted many of the utilities and functions afforded to you by your browser, the toolbar with its convenient visually indicative images, the menu with its comprehensive and logically arranged functions.&lt;br /&gt;&lt;br /&gt;You are also probably entirely comfortable with the way you are interacting with this blog post. You are reading it.  Your browser is eminently capable of supporting this mode of interaction.. its a 'browser' after all, you can scroll through the post, change the font size, even print it.&lt;br /&gt;&lt;br /&gt;This is all very comfortable and familiar but what if you wanted more.  What if you thought this blog post was so fantastic that you wanted to capture it, ads and all.  Say you wanted to add some notes to it, circle some of the more insightful passages, squiggle a mustache on the image of the author and then email it to your mates.  Firefox cant do all that, neither can Internet explorer.  These applications are not free form editors, they are merely browsers.&lt;br /&gt;&lt;br /&gt;'But wait' you say, 'I can get this done!'.  And you are correct, you can achieve this a number of ways.  For example, you could print the post, edit the printout, scan or photograph the printout and create an image file. You could then open an email application, attach the image file and send it.  Also, you could print-screen the image, Open a paint program, paste the image, edit the image, save as an image file, open an email application, attach the file and send it.  You could also send an email to Microsoft or the Firefox community requesting free form editing, notation and highlighting and email integration features for their respective browsers, you could then wait a long time.&lt;br /&gt;&lt;br /&gt;That these operations are doable is not at issue.  All of the necessary tools to achieve this outcome, this deliverable, already exist on your computer.  The point I want to make is how these tools are arranged.  They are stuck inside applications, inside boxes.  This blog post is the thing you are interested in right now (I assume this because you are still reading).  If you want apply all of these wonderful tools to this artifact, you need to export, transform, import the artifact into each application in turn.  This is horrible!  You take this for granted, you cop this on the chin because, like most people, you have grown complacent and accepting about the limitations of software and the operating system.&lt;br /&gt;&lt;br /&gt;Why cant we make software better.  Why cant we make the artifact, the thing you are interested in right now, the most important thing?  Why cant we free up these tools from their application boxes make the computing experience more intuitive?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13111323-2841240492591978740?l=www.michaeldausmann.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.michaeldausmann.com/feeds/2841240492591978740/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=13111323&amp;postID=2841240492591978740' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13111323/posts/default/2841240492591978740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13111323/posts/default/2841240492591978740'/><link rel='alternate' type='text/html' href='http://www.michaeldausmann.com/2007/11/you-are-living-in-box.html' title='You are living in a box'/><author><name>Michael Dausmann</name><uri>http://www.blogger.com/profile/08589538455239742693</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02804563641078246687'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13111323.post-3599149100147213196</id><published>2007-06-04T21:56:00.000-07:00</published><updated>2007-06-04T22:03:58.399-07:00</updated><title type='text'>Generic Solutions at your peril</title><content type='html'>After performance, the second best way to mess up your solution design is the decision to make something Generic.  Get it right and you have built a future time saver, a well understood answer to future questions.   Get it wrong and you can end up with a monster.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Before you build it Generic, ask these questions&lt;/strong&gt;. If you answer 'No' to any of these, maybe you better design a tight, clean, focused - for purpose implementation.&lt;br /&gt;- Is there already or do I absolutely know that the generic solution will be re-used and repurposed in the future?&lt;br /&gt;- Do I have the time and resources to invest in building it generic now in the hope of a future payoff?  Remember, you need to put your best resources on this, building generic is at least twice as difficult as building a good for-purpose solution.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;If you have decided to build a generic solution, keep the following in mind&lt;/strong&gt;&lt;br /&gt;- Keep it simple.  Please.  If an implementation needs to be complicated, try to keep it in the implementation.  Resist the urge to put everything in the generic solution.&lt;br /&gt;- Try to use interfaces.  These often give you the best pattern for re-useability.&lt;br /&gt;- Maintain build time separation of different implementations, make sure you can discreetly recompile and re-deploy the different instances of your generic solution.&lt;br /&gt;- Maintain Run Time separation of different implementations - Make sure that if one goes down (or takes too long) they all dont go down (or take too long).  Note that this usually implies some sort of multi-threading in your implementation.&lt;br /&gt;&lt;br /&gt;And Last of all, &lt;strong&gt;these are the signs that you are getting it wrong&lt;/strong&gt;&lt;br /&gt;- There is a large and complex web of static/configuration data for each instance.  Most instances use only a portion of this static data and leave placeholders in the rest.&lt;br /&gt;- New implementations are a headache for the original designer.  They either mis-use the generic solution or the new implementors pester with endless questions. &lt;br /&gt;- Consumers of the different implementations are involved in heavy hitting email wars with each other and are beginning to ask questions like 'Can I prioritise my jobs so they go first'.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13111323-3599149100147213196?l=www.michaeldausmann.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.michaeldausmann.com/feeds/3599149100147213196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=13111323&amp;postID=3599149100147213196' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13111323/posts/default/3599149100147213196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13111323/posts/default/3599149100147213196'/><link rel='alternate' type='text/html' href='http://www.michaeldausmann.com/2007/06/generic-solutions-at-your-peril.html' title='Generic Solutions at your peril'/><author><name>Michael Dausmann</name><uri>http://www.blogger.com/profile/08589538455239742693</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02804563641078246687'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13111323.post-2761155558336273669</id><published>2007-03-02T05:24:00.000-08:00</published><updated>2007-03-02T05:43:49.402-08:00</updated><title type='text'>Software is like cake</title><content type='html'>A completed software solution is like a cake, it has many layers.  Rich spongey layers of relational schema and business logic and topped with oh so sweet GUI icing, yum :)&lt;br /&gt;&lt;br /&gt;Unfortunately, because software is so much like cake, it is tempting to try and make it like a cake.  First Ill design my schema, then Ill do all the business logic stuff then, last of all, Ill build the GUI.  Although this approach seems logical, it has a fatal flaw....&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;Nobody will know what your cake tastes like until it's finished!&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;This is clearly hopeless, what if it tastes horrible? what if the business rules are wrong, what if the schema doesn't handle your projected volume? you have to mess around, trying to fix a completed cake or worse still throw the whole thing away and start again. &lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;Make your cake a slice at a time&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Take some subset of the features and build the schema, the business logic AND the GUI.  Everybody can then get an idea of how the solution will work and if its wrong, you only have to fix that portion, not the whole solution.&lt;br /&gt;&lt;br /&gt;Happy Baking :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13111323-2761155558336273669?l=www.michaeldausmann.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.michaeldausmann.com/feeds/2761155558336273669/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=13111323&amp;postID=2761155558336273669' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13111323/posts/default/2761155558336273669'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13111323/posts/default/2761155558336273669'/><link rel='alternate' type='text/html' href='http://www.michaeldausmann.com/2007/03/software-is-like-cake.html' title='Software is like cake'/><author><name>Michael Dausmann</name><uri>http://www.blogger.com/profile/08589538455239742693</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02804563641078246687'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13111323.post-2550353753706294559</id><published>2007-02-28T16:30:00.000-08:00</published><updated>2007-02-28T16:32:05.851-08:00</updated><title type='text'>Who Signs off the Detail Design? - Having fun with the waterfall process</title><content type='html'>Being risk averse, un-agile and tragically unhip, my workplace labours under a 'Project Delivery Framework', essentially a formalised waterfall process attached to a clunky document workflow solution.&lt;br /&gt;&lt;br /&gt;Recently, while reviewing a detail design document, an interesting point was raised :-&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt; &lt;em&gt;Who should sign off the Detail Design document?&lt;/em&gt;&lt;/div&gt;&lt;br /&gt;The first and most obvious answer was the AD Manager.  He has to sign off that the design is 'doable', robust, fits with and re-uses existing architecture.&lt;br /&gt;&lt;br /&gt;The Information risk manager needs to ensure that the solution correctly handles things like passwords and encryption, he is also a no-brainer for signoff.&lt;br /&gt;&lt;br /&gt;Beyond that it got a bit sticky.  Should the BA sign it off?, the business SME? the project sponsor? What do these guys get out of such a document?  The traditional response to this is as follows..  Somebody needs to ensure that the design and scope of the solution covers all elements of the detailed requirements.  After all, what you want to avoid is the nightmare scenario where you deliver the product and then realise that it doesn't do something it should.&lt;br /&gt;&lt;br /&gt;So I think, in the end, the non technical types do need to sign off this document but it should be very clear what that means.  They are not signing off that the design is technically correct, they are not signing off that the solution is a credible answer to the delicate balance of performance, complexity and robustness.  They are signing off that the proposed solution meets requirements.  clearly also if you can structure the document so that it makes this relationship very clear (eg. 'Requirement X is covered by feature 1') then you are 90% out of trouble.&lt;br /&gt;Of course, an agile process handles this whole conundrum a lot more elegantly and realistically but thats another story :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13111323-2550353753706294559?l=www.michaeldausmann.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.michaeldausmann.com/feeds/2550353753706294559/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=13111323&amp;postID=2550353753706294559' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13111323/posts/default/2550353753706294559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13111323/posts/default/2550353753706294559'/><link rel='alternate' type='text/html' href='http://www.michaeldausmann.com/2007/02/who-signs-off-detail-design-having-fun.html' title='Who Signs off the Detail Design? - Having fun with the waterfall process'/><author><name>Michael Dausmann</name><uri>http://www.blogger.com/profile/08589538455239742693</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02804563641078246687'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13111323.post-116256392558599801</id><published>2006-11-03T05:49:00.000-08:00</published><updated>2006-11-04T02:33:06.146-08:00</updated><title type='text'>Coming up for air</title><content type='html'>If you  were wondering where where I was, I have been wrestling with a monster, a real nightmare.  Too big to fit completely into 1 brain.  Just the static data schema took 3 months to design. On top of that, 2 complicated GUI's (1 static data, 1 transactional), a core processing engine that takes instructions in one end and spits out files, reports and outputs to clients, internal users as well as 5 other systems with both a manual and an automated (Straight Through Processing) workflow in the middle.&lt;br /&gt;&lt;br /&gt;Well enough moaning, its feature complete now (released to integration environment tonight, just bugfixing to go ) so I have a bit of headspace for blogging again, I might even have time to read a book :)&lt;br /&gt;&lt;br /&gt;I found this &lt;a href="http://www.spectrum.ieee.org/nov06/4696/1"&gt;article&lt;/a&gt; really interesting.  Parakey sounds way cool cant wait to see it in action.  I am a recent Firefox convert BTW, the &lt;a href="http://revision3.com/diggnation"&gt;Diggnation &lt;/a&gt;boys talked me into it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13111323-116256392558599801?l=www.michaeldausmann.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.michaeldausmann.com/feeds/116256392558599801/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=13111323&amp;postID=116256392558599801' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13111323/posts/default/116256392558599801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13111323/posts/default/116256392558599801'/><link rel='alternate' type='text/html' href='http://www.michaeldausmann.com/2006/11/coming-up-for-air.html' title='Coming up for air'/><author><name>Michael Dausmann</name><uri>http://www.blogger.com/profile/08589538455239742693</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02804563641078246687'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13111323.post-115305149151354770</id><published>2006-07-16T05:02:00.000-07:00</published><updated>2006-07-18T20:41:12.320-07:00</updated><title type='text'>Naming States</title><content type='html'>I want to talk about one of those 'bread and butter' topics that a developer or system designer will encounter frequently and perhaps will not think much about. Its states, or more precisely the naming of states.&lt;br /&gt;&lt;br /&gt;If you have ever designed a table or a class to represent a transaction or any other 'non static' entity and plonked in a column named 'status' then you know what I am talking about.&lt;br /&gt;&lt;br /&gt;Note for the Handyman Challenged: To paint a fence, you usually start by sanding it and then apply an undercoat.&lt;br /&gt;&lt;br /&gt;The main problem I have with naming states is this.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Should the state name describe where the entity is in the process or what needs to happen next?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;eg. After the fence is sanded, is the state of the fence &lt;em&gt;sanded &lt;/em&gt; or &lt;em&gt;ToBeUndercoated &lt;/em&gt;?&lt;br /&gt;&lt;br /&gt;Granted, &lt;em&gt;sanded &lt;/em&gt;very succinctly decribes the current state of the fence, however, &lt;em&gt;toBeUndercoated &lt;/em&gt;is much more informative.  Consider a guy who does the undercoat painting.  He can use the following (nice and simple) logical algorithm to find the next job to do.&lt;br /&gt;&lt;br /&gt;Find the first fence where the Status = &lt;em&gt;ToBeUndercoated&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Allow me to contrast the above example with another.  A line of Truck Cab &amp; Chassis stands in the motor company holding lot.  The fate or the Chassis (Winnebago, Mail Truck etc) wont be made untill an order comes in from a customer.&lt;br /&gt;&lt;br /&gt;Does it make sense to describe the resting state of the Chassis as &lt;em&gt;ToBeConvertedToAnRV&lt;/em&gt;?  Clearly not, because we dont know yet what the chassis will be turned into.  The most sensible name for the state of the chassis is &lt;em&gt;FactoryComplete&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;Its comes down to when you are able to make the decision about the next step in the process.  If it is practicable to make the decision about the next processing step at the tail end of the last step, the 'WhattHappensNext' approach (&lt;em&gt;ToBeUndercoated&lt;/em&gt;) is the most informative and sensible approach.  If the decision about the next processing step is not or cannot be made untill the next step commences, then the 'current State' (&lt;em&gt;Factory Complete&lt;/em&gt;) approach is the most sensible.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13111323-115305149151354770?l=www.michaeldausmann.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.michaeldausmann.com/feeds/115305149151354770/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=13111323&amp;postID=115305149151354770' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13111323/posts/default/115305149151354770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13111323/posts/default/115305149151354770'/><link rel='alternate' type='text/html' href='http://www.michaeldausmann.com/2006/07/naming-states.html' title='Naming States'/><author><name>Michael Dausmann</name><uri>http://www.blogger.com/profile/08589538455239742693</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02804563641078246687'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13111323.post-115149904686799785</id><published>2006-06-28T05:03:00.000-07:00</published><updated>2006-06-28T05:50:46.923-07:00</updated><title type='text'>Software vs Religion</title><content type='html'>Ok, inflammatory title for this post but I listened to a great &lt;a href="http://www.abc.net.au/rn/podcast/feeds/orr_20060625.mp3"&gt;Podcast&lt;/a&gt; talking about the science/religion debate and a couple of things really resonated with me.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Web2.0 and Memes&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Firstly was the concept of &lt;a href="http://en.wikipedia.org/wiki/Memes"&gt;Memes&lt;/a&gt;.  Memes is ideas in analogy to genes where:-&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;memes have, as a fundamental property, evolution via natural selection&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;I Immediately thought Web2.0!  I wont try to Define that but one of the things that sites like &lt;a href="http://www.digg.com/"&gt;Digg.com&lt;/a&gt; and &lt;a href="http://www.blogger.com/start"&gt;Blogger.com&lt;/a&gt; do is to catalyse the the evolution of memes, crank up the number of collisions between and tests of ideas.  Its happening online right now on  and software is making it happen!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Software as Meme&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Then I thought, wouldn't it be cool if we could design elements of software that can self evolve be tested and 'compete' to fulfill a role within a process?&lt;br /&gt;&lt;br /&gt;'We need software to be stable' you say.  Thats fair enough but consider this.  What if when you built and tested HelpyWidget1.0, everything was fine but now the processing volume has increased, the mid tier server is new, the Database software is new, the new Database forced us to upgrade the client drivers, none of the users ever use the feature xyz anymore but all of them call the software 'frank'.  The environment your code lives in is changing, Code maintenance is boring and expensive.  'Bring on Evolving software!' I say.&lt;br /&gt;&lt;br /&gt;As a side note, The &lt;a href="http://www.agilealliance.org/"&gt;Agile&lt;/a&gt; folks use 'refactoring' to adapt to changing environments and requirements and to constantly improve the quality. This is a sensible approach to the same problems...but evolving software is way cooler :)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Intelligent design Is not Necessarily good design&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The program talked about the clash between &lt;a href="http://en.wikipedia.org/wiki/Intelligent_Design"&gt;Intelligent Design&lt;/a&gt; and Science/Evolutionary theory.  The presenter made an assertion, 'if anybody has seen the design of the human prostate, they wouldn't believe in intelligent design'.  Then I thought, I see crappy design in software every day.  Developers are intelligent, building software fits with intelligent design.  The assertion that a designed system is a perfect system is only correct if you assume the designer is perfect.  The simple fact is that for most humans, bad design, bad software is easier than good design, good software.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13111323-115149904686799785?l=www.michaeldausmann.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.michaeldausmann.com/feeds/115149904686799785/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=13111323&amp;postID=115149904686799785' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13111323/posts/default/115149904686799785'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13111323/posts/default/115149904686799785'/><link rel='alternate' type='text/html' href='http://www.michaeldausmann.com/2006/06/software-vs-religion.html' title='Software vs Religion'/><author><name>Michael Dausmann</name><uri>http://www.blogger.com/profile/08589538455239742693</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02804563641078246687'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13111323.post-115119371572013073</id><published>2006-06-24T16:50:00.000-07:00</published><updated>2006-06-24T17:01:55.730-07:00</updated><title type='text'>Auto Update Equals Auto Exasperation</title><content type='html'>So Papa calls last night and has a full 30 Minute spew about his new, ADSL connected computer.  After sorting through the confusion, I discover the evil culprit....Auto Update.&lt;br /&gt;&lt;br /&gt;Case 1) 'Whats Java and why do I care?'&lt;br /&gt;So the Java Runtime environment was installed by default on Papa's new pc.  Fair enough, you need it to do lots of cool stuff on the internet.  The problem started when the JRE decided to check the internet for an update and ask Papa if he wanted to upgrade.  Now Papa has decided (sensibly) to say 'no' to everything he doesn't understand (most things) but he still found the whole thing confusing (was it a virus?, was it adware? does he need it?).&lt;br /&gt;&lt;br /&gt;Case 2) 'Whats Adobe reader?'&lt;br /&gt;Basically same scenario, Adobe auto updater this time but it was also tangled up with hotmail...Mrs Papa saves a pdf file local and then wants to forward the mail on with the document, double clicks the file, adobe reader checks for update, asks the question....Total confusion.&lt;br /&gt;&lt;br /&gt;I am a power user, and am in front of a PC a lot.  I think auto-update is cool because I like things to take care of themselves.  but Papa (and a lot of people) just want their computer to be quiet and only do things when they ask it to do something.  There is enough crap to worry about with Adware popups and scam emails, why should legitimate software add to this burden with auto-update confusion.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13111323-115119371572013073?l=www.michaeldausmann.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.michaeldausmann.com/feeds/115119371572013073/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=13111323&amp;postID=115119371572013073' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13111323/posts/default/115119371572013073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13111323/posts/default/115119371572013073'/><link rel='alternate' type='text/html' href='http://www.michaeldausmann.com/2006/06/auto-update-equals-auto-exasperation.html' title='Auto Update Equals Auto Exasperation'/><author><name>Michael Dausmann</name><uri>http://www.blogger.com/profile/08589538455239742693</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02804563641078246687'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13111323.post-115115539835797009</id><published>2006-06-24T06:22:00.000-07:00</published><updated>2006-06-24T07:24:49.886-07:00</updated><title type='text'>Workflow Doesn't work</title><content type='html'>According to a very learned and wise colleague of mine, while developers will always say that they are pro workflow, none of them really believe&lt;br /&gt;that it works.  Personally, since being involved in a workflow project, I have always liked the idea.  Its so neat and tidy, the yucky business rules that no developer really truly understands are zip-locked away in some XML document or modeling tool and we can just code neat little boxes that respond to requests from the workflow system.  If the flippy types in the business change their mind about a process, you can just fiddle with the model.  The code can stand stoicly firm, clean, pure and sexy in the twirly maelstrom of the business process.&lt;br /&gt;&lt;br /&gt;I have to admit though, I have never seen workflow actually work.  The workflow project I was on never got to technical implementation because they made a headcount save by rearranging the business units more efficiently after reviewing the business processes (the solution didn't involve a .sln).  Another colleague of mine says that 'every insurance business in London runs on a workflow platform' so I suppose the statement/heading at the top of this page is debatable.  &lt;br /&gt;&lt;br /&gt;I decided though to ask the question, &lt;blockquote&gt;if workflow doesn't work, what does?&lt;/blockquote&gt;  This is very difficult, so I gave up on that question and decided to write down a few things about people and systems and work that I was pretty sure were true..Well it started off that way and went a bit pear shaped towards the end...Anyway, this is what I came up with.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Warning, Stream of consciousness follows&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;People at work have things to do&lt;br /&gt;&lt;br /&gt;Systems at work have things to do&lt;br /&gt;&lt;br /&gt;Things to do have only a few important attributes.  What exactly to do, which people or systems can do them and when they need to be done by.&lt;br /&gt;&lt;br /&gt;Sometimes people do the things to do, sometimes systems do them, it doesn't really matter which.  People are generally good &lt;br /&gt;at some things and systems are ,generally, good at other things.  Some things to do can be done by either people or systems, the only difficulty&lt;br /&gt;with this is, often system friendly instructions and people friendly instructions look a bit different.&lt;br /&gt;&lt;br /&gt;An object, for example, a data row or document is fixed in space, it doesn't move (conceptually any way), &lt;br /&gt;it doesn't flow, it is not in a pipeline, it is not transported, it is not itself a thing to do.  A thing to do may contain references to objects.  The format of these references is not really important, so long as a person or system can find the object or objects it needs to do the thing to do.&lt;br /&gt;&lt;br /&gt;A lot of things to do are very similar each time we do them.  It seems reasonable that things to do &lt;br /&gt;should be able to be copied from older things to do.  Other things to do are completely new and novel, that's ok to, as long as somebody or some&lt;br /&gt;system can do them.&lt;br /&gt;&lt;br /&gt;Sometimes after doing a thing to do, it is appropriate to create another thing or things to do.  For certain types of &lt;br /&gt;things to do, we may really know for sure what that next thing to do is eg. after receiving a fax instruction to move some cash into an account, the next thing to do should always be to call back the owner of the cash and verify the details...Often when this happens, some or all of the references to objects are passed along to the next thing.  Sometimes there may be nothing to do next, sometimes you may not know what the next thing is until you have finished the first thing.  &lt;br /&gt;&lt;br /&gt;A thing to do is never done until you have created the next thing or things to do, or decided that there is nothing to do next.&lt;br /&gt;&lt;br /&gt;People and systems need to know what things to do, they can do.  &lt;br /&gt;&lt;br /&gt;Systems like to have their things to do in a queue.  Systems are good at processing queues.  &lt;br /&gt;&lt;br /&gt;People find queues depressing.  When people look at the things to do that they can do, they &lt;br /&gt;may like to see these things floating, like little blobs of wax in a colorful lava lamp.  When things to do are not very urgent, they might float low&lt;br /&gt;in the lamp where the colour is shady and blue.  Inevitably, things to do become more urgent and may be seen to float upwards where the colour is brighter and more orangey. Things to do should never appear to flash, become underlined or jerk about wildly.  A bit of bobbing on the surface may be ok though ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13111323-115115539835797009?l=www.michaeldausmann.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.michaeldausmann.com/feeds/115115539835797009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=13111323&amp;postID=115115539835797009' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13111323/posts/default/115115539835797009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13111323/posts/default/115115539835797009'/><link rel='alternate' type='text/html' href='http://www.michaeldausmann.com/2006/06/workflow-doesnt-work.html' title='Workflow Doesn&apos;t work'/><author><name>Michael Dausmann</name><uri>http://www.blogger.com/profile/08589538455239742693</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02804563641078246687'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13111323.post-114985896313448514</id><published>2006-06-09T05:56:00.000-07:00</published><updated>2006-06-24T17:05:19.340-07:00</updated><title type='text'>Hey what's with the Funny Name</title><content type='html'>When I was in high school, I was handed one of those 'What career is good for you' kits by the school careers councilor.  So I ticked all the boxes and added up all the scores and discovered that with my mix of empathy and analytical skills, I was perfectly suited to being a psychologist! With typical aplomb and common sense, I proceeded to do a degree in Materials Science and now work as a software developer/architect.&lt;br /&gt;&lt;br /&gt;So despite my career, if you ever come round for a BBQ, please dont ask me..'should I buy this PC' or 'I am getting this funny error from Firefox'.  I'm not technical really but I do know a but about software development and am learning about user focused design.  I hope that my odd ventings and rantings may be usefull to some other unfortunates in the software game.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13111323-114985896313448514?l=www.michaeldausmann.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.michaeldausmann.com/feeds/114985896313448514/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=13111323&amp;postID=114985896313448514' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13111323/posts/default/114985896313448514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13111323/posts/default/114985896313448514'/><link rel='alternate' type='text/html' href='http://www.michaeldausmann.com/2006/06/hey-whats-with-funny-name.html' title='Hey what&apos;s with the Funny Name'/><author><name>Michael Dausmann</name><uri>http://www.blogger.com/profile/08589538455239742693</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02804563641078246687'/></author><thr:total>0</thr:total></entry></feed>