Up to Newsletter Index

August 2015 Newsletter

Quotable Quotes

Courage is the supreme virtue, because it is the guarantor of every other virtue. –Bergen Evans

Nothing so bolsters our self-confidence and reconciles us with ourselves as the continuous ability to create. –Eric Hoffer

Patience is the companion of wisdom. –Saint Augustine

You have to learn the rules of the game. And then you have to play better than anyone else. –Albert Einstein

I would therefore like to posit that computing’s central challenge, “How not to make a mess of it”, has not been met. On the contrary, most of our systems are much more complicated than can be considered healthy, and are too messy and chaotic to be used in comfort and confidence. –Edsger W. Dijkstra, The end of Computing Science?

However beautiful the strategy, you should occasionally look at the results. –Winston Churchill

Programming is art built on top of logic. –Erika Heidi, The Art of Programming

Return to top

Software Development Process and Methodology

Article: Why “Agile” and especially Scrum are terrible

Michael O. Church is one of my favorite development bloggers, because he offers well-considered, thoughtful observations on the practice of developing software. While I don’t necessarily agree with all of his positions in this article, he does concisely outline some of the problems, especially from the perspective of front-line programmers. Some observers suggest that agile and scrum are not inherently bad, but poor application of the techniques is the real problem.


Article: The Anemic User Story

It should be axiomatic that your application can only be as good as the requirements that define it. Accordingly, this article explains the importance of clear, detailed user stories with valid acceptance criteria by using a three-step process of asking questions, outlining the story, and only then writing the user story in the formal language.


Article: Facts and Beliefs, in context of software development

This article is almost certainly controversial, but the author raises a very relevant point about the importance of understanding the business need and avoiding projecting our own (unfounded) beliefs on the application we are building. He emphasizes that agile methodologies tend to unduly enable the later.


Article: A Field Study of Technical Debt

We seem to hear quite a bit about technical debt, but most of it seems anecdotal and not very well quantified. This research report puts some hard facts behind the concept based on a broad survey of programmers and development managers. The most significant finding was that architectural choices have the greatest influence on technical debt.


Article: NoSQL is a "complete game changer," declares database expert

Unless you’ve been hiding under a rock for the last several years, you know that NoSQL (which means different things to different people!) continues to grow in both market and mind share. However, traditional RDBMS still dominates. This article looks at the shift and makes some predications about how this plays out in the long run.


Article: Functional Programming in a Dysfunctional World

Functional programming (FP) can sometimes seem rather esoteric. While many articles focus on advantages like lazy evaluation and concurrency, this article examines FP from the perspective of how it can improve correctness of implementation and testability, which are certainly quite practical applications of the paradigm.


Article: The Most Common Reasons Why Software Projects Fail

According to research of a variety of projects, the majority of project failures are due to poor estimation of cost, effort, and/or duration and poor business decision making at the beginning of the project. The authors say that among other things standardizing on terminology with respect to terms related to schedule and avoiding using them interchangeably can help project success.


Article: The Secret Startup That Saved the Worst Website in America

Certainly, the Healthcare.gov debacle will go down as one of the great IT failures of the 21st century. But here is the story of a small team working out of a house in suburban Maryland that rescued the project and re-built a functioning site using agile techniques.


Article: I'm Sorry, But Agile Won't Fix Your Products

Agile development methodologies are great, but just as with any technology solution, they can only go so far. This article emphasizes that agile processes can’t compensate for poor scope definition or design, insufficient requirements and the like.


Return to top

Software Testing & Quality

Article: Who Pays for Bugs?

Your customer has a reasonable expectation that you deliver a high-quality application to them. Nevertheless, defects are an inevitable consequence of the development process. So how do you strike a balance between the cost to fix these problems and your customer’s business needs? This article gives some practical advice on framing the issue.


Article: Why developers shouldn’t perform software testing

Most readers of this newsletter know that I’m a strong proponent of independent testing groups. Here’s another perspective on developer versus QA testing that emphasizes the empirical evidence that QA testing substantially reduces likelihood of critical defects in the released application.


Article: 10 ways software testers can win autonomy and earn respect

Software tester is a key role on any development project. However, sometimes, testers get less than fair treatment by other team members. This list of suggestions from software testing expert Jonathan Bach will help you foster the respect you deserve and need.


Article: The Fallacy of Motion

Hemingway famously said, “Never mistake motion for action.” And, as developers, we need to be doers. However, this article suggests that many times we view testing as a “passive” process and, therefore, avoid doing it.


