March 2012 Newsletter
Quotable Quotes 1
Software Development Process and Methodology 2
Software Testing & Quality 3
Career Development/Miscellaneous 5
Telecommunications/Networking Industry 6
Useful Utilities 7
Productivity Tips 8
Just For Fun 8
The message that precedes all others—in art as well as life—is simple: Pay attention. –Harlan Ellison
Ever tried. Ever failed. No matter. Try again. Fail again. Fail better. –Samuel Beckett, Worstward Ho
Mental pain is less dramatic than physical pain, but it is more common and also more hard to bear. The frequent attempt to conceal mental pain increases the burden: it is easier to say “My tooth is aching” than to say “My heart is broken.” –C.S. Lewis, The Problem of Pain
We are all in the gutter, but some of us are looking at the stars. –Oscar Wilde
Be soft. Do not let the world make you hard. Do not let the pain make you hate. Do not let the bitterness steal your sweetness. Take pride that even though the rest of the world may disagree, you still believe it to be a beautiful place. –Unknown
With good architecture, debugging is a breeze because bugs will be where they should be. –David May
Come, my friends,
'Tis not too late to seek a newer world.
Push off, and sitting well in order smite
The sounding furrows; for my purpose holds
To sail beyond the sunset, and the baths
Of all the western stars, until I die.
It may be that the gulfs will wash us down:
It may be we shall touch the Happy Isles,
And see the great Achilles, whom we knew.
Tho' much is taken, much abides; and tho'
We are not now that strength which in old days
Moved earth and heaven; that which we are, we are;
One equal temper of heroic hearts,
Made weak by time and fate, but strong in will
To strive, to seek, to find, and not to yield.
–Alfred, Lord Tennyson in Ulysses
The editor of Dr. Dobbs Journal notes that, even though many people emphasize how little has changed in software development in the last few decades, one of the good changes in the past several years is that users and stakeholders are now an integral part of the development process.
Most professional developers use test-driven development (TDD). However, this article points out that we need to apply TDD (and any practice!) with intelligence and not blindly follow the "rules" of TDD, nor should we consider TDD to be beyond criticism. (Should we write tests for existing code?)
Technical debt is a fact of any project. However, this author emphasizes that you need to make a good assessment of the real cost and prioritize that work just like you do anything else on the backlog.
Most of us would probably admit that we don't do the best job (or even give it due attention) in estimating user stories. This article suggests a two-factor estimation matrix that uses story size and complexity to determine relative size. Even more importantly, the author provides some concrete measures and examples for how to determine size and complexity.
This brief, but insightful article emphasizes that we need to treat any technology that we use (programming languages, OSes, etc.) as precisely what they are: tools. Accordingly, we need to avoid getting too close to them and simply use them to gain an advantage.
As we've discussed in the past, agile methodologies are now mainstream and appear to be undergoing some backlash and transformation. This author focuses on building great teams to accomplish creation of great applications as one of the core underpinnings of being agile.
By their very nature, large organizations are more susceptible to watering down agile principles and practices. In this video (transcript provided too), the principals of agile development consultancy Lithespeed discuss how to avoid some come pitfalls in agile implementation.
Sometimes with agile development, we end up throwing the baby out with the bath water when it comes to requirements. Agile doesn't mean "no documentation" and requirements are still a key element of success. Developing good user stories with measurable acceptance criteria are vital to delivering business value. Learn about the agile requirements definition and management cycle.
Our business customers will no longer accept business as usual from IT. In the realm of project management, lean methods that measure business value and whether or not the project is addressing the intended need or problem.
You probably think that 15th-century shipbuilding has very little to do with software development, but this case study shows how many of the problems that befall projects in the physical world easily transfer over to the digital realm.
Part of a project intended to improve software quality and reliability, this article explores the background of development and the reasons for poor software quality. The author's indication is that complexity is the reason, but not for the same reason that Brooks proposed. Instead, he says temporal inconsistency and unresolved dependencies are the underlying problem.
This article presents an interesting concept around the various domains (the author calls them "quadrants") of testing and the various techniques suitable for each, along with how effective automation (or lack thereof) is for those methods.
When doing test planning, it is important to look for a broad variety of relevant tests. This excellent list gives over 3 dozen places to look for possible tests.
Just as development and manual testing approaches must change in an agile environment, you need to adjust your thinking with respect to test automation too. Agile techniques are very applicable to test automation, since it is a type of development itself.
This excellent article discusses the forces that are changing testing, such as agile methods and the increased focus on automated testing.
In this video, the inimitable Neal Ford explains that the key to success in functional programming is to develop skill in thinking functionally. He goes on to give some practical suggestions on how to do this along with some examples. [Slides from the presentation are available here.]
Need to write a shell script, but don't have a lot of time to learn? While it will certainly take you more than 10 seconds, this comprehensive, yet brief, guide teaches you the basics and includes good examples of each concept.
HTTP is the lingua franca of web-based applications and is critical for web services. This tutorial covers the lifecycle and "anatomy" of an HTTP request and response and best practices for using the HTTP methods.
To go beyond basic web application development, many experts recommend understanding the protocols that underlie the Internet. This comprehensive, step-by-step tutorial teaches you how to use the ubiquitous tcpdump utility for both application tracing and security troubleshooting.
Maybe this belongs in the "Just For Fun" section below… Anyway, Jessica Hagy of Indexed fame (one of my favorite sites!) gives you some tips for how to improve yourself in her own quirky, inimitable style.
In this article, a technology critic recognizes the important work that people in technology do. And he issues a very relevant challenge: To make systems about the users (people!) and not the technology.
There is no shortage on the Internet of lists of what it takes to be a great programmer. And, while I don't necessarily subscribe to all of the concepts of Zen, this is an excellent list of both technical and "soft" skills of good programmers from the Zen perspective.
Gartner fellow Tom Austin discusses some of the changes that they foresee how we work. A couple of the most interesting ideas are that work will be more ad hoc (less centralized) and that people will be more involved in the creative, non-process aspects.
There are plenty of lists out there about what you as a developer should do to improve in the upcoming year, but this list seems to be quite balanced and emphasizes skills that will pay off this year as well as prepare you for the next 3-5 years.
As technology folks, we like to have a heuristic or pattern to follow to accomplish things. This excellent article shows a concrete framework for getting out of the procrastination rut by analyzing the situation and finding the specific reason for putting things off.
In most organizations, meetings are notorious wastes of time and resources, for many reasons, including wrong participants, lack of structure/purpose, and many more. This article makes a few tangible suggestions for only holding meetings when necessary. My favorite is to make everyone an optional participant so that only those who really want to be involved in resolving the issue attend.
Borrowing from Steven Covey's 7 habits, this author gives some excellent ideas for how to apply each of these principles to programming. My favorite tip is around putting first things first and appropriately balancing firefighting with productive work.
A technique called transcranial direct current stimulation (tDCS), which historically has been used for treating depression, shows promise for dampening activity in the prefrontal cortex of the brain, which may help you get into "flow". While I doubt it, perhaps this provides some explanation for how your brain works when using Scrum.
Mark Mills and Julio Ottini suggest that similar to how electrification and telephony spurred economic growth in the 20th century, we are poised for another boom in the 21st century based on big data, smart manufacturing and the wireless revolution, all of which find their roots in the U.S.
In a short 3 minutes, entrepreneur Eric Ries shows how to do the "5 whys" introduced in the Toyota Production System and why this exercise his valuable. A couple of key points that he makes are that "technical problems" usually mask an underlying human problem or error and that you should only address problems with process when necessary.
When it comes to managing or supervising others, soft skills are what matters most. Here are some tips for how to effectively motivate employees.
With a hat tip to Clayton Christensen's classic about disruptive innovation, The Innovator's Dilemma, this article explains the history behind the large telecom carriers and shows how that history makes it difficult from them to innovate. It goes on to demonstrate that there is still plenty of room for innovation in telecom, but that most of it is happening at the small start-ups (cf. Nicira above).
Voice over IP (VOIP) is now ubiquitous and the norm for most "landline" voice service. This article looks at how wireless VOIP is set to revolutionize telecom.
Terminator is a cross-platform terminal application intended to replace applications such as xterm, rxvt, Gnome Terminal, and PuTTY. Some of the features include automatic logging, drag-and-drop support for text and URLs, text searching with highlighting, multiple tabs, intelligent scrolling, UTF-8 character support, and more.
Sudo for Windows (sudowin) is a free utility that allows you to run applications with elevated privileges as a standard (non-administrator) user in Windows. It is based on the concepts of the venerable Unix/Linux sudo application. Some of the nice features include shell integration that adds Sudo… to context (right-click menu) and that objects created by the application retain ownership by the standard user. Note: If this application doesn't meet your needs, check out this comprehensive list of alternative tools.
There are online REPLs for almost any programming language that you can think of. SQL Fiddle is a free, online tool that allows editing and live evaluation of SQL. It supports MS SQL Server, MySQL, PostgreSQL, and Oracle variations of the SQL language. You can even import tables and data from DDL files.
REST Client Tool can be used as a standalone tool or as an Eclipse plug-in for direct interaction with REST services. It supports all HTTP methods (PUT, POST, GET, etc.) and results are displayed as formatted XML and/or JSON. Some features include ability to send POST data in body or URL/URI, sending input data directly or data loaded from a file, and simultaneous display of request, response, and web browser views.
Do you love the Vim text editor and pine for a file manager with the vi key bindings? If so, then vifm is just what you need. Available on both Windows (native binary—does not require Cygwin) and Linux, it is a simple, text-based file manager that you can use entirely via the keyboard. It includes interactive command line, also similar to the Vim/vi normal mode.
Don't like being interrupted by low-priority calls during the night? If you have an Android phone, QuiteSleep can help. Just enter the list of callers who are allowed to interrupt and the start and end times and QuiteSleep will disable ringing for any other calls. You can even set it to reply to calls with a text message, if you like.
If you frequently re-open the last document you were working on when launching MS Word, why not let Word itself do that for you. Just right click on the desktop and choose New | Shortcut from the context menu. Browse for the location of the MS Word executable (such as, C:\Program Files (x86)\Microsoft Office\Office12\WINWORD.EXE for Office 2007). Before clicking Next, on the shortcut command line (outside the double quotes) enter /mFile1. This tells Word to run the macro named File1, which opens latest file in the Recent Documents list, at start up. Click Next and enter a name for your shortcut, such as Open Last Document in Word. Then click Finish button. To make it even more useful, right click on the new shortcut and choose Properties. In the Shortcut tab, choose a Shortcut key, so you can launch it right from the keyboard.
One of the places where HTML5 has made a big splash is with browser-based games. Here's a list of 20 games that really show off HTML5. No matter what kind of games you like, you're sure to find at least a couple to tickle your fancy (or whatever the expression is today).
How much do you really know about science? This quiz is not short (50 questions!), nor is it simple. It covers are broad swath of the science landscape.
While Eastern Europe has had the coldest winter in decades, we haven't had much winter at all in my neck of the woods, so maybe that's why I found these images so fantastic. This artist's canvas is a snow-covered field and his brushes are his boots. What he creates is amazing.
This humorous, yet moving, tribute to Dennis Ritchie is a must-watch. Even though Steve Jobs death was the most publicized in the technology circles in 2011, arguably, Ritchie had the greatest impact of those who died last year.
This just goes to show that having a little bit of fun with your work isn't such a bad thing.
With all of the copyright controversy swirling around the Internet, maybe this isn't really all that funny. Apparently, AT&T has copyrighted an empty shell script (i.e., a script that does nothing). Check it out!