May 2011 Newsletter
There are no secrets to success. It is the result of preparation, hard work and learning from failure. –Colin L. Powell
Any process that tries to reduce software development to a "no brainer" will eventually produce just that: a product developed by people without brains. –Dave Thomas and Andy Hunt, Cook Until Done
A man always has two reasons for doing anything: a good reason and the real reason. –J. P. Morgan
Neither proofs nor tests can, in practice, provide complete assurance that programs will not fail. –John B. Goodenough and Susan L. Gerhart, Toward a Theory of Test Data Selection
The superior man understands what is right; the inferior man understands what will sell. –Confucius
To forgive is to set a prisoner free and discover that the prisoner was you. –Lewis B. Smedes
Deloitte consulting has released a new report on 10 disruptive
technology trends that they expect to have significant impact on the
enterprise over the next 18 months. Five
of the trends are "re-emergent" type and all of them focus on natural
convergence between business and IT.
http://www.deloitte.com/us/2011techtrends
This is an interesting essay about the inevitable changing role of IT as technology
becomes commoditized. The author
suggests that IT needs to adapt in how to better support business users.
http://www.infoworld.com/t/it-management/stewardship-not-ownership-its-time-it-give-control-085
In this article, the author posits that agile approaches have caught on
in almost all areas of business, except management, and that this is a weakness
that needs to be addressed. He says that
high-level organization missions and visions need to be adaptable to changing
market demands and influences.
http://www.informationweek.com/news/showArticle.jhtml?articleID=229300796
This article makes the stimulating proposition that the rise of Javascript, especially on the server side (e.g., node.js) is making the tiered application
stack, such as LAMP,
irrelevant. The author says that we are
entered the so-called Javascript age (Web
3.0?) where event streams are the focus.
http://www.infoq.com/news/2011/04/javascript-lamp
Although code reuse doesn't get as much discussion as it has in the past,
IT management often still looks for how to get more mileage out of code. This author gives some good warnings and
advice about one particular trap in this domain: the use of frameworks. He doesn't say that you shouldn't use
frameworks, but simply that they don't provide any benefit in terms of code reuse
and generally developing your own in-house framework doesn't pay off.
http://mooneyblog.mmdbsolutions.com/index.php/2010/12/07/the-framework-myth/
This is a very interesting article that points out while agile
methodologies have some great benefits, no
methodology will provide success and value unless management is committed
to it and to forging the necessary organizational change to succeed—with or
without agile.
http://www.estherderby.com/2011/03/still-no-silver-bullets.html
One of the key principles that underpins agile
techniques is doing the minimum possible to succeed and then iterating to
enhance and improve. However, since
these techniques are new, they can cause unfamiliar cognitive
biases that give use false sense of security about the stability and
success of our processes.
http://www.infoq.com/news/2011/04/agile-false-confidence
This article provides some nice perspectives on the important concepts of
agile development for those who are just starting out and for those who have
been using agile and want to continue to improve. Either way, these are some good points and
refreshers about the key elements of agile.
http://www.devinprogress.info/2011/03/agile-software-development.html
As agile methodologies take deeper root in organizations, it seems that
the emphasis on developing skills at effort and task
estimation are increasing accordingly.
This article explains some of the difficulties
that developers have with providing accurate estimates. And some folks
advocate abandoning estimation altogether.
http://blog.patchspace.co.uk/why-cant-developers-estimate-time
Sometimes, technical debt and application architecture/infrastructure
enhancements take a back-seat to application functionality enhancements. This author makes some good arguments for why
code quality should matter to your customers and how to present the case for
moving such work up the priority list.
http://theholyjava.wordpress.com/2011/04/02/code-quality-matters-to-the-customers-a-lot/
Lisa Crispin provides some insightful and practical advice on using mind maps as a tool for planning your test strategy and test cases.
http://lisacrispin.com/wordpress/2011/02/28/using-mind-maps-for-test-planning/
This article challenges the notion that agile testing is somehow different from "traditional" testing and that the important adjustment for testers to make, just like anyone else involved in agile methodologies, is to adopt the agile mindset.
http://qablog.practitest.com/2011/03/agile-thinking-instead-of-agile-testing/
This presentation outlines a new software testing approach (methodology) that the author calls hypothesis-based testing. The basic premise behind this is that you define your testing goals/objectives up front and use those to drive your testing activities. Looks like an interesting concept and probably is most valuable as one tool in your testing toolbox.
http://www.slideshare.net/stagsoft/an-introduction-to-hypothesis-based-testing
Automated regression test suites are a valuable tool for avoiding unintended changes to your application. However, if the test sometimes pass and sometimes fail, they don't do anyone any good. Martin Fowler presents remedies for the common causes for non-determinism: lack of isolation, asynchronous behavior, remote services, time, and resource leaks.
http://martinfowler.com/articles/nonDeterminism.html
Test-driven development (TDD) is one of the great tools of agile
development that can really make a difference in both productivity and quality
of development. But it's also a
difficult concept and technique to grasp.
This excellent and extensive video series, supplemented by articles,
shows exactly how to do TDD using relevant and not overly simplistic or
contrived examples.
http://jamesshore.com/Blog/Lets-Play/
I had difficulty deciding whether this item should go here or in the Just For
Fun section below…
Anyway, if you have had trouble visualizing
some of the common sorting
algorithms, maybe these videos where they are performed by dancers will help.
http://www.i-programmer.info/news/150-training-a-education/2255-sorting-algorithms-as-dances.html
As mobile applications become more pervasive, this 8-part guide gives you
a good conceptual framework for how to adapt from either desktop application or
"conventional" web development.
It is essentially platform-agnostic and focuses on concepts rather than
technical details.
http://www.infoworld.com/d/application-development/mobile-development-101-what-you-need-know-683-0
With all of the hype surrounding NoSQL and the
explosion in the number of NoSQL databases,
it's difficult to know what's really going on in this space. This 120-page academic paper provides a
detailed overview of the technology, the types of NoSQL databases, and gives
some examples of application of specific platforms. Or perhaps the future is really a blend of
SQL and NoSQL ("CoSQL" and "NewSQL")?
http://highscalability.com/blog/2011/4/13/paper-nosql-databases-nosql-introduction-and-overview.html
If you are learning
about functional programming, one of the core concepts is the idea of a closure
(sometimes called a lambda expression). For me, this was quite a tricky idea. This article uses some great explanations
with excellent examples from JavaScript to illuminate the topic.
http://skilldrick.co.uk/2011/04/closures-explained-with-javascript/
If you are looking for a new job, you want to be well prepared for interviews. One of the things to prepare is to have some good questions to ask the interviewer. This article has some really excellent questions to help get a feel for the organizational culture.
http://blog.carolynworks.com/?p=863
Most people agree that it's not polite to discuss sex and your salary in polite conversation due to the possible angst or embarrassment it could cause. But this often leaves you in the conundrum of not knowing whether you are making what you are worth or how much others at different companies make. This discussion thread runs the gamut about opinions on how to handle this difficult situation.
http://news.ycombinator.com/item?id=2438980
One of the memes currently making the rounds, mostly based on an essay by entrepreneur Peter Thiel (PayPal co-founder), is that higher education (especially in America) is the latest "industry" to face a bubble. This article (and some follow-on commentaries) says that progress in technology may reduce need to "high-end" jobs and that as a society we need to re-think what education means and how we teach skills important for the 21st century. For example, is the PhD the right approach?
http://www.economist.com/blogs/schumpeter/2011/04/higher_education
Want to see how you’d match up against the top college programming teams from around the world? These are the problems for the championship round for 2010, which was dominated by teams from China and Russia.
https://cm.baylor.edu/ICPCWiki/attach/Problem%20Resources/2010WorldFinalProblemSet.pdf
With the stress of work and the protracted recession, it seems like many folks (myself certainly included!) fall back into patterns of complaining, especially without suggesting ideas for improvement or, better yet, being involved in fixing things. This brief article notes that complaining is costly both personally and to your company and gives some great practical advice on how to stop complaining yourself and how to refocus interactions more positively.
http://strategicsense.ca/2011/02/the-high-cost-of-complaining-and-how-to-stop-it/
The inventor of the spanning tree protocol says that one of the negative side-effects of the rapid pace of technological change is that engineers make things too complex and no longer take the time to think about simple and elegant solutions to problems. She echoes Antoine de Saint-Exupéry's statement about good design: Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.
http://www.itworld.com/networking/158579/advice-engineers-ieee-fellow-radia-perlman
This author says that perpetual bad attitudes by IT professionals is destroying our career prospects because our business customers are starting to lose confidence it IT's ability to support their needs and adapt to business change, such as commoditization of technology. Thus, the idea that jobs are being outsourced becomes a self-fulfilling prophecy.
http://www.informationweek.com/news/global-cio/careers/229401637
Everyone needs a little inspiration from time to time. And sometimes you need to be reminded about why you choose a technology career to begin with. This site has brief statements from both famous and just ordinary folks like you and me about what sparked their interest in programming. You can even share your own one-sentence story.
As I get older, I'm starting to notice my memory failing more than I remember (ha ha!). Anyway, most people probably want to improve their memory regardless of their age. This article presents an interesting technique that involves visualizing the list of things to remember as chambers (rooms) in a palace (building).
http://www.mostlymaths.net/2011/03/learn-to-remember-everything-memory.html
The annual ComputerWorld salary survey is considered one of the most accurate and thorough. See how your salary compares with others, based on this survey of almost 5000 IT workers, which also shows decreasing job satisfaction.
http://www.computerworld.com/s/article/9214739/Salary_Survey_2011
As consumers gained more comfort with VOIP, SIP trunking revenues increased by 143% in 2010. The consumer market accounts for more than 2/3 of VOIP revenues.
GigaOM says that bandwidth hogs like Netflix on-demand video are the new motivation for telecom carriers to limit bandwidth.
http://gigaom.com/broadband/forget-p2p-now-isps-really-hate-netflix/
Fitch Ratings estimates that only a small portion of subscribers, mostly in the middle-income category, are likely to abandon wired television/video services, such as cable TV, in favor of so-called over-the-top (OTT) services.
http://www.worldscreen.com/articles/display/29524
With the IPv4 address pool for APNIC (Asia-Pacific) almost depleted, an entrepreneur steps in to develop a market for buying and selling addresses.
http://www.theregister.co.uk/2011/04/21/trade_ipv4_com/
Do you enjoy the awesome Evernote PIM/note-taking utility, but wish that you could use it on operating systems other than Windows? Then Nevernote is just what you need. It's a Java-based, cross-platform clone of Evernote that runs on Linux (32- or 64-bit), Mac OS X, and Windows and is compatible with the Evernote notebook file format.
http://nevernote.sourceforge.net/
SnakeTail is tail-like utility for Windows that includes some great features such as regex searching and highlighting, support for Windows Event Log, drag-and-drop of files to be monitored, very low resource (RAM and CPU) usage, MDI for monitoring multiple files, directory monitoring where the latest log file is displayed, and much more.
http://snakenest.com/snaketail/
CodeDesigner is an application architecture modeling tool that supports a wide variety of UML diagrams, including class diagrams, sequence diagrams, and more. It includes code generation tools for C, C++, and Python languages.
ConFavor is short for Context Menu Favorites. It adds up to 10 (unlimited in paid version) "favorite" folders to your context (right-click) menu in Windows to simply copying/moving files, quick access to these folders, and more. You can even add remote machines to your "favorites" and access the "favorites" list in Windows standard Open and Save dialog boxes.
While this interactive shell using C language was an April Fool's Day joke, a similar tool actually exists and may useful to C/C++ developers or those who are learning these languages. IGCC is essentially a REPL for the GCC compiler and allows the user to interactively enter and execute C/C++ programs. Requires GCC (of course!) and Python.
http://www.artificialworlds.net/wiki/IGCC/IGCC
This simply, but unique utility adds some basic text editing functions to any text editor, including venerable Windows Notepad, or word processing application, such as Microsoft Word or OpenOffice Write. Some of the editing functions are removing blank lines, trimming leading or trailing spaces, sorting lines of text alphabetically or numerically, and changing text case. All features are accessed by a simply hotkey.
http://www.animal-software.com/dolphin-text-editor-menu.php
Even though I personally prefer dogs over cats, this comic makes a good point about agility. :)
http://comics.com/big_nate/2007-08-19/
Ever get the feeling that software development is sort of like a parallel universe? Perhaps these comparisons between famous Monty Python sketches and programming will help explain this.
One of the developers of the software for the Tron: Legacy special effects recounts the 6-month development process. This is some both interesting and amazing work. The developer even recorded his own use of Unix shell for the movie scenes.
http://jtnimoy.net/workviewer.php?q=178
These stunning photos (incredible just by themselves) take the concept of animated GIF to a whole new level. This one reminds of how the Mona Lisa's eyes follow you at every angle.
http://fromme-toyou.tumblr.com/tagged/cinemagraph
You might be tempted to think that this is really just some sort of silly April Fool's Day joke, but Commodore is shipping a powerful up-to-date PC in a retro C64 body, complete with the brown keyboard. Check out this review for more details. The starting price is $595, the same as for the original back in 1982.
http://www.commodoreusa.net/CUSA_C64.aspx
I don't really play many computer games, but I do enjoy some of the retro classics of my childhood. Check out this HUGE Pac-Man game with many of the "levels" interconnected. Written in jQuery and HTML5.
http://worldsbiggestpacman.com/
This is an interesting and inspiring public installation art project, where people were encouraged to write what they wanted to accomplish before they died. The blackboard was erased each day and images captured over a number of weeks.
http://candychang.com/before-i-die-in-nola/
From one of my favorite off-beat web sites comes what has to be the most awesome case mod ever. This guy spent 18 days machining parts to build a computer case that is a precise replica of Wall-E.
http://englishrussia.com/index.php/2009/04/08/russian-wall-e-case-mod/
I'm not sure why I found this video so humorous, but it has to be one of the best mashups between 1970s icons The Muppets and Queen.
http://www.youtube.com/watch?v=tgbNymZ7vqY