Article: Actually, No, Stuff Used To Work

This blogger responds to the common Internet meme that “all software is broken”. He offers some great perspective on the success of software and concludes with the observation that QA plays a key role in development of good software.


Article: Moving Fast With High Code Quality

The pace of development continues to speed up and, accordingly, cycle times shrink. This excellent article from the Quora development team explains several of the techniques that they use to ensure good quality in a rapid environment. My favorite is how they automatically assign code reviewers when specific files or modules are changed.


Return to top


Tutorial: Maven essentials for the impatient developer

Maven has essentially replaced Ant as the de facto standard for Java (and many other JVM-based languages) build tools. This brief guide will help you get your first Maven build process set up and includes specific instructions for how to use Maven in Netbeans, IntelliJ, and Eclipse.


Tutorial: Functional programming in Javascript: map, filter and reduce

Want to learn the basics of functional programming in JavaScript? This excellent tutorial shows you the ropes by using the map, filter, and reduce functions with appropriate callback methods..


Reference: Things to Know When Making a Web Application in 2015

Long gone are the days when you could build a web application with a few simple HTML pages using CSS and JavaScript. This comprehensive, yet brief, list gives you the rundown on the various factors that you need to pay attention to for successful web development, including mobile, security, and UX/usability.


Reference: SQL Style Guide

The web is chock full of style guides for most any programming language that you can think of, but you’d be hard-pressed to find one for SQL queries. This comprehensive, well-structured guide for SQL covers just about all of the topics that a developer would need to write consistent SQL syntax and DML. It may even set you on your way to becoming a data architect!


Tutorial: Functional Programming in Python

This brief (49 pages), free book (PDF) introduces you to the concepts of functional programming using the familiar Python programming language. Each concept is demonstrated with code. Topics include lambdas, closures, lazy evaluation, higher-order functions and more. Likewise, the author shows how to avoid using imperative programming in Python to adapt to the functional paradigm.


Tutorial: RegexPlay

Think you are a regular expression expert? On this site, you can prove it (or not!). It gives you some sample text and challenges you to write a regex to match it. But be careful; with this site, you may end up with two three problems, including burning a lot of time. And the site has a companion tool to help you build a regex from sample text.


Return to top

Career Development/Miscellaneous

Article: What Happens to Our Brains When We Exercise and How It Makes Us Happier

Exercise… Not many of us enjoy it, but we all know that we need to do it. But beyond the physical health benefits, it also has significant psychological and mental health benefits, as well. Learn about how this works.


Article: Why You Must Tame Complexity to Become a Better Programmer

Sometimes it’s hard to figure out what our specific role within our organizations is. Fundamentally, our business value is to use technology to solve business problems. Certainly, one thing that you can do to bring value as a worker is to relentlessly drive out complexity in all aspects of your job, not just in code, but process, technology, and any other area. This author provides some great insights into how to identify complexity and manage it.


Article: Idea to Impact

Agile development pioneer Kent Beck explains his process for progressing from an idea to making it a practical improvement in his workflow. The key aspect of the process is persistence in presenting to the idea to others once you’ve validated its value to you personally.


Article: In big move, Accenture will get rid of annual performance reviews and rankings

Accenture’s CEO said that they will change 90% of their performance management process, including getting rid of the yearly performance review. It will be replaced by more timely direct feedback, including after completing an assignment, and other techniques. Could this be the start of a revolution in HR policy at other companies? (And, to be fair, Deloitte introduced a streamlined 4-question evaluation form earlier this year.)


Article: This 90-Day Plan Turns Engineers into Remarkable Managers

After a few years in a technical position, it’s common to face moving into a management role. But most developers aren’t really prepared for such a transition. David Loftesness, the former director of engineering at Twitter, provides a 90-day program, divided into three specific month-long segments, to help adapt to the new role. This article also offers several “do” and “don’t” tips.


Article: Life lessons from differential equations

While you may think that you learned everything you need to know in kindergarten, this article proves (pun intended!) that even some of the more challenging math classes offer more than you might think. Of course, some of the points are esoteric, but, then again, so is quite a bit of life.


Article: US Navy SEALs conquer fear using four simple steps

How do you deal with stress and fear? What if you could develop a technique to minimize your autonomic response to fear, so that you can think clearly in your response? This article outlines the process that Navy SEALs, who probably face more than their share of fear-inducing situations, use to remain clear-headed.


Article: There's more than one way to progress your software engineering career

