May 2010 Newsletter
Pedantry and mastery are opposite attitudes toward rules. To apply a rule to the letter, rigidly, unquestioningly, in cases where it fits and in cases where it does not fit, is pedantry... To apply a rule with natural ease, with judgment, noticing the cases where it fits, and without ever letting the words of the rule obscure the purpose of the action or the opportunities of the situation, is mastery. –George Polya
The person who says it cannot be done should not interrupt the person doing it. –Chinese proverb
Courage is not simply one of the virtues, but the form of every virtue at the testing point. –C. S. Lewis
The end of wisdom is to dream high enough not to lose the dream in the seeking of it. –William Faulkner
Conformity is the jailer of freedom, and the enemy of growth. –John F. Kennedy
Many live in dread of what is coming. Why should we? The unknown puts adventure into life... The unexpected around the corner gives a sense of anticipation and surprise. Thank God for the unknown future. –E. Stanley Jones
There’s no sense in being precise when you don’t even know what you’re talking about. –John von Neumann
Technology is nothing. What’s important is that you have a faith in people, that they’re basically good and smart, and if you give them tools, they’ll do wonderful things with them. It’s not the tools that you have faith in—tools are just tools. –Steve Jobs
Dynamic versus static typing (a.k.a. “type theory”) used to be more of a theoretical or philosophical matter, but now it’s moving into the practical realm of security and networking. Find out what all of the interest is about.
This decidedly academic paper discusses the common paradigms (which the author delineates from “concepts”) of programming that all developers need to understand regardless of what language is used. (Or you can just take a look at the chart of these patterns.)
Last month, we noted that project manager and analyst roles are converging. In this discussion, the CTO of a data-integration company explains how business analysts are becoming more critical to all types of integration projects.
When developing an application, very little of the actually coding effort goes to the logic of implementing the basic purpose of the system, but it’s important to recognize that the other work is just as important.
Mark Twain once said (or didn’t!), “The art of prophecy is difficult, especially with regard to the future.” So even though we don’t know with certainty what programming will be like, pundit Michael Nygard gives some insightful commentary about what he sees changing in the near and distant future.
Whether you use test-driven development (TDD) or not, writing unit tests is a good practice. This article, using examples from Java, gives some good tips about how testable code is often simpler and more robust.
IT is not alone in having a sometimes poisoned organizational culture. This pundit lists some of the problems that tend to be endemic in enterprise IT shops. What would you put on the list?
Recently published research demonstrates that moving memory management to its own thread in parallel applications improves performance by up to 20% and reduces the overhead of security checks.
Based on monthly surveys of developers, the TIOBE programming language index shows that decline in use of Java and steady numbers of C users has put the venerable C language back on the top of the list, after over four years. With the rise of the IPhone, Objective-C made significant gains, as did Google’s Go language due to simple syntax and speedy performance, along with PHP.
What do you think is the most significant waste on development projects? In this case, it’s a bit of a loaded question. This author says that its implementing features/functions that no one wants. That’s a very keen observation and one that every project team member needs to think about all the time.
Development effort and duration estimation are probably the most difficult tasks of the planning portion of any application project. Although this author doesn’t offer many solutions to this difficulty, he does succinctly explain the underlying causes and emphasizes the difference between estimates and commitments.
Even though the title of this article contains “web”, the principles described apply to almost any sort of project management endeavor. The author uses anti-patterns and humor to drive home some good points about how project managers can be effective in running projects.
Sort of like the question of how many testers per developer and the programming language wars, this is one of those questions that just seems to keep coming up. The author’s conclusion is that managers of programmers should know how to code, but that they should spend very little time actually coding and most of their time removing roadblocks that prevent the developers from getting their work done. The main premise of having a manager who knows how to code is for them to have credibility and to be able to promote the team and resolve technical conflicts.
This article explores some empirical evidence which supports the idea that the first release (or perhaps multiple early releases) of an application need to be developed without full-scale architecture in mind to confirm that it’s what the business wants. This aligns with Fred Brooks’ axiom “Build one to throw away; you will anyway.” in The Mythical Man-Month.
To many people, agile and lean development tend to be synonymous. But it’s instructive to understand the subtle differences between the two and how they can complement—and sometimes conflict with—each other. According to the experts the difference is that agile is a methodology framework, while lean is more of a philosophical mindset around doing the simplest possible things.
The RDBMS versus NoSQL debate continues… In this article, the author suggests that it will take a long time, if ever, for large organizations to abandon the RDBMS platform. He emphasizes that the database is only one aspect of application performance and that the other elements can’t be ignored.
Automated GUI testing is often (always?) sold to IT management as the panacea for all of their testing problems. But as most testers know (all too well in a lot of cases!), test automation is an arduous task and test automation efforts need to be managed as a “development project within a development project”, including analyzing their value. This article gives some excellent advice on how to do test automation effectively.
Uncle Bob Martin eloquently explains why testers are often the people on a software development project who best understand the application, because of the need, for them to be effective, “to divine the system that the customer imagined; and then to illuminate those parts of the system that are not consistent with that imagination.”
By using spare CPU cycles on PCs inside Microsoft, developers found and fixed 1800 bugs, including some security vulnerabilities on Office 2010 before shipping. Looks like a pretty good paradigm for security testing in large organizations.
This article presents an interesting paradigm for measuring the value of acceptance testing by tracking “boomerangs”, which are anything that comes back into your process from one iteration to another.
Frequently, the SQL used to read and write data to/from your database has the most profound impact on application performance of any aspect. This excellent, comprehensive tutorial gives you some hands-on concepts using diagrams to better understand and improve your queries.
Whether you are developing desktop or web applications, most programmers don’t have a lot of experience with user interface design. This simple, yet elegant, checklist contains some excellent tips to keep in mind. While they are all important and valuable, the most important to me is #3: Optimize the design for the most frequent or important tasks.
Any developer that wants to improve his or her productivity and non-language-specific skills would do well to read (and re-read!) The Pragmatic Programmer. This concise list includes all of the tips presented in the book.
Interested in learning test-driven development techniques, but don’t know how to get started? Head over to this site which presents a set of problems, from easy to hard, that you can use to learn or practice. And they have a mailing list to ask questions or get advice on your approach.
While most IT workers were satisfied with their jobs in 2009, even though they felt underpaid, a new Towers Watson study, over half indicate that they see little chance for career growth. At the same time, most respondents said that security and stability is the most important characteristic of their job.
Simplicity has an amazing calming effect. Most of these tips won’t be new to you, but taken together (i.e., synergy) they take on a whole new meaning. My favorite tip on the list is put all of your distractions (including your structured procrastination activities) together at a single time. Although I should probably heed the suggestion to write shorter e-mails more diligently.
Texas A&M University (my alma mater by the way!) researchers have shown empirical evidence of what most of know intuitively: meetings are not a valuable way to generate new ideas. Their results indicate that ideas offered in brainstorming sessions ultimately result in less creativity on the part of the entire group.
Many people worry so much about making mistakes in their work that it holds them back from doing their best. Messing up is not something to be feared as long as you take responsibility for your error and use it as an opportunity to learn something.
Distraction and procrastination are the silent killers of productivity. This article will help you understand both the science and psychology behind maintaining focus and how concentration is becoming a lost art.
After all of those frustrating years of having to frequently change your passwords on various systems, new research says that changing passwords does not make good economic sense.
A recent study indicates that understanding the value and importance of task (i.e., it’s “purpose”) is an extremely good motivator to excel. Maybe there is some value in answering your kids with something other than “Because I said so!” when they ask “Why?”
You’d be hard pressed to find a deeper, and yet incredibly productive, thinker than Albert Einstein. Here are some ways that he approached problem solving that you can use too.
Whether you need to prioritize your work tasks or just your “honey-dos” around the house, this article offers a nice technique to assign an appropriate weighting to each of your items.
Although you might question their motivation, almost 3/4 of investment advisers say that for the generations following the Baby Boomers, most families will need $2 - $3 million in retirement savings to maintain their standard of living.
While, generally, I’m a pretty organized and productive person, one of my “dirty little secrets” is the tendency to procrastinate, especially when I feel overwhelmed (seems counterintuitive, huh?!). This motivating article gives four suggestions to stop procrastination and keep it away permanently.
In this book excerpt, which grew out of a popular op-ed piece in WSJ, the author gets right to the heart of why the ubiquitous performance review is so maligned by workers at all levels of the organization: It is typically a bogus, fraudulent evaluation of the employee’s work. He says it needs to be replaced by good day-to-day management with discussions about problems as they come up.
One of the most disconcerting and daunting activities for many employees is to provide feedback to the boss. Here are some excellent tips for how to effectively provide both positive and negative input to your manager.
Microsoft Windows is ubiquitous now, but that hasn’t always been the case. (Even I remember when Windows didn’t exist!) This is the story of Tandy Trower, who was the product manager who actually delivered Windows 1.0 after many failed attempts.
Traditionally, resumes list the duties and responsibilities you have. But potential employers what to know what you have actually accomplished, not what you were supposed to do.
Some of you (if you’re old enough!) may remember that Sun Microsystems’ (remember them?!) slogan for a while was “The Network Is The Computer”. Tim O’Reilly says that cloud computing is really just the next logical step toward that reality.
With FTTH penetration at less than 20% and the FCC’s national broadband plan getting so much attention, Alcatel-Lucent researchers are using “phantom channels” to get speeds of up to 300Mbps over 2/3 of a mile spans. And they expect this technology to be widely available by 2015.
Wikitup is a desktop dictionary and translation tool. One of its most unique features is that instead of just giving you a text definition or translation, it includes other resources, such as pictures from Flickr and Picasa, multimedia files from YouTube, Vimeo, and others, and even related quotations from Wikiquote. And they are adding more resources all the time. Just hold down <Ctrl> key and click on a word in any application to get all of this.
If you need to do almost any kind of text manipulation or formatting, then Japplis Toolbox is probably just the tool for you. It does all kinds of operations, such as encoding/decoding, sorting, separating/combining lines, XML validation, date and time-value conversions, displaying all characters with particular font and character set, and much, much more. Likewise, you can run it as a standalone application, launch it online, or even use it as a plug-in in Netbeans IDE.
Get confused about what time it is on the other side of the world? Can’t figure out if a time will be convenient for others on your team? Every Time Zone is a cool online tool for visualizing the time in some common locations around the world. Just move the slider bar to compare the time of your current time zone with those locations.
Recently, we featured an online UML sequence diagram editor. If you need something a little more full-featured, but that still offers simple text entry, then Quick Sequence Diagram Editor is worth a look. It features graphical export of the diagrams in a variety of formats, including PDF, SVG, SWF, and JPEG.
Most people don’t need a full PIM or planning tool; they just need a simple way to keep track of the tasks they need to do. Taskpaper+ is unique in that is an entirely standalone web-based application, which comes with its own (Windows) web server. Or you can use a web server that you already have running on your machine. All that is required is PHP 5.x.
If you frequently work with Unix files in your Windows environment, it can be frustrating to open them in a text editor and not have them wrap correctly due to the different newline character. This small shell extension allows you to convert between DOS/Windows format (CRLF/’\r\n’) and Unix format (CR/’\n’).
If you use Linux and need to run a command with elevated privileges, such as to install an application, then typically the sudo command is used for this. However, one of the annoying aspects of sudo is that you must specify the user account password. If you are not concerned about security of your system, you can configure your system to not require password for sudo. To do this, edit the /etc/sudoers file (as the root user, of course!) and add the following line to the end of the file:
username ALL=NOPASSWD: ALL
where username is your user ID in Linux. The change takes effect immediately. (You will need to make /etc/sudoers file writeable before editing it [chmod +w /etc/sudoers]. However, you must change it back to read-only before executing sudo.)
One thing that can be (almost) intractably frustrating in Linux/Unix is updating all of the places where you PATH gets set when you install a new application. Well, with a magic one-line command, you can find all of the files that you need to update:
sudo find /etc -type f | xargs sudo grep 'PATH=' | grep -v /opt/my-appl
Usually, these files will reside somewhere in the /etc branch of the file system, but you can replace /etc with any file system branch you want (or just / to look everywhere!). Likewise, just replace /opt/my-appl with the name of the directory that you want to add to your path; this part of the command ignores files that already have the new entry in the PATH.
When you’re debugging and you get one of those cryptic Java exception messages, just refer to this table to help make sense of it.
In this amazingly lucid explanation of the special theory of relativity, the author does with only words with four letters or less.
Tired of clean, modern web designs? Pining away for the days of Geocities? Then let Geocities-izer “Make Any Webpage Look Like It Was Made By A 13 Year-Old In 1996.”
Believe it or not, Mario the plumber of Donkey Kong fame was actually inspired by a real person: the landlord of Nintendo’s original Seattle warehouse. Read this story about how he came to be a cultural icon.
This short and breathtaking film explores how the Fibonacci sequence and golden ratio appear in nature and the math behind them.