Up to Newsletter Index

August 2016 Newsletter

Quotable Quotes

This is what Wisdom means: To be changed without the slightest effort on your part, to be transformed, believe it or not, merely by waking to the reality that is not words, that lies beyond the reach of words. If you are fortunate enough to be Awakened thus, you will know why the finest language is the one that is not spoken, the finest action is the one that is not done and the finest change is the one that is not willed. –Anthony de Mello, One Minute Wisdom

What I cannot create, I do not understand. –Richard Feynman

Do not spoil what you have by desiring what you have not; remember that what you now have was once among the things you only hoped for. –Epicurus

Inspiration is for amateurs; the rest of us just show up and get to work. All the best ideas come out of the process; they come out of the work itself… Every idea occurs while you are working. If you are sitting around waiting for inspiration, you could sit there forever. –Chuck Close, Face Book

A reward system based on ego satisfaction and reputation optimizes for interesting, novel work. Everyone wants to be the master architect of the groundbreaking new framework in the hip new language. No one wants to dig through dozens of Java files for a years-old parsing bug. But sometimes that’s the work that needs to be done. –Stuart Sierra, Apathy of the Commons

Love truth, but pardon error. –Voltaire

The risk of a wrong decision is preferable to the terror of indecision. –Maimonides

Return to top

Software Development Process and Methodology

Article: The Real Cost of Technical Debt

Everyone knows (or perceives) that technical debt is generally a bad thing, but why is that the case? This article takes a nice approach by looking at various causes of technical debt and then recommended solutions for each.


Article: Knowledge-Sharing Architects As An Alternative to Coding Architects

Among the on-going debates about roles and responsibilities in IT is the perennial discussion about whether architects should write code. This thorough analysis considers an interesting option of architects who spend most of their time socializing principles and interacting with other team members to build understanding of the architecture.


Article: The 2016 Top Programming Languages

IEEE has released their third annual survey of programming language popularity and the top three languages, respectively, are C, Java, and Python. This marks the first time that C edges out Java for the top spot and Python jumped over C++ to take the bronze. Most interesting (to me!) is that the R language for statistics and data science landed in the #5 spot. The article is interactive, so you can slide-and-dice the results to your liking.


Article: Overcoming Paradigms to Become Truly Agile

With the recent backlash against the agile practices and methodologies, this article examines how organizations can be agile versus “doing agile”. The article emphasizes that agile is more about mindset and philosophy and not about tools and process.


Article: Software has diseconomies of scale - not economies of scale

Most of the industrial economy is predicated on the notion of economies of scale: the cost per unit goes down the more units made. However, software development turns this concept entirely upside down. This article eloquently explains how software is different with respect to economic factors.


Article: Welcome to “Agile” the methodology where everything’s made up and the points don’t matter

While the title of this article is a little bit provocative (probably intentionally), it offers some good points (no pun intended!) about the trouble with using story points to estimate size/complexity of user stories. The bottom line is that estimation (whether it’s in points or some other unit of measure) should focus on building consensus on the team about what it will take to achieve the objective.


Article: Internet of Things, Machine Learning & Robotics Are High Priorities For Developers In 2016

Last month, we featured Mary Meeker’s annual list of hot technologies. This month, we have another summary report from Evans Data about the top technologies on developers’ radars.


Return to top

Software Testing & Quality

Article: How to get testers and developers working together

One of the keys to successful and efficient development is good communication. And the interaction between testers and developers is one of the most important areas to ensure that the communication is good. This author provides some tips on how improve the tester-developer relationship.


Article: MRI software bugs could upend years of research

In yet another salient example of how important software is in almost all aspects of life now, we learn that a 15-year-old defect in the statistical analysis software used in fMRI cluster analysis calls into question the validity of results. Fortunately, the impact is (apparently) not relevant to treatment, but it seems odd that results would not be validated for more than a decade to determine correctness.


Article: Code Is Never "Perfect", Code Is Only Ever "Good Enough"

Doubtless that you are familiar with Voltaire’s aphorism, “The perfect [best] is the enemy of the good.” This is probably nowhere truer than in programming and development. And while many of us tend to have perfectionist streaks, we must make peace with the fact that delivering good value is more important than fixing all of the little warts.


Article: Why Writing Correct Software Is Hard

Certainly, it’s obvious to most readers of this newsletter that writing good software is no mean feat. This article explains, from the mathematical perspective, why even the simplest of programs is exceedingly difficult to prove to be correct.


Article: The State of the Software Testing Profession Report Summary

What does the career outlook for software testing look like in 2016? According to this summary of report based on a survey of over 500 testing professionals, the future looks bright. While tester roles are changing (or, more accurately, will continue to change), 3/4 of respondents said that independent testing is still an important role on teams.


Return to top


Tutorial: PostgreSQL Exercises

PostgreSQL has really changed the landscape of open-source relational database systems with many great features to simplify data analysis, while retaining the familiarity of SQL. If you are just getting started with PostgreSQL (or want to dip your toes in the water on the advanced features!), there’s no better way than through these exercises. This interactive site allows you to enter your answers to the questions posed and even get hints, if you’re stuck. And the content runs the gamut of basic (beginner) SQL to advanced features.


Reference: AWS-API.info

If you build anything using Amazon Web Services (AWS), such as the S3 storage platform, this site is a must-have for you. It provides simplified documentation for all of the AWS APIs, including brief descriptions of each method. And, of course, it links to the official AWS documentation if you need more details.


Tutorial: Say NO to Venn Diagrams When Explaining SQL JOINs

