Up to Newsletter Index

June 2016 Newsletter

Quotable Quotes

Every lie is two lies — the lie we tell others and the lie we tell ourselves to justify it. –Robert Brault

Perseverance is more prevailing than violence; and many things which cannot be overcome when they are together, yield themselves up when taken little by little. –Plutarch

Functional programming is about describing what the answer should be instead of describing how to get an answer. –HappyLearnTutes, Why Functional Programming is The Awesomest Sauce

There is only one way to avoid criticism: do nothing, say nothing, and be nothing. –Aristotle

Here dies another day

During which I have had eyes, ears, hands

And the great world round me;

And with tomorrow begins another.

Why am I allowed two?

–G.K. Chesterton, Evening

Return to top

Software Development Process and Methodology

Article: Agile is Dead

Using “Pragmatic” Dave Thomas’s presentation as a starting point, this experienced developer presents substantial evidence that the agile development wave has passed. He goes on explain that while the high vision of agile (as defined in the Agile Manifesto) has largely gone unrealized, pragmatic practitioners have developed good ideas that provide great benefit to development teams.


Article: Pragmatic Technical Debt Management

Whether we all agree on the meaning of “technical debt”, it seems likely that we can allow that it needs to be managed on most projects. This article provides a broad framework for integrating control of it into your development process naturally.


Article: Boiling Frogs

This broad research paper commissioned by UK GCHQ uses the “boiling frog” metaphor to provide many excellent insights into how well (or not!) software developers and development organizations are able to adapt to some of the disruptive changes that we face, such as Internet of things (IoT), microservices, containers, cloud/distributed technologies, etc.


Article: Code Reviews Aren’t Just For Catching Bugs

Why do you do code reviews? Of course, most people would say something along the lines of finding problems in code before they get to the next step in the process. This author says that, especially among high-performing teams, code reviews have other more important purposes, especially building team cohesion and enhancing peer relationships.


Article: The Rise of Artificial Intelligence and the End of Code

This broad article discusses how AI, machine learning, neural networks and related technologies is bringing us ever closer to being able to develop applications simply by defining behavior. Consider for example, the AI that learned to replicate the experiment to create Bose-Einstein condensate. The upshot of this for those who make their living programming will be adapting to a technical-pedagogical paradigm.


Article: Java Exception Handling

Everyone understands the purposes of exception handling in Java, right? (To handle “exceptional” cases, huh?) According to some recent research involving empirical analysis of thousands of projects and their methods on GitHub and SourceForge, however, exceptions are frequently ignored (“eaten”) or just logged for debugging.


Article: Back to the OODA – Making Design Decisions

Perhaps you’ve heard of the OODA (observe-orient-decide-act) loop, developed by Korean War fighter pilot John Boyd as a method for quick, rational decision making. This article presents an effective method of applying the principle to architecture and design for application development, especially in cases of uncertainty (which is pretty much all development projects!).


Article: Professional corner-cutting

Perhaps the title of this article implies doing shoddy work, but actually it’s quite the opposite. The author makes the point that, as developers, our responsibility is do the work that matters and that all tasks are not of equal importance or value. He uses the example of cabinet making as a pattern for how we can do the same in programming.


Return to top

Software Testing & Quality

Article: A glitch in Tesla’s Model X is locking owners out of their cars

In today’s highly-computerized automobiles, not only are security and safety important quality factors, but even such mundane features like being able to unlock the doors require effective testing.


Article: Software error doomed Japanese Hitomi spacecraft

While getting locked out of your car is annoying, some software problems are very costly, especially those for one-time use, such as in spacecraft. The post-mortem report for the failure of the Hitomi X-ray telescope found that a software error caused failure of its spin-control system causing it to rotate out of control and fall from orbit. Where is Neil Armstrong when you need him?


Article: Do We Still Need Dedicated Testers?

With the advent of agile methodologies and automated testing, it might be enticing to management to eliminate testing as a distinct discipline. This author offers several reasons why you should think twice about doing that.


Article: The State of Testing in 2016

The curators of the annual “state of testing” survey discuss their findings from previous years and some of the trends that they’ve observed, such as teams using agile development practices tend to have higher levels of test automation and that testing groups continue to face shorter and faster testing cycles.


Return to top


Reference: Computer Science Field Guide

Need a refresher on a CS topic or perhaps you are a self-taught developer and want to learn some of the underpinning concepts? Look no further than this comprehensive, yet understandable, guide to all-things computer science. While it is targeted at high school students, this guide offers practical, solid tutorials on almost any CS topic that are suitable for those at any stage of their careers.


