Up to Newsletter Index

November 2015 Newsletter

Quotable Quotes

On two occasions I have been asked, — "Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out?" … I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question. –Charles Babbage, Passages from the Life of a Philosopher (1864)

Teach when you are filled with wonder, before you become a boring expert. –Mark Pilgrim, author of Dive Into Python

The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer. –Cunningham’s Law (example)

Mental maps. Maps with edges. And for Auden, for so many of us, it’s the edges of the maps that fascinate… –David Mitchell, The Bone Clocks

The computer is incredibly fast, accurate, and stupid. Man is unbelievably slow, inaccurate, and brilliant. The marriage of the two is a force beyond calculation. –Leo Cherne (attributed?)

You can learn great things from your mistakes when you aren’t busy denying them. –Stephen R. Covey, The 7 Habits of Highly Effective People

We must show that liberty is not merely one particular value but that it is the source and condition of most moral values. What a free society offers to the individual is much more than what he would be able to do if only he were free. We can therefore not fully appreciate the value of freedom until we know how a society of free men as a whole differs from one in which unfreedom prevails. –F.A. Hayek

Return to top

Software Development Process and Methodology

Article: 8 Reasons Why Agile Projects Fail

Of course, agile methodologies don’t guarantee project success (any more than any approach does!). But the causes of failure for agile are often different from those of other methodologies. This article explains eight typical failure causes/patterns, based on survey of over 4000 agile practitioners.


Article: Software Development is a Team Sport

Anyone who has worked in programming knows that teamwork is key to success. This article considers how to scale teams from very small (1-3 people) to several. The author says that, as a team grows, you must fundamentally change how the team works together, such as documenting and communication.


Article: The Little Printf

Borrowing from the style of Saint-Exupéry’s The Little Prince, this developer spins the tale of how bad architecture results from developers not paying appropriate attention to understanding requirements and business needs. A very enjoyable and enlightening approach to a dry, dull subject!


Article: The Staggering Impact of IT Systems Gone Wrong

Saying that our lives depend on technology would be a gross understatement. Technology is critical to all aspects of daily life. This interactive site shows the impact of technology problems and failures economically and via other dimensions such as time lost/wasted or people affected. The data are stratified by cost, date, region, and more.


Article: Why Companies Have Stopped Outsourcing IT

According to new analysis the main reason that companies are relying less and less on outsourcing of all but the most commoditized IT functions is the strategic shift in the mindset of business from IT as a cost of doing business to IT providing strategic advantage. Moreover, the cloud and software-as-a-service (SaaS) are driving down the most traditional areas of outsourcing: server and infrastructure management.


Article: Agile Is The New Waterfall

While I’m not sure that everything the author of this essay claims applies to all agile implementations, it does point out some of the places that agile can have problems if those implementing it aren’t careful. The author particularly points to situations where agile is simply introduced to capture metrics (e.g., “velocity”) without proper context.


Article: 5 Reasons Why Hybrid Cloud Is Becoming the "New Normal"

While probably not a big surprise to most of us, analysts now recognize that organizations are settling on hybrid (combination of public and private) cloud solutions for a variety of reasons, including security and risk mitigation.


Return to top

Software Testing & Quality

Article: Is poor software development the biggest cyber threat?

According to Department of Homeland Security, 9 out 10 security incidents reported are due to software vulnerability exploits. This author says that security efforts focus too much on the network, but more resources should be re-deployed to prevent security problems in applications.


Article: The economics of software correctness

In the course of the day-to-day work of testing and verifying applications, it’s sometimes good to take a step back to consider the big picture of our work. As we often emphasize in this newsletter, our main job as testers is to provide risk assessment and management. But did you ever think about the economic factors involved in testing and ensuring quality. This article recommends that the path to better software at lower cost is to reduce the cost to find (detect) defects.


Article: Is QA Dead?

Often during my 20+ years of software testing and development, the demise of QA has been predicted, usually at the hands of automated testing. So far, while automated testing has certainly been a valuable addition, it hasn’t completely replaced other aspects. This article emphasizes that QA is not about manual testing, but risk management.


Article: How to design a test strategy

Every successful endeavor starts with a good foundation and in software testing that usually means the test strategy. I think of this as the “what and why” of testing effort: what is the scope of the testing effort and why are we doing certain things and leaving other things out? This article provides some good advice on preparing a sound test strategy.


Article: How Software Issues in Cars Cost Automakers Billions

Certainly, all of us recognize the ubiquity of software. Nevertheless, this infographic really brings home the impact of quality and security problems from the financial angle. And this is the economic impact in just one single industry!


Return to top


Tutorial: Understanding JavaScript Constructors

We’ve discussed before that JavaScript follows the prototypal inheritance model of object-oriented programming. This article explains how that impacts defining and user constructors when creating an instance of your JavaScript objects.


Tutorial: A Gentle Guide to Machine Learning

Machine learning continues to gain popularity (consider a machine that taught itself to play chess at international master level in 72 hours!), especially as a tool for processing “big data”. This thorough tutorial provides a great conceptual introduction to the topic, including lots of discussion about applications and algorithms.


Reference: All the UML you need to know

While I’m not sure that any article can give you all that you need to know about any topic, this one is an excellent reference for UML. It emphasizes that UML is a tool for communication (hence, the word “language” in the name!) and focuses on the relationships between things in object-oriented design.


Tutorial: Visualizing Docker Containers and Images

Containers and especially the Docker platform are all the rage in the development and devops world right now. But if you haven’t started using them yet, some of the concepts can be difficult to grasp at first. This excellent tutorial visually shows you how all of the pieces of the infrastructure fit together, including application images.


Tutorial: Disambiguating ACID and CAP

