May 13th, 2008

Warren Buffet will donate 85% of his entire net worth, ~ $37 Billion, to charity0

How amazing is this. Seriously though - you have to love, respect and admire this act.

more here

UI design thoughts - from the folks with the most used application suite in the world0

MSDN has a great set of articles on the 2007 Office Suite. I have never been an ‘office’ developer - but, I thought that being a UI designer - a good place to get ideas on UI design - would certainly be the office team.

This article -Developer Overview of the User Interface for the 2007 Microsoft Office System got me into this series of articles (Office 12 Technical Articles)

Read these articles - they are great. In essence, they are good reference for principals and practices regarding User Interface design. I snipped the following bit here for your reading pleasure. These key points can take you a long way. I believe that the ‘art’ of user interface design needs to be pursued. SO many business applications are developed with little interaction design expertise that it is amazing. Broken metaphors, awkward operations, confusing dialogs etc are the NORM unfortunately. So - I believe this MUST change. Leave it to the folks @ MS to spend LOTS of $ on RnD/ Focus Groups to sort out the ways that users like to interact with software. This very spending is valuable to all of us software developers.

UI Design Philosophy

  • Focus. The user’s attention should be on the content, not on the UI. The results-oriented approach allows the user to perform sophisticated formatting and advanced tasks without diverting their attention from the document or content on which they are working.
  • Context. The contextualization of as many commands and properties as possible is crucial. Increase the user’s sense of mastery by reducing the number of choices presented at any given time. Reduce the command space by eliminating redundant or seldom-used features.
  • Efficiency. Focus on efficiency rather than scope. Users must be able to find the most powerful features for the task quickly and easily. A small gain in the scope of features used is not worth a significant loss in the efficient use of the features.
  • Consistency. A results-oriented user experience is best accomplished by clearly providing intuitive ways to solve different problems. When applying tools to tasks, flexible consistency is desirable; homogeneity is not.
  • Permanence. Clearly defined access to tools ensures better usability. Ambiguity is reduced by establishing permanent homes for groups of features. A consistent-location UI is favored over a “smart” UI.
  • Predictability. The Microsoft Office applications offer a long and rich legacy of acceptance, upon which you can build successful UI innovation. Straight-forward design ensures continued user comfort and maximized results. Favor the predictable over the novel.

A big thing for the new office suite is the whole ‘ribbons’ thing. Bye bye file, edit, view menus. Bye bye toolbars with commands repeated from the sub menus etc. Enter - ribbons…

Results-Oriented Design

These ribbons are there to work according to the above ‘UI design Philosophy’. I am just now installing the new office beta for myself - simply for the ’study’ of their UI principals in practice. Hopefully - I will add to my practices and knowledge of REALLY designing UIs for people to accomplish things. This is key - a core tenant of their latest UI Design philosophy is “results oriented design” - building applications for people to get things done.  May they accomplish this - may we all!

Enough blabber -I am off….

Chris

Google Browser Sync0

I am sure a zillion people have already posted about this one - but it is great - so I will post too. While setting up one of my new machines last night - Google Browser Sync came in very handy. No more moving around of my Firefox favorites etc.

Here is the stuff it will sync up across however many computers you use.
gbs.JPG

This is very useful as i regularly use Firefox on ~4 machines day to day.

Go Google;
-Chris

How to win an argument0

Arguments - YUK! Whenever you work with lots of smart people - as I always hope to - there are bound to be debates, stronger debates - and yes - even arguments. When people are working hard, involved, impassioned about their work - their careers - the things that they are interested in; communication can get hard. I think that software people tend to be bright and highly logical. This is a blessing and a curse. Technical and analytical skills are extremely important. The other key part of ANY work is the inter-personal part of it. The technical part is what they will hopefully do - the inter-personal part is HOW they will do it. Communication is the heart of software work.

I DO also think that there are better software people than others  -we pick the ones we *want* via the interview process. We also are put into groups of people we did not interview. This is good too as it helps you to see all kinds of people - the ones you would have *picked* via an interview and the ones that you would not have. I think that you can find people that are bright and have very different view points that you - but there will always be some common ground with these people - else you would not think they were so bright. One of my ‘things’ that I believe -

“As long as you are in your zone of comfort - you are not growing”

I think/ hope/ have heard that one of my *skills* is being able to talk with/ deal with other software people. I have had to run teams for some years now and I think THAT is much more about managing the brilliant people you hire than managing the work they do. We hope to hire bright people that will do great work - and we hope to be able to get all the brilliant people to actually work together to get said work done.

This is fine - but. With all of these people involved - the differences of opinion, differences in experiences, differences in background, preferences etc will all contribute to the inevitable debates. The debates will eventually come down to matters of opinion that will need to get *picked*. When work needs to be done, decisions need to be made. People have different opinions - how do you choose? More importantly - the point of this posting - how do you convince people of your point of view? How do you convince people that your view is *better* or at least better suited to the work at hand?