Most of the readers of this newsletter recognize that programming and development jobs have somewhat different career paths than other disciplines. This article gives you some specific, practical advice for advancing your career as an individual contributor. One of the most interesting perspectives is that you are climbing a tree (many branches) rather than a ladder.


Return to top

Telecommunications/Networking Industry

Article: New method of quantum entanglement vastly increases how much information can be carried in a photon

Researchers at UCLA have found a new technique, called “hyperentanglement”, to use quantum entanglement between photons in multiple dimensions, instead of the usual just one (typically polarization), to allow each dimension to carry information. This greatly increases the amount of information that each photon can carry and potentially allows increased communications bandwidth.


Article: Alca-Lu clocks 300 Gbps over 10,000 km submarine cable

Telecom hardware providers continue to up the ante for speed and distance improvements. This one involves an announcement from Alcatel-Lucent of 300 Gbps over 10000 km using a new type of fiber and modulation technique. It seems like the fiber speed/bandwidth race is the new Moore’s Law quest.


Article: OpenDaylight dawn: Open-source software defined networking goes into production

Recently, the AT&T-sponsored open-source SDN platform called OpenDaylight has transitioned the tool to production-ready. Several carriers have already deployed it in production and AT&T itself is using it to manage bandwidth for consumer mobile services. Likewise, the Large Hadron Collider’s data management relies on OpenDaylight.


Return to top

Useful Utilities

How To Center In CSS (Free – Cross-platform/Online Tool – N/A)

Even with flexbox, it can still be notoriously difficult to create CSS to center elements in your layout. This simple, intuitive online generator has you put in a few attributes and it will generate the appropriate CSS ready to paste in to your CSS file. It will even include Internet Explorer-specific prefixes for support back to IE 6, if desired.


REST Countries (Free – Cross-platform/Online Tool – N/A)

This site provides a simple, free REST API for getting information about any country in the world. Some of the details available include capital city, official name in various languages, 2- and 3-character ISO code for country, time zones, international dialing codes, currency, and much more. Great service for your e-commerce applications.


Immutables (Free – Cross-platform/Java – 475kB)

Immutables is a Java library to apply immutability via annotations. This substantially simplifies making objects/classes immutable and provides a consistent, fluent technique for doing so.


Run on Droid (Free – Android 2.3+ – 2.4MB)

Run on Droid is a basic Java REPL tool for Android that allows you to execute code directly on your device or emulator. It has support for all Android SDK APIs and even has buttons for common code snippets, such as dialog boxes, buttons, capture screen, etc.


Q (Free – Cross-platform/Rust – 12kB)

Q is a simple enhancement to the grep utility, built using the new Rust language and PCRE, that allows you to search files for common regular expressions (regexes), such as IP address, URL, etc. Instead of having to remember the regex syntax, you just define the regex in a configuration file with a name and Q uses that name. You can use multiple names in a search with either logical “and” (default) or “or”. Really handy for search log files!


Coolbarz (Free – Windows XP/Vista/7/8.x/10 – 160kB)

Coolbarz is in the category of tools that do one thing only, but do it well. It’s a tiny docking toolbar launcher for Windows. It supports multiple desktops (you can even assign toolbars to specific desktops) and can support 1-4 toolbars on any edge of your screen.


Return to top

Just For Fun

Keyboard Waffle Iron

I love waffles! On most Saturdays, my daughter and I make waffles together. If you’re a geek who likes waffles, then this might be just what you need. Now, if we can just get one with the Vim key bindings on it…


Dev Ops Donald Trump

Imagine a world where Donald Trump worked in IT? Well, maybe you shouldn’t do that! Either way, take a look at this humorous Twitter stream (of consciousness—or lack thereof!).


Bay Area to Standard American English Translator

Most of us aren’t Internet entrepreneurs (or even live in Silicon Valley). So if you talk to one of those folks, you may have trouble understanding them. This reference should help!



Version numbering in software development is one of more difficult matters to address. The current de facto standard is called semantic versioning. But this developer recommends that you opt for even simpler solution.


I'm working from home today because...

Everybody needs a break from the routine once in a while and sometimes working from home is just the ticket. But you need to have a good reason not to trudge into the office. This site comes to your rescue with plenty of “reasons”, both realistic and not so much, for working from home.



You are probably familiar with ROT13 cipher that simply shifts alphabetic characters 13 places. Not very secure… But now feast your eyes on its “twice as secure” successor: ROT26.


Silicon Valley Dictionary

Almost every industry has its own vernacular. Well, here’s a lexicon for the technology industry, with a definite bent toward marketing and the startup scene.


Return to top