February 2012 Newsletter
A computer is a computer. If something new comes up, it's cute, but no more than that, because it's something the computer has always been able to do; you just didn't discover it before. It's like finding a penny under the couch—it's always been there, but it's cute to discover. –Bob Whitehead
Good advice is always certain to be ignored, but that's no reason not to give it. –Agatha Christie
Ideas don't make you rich. The correct execution of ideas does. –Felix Dennis
All good ideas arrive by chance. –Max Ernst
Chance favors the prepared mind. –Louis Pasteur
The string is a stark data structure and everywhere it is passed there is much duplication of process. It is a perfect vehicle for hiding information. –Alan Perlis
It’s difficult to be rigorous about whether a machine really ‘knows’, ‘thinks’, etc., because we’re hard put to define these things. We understand human mental processes only slightly better than a fish understands swimming. –John McCarthy
Many folks make predictions about what will happen in next few years in
programming. This comprehensive,
detailed article makes some very good observations about some ideas,
particularly in the realm of the rise of functional programming (Haskell, Scala, etc.).
http://pchiusano.blogspot.com/2011/12/future-of-programming.html
Now that it looks like HTML5 has won the RIA wars
(particular since Adobe has thrown their hat in the HTML5 ring), what does the
future for HTML5 hold? These analysts project that HTML5 will supplant desktop
applications, but that it will take at least 3-5 years for the majority of
application development to move to HTML5.
TDD experts Tim Ottinger and Jeff Langr recommend the FIRST mnemonic to describe the
fundamental characteristics of unit tests:
Fast, Isolated, Repeatable, Self-Verifying, and Timely. The explain each
principle and use salient examples (mostly in Java) to demonstrate the
concepts.
http://pragprog.com/magazines/2012-01/unit-tests-are-first
Drawn from the new book No-Drama Project Management,
this article gives some great suggestions for things PMs can do to help reduce
the chances of major dust-ups on a project, such as addressing issues directly
when they come up and avoiding "wish lists".
http://www.baselinemag.com/c/a/IT-Management/Ten-Ways-to-Eliminate-Drama-from-Projects-484873/
The widespread adoption of social media platforms by consumers has made
improved design
of business applications an imperative for IT organizations. Simplicity
(which is not just the absence of complexity, but also intuitive behavior and
the like) and feature reduction are orders of the day.
http://www.fastcompany.com/1805277/the-future-of-better-designed-enterprise-software-starts-now
Atomic Object, which is well-known for their use of evidence-based
management, notes that small teams (5 or fewer people) are significantly
more efficient than larger (20+ people), because of the reduced communication and
coordination overhead.
This article gives a summary overview of Scott Ambler's annual survey on
project success. Overall, regardless of
methodology, over half of the projects in the survey were considered
successful, with agile and iterative methods leading the pack with ~2/3 of
projects successful and under 1/4 challenged.
http://www.infoq.com/news/2012/01/it-project-success-2011
Many organizations, often when adopting agile methodologies, get obsessed
with making sure each resource (I mean "developer" J) has maximum utilization. This author emphasizes that this is a recipe
for disaster, especially because it leaves no time for innovation, creative
thinking, and the like and may even lead to mental
paralysis.
http://manage.techwell.com/articles/weekly/management-myth-1-myth-100-utilization
As agile development methodologies enter the mainstream (and go through some
growing pains), organizations need to guard against following the practices
and not actually being agile. This author
says that the key is for people to continue to challenge assumptions and the
way that things are done in the name of agile or otherwise.
http://www.sdtimes.com/blog/post/2011/11/11/Agile-slaves.aspx
C++ expert Herb Sutter presents the idea that the single-core processor
era (governed mostly by Moore's Law; although we probably
shouldn't bury it just yet) is over and that multi-core is the future. He elaborates on a variety of multi-core
"architectures" and says that "heterogeneous
distributed parallelism" is the next significant challenge confronting
developers.
http://herbsutter.com/welcome-to-the-jungle/
This author recommends that prototypes of your application are an
indispensible (and yet costly!) way to learn from customers what they most need
and value from your system. He goes on
to discuss how quality of the system can only be improved by introducing
additional quality (value) in his software development corollary to the law of conservation
of energy.
http://techoctave.com/c7/posts/65-prototypes-and-the-law-of-the-conservation-of-quality
As with most any development methodology, as agile methods have matured
and entered the mainstream, they have fallen victim to one of the more
insidious maladies: focus on the process
instead of the principles. (Anyone
remember the first
point of the Agile Manifesto?) This article argues that instead of focusing
on process, teams need to develop discipline in following the important
practices agreed on by the team to ensure success.
http://www.softwarequalityconnection.com/2012/01/less-process-more-discipline/
This developer makes an eloquent argument for why we should not obsess
over all of the little details when building systems and should instead ensure
that our architectures and designs meet the needs of the user and are flexible
enough to be enhanced, because nearly every system will need updates at some
point.
http://blog.phiz.net/theres-no-shame-in-good-enough
Test automation has plenty on folks who are cheerleaders for it and probably just as many detractors. Lisa Crispin offers a very balanced approach to how to develop a test automation strategy that fits your organization. A couple of key points worth repeating include you must clearly define your strategy and goals before choosing a tool and the fact that automated tests are code just like application code.
http://searchsoftwarequality.techtarget.com/tip/Devising-a-test-automation-strategy-Getting-started
While I don't necessarily agree with all of this author's points, he does make a strong over-arching point about the importance of good and close relationships between testers (those doing the testing, regardless of their title) and the developers.
http://sriramk.com/blog/2012/01/testing.html
This article gives many important concepts related to software testing, especially around how to plan and effectively use limited resources in testing. The author notes that usage patterns of an application can change over time, which is why some defects stay latent for such a long time.
http://www.johndcook.com/blog/2012/01/12/risks-of-buggy-code/
Matt Heusser reviews James Bach's keynote address at this year's CAST conference, where Bach discusses the future trends that he sees. Bach sees such concepts as session-based test management (SBTM) increasing in popularity and a more distributed approach to testing gaining favor.
http://searchsoftwarequality.techtarget.com/tip/Trends-and-innovations-in-software-testing
One of the software testing teams that I worked on had an (unofficial) slogan of "Good Enuf". Even though this was certainly tongue-in-cheek, it did have a legitimate aspect and that is that at some point you must stop testing and deliver the application. This article makes essentially the same argument that you need to find the appropriate "inflection point" where significant additional effort is likely to be necessary to find only a small number of defects, most of which are likely low severity.
http://www.softslate.com/blog/2011/08/testing-has-a-point-of-diminishing-returns.html
Even though it hasn't been approved officially as a standard, the future
is now for HTML5 with current versions of most major browsers supporting
it. As a web developer, you need to know
some of the basics. Take this short quiz
to see how much you know and learn a few tricks along the way.
http://net.tutsplus.com/articles/quizzes/nettuts-quiz-6-how-well-do-you-know-html5/
This site includes the full text of the HTML5 Crash Course book. It gives a comprehensive overview of HTML
basics (no experience necessary) and goes on to discuss the new features
introduced in HTML5, such as canvas,
advanced features for forms, local storage, and embedded multimedia.
Memory leaks are notoriously intractable problems to solve in any
programming language. This tutorial
shows you how to hunt them down in Java using only the tools included in the
standard JDK, such as jps,
jmap,
and jhat.
http://plumbr.eu/blog/solving-outofmemoryerror-jdk-tools
From the same author of the excellent Little MongoDB Book comes a brief, yet comprehensive,
introduction to Redis NoSQL
key-value
store.
http://openmymind.net/2012/1/23/The-Little-Redis-Book/
This excellent tutorial about the underlying concepts of time complexity of
algorithms also uses some good examples of the common "big O"
complexity for well-known algorithms.
http://blog.philenotfound.com/2011/12/brief-intro-to-algorithmic-time.html
Many technology managers are great technical employees who were promoted and they don't always know the ins and outs of management. Likewise, employee disengagement continues to rise. This article has some great tips what to do (and not do!) to keep your team motivated.
A report by the U.S. Department of Commerce reviews competitive threats from outside the country as well as internal weaknesses. One example cited is that fact that U.S. had a trade surplus in "advanced technology products" (biotechnology products, computers, semiconductors and robotics) until 2002, but had an $81 billion trade deficit in this area in 2010.
http://www.computerworld.com/s/article/9223191/
Writer Pico Iyer opines about how our increasingly connected world is driving us away from personal relationships and what are losing in the process. He gives some ideas for creating "thinking time" and time disconnected from the Internet.
http://www.nytimes.com/2012/01/01/opinion/sunday/the-joy-of-quiet.html
While some say that this is a great time to be a programmer and there's even evidence of increased political clout for developers, this blogger opines about how programmers don’t seem to enjoy the same social status afforded to others. What do you think about where developers fit in the pecking order?
http://www.goodbuzz.org/blog/conversation/programmers-high-social-status/
These authors say that, while most of us are proud of our ability to multitask, our frenzied pace is causing changes to our brains that are similar to those of ADHD patients. They lay out three strategies for improving focus and concentration. And here are more tips specifically for programmers.
http://blogs.hbr.org/cs/2012/01/train_your_brain_to_focus.html
At one time or another, most of have probably dreamt about giving up on e-mail (or perhaps declaring e-mail bankruptcy) because it takes so much time, but it's one of the essentials of 21st century life. Nevertheless, here's one guy who has successfully replaced almost all e-mail with communication via social media, which serves to demonstrate how important business-oriented social media is to IBM.
http://www.wired.com/wiredenterprise/2012/01/luis-suarez/
One of many salary surveys, the Janco survey is generally well-respected in the industry. Some of the highlights from the latest report are that salaries are up about 1% over a year ago, which puts them back at the pre-financial meltdown levels, and more organizations are bringing IT operations, including data center management, back in-house.
http://ww.e-janco.com/Salary.htm
This author recommends that each of us take time to do things away from programming, especially as it relates to how it feels to be a beginner again. The overall concept seems to be that we need to rekindle the art of developing expertise.
http://rawsyntax.com/blog/stop-programming/
This programmer gives 11 excellent tips for how to handle technical job interviews. The article title comes from his first tip which is basically don't do things that you aren't comfortable with in the interview; if you don't like writing on a whiteboard, tell the interviewer you'd rather write on paper.
http://www.jperla.com/blog/post/don-t-write-on-the-whiteboard
Recently, we featured an essay about solitude. In a similar vein, Susan Cain, the author of the new book Quiet: The Power of Introverts in a World That Can’t Stop Talking, discusses how introverts often demonstrate amazing creativity when allowed time alone and informal interactions.
One of the topics making the rounds on the Interwebs recently is Paul Graham's observation that the most successful entrepreneurs are those who demonstrate exceptional resourcefulness, especially when it comes to finding information. Certainly, knowing how to find the necessary and appropriate information is also a hallmark of good developers. Here are some ideas for improving your resourcefulness.
http://www.jasonshen.com/2012/how-to-be-relentlessly-resourceful/
Based on a survey of 5300 workers, here's the list of corporate doublespeak that is most annoying. Strangely (to me, at least), "paradigm shift" didn't even make the list.
This article is a good reminder that when trying to improve your skills, you need to avoid flow and instead concentrate on doing the difficult things. You should reserve flow for the mundane tasks.
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.
http://www.forbes.com/sites/jessicahagy/2011/11/30/how-to-be-interesting/
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.
http://www.techrepublic.com/blog/10things/10-skills-for-developers-to-focus-on-in-2012/3009
Tom Friedman, most well known for his book The World Is Flat about globalization, revisits the topic noting that fast Internet service is one of the key drivers of successful local economies, along with a university, an educated populace, and a dynamic business community.
http://www.nytimes.com/2012/01/04/opinion/friedman-so-much-fun-so-irrelevant.html
According to a new report, global telecom growth for the next 5 years is expected to exceed 5% annually reaching $2.7 trillion by 2017 with Asia-Pacific and Latin America regions leading the way.
Swiss File Knife, typically known as sfk, is an incredible multifunction command prompt enhancement tool for Windows. Just a few of the built-in features are find and extract text in binary files, run an instant HTTP or FTP server, create or verify MD5 hashes for files, run Windows command line utilities on multiple files, and many more. For a quick tutorial on some of the awesome things you can do with sfk, check this page.
http://stahlworks.com/dev/index.php?tool=sfk
Note&Do is an add-in for Microsoft Office that includes notepad (scratchpad) and a simple to-do list. In the notepad, you can drag-and-drop text to and from documents and spreadsheets and even pin notes to any or all Microsoft Office applications. The to-do list provides basic task management features and you can even color-code your tasks (and notes).
http://www.ablebits.com/office-notes-todo-addin/index.php
Koomato is a Microsoft Outlook add-in for using the Pomodoro technique. Just set the work and break periods and Koomato will alert you when each is finished.
http://sourceforge.net/projects/koomato/
Got an Android smartphone or tablet? Then you can get a fully-functional Java development environment that runs right on your phone. The features are too many to mention here, but some of the highlights include Vim text editor, telnet and SSH daemons to allow remote logins (use your desktop keyboard and the phone's screen), Git version control, and a terminal emulator with ASCII keyboard. And it all runs as a regular application, so you don't have to root your phone.
http://www.spartacusrex.com/terminalide.htm
Green Cloud Printer driver is a Windows enhancements that allows you reduce printing costs. It becomes the "default" printer and will work with any of your existing printers. It shows you a preview of your print job and allows you eliminate blank pages, print 1-up, 2-up, or 4-up from any application, print file to a PDF file (using built-in PDF driver), save the generated PDF to your Dropbox, Google Docs, or Minus.com account, and much more.
http://www.obviousidea.com/windows-software/greencloud-printer/
Elyse is a simple, unobtrusive file system enhancement for Windows (and Mac OS X) that allows you apply tags to groups of files, regardless of where the files are actually stored. Any file can have any number of tags and your tags can be arranged into hierarchies.
http://silkwoodsoftware.com/elyse.html
Windows Task Manager has gotten a bit long in the tooth over the years. The SysInternals Process Explorer is an excellent tool for monitoring applications and processes. And it even has a built-in feature to override Task Manager. From within Process Explorer, simply choose Options | Replace Task Manager from the menus.
Just think of all of the fun you could have as a kid if your parents got you one of these? And maybe Mahmoud Ahmadinejad should just try to pick up a few of these on Ebay instead of trying to build his own enrichment facilities.
http://www.orau.org/ptp/collection/atomictoys/GilbertU238Lab.htm
Well, somebody had to do it. Now, we all know the answer to that burning question about whether or not Pac-Man is NP-hard.
http://www.technologyreview.com/blog/arxiv/27528/
As programmers, it is our prerogative to make fun of programming languages. Gary Bernhardt takes some very humorous swipes at Ruby and JavaScript in this under-5-minute screencast. (Read this for some background on "wat" this all about.)
http://www.destroyallsoftware.com/talks/wat
This is a brilliant re-creation of the original Command and Conquer strategy game entirely in HTML5 and Javascript. Read the author's description of creating the game on his blog.
So how well do you think you know the digits of π? This simple web-based game lets you test your skill. Just type in the digits in order until you make a mistake. It even tracks your best round. And no fair consulting Wolfram Alpha for help!
Who actually expected Microsoft to get into the niche interactive fiction game market? But surprise of all surprises, it is revealed that Visual Studio is (literally!) a highly-complex text adventure game, complete with arcane spell-casting and interactive puzzle modes!
Those of us old enough to remember will recall that the most memorable scene in the Star Trek IV movie was Scotty showing an engineer from the 20th century how to make "transparent aluminum". Turns out that well before the 24th century, it's real! Kinda sorta…
http://blog.makezine.com/2012/01/17/transparent-aluminum/
If you work in development, you'll get a big kick out of this comic. Of course, it's a good example of how art imitates life.
http://www.smbc-comics.com/index.php?db=comics&id=2494