When you are the *boss* it is easy - you take in the input from all your smart people - you think - and you make a judgment call. When you are NOT the boss - you have to be more compelling :) I think that considering the goals of the decision maker is the 1st and most important think to think about here. If you are NOT the decision maker- you MUST consider the end state that the actual decision maker(s) have in mind. No matter how *good* your arguments are - if they matter not to the decision maker - your words will not matter. During the course of your debate you must watch out for…. the evil inside all of us technical people….

Intellectual Snobbery

This is what I am talking about here…. I am always trying to be as respectful as possible when I have a difference of opinion from another person - usually these are software people. As I mentioned earlier - I have often been put in leadership roles for software people and I have been told that I am good with people and personalities. I am always trying to put the intellectual snob inside me back into his dark box…. yet I am still debating my beliefs strongly. I DO BELIEVE that healthy debate is the road to better solutions. Put your ideas to the trial by fire. If your ideas are *better* - the fire will prove it. The folks on the other side of the debate must be open to doing the same.

Be respectful - yet do stand your ground. Hopefully - the people that employ you think that you have some value. Hopefully - you do. Hopefully - you will be able to relay your views to others in a way that is compelling, open and un-intimidating. Do this - and you may win your debate. I would also have a read of some of the ‘conventional writing’ on how to win an argument - you can find this 99 places on the web - but for convenience - I will repost here :)

 38 Ways to Win an Argument

  1. Carry your opponent’s proposition beyond its natural limits; exaggerate it.
    The more general your opponent’s statement becomes, the more objections you can find against it.
    The more restricted and narrow your own propositions remain, the easier they are to defend.
  2. Use different meanings of your opponent’s words to refute his argument.
    Example: Person A says, “You do not understand the mysteries of Kant’s philosophy.”
    Person B replies, “Of, if it’s mysteries you’re talking about, I’ll have nothing to do with them.”
  3. Ignore your opponent’s proposition, which was intended to refer to some particular thing.
    Rather, understand it in some quite different sense, and then refute it.
    Attack something different than what was asserted.
  4. Hide your conclusion from your opponent until the end.
    Mingle your premises here and there in your talk.
    Get your opponent to agree to them in no definite order.
    By this circuitous route you conceal your goal until you have reached all the admissions necessary to reach your goal.
  5. Use your opponent’s beliefs against him.
    If your opponent refuses to accept your premises, use his own premises to your advantage.
    Example, if the opponent is a member of an organization or a religious sect to which you do not belong, you may employ the declared opinions of this group against the opponent.
  6. Confuse the issue by changing your opponent’s words or what he or she seeks to prove.
    Example: Call something by a different name: “good repute” instead of “honor,” “virtue” instead of “virginity,” “red-blooded” instead of “vertebrates”.
  7. State your proposition and show the truth of it by asking the opponent many questions.
    By asking many wide-reaching questions at once, you may hide what you want to get admitted.
    Then you quickly propound the argument resulting from the proponent’s admissions.
  8. Make your opponent angry.
    An angry person is less capable of using judgment or perceiving where his or her advantage lies.
  9. Use your opponent’s answers to your question to reach different or even opposite conclusions.
  10. If you opponent answers all your questions negatively and refuses to grant you any points, ask him or her to concede the opposite of your premises.
    This may confuse the opponent as to which point you actually seek him to concede.
  11. If the opponent grants you the truth of some of your premises, refrain from asking him or her to agree to your conclusion.
    Later, introduce your conclusions as a settled and admitted fact.
    Your opponent and others in attendance may come to believe that your conclusion was admitted.
  12. If the argument turns upon general ideas with no particular names, you must use language or a metaphor that is favorable to your proposition.
    Example: What an impartial person would call “public worship” or a “system of religion” is described by an adherent as “piety” or “godliness” and by an opponent as “bigotry” or “superstition.”
    In other words, inset what you intend to prove into the definition of the idea.
  13. To make your opponent accept a proposition , you must give him an opposite, counter-proposition as well.
    If the contrast is glaring, the opponent will accept your proposition to avoid being paradoxical.
    Example: If you want him to admit that a boy must to everything that his father tells him to do, ask him, “whether in all things we must obey or disobey our parents.”
    Or , if a thing is said to occur “often” you are to understand few or many times, the opponent will say “many.”
    It is as though you were to put gray next to black and call it white; or gray next to white and call it black.
  14. Try to bluff your opponent.
    If he or she has answered several of your question without the answers turning out in favor of your conclusion, advance your conclusion triumphantly, even if it does not follow.
    If your opponent is shy or stupid, and you yourself possess a great deal of impudence and a good voice, the technique may succeed.
  15. If you wish to advance a proposition that is difficult to prove, put it aside for the moment.
    Instead, submit for your opponent’s acceptance or rejection some true proposition, as though you wished to draw your proof from it.
    Should the opponent reject it because he suspects a trick, you can obtain your triumph by showing how absurd the opponent is to reject an obviously true proposition.
    Should the opponent accept it, you now have reason on your side for the moment.
    You can either try to prove your original proposition, as in #14, maintain that your original proposition is proved by what your opponent accepted.
    For this an extreme degree of impudence is required, but experience shows cases of it succeeding.
  16. When your opponent puts forth a proposition, find it inconsistent with his or her other statements, beliefs, actions or lack of action.
    Example: Should your opponent defend suicide, you may at once exclaim, “Why don’t you hang yourself?”
    Should the opponent maintain that his city is an unpleasant place to live, you may say, “Why don’t you leave on the first plane?”
  17. If your opponent presses you with a counter-proof, you will often be able to save yourself by advancing some subtle distinction.
    Try to find a second meaning or an ambiguous sense for your opponent’s idea.
  18. If your opponent has taken up a line of argument that will end in your defeat, you must not allow him to carry it to its conclusion.
    Interrupt the dispute, break it off altogether, or lead the opponent to a different subject.
  19. Should your opponent expressly challenge you to produce any objection to some definite point in his argument, and you have nothing to say, try to make the argument less specific.
    Example: If you are asked why a particular hypothesis cannot be accepted, you may speak of the fallibility of human knowledge, and give various illustrations of it.
  20. If your opponent has admitted to all or most of your premises, do not ask him or her directly to accept your conclusion.
    Rather, draw the conclusion yourself as if it too had been admitted.
  21. When your opponent uses an argument that is superficial and you see the falsehood, you can refute it by setting forth its superficial character.
    But it is better to meet the opponent with acounter-argument that is just as superficial, and so dispose of him.
    For it is with victory that you are concerned, not with truth.
    Example: If the opponent appeals to prejudice, emotion or attacks you personally, return the attack in the same manner.
  22. If your opponent asks you to admit something from which the point in dispute will immediately follow, you must refuse to do so, declaring that it begs the question.
  23. Contradiction and contention irritate a person into exaggerating their statements.
    By contradicting your opponent you may drive him into extending the statement beyond its natural limit.
    When you then contradict the exaggerated form of it, you look as though you had refuted the original statement.
    Contrarily, if your opponent tries to extend your own statement further than your intended, redefine your statement’s limits and say, “That is what I said, no more.”
  24. State a false syllogism.
    Your opponent makes a proposition, and by false inference and distortion of his ideas you force from the proposition other propositions that are not intended and that appear absurd.
    It then appears that opponent’s proposition gave rise to these inconsistencies, and so appears to be indirectly refuted.
  25. If your opponent is making a generalization, find an instance to the contrary.
    Only one valid contradiction is needed to overthrow the opponent’s proposition.
    Example: “All ruminants are horned,” is a generalization that may be upset by the single instance of the camel.
  26. A brilliant move is to turn the tables and use your opponent’s arguments against himself.
    Example: Your opponent declares: “so and so is a child, you must make an allowance for him.”
    You retort, “Just because he is a child, I must correct him; otherwise he will persist in his bad habits.”
  27. Should your opponent suprise you by becoming particularly angry at an argument, you must urge it with all the more zeal.
    No only will this make your opponent angry, but it will appear that you have put your finger on the weak side of his case, and your opponent is more open to attack on this point than you expected.
  28. When the audience consists of individuals (or a person) who is not an expert on a subject, you make an invalid objection to your opponent who seems to be defeated in the eyes of the audience.
    This strategy is particularly effective if your objection makes your opponent look ridiculous or if the audience laughs.
    If your opponent must make a long, winded and complicated explanation to correct you, the audience will not be disposed to listen to him.
  29. If you find that you are being beaten, you can create a diversion–that is, you can suddenly begin to talk of something else, as though it had a bearing on the matter in dispute.
    This may be done without presumption if the diversion has some general bearing on the matter.
  30. Make an appeal to authority rather than reason.
    If your opponent respects an authority or an expert, quote that authority to further your case.
    If needed, quote what the authority said in some other sense or circumstance.
    Authorities that your opponent fails to understand are those which he generally admires the most.
    You may also, should it be necessary, not only twist your authorities, but actually falsify them, or quote something that you have entirely invented yourself.
  31. If you know that you have no reply to the arguments that your opponent advances, you by a find stroke of irony declare yourself to be an incompetent judge.
    Example: “What you say passes my poor powers of comprehension; it may well be all very true, but I can’t understand it, and I refrain from any expression of opinion on it.”
    In this way you insinuate to the audience, with whom you are in good repute, that what your opponent says is nonsense.
    This technique may be used only when you are quite sure that the audience thinks much better of you than your opponent.
  32. A quick way of getting rid of an opponent’s assertion, or of throwing suspicion on it, is by putting it into some odious category.
    Example: You can say, “That is fascism” or “Atheism” or “Superstition.”
    In making an objection of this kind you take for granted
    1)That the assertion or question is identical with, or at least contained in, the category cited;
    and
    2)The system referred to has been entirely refuted by the current audience.
  33. You admit your opponent’s premises but deny the conclusion.
    Example: “That’s all very well in theory, but it won’t work in practice.”
  34. When you state a question or an argument, and your opponent gives you no direct answer, or evades it with a counter question, or tries to change the subject, it is sure sign you have touched a weak spot, sometimes without intending to do so.
    You have, as it were, reduced your opponent to silence.
    You must, therefore, urge the point all the more, and not let your opponent evade it, even when you do not know where the weakness that you have hit upon really lies.
  35. Instead of working on an opponent’s intellect or the rigor of his arguments, work on his motive.
    If you success in making your opponent’s opinion, should it prove true, seem distinctly prejudicial to his own interest, he will drop it immediately.
    Example: A clergyman is defending some philosophical dogma.
    You show him that his proposition contradicts a fundamental doctrine of his church.
    He will abandon the argument.
  36. You may also puzzle and bewilder your opponent by mere bombast.
    If your opponent is weak or does not wish to appear as if he has no idea what your are talking about, you can easily impose upon him some argument that sounds very deep or learned, or that sounds indisputable.
  37. Should your opponent be in the right but, luckily for you, choose a faulty proof, you can easily refute it and then claim that you have refuted the whole position.
    This is the way in which bad advocates lose good cases.
    If no accurate proof occurs to your opponent, you have won the day.
  38. Become personal, insulting and rude as soon as you perceive that your opponent has the upper hand.
    In becoming personal you leave the subject altogether, and turn your attack on the person by remarks of an offensive and spiteful character.
    This is a very popular technique, because it takes so little skill to put it into effect. (this is wha trolls like to do)

