<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Design &amp; Practice</title>
        <link>http://www.shanghai-software.com/blog/category/11.aspx</link>
        <description>Design &amp; Practice</description>
        <language>en-AU</language>
        <copyright>Ben Kloosterman</copyright>
        <generator>Subtext Version 2.1.0.5</generator>
        <item>
            <title>Is Sooos a  new OS ? (Since its linux based)</title>
            <link>http://www.shanghai-software.com/blog/archive/2010/07/13/is-sooos-a-new-os-since-its-linux.aspx</link>
            <description>&lt;p&gt; The question is a good one as it leads to an interesting discussion what Sooos is trying to do..&lt;/p&gt;
&lt;p&gt;Firstly Sooos is probably  more of an independent OS than Android is which is basically linux with a new  Java Run time , GUI and a package manager / security system. &lt;/p&gt;
&lt;p&gt;Sooos uses the linux kernel and drivers / services  , as time goes on more and more of them will be replaced but some Linux core will probably remain for a long time since &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;- Backward compatibility fo things taht are diffciult to support eg 3D drives/open GL &lt;/li&gt;
    &lt;li&gt;- As an extensive boot loader &lt;/li&gt;
    &lt;li&gt;- Support for more drivers &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The key is all this backward support required a capability  hence we can preffer newer and safer apps. &lt;/p&gt;
&lt;p&gt;This gets us to the point what SOOOS is trying to achieve . Its not a new OS but the way we program . . In fact a run time on Windows would be quite possible ( and likely if we get some traction) and similar of HPs research in this direction with Polaris and others like capdesk.  &lt;/p&gt;
&lt;p&gt;So what are we trying to achieve in the programming field.&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Make more fo the code base "managed" eg type safe and memory safe without loss of performance.. &lt;/li&gt;
    &lt;li&gt;Increase reliability by allowing failure and restarts of  parts of an app &lt;/li&gt;
    &lt;li&gt;Prevent parts of an app like an add in destroying an app &lt;/li&gt;
    &lt;li&gt;Make code more secure by using OO techniques.  eg a priviate field is prvate to the whole machine and a class ( program ) can only touch what it has references ( capabilities to) .. Just like global data in OO we are trying to remove this at the OS level ( eg no ambient file authority for a user) &lt;/li&gt;
    &lt;li&gt;Simplify multi  core ( 8+) programming &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;How does Sooos do this  ? &lt;/p&gt;
&lt;p&gt;It is interesting to note one of the most successfull programming models is rarely used by OS . This is the message based system with pump  windows 3.X ran on it without any form of pre-emptive tasking it was cooperative.  Nearly all GUIs use it , most middle ware systems  etc . &lt;/p&gt;
&lt;p&gt;The reason they are not used is the bad name micro kernels with bad IPC designs which used messaging  got - however L4 and later QNX debunked all these.  The problem was it came at a critical time when OS were comming up eg ( windows NT and Linux around 1990) .&lt;/p&gt;
&lt;p&gt;Now we are approaching another such inflection point  for several reasons&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Hand held computers - Think all the new apple stuff &lt;/li&gt;
    &lt;li&gt;Massive amount of cores , the  future is 100+ core CPUs on servers and desktops. Though its likely the desktop will become a home server ( driving TV , security etc ) with multiple clients of varying media formats &lt;/li&gt;
    &lt;li&gt;Existing OS are groaning under the historical strain  ( see Linus comments on Linux becomming bloated  and peoples oppinion on windows) . There seems to be desire  outside of niches and corporate shops for change. &lt;/li&gt;
    &lt;li&gt;Reliability  , mobility &amp;amp; simplicty seems to be paramount in peoples oppinions even if some features do not make it,  ( web 2.0 only offers 1 of these 3) &lt;/li&gt;
    &lt;li&gt;Security - it wont be long before Virus start attacking phones to create bot nets .. People WANT unlocked phones which are secure. There is not much difference between Linux and Windows here - even Multics was far more secure all that time ago.  Whats more people want to allow apps to run but even if tricked they do not want the app to have carte blanche on their machines. &lt;/li&gt;
    &lt;li&gt;We are the cusp of abandoing old languages like C. , Java and .NET will continue to catch up in performance with  the roll of C being limited to a few critical libs just like assembly was around 1990. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Now back to how do we do this ..&lt;/p&gt;
