| What I going to say is actually obvious- but somehow I never thought that the common sense proverb saying "the chain is as weak as its weakest link" is wrong. Really, when you hear it you may visually imagine a chain with a weak link which tears when disruptive force applied to it is much weaker than force needed to disrupt the rest of chain links. So, what's wrong? The wrong thing is that this proverb usually not being applied to the physical chains. It applies to the chain of circumstances, probabilities or responsibilities. In fact the chain is much weaker than its weakest link. Really, let's say we are talking about a transportation system in some city. If there is a chance of 50% that your autobus will late and a chance of 50% that your train will late there is a chance of only 25% that you will arrive at time. So, if you're looking at set or related factors where each of them has low failure probability the overall failure probability is much higher. I call it "weakest chain amplification principle". I think this fact has interesting consequences in a lot of fields. For example in sociology: next time you hear about a 'weak chain' in politic, public sector, police, health system or whatever else you should realize that the overall situation is much worse than this 'weak chain' issue. If some politician is a bit not professional, another one does something a bit not completely legal and another one is a bit dumb all together they form a government that is not a bit weak, but really weak. Of course - all above applies only when elements or factors are strongly related, i.e. when they are actually bound into 'chain'. And this, in turn, has some interesting implication in creation of complex systems, e.g. in software development. The thing is that, taking a SW development as an example - we may note that any big software complex has its own weak chain (bugs, design mis-considerations, etc), even in its final stage. Then - why at all those big programs are able to work? Considering all said above - it should be impossible to create a stable SW product in principle. How they work then? Well, they work since usually, after some polishing - bugs became kind of sparsely spread around and not related to each other. Theyhappen in certain conditions and with relatively low probability. And then the weakest chain amplification principle doesn't apply to them. p.s. Small note there is an obvious connection between above considerations and 'explicit boundaries' and 'autonomous evolution' principles in SOA. |
Thursday, March 22, 2007
Weakest chain amplification principle
Wednesday, March 14, 2007
Sunday, March 11, 2007
Is saying that C# is 'better' than VB.NET is a mauvais ton?
| One of my favourite childhood books was book of a semi-forgotten today Russian author - L. Kassil. Misfortunately he didn't stand in competition with McDonald's of today literature world a'la Harry Potter. Now, you would ask - how it relates to the C#? - Here is the story: heroes of the book were arguing who's stronger - marine or soldier? Whale or an elephant? … - well, you got an idea. Now an interesting article in SDK Dev' Team blog paradoxically resembled me all of it - marine, soldier and whale :) In this article SDK developers present a coverage of various themes done for C# and VB.NET in Vista SDK samples:
Do you notice that C# coverage is a bit better? That's why I going to stand on the mauvais ton side and say that C# is better than VB.NET. Yes, yes, everything could be implemented in language constructions of both languages. But: 1) There is more important development in C# than in VB.NET (e.g. Enterprise Libraries). 2) I think that for historical reasons - most of the people writing in VB.NET are peoples who did a transaction from some sort of visual basic development. And VB projects in the pre .net era were kind of less 'hardcore' than, say, C++ projects, whose developers probably evolved into the C# rather than into the VB.NET. Except, how else you may explain that market offers higher wages for C# pplz (than to VB.NET)? |
Wednesday, March 07, 2007
How to use w.bloggar after switching to Google Account on blogspot.com
I'm back
| 1. I'm back after really, really long blackout. 2. A lot to tell - it's even difficult to chose what to start with. |
Monday, May 15, 2006
Boosting priority of Visual Studio .NET compilation
Long, long, long time ago a trick was published on CodeGuru, letting you to decrease priority of the compilation process (cl.exe) spawned by VC++ environment. Build process is a relatively resources-consuming task and those days - running a big build was almost freezing your computer for hours, hardly letting you to browse an internet site in the background. So, the trick was to look for the combination of CREATE_NEW_PROCESS_GROUP and NORMAL_PRIORITY_CLASS flags (together giving a value of 68 00 02) in the vcspawn.exe process and then change 00 02 into 40 02, which is the value of IDLE_PRIORITY_CLASS (actually it's 0x00000040 - so you getting 40 00 after you swap its bytes to fit physical representation in memory). Now, today I encountered an absolutely opposite problem: we have a dedicated "daily build" machine, which only purpose is to run daily build, unit tests and pack daily build installation. I noted that a big span of time required for this whole process to complete is spent by compilation (cl.exe). So I wanted to increase its default priority and this way to speed up whole build process. Well, the old trick still works - all you need is to look for 68 00 02 in vcspawn.exe and change it to 68 80 02 (HIGH_PRIORITY_CLASS). |
Sunday, April 30, 2006
Turn Google Desktop into multisite search tool
Actively using Google Desktop on my own computer I thought how nice it could be if there was kind of mini-Google search engine running in my organization, letting to search across document servers, intranet and may be even in explicitly specified shared locations on another computers. Just think about finding Travel Policy.doc in one click instead of browsing dozens of folders in HR directory on the doc's server. Or looking for a piece of code written by you (or someone else!) just by clicking something likeRemotingServices.GetLifetimeService()in the desktop search screen. Even more - having few computers connected by LAN at home - it could be great to have a possibility to search across all of them, instead of chasing for some lost .doc file on each computer apart. Well, for the first part (the Enterprise mini-Google) - it's actually offered by Google itself for as much as £1,995. Btw, Google Desktop per se offers some kind of that functionality, but in a different aspect - for users who have a GMail account - it provides "Search Across Computers" service. The concept is that data on all your computers is indexed and stored in a centralized location (somewhere in the deeps of Google servers), thus enabling you to search it from any of your computers. The problem here is that you passing indexed content of your computer over the internet and storing it at server which belongs to, yet reliable, but still - 3rd party side. And it's kind of disturbing, despite in reality - most of computers are exposed to so many treats, anyway, that passing this index over the net is really the last thing to worry about. Btw, the index could be encrypted, selecting the following option in the Desktop Search options (and slowing search a bit): Anyway, it's good for corporate, but a bit expensive for the home user. So, after browsing around here and there - I've found that there is a solution for that, which would even keep all your indexes local, without letting them leave to the deep sea of the internet. No hacks needed - you are two plugins and few configurations away... As said - you'll need to install two plugins first of all. First one is DNKA and the 2nd is TweakGDS. Select one of your home computers that would serve as 'Google-home-server' and install both plugins on it. (Do you know there is a whole set of extensions for the GDS, all available here?). I. In Tweak GDS: 1) Define where you would like to keep index of the crawled files: 2) Define how much result-per-page you want to see: II. In DKNA: 1) Define which computers allowed to access the 'server' GDS computer: Please note that 2) So, it would be good idea to disable anonymous access and define users allowed to access the GDS in the DNKA Users setup screen: 3) Finally - you may review access log (Misc Options of DNKA Options screen) from time to time. III. The last thing - is to configure your GDS (below): 1) You need to make sure the GDS plugin is enabled. 2) If you want to crawl any network locations - add them in "Search These Locations" section. 3) In "Don't Search These Locations" add both http://127.0.0.1 and http://127.0.0.1:4664 to avoid duplicate results in your search. If you computer would server explicitly for search - remove its drives from the search locations. 4) It's a good idea to encrypt indexes anyway. Two final remarks: 1) I can't bet this solution is hack-proofed, if you are concerned about security. 2) I wonder, whether it would continue to be available, since Google would probably prefer people buying their Google-mini/enterprise solution instead... |
Subscribe to:
Posts (Atom)