Tutorial/Reference: A Guide to Naming Variables

We use variables in programming all the time, but how often do you think about the names that you use/give? This comprehensive guide to variable naming gives good examples of why some names are bad (or, perhaps, not optimal) and then guidelines for how name variables (and function names) effectively.


Tutorial: Singular Value Decomposition

Just seeing the title of this pair of articles might make your eyes glaze over. Nevertheless, these articles present an understandable and useful introduction to why we have matrices and how we can use them to model a variety of systems, including in data science and image/signal processing.



Tutorial: Learn Docker by building a Microservice

Have you heard about Docker and wanted to give it try, but just haven’t found a tutorial that wasn’t too simplistic or exceedingly difficult? If so, then this is just the thing for you. It takes you gently through the entire process of setting up Docker and the various container pieces while building a microservice based on Node.JS and MySQL.


Reference: Introduction to Big Data

If you haven’t worked on a “big data” project yet, chances are that you will soon. This comprehensive introduction provides background on the philosophy and use cases for big data and then surveys various techniques and (mostly open-source) platforms and tools for working with it.


Tutorial: Anders Hejlsberg on Modern Compiler Construction

If you wanted to build a compiler, who is the best person to get advice from? Regardless of your language allegiances, Anders Hejlsberg, creator of Turbo Pascal, Delphi, C#, and Typescript, would certainly be one of the names on your list. In the this video whiteboarding session, he explains how compiler development in practice is different from how it’s taught in school.


Return to top

Career Development/Miscellaneous

Article: Creating Good Company Culture (and Sticking to It)

Organizational culture is one of the most important factors in considering a new position (or creating a start-up). But it’s typically difficult to plan and characterize the culture that you want. This interview, featuring Kathryn Minshew of The Muse, talks about how you can develop a culture and make it stick.


Article: Influence Over Authority

Einstein famously quipped, “Try not to become a man of success, but rather try to become a man of value.” In a similar vein, this author emphasizes that many of us seek authority, but we should really desire to have influence, since it is more likely to lead to positive, lasting change.


Reference: 2016 Internet Trends Report

If you work with technology in any capacity, this annual report from venture-capital firm Kleiner Perkins Caufield & Byers is a must-read. This year’s report warns that “easy growth” is gone and firms that want to grow will need to work harder at finding opportunities.


Article: 2016 Salary Center for Technology Professionals

Whether you are looking for a new job or just want to make sure that you are getting what you’re worth at your current position, this is an invaluable resource for getting information about salaries from a broad swath of technology careers and locales.


Article: How to Talk in Meetings When You Hate Talking in Meetings

Many technical workers are introverts and one of the things that is difficult for them is interacting in meetings. Meetings are a fact of life in most organization and are frequently important in getting exposure and developing credibility. This article gives some practical, real-world suggestions for how to speak up, even when it’s difficult.


Return to top

Useful Utilities

Stack Overflow Eclipse Plug-in (Free – Cross-platform/Java – N/A)

Chances are that you regularly use the Stack Overflow (SO) forums to look for tips or answers to your development questions. If you also use Eclipse, then check out this plug-in that allows you to search SO from within Eclipse. It searches Google for results from SO and displays results in window where you can scroll through the results.


YouTube Stay (Free – Cross-platform/Google Chrome – 102kB)

I don’t know about you, but one of the most annoying things about YouTube is that you can’t search without leaving the video that you are currently watching. YouTube Stay allows you to search while watching and puts the results in the list to the right of the video that’s playing. In addition, it allows you to create your own (offline) playlists for YouTube.


DbUnit (Free – Cross-platfrom/Java – 605kB)

DbUnit is an extension for JUnit Java testing platform that supports streamlined testing for database-driven applications. It can import/export test data from XML and most any JDBC-compatible database platform is supported, including Oracle, SQL Server, MySQL, and PostgreSQL.


Mononoki (Free – Cross-platform – 494kB)

I’m always on the lookout for a good monospace font for my text editor and Mononoki is a new font that has been a great find. It looks good at high and low resolutions and large and small sizes, as well as has excellent character differentiation. And since it’s open-source, you can tweak it if you like.


Return to top

Just For Fun

University Title Generator

Feeling a little disappointed with your plain, vanilla title of “programmer”? Or maybe you wish you could be in academia. Well, this site may not get you the promotion that you want, but it might just give you a boost of self-esteem by calling you “Executive Associate President of the Committee on Athletic Planning” or similar.



Need to check the weather forecast for your area? Why not get the forecast with a decidedly Scottish flair? Ootside not only gives you the weather, but a dose of Scottish humor with it.


Return to top