At one time or another (and even in this newsletter!), you’ve probably seen or used Venn diagrams to show how the SQL joins work. This author says that we should instead simply rely on our intuition about sets for understanding. What do you think?


Reference: Undoing commits in Git

Everyone has need to undo a commit (with or without push) to a Git repository at one time or another. This single workflow graph shows the Git commands to reverse your actions.


Reference: Serverless Architectures

One of the new buzzwords making the rounds in development and devops circles is “serverless architecture”. The whole notion itself is confusing and fraught with misinformation. This excellent, comprehensive article explains the concepts and uses the de facto standard of AWS Lambda to illustrate the ideas.


Tutorial: 0 to Microservice in 5 minutes with Go, go-microservice-template and Minke

Google’s Go language continues to gain ground in the systems programming arena and now it’s moving further in web development, as well. This detailed tutorial shows how to use Go and several other open-source tools to quickly build microservices using the Bauhaus approach.


Return to top

Career Development/Miscellaneous

Article: Steps to Turn Off the Nagging Self-Doubt in Your Head

We’ve mentioned before that technology workers tend to have a higher rate of imposter syndrome. However, just knowing about it, doesn’t necessarily help you correct it. This article gives some specific suggestions for how to turn your thinking around when those self-doubts start sneaking in. Although you might not want to banish some of those thoughts completely.


Article: 25 Best Paying Cities for Software Engineers

Seattle tops the list of Glassdoor’s annual survey of cities with best pay for developers. However, you’ll find some (perhaps) surprising places in the list, including Madison, WI and Raleigh, NC which made the top 5. One of the nicest features of the list is that it’s based on salaries adjusted for cost-of-living, so you can make apples-to-apples comparisons.


Article: Recalibrate Your Productivity Sensors

Looking to make the transition from development to management? This article gives some sage advice about the fundamental mindset change that you must make around the definition of “productivity” and how it now must be measured by the achievements of your team. He notes that this is often the most difficult shift for technical workers in moving to management.


Article: Salary Negotiations Study: Data from Tech Employees

When accepting a new position, do you negotiate with the hiring organization for better salary or benefits? According a survey of over 5000 tech workers, almost half do and almost 60% of those with 10+ years of experience do. And you always need to know the “rules” for how to negotiate, if you decide to do it.


Article: Schedules Aren't a Constraint on Life, They Let You Live It

Agile development methodologies have seemed to given “schedule” and “deadline” a decidedly negative connotation. For example, consider the #NoEstimates movement. In this article, the author makes a good argument about the value in schedules and routine from the perspective of allowing you to have a life outside of work. And his argument probably dovetails nicely with “Good Enough” philosophy.


Article: Is The End Of Code Really Coming?

In response to Wired Magazine’s article The End of Code (which we featured in the June 2016 issue), this author debunks several myths that machine learning and artificial intelligence are going to put developers out of work in the next 5 years. While it’s true that technology is disrupting low-skill jobs, for the foreseeable future, someone (a person!) will be needed to write code.


Return to top

Telecommunications/Networking Industry

Article: Verizon: No. We Can't Become Dumb Pipes

Technology pundit Jean-Louis Gassee says that the Verizon-Yahoo merger is doomed to failure due to the vast differences in corporate culture between old-school telecom providers and content providers. He doesn’t pull any punches in his dislike for telecom providers. And doubtless that you’ll read any other articles about this merger that have both “mendacity” and “necrophiliac” in them.


Return to top

Useful Utilities

Robomongo (Free – Windows/Linux/Mac OS X – 20MB)

Robomongo is a cross-platform GUI for working with Mongo DB NoSQL database that expands on the familiar Mongo DB Shell by supporting multiple shells in tabs, autocompletion, tree view of JSON results, and more.


Visual Alchemist (Free – Cross-platform/JavaScript and Python – 1.6MB)

Visual Alchemist is a minimalist, easy-to-use data modeling tool built in JavaScript and Python (only for live database interaction). It doesn’t require any special installation or configuration; just download it and open the index.html file. It allows you to build your table definitions and visually create key relationships. With the Python module, you can push your model to your MySQL database.


Halva (Free – Cross-platform/Java – 919kB)

If you like the functional programming paradigm of Scala, but still write a lot of native Java code, then Halva might interest you. Essentially a syntax translator, it allows you to write your Java applications using almost all of the idiomatic Scala constructs and methods in any Java class.


SimpleRT (Free – Android and Linux/Mac OS X – 1.2MB)

Even though WiFi is ubiquitous in most places, there are still plenty of places where you still have to plugin to get Internet access. SimpleRT is an open-source reverse tethering utility for Android devices, which allows you to share your computer's internet connection with your Android device via a USB cable. Just plug in your USB cable and run the utility on the computer and Android device. And it doesn’t even require that you have ADB installed or that your Android device be rooted.


Empusa for MyBatis (Free – Cross-platform/Java – 4.8MB)

If you use the excellect MyBatis ORM/data-mapper tool for Java, Empusa is a great add-on for it. Empusa allows you to take an existing database and, via JDBC, generate a full set of DAOs, data mappers, and MyBatis configuration files for the database. It’s a real time saver when starting out development from a given data model.


Return to top

Just For Fun


Feeling overwhelmed by the proliferation of JavaScript frameworks? Well, maybe it’s time to return to those thrilling days of yesteryear with this MVC web framework written in Fortran 90. You might sneer, but it has everything you need, including support for Jade templates and SQLite database.


Return to top