Taken from Arthur Schopenhauer’s Art of Controversy.

-Chris

Yet another new edition to my digital life1

As I mentioned the other day - I just ordered a new notebook - fun. I also mentioned I would be ordering a new desktop soon - and that day has come.

While the new notebook is still en route to me (hopefully wed or thurs I will have it), the new desktop is already home. I had this odd melange of amex gift cards and excess Thank You Points from Citibank so I rolled them up with a (very) few actual $ and got me an HP ‘Media Center PC’. Needless to say - this machine will be the home for either Suse 10 or Ubuntu - bye bye ‘media center’… So here are the details:

• AMD Athlon™ 64 X2 4200+
• 250GB 7200RPM hard drive
• 2GB of DDR SDRAM
• Double-layer DVD±R/RW
• LightScribe-enabled
• 9-in-1 memory card reader

Points to note…

7200 RPM SATA drives will do - I wish they were even faster drives.

Corny - but the  LightScribe thing looks pretty cool. In short - you can ‘laser etch’ labels onto a CD or DVD in the  drive.

I am psyched mostly about the dual core AMD 4200s 64s that are in there - nice - this is my 1st dual core and my 1st 64 bit system…
2 Gig of fast RAM :)

Great stuff - my home computing world is nicely updated now. My basic home setup is now 3 AMD based ‘desktop’ systems - 2 Windows (1 as server, 1 as desktop) 1 Linux. I also have 2 External firewire backup drives (~250-300gb each). My old notebook is *dead* so - my new notebook will be the only one - Windows XP also. Interestingly - my personal storage total is now somewhere in the 1.5 TB area - what with external backup drives and what is in all of these machines. That is enough for me for some time to come.

