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.
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!
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.
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.
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.
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.
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.
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.
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.
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).
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.
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.
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.
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.
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.
This beautiful graphic, available for purchase as a poster, shows the high-level advances of communication and computer technology over the past century.
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.
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.
Want to make your databases and SQL queries more efficient and maintainable? Check out this presentation of antipatterns to use.
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.
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?
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
.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.
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.
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.
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.
Need a quick idea for getting more done? Just check out this blog! ;) Or maybe you should just work less.
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.
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.