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.
http://cacm.acm.org/magazines/2010/2/69367-type-theory-comes-of-age/fulltext
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.)
http://lambda-the-ultimate.org/node/3465
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.
http://www.johndcook.com/blog/2009/03/18/where-does-the-programming-effort-go/
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.
http://www.michaelnygard.com/blog/2010/04/the_future_of_software_develop.html
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.
http://www.methodsandtools.com/archive/archive.php?id=103
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?
http://blogs.techrepublic.com.com/tech-manager/?p=3383
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.
http://www.informationweek.com/news/security/app-security/showArticle.jhtml?articleID=224201364
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.
http://blogs.computerworld.com/15897/c_is_number_one
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.
http://toolsforagile.com/blog/archives/260
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.
http://tuomaspelkonen.com/2010/04/12-problems-with-software-estimation-2/
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.
http://articles.sitepoint.com/article/14-ways-worst-project-manager
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.
http://www.scottberkun.com/blog/2010/should-managers-know-how-to-code/
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.
http://ayende.com/Blog/archive/2010/02/02/it-is-less-expensive-to-do-it-inefficiently.aspx
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.
http://www.sdtimes.com/link/34228
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.
http://teddziuba.com/2010/03/i-cant-wait-for-nosql-to-die.html
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.
http://gojko.net/2010/04/13/how-to-implement-ui-testing-without-shooting-yourself-in-the-foot-2/
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.”
http://blog.objectmentor.com/articles/2010/04/15/sapient-testing-the-professionalism-meme
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.
http://www.computerworld.com/s/article/9174539/Microsoft_runs_fuzzing_botnet_finds_1_800_Office_bugs
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.
http://gojko.net/2010/04/05/mind-your-boomerangs/
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.
http://www.simple-talk.com/sql/performance/designing-efficient-sql-a-visual-approach/
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.
http://www-01.ibm.com/software/ucd/designconcepts/designbasics.html
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.
http://pragprog.com/the-pragmatic-programmer/extracts/tips
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.
http://sites.google.com/site/tddproblems/
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.
http://zenhabits.net/2010/03/simplify-your-workday/
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.
http://www.guardian.co.uk/money/2010/apr/23/meetings-work-boring-stressful-unproductive
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.
http://blogs.techrepublic.com.com/career/?p=1899
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.
http://howtogetfocused.com/chapters/8-things-everybody-ought-to-know-about-concentrating/
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.
http://www.boston.com/bostonglobe/ideas/articles/2010/04/11/please_do_not_change_your_password/
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?”
http://www.danpink.com/archives/2010/03/is-purpose-really-an-effective-motivator
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.
http://litemind.com/problem-definition/
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.
http://www.sitepoint.com/blogs/2010/04/08/how-to-prioritize/
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.
http://www.thestreet.com/story/10701792/1/1-million-doesnt-cut-it-for-retirement.html
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.
http://www.dumblittleman.com/2010/04/doing-battle-with-procrastination-heres.html
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.
http://online.wsj.com/article/SB127093422486175363.html
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.
http://blogs.hbr.org/hmu/2010/03/how-to-give-your-boss-feedback.html
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.
http://technologizer.com/2010/03/08/the-secret-origin-of-windows/
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.
http://blogs.techrepublic.com.com/career/?p=1821
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.
http://radar.oreilly.com/2010/03/state-of-internet-operating-system.html
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.
http://slash7.com/everytimezone/
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.
http://sdedit.sourceforge.net/
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.
http://code.google.com/p/taskpaperplus/
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.
This web site demonstrates a home-built Turing machine along the lines of that describe by Turing in his 1936 paper “On computable numbers”. The device is truly beautiful to look at and watch.
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.
http://rymden.nu/exceptions.html
In this amazingly lucid explanation of the special theory of relativity, the author does with only words with four letters or less.
http://www.muppetlabs.com/~breadbox/txt/al.html
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.”
http://wonder-tonic.com/geocitiesizer/index.php
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.
http://technologizer.com/2010/04/25/mario/
This short and breathtaking film explores how the Fibonacci sequence and golden ratio appear in nature and the math behind them.
http://www.etereaestudios.com/docs_html/nbyn_htm/intro.htm