&lt;p&gt;- We make apps consist of multiple services . By making them more modular we increase reuse of code libs ( services)  but also we get partial degredation from within applications ( eg the add in) . We also get portability as parts of apps can be moved local or remote ( eg distributed OS) as desired . eg Compilation and compression is offloaded to a cloud server or you home server. &lt;/p&gt;
&lt;p&gt;- Apps use services  instead of dlls , failure within a service will simply restart the request and / or return an error to the app ( even if the Service has a fatal error) as opposed to the app crashing which we have now. In fact in case of a service crash the OS will fire up an additional copy of a service  , it will process the failed message by itself  and continue the work queue with the other service(s) . If the service crashes a second time , an error is returned to the app and the service has a log of the message that causes the  failure.   As an example of this you could overheat or destroy a core and not just the OS but the applications would continue running as though nothing has happened ( appart from a delay) &lt;/p&gt;
&lt;p&gt;- We make the default service single threaded and the OS handles all the multi threaded code / locking . Hence devs have the abbility to use multiple cores without the user writing any multi threaded code!.  ( this probably covers 95% of cases and fits especially well with newer languages like Ocaml , Hascal , Scala etc ) &lt;/p&gt;
&lt;p&gt;- We implement capabilities for the security model .&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;See &lt;font face="Arial"&gt;&lt;a href="http://www.shanghai-software.com/blog/archive/2010/06/13/why-sooos-will-work.aspx"&gt;http://www.shanghai-software.com/blog/archive/2010/06/13/why-sooos-will-work.aspx&lt;/a&gt; or more details&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;We benefit from the fact that most GUI code is asyncronous ( even if it runs on 1 thread) and a similar programming model will be used. &lt;/p&gt;
&lt;p&gt;Now back to the coding. &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://www.shanghai-software.com/blog/aggbug/65.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ben Kloosterman</dc:creator>
            <guid>http://www.shanghai-software.com/blog/archive/2010/07/13/is-sooos-a-new-os-since-its-linux.aspx</guid>
            <pubDate>Tue, 13 Jul 2010 03:49:36 GMT</pubDate>
            <wfw:comment>http://www.shanghai-software.com/blog/comments/65.aspx</wfw:comment>
            <comments>http://www.shanghai-software.com/blog/archive/2010/07/13/is-sooos-a-new-os-since-its-linux.aspx#feedback</comments>
            <wfw:commentRss>http://www.shanghai-software.com/blog/comments/commentRss/65.aspx</wfw:commentRss>
            <trackback:ping>http://www.shanghai-software.com/blog/services/trackbacks/65.aspx</trackback:ping>
        </item>
        <item>
            <title>Developer Book Syndrome</title>
            <link>http://www.shanghai-software.com/blog/archive/2009/11/01/book-syndrome.aspx</link>
            <description>A colleague of mine once stated that creativity is rare in technical people  I had my doubts at the time as I’m fairly creative and often build unorthodox solutions tailor made to the problem but the longer I’m in the industry the more I agree.   &lt;br /&gt;
