‘Tell Don’t Ask’ isn’t a new idea -- it’s been around for some time under other guises. In the OO world I’ve seen it called “Objects Do Things”, and a long time ago when I was a Windows SDK C++ programmer it was called “Objects Aren’t structs”. But what is the idea really getting at?
Traditionally there have been two schools of thought about design: Predictive design, trying to design everything upfront (and making lot of wrong decisions) and reactive design, where any design is only done if it is absolutely necessary for implementing a feature. But there's another option...
The DevOpsDay conference scheduled for April 2-3 2012 in Austin, TX. Several sessions are now up for you to see, and then there's this... song... well, you'll just have to listen for yourself. I laughed long and hard.
Feature toggles create a distinction between deploying your feature & making that feature available for use. They also remove the requirement that to disable a feature, or to go back to ‘old behavior’ you have to rollback your deployment to an older version of code. This article features a list of resources on the challenges and benefits of feature toggles.
Funny story... The creators of JSON decided it would be cool to stick a 'Don't be Evil' clause in the MIT license of JSON.org. Although the devs probably thought it was cool, the lawyers have to take it very seriously.
JMS providers like ActiveMQ are based on the concept of passing one-directional messages between nodes and brokers asynchronously. A thorough knowledge of the type of messages that can be sent through a JMS middleware can simplify a lot your work in mapping the communication patterns to real code.
Previously I described how I tested formatting in an Eclipse editor. Now I know that I can use INodeModelFormatter to unit-test formatting, which makes the creation of formatting tests easy, without the need for any UI during the test execution.
One of the fears people have with Node is the callback model. Node operates as a single thread: you must never do any work, especially any I/O, that blocks, because with only a single thread of execution, any block will block the entire process.