August 2009 Newsletter
A good listener helps us overhear ourselves. –Yahia Lababidi
He that would have fruit must climb the tree. –Thomas Fuller
If you compare yourself to others, you may become vain and bitter; for always there will be greater and lesser persons than yourself. –Max Ehrmann
Too many people overvalue what they are not and undervalue what they are. –Malcolm Forbes
Follow effective action with quiet reflection. From the quiet reflection will come even more effective action. –Peter Drucker
Try not to become a man of success but rather to become a man of value. –Albert Einstein
You gain strength, courage, and confidence by every experience in which you really stop to look fear in the face. –Eleanor Roosevelt
Man has been endowed with reason, with the power to create, so that he can add to what he's been given. –Anton Chekhov
How soon ‘not now’ becomes ‘never’. –Martin Luther
Any fool can write code that a computer can understand. Good programmers write code that humans can understand. –Martin Fowler
Agile development is all the rage now. This great article explains that one of the key reasons for the early success (and now the frequent failure) of agile is that its originators, like those of most anything new, were using the “startup” mentality (mostly as consultants). Thus, anyone who takes an entrepreneurial approach to process improvement is likely to succeed, regardless of the details.
Most developers have at least a passing familiarity with pair programming. But, even if they are convinced about it, it’s usually a tough sell to management. This author points out six specific advantages of pair programming, including continuous code review, less time trying to figure out problems during coding, reduced distractions, and built-in training/backup capability.
While this article is probably more properly labeled a rant, it does bring out some good points about the practice of software development versus the theory of computer science (which was the topic of an article referenced in the July 2009 newsletter).
Jeff Atwood discusses the shocking conclusion of long-time (and very respected) pundit Tom DeMarco that software engineering needs to be abandoned and the focus should be on the practice of software craftsmanship.
Paul Graham presents a very strong argument about the importance of developers having dedicated time, usually in blocks of 4 hours or more, to do their work and that incessant meetings are a significant and detrimental distraction. This type of uninterrupted time is important in most any creative discipline.
Computers are a ubiquitous tool in all companies now. But some new research shows that technology is failing to deliver on all of its promises, especially for small business, such as ROA decrease of 75% since 1965. Interestingly, while we often hear about how IT fails to support the business (the so-called “IT-business alignment” problem), one of the findings is that many corporate cultures cannot adapt to new, disruptive technologies.
The specifics in this article shouldn’t come as a surprise to anyone: people over process (one of the core tenets of the Agile Manifesto, by the way!). But it doesn’t hurt to be reminded once in a while. And remember that agile adoption, especially in larger organizations, is not always easy.
This author points out that without a good process for refactoring and understanding your specific purpose for refactoring all you end up doing is rearranging the deck chairs on the Titanic (although his language is a little stronger!).
To the uninitiated, agile development methodologies often seem like magic (or bunk!). A couple of agile experts want to change that with some virtual flashcards (flashcards are one of the hallmarks of many agile methodologies) that teach agile principles.
Management loves metrics! Everyone knows that; in fact, it might even be their mantra. Nevertheless, the article presents some useful and simple metrics to measure the progress and outcomes of development projects, with a decidedly agile focus.
The push to move away from enterprise RDMBS (called noSQL) is picking up momentum including backing from industry giants like Amazon and Google. This is happening for a variety of reasons, especially scalability problems with RDBMS and they are applied in situations where they shouldn’t be. They suggest so-called “key-value stores” like Hadoop and Voldemort as alternatives and some hybrids like Cassandra and BigTable and one company has shared their experience with making the switch. I’m not sure how this will work out (of course, there are those that dismiss the idea and here), but it’s probably a trend to watch and something that developers need to start getting familiar with (like parallel and concurrent computing).
What’s your guess about this commentator’s #1 reason for low quality software? Bad process/methodology? Insufficient requirements? Wrong! He says that the major cause is lack of understanding of the business domain.
“In God we trust; all others must bring data,” (famous quote from quality pioneer W. Edwards Deming) might be the mantra of software testers. However, as this article aptly shows, sometimes the data itself isn’t the whole story when it comes to assessing software quality.
By now, you’ve probably heard about this glitch (or ‘programming error’), but it’s a good example of the importance and value of testing and of how domain knowledge by testers is so important. Slashdot reports that the problem was due to how the amounts were stored. And, by the way, to put $23 quadrillion in perspective, the combined annual GDP of all of the countries in the world is around $60 trillion (here’s $1 trillion in perspective) or about 0.25% of $23 quadrillion.
This is an interesting perspective on the question: Should quality be compromised? When? The author emphasizes that letting quality slip on one release often results in a psychological effect that quality can be further sacrificed later.
Successful testing requires the proper mindset and attitude. This comprehensive article discusses the mental preparation for testing and how to avoid “test anxiety”.
For better or worse, more and more web browsing is moving to mobile devices like phones and netbooks. If you are doing any sort of web design, you owe it to yourself to check how your design looks on these mobile platforms. Here are some tools to help you with that.
StackOverflow.com is a great developer discussion site and, recently, there have been a number of “hidden feature” topics discussed. This post is a directory of those discussions for many, many programming languages.
Reading any technical computer science papers (such as you might find on Lambda the Ultimate blog!) require a good grounding in the “Big O” notation. This excellent tutorial explains this concept in a very understandable way and uses some great examples in Java. But, with all things, think critically about how real-world implementations work compared to theory. And don’t forget to check out this follow-on discussion of the topic.
Most Java programmers are familiar with the Java serialization API. But it’s also instructive to understand how the API works under the covers as this helps you structure your objects effectively to ensure good serialization/deserialization performance.
When first starting out with the model-view-controller (MVC) architecture, understanding the paradigm can often be daunting. This excellent tutorial explains the concepts in plain language and further solidifies your understanding by using straightforward code examples in PHP. And, even if PHP isn’t your language of choice, the explanations are still relevant and helpful.
If you use (or are thinking about using) the Git version control/software configuration management tool, you owe it to yourself to check out this free online book. It is a comprehensive, yet engaging and well-organized, treatment of all topics Git, from installing it to using it for distributed development.
Domain Name System (DNS) is one of the linchpins of the modern Internet. But even to those who know a lot about TCP/IP and other Internet technologies, DNS is often a mystery. This comprehensive, detailed tutorial lifts the veil on many of these things.
If you’ve been laid off or even if you are fortunate enough to still have a job, the current economic mess is probably taking its toll on you mentally. Here are six tips to maintain a positive attitude and perspective during this difficult period.
Everyone needs a little advice now and then. In this article, top leaders from various industries and professions share the best advice they’ve received.
The current economic woes have increased stress for many, even those who aren't in fear of imminent layoffs. This nice list gives you some suggestions for how to help deal with these stressful times. From my personal experience, you can't overestimate the importance of getting enough sleep.
Face it; almost all of us have a guilty pleasure of dawdling online when we should be working. Well, here are some ways to turn this time into productive procrastination.
If you’re looking for a new development/programming job, how do you know who well your skills stack up against the next person? While this list is certainly not canonical (and tends to lean a little too much on the technical aspects, for me), it should give you a good idea about some of the areas that you should consider and the level of skills necessary.
This article presents the pattern that afflicts most organizations that prevents workers from developing and applying creativity in their work. The main cause, not surprisingly in my estimation, is the pressure of urgent, but not necessarily important tasks.
Preparation is the key to a successful interview. Here are some new questions that candidates are likely to face in technical interviews in the 21st century.
We frequently feature articles about how multitasking doesn’t work (at least not for sentient humans). Now, a researcher has shown the counterintuitive result that completing a predecessor task only prevents interference with subsequent tasks if the first task was completed under time pressure. The result is apparently due to the subtle confidence-building effect of completing the first task under pressure.
Most programmers and other IT professionals do a good job keeping their technical skills sharp. But what about your “soft” skills? Here are some non-technical pitfalls to avoid with some tips to bolster these areas. The top tip is to build self-discipline.
Many programmers probably aren’t interested in going over to “the dark side” of business functions within their organization. However, some will likely want to start their own companies or, at least, better understand how their organization works. This excellent article provides a comprehensive treatment of the topics in The Ten-Day MBA, especially those that are most relevant to IT professionals.
Most people know that networking (the social kind, not the technical kind!) is important for career development and often for finding your next position. But if you’re introverted or just plain shy, schmoozing (for some reason that word sounds “dirty”!) might feel like getting a tooth pulled. Here are some tips for a low-key approach to networking.
Here we get an education about some of the new, “fashionable” buzzwords making the rounds in IT and business circles. But the author’s main points are that we need to look past the words and grasp the concepts and ideas that others are presenting before we make a judgment and that each group has “rules” that regulate it.
This collection of articles, links, and resources is sure to help anyone who is searching for a job in IT, whether the market is good or bad.
I’m sure most people had intuition about the fact that uncivil behavior has a financial cost to organizations, but it’s nice to see it backed up by research. And some of the forms of bad behavior are interesting, such as simply not listening or check e-mail during meeting or conversation.
This classic essay, based on research from social psychology, says that offering bonuses and other reward incentives, instead of just regular pay, actually have the counter-intuitive effect of reducing productivity. Some of the reasons are that it doesn’t address causes, only effects, and that it undermines the personal motivators that workers have which are inherently more powerful than financial or other external rewards. Perhaps this is a strong argument for abolishing work.
According to a report in the Wall Street Journal, the Department of Justice is looking into whether AT&T and Verizon, which together control 90% of the U.S.’s landlines and 60% of its 270 million wireless subscribers, have becoming monopolies with their recent acquisitions. The probe is likely to look into the exclusive iPhone distribution rights of AT&T.
Internet pioneer Larry Roberts has introduced a new “router” that operates on flow of data instead of individual packets with the goals of improving performance, reducing cost, and reducing power consumption.
A telecom analyst says that technology is reaching the point where the “landline-or-VOIP” question is transitioning to where multiple technologies can be considered, which lowers the barriers to entry for consumers. This goes along with the predictions that the number of residential landlines by 2011 will be less than half the count in 2005.
With all of the recent news about zero-day attacks on Adobe’s PDF Reader, you might be looking for an alternative. Not only is PDF-Xchange Viewer more secure, it is also smaller and faster. It takes the simple approach of just displaying PDF files instead of trying to be a Swiss Army knife.
Microsoft Access databases (MDBs) are ubiquitous in most organizations. But not everyone can afford a license for Microsoft Access itself. If you just need to do some simple browsing or editing of an Access database MDB Viewer Plus is a great option. It uses a tabbed interface with a tab for each table in the database. You can specify sorting and filtering criteria and it has very good export and import capabilities. (Requires free MDAC runtimes.)
This cool little online tool lets you upload a picture (or pick one from Flickr or Photobucket or specify the URL to an online image) and then superimpose a monthly calendar on it. Then just download the image and make it your wallpaper.
Ever want to save a static image of a Googe Map that you’ve generated? Google Map Buddy is just the ticket. You can even save multiple map images and easily stitch them together to make a large map at just the zoom/resolution you want.
Ever been in the situation where you need to SSH to a system, but were on a computer without an SSH client? Well, no more with consoleFISH. It is a free, hosted version of AjaxTerm, which allows you to connect via SSH (or Telnet) to most any system right from your browser.
Shareflow is a free online (hosted) collaboration system that is intended to develop a threaded, conversational view of communications instead of the disjointed, context-free structure that often results from e-mail, IM, phone calls, etc. In general, it appears to be conceptually similar to Google Wave platform.
HTTP4E is a cross-platform Eclipse plug-in for sending HTTP headers and REST and SOAP API calls and viewing responses. It is an excellent tool for testing and debugging web services development and for examining the details sent by web hosts.
If you run across a PDF file, but don’t want to download it or don’t have a PDF viewer on the machine that you are using, here’s how you can view it completely online. Copy the link (URI) to the PDF onto the clipboard and then append it to this URL in your web browsers address bar: http://www.scribd.com/vacuum?url=. (For example, http://www.scribd.com/vacuum?url=http://www.msri.org/publications/books/Book29/files/conway.pdf.) Press <Enter> and the PDF file will be displayed in the Scribd viewer in your browser. (Note that Scribd will “translate” the URL into its own format, which you can bookmark or send to others.)
If you work in technical discipline, chances are that you’ve run across marketing folks that really annoy you. Well, check out this site for some humorous revenge.
This site features pictures of some unique feats of engineering for fixing things. Many of them use the all-purpose fix-it tool: duct tape.
A mathematician has finally broken a cipher that was proposed by a friend of Thomas Jefferson over 200 years ago. And the approach itself to solving the mystery is quite intriguing in that it uses techniques from computational biology.
Most programming languages ignore white space characters (spaces, tabs, CR/LF, etc.). But we need to bring balance to the programming world: Enter Whitespace. All non-white space characters are ignored. Only spaces, tabs, CR/LF are considered as valid syntax!
Tired of all of those nice, standards-compliant web browsers? Well, IE6ify comes to your rescue. Just save this bookmarklet and run it anytime you need to render a web site incorrectly, the IE6 way! ;)
A 13-year-old gives a hilarious
view of using a Sony Walkman
cassette player (circa
1979) for a week instead of his beloved iPod. This story shows you just how fast technology
has changed and yet how
much farther we have to go.
Nevertheless, the Walkman is a worthy competitor having been named
the top music invention of the past 50 years by
This site bills itself as “a compendium of the world’s wonders, curiosities and esoterica”. And indeed it is that. It’s a directory of strange and interesting sites and museums from around the globe. Looking for something weird? You’ll find it here!
Well, the answer is obvious, right: the first man (and one of only 12!) to set foot on the moon 40 years ago during the Apollo 11 mission. But the whole answer is more complicated. This excellent BBC documentary explores why he consistently shunned fame and riches in favor of the quiet life.