September 2011 Newsletter
There is a great difference between worry and concern. A worried person sees a problem, and a concerned person solves a problem. –Harold Stephens
The truth only irritates those it enlightens, but does not convert. –Pasquier Quesnel
The most imaginative people are the most credulous, for them everything is possible. –Alexander Chase
I like bats much better than bureaucrats. I live in the Managerial Age, in a world of "Admin." The greatest evil is not now done in those sordid "dens of crime" that Dickens loved to paint. It is not done even in concentration camps and labour camps. In those we see its final result. But it is conceived and ordered (moved, seconded, carried, and minuted) in clean, carpeted, warmed, and well-lighted offices, by quiet men with white collars and cut fingernails and smooth-shaven cheeks who do not need to raise their voice. Hence, naturally enough, my symbol for Hell is something like the bureaucracy of a police state or the offices of a thoroughly nasty business concern. –C. S. Lewis
When words are scarce they are seldom spent in vain. –Shakespeare
Imperfect action is better than no action. –Giovanna Garcia
We say we waste time, but that is impossible. We waste ourselves. –Alice Bloch
Engaged employees understand that they don't just work for a company; they are the company. –Richard Kern
The shortest path to exceeding expectations doesn't generally pass through meeting expectations. –Ward Cunningham
Everyone who considers themselves a leader in business should read and
understand Dr. Deming's work. This
excellent overview of Deming's famous "14 Points for Management"
shows how the principles are universal and can be applied to software
development.
http://leanandkanban.wordpress.com/2011/07/15/demings-14-points/
As with any knowledge domain, over time, some programming skills, such as
assembly language programming or programming
hardware directly, fall largely by the wayside. However, even as technology changes at such a
quick pace, some skills can't be completely ignored.
http://www.itworld.com/it-managementstrategy/190213/lost-programming-skills
In this comprehensive article, the author states that REST
is not really service-oriented in the strict sense, but that it doesn't really
matter, because REST has
basically won the "war" over web services.
http://www.infoq.com/articles/RESTSOAFuture
This recent essay by Marc Andreessen about how software (and algorithms) have fundamentally changed almost all aspects of life has
sparked a good deal of controversy in a variety of circles. Read the original essay and some of the
various responses.
http://online.wsj.com/article/SB10001424053111903480904576512250915629460.html
http://www.businessweek.com/technology/how-software-is-harming-science-engineering-08252011.html
http://news.ycombinator.com/item?id=2919708
http://tech.slashdot.org/story/11/08/20/1358213/Why-Software-Is-Eating-the-World#comments
This brief list summarizes quite a few of the common problems that you
are likely to encounter in an agile implementation. The interesting aspect of this list is that
it is from a proponent of the agile approach rather than a detractor.
http://www.artima.com/weblogs/viewpost.jsp?thread=246513
The fathers of the Scrum methodology have released an update to their
document that provides the basic concepts of the technique. This document is a great reference for anyone
who practices Scrum. One of the more
significant (or, at least, notable) changes is
the preference for ordering
of the backlog, instead of prioritization.
http://www.infoq.com/news/2011/07/UpdatedScrumGuide
Like it or not, most organizations work in teams and you will be involved
in "design
by committee" at some point.
Here are some great tips for how to stay on track in this situation and,
especially, how to avoid over-engineering.
http://sixrevisions.com/project-management/how-to-navigate-design-by-committee/
Use of mind mapping as a technique for exploring ideas has really taken
off in the past couple of years. This
academic paper discusses using the technique for eliciting and gathering user
requirements for applications, including in the context of user stories and use
cases.
IT is changing (just like the rest of the business). Our old ways of thinking about IT
(centralized command and control, etc.) just don't work. Here are some realities that IT must face in
order to be successful.
http://www.infoworld.com/t/it-management/10-truths-it-must-learn-accept-934
Bruce Eckel
gives a nice perspective on how programming is like writing (or perhaps
simply is writing) and how, just
like writing, to improve, we must
continually practice and read others' "writing" to learn the art
and craft,
as well as learning
how to write better. He also notes
the importance of clear communication when working with our stakeholders.
http://www.artima.com/weblogs/viewpost.jsp?thread=255898
This author says that zero defects is a noble, but unrealistic goal in practical software development. He goes on to explain why you need to be wise about choosing which defects to fix in your applications.
http://swreflections.blogspot.com/2011/02/zero-bug-tolerance-intolerance.html
You've probably heard that expertise in any domain takes 10000 hours of practice. Well, most of us don't have that much time to build our software testing skills. This article gives some good guidance on how to enhance your testing abilities.
http://www.huibschoots.nl/wordpress/?p=274
Software testing can seem mysterious for those who don't have any background or experience with it. This list tries to debunk a few of the typical myths or misconceptions about testing.
http://www.iseb-istqbsoftwaretesting.co.uk/10-common-software-testing-myths/
Good testers have a particular mindset. Not one of wanting to destroy an application, but an inquisitive nature and one of always asking "What if…?" This excellent video teaches you how to think about testing to improve your skills.
http://bugfinders.com/en/training/videos/the-tester-mindset
Even with the constant sounding of the imminent death knell for software testing, this article shows some of the unique and new challenges that testing faces with the intersection of agile techniques, cloud computing, and mobile development.
http://www.toolsjournal.com/testingarticles/item/198-testers-perfect-storm-agile-cloud-mobile
REST web services are becoming the de facto standard for APIs for
web-based applications. This tutorial
shows you how to create a REST web service for your Java application using the
popular Jersey toolkit JAX-RS reference implementation.
http://www.informit.com/articles/article.aspx?p=1728835
If I could only recommend a single book that every programmer should
read, it would have to be The Pragmatic Programmer. This nice one-page reference summarizes the
tips and checklists from the book. Print
this out and hang it on your wall!
http://www.codinghorror.com/blog/files/Pragmatic%20Quick%20Reference.htm
Certainly, to be a successful web developer, you don't have to know how
browsers work to render your pages.
However, to fully take advantage of the many nuances of the various
popular browsers, it helps to understand just what they do under the
covers. This excellent, comprehensive
tutorial explains how the Gecko (Firefox)
and Webkit
(Safari and Chrome) rendering engines work, especially with respect to CSS3 and HTML5.
http://www.html5rocks.com/en/tutorials/internals/howbrowserswork/
This fall (09/26/2011 – 12/16/2011) you can take the same Introduction to
Artificial Intelligence class that students at Stanford do for
free and entirely online. It is
taught by Peter Norvig,
research director at Google and robotics expert Sebastian Thrun,
named one
of Fast Company's most creative people.
This short presentation hammers home some of the key principles of agile
development by matching them with some of the concepts for success in
everyone's favorite game, Tetris.
http://www.slideshare.net/heavysixer/agile-tetrisdaggett
This cool Javascript-based emulator
demonstrates the basic concepts of NoSQL document-oriented
databases using open-source CouchDB. If you
want to learn
about CouchDB without installing
it yourself, this will give you a pretty good feel for it, especially collation, map-reduce,
and incremental
reduce.
http://blog.mudynamics.com/wp-content/uploads/2009/04/icouch.html
Even if you don't need full-blown functional programming, this excellent
tutorial shows you how the use of lambdas
(a.k.a., closures
or anonymous
functions) in C# can help you with your regular development. The author builds an entire generic Tree
class using TDD principles to demonstrate the concept.
http://www.kodefuguru.com/post/2011/08/11/Lambdas-for-Junior-Developers.aspx
http://www.kodefuguru.com/post/2011/08/12/Building-a-Tree-Class.aspx
Meetings seem to be a two-edged sword: both the necessary lifeblood of business and a drain on time and productivity. This article provides links to some great resources to make meetings shorter and more productive. One of the key takeaways from this article is that the meeting planner needs to clearly indicate the type of meeting: information exchange, design-making, etc.
"Open concept" office spaces are standard for agile teams. However, according to some new research, lack of private (or at least semi-private) work space results in up to 15% loss of productivity due to distraction and context switching.
http://www.infoq.com/news/2011/08/open-office-layout
On D-Day, General Patton sent this letter to his son, who was a cadet at West Point at the time. He gives some excellent advice for everyone, whether your battles are in a real war or just with your own procrastination.
http://artofmanliness.com/2011/08/21/manvotional-a-letter-from-general-george-s-patton-to-his-son/
What to sports teams and IT organizations have in common? This pundit says that IT can learn a lot from consistently high-performing sports coaches and teams about how to deliver excellence in an on-going manner to their business customers.
http://blog.cutter.com/2011/07/12/12-steps-toward-confident-excellence/
When interviewing for a new position, one of the most awkward parts of the discussion is when the interviewer asks if you have any questions. Here are some questions that both help you demonstrate your interest in the position and get some insight into what the job is all about.
Everyone knows that the Internet is the ultimate time sink at work, right? Well, according to some behavioral research, so-called cyberloafing actually has a more refreshing effect on workers than even such things as making personal phone calls or simply taking a rest break.
This series of articles (make sure you read them all!) presents some interesting insights into why "focus on your core competencies" has stratified the production and manufacturing of products in the global economy.
http://www.forbes.com/sites/stevedenning/2011/08/17/why-amazon-cant-make-a-kindle-in-the-usa/
Recently, we featured an article called "Bored People Quit". So what can you do to recharge your mental batteries and get your brain back in shape? This article gives you some ideas for how to jumpstart your brain, including things like setting short-term goals (so maybe that daily scrum meeting isn't worthless after all?!).
http://www.psychologytoday.com/blog/prime-your-gray-cells/201107/is-your-brain-asleep-the-job
A new survey of hiring managers by CareerBuilder indicates that about 1/3 are placing more emphasis on emotional intelligence (EI; think "soft skills") when considering candidates. Interestingly, for IT, just over 1/2 considered EI more important than IQ, compared to over 2/3 overall.
http://www.worldatwork.org/waw/adimComment?id=55178
You probably don't think there are very many technologies from a quarter- or even a half-century ago that are still commonly used. So this list of 18 such technologies might surprise you. You'll probably especially be taken aback by how old some of the things that you think of as "new" are.
Just as we celebrate the 30th anniversary of the original IBM PC (and the 20th anniversary of Linux, and the 10th anniversary of Windows XP—how time flies!), IBM's CTO, Mark Dean, who was one of the 12 engineers who designed the original IBM PC, has declared that PC era is over due to the cloud.
http://www.techrepublic.com/blog/hiner/engineer-of-original-ibm-pc-declares-end-of-pc-era/8924
If you are interested in learning (or getting a refresher on) common computer science algorithms, j-Algo is just the ticket. It displays step-by-step demonstrations of over a dozen algorithms, including Dijkstra's algorithm, heapsort, Knuth-Morris-Pratt algorithm, and others. It includes demonstrations in three modes: graphical (animated), formal, and descriptive.
http://j-algo.binaervarianz.de/
CodeMatch calls itself a "search-based code repository". Basically, it's an online code repository (free registration required) that integrates with the context-sensitive coding functionality in Eclipse. You can save local (private) snippets and insert them into your code just as you would your own classes or references to JDK classes.
http://languageinterfaces.com/download
Timelines are an excellent visualization tool for presentations, but they aren't very easy to create. Office Timeline greatly simplifies the process of creating timelines in Powerpoint by providing step-by-step guidance. Created timelines even automatically "adapt" to your presentation layout and template.
http://www.officetimeline.com/
PuTTY is the de facto standard for SSH on Windows, but one of its significant shortcomings is having multiple windows, one for each session. MTPuTTY puts multi-tabbed wrapper around PuTTY supporting all of the standard PuTTY functionality, plus some basic scripting support for automating session log on.
http://www.ttyplus.com/multi-tabbed-putty/
The world is shrinking, whether we think so or not. If you do any sort of web design or programming, sooner or later you'll need to work with Unicode. This well-designed site lists all of the Unicode character set. Just click on a character to get more information, including the HTML entity code.
You can use regular expressions to do find and replace in most of your development tools, so what not apply the same principle in Excel. This excellent add-on for Excel works just like the regular Find and Replace dialog, except that you use
http://www.codedawn.com/excel-add-ins.php
Just click on the link and check out the first few results. Don't worry; it won't install a virus or destroy your machine.
http://www.google.com/search?q=search
HTML5 canvas-based games are really gaining popularity, but HTML5 still has a ways to go. Here's a fun retro example of what you can do with very little code.
http://a1k0n.net/code/tron.html
Although this is actually an advertisement, it's a really incredible rendition of Bach's Jesu, Joy of Man's Desiring. Although the Toccata and Fugue in D minor is still my favorite work by Bach.
http://www.youtube.com/watch?v=C_CDLBTJD4M
Somebody at your office getting on your nerves, but you can't find a pithy put down? Let Intellisult help. Just put in your nemesis' name and get an intelligent insult. (Remember, that's it's really just for fun!)
This game is total geek fun. In this artillery game, you must create a mathematical function to knock out your opponents. But the trick is that you also must specify a function that avoids obstacles and your teammates.
Technology is an amazing thing. Fifty years ago (or maybe even less), something like this would have hardly been imaginable. Now, check out these 25 amazing pictures from around the globe from Google Earth and see if you can figure out where they are.
http://www.theatlantic.com/infocus/2011/08/where-in-the-world-a-google-earth-puzzle/100120/