The ACID principles and the CAP theorem are critical aspects of data management. However, the ‘C’ in both of them stands for “consistency”, but the meanings are quite different. This article clearly explains the difference.


Reference: 50 Design Terms Explained Simply For Non-Designers

Most of us are not graphic designers (or even design inclined, for that matter!), but when you work in application development and/or web design, you are bound to confront some design concepts, especially when it comes to typography. This excellent list with a great set of illustrations explains the most common design concepts you are likely to encounter.


Return to top

Career Development/Miscellaneous

Article: Give it five minutes

Jason Fried, the creator of the popular Basecamp application, provides some sage advice about evaluating ideas that others pitch to you. He says that rather than simply dismissing it out of hand, at least spend a little bit of time to consider it and, perhaps, even re-frame it.


Article: Things I was unprepared for as a lead developer

Frequently, the first step of developers beyond the regular programming role is to move into a “lead” or “senior” position on a team. This article presents several of the aspects of that role that you need to consider and prepare for before you jump into that new position.


Article: Five Things Old Programmers Should Remember

I was young once, but not any longer. Some of you may be in the same situation, too. If you are an older worker and still doing technical work, check out this good advice on staying productive and relevant in the workplace.


Article: What Makes a Great Software Engineer?

All of us want to the best job that we can in our work. But what makes developers great? This academic research, based on interviews of ~60 experienced Microsoft developers identified 50+ attributes of great programmers. The authors went on to identify the most salient factors based on impact to projects and teams.


Article: Software Is The New Oil

Venture capitalist Fred Wilson makes a strong argument that technology companies and specifically those that develop software are now the places where profits from the information revolution are accumulating, much like the oil-rich nation-states during the industrial revolution.


Article: Is the Theory of Disruption Dead Wrong?

One of the fundamental concepts of business today is Clayton Christensen’s concept of disruptive innovation. But what if the underlying principles were wrong? New research from Dartmouth’s Andrew King indicates that it is only predictive in a narrow domain.


Return to top

Useful Utilities

DevKeyboard (Free – Windows XP/Vista/7/8.x/10 – 400kB)

DevKeyboard is a wonderful productivity enhancement for programmers developed by an 8th grader for a school project. It’s an AutoHotkey (an equally magnificent tool in its own right!) script that adds some keyboard shortcuts from common programming syntax elements, such as ==, ||, &&, braces, brackets, etc., to regular QWERTY keys. You simply hold down the shortcut key for a specific amount of time to apply the shortcut instead of the regular key. All of the functions are configurable, including the shortcut mappings, so, if you use an esoteric language, you can still take advantage of it. And if you want to supercharge your keyboarding skills, you may want to also combine this tool with the Norman keyboard layout, which claims to increase typing speed 46% by moving only a few key positions from the normal QWERTY layout.


Tadpole DB Hub (Free – Cross-platform/Java – 120MB)

Tadpole DB Hub is a web-based GUI for database administration and management that supports a wide array of database engines, including MySQL, Oracle, MS SQL Server, SQLite, and PostGreSQL. Essentially, any database that has JDBC drivers is supported. In addition to the usual CRUD and DDL operations, it includes generation of ER diagram from SQL and even cloud-based solutions, such as Amazon RDS and MongoDB. The latest version includes the usual server WAR implementation, as well as standalone versions.


gping (Free – Cross-platform/Python – 1.6MB)

Gping is a basic replacement for the standard ping utility which shows a text-mode graph of the response time for each packet along with running statistics. Since it’s written in Python, it will run on almost any platform.


Requestdiff (Free – Cross-platform/Online tool – NA)

Requestdiff is a simple, yet awesome online tool to help you with development and testing of web services, such as REST APIs. Simply enter two different URLs and Requestdiff will execute both and then display the difference between the responses, using the familiar Git diff syntax. It even separates the header and body (response) content to help better understand the results.


Return to top

Just For Fun

Celebrities as Neoclassical Paintings

So, sometimes you have to ask yourself where certain ideas come from. Anyway, check out these pictures. It’s kind of a mashup between 21st-century celebrity and 19th-century painting. Strange, yet hauntingly exquisite.


Tolkien's annotated map of Middle-earth discovered inside copy of Lord of the Rings

Tolkien and maps. What two things go together better than them? Read about how a map of Middle-Earth with Tolkien’s own annotations was found in a copy of Lord of the Rings from the 1960s.


Six Degrees of Francis Bacon

You are probably familiar with the “six degrees of Kevin Bacon” concept (i.e., that any movie actor can be linked to Kevin Bacon through no more than 6 other actors who have starred with Bacon) or “philosophy”. For those with a penchant for Enlightenment-era philosophy, check out the social network of Francis Bacon. And read more about the project here.



Do you have a blog and struggle to keep up with all of the spam comments that get posted? Then EchoChamber.js might be just the solution. Instead of actually keeping the comments posted, it puts them the in user’s browser localStorage and then re-displays it when the user returns to your site. Simple and doesn’t even require any additional content be served from your site!


How to help beginners learn to program

What better way to make a contribution to the world than by teaching others about programming? But where to start? Check out these tips for hurting helping beginners.


Cosmic Gall

To celebrate this year’s Nobel Prize winners in physics for the discovery that neutrinos do have mass, we offer this little rhyme that pays homage to those itty-bitty particles, even though it gets the physics wrong. But, then again, it was written in 1960, some 40 years before Takaaki Kajita and Arthur B. McDonald made their discovery.


Calvin and Markov

What if you applied the concepts of Markov chains to the classic Calvin and Hobbes comics? Check out this page and find out. The humor can be both sublime and hilarious (even at the same time!).


Return to top