&lt;br /&gt;
The biggest symptom of this is something I called book syndrome. This is where famous author xyz  ( eg Lowly , Fowler etc etc ) writes a strategy in a book and people use it in completely in inappropriate circumstances.  When challenged on the solution they use the authority of the author to emphasize they are doing the right thing.   While this technique may provide some job protection it is questionable that the famous author intended to apply it where it was applied ( eg &lt;a href="javascript:void(0);/*1257082282584*/"&gt;Juval Lowly SOA 1 service per class&lt;/a&gt;  ) and in many cases like Fowler there are many  methods yet a single patterns is repeated ad nauseum without any concern for the special cases for each project..  &lt;br /&gt;
&lt;br /&gt;
And it is not just books, Universities have a lot to answer for drumming in OO yet for a lot of small to medium projects scripts and RAD provide better and more consistent results  (  &lt;a href="javascript:void(0);/*1257082332599*/"&gt; OO /RAD is Software theory relevant&lt;/a&gt;) . The fact is the bedrock of nearly all programming theory is based on 90% of the cost of an application being maintenance while true in the 50-80s this is clearly not true in the huge amount of small applications and scripts that never enter software studies ; in fact most of these programs never change  over the life time of the program ( and are completely rewritten in a new technology after 10-15 years) is completely  at odds with most of software development theory.   I’m not against OO  but I am against using OO  in many inappropriate situations  ( eg blindly following book – book syndrome) – even in an OO house RAD development will be faster , cheaper and deliver more reliable project deliveries.   &lt;br /&gt;
&lt;br /&gt;
The whole concept of an OO development house , an SOA house or a RAD house seems very wrong .  Each has their pros and cons for each project and any competent team should be familiar with all techniques and use them where appropriate.    &lt;br /&gt;
&lt;br /&gt;
Every project needs to be taken on its own merits and facts like these are FAR more important whether OO is better than RAD or SOA.&lt;br /&gt;
 -	Amount of change /maintenance  over the life of the project&lt;br /&gt;
 -	Fixed price contract&lt;br /&gt;
 -	Team skills (&lt;a href="javascript:void(0);/*1257082249062*/"&gt;Architecting for the team&lt;/a&gt;) &lt;br /&gt;
  -	Breaking down the work  ( eg SOA service layer and RAD front ends)&lt;img src="http://www.shanghai-software.com/blog/aggbug/52.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ben Kloosterman</dc:creator>
            <guid>http://www.shanghai-software.com/blog/archive/2009/11/01/book-syndrome.aspx</guid>
            <pubDate>Sun, 01 Nov 2009 13:33:07 GMT</pubDate>
            <wfw:comment>http://www.shanghai-software.com/blog/comments/52.aspx</wfw:comment>
            <comments>http://www.shanghai-software.com/blog/archive/2009/11/01/book-syndrome.aspx#feedback</comments>
            <wfw:commentRss>http://www.shanghai-software.com/blog/comments/commentRss/52.aspx</wfw:commentRss>
            <trackback:ping>http://www.shanghai-software.com/blog/services/trackbacks/52.aspx</trackback:ping>
        </item>
        <item>
            <title>SOA 1 class per service Juval Lowy framework  </title>
            <link>http://www.shanghai-software.com/blog/archive/2009/11/01/soa-1-class-per-service-juval-lowy-framework.aspx</link>
            <description>I posted this a year ago....

I'm really against this make each class a separate service concept.

It reminds me of the Microkernel and especially workplace OS but worse.

The idea of microkernels was each service ( like memory) was an easily managed entity with carefully defined inputs and outputs which could be consumed.)

Workplace OS took this to limit and performance was so poor that no amount of optimization would help. So they had no choice but to scrap the project ( were talking $2B 10 years ago)

the bad thing is once such a design is made and implemented just like workplace OS it is very difficult and expensive to fix.

Classes by nature frequently communicate with other classes ,serializing everything makes this far to slow. Think about big orders with 10,000 line items each line item could be a separate service call to add up some total and what do you gain ?

I consider service to service communication and some sort of nearness analysis a vital part of SOA and grouping related classes into services will help significantly by

- Increasing performance
- Allow for better maintenance and less change as related changes will deploy together .
- Allow for better OO/maintenance and Agile techniques within each service. ( though less outside)
- Allows better integration and use of different services such as Java , CRM/ERP services etc.
- Encourages chunkier cross service calls and better attention paid to the service interface ( for easier use, compatibility/maintenance and performance)
- Discourages the service as a DB store proc wrapper.
- Avoids having to put performance hacks in the wrong place to try to avoid cross class calls.

This does not mean services should be 20 classes 3 is a good line but 1 to 9 is ok in a number of cases depending on class relationships. Basically if 2 classes communicate all the time they should be in the same service.

I can see in 5-15 years hosted environments/frameworks hosting classes which can be moved to machines or be in proc though its far too early for this and you NEED the ability for classes to communicate via normal inproc ( without serialization) .