-Chris

New edition to my digital life1

Well - it was time for a new notebook. After Micah - my now 17 month old stood up on my Compaq notebook - it was all downhill from there. The USB ports on the back had been failing, the CD drive was dead, it would decide not to power up at all sometimes etc. So - I spent much effort these past few evenings trying to sort out a new laptop.

In my current situation - my desktop computers are in my bedroom. That said - most of my home computing time comes between the hours of 10 PM and 1 AM weekdays and during my kids nap time during the weekends. So - I cannot be in my bedroom… This means that I am ALWAYS on a notebook somewhere besides my bedroom - where my lovely wife Shannon and my 17 month old Micah still sleeps (When he is 2 my boys get bunk beds and share a room - we live in Brooklyn - space is a commodity.). So - Having an excellent notebook that I will be using 99% of the time from IN my house is key.

A few points that I considered. Notebooks tend to have sucky slow hard drives. I needed to either get a fast aftermarket drive - or better yet -a fast drive out of the box. I also want a large screen. I am used to developing with dual monitors. Working on a small screen is hard for me. I also need lots of the other #s.. mhz, mb, gb, rpm, etc. - just to support working, multitasking, developing, etc. I debated for a while between a 64 bit CPU and a dual core CPU. I really wanted a dual core 64 bit AMD cpu - but they are not out for notebooks yet (not from a real vendor at least). *The new desktop I am ordering in the next few weeks will be a dual core Amd 64 bit :) . In any case - my only real option was the Intel Core Duo. A video card - it is important to have a decent video card. I think people underrate the importance of a dedicated video card. Even more - people underestimate fast disk importance - so at least a 7200 RPM disk set was important to me as well.

So - my debate came down to the Dell Inspiron E1705 9400 2.0GHz and the HP dv8000t  also @ 2GHz. At the end of the day - I opted for the dell. As much as there are stories for ‘dead dells’ out there - there seem to be more (and more credible) stores regarding ‘bad HP notebooks’. My favorite set of debates was on a forum where people that were ‘tech support’ people at a University and at a Best Buy Geek Squad - talked about their experiences. In any case - here is what is coming new to my doorstep soon:

  • Intel 2.0Ghz Core Duo T2500 Processor
  • 17 inch Ultrasharp Wide Screen WUXGA Display with Truelife (1,920 by 1,200 pixels)
  • 2 GIGS DDR2 (fast) 667Mhz SDRAM
  • 100GB 7,200RPM SATA Hard Drive
  • DVD+/-RW burner
  • Internal Wireless 802.11 B/G
  • 256MB nVidia GeForce Go 7800
  • XP Pro SP2

