July 2007 Newsletter
We are all family. To care about each other isn't altruistic—it's the best form of self-interest. –Desmond Tutu
People like to imagine that
because all our mechanical equipment moves so much faster, that we are thinking
faster, too. –
Contradiction is not a sign of falsity, nor the lack of contradiction a sign of truth. –Blaise Pascal
You do not lead by hitting people over the head—that's assault, not leadership. –Dwight D. Eisenhower
A positive attitude may not solve all your problems, but it will annoy enough people to make it worth the effort. –Herm Albright
Most people go along and never experience their creativity. They run on old programs or follow the "normal" way of doing things. Creativity is not just painting a picture, writing a poem or doing a modern dance. It is a way of life. Every activity can become a creative experience. –Thomas D. Willhite
A successful individual typically sets his next goal somewhat but not too much above his last achievement. In this way he steadily raises his level of aspiration. –Kurt Lewin
It is not enough to have a good mind. The main thing is to use it well. –Rene Descartes
To be one's self, and unafraid whether right or wrong, is more admirable than the easy cowardice of surrender to conformity. –Irving Wallace
Difficulties strengthen the mind, as labor does the body. –Seneca
This book excerpt, using a well-developed example, explains what make good business and system requirements for software applications and how to obtain and document requirements. This article covers some of the more esoteric aspects of requirements definition.
With the proliferation of programming languages, it's no longer a given about what first language should be taught. (When I was in school, everyone tool Fortran first!) This article explores some of the advantages and disadvantages of the various languages, including C, C++, Perl, Python, Ruby, and more.
This comprehensive online book covers a variety of topics to help programmers adapt to agile development methodologies, especially Extreme Programming (XP). The book includes some excellent exercises to reinforce the concepts.
This interview presents some interesting concepts for achieving IT/business alignment, particularly for large organizations where IT seems to have "lost their way". It suggests three levels of alignment—tactical, strategic and innovative—the build on each other.
What's the difference between lean and agile development? This article explores the similarities and differences between them, both philosophically and practically.
This article provides some interesting, and well-conceived, objections to the agile development trend. While I don't agree with all of the conclusions, it has some noteworthy food for thought.
Object-oriented design and analysis provides tools for understanding and building complex software systems. This article explores types and techniques of decomposition for object-oriented systems.
Many IT executives report that, while they still reject the premise of Nicolas Carr's essay "IT Doesn't Matter", they say that it did provide the impetus for them to do a better job of demonstrating the business value that IT provides to their organizations.
This site includes the full text of a revised (and work-in-progress) edition of the mid-1990s classic text on software development called The Art of 'Ware. The book is patterned after Sun Tzu's treatise on conflict and warfare The Art of War.
Researchers discuss how lean production methods can be applied to programming to make the process more efficient and productive.
This excellent article provides a 10-step approach for preparing use cases. It focuses on a practical technique that emphasizes productivity over perfection.
Literate programming is becoming more popular and this article examines how the more widespread adoption of open-source software is making it more important to write code that can be easily understood by other programmers.
Steve McConnell provides updates to his "classic mistakes" list based on 10 additional years of observing and researching software development. All of the seven new items are quite relevant to development and project management today.
This article presents 28 "best practices" that IBM research shows improve software quality and testing effectiveness.
This site includes a wide variety of materials from a college software quality assurance course, including lecture notes, homework assignments, quizzes, and exams. The material is very comprehensive and would be useful to anyone looking to improve their software testing/QA skills.
Analysis by IBM shows that only about 5% of all security vulnerabilities are actually publicly identified with the rest being corrected before being exposed.
This package gives a good discussion of exploratory testing and suggests an approach for formalizing this technique. It includes some example templates to be used with the process.
This is an interesting, and somewhat provocative, look at the old question about whether or not test cases are requirements.
This article gives a good overview of the technical implementation process of web services as a part of a general services-oriented architecture.
Intrigued by Linux, but don't know how to get started? These detailed introductory tutorials will help you understand the background and basics of Linux. (Personally, I recommend using the Ubuntu VMware appliance with VMware Player to get started in Windows. You can install VMware tools and even upgrade to version 7.04 [Feisty Fawn]. For the adventurous, you can use the unofficial Wubi tool to install Ubuntu in a dual-boot configuration without partitioning on your system. For more information on Ubuntu, read the online version of Ubuntu Unleashed.)
Kick Java is a Java API reference that uses examples to show how to use the language. The site is organized by the top-level APIs and you can search by API name or topic. It covers Java SE, EE, and ME.
Most of us are not operating system kernel developers, but this tutorial will give anyone who programs on Linux a better understanding of how the OS is put together and the subsystems and interfaces provided.
Java-o-Matic is a set of free, online Flash-based tutorials for basic principles in Java programming. It includes tutorials on installing Java and Eclipse, as well as introductory Java programming topics, including classes.
IP subnetting is a key element of efficient TCP/IP network design. This tutorial explains how the IP address domain is structured and how to design subnets.
Even though hand-coding of HTML is not very common any more, knowing HTML tags can be helpful in tweaking a design or troubleshooting a problem. This handy two-page reference of HTML tags can do just that.
Regular expressions are an invaluable technique for doing pattern matching and string comparisons and validation. This article takes a practical approach at learning the basics of them.
Job burnout is becoming more prevalent. Here are some tips to help you identify it and, more importantly, develop a plan to resolve it.
The Apple II, the first computer to truly be considered a "personal" computer, marks the 30th anniversary of its debut. I remember saving $2500 as a kid in 1979 to buy an Apple II+ with 48kB RAM and a 143kB floppy drive with an Epson MX80 dot matrix printer. How times have changed!
Computerworld provides their 14th annual report on the best employers for technology workers. The report includes information about what the best employers do to keep employees satisfied and productive.
Telecommuting is becoming more popular as the technologies that enable people to work from home (or really anywhere) are becoming more sophisticated and widely available. This detailed article provides some excellent guidance for how to telecommute successfully.
Getting along with others makes you a more effective employee and a happier person. Here are some great tips on how to be more likable around the office.
The number of people that are declaring "e-mail bankruptcy" because their inboxes are simply too full is growing. E-mail overload is worsening and people are looking for unique solutions to the problem.
Do you find yourself procrastinating? Here are some tips to make you more productive without having to substantially increase your workload or effort. Looking for more tips? Here are some other good ones.
Excessive stress is probably the major contributing factor to poor work performance. Here are some great tips for how to deal with and reduce work-related stress.
In addition to the reasons given above, Gartner predicts that by 2015, technology workers will be working far fewer hours, mostly in order to have better work-life balance. Much technology work will be done on a "free agent" basis and the retirement of the Baby Boom generation will be a prime motivator for these changes.
So you've gotten the promotion that you wanted to manage your team. But now what do you do? This brief article gives some great tips and advice on how to be an effective and well-liked supervisor. More than just the details it gives some salient examples of each tip.
Worthless and ineffective meetings are probably one of the greatest drains on time, resources, and motivation in an organization. This excellent article takes a step-by-step approach to organizing, running, and following up on an successful meeting.
Bjarne Stroustrup, the creator of the C++ programming language, presents a paper on the evolution of the language over the past 15 years. The paper is to be presented at the upcoming ACM History of Programming Languages conference.
This article presents a paper that shows the logical structure of the Internet based on the various providers and interconnections.
This book excerpt discusses recent changes in last mile access and how they support the delivery of "triple-play" services.
Copying large files or directories can be frustrating if network problems cause the copy to fail at some point. TeraCopy addresses these difficulties by including buffer adjustment to speed copies, pausing and resuming file transfers, and error recovery that retries the copy in case of failure and skips files that can't be copied without aborting the entire copy process. It includes shell integration as a drop-in replacement for the standard Windows "Move" and "Copy" functions.
Net Profiles allows you to create and save multiple network configuration profiles for Windows XP. Profiles can be created for both hardwired and wireless network connections and allow complete control over IP address, subnet mask, gateway, DNS, WINS, and DHCP. In addition, you can specify different mapped drives, default printers, web browser home pages, and even wallpaper for each profile.
Looking for differences and merging changes is a fact of life in software development and web design. DiffMerge takes some of the pain out of this task. It features intra-line highlighting, compare/merge of 3 files simultaneously, directory comparison and merging, and extensive customization functions.
Power Dimmer is a neat screen saver that progressively dims the screen. You can set the period for the screen to fade and the final brightness. This is handy for when you want the screen to dim, but still need to monitor what is on the screen.
FileBox eXtender is an add-on that simplifies navigation in the standard Windows File Open and File Save dialogs by adding buttons for "favorite" folders and "most recently used" folders. You can easily customize the "favorite" folders list. In addition, it allows you to resize these dialog boxes, even in cases where the application doesn't normally support this. Also, it includes "always on top" and "roll up" functions for all standard windows.
Clone Drive associates itself with extensions for disk images, such as .ISO, .IMG, and .BIN, so that you can mount these images as if they were physical disks. Each mounted image gets its own drive letter, so you can use the image just like a regular physical disk.
Swept Away is a background utility that minimizes any open window when it hasn't been used (made active) for a designated amount of time. You can specify the amount of time to wait to minimize windows and even specify an exclusion list for windows that you never want automatically minimized.
This little tweak will allow you to paste multiple lines of text into a regular input box on a web form in Firefox. In the address bar, enter about:config to display the configuration settings window. Put singleline in the Filter field. Look for the editor.singleLine.pasteNewlines Preference and double-click on it to change the value to 2. Press OK, close the about:config tab and you are done.
In Linux, it is very simple to create an .ISO image of a physical CD or DVD using the dd command. First, open a terminal window. Then, mount the CD/DVD drive by running umount /dev/cdrom. Then run the command:
dd if=/dev/cdrom of=filename.iso bs=1024
Similarly, you can use the mkisofs to create an .ISO image file from a directory (folder):
mkisofs -r -o file.iso /folder_location/
Who doesn't enjoy the fun of flying a paper airplane? This excellent site has tips for making the best plane and instructions of over a dozen high flyers. It even includes colorful PDF files for printing nice patterns for your creations.
Take this quick quiz to find out what regional accent you use.
This site presents the most famous photographs of all time from around the world along with the story behind each. You will immediately recognize many of the pictures.
This site provides a collection of excellent short stories from variety of the best authors of the craft including de Maupassant, Poe, Dickens, Chekhov, and many more. Great for a quick lunchtime read!
Nobel prize-winning physicist Hans Bethe explains quantum physics in a relatively simple manner with limited technical mathematics. These lectures were originally given to his fellow residents at his retirement home.
This is a very cool alternative format and extremely easy to read (after you get used to it) Flash-based online clock. It displays the local date and time of the machine.
Not much to say here… You just have to watch. (Don't worry; it's safe for work!)
Stackopolis is an addicting online puzzle game. The object is to build towers or other objects of a certain structure by moving blocks around on the playing surface within a defined time limit. It seems simple at first, but it is insidious.