I not you mention this for the future but telling people to use each class as a service now without some more comments on the hazzards ( especially when they don't have a lot of experience in SOA) will lead to a lot of frustration for some .&lt;img src="http://www.shanghai-software.com/blog/aggbug/51.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ben Kloosterman</dc:creator>
            <guid>http://www.shanghai-software.com/blog/archive/2009/11/01/soa-1-class-per-service-juval-lowy-framework.aspx</guid>
            <pubDate>Sun, 01 Nov 2009 13:12:25 GMT</pubDate>
            <wfw:comment>http://www.shanghai-software.com/blog/comments/51.aspx</wfw:comment>
            <comments>http://www.shanghai-software.com/blog/archive/2009/11/01/soa-1-class-per-service-juval-lowy-framework.aspx#feedback</comments>
            <wfw:commentRss>http://www.shanghai-software.com/blog/comments/commentRss/51.aspx</wfw:commentRss>
            <trackback:ping>http://www.shanghai-software.com/blog/services/trackbacks/51.aspx</trackback:ping>
        </item>
        <item>
            <title>Obsession with new toys</title>
            <link>http://www.shanghai-software.com/blog/archive/2009/10/18/obsession-with-new-toys.aspx</link>
            <description>I will be returning to eventing/EDA  soon ...&lt;br /&gt;
&lt;br /&gt;
There have been a number of posts lately on Windows Workflows 4s break with the past citing continual change and lack of support being a big problem.&lt;br /&gt;
&lt;br /&gt;
Id like to make a few comments on this. The number one productivity killer in .NET today is undoubtedly new technologies and learning how to implement them well.  While these are without doubt superior to past products eg Remoting /WCF , WIndows Forms / WPF , DataSets/LINQ for Sql people seem to be making the move because the feel its new and hence will be supported longer.&lt;br /&gt;
&lt;br /&gt;
This is completely wrong  thinking.   There are still  solutions today where remoting and Datasets are the most appropriate technical choice and likely the best choice in terms of skill levels.  To this day Microsoft still provides the occasional patches to the system. It is often the case with many systems that exist and are maintained many years after the developers even stop support .. Open Source code for example comes with no guaranteed support at all and many projects die yet still provide useful tools and forums for many years . In comparison Microsoft products have legions of people who can assist and forums are full of work arounds it is far cheaper to apply these to an existing app then rewrte it to take advantage of  some new code Microsoft has written. eg if you want ( Not  my choice) a distributed object system with tightly bound types Remoting and writing your own security is still a better choice than &lt;a title="WCF" href="http://www.shanghai-software.com/blog/WCF" rel=""&gt;Windows Communication Foundation&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Often in these cases the main driver is political and a hard excuse to change something, people need to be less afraid of using older code /libraries its very common in the non Microsoft world and has trivial implications for software development. Obviously non supported hardware  and shrink wrapped software is a different issue.&lt;img src="http://www.shanghai-software.com/blog/aggbug/50.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ben Kloosterman</dc:creator>
            <guid>http://www.shanghai-software.com/blog/archive/2009/10/18/obsession-with-new-toys.aspx</guid>
            <pubDate>Sat, 17 Oct 2009 16:58:24 GMT</pubDate>
            <wfw:comment>http://www.shanghai-software.com/blog/comments/50.aspx</wfw:comment>
            <comments>http://www.shanghai-software.com/blog/archive/2009/10/18/obsession-with-new-toys.aspx#feedback</comments>
            <wfw:commentRss>http://www.shanghai-software.com/blog/comments/commentRss/50.aspx</wfw:commentRss>
            <trackback:ping>http://www.shanghai-software.com/blog/services/trackbacks/50.aspx</trackback:ping>
        </item>
        <item>
            <title>Can EDA SOA eventing systems be fast</title>
            <link>http://www.shanghai-software.com/blog/archive/2009/07/10/can-eda-soa-eventing-systems-be-fast.aspx</link>
            <description>A lot of  traditional eventing systems  use C++  and are dubious about whether the Lego block style SOA can provide sufficient performance. &lt;br /&gt;
&lt;br /&gt;
Again it boils down to design &lt;br /&gt;
&lt;br /&gt;
 WCF  C# can process  over 22000 small messeges per second on an average 2 year old quad server.   http://msdn.microsoft.com/en-us/library/bb310550.aspx#wcfperform_topic4.&lt;br /&gt;
&lt;br /&gt;
This is more than sufficient for most applications especially as with eventing systems you can add servers relatively simply , the algorithms which manage  the propogation of  subscriptions and the path are far more important . ( Distributed Event-Based Systems  (Muhl , Fiege and Pietzuch) is a good book which covers the theory here .&lt;br /&gt;
&lt;br /&gt;
The other big issue often sited is latency but EDAM ( which uses &lt;a title="WCF" href="http://www.shanghai-software.com/blog/WCF" rel=""&gt;Windows Communication Foundation&lt;/a&gt; ) has sometimes achieved cross machine rates of 3ms again the design is critical here if you pass through 6 nodes each adding 20 ms  it can become  quickly unacceptable.  Often people will use all the features of SOA such as queues , transactions , encryption etc  yet wouldn't implement these on a typical C++  system  these can be killers , don't use them unless you HAVE to and since most C++ eventing systems dont you better have a good reason. . &lt;br /&gt;
&lt;br /&gt;
I would also add Network latency between companies , cities  or even countries add far more significant delays.  With human reaction being about 120ms (At best)  the small delays these services add are insignificant. &lt;br /&gt;
&lt;br /&gt;
The end result is you CAN build lego block style SOA , high speed eventing systems  with a good a design and gain all the SOA benefits .&lt;br /&gt;
&lt;br /&gt;
You could argue computer trading systems require better times but again i think the small differences you will get ( single figure ms at best ) are more than outweighed by a flexible design.  eg  instead of running the trades on the clients premises , critical trades can be uploaded to a providers machine near to the exchange this is often hard due to inflexible implementations .  A strong and flexible design means more optomization can be made more easily eg message priritization , packing multiple data messeges for efficiency etc &lt;br /&gt;
&lt;br /&gt;
Like premature code optomization  the desire to be as fast as possible does not outweigh good progamming algorithms and design.  &lt;br /&gt;
&lt;br /&gt;
Ok i said it enough a flexible and strong design is far more important than premature optomization and making things as fast as possible, &lt;img src="http://www.shanghai-software.com/blog/aggbug/44.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ben Kloosterman</dc:creator>
            <guid>http://www.shanghai-software.com/blog/archive/2009/07/10/can-eda-soa-eventing-systems-be-fast.aspx</guid>
            <pubDate>Fri, 10 Jul 2009 03:01:03 GMT</pubDate>
            <wfw:comment>http://www.shanghai-software.com/blog/comments/44.aspx</wfw:comment>
            <comments>http://www.shanghai-software.com/blog/archive/2009/07/10/can-eda-soa-eventing-systems-be-fast.aspx#feedback</comments>
            <wfw:commentRss>http://www.shanghai-software.com/blog/comments/commentRss/44.aspx</wfw:commentRss>
            <trackback:ping>http://www.shanghai-software.com/blog/services/trackbacks/44.aspx</trackback:ping>
        </item>
        <item>
            <title>Is SSL really secure/too much security</title>
            <link>http://www.shanghai-software.com/blog/archive/2009/04/12/42.aspx</link>
            <description>Is SSL really secure ? By encrypting messages on the wire  people get the feeling its secure and people use it ubiquitiously.&lt;br /&gt;
&lt;br /&gt;
Is encrypting on the wire something that really helps ? I don't really think  so , with most networks it is VERY difficult and practically impossible to do . &lt;br /&gt;
&lt;br /&gt;
eg &lt;br /&gt;
- In a LAN you need physical access to put a device in between reading all traffic from a PC ( in which case you have bigger problems) &lt;br /&gt;
- Switched mean a machine tap is not very usefull ( html is not broad cast) &lt;br /&gt;
- You need admin access to use a machine to tap  if you have this you can install a reader in the browser which logs your actions ( without the ssl) &lt;br /&gt;
- Tapping internet links is not possible due to the amount of traffic. Note smaller links could be monitored by a government agency &lt;br /&gt;
&lt;br /&gt;
However &lt;br /&gt;
&lt;br /&gt;
- A simple browser addin via a trojan or admin access can read all SSL !  &lt;br /&gt;
&lt;br /&gt;
What about tapping Wireless/GSM  , well wireless already has encryption . The encryption is prob harder to break then SSL due to the changing key,  &lt;br /&gt;
&lt;br /&gt;
So what do we get for SSL very little. Hence SSL just gives a false sense of security and wastes resources and adds complexity. &lt;br /&gt;
&lt;br /&gt;
This brings me to a point i did some consulting for a number of projects for a company  and the company had address information for their clients being sent to mobile phones . It was pointed out that the device only  kept the clients the driver visited and it would be a LOT easier and cheaper to just follow the vehicles.  We implementede it anyway as the client is always right .&lt;br /&gt;
&lt;br /&gt;
Still i feel people over engineer security ....in the wrong places. I have seen systems with good SSL but laughable or no authentication ...ummm.&lt;img src="http://www.shanghai-software.com/blog/aggbug/42.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ben Kloosterman</dc:creator>
            <guid>http://www.shanghai-software.com/blog/archive/2009/04/12/42.aspx</guid>
            <pubDate>Sun, 12 Apr 2009 00:47:21 GMT</pubDate>
            <wfw:comment>http://www.shanghai-software.com/blog/comments/42.aspx</wfw:comment>
            <comments>http://www.shanghai-software.com/blog/archive/2009/04/12/42.aspx#feedback</comments>
            <wfw:commentRss>http://www.shanghai-software.com/blog/comments/commentRss/42.aspx</wfw:commentRss>
            <trackback:ping>http://www.shanghai-software.com/blog/services/trackbacks/42.aspx</trackback:ping>
        </item>
        <item>
            <title>Is software  theory relevant</title>
            <link>http://www.shanghai-software.com/blog/archive/2009/04/05/39.aspx</link>
            <description>I just realized my main objection to heavy theoretical based development stems not from poor theory but in appropriate use. &lt;br /&gt;
&lt;br /&gt;
I think it comes down to the original premise that 90% of a softwares lifetime budget is in maintenance  . While this is certainly true for large scale mainframe applications or software vender apps ( eg IE , Word etc) it is not for the majority of small apps  used today.  I have seen many of these applications not change for 90% of their lifetime and when replaced they are replaced by the latest and greatest language /technology. &lt;br /&gt;
&lt;br /&gt;
Here is the thing i object to most - Using code that is very heavy in terms of  re-use and extendability but is difficult to read , understand and overly complex.   You can add to this the issue of developer skill level.  Now if i have a team of 10 skilled developers building a 2 year system , its certainly going to be a major system that will last with a budget probably in the 1-4M range . However for the more common typical smaller app with 1-3 people for 1-3 months it is important to follow KISS and keep the initial cost as low as possible. &lt;br /&gt;
&lt;br /&gt;
Considering this scenario makes up the vast amount of development projects ( and most programmers work) its surprising it is neglected by academia , there seems to be very little advice in building small systems as cheap as possible - &lt;br /&gt;
&lt;br /&gt;
Commericial vendors  have always embraced this market with VB , FoxPro , Clarion  all the 4 GL ( Progress etc)   but it seems sadly lacking in Universities and academia mainly because its not that interesting.  Instead of that make a graphic rendered in your Comp science course a better project maybe complete a simple 3 form and DB app with some master detail screens , you have 24 hours..  At least they would be more prepared for most workplaces. &lt;br /&gt;
&lt;br /&gt;
The slowness of modern development has also caused frustrations between IT and business specifically business will want an application to try a business venture however after they jump all the hoops and standards the whole startup is likely to not be viable. I have heard many business people talking about a quick win , while ther are many examples i clearly remember a business person being talked into an expensive product , like an Adobe Sharepoint type app where , the business could code business forms in Javascript  and they would use the skills of the vendor for the first few form , laughable but you can see they want the quick win. While i knew nothing about the product I knew the organisation had no HTML or Javascript skills and know it will probably end in grief.  The lesson here is we need to provide a quick and dirty option for the business more often .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.shanghai-software.com/blog/aggbug/39.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ben Kloosterman</dc:creator>
            <guid>http://www.shanghai-software.com/blog/archive/2009/04/05/39.aspx</guid>
            <pubDate>Sun, 05 Apr 2009 08:12:57 GMT</pubDate>
            <wfw:comment>http://www.shanghai-software.com/blog/comments/39.aspx</wfw:comment>
            <comments>http://www.shanghai-software.com/blog/archive/2009/04/05/39.aspx#feedback</comments>
            <wfw:commentRss>http://www.shanghai-software.com/blog/comments/commentRss/39.aspx</wfw:commentRss>
            <trackback:ping>http://www.shanghai-software.com/blog/services/trackbacks/39.aspx</trackback:ping>
        </item>
        <item>
            <title>Too many DB's</title>
            <link>http://www.shanghai-software.com/blog/archive/2009/03/29/38.aspx</link>
            <description>There seem to be a trend in using DBs like SQL Express for everything. Is this a good thing ? &lt;br /&gt;
&lt;br /&gt;
For larger systems sure , for small systems im not sure..&lt;br /&gt;
&lt;br /&gt;
The reason why people use these is obvious good tools/Apis  and data protection /management.  &lt;br /&gt;
&lt;br /&gt;
However for small systems DB's are not that easy to manage , they have to be installed , connection string and security setup and most importantly maintained. Having a corruption in an index is a major  issue when the DB is on a client laptop a lot of small apps dont provide Reindex faciities.&lt;br /&gt;
&lt;br /&gt;
Considering these DB's are often less than 50 Meg for cases with a small amount of writes i much prefer , running it all out of memory and using an XML file. You get data integrity by  always having a backup file ( eg copy the old file after a successful update). &lt;br /&gt;
&lt;br /&gt;
I think this part of growing trend to apply things designed for large systems too small ones due to the better tools available.&lt;img src="http://www.shanghai-software.com/blog/aggbug/38.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ben Kloosterman</dc:creator>
            <guid>http://www.shanghai-software.com/blog/archive/2009/03/29/38.aspx</guid>
            <pubDate>Sun, 29 Mar 2009 01:05:00 GMT</pubDate>
            <wfw:comment>http://www.shanghai-software.com/blog/comments/38.aspx</wfw:comment>
            <comments>http://www.shanghai-software.com/blog/archive/2009/03/29/38.aspx#feedback</comments>
            <wfw:commentRss>http://www.shanghai-software.com/blog/comments/commentRss/38.aspx</wfw:commentRss>
            <trackback:ping>http://www.shanghai-software.com/blog/services/trackbacks/38.aspx</trackback:ping>
        </item>
        <item>
            <title>Eventing with and without Topics</title>
            <link>http://www.shanghai-software.com/blog/archive/2009/02/21/eventing-with-and-without-topics.aspx</link>
            <description>While WS-Eventing has no support for Topics ( see last post) it is almost essential for efficient  processing of messages if you have a large amount of subscriptions. &lt;br /&gt;
&lt;br /&gt;
Consider the case of 10,000 Subscriptions for 10,000 Notification you are looking at 10^8 expensive xPath comparisons which will bring many servers down to its knees. &lt;br /&gt;
&lt;br /&gt;
With EDA we can easily solve this problem ( compare to an overloaded DB) .&lt;br /&gt;
&lt;br /&gt;
Lets say we have a Topicless share pricing feed  something like &lt;br /&gt;
&lt;br /&gt;
&amp;lt;Trades&amp;gt;&lt;br /&gt;
&amp;lt;Trade&amp;gt;&lt;br /&gt;
&amp;lt;Symbol&amp;gt;BHP&amp;lt;/Symbol&amp;gt;&lt;br /&gt;
&amp;lt;Price&amp;gt;38.12&amp;lt;/Price&amp;gt;&lt;br /&gt;
&amp;lt;Volume&amp;gt;10000&amp;lt;/Volume&amp;gt; &lt;br /&gt;
&amp;lt;Exchange&amp;gt;ASX&amp;lt;/Exchange&amp;gt;&lt;br /&gt;
&amp;lt;/Trade&amp;gt;&lt;br /&gt;
&amp;lt;/Trades&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now WS-Eventing has a really nice feature in that subscriptions can force notifications to contain a header this header can be a Topic. Even better the EndTo can be another WS-Eventing server.  With EDAm this is even easier as this subscription can be loaded in the configuration of the Notification server. &lt;br /&gt;
So we create subscriptions and organise the data  eg  by exchange then by group. &lt;br /&gt;
&lt;br /&gt;
What we want is &lt;br /&gt;
&lt;br /&gt;
ShareData&lt;br /&gt;
ShareData.Exchange.Group. Symbol. &lt;br /&gt;
&lt;br /&gt;
That way actual clients can subscribe to the specific information they need ( most likely Symbol or Group )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Main Server (where the original feed enters)  &lt;br /&gt;
Topicless (Default mode) &lt;br /&gt;
&lt;br /&gt;
2nd Server ( Runs in Must have topic and server always loads all subs from Topic) &lt;br /&gt;
Subscriptions in the config file ( or Data ) break the data down&lt;br /&gt;
&lt;br /&gt;
Subscription for Exchange add topic&lt;br /&gt;
&lt;br /&gt;
eg Xpath filter =  /Trades/Trade/Exchange="ASX"   Header in subscription&lt;br /&gt;
 &amp;lt;Topics&amp;gt; ShareData.ASX&amp;lt;/Topics&amp;gt; &lt;br /&gt;
&lt;br /&gt;
we add one subscription for each exchange &lt;br /&gt;
We add subscription for each  group and each code. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
eg Xpath filter =  /Trades/Trade/Exchange/Symbol="BHP"   Header in subscription&lt;br /&gt;
 &amp;lt;Topics&amp;gt; ShareData.ASX.MetalsAndMining&amp;lt;/Topics&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We now have 2 services ( the 2nd one can become many services if the load justifies it  ( not needed for a cloud) )  and people can make a subscription based on the Topic and get just the data they require  Better yet they can make subscription based on a cheap topic filter which would be orders of magnitude faster than xPath ( and is easier for the engine to index) . . &lt;br /&gt;
&lt;br /&gt;
Lets have a look at the data , lets asume all these subscriptions are group subscriptions  ( 20  groups * 500 subscriptions)   , now each Group will have 500 Notifications . The engine now only has to process  each of those notifications for 500 subscriptions  so we have 20 * 500 * 500  = 5,000.000 operations ( a 20 fold reduction) . O ( n* m) vs  O( n * m/log(n) )  . Taking into account the difference in performance between a simple topic filter and Xpath you would be looking at 2-3 orders of magnitude improvement. which could correspond to 1 server instead of 200. &lt;br /&gt;
&lt;br /&gt;
This translates into a simpler , more responsive and more cost effective system. With EDA ( and especially EDAM ) this reconfiguration could be done with no changes in code.&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.shanghai-software.com/blog/aggbug/34.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ben Kloosterman</dc:creator>
            <guid>http://www.shanghai-software.com/blog/archive/2009/02/21/eventing-with-and-without-topics.aspx</guid>
            <pubDate>Sat, 21 Feb 2009 12:17:16 GMT</pubDate>
            <wfw:comment>http://www.shanghai-software.com/blog/comments/34.aspx</wfw:comment>
            <comments>http://www.shanghai-software.com/blog/archive/2009/02/21/eventing-with-and-without-topics.aspx#feedback</comments>
            <wfw:commentRss>http://www.shanghai-software.com/blog/comments/commentRss/34.aspx</wfw:commentRss>
            <trackback:ping>http://www.shanghai-software.com/blog/services/trackbacks/34.aspx</trackback:ping>
        </item>
        <item>
            <title>OSLO to be or not </title>
            <link>http://www.shanghai-software.com/blog/archive/2009/02/12/oslo-to-be-or-not.aspx</link>
            <description>Based on the limited information so far . &lt;br /&gt;
&lt;br /&gt;
Im not really sure about Oslo ( as opposed to Dublin and Azure which i think will be big hits) it reminds me a LOT of UML and associated higher end tools which manage synch the UML to code and database schemas. &lt;br /&gt;
&lt;br /&gt;
For a start we have to learn a new language ( ok its similar but there are a lot of differences)  that immediately has to be a barrier to entry .  In return it doesn't make anything easier it just unifies a lot of different thigns under a bigger umbrella which so far i dont think will overcomes peoples natural resistance to change unless it provides some benefit.  &lt;br /&gt;
&lt;br /&gt;
However i wonder if Dublin will require some of the Oslo meta data im still waiting to see that.&lt;br /&gt;
&lt;br /&gt;
Is it really worth it  ?&lt;img src="http://www.shanghai-software.com/blog/aggbug/32.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ben Kloosterman</dc:creator>
            <guid>http://www.shanghai-software.com/blog/archive/2009/02/12/oslo-to-be-or-not.aspx</guid>
            <pubDate>Thu, 12 Feb 2009 03:05:49 GMT</pubDate>
            <wfw:comment>http://www.shanghai-software.com/blog/comments/32.aspx</wfw:comment>
            <comments>http://www.shanghai-software.com/blog/archive/2009/02/12/oslo-to-be-or-not.aspx#feedback</comments>
            <wfw:commentRss>http://www.shanghai-software.com/blog/comments/commentRss/32.aspx</wfw:commentRss>
            <trackback:ping>http://www.shanghai-software.com/blog/services/trackbacks/32.aspx</trackback:ping>
        </item>
    </channel>
</rss>