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.
http://www.informationweek.com/news/software/erp/showArticle.jhtml?articleID=212902014
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.
http://blogs.zdnet.com/projectfailures/?p=1233
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.
http://www.scottberkun.com/blog/2009/how-to-deal-with-jerk-programmers/
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.
http://www.stsc.hill.af.mil/crosstalk/2009/03/0903Baxter.html
Evans Data's latest survey of
programmers shows that PHP has the highest
satisfaction rating among "scripting" (a.k.a. "dynamic")
languages, due in large part to the extensive and active community.
http://www.theregister.co.uk/2009/03/05/evans_data_gentlemen_prefer_php/
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.
http://advogato.org/article/993.html
Why do so many projects fail?
Maybe this explains it…
http://blogs.zdnet.com/projectfailures/?p=2024
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.
http://www.infoq.com/news/2009/03/software_craftsmanship
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!)
http://www.webdesignerdepot.com/2009/03/operating-system-interface-design-between-1981-2009/
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.
http://www.eweek.com/c/a/Application-Development/SOAP-and-REST/
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.
http://www.workroom-productions.com/black_box_machines.html
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.
http://media.techtarget.com/searchSoftwareQuality/downloads/Perfect-Software-Ch8.pdf
Joel Spolsky debunks some of the myths that development managers try to hide behind for not having an independent test function.
http://www.joelonsoftware.com/articles/fog0000000067.html
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.
http://www.cs.cmu.edu/~NatProg/papers/Ko2004SoftwareErrorsFramework.pdf
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.
http://www.redhatmagazine.com/2007/09/27/a-guide-to-gnu-screen/
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.
http://www.informit.com/guides/content.aspx?g=cplusplus&seqNum=414
http://www.informit.com/guides/content.aspx?g=cplusplus&seqNum=415
http://www.informit.com/guides/content.aspx?g=cplusplus&seqNum=416
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.
http://betterexplained.com/articles/a-simple-introduction-to-computer-networking/
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.
http://maketecheasier.com/become-an-apt-guru/2009/02/24/
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.
http://www.informit.com/articles/article.aspx?p=1272496
http://www.informit.com/articles/article.aspx?p=1272497
http://www.informit.com/articles/article.aspx?p=1272498
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.
http://www.infoworld.com/archives/t.jsp?N=s&V=123503
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.
http://www.boston.com/bostonglobe/ideas/articles/2009/01/04/how_the_city_hurts_your_brain/
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.
http://softwarecreation.org/2009/how-to-become-an-expert-the-effective-way/
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.
http://www.businessweek.com/innovate/content/feb2009/id20090218_337947.htm
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.
http://hbswk.hbs.edu/item/6103.html
In the grand tradition of anti-patterns, here are some ways that managers can lower productivity and morale of employees, especially knowledge workers.
http://www.geekstuffdaily.com/2009/03/12/8-rules-to-discourage-your-employees/
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.
http://www.networkworld.com/news/2009/021609-why-good-leaders-make-bad.html
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.
http://blogs.techrepublic.com.com/career/?p=606
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".
http://www.sciencedaily.com/releases/2009/03/090310155609.htm
A new CDC study says
that, as of 2007, almost 15% of American households were cell phone only. Interesting,
http://www.informationweek.com/news/telecom/business/showArticle.jhtml?articleID=215801954
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.
http://www.theregister.co.uk/2009/03/13/metcalfe_remembers/
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.
http://www.donationcoder.com/Software/Skrommel/index.html#PushMonitOff
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.
http://www.thinkui.com/datagen/index.html
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.
http://www.chsoftware.net/en/useware/mowes/mowes.htm
Who knew that
http://www.wired.com/culture/culturereviews/multimedia/2009/02/gallery_action_figure_museum
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.
http://www.myspace.com/pattillostyle
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.
http://www.networkworld.com/community/node/33361