:) Needless to say - I am like a kid waiting for Christmas now.

-Chris

Grid based trading system optimizer preview release1

Neoticker’s grid based trading system optimizer preview release available.

Since I spent QUITE a lot of time writing optimizer(s) for trading systems - this is of particular interest. I am curious to see what features they have incorporated in.

Trading systems can have lots of parameters, and each parameter can have a wide range of possible values. This leads to a huge N dimensional search space. This means that many optimization techniques will have a very hard time coming up with good ‘answers’ and/ or take a lllooonnngg time. Having a distributed solution is key… so go neoticker folks. This has been in the works for some time - so I am curious to see when it will really be available for end users commercially.

-Chris

New Reading0

Here is my latest reading….

Since I do so much of this - framework design - I figured I would see what they have to say :)

Framework Design Guidelines : Conventions, Idioms, and Patterns for Reusable .NET Libraries

 

The author’s blog - Brad Abrams - he is on my current blog reading list.
Eric Evans Domain Driven Design is one of my all time favorite software books. I quote it to other developers and push the concepts in my day to day since my 1st read of it. I was excited to see this today - emailed to me - as a recommendation by Amazon (good job folks).
Applying Domain-Driven Design and Patterns : With Examples in C# and .NET

the author’s Blog

Also - I finished these recently - both are good in the interaction/ UI design space :

The Inmates Are Running the Asylum : Why High Tech Products Drive Us Crazy and How To Restore The Sanity 

 

This is a WONDERFUL book that lays clear the thinks you should be thinking about when doing interaction/ UI design.
The Design of Everyday Things


Go - get readin’!

-Chris

Someone else bashing singletons :)0

Yet another person talking about systems chock-full-o-singletons… And he asks … WHY?

The Highlander Pattern

I would love to excerpt this entire article :) He chats about how ‘popular’ singleton is - and how some other patterns never gor more popular. He talks about the fact that all too often singletons are used as global variables.

Anyhow… Read it - really.

-Chris

A 5D Rubiks Cube-like game .. written in .net :)0

magic cube 5d 

:)

-Chris

Ubuntu 6.06 LTS Releases0

There is a new set of Ubuntu releases available. All the talk about this has been about the “LTS” part of the release name - Long Term Support. Apparently they will be supporting this set of releases for 5 years. This is an effort to convince people that they SHOULD move to these Ubuntu releases ASAP! I find this novel since the company is only 2~ years old - and they are promising to do something for > 2 * their current existence :)

For those unaware -Ubuntu is a ‘Debian spawn’ linux distro that has gained LOTS of popularity in the past ~2 years. I have been (happily) running Suse 10 on one of my primary machines. I think Suse is one of the best distros I have ever seen. ALL linux distros have come along a lot in the past few years and become more ‘approachable’ for the non “super-unix-ite”. That all said - I am going to be setting up an ubuntu server now to get used to that distro and see some of the differences in the debian family of distros. I also will be trying to run Gnome desktop (again). I have been on KDE for some time now, but as I have changed distros over the years, I have toggled back n forth between Gnome and KDE . To be honest - I think I will miss KDE as I DO thing it is overall ‘better’ (ok - I admit better is vague).

-Chris

More static bashing0

I was having more - anti-static debate today with a collegue. It is interesting to me - my collegue is really bright - I will update my opinion if it changes - but I bet he is a great software developer. Those are rare. That said - he loves the static thing :) So - naturally - we have been having some “healthy debate”. Who knows - maybe he will compel me with some of his view-points. Perhaps - as I have with others - I will compel them with my view-points.

As I mentioned the other day - statics are globals… as Stanley Lippman put it:

o The functions that utilize the global variable depend on the existence and type of that global variable, making the reuse of that function in a different context much more difficult.

o If the program must be modified, global dependencies increase the likelihood of introducing bugs. Moreover, introducing local changes require an understanding of the entire program.

o If a global variable gets an incorrect value, the entire program must be searched to determine where the error occurs; there is no localization.

o Recursion is more difficult to get right when the function makes use of a global variable.

From Brian Button :

1) Singletons frequently are used to provide a global access point for some service.

True, they do this, but at what cost? They provide a well-known point of access to some service in your application so that you don’t have to pass around a reference to that service. How is that different from a global variable? (remember, globals are bad, right???) What ends up happening is that the dependencies in your design are hidden inside the code, and not visible by examining the interfaces of your classes and methods. You have to inspect the code to understand exactly what other objects your class uses. This is less clear than it could be. The urge to create something as a global to avoid passing it around is a smell in your design; it is not a feature of globals/singletons. If you examine your design more closely, you can almost always come up with a design that it is better and does not have to pass around tramp data to every object and method.

