September 2008 Newsletter
The whole difference between construction and creation is exactly this: that a thing constructed can only be loved after it is constructed; but a thing created is loved before it exists. –G.K. Chesterton
We should manage our fortunes as we do our health—enjoy it when good, be patient when it is bad, and never apply violent remedies except in an extreme necessity. –Francois de La Rochefoucauld
Whoever is happy will make others happy too. He who has courage and faith will never perish in misery. –Anne Frank
People usually fail when they are on the verge of success. So give as much care to the end as to the beginning. –Lao-Tzu
There is in the worst of fortune the best of chances for a happy change. –Euripides
Each new user of a new system uncovers a new class of bugs. –Brian Kernighan
Three keys to more abundant living: caring about others, daring for others, sharing with others. –William A. Ward
There is no stigma attached to recognizing a bad decision in time to install a better one. –Laurence J. Peter
User stories are a very effective tool for gathering requirements. This article gives a detailed, step-by-step explanation by using an example. User stories are also a useful element to use as blocks for estimating development effort.
One of the main roles that a project leader or manager plays is that of "cheerleader". The objective is to provide motivation to the team to reach the goal and objectives. Here are some tips on using external motivators to light that internal fire that really drives the person.
While certainly a little bit philosophical, this author makes a strong case about inheritance being an enabler of polymorphism via categorization. He also emphasizes the importance of thinking about development instead of just practicing the mechanics.
In this excerpt from his new book, Robert "Uncle Bob" Martin interviews some software development luminaries like Grady Booch, Bjarne Stroustrup, and Ward Cunningham on how they characterize "clean code".
Success with agile development methodologies requires a strong organizational commitment to and tolerance for change, by both IT and business. Otherwise, organizations will simply default back to waterfall methodology using agile terminology.
Jeff Atwood points out that unless a developer (even with agile methodologies) has a relatively complete task list of items to complete, it is impossible to really assess the percent complete. Furthermore, one of the key jobs of the project manager is ensure the task list exists and that it is updated and assumptions are validated.
While I don't agree with some of the language and the polemic tone of this article, the author makes some very good points about the requirements gathering and documenting process for development.
In response to a discussion about why women leave the IT profession, this author suggests that it's time to challenge the notion that IT is made up of "rugged individualists" and that it needs to come into the fold of a regular profession that includes mentoring, less crazy work schedules, and more.
While this article focuses on unit testing, most of the principles are applicable to developing any type of effective testing regimen. The focus of these concepts is on making the best use of the limited testing time and resources.
IT and line-of-business managers approve deployment of applications known to have 1 - 10 "critical" defects at an alarming rate. This is one of the findings in a new software quality survey of medium - large business.
Many testing efforts are hampered by not knowing when you are finished testing. The key emphasis of this article is that is important to define at the beginning and get consensus from the project team on what "done" means.
The key to successful database queries is understanding the various types of joins. This article has links to a variety of excellent tutorials on joins.
XML is the lingua franca of data on the Internet. This article describes 10 canonical XML schemas that all web developers and designers should be familiar with, along with links to additional resources on them.
Many Java developers are put off by the perceived complexity of the Spring Framework. However, this article shows how you can use the advantages of Spring, such as it's support for common patterns (MVC, aspect-oriented programming, dependency injection, and more), even on simple projects.
Many folks that work with Linux (or Unix) servers use shell scripting of some sort to automate their work. If you have some interactive shell scripts, the Zenity toolkit is a useful addition to your scripting arsenal because it allows you to create simple GUIs (based on GTK) for prompts and input. This article teaches you the basics.
This blog provides an overview and some excellent notes from the free, online video lectures in algorithms provided by MIT under their "Open Courseware" program. More commentaries/notes will be posted, so watch the site.
One of the important aspects of communicating your ideas is to be able to respond quickly and concisely in a discussion. Learn some ideas about how to train yourself to do this.
Sometimes when developers first start out using REST, it is easy to get into some dubious practices. Here are some things to be careful to avoid when using REST.
Working for a bad boss is a painful, unfulfilling experience. However, we should use all of experiences in a positive way to learn something. Here are some suggestions about lessons to take from a bad boss.
This pundit waxes (a bit) nostalgic for the times of physical manuals for software products. Nevertheless, he makes a good point about delving into documentation with the objective gaining knowledge, rather than just a quick answer. He emphasizes the process of reviewing other details to provide context and maybe even a few surprises.
Bullying, verbal abuse, and more are all too common in workplaces today. Here are some tips on standing up to these bad apples and showing that their behavior won't be tolerated.
Steve Wozniak has always been a hero of sorts for me. In an interview at the Intel Developer Forum, he talks about creating the Apple II and even reveals that he waited in line just like everyone else to buy an iPhone.
In their annual report, the Families and Work Institute finds significant changes over the past decade. Some of the items on the rise are flexible scheduling, employee assistance programs, and wellness programs. At the same time, these things are on the wane: transition from full-time to part-time work, reduced health care premium payments, and pensions and retirement plans.
Resume "embellishment" seems to have reached epidemic proportions. However, the key takeaway from this report are the key words that hiring managers look for in resumes.
While I doubt that one article will change your life, this is an excellent resource for improving your outlook on your work. Interestingly, it quotes research that indicates that 50% of a person's happiness is genetically based, 10% is a result of circumstances (including finances/wealth), and the remaining 40% is a consequence of intentional activity.
At it's core, programming is about problem solving and reducing complexity. Playing the ancient game of Go can teach you how to recognize patterns and to do both strategic and tactical thinking to solve problems.
This article gives an overview of an interesting psychological phenomenon called "self-determination theory" discovered by Edward Deci that people lose motivation even when they are doing something that previously loved when there are extrinsic motivators like a paycheck or possibility of being fired. What do you think? Give your opinion in this online poll?
After 30 years of research, Stanford psychologist Carol Dweck has determined that people with a mind-set that they can expand and grow their abilities over time tend to be more successful in their careers. She discusses the unique approach that Apple Computer used in putting together the iPhone team.
This author posits that our old measures of productivity, based on manufacturing, are outdated and irrelevant in technical work. He recommends a change in our approach by listing 25 new principles.
A new study of US dial-up Internet customers indicates that almost 2/3 of them are not interested in switching to high-speed connections. Among the other findings in the report are that 55% of Internet users now have broadband connections up from 47% in 2007.
Interestingly, contrary to the idea that people are abandoning landlines for wireless, this author suggests that the economic downturn is as much to blame.
Google VP Vint Cerf argues for net neutrality and against the failure of traditional telecoms and cable operators failures to invest in new infrastructure.
Sometimes having a copy of a web site as an e-mail is very useful for historical purposes or because you are unable to access a site. Simply send an e-mail to email@example.com with the URL of the page to retrieve as the subject and in a few minutes the rendered page will be delivered as an HTML-format e-mail.
Calgoo is an excellent calendar tool. Among its many features are ability to synchronize online calendars, such as Google Calendar and iCal, with your desktop calendar, and sharing your online calendar with only the people that you want to.
Circle Dock is a unique dock/launcher that puts all of the files, folders, and shortcuts in close proximity to your mouse cursor. It has a customizable hotkey and you can use the mouse scroll wheel to rotate items on the dock. (Requires .NET framework.)
MaxTo will help you reduce the clutter of the various windows on your desktop. Instead of using virtual desktops, MaxTo divides up the desktop into regions. When you maximize a window in one of the regions, it only maximizes to the size of that region. This allows you to have various applications tiled with interfering with each other. (Requires .NET framework.)
jobBuddy is a cross-platform (written in Python) graphical tool for searching for jobs on six of the most popular job web sites (Monster.com, Careerbuilder.com, Indeed.com, Dice.com, SimplyHired.com, and Yahoo Hotjobs). It searches all of the sites simultaneously and displays the results in a simple table. You can delete any results that you aren't interested in and get additional details for those that you are. (In addition, since jobBuddy is just a single Python script, it is a good illustration on writing network-enabled GUI applications in Python using wxPython GUI toolkit.)
What would childhood have been or be like with Fred Rogers?! In June 2008, PBS decided to change their schedule and only show Mister Rogers' Neighborhood one day per week on weekends. This site is a campaign to ask them to resume the daily broadcasts. Please support this!
In cooperation with the Internet Archive, NASA has made available a huge collection of historic photographs, film, and video from 21 separate sets in one place. The site is searchable and covers the entire history of the NASA up to the present day.
Even though they call it an "IQ test", this is really more of a trivia quiz about programming. Nevertheless, it's sort of fun to see how much you know about the esoterica of the development sub-culture.
As many of you know, grammar is a bit of an avocation of mine. Accordingly, I found this article about the precipitous drop in semicolon use interesting. Alas, with the birth of the emoticon, the semicolon now has a revived existence! ;)
Can you guess the dozens of movies represented by just one letter from their posters? Some are quite easy and others are pretty tough. These provide a good example of how iconic some fonts have become in our culture.