October 2009 Newsletter
Enjoy when you can, and endure when you must. –Johann Wolfgang von Goethe
In preparing for battle I have always found that plans are useless, but planning is indispensable. –Dwight Eisenhower
Civility costs nothing and buys everything. –Mary Wortley Montagu
Some of the world's greatest feats were accomplished by people not smart enough to know they were impossible. –Doug Larson
The world we have created is a product of our thinking; it cannot be changed without changing our thinking. –Albert Einstein
A pinch of probability is worth a pound of perhaps. –James Thurber
The only place where success comes before work is a dictionary. –Vidal Sassoon
Be kind, for everyone you meet is fighting a hard battle. –Plato
Often, getting the functionality of an application is the “easy”
part. Optimizing and improving
performance is no longer optional for most systems, but is usually quite
difficult. This interesting approach to optimization
using Goldratt’s Theory
of Constraints gives some fresh perspectives on how to target bottlenecks.
http://www.ddj.com/development-tools/218101302
What do you think is the most important agile practice? Daily standup meetings? Burndown charts? This author says that showing respect to
everyone is most important because success with agile development depends on
good working relationships. And I think
it’s a good idea, even if you don’t work in an agile shop!
http://www.skorks.com/2009/08/the-most-important-agile-practice-of-all/
This excellent article discusses the common conundrum of when design stops
(or should end) and when implementation/construction begins and how
to determine the separation of activities.
While starting with some philosophical arguments the author goes on to
the practical matters as they apply to real software development.
http://www.osnews.com/story/22135/The_Problem_with_Design_and_Implementation
Industry analysts are coalescing around a new approach for IT enterprise
architecture they are calling “emergent architecture”. (Maybe it should be called “post-modern”!) This new approach is intended to help bridge
the divide between IT and business and allow IT to be more responsive to
business needs. Likewise, others promote
the concept of organic
development of architecture as a result of a good, sound development process.
http://www.infoq.com/news/2009/08/Emergent-Architecture
Projects fail
for a variety of reasons, but most of them are not technical in
nature. This author says that projects
usually fail due to incorrect expectations most of which result from poor
communication. He goes on to identify
seven key factors that make or break a project.
http://blogs.zdnet.com/projectfailures/?p=5934
One of the most difficult and unpredictable aspects of software
development is debugging. This article
proposes a disciplined debugging process using the model of medical diagnosis
and the scientific method.
http://www.embedded.com/columns/breakpoint/220100899
Just like any kind of change, adopting agile development techniques is
likely to be met with some amount of resistance. Here are some of the common difficulties that
developers may have with agile with some suggestions for resolving them. One of the items is opposition
to doing pair programming.
http://damonpoole.blogspot.com/2009/09/management-top-ten-things-programmers.html
With all of the different new (agile) methodologies out there, how do you
make heads or tails of them? This
article gives succinct, but clear explanations of some of the common
methodologies. And it even includes a
great chart to help visualize the differences.
This author proposes that innovation is a passé relic of the industrial
age and it should be replaced by what he calls “awesomeness”. He says that awesomeness is built around four
core principles: ethical production,
insanely great stuff, love, and thick value.
While certainly these ideas are targeted toward startups, the same
concepts can be applied to IT development in corporate environments, when
people start focusing on customers.
http://blogs.harvardbusiness.org/haque/2009/09/is_your_business_innovative_or.html
This author suggests that the primary benefit of agile development
practices is not the delivery of functionality to customers more quickly, but
how it forces IT to change it’s organization to reduce
risk, speed development, and improve quality.
http://cacm.acm.org/blogs/blog-cacm/40796-frequent-releases-change-software-engineering/fulltext
In the first couple of chapters of this new book, the author emphasizes
that good communication is the most important factor for success in
development projects. He goes on to
explain that common terminology between business and IT is how to achieve good
communication and recommends “specification
by example” as the most effective means of documenting requirements and one
of the linchpins of test-driven development (TDD).
http://www.acceptancetesting.info/the-book/
Pundits (and just plain folks alike!) have been predicting the imminent
demise of Java pretty much from it’s
beginning almost 15 years ago. This
comprehensive and well-presented article takes another look at this question
from a variety of angles. The author’s
conclusion is that Java is not dead,
but the Java era is certainly coming to a close, but the future of the JVM seems bright.
http://codemonkeyism.com/java-dead/
A software testing professional looks at the role of the test function in agile projects. He maps out some very suggestions for early involvement of test and how testing contribute throughout the project.
http://www.pankajnakhat.com/agile-testing/08/a-tester%E2%80%99s-perspective-on-agile-projects/
I suppose that the definition of quality is kind of like Justice Stewart’s definition of obscenity: “I know it when I see it.” Nevertheless, this article gives good definitions of some of the quality characteristics of applications.
http://php.jglobal.com/blog/?p=209
New software tools for testing and QA focus on metrics and measurement, such as code coverage. Likewise, these tools are now looking for defect patterns and the underlying cause of such problems.
http://www.sdtimes.com/link/33688
Australian researchers have announced that a general-purpose OS microkernel known as seL4 has been certified as error free by using formal proof methods. It is intended for use in embedded safety-critical systems. This milestone demonstrates that verifiably bug-free code is possible (with great effort, of course!).
Recently, there has been an Internet debate about whether both unit testing and functional testing are necessary. This excellent post makes a great observation about the value of each: Unit tests measure the quality of material used to build the application. Functional tests measure the strength of the application structure. The overall quality of the application is dependent on both.
http://app.arat.us/blog/?p=159
This beautiful graphic, available for purchase as a poster, shows the high-level advances of communication and computer technology over the past century.
http://www.geopanch.com/index.php?/work/history-of-communication/
As applications move away from the desktop and onto the network, security has become one of the key factors in development. This humorous, but thorough, guide to AES covers it’s history and the background of cryptography in general as well as how AES itself works.
http://www.moserware.com/2009/09/stick-figure-guide-to-advanced.html
Like it or not, most businesses today run on information and most of that information is conveyed via the written word: e-mail, IM, reports, etc. Here are some great tips for improving your success at getting your point across. My favorite tip? Write once, check twice.
http://www.lifehack.org/articles/communication/12-tips-for-better-business-writing.html
Want to make your databases and SQL queries more efficient and maintainable? Check out this presentation of antipatterns to use.
http://www.slideshare.net/billkarwin/sql-antipatterns-strike-back
In a recent book on leadership, authors Joseph Folkman and John Zenger say that most “weaknesses” that people have do not appreciably hinder their advance. However, they say that there are five “fatal” flaws that will: inability to learn from mistakes, interpersonal incompetence, lack of openness to new ideas, tendency to blame others for problems, and lack of initiative.
http://blogs.techrepublic.com.com/career/?p=1037
Everyone knows that all organizations at least pay lip service to “speaking the truth to power”. This interesting article puts the question in business terms: How can a manager make good decisions if he/she doesn’t have all the relevant information?
http://blog.slickedit.com/?p=327
In this essay, the author suggests that the reason technical workers (a.k.a. “geeks” or “nerds”) are often difficult to manage is because of the strong meritocracy mindset and desire to “be right” that they have. He offers an interesting look at some of the factors that surround this.
http://www.computerworld.com/s/article/9137708/Opinion_The_unspoken_truth_about_managing_geeks
We frequently point out in this newsletter that multitasking simply doesn’t work. Here’s information from another study at Stanford that confirms this further.
http://www.infoq.com/news/2009/09/study-multitasking-performance
No one looks forward to finding a new job, especially when it goes on for a long time or if it has been quite a while since you were last looking for a new job. Here are some tips to maintain a good attitude during a protracted job search and interviewing process.
http://blogs.techrepublic.com.com/career/?p=1217
This author, speaking from experience on both sides of the table, explores three common reasons (failure to deliver results, poor communication about their work, and unfulfilled potential) that programmers get the axe and provides suggestions for how to avoid these pitfalls.
http://itmanagement.earthweb.com/features/article.php/3839981/Why-Developers-Get-Fired.htm
Most readers of this newsletter probably have at least a passing familiar with the SMART technique for writing goals. But it never hurts to have a refresher from time to time. This article give a succinct explanation of each of the parts.
http://www.dumblittleman.com/2009/08/setting-and-achieving-goals-smart-way.html
How many of you out there cut your programming teeth on COBOL? Well, as COBOL turns 50, here are some interesting facts about this language that is still relevant and popular. For example, 15% of new application functionality developed this year will be written in COBOL.
The title of this article belies what it’s really about: Speaking (and writing!) plainly in the global marketplace. It bears repeating that there is no substitute for straightforward language and being careful with idioms that might not translate well to other readers or listeners. Not to mention that our personal and cultural biases have a greater impact on our thinking than we realize.
http://marketingdonut.co.uk/news/marketing/business-jargon-lost-in-translation
Like the rest of the economy, hiring in the technology sector has slowed down a lot. According to job web site Dice.com, here are some categories where jobs are available, including virtualization, .NET, and DBAs.
http://www.baselinemag.com/c/a/Careers/Nine-Hot-IT-Jobs-in-a-Lukewarm-Market-897905/
New computational research has found that due to the Peter Principle, organizations should abandon the common-sense approach of promoting people based on competence at their current level and instead adopt one of two other counterintuitive methods: to promote first the most competent and then the least competent individuals or to promote individuals at random. Both of these methods contribute to organizational chaos less than the standard method.
http://www.technologyreview.com/blog/arxiv/23800/
Speechwriter-turned-business consultant Daniel Pink talks about how little of current management practice takes into account new information about the science behind motivation. His presentation is a great summary of his bestselling book A Whole New Mind.
http://www.ted.com/talks/dan_pink_on_motivation.html
As we mentioned back in the June 2009 issue, the drumbeat for the demise of voice mail is becoming louder. One of the new technologies poised to help is voice transcription that converts voice mail into text messages or e-mail.
The author of a new book called The Tyranny of E-mail opines about how the breakneck pace of modern communication is damaging relationships. He underlines how the frenetic speed results in lack of context for communication and that it results in distancing ourselves from others instead of bringing us closer.
http://online.wsj.com/article/SB20001424052970203550604574358643117407778.html
In a widely expected move, Julius Genachowski has proposed new guidelines to enforce network neutrality for both wireline and wireless services. Comcast, which was widely seen as one of the targets of the new rules, responded quickly and Windstream said that this approach will slow rural broadband rollouts. And here’s a collection of comments from a broad swath of both sides of the issue.
This is an interesting discussion about how layer 2 (data link layer) and layer 3 (network layer) networking functionality are starting to merge.
http://idleprocess.wordpress.com/2009/09/24/the-blurring-of-layer-2-and-layer-3/
The CEOs of Verizon and AT&T both say that they have not seen sales improve and that perhaps the telecom market is still contracting.
http://blogs.barrons.com/techtraderdaily/2009/09/17/telco-execs-no-recovery-yet/
Clay is a graphical database modeling plug-in for the Eclipse IDE. It can generate database models by reverse engineering an existing database. Likewise, it can generate DDL for many database platforms from the model.
http://www.azzurri.jp/en/clay/index.html
.NET Reflector is a handy tool for examining the internals of .NET assemblies. Even if you don’t have the source code, you can examine the classes, member variables, and methods. Likewise, it shows the relationships between the classes in an easily navigable way.
http://www.red-gate.com/products/reflector/
If you do any development of web services (or applications that use/consume web services), you know that testing them without building a large harness can be difficult. Storm allows you to exercise web services and view the responses and returned data, even services that take complex inputs. It supports services/APIs written in most any language and even allows you to directly manipulate SOAP requests.
If you use the Firefox web browser, you’ve probably found that it requires a lot of switching between the keyboard and the mouse. LoL makes browsing with only the keyboard much simpler without having to completely abandon the mouse (like with Vimperator or Uzbl).
TenClips is a multi-clipboard utility for Windows (supports 10 clipboards) that allows you to paste text into target without any source formatting (similar to Pure Text), if desired. It has full hotkey support and you can even define your own hotkeys for each of the clipboards and the options for pasting with or without formatting.
http://www.paludour.net/TenClips.html
QuickSharp is an alternate IDE for C#/.NET development. It features all of the normal features you’d expect, such as, syntax highlighting, code folding, regular expression “helper”, and Visual Studio-style docking windows, and much more, without the bloat of Visual Studio.
http://quicksharp.sourceforge.net/
Last month, we had a tip about using Scribd to view PDFs online without downloading or having a PDF viewer. It turns out that Google Docs makes this even easier! Just go to http://docs.google.com/viewer and enter the URL of the PDF file (or even a Powerpoint presentation) and get a link to view the document online. Or just paste the URL at the end of http://docs.google.com/viewer?url= to view it immediately. (No Google Docs account is required.)
Can you guess the names of the song that are suggested in these Twitter-sized code snippets? Some are classics (and easy to recognize!), but I guess I’m too old to figure out most of them! ;)
Some creative folks have written an application that takes “tweets” from Twitter and arranges them as verses in an every-changing poem. Each pair of lines even rhymes. Not your mother’s iambic pentameter, but still pretty interesting.
http://www.longestpoemintheworld.com/
Need a quick idea for getting more done? Just check out this blog! ;) Or maybe you should just work less.
http://productiveblog.tumblr.com/
You probably use Google everyday and, if so, you know that the Googlers have a sense of humor. Consider the recent UFO-themed logos. Here are some other more subtle jokes from across the Google landscape.
http://www.telegraph.co.uk/technology/google/6201814/Google-easter-eggs-15-best-hidden-jokes.html
This fun (and funny!) online generator will produce a random abstract of a seemingly viable paper on a post-modern topic. It even includes references to actual published philosophy papers.
http://www.elsewhere.org/pomo/