2) Singletons allow you to limit creation of your objects.

This is true, but now you are mixing two different responsibilities into the same class, which is a violation of the Single Responsibility Principle. A class should not care whether or not it is a singleton. It should be concerned with its business responsibilities only. If you want to limit the ability to instantiate some class, create a factory or builder object that encapsulates creation, and in there, limit creation as you wish. Now the responsibilities of creation are partitioned away from the responsibilities of the business entity.

3) Singletons promote tight coupling between classes

One of the underlying properties that makes code testable is that it is loosely coupled to its surroundings. This property allows you to substitute alternate implementations for collaborators during testing to achieve specific testing goals (think mock objects). Singletons tightly couple you to the exact type of the singleton object, removing the opportunity to use polymorphism to substitute an alternative. A better alternative, as discussed in the first point above, is to alter your design to allow you to pass references to objects to your classes and methods, which will reduce the coupling issues described above.

4) Singletons carry state with them that last as long as the program lasts

Persistent state is the enemy of unit testing. One of the things that makes unit testing effective is that each test has to be independent of all the others. If this is not true, then the order in which the tests run affects the outcome of the tests. This can lead to cases where tests fail when they shouldn’t, and even worse, it can lead to tests that pass just because of the order in which they were run. This can hide bugs and is evil. Avoiding static variables is a good way to prevent state from being carried from test to test. Singletons, by their very nature, depend on an instance that is held in a static variable. This is an invitation for test-dependence. Avoid this by passing references to objects to your classes and methods.

Enough for now :)

-Chris

Imhotep theme designed by Chris Lin. Proudly powered by Wordpress.
XHTML | CSS | RSS | Comments RSS

