April 2009 Newsletter
Knowledge and timber shouldn't be much used till they are seasoned. –Oliver Wendell Holmes
If you don't risk anything you risk even more. –Erica Jong
When you have a great and difficult task, something perhaps almost impossible, if you only work a little at a time, every day a little, suddenly the work will finish itself. –Isak Dinesen
Family. Religion. Friendship. These are the three demons you must slay if you wish to succeed in business. –Montgomery Burns ;)
Failures are divided into two classes—those who thought and never did, and those who did and never thought. –John Charles Salak
First, we want to establish the idea that a computer language is not just a way of getting a computer to perform operations but rather that it is a novel formal medium for expressing ideas about methodology. Thus, programs must be written for people to read, and only incidentally for machines to execute. –Harold Abelson and Gerald Sussman in preface to Structure and Interpretation of Computer Programs
The greatest danger for most of us is not that our aim is too high and we miss it, but that it is too low and we reach it. –Michelangelo
Application maintenance contracts are one of the more frustrating parts of IT work. Vendors typically charge 20% - 25% of the original license cost annually for support and upgrades. But tough economic times and more online applications may change the balance.
A successful IT strategy and vision needs to strike a reasonable balance around business, organizational, and management issues. Ultimately, IT needs to be supporting the business objectives.
Project management is at its core an exercise in psychology: How to motivate others to accomplish your goal. Project management expert Scott Berkun shares some tips on how to deal with not-so-nice developers on your project.
Software development estimation, for both cost and effort/schedule, is still one of the areas of the overall process that is most like a black art. This article discusses formal estimation techniques, accurate software estimation tools, the misinterpretation of estimation as target setting, and the accuracy of estimates.
As the web browser moves from being a viewer to being a platform itself, the concept of the model-viewer-controller (MVC) architecture pattern is undergoing change, as well. This article gives an insightful look at the paradigm shifts that web developers need to pay attention to.
Why do so many projects fail? Maybe this explains it…
The software development community is starting to coalesce around the principle that programming should demonstrate traits of craftsmanship and that developers should take pride in the code and other deliverables that they produce.
Two university researchers are doing a survey of developers, both professionals and "hackers", to see how object-oriented design principles are actually applied in practice. They are hoping to get at least 2000 respondents. Here's your chance to contribute to understand the gap between academia and the "real world".
This fantastic retrospective on GUI design in operating systems shows just how far we've come in 30 years. And it demonstrates how a few core principles and paradigms define all of our human-system interactions. How many of these platforms do you remember? (I still recall being enamored with the Apple Lisa when it first came out!)
Software developers want (and deserve) to be treated as professionals. As professionals, it is incumbent on us to read relevant literature in our field, and not just "how tos". This excellent list will help you gain a broader perspective on both the practice and the philosophy of good development.
The debate continues about whether SOAP or REST are the best ways to develop services-oriented architecture applications. Apparently, we should expect to see a convergence or at least complementary use of the two approaches.
This isn't your typical article on software testing, but it points out one of the key elements of testing: How do you know that your test is valid? And how do you know if you can (thoroughly) test something that is already an optimized solution to a particular problem? Just some things to think about when planning your tests.
In a recent online "bug bash" for Facebook, MySpace, and Linked In social networking platform, testers found 718 confirmed problems in a single week. This seems like an interesting way for online sites to get free "white hat" testing services.
This site features some online (and downloadable) puzzles that help you learn about test coverage and proper test design for black box testing. Quite an innovative and fun way to evaluate and hone your skills.
In this excerpt from his book Perfect Software, Jerry Weinberg explains in clear and relevant language the qualities of a good test. This should be required reading for all testers and developers and these principles should be followed when developing tests that are most likely to uncover errors and problems.
Joel Spolsky debunks some of the myths that development managers try to hide behind for not having an independent test function.
This academic research paper reports that almost half of software errors result from attempts to correct other errors and that one of the main causes is making bad assumptions about program behavior in the process of debugging and fixing errors.
If you do any amount of work in the Unix/Linux (or even Cygwin) command prompt shell, you soon learn the value of having multiple shells open at the same time. However, using multiple terminal windows or tabbed terminals is often inconvenient, even in GUI environments. The GNU screen utility is a really great alternative and can boost productivity, but often it's difficult to learn the concepts. This great tutorial gives you the basics in easy to understand and follow detail.
This three-part series, while focused specifically on C++ development, is really a good conceptual introduction to multithreading and how it can be used for most any developer. The author uses a good analogy to explain the concepts in a language-agnostic manner.
The guys over at Better Explained, who are famous for their lucid explanations of complex math topics, have done it again! This time they take on explaining basic networking, by showing the "conversation" between two machines using HTTP.
If you've taken the plunge in transitioning from Windows to Linux (or use Linux under Windows via virtualization) and are using a Debian-based distribution, such as Ubuntu, one of the tools you need to master to get the most out of the thousands of pre-built packages is the apt tool. This excellent tutorial (and reference!) helps you quickly and effectively use the apt command-line tools, as well as explain how to use some of the various wrappers around them, such as aptitude. And even if you are still in Windows, this tutorial can help you with the Cygwin clone of apt called apt-cyg.
Objective-C is a C language extension that allows structs to be made into classes (objects) in the manner of traditional OOP languages. This 3-part tutorial covers the basics of writing Objective-C programs from the perspective of someone who already is comfortable with C++. Some of the nice features about Objective-C are that is supported by the gcc compiler toolkit and it adds messaging support to C programs.
Hardly a week goes by without hearing about some security vulnerability in one or more web browsers. So how do you decide which browser is best? Infoworld puts the five most popular/common browsers, Internet Explorer, Firefox, Google Chrome, Opera, and Safari, to the test.
New research finds that the continuous stimuli of urban life are taking its toll on people, such as by reducing memory performance and attention span by more than 20%. This article explores how we can get respite from this.
It has been demonstrated that expertise is developed through effort, not by chance or special talents. Here's a regimen to help you build expertise in whatever area you have a passion for.
Innovation is the lifeblood of any organization. But how to keep the innovation fire burning hot? Microsoft Research's Bill Buxton gives some of his ideas.
This online discussion looks at the (apparently) intractable problem of choosing people for leadership positions. Personally, I think that the underlying problem is that past success in solving problems at a particular level of the organization is not a good predictor of success at a higher level, because the problems are different and require a different way of thinking. The author references Malcolm Gladwell's recent article Most Likely to Succeed.
In the grand tradition of anti-patterns, here are some ways that managers can lower productivity and morale of employees, especially knowledge workers.
Researchers report in a recent issue of Harvard Business Review that flawed decision-making often results from three factors: bad memories (specifically, bad pattern recognition), "emotional tagging", and poor distinction between correlation and causality.
Interviewing for a job is a two-way street: The potential employer wants to learn about you, but, just as importantly, you want to find out a little about the employer. Here are three questions that you can ask the interview to get a feel for what the place is like.
Most people are familiar with the "wisdom of the masses" (also called "crowdsourcing") which tends to cancel out errors in judgment by factoring input from many individuals. But what if you are on your own in making a decision? Two researchers report that a similar technique can be applied by individuals using a process called "dialectical bootstrapping".
A new CDC study says
that, as of 2007, almost 15% of American households were cell phone only. Interesting,
Bob Metcalfe looks back at the creation of the Ethernet protocol in the early 1970s and discusses his current activities. One interesting tidbit from the article: Harvard failed him on his Ph.D. thesis on packet communication.
Got a file with an extension that you have no idea what application it was created by or which it can be used with? OpenWith will automatically check its online database of free and open-source applications and suggest alternatives that you can use. Then it will help you download one of them, if you don't already have something installed to do the job. You can even help by providing suggestions for alternative applications.
It seems like screen savers have become passé. Instead of watching a starfield on your monitor, PushMonitOff uses a simple hotkey combination (the default is <Shift>+<F1>) to immediately power off your monitor, which will save a bit of energy and maybe a few pennies. And, in my experience, it works faster than any of the screen blanker applications that I've tried.
Generating test data (for both valid and invalid scenarios) is one of the important but very time-consuming tasks for unit testing and independent software testing. ThinkUI Data Generator is an Apache Ant-based tool to simplify test data creation. It can output data into various file formats or even load directly into your database (via JDBC). It has support for custom data formats based on your rules, as well as many built-in types, like dates, credit card numbers, etc.
If you do any sort of development on the LAMP/WAMP/MAMP platform, then MoWeS can't be beat for development on the go. MoWeS stands for Modular Webserver System and it is a WAMP system that requires no installation and can run from a flash drive. However, the best feature is that you can highly customize the installation package before downloading and get exactly the applications that you need. In addition to PHP4, PHP5, Apache 2, and MySQL 5 (standard and minimal packages of each), it includes over 20 up-to-date add-on packages, including most of the popular ones like Joomla, MediaWiki, PHPMyAdmin, Drupal, phpBB3, osCommerce, and many more. Plus, if you already have a MoWeS installation, you can just download the updates or additional packages.
Who knew that
I'm quite sure that you have never seen anything like this. This guy beat-boxes and plays the flute at the same time. Check out this video of him playing the Sesame Street theme and Rimsky-Korsakov's Flight of the Bumblebee.
Spring is here! Time to get out the clubs and head to the course (mostly to avoid mowing the lawn!). If you need to get in a little practice before paying those greens fees, check out this excellent free online golf simulation. You can even play a virtual round with friends and family simultaneously.
Got a little extra time on your hands? Well, maybe you'd like to help DARPA solve some of these math problems. Who knows? You might be the person to crack the Reimann hypothesis.