November 2009 Newsletter
A general is just as good or just as bad as the troops under his command make him. –Douglas MacArthur
Simplicity is not the goal. It is the by-product of a good idea and modest expectations. –Paul Rand
If you have a job without any aggravations, you don't have a job. –Malcolm Forbes
The value of a man should be seen in what he gives and not in what he is able to receive. –Albert Einstein
Don’t be afraid of opposition.
Remember, a kite rises against, not with the wind. –
The way to combat noxious ideas is
with other ideas. The way to combat falsehoods is with truth. –William O.
I have just three things to teach: simplicity, patience, compassion. These three are your greatest treasures. Simple in actions and in thoughts, you return to the source of being. Patient with both friends and enemies, you accord with the way things are. Compassionate toward yourself, you reconcile all beings in the world. –Lao Tzu
It is a seemingly-immutable law of software development that
methodologies evolve over time. As agile
development techniques become more mainstream, InfoQ reviews some of the current concepts and techniques
of agile.
http://www.infoq.com/articles/current-direction-of-agile
Computing resources have moved into the realm of commodity and this
requires a completely different mindset and approach to how to allocate and
manage them. This article is about the
new economic paradigm called “Freeconomics” (not to be confused with “Freakonomics”)
which is discussed in more detail in Chris
Anderson’s new book FREE. But it’s
not clear if enterprise
software will adopt this model or not.
http://www.wired.com/techbiz/it/magazine/17-07/mf_freer
Successfully implementing agile software development methodologies is
more about the “soft skills” than about the technical aspects. This author says that the appropriate “social
contract” hinges on commitment and a disciplined implementation approach.
http://www.ddj.com/architect/220900441
In this presentation, the author
makes a strong case for programming (and computer science and software
engineering) to move from an anecdotally-driven discipline to an
empirical-evidence-based field that relies on examination and citation of
evidence along the lines of the scientific method
for making and supporting claims.
http://www.slideshare.net/gvwilson/bits-of-evidence-2338367
Even though the title of this article refers to “agile”, these principles
are applicable to most any software development methodology or
environment. I would say that these are
more “best practices” than “hints”.
http://www.pmhut.com/26-hints-for-agile-software-development
The former CEO of Medtronic talks about what makes a successful CIO. He says that difficult economic times can
actually be an advantage for CIOs, because it allows
them to demonstrate and communicate
the value of IT to the business by balancing
innovation and cost-reduction.
http://www.cioinsight.com/c/a/Expert-Voices/A-CEO-on-CIOs-Get-Out-And-Lead-259763/
Using the anti-pattern concept, this author presents some great ideas
about how to be more successful developer, including improving efficiency and
quality.
http://stevesmithblog.com/blog/principles-patterns-and-practices-of-mediocre-programming/
This site provides a retrospective on the 15th anniversary of the
publication of the classic Gang of
Four book Design Patterns. It includes an interview with three of the
authors and an explanation by the authors about why they wrote the book.
http://www.informit.com/promotions/promotion.aspx?promo=137416
Ready for a new paradigm in human-computer
interaction? A new multi-touch concept called 10/GUI has
come out that very elegantly combines the standard keyboard and mouse with
multi-touch.
http://www.techcrunch.com/2009/10/13/10gui-one-very-slick-desktop-multi-touch-concept-video/
Two
Norwegian researchers review the recent literature on agile development and
present a comparison of the consensus (if there is such a thing in agile
development!) concepts with traditional methodologies. Likewise, they discuss the trends in agile
development.
The CIO of the US Tennis Association (the folks that put on the US Open
tennis tournament) says that they never have failed projects for one simple
reason: They demand that each project
have a business sponsor who is accountable for requesting the funding and
helping to manage the effort.
Many of you are probably familiar with the ongoing debate about whether
programming is an art or science. This
author makes a strong argument for a middle ground of artisanship (or perhaps
craftsmanship), because software is handmade and cannot be (as far as I know!)
mass produced.
As multi-threaded programming enters the mainstream (Just think about the
fact that most new desktop and laptop computers come with multi-core processors!),
programmers need to adapt their skills to avoid the esoteric
concurrency bugs that are notorious.
In this article, the author points out that “thread safe” is only true
within the context for which the application was intended and when the threaded
components are properly used.
http://blogs.msdn.com/ericlippert/archive/2009/10/19/what-is-this-thing-you-call-thread-safe.aspx
This article emphasizes that the customer defines quality and that the development organization needs to listen to what the customer wants and how they state their expectations. In addition, the author talks about how the “good enough” revolution is expanding into many facets of life.
http://www.cindyalvarez.com/blog/decisionmaking/you-dont-get-to-define-quality
A software developer at Microsoft Research charged with creating a triage system of software bugs expanded his investigation into some empirical studies of some of the “common knowledge” in software development. Among the myths that he debunks are increased code coverage of tests doesn’t inherently improve quality, that TDD really does work, assertions do improve quality, and much more.
http://research.microsoft.com/en-us/news/features/nagappan-100609.aspx
This author considers that until quality performance requirements and metrics are part of contracts for software development/delivery, it will never get the appropriate priority and attention.
http://www.informit.com/articles/article.aspx?p=1401642
This article provides some great suggestions for how to transition from testing in traditional (e.g., waterfall) methodologies to agile development. In particular, it gives guidance for how to deal with short test cycles.
http://searchsoftwarequality.techtarget.com/tip/0,289483,sid92_gci1371508,00.html
In this excerpt from his new book Exploratory Software Testing, James Whittaker makes the case that manual testing is not only necessary, but one of the challenging and rewarding careers in IT. He emphasizes that, even with the overwhelming push toward test automation, nothing can replace good manual testers.
http://www.informit.com/articles/article.aspx?p=1398775
A software development project manager outlines his 20 principles for successful software testing. Some of them are philosophical, but most are very practical. My favorite: Only a high quality software testing process will result in a high quality software testing effort.
http://hubtechinsider.wordpress.com/2009/09/24/the-twenty-laws-of-testing-computer-software/
How do great athletes (think Tiger Woods!) and musicians get to the top of their domains? It’s all about hours and hours of practice. Developers need to practice their art and craft, as well, to improve their skills. That’s the concept behind Coda Kata: Little programming puzzles or tasks that stretch your brain and skills to help you uncover the nooks and crannies of the programming language, IDE, toolkits, etc.
http://codekata.pragprog.com/2007/01/code_kata_backg.html
JavaScript is ubiquitous for client-side scripting in web applications (and it’s making in-roads on the server side too). Here are some common design patterns applied to JavaScript to make your code more reusable.
http://www.klauskomenda.com/code/javascript-programming-patterns/
This brief, but comprehensive tutorial gives great guidance on how to implement TDD from scratch. It examines not only the techniques, but the philosophical underpinnings of TDD.
http://www.scribd.com/vacuum?url=http://flea.sourceforge.net/TDD_in_a_nut_shell.pdf
Most application developers treat network capacity and availability as an infinite resource, even though they know better. This excellent tutorial explains network capacity and its impact on application performance and robustness. In addition, the author emphasizes that developers need to think about packets as the least common denominator and design applications accordingly for best network performance.
http://developer.yahoo.net/blog/archives/2009/10/a_engineers_gui.html
Lambda calculus is the mathematical foundation of functional programming, including functional programming languages like Lisp and Scala. This tutorial introduces the basic concepts of lambda calculus with some relevant examples
http://safalra.com/science/lambda-calculus/
Most interviewing articles focus on how you should prepare to answer the questions from the prospective employer. But part of your preparation should include some questions of your own to show your interest in the position. This article has some great, open-ended questions that you can ask.
http://www.lifehack.org/articles/communication/seven-great-questions-to-ask-at-a-job-interview.html
Tech culture observer Clive Thompson notes that most organizations emphasize the “go-go-go” mentality and that innovation suffers without some time just to think and put things in context. Maybe daydreaming isn’t so bad after all!
http://www.wired.com/magazine/2009/10/st_thompson/
Researchers have demonstrated that the hippocampus is important in solidifying memories during sleep. I think I’ll use this information as an excuse for napping at work!
http://web.mit.edu/newsoffice/2009/memories-0624.html
One of the recent buzzwords is crowdsourcing, which is the concept that a product (particularly software applications, such as open source) better meets user needs and has higher quality when many people are involved. This article punches some holes in that idea and emphasizes that most of the innovations still come from a dedicated few people involved with an effort.
Being out of work is one of the most stressful situations that you are likely to ever face. Here are some fantastic tips to make the most of your search for a new job and to survive the interregnum in employment.
http://www.careeroverview.com/blog/2009/100-incredibly-helpful-lifehacks-for-the-unemployed/
You’re eyes probably already started glazing over when you read the title of this article. But the P versus NP problem is gaining importance as computers becoming increasingly powerful. And you might just gain a few tips about how to reduce algorithmic complexity by considering some of the implications of this problem.
http://cacm.acm.org/magazines/2009/9/38904-the-status-of-the-p-versus-np-problem/fulltext
It seems like we frequently hear that the demise of e-mail is just around the corner. This article says that social networking tools like Twitter and Facebook and the new Google Wave application are the “killers”. Personally, I don’t see e-mail going away anytime soon.
http://online.wsj.com/article/SB10001424052970203803904574431151489408372.html
Almost everyone faces burnout at one time or another. Here are some tips to get back into the swing of things when your motivation wanes. Interestingly, a number of these suggestions are along the lines of agile and lean development principles.
http://zenhabits.net/2009/10/how-to-defeat-burnout-and-stay-motivated/
Perhaps Apple is built on a “cult of personality” around Steve Jobs. Nevertheless, even in these difficult economic times, Apple continues to succeed financially. This author says that success in difficult times is the mark of a leader (as compared to just a “manager”).
http://blogs.techrepublic.com.com/tech-manager/?p=2269
All of us could probably improve our effectiveness and likeability if we would just keep our mouths shut once in a while and really listen to what others are saying. This will pay dividends on both our personal and professional endeavors.
http://www.dumblittleman.com/2009/09/master-art-of-listening-and-watch-all.html
Teddy Roosevelt was a voracious reader. But, it’s not just about reading quickly, but about understanding and retention. This article provides some tips and pointers for improving your reading speed and comprehension and how to use some of the online speed reading training tools like Spreeder and Speed Reading Online.
http://artofmanliness.com/2009/10/18/how-to-speed-read-like-theodore-roosevelt/
Some of you may remember the H-P ads from the 1980s where their tag line was, “We never stop asking ‘What if…?’” Innovation researchers say that this is the essence of innovation, as well. Innovators continue to ask questions and challenge the status quo.
http://blogs.harvardbusiness.org/hbr/hbreditors/2009/09/how_do_innovators_think.html
The CTO of Verizon says that with the incredible growth in bandwidth consumption providers will have to shift to usage-based pricing models similar to those of wireless Internet packages.
http://gigaom.com/2009/09/29/metered-broadband-is-the-future-verizon-cto/
Project CCNx is an early-stage open-source research project sponsored by PARC and Google that aims to improve network performance by replacing the named hosts (end points) with named content as the primary abstraction. This is intended to preserve the advantages of TCP/IP, such as simplicity, scalability, and robustness, but address the shortcomings of packet-based networks.
Browser Chooser is a small background utility that sets itself as the default browser on your system. That way, when you click on link, Browser Chooser steps in and allows you to use any web browser that you have installed on your system to open the link. Works with (at least) Internet Explorer, Firefox, Google Chrome, Opera, and Apple Safari.
http://browserchooser.codeplex.com/
Printliminator is a free bookmarklet that you can add to your web browser to apply your own styling to a page before printing it. Just click the bookmarklet and select to remove graphics (including video) or change the text styling for printing. Works with any web browser with JavaScript support enabled.
http://css-tricks.com/examples/ThePrintliminator/
Ever get frustrated when a co-worker sends you a project plan in MS Project format, but you can’t open it, because you don’t have MS Project. Well, MOOS Project Viewer to the rescue! I can open any MS Project file format (XML, MPT, and MPP) from MS Project versions 2000, 2003, and 2007. And it can display all of the common project plan views: Gantt chart, task sheet, resource sheet, and more.
http://www.ms-project-viewer.com/
This is a handy set of add-ons for Excel that include some great tools for editing charts and graphs, data analysis functions including one- and two-way ANOVA, and special paste functions and improvements to undo.
http://xltoolbox.sourceforge.net/
If you have a large monitor and many application windows open, but need to arrange your desktop effectively, GridVista is a really great option. It allows you to define multiple independent areas on your screen from one up to four, to change the transparency of windows, and drag-and-drop windows between the various sections.
http://www.softpedia.com/get/System/OS-Enhancements/Acer-Gridvista.shtml
If you frequently work with people on the other side of the world, it’s quite useful to know what time it is their locale. MS Outlook 2003 and 2007 can both display a second time zone in the Calendar. To enable the second time zone, choose Tools | Options… from the main menu. In the Options window, choose the Preferences tab and click Calendar Options… In Calendar Options window, click on Time Zone… In the Time Zone window, check (enable) the Show an additional time zone option and select the desired time zone. Also, you can set names for your time zone and the other time zone. Press OK three times to save your changes. To more quickly access the Time Zone window, you can right-click on the time scale of the single day calendar view and choose Change Time Zone…
MS Outlook 2003 allows you to set the default format of new messages to plain text, HTML, or rich text formats. However, you can easily override the default for a new message by choosing Actions | New Mail Message Using à from the main menu. With this option, you can even choose an e-mail with embedded Excel worksheet or other MS Office document type as the body or select special stationery to use for the e-mail.
This beautiful graphic shows the history and relationships of space exploration efforts over the past half-century.
http://www.stevey.com/wp-content/uploads/2009/01/50-years-exploration-huge.jpg
Everyone (at least I think everyone!) likes to think of themselves as a moral person. But measuring morality is often difficult. In this web-based test, you are presented with 10 different moral dilemmas and asked to judge the morality of the actions in each scenario.
http://moral.wjh.harvard.edu/index2.html
Even though David Allen Coe mourned Mona Lisa losing her smile, it turns out that her changing from happy one moment to somber the next is actually an optical illusion. Leave it to Da Vinci!
http://www.newscientist.com/article/dn18019
Any of my readers over the age of 35 are probably familiar with the little blue (oxygen deficiency?!) cartoon characters called Smurfs. But here are some facts that you probably didn’t know. And if Spongebob Squarepants is more your speed, here are some out-of-the-ordinary tidbits.
http://www.mentalfloss.com/blogs/archives/38069
Unless you were a fan of the Apple ][ computer, the name Paul Lutus is probably unfamiliar to you. Lutus wrote the amazing (for its time, of course!) Apple Writer word processing program. It was the first software that I ever bought; it cost $120 (in 1980), which wasn’t a lot compared the $2500+ that I paid for the Apple ][ with 48kB of RAM plus a monitor and an Epson MX-80 dot-matrix printer! This article tells about how Paul got into writing software in a cabin in the woods. And he’s still at it, although in less humble surroundings now.
http://www.atariarchives.org/deli/cottage_computer_programming.php
This is an interesting (and prescient) discussion thread from January 1985 about the Y2K “bug”. We are all pretty much familiar with the Y2K38 bug, but I had forgotten about the Y2K79 problem. (It’s a little bit eerie that this is exactly 2000 years after the destruction of Pompeii and Herculaneum by Vesuvius in 79 AD.)
http://groups.google.com/group/net.bugs/browse_thread/thread/64696a1b035aab72/9d78b6a94111c70e