March 2010 Newsletter
The chief lesson I have learned in a long life is that the only way to make a man trustworthy is to trust him; and the surest way to make him untrustworthy is to distrust him and show your distrust. –Henry L. Stimson
If you want to go quickly, go alone. If you want to go far, go together. –African Proverb
The world is wide, and I will not waste my life in friction when it could be turned into momentum. –Frances Willard
Every now and then go away—for when you come back to your work your judgment will be surer. –Leonardo DaVinci
I'm not a genius. I'm just a tremendous bundle of experience. –R. Buckminster Fuller
Coming together is a beginning, staying together is progress, and working together is success. –Henry Ford
There is a wisdom of the head, and a wisdom of the heart. –Charles Dickens
People do not decide to become extraordinary. They decide to accomplish extraordinary things. –Edmund Hillary
On two occasions I have been asked [by members of British Parliament], 'Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out?' I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question. –Charles Babbage
Undoubtedly, cloud computing is one of the disruptive technologies reshaping IT, so it’s just a matter of time before business folks start asking how their IT is going to use it. Here are some suggestions about explaining a taking-it-slow approach.
One of the most important aspects of agile development adoption and success is in getting all of the project team members to understand and embrace their new roles. This book excerpt explains the differences in roles when Scrum methodology is used.
While the whole imperative versus functional programming debate gets a lot of attention, this author brings up a very key point: the greatest opportunity for improving memory usage and overall throughput would be to use asynchronous programming concepts. He emphasizes that while many languages don’t make this easy, programmers need to start thinking about co-routines and what he calls “lightweight processes” in all of their work. Python has a proposed enhancement for asynchronous execution.
This article presents a nice way to stratify the various levels of requirement detail for any sort of development project, whether you are using agile techniques or not. It defines the top-down structure of vision à goals/outcome à features (“cohesive chunks of business value”) à stories.
Non-functional requirements, which are sometimes called the “ities”, are often just as important to the users of a system as the functional requirements. However, developers and analysts often give non-functional requirements little attention, many times because they are difficult to nail down. This article gives you some good ideas about how to quantify these requirements effectively.
There are probably as many definitions of “software architect” as the number of people that you ask. However, this author takes a very pragmatic approach to differentiating the skills and responsibilities between architects and developers.
In this response to an empirical study about test-driven design (TDD) effectiveness, this author provides some specific personal examples using common programming tasks to demonstrate the value and pitfalls of TDD. Hopefully, his comments will help you avoid some of the tragic mistakes of TDD.
In this article, from an MIT special report on IT-driven innovation, the author says that the reason IT has lost respect from the business is because they don’t innovate and don’t work at creating business value.
One of the key principles of Six Sigma programs in manufacturing is the concept of “area of opportunity” for a defect (e.g., entire circuit board versus a single solder joint). This author applies a similar principle to software by defining a taxonomy with 5 levels of opportunities for mistakes to occur causing introduction of bugs.
Joel Spolsky says that one of the greatest services that testers can provide is to giving developers immediate feedback on their work that otherwise they might have to wait months (or longer) to get from customers. This allows the development process to be corrected and tuned before significant problems occur.
I certainly don’t want to put any software testers out of a job, but this brief article raises a good point about streamlining the development process by using TDD to prevent unnecessary back-and-forth between development and test.
Unless you are hermit, by now you’ve heard all that you probably want to about Toyota’s recent quality problems. This article explores the software quality angle of this situation and how they mismanaged it, because it wasn’t a hardware problem that they usually handle well.
Most software development professionals acknowledge the value of modeling an application before fully implementing it. However, modeling is not often done, not usually because it takes too long or costs too much, but because developers don’t understand how to do it. This free online course is a comprehensive OOP modeling tutorial that includes explanations and self-tests to confirm understanding.
The term “monad” is tossed around loosely (and frequently) in functional programming circles (and elsewhere!), but many developers don’t understand what it means or how monads are really used. This excellent, comprehensive tutorial explains them using examples from Scala and C#.
You might call this article “the absolute minimum that any web programmer should know about design”. Basically, the author lays out, with a good example, how to apply some simple and minimal CSS to provide nice, clean lines to your web application.
So most of us probably don’t write applications that communicate directly via HTTP, but it’s still useful to understand what goes on behind the scenes when you click on that URL link.
Are you a PHP developer who has heard about Python, but don’t know what all of the interest (or hype!) is about? This article explains, with copious examples, some of the key advantages of Python by using some common PHP metaphors.
This interactive map from the NY
Times shows the unemployment rate across the
Hardly anyone would deny that poor communication in organizations is one of the leading causes of problems and frustration. This is an excellent literature review that explains the psychosocial mechanisms behind this phenomenon and offers some tips on what to do about it.
Here’s some information that you can give your boss the next time you get caught staring at the insides of your eyelids. UC Berkeley researchers have found that a 90-minute daily nap can help improve learning later in the day.
Most managers use the conventional wisdom that workers are motivated most by recognition. However, new research “shows that making progress in one’s work—even incremental progress—is more frequently associated with positive emotions and high motivation than any other workday event.”
When it comes to having a purpose in your work, one of the greatest demotivators is having poor balance between work and life. Technical professionals often have some of the greatest challenges in this area. This article offers 10 ideas for getting back into equilibrium.
Any type of job discrimination is unacceptable, but IT has a long reputation for surreptitious discrimination against older workers. This article points out that the whole dynamics around this topic are very hard to completely understand.
Some new psychological research indicates that people who approach a task in specific concrete terms are less likely to procrastinate than those who view it in a more abstract sense. At the same time, sometimes procrastination reaps benefits.
In this first-person account, Paul English, founder of online travel site Kayak.com, explains his daily routine. One notable practice is that he requires the Kayak developers and programmers to routinely take customer support calls to help them understand the consequences of design and implementation decisions.
Next to a good resume (which we talk about quite a lot here!), having an impactful cover letter is one of your best tools in "cold call" job hunting. This article offers some great, but simple tips. My favorite is the concept of having multiple cover letter "templates" for various situations and then using the best parts of all of them to refactor into the best base template.
This item might have been better suited for the Just For Fun section, but I think it belongs here. This author lists over two dozen of the “flavors” of developer personalities. You’ll probably recognize some of your coworkers—and yourself—on this list.
Level 3 shows up on this survey of top Ethernet providers to business, which is led by AT&T. Companies on the list have at least 4% market share for Ethernet services.
Analyst company In-Stat reports that nearly 80% of U.S. businesses will be using VOIP by 2013, almost double the rate in 2009. Likewise, hosted IP Centrex has now surpassed Broadband IP Telephony as the leading carrier-based VOIP platform.
A technique called network coding, which involves network routers to mathematically combine multiple packets using randomization into a hybrid “superpacket”, can make network transmission more efficient.
In advance of the FCC’s national broadband proposal, they have released their latest report on broadband use. While cost is still a significant factor in preventing broadband adoption for over 90 million people, a significant number of people apparent don’t want to get on the Internet.
Most people think that modern telecommunications began with Alexander Graham Bell. However, this article shows that Bell was the recipient of many advances from less well-know, but equally important, people that led to the telephone.
At the beginning of the decade, here’s a nice visual of the statistics of the global Internet. Although, it doesn’t really address Internet addiction.
Given all of the other issues recently (economy, health care, earthquakes, and more), perhaps you thought network neutrality had fallen off the plate. In a YouTube video, President Obama states that he still supports it.
Every once in while (or maybe even more often!) you need a “special character” for a document you are writing. On Windows, you can fire up the Character Map application or you can try to remember the keyboard “shortcuts”. Or you can just go to CopyPasteCharacter.com and click on the character you need and just paste it right in. It supports copying multiple characters at once and you can even choose to copy the associated HTML entity tag instead.
InfoDesk is a fantastic multi-function (and it really has many functions!) utility. The main window features CPU and memory utilization and basic date and time displays. Inside the application, it has built-in scientific calculator, notepad, console (command prompt), calendar with astronomical data, window explorer (shows properties of “target” window), clipboard history, and much more.
StExBar adds a simple toolbar to Windows Explorer with lots of functions that Microsoft forget, including copy the file name or path to the clipboard, regex-based renaming of multiple files, opening a Command Prompt in current folder, and searching the folder. You can even add hotkeys for each utility and add your own custom buttons to launch your favorite application or utility.
If you sometimes get distracted from what you are working on due to many open windows or clutter in the window you are using, CinemaDrape is for you. It blanks out everything on the screen except for the area that you are using, such as a video or editing area.
Listary is a cool little add-on for Windows that turns any list control (listbox, drop-down list, etc.), including in Windows Explorer, Registry Editor, and more, into customizable power tool. You can select items in the list by name, including wildcards, and it supports tab completion. Likewise, it has configurable hot key support.
Automatic spell checking in word processors has spoiled us. Don’t you wish that you could have spell checking in every application? With tinySpell you can! Some of the great features include visual and audio alerts to mis-spelled words, display of dropdown list of recommended replacement words, spell checking in the clipboard, quick access to online reference tools (thesaurus, search, and encyclopedia), and much more.
While most of the various UML diagrams are useful in various situations, sequence diagrams are frequently the most valuable in sorting out inter- and intra-system interactions. This free online tool lets you create sequence diagrams using simple text syntax. It then draws your diagram using one of many styles and you can even export the diagram as a PDF file.
The normal way to replace calculated values from formulas with their values in MS Excel 2007 is to select the range, copy them (<Ctrl>+C), and then choose Paste Special and specify Values in the Paste Special dialog box. But there’s an easier that avoids the Paste Special dialog altogether: Select the desired region as usual, right-click and drag on one of the borders of the selected area and then drag back to the original selection area. Excel will display a context menu. Choose the Copy Here as Values Only option. And check out the other options, such as Copy Here as Formats Only.
We use currency (paper money—actually it’s made of cotton and linen fiber!) everyday, but have you ever looked at a bill careful to see what all is on it. Quite a few interesting things to discover!
This site bills itself as “wondrous, curious, and bizarre locations around the world” and that is a fitting description. Take virtual tours of some the strangest places on the planet from the comfort of your computer.
Do you consider yourself a geek? Not sure? Then check out this list of 27 things that all true geeks must know.
Watch each of the live-action and animated short films nominated for 2010 Academy Awards. Which one do you think will win?
Have you been searching high and low for a good CSS framework that doesn’t cramp your style (pun intended!)? This might be just the framework that you need. It even includes styles for tables and forms. ;)
Very few languages still exist that don’t “borrow” words from other languages. This project catalogs these so-called “loanwords” in 41 languages based on a 1 - 5 scale of the likelihood that the word originated in a different language. For example, check out “plastic”.