is cialis or levitra better suggested dose in cialis what colors do valiums come in ex tramadol cialis drug levitra viagra phentermine with online docter consultation viagra news edinburgh comment search ambien no online pharmacy prescription us real valium phentermine for sale without perscription tramadol plus valium plus somas ultram home gym phentermine geberic viagra 50mg valium child custody drug generic generic viagra dose viagra cialis versus regalis valium while pregnant 37.5 card master phentermine amazing blonde fucked cialis order generic ambien 40mg dose of cialis cialis pharmacy direct viagra keyword viagra partial dose meridia online pharmacy phentermine umaxppc xenica viagra treat childhood pulmonary hypertension cialis and adverse effects information about cialis and livetra adipex online sales phentermine purchasing viagra effexor valium contradictions adipex phentermine treetop generic viagra us licensed online pharmacy viagra interaction with doxazosin da li viagra radi description of tramadol hcl-acetaminophen par overnight phentermine huge discounts online pharmacy viagra cialis levitra manufactures ptnrs searchfor viagra viagra impotence pill cialis usa mail crohns phentermine tramadol tramadol a a target blank mexico ambien viagra lawsuit settlements intel ambien modem drivers cialis side effect 0a aan cheapest shops selling phentermine phentermine diet online pharmacy viagra free sites find search pages pcp in urine valium tramadol next day delivery cheap phentermine withouta rx pfizer japan viagra insta phentermine lowest price for phentermine overnight cialis ingredient cialis get viagra pakistanian phentermine ambien on line fed ex german remedies cialis taking elavil and ambien viagra triangle cleveland ohio ambien and celexa drugs mailorder valium adipex meridia online phentermine prescription viagra cialis dizziness cialis liver problems hiv drugs and interactions with cialis weight loss philadelphia phentermine mixing valium with xanax cbs ambien bush fetches george porn viagra girl in viagra commercial gel tab viagra tramadol longterm use eon labs phentermine without a script tramadol meningitis buy phentermine adipex p 37.5mg phentermine no doctor roche valium no prescrption comparing cialis and levitra wine ambien price of valium on the street ambien shipped cod tramadol dosage for dog cheap price on phentermine viagra on-line tinnitus and ambien cr phentermine pharm in stock former senator who did viagra commercials phentermine tetracycline no prescription phentermine cod zanax valium overnight can you take viagra with wellbutrin order phentermine without physicians prescription viagra speedo videos phentermine no rx usa based sites zoloft tramadol interactions birth control allegra acid reflux cialis take phentermine with hydroxycitric acid pain relief tramadol buy viagra in new zealand valium cod buy phentermine cod pharmacy you never mix steroids with viagra ambien imitrex generic cialis tadalafil php ambien and anbien cr difference commview ambien 1low cost cialis get a prescription for viagra herbal ambien ambien cause depression viagra kamagra werkzame bestanddelen sildenafil natural urine detox for valium cialis levitra versus order phentermine adipex phentermine with online doctor los angeles viagra interaction flomax cialis sex story ambien cr 12.5 mg about phentermine best prices on phentermine buy adipex-p phentermine online cheap adipex phentermine tramadol valium together online valium without a prescription adipex diet discount phentermine pill uprima viagra cialis cheapest phentermine prices phentermine mg purchase health phentermine tablet cheap cheap phentermine viagra buy oonline zoloft viagra ejaculation zocor and ambien and interaction cialis levitra viagra comparisons tramadol 50 mg pliva 616 ingredients safe internet shopping generic viagra eng non-prescription valium phentermine with no physcian approval phentermine wihout rx sj lvmord tramadol phentermine and heart rate during exercise phentermine hcl 37 mg tablets drug interactions celebrex tramadol cyclobenzaprine ambien cr coupon about ultram tramadol viagra online money order save ambien cr on line tramadol and vicodin court lawsuits on viagra cialis tadalafil 20 mg viagra best prices fda approved phentermine for overnight and saturday delivery lisinopril viagra interaction valium without precription tadalis cialis tadalafil phentermine purchase phentermine tips tramadol order overnight saturday delivery price comparison for phentermine amp ultram combining metforman and phentermine generic valium and alert generic viagra louisville ky cialis vs viagra forums cheap valium without prescription viagra prescribing information 900 mg phentermine overdose ambien electronics compare cialis prices overseas ambien alternatives by cod tramadol discount phentermine online pharmacy cuba gooding jr cialis commercial 1000 tramadol 1buy cialis generic online generic viagra from canada phentermine no doctor prescription 4.33 n phentermine purchase 99 phentermine cheap viagra generic paypal similar medicines to phentermine phentermine tramadol viagra adipex low cost no prescription phentermine diet diet phentermine pill pill viagra online order cheap cialis for sale viagra damage after 4 hours order phentermine cod overnight delivery by effexor drug interactions with viagra ambien drug interaction ultram relief tramadol fda ambien toxicity buy tramadol online cod cialis free shipping cialis v s viagra phentermine usa pharmacy fda buy valium roche ambien cr review tramadol cicero phentermine pill photos no doctors prescription required phentermine search viagra viagra edinburgh pages online diet pills phentermine no prescription valium withdrawal effects effects of snorting phentermine multiple acts viagra order phentermine online without rx women s natural viagra better phentermine or adipex india phentermine does generic ambien work as well order phentermine no script ambien dwu attorney orange county ca get off of valium buy tramadol cod buy ultram cheapest mail order phentermine ambien used for chronic pain management viagra in kansas city phentermine drug testing tips online prescriptions for cialis boost as viagra phentermine sale 37.5mg express delivery generic viagra viagra news edinburgh tid cfm bad side effects of tramadol coreg cialis photo of ambien free cialis free levitra free viagra ambien generic drug cheap phentermine saturday delivery ups chep phentermine what does it looklike phentermine 30 photos valium 2mg pharmaceuticals viagra viagra epi cialis where cialis viagra softabs forced ejaculation male viagra viagra norvasc drug interaction bootleg pharmacy india phentermine pill my ebay bidding buy tramadol side affects on ambien 5mg overnight fedex ambien prescription celexa phentermine gt viagra help premature ejaculation phentermine success story gt ambien and lawsuit truth about ambien cr phentermine prescribe 15 cialis 20 mg viagra dosge phentermine 90 $149 phentermine wikipedia the c o d tramadol ship everywhere phentermine order generic meltabs viagra cialis drugstores viagra purchase on line tramadol and price generic ambien internet pharmacies phentermine c o d s too many ambien picture of viagra overnight cod phentermine caverta vs viagra phentermine 37.5mg online without rx phentermine problem side effects valium phentermine phentamine keyword viagra phentermine doctor san diego cheapest cialis erectile dysfunction pill price range for the drug viagra diet phentermine ephedra diet pills vitalbodyfitness cost low phentermine tramadol onlines buying ultram online tramadol total purchase phentermine shipped fedex buy valium online canada generic ambien pricing and managed care tramadol urine drug testing buy online us viagra viagra levitra cialis pharmacist perscription drugs online valium prescription take viagra who woman tamadol tramadol 180 pills phentermine hcl 30 mg actos phentermine target pharmacy 3 caverta veega generic viagra phentermine online purchas e penis enlargement pill viagra men order phentermine from pharmacy free consultation cialis commercial song cialis sale can i get viagra by internet tramadol order online cod cialis tadalafil contents arnold cialis phentermine and pulmonary hypertension instructions for valium tramadol hcl dosage phentermines sales ambien cr rebate form lowest phentermine 37 5 prices comparison cialis levitra viagra valium diarheah valium use in pregnancy tramadol famvir allegra cialis tramadol online tramadol hcl tramadol cheap long-term ambien use online order overnight tramadol interaction tramadol warfarin buy phentermine in kentucky questions about viagra find sites computer shop viagra search buy phentermine viagra meridia ultr order viagra air travel php viagra user review cod shipped tramadol phentermine phentremine phentermine aciphex aciphex phentermine actos risperdal little helper valium ambien chemical name generic cialis mexican when will viagra go generic phentermine s xanga site viagra liver problems cheap pharmaceutical viagra does the drug phentermine phentermine no prescription free consultation female free sample viagra prescription weight loss medications phentermine adipex cheap viagra cialis buy viagra online canada ionamin phentermine orn viagra generic for ambien cr no script next day phentermine valium grapefruit online sales viagra buying online risk viagra tramadol injection half life cialis levitra viagra comparison ambien sleep product discount viagra brand drug phentermine actos imitrex good deals on viagra flushed feeling and tramadol phentermine for cheap online pharmacy loss phentermine weight rss feed ambien recreational ambien alternative order viagra cialis levitra pharmacy seizures from tramadol cheap tramadol cod saturday delivery canada buy real viagra online phentermine with hoodia viagra commercial clips phentermine online diagnosis viagra best deals ambien login sleeping pills zolpidem ambien diet inexpensive phentermine pill zocor and avoid and ambien phentermine from germany buy levitra viagra phentermine health index pravachol phentermine skelaxin canadas viagra commercial familydoctor org sildenafil viagra phentermine $99 no script buy phentermine adipex p online phentermine overnight fedex no prescription 37.5 rainbowpush discussion board buy viagra 37 5mg phentermine pcp specialist thanks to ambien buy viagra without prescription side affects of viagra buy xanax valium viagra free sample valium and prozac cheap phentermine cheap phentermine online here cialis in uae k-9 tramadol hcl purchase valium c o d where can i buy viagra dogs and ambien online pharmacy no prescription required phentermine viagra vs levitra 37.5 90 phentermine drinking alcohol with tramadol viagra cialis buy no prescription buying phentermine online us licensed pharmacies phentermine erection add cardizem cd actos phentermine norvasc cialis tablet phentermine metabolized by pictures pills phentermine lose weight prozac phentermine cialis causes lower blood pressure viagra mice recall for ambien cr tadalafil vs generic viagra viagra levitra comparison phentermine to canada viagra cialis online pharmacy buy card debit online phentermine where can i order phentermine prices of viagra and cialis buy cheap generic viagra online tramadol and alcohol free viagra canada valium to treat canines phentermine foradil phentermine evista no prescription phentermine 15mg phentremine cialis and levitra compare viagra discount viagra prescription drugs viagra cialis canada consultation online pharmacy phentermine ambien mg doses will tramadol test positive for methadone effects of ambien on fetus phentermine cod pharmacy online viagra h omepage valium valium viagra love feelings order phentermine without calling doctor online pharmacy phentermine no prescription nasacort aciphex aciphex phentermine prescription pharmacy phentermine no prescription no doctor better levitra viagra viagra gift tramadol advil ambien heart disease cialis viagra propecia levitra erectile dysfunction cialis fast shipment cialis viagra online pharmacy tramadol crystal meth mexican prescription drugs names ultram tramadol 4.01 online phentermine purchase valium and purpose viagra 24 hours delivary discounts for phentermine cialis generic levitra review viagra phentermine review headaches when taking phentermine brown urine valium cialis fee online what is tramadol 3f no prescription valium overnight delivery detox hgh phentermine quit smoking xenical cialis cheapest lowest price phentermine chemical enhancement phentermine website impurity related substance viagra disounted phentermine canada buy viagra online valium gentic phentermine forums discussion phentermine no shipping to kentucky valium online consultation ambien books generic online phentermine pharmacy online order viagra online a href cheapest phentermine no presc tramadol side affect ambien for 49 95 phentermine cod mastercard viagra overseas information phentermine edinburgh uk viagra search cialis charles phentermine at cms ambien sirius commercial compare diethylpropion and phentermine valium look like order generic cialis c o d tadalafil cialis vs viagra tramadol and clonidine kill yourdelf with ambien zolpidem vs ambien cialis tadalafil treat where to buy phentermine without prescription fedex valium viagra in india tramadol cat medication buy phentermine blue white capsuls online cheap generic kamagra kamagra uk viagra ripoff phentermine websites long term effect ambien on liver viagra safe for dogs diazepam overdose valium overdose ambien insomnia side effects bbs bbs valiums viagra half life filing income tax buy tramadol valium and darvocet interaction rx cod valium usa cialis and levitra viagra made site viagra selges online rx phentermine tramadol halflife drugstore ambien order tramadol cod non phentermine prescription xenical hgh phentermine quit smoking grapefruit and cialis phentermine mexico ebay dding buy viagra viagra online diagnosis discover viagra best pharmacy phentermine tramadol hci black box warnings doctors prescribing phentermine online getting valium out of your system viagra ambien gift generic online pharmacy viagra phentermine and pharmacy will alcohol effect viagra dj valium omen 3 diet pill addiction phentermine viagra vs nitro 180 tramadol viagra instuctions tramadol trammadol metformin viagra comparison viagra levitra cialis discount drugs viagra 100mg cheapest ambien online generic phentermine pharmacy online dosage for tramadol valium information from drugs com phentermine where to buy 3 99 order ambien from canada phentermine detection tramadol best price oversea valium heavy sedation bournemouth buy from viagra take tramadol while breast feeding buy tramadol online cod ultram tramadol ultracet online accept paypal tramadol acetaminophen legal no prescription phentermine tadalafil citrate cialis valium 5mg doseage cheapest get phentermine tranxene vs valium 1buy generic cialis ambien online orders finasteride viagra australia in sale viagra girls on viagra cheap tramadol sales us ambien sleep walking generic viagra viagrageneric depression tramadol ambien 25 mg