August 2008 Newsletter
Having a strong desire or being successful does not mean that you are going to feel great all the time. No matter how enlightened I become, I will not be positive all the time. You have to understand the swing of the pendulum. It must swing back and forth. The only other alternative is to sit still in neutral, which is precisely what most people do. –Thomas D. Willhite
One of the most important ways to manifest integrity is to be loyal to those who are not present. In doing so, we build the trust of those who are present. –Stephen Covey
People seldom become famous for what they say until after they are famous for what they've done. –Cullen Hightower
A compliment is a gift, not to be thrown away carelessly, unless you want to hurt the giver. –Eleanor Hamilton
The goal you set must be challenging. At the same time, it should be realistic and attainable, not impossible to reach. It should be challenging enough to make you stretch, but not so far that you break. –Rick Hansen
My definition of an expert in any field is a person who knows enough about what's really going on to be scared. –P. J. Plauger
It is not enough to be industrious; so are the ants. What are you industrious about? –Henry David Thoreau
It is the greatest of all mistakes to do nothing because you can only do a little. –Sydney Smith
This article describes the five key failure modes for projects that are likely to cause the most damage both to the project and the reputation of the project team.
As connectivity and "always on" infrastructure becomes ubiquitous, the role of the software developer is changing. Here are ten principles (not really patterns or tools) that successful programmers need to understand to be successful in the new environment.
About World War 2, Eisenhower said, "Plans are nothing; planning is everything." This article explores applying this principle to development and how to develop a plan that is flexible and adaptable.
Jeff Atwood gives a good discussion about when you should and should not normalize your database structures taking into account performance and storage.
Many organizations have a technical career path that takes a person from being a developer or analyst to the role of system or application architect. But what is actually different about architecture compared to the old roles? This article explores some of the specific and significant roles of the architect.
The technical lead role in software development is one of the most difficult. You must strike the proper balance between coding, leadership, and project management. Here are some great tips on how to set the proper boundaries of those responsibilities.
Jeff Atwood considers taking the minimalist approach to programming in order to reduce complexity and improve readability and maintainability of code.
Project managers don't get respect, because, too often, they focus too much on the process (and meta-deliverables like project plans, status reports, etc.) and not on the results/output. PMs need change perspective on learn what they can do to help their teams.
Most IT professionals understand that the role of the IT organization is changing to align with business needs. Just how much is the pendulum swinging away from the technology focus?
This article explores why simplistic techniques for project estimating and planning result in failed and over-budget projects. The author recommends that when building a project team project teams be limited to 8-person teams to avoid excessive overhead.
Having trouble convincing management about the importance of testing? Maybe you need to get Darth Vader to make your case for you!
Many web-based applications that are developed today provide some type of SOA API that allows other applications to request services. This creates a new challenge for testers in how to validate these functions. The soapUI utility is a Java-based tool for testing web services. See this article for a quick overview on how to set up and use soapUI.
This article gives a great summary with highlights from a recent presentation by Alan Cooper, the father of Visual Basic and interaction design, about how developing good software sometimes requires a back-door approach to quality.
We all know that testing often gets short shrift on most development projects. Here are some strategies for getting the proper attention and resources for testing.
To be successful with Unix/Linux, you really need to know your way around the command prompt, known as the shell. This comprehensive tutorial gives you the basics plus some intermediate topics, including a great "tour" of the basic top-level directories and what they do.
While intended for software engineering/computer science students, this free guide is a useful reference for anyone working on a development project. It covers all of the key aspects of a project, including project management, analysis and design, and implementation.
Even if you don't use Unix/Linux, the grep command line utility should be in your toolkit. (Get the native Windows version here or use Cygwin.) This article, including the many excellent comments, gives you a nice introduction to the simple power of grep.
This is a free, online version of an excellent text book that teaches object-oriented programming (OOP) using examples in Java. The book focuses more on OOP principles than on Java, so it is an excellent reference, as well.
One of the most important aspects of understanding and using Linux or Unix is to understand permissions on files. This nice, detailed tutorial gives good explanations of the concepts and practical implications.
Recently, there has been a shift in interest from object-oriented programming (OOP) to functional programming (FP). This tutorial, which gives examples from C#/.NET (but doesn't rely on knowledge of either!), provides a detailed introduction to the concepts and practice of FP.
If you have a to-do list and just continues to get longer instead of shorter, this can actually hurt your productivity. This author suggests focusing on (and only on!) a list of 5 items that you want to accomplish for the day. Then you can re-evaluate and re-prioritize the next day based on new items that come in.
A Goldman Sachs IT staffing survey says that IT job market will shrink in 2009, with contractors and outsourcers taking the brunt of the reductions. (However, other research indicates an increase in outsourcing.) CIOs say that their top priorities are now server consolidation and server virtualization to reduce impact of rising energy costs.
New research indicates that 15% - 20% of people are considered 'chronic procrastinators' and technology such as mobile phones and computers are giving people more excuses to waste time. Furthermore, procrastination is contributing to increases in depression, insomnia, and other mental illnesses.
Most people consider programming to be a very linear and technical pursuit, but, in fact, like many engineering disciplines, it is a really a very creative and mentally fulfilling activity that requires examining various alternatives and choosing the appropriate (not necessarily the "best") one. Here are some tips on keeping the creative juices flowing in development.
American competiveness is being put at risk due to the broken software patent system. Patents for drugs and "hard" technologies must be very specific, but software patents tend to be generic and abstract. The USPTO seems to be coming around on this matter.
Distributed project teams are here to stay and so are teleconferences and virtual meetings. Here are some tips on how run them effectively and how they differ from traditional meetings and some of the "gotchas".
In this book excerpt, project management expert Scott Berkun suggests that prioritization of activities is the first step to success, since it provides a framework for everyone on a project to understand the most important things and what to do next.
We all know how important good writing is in communicating our ideas. But why is good writing so difficult? Here are some great tips, extracted from an excellent essay, on how write better, especially (but certainly not exclusively) for those who blog or doing other online writing.
Want to assess your chances of getting that promotion? Here are the questions that you should be asking yourself.
Here are 25 brief, but powerful, tips to keep in mind the next time you are looking for a new job.
Wired editor Chris Anderson posited the concept of the "long tail", that the Internet would allow even small volume items to be offered, a few years ago. Now, some new research is calling these ideas into question. I don't think that this is the end of the concept, but just sort of a maturing of what it means.
While this article is slanted toward managers, it offers some good advice to anyone involved in a project who wants to successfully present and promote their ideas.
Want to share a file with others, but it's too big to send via e-mail? Well, then fileai to the rescue. One of the great features of fileai is that you file is not stored on some intermediate host: You transfer your file directly from your computer to others. Go to the site and select the file to be shared and you'll get an URL to send to others so that they can download the file.
At it's core, KeyBreeze is a replacement for the Windows Run dialog, but it does immensely more. You can use it's command line to launch programs, open files, open web sites, do Internet searches, lookup words online, paste frequently used text, and much more. You can even customize it to define your own shortcut commands.
Pencil Project is a unique tool built on top of the excellent Firefox 3 web browser that allows you to create diagrams and web page prototypes with ease. It has built-in stencils for most common diagram and web page elements. And user-defined stencils are supported. Output can be generated in PNG format.
SQL Developer is Oracle's flagship database development and query tool. However, since it is Java-based it can actually be used to connect to most any database that has JDBC driver support. For example, see this article for how to use it to connect to MySQL. One of the excellent features of SQL Developer is that can have connections to multiple databases open in a single window.
KDE Window Resizer/Mover is a slick little background utility that emulates the KDE functionality for resizing and moving windows: hold down the <Alt> key and left-click anywhere in a window to move it or right-click in the window to resize it. The utility is actually just an AutoHotKey (a great freeware utility itself!) script and the source is available on the site if you want to dissect or modify it.
Who knew that Chuck Norris was a master Java developer, in addition to his acting, martial arts, and political skills? :)
This site provides an incredible 3-part video tour of the factory that produces and packages the 19 billion Lego bricks made each year. And, if you though the mainframe was dead, think again; this factory is completely controlled by a mainframe. If this isn't enough for your, check out this Lego Mindstorm robot that autonomously solves a Rubik's cube.
This site is a cool Flash-based play site. Each pixel on the screen represents a grain of digital sand. Click the mouse to drop sand and watch it pile up at the bottom of the screen. You can even change to one of thousands of different colors. Soothing and relaxing!
In these difficult times, what could be more important than the intractable debate over the orientation of toilet paper rolls on the holder?! :)