Up to Newsletter Index

March 2017 Newsletter

Quotable Quotes

What, then, is time? If no one ask of me, I know. But if I wish to explain to him who asks, I know not. –Augustine of Hippo

Pain is inevitable. Suffering is optional. –Haruki Murakami, What I Talk About When I Talk About Running

Return to top

Software Development Process and Methodology

Article: Not Your Problem

While this article is directed mainly toward game developers, the concepts apply broadly to any domain of programming. The author makes the point, using relevant, specific examples that your job is to provide a working application that meets your customer’s need and not to develop “neat” tools or re-invent the wheel in the contexts of libraries, utilities, etc. He emphasizes that you should take advantage of available tools and libraries, not try to out-smart those developers by building your own.


Article: Most project managers ignore a huge aspect of task estimation

Do you think that you are reasonably good at task estimation on your development projects? This article says that most teams fail to use familiarity with the task and experience with similar tasks in the past as good predictors for the validity of the new estimates.


Article: Id Software Programming Principles

You probably know id Software as the company that gave us hit games like Quake and Doom, but this company has had several expert programmers over the years. In this article, founder John Romero expounds on the development principles and practices that made them so successful, many of which are popular today under the “agile” umbrella.


Article: Why products built by large teams fail so often

Application development project failure doesn’t get quite as much attention as in the past. Nevertheless, failure (outright and from lack of meeting objectives) is still a problem. This article suggests that traditional project management practices are part of the cause and recommends that smaller teams with more ownership of results should be used instead.


Article: 5 keys to project success, according to a PMI survey

Based on a survey of 3200+ project managers, the PMI’s annual report on the status of the PM profession identified the most important factors in project success. The most important factor is reducing waste; for the first time, respondents indicated that waste has fallen below the 10% threshold.


Article: The Next Big Blue-Collar Job Is Coding

By now, most of us are keenly aware that the good-paying, post-war industrial jobs aren’t coming back, done in more by automation than anything else. So what kind of job will future generations look to? According to this article, coding looks to have a bright future in replacing some of the lost jobs.


Return to top

Software Testing & Quality

Article: Worthwhile Testing: What to test in a React app (and why)

Just as the reactive/async programming paradigm has caused a substantial change in development approaches, testing must adapt, as well. This article points out some of the salient aspects and gives suggestions for how to get the most benefit from your testing.


Article: What Makes a Good End-to-End Test?

Your project is nearing the finish line. What’s left to do? You probably want to have some “end-to-end” tests. But what does that mean and what can I do to ensure that they are good/useful? This article provides some practical tips on not only developing an appropriate end-to-end test suite, but also maintaining it.


Article: Are Software Bugs Inevitable?

By taking a historical view of development practice, this article (and associated podcast) try to understand why we have bugs in applications to begin with. Moreover, they go on discuss some of the inherent problems considering the debacle with the baggage-handling system at Denver International Airport.


Article: Testers Make Software Teams Highly Productive

How do you sell management on the importance of an independent test team? Perhaps “productivity” isn’t at the top of (or even on!) your list, but it should be. This excellent article explains how testers not only validate the applications functionality, but improve the results and productivity of the development team. The author especially notes how automated testing (by developers) simply can’t replace effective, motivated testers.


Article: 13 Software Failures of 2016 That Testing Could Have Prevented

This retrospective of some of the high-profile software and security failures from last year provides a relevant reminder of the importance of thorough application testing. Moreover, the author explains specifically how effective testing could have prevent (or, at least, minimized) these problems.


Return to top


Tutorial: A JavaScript journey with only six characters

JavaScript has some odd quirks, but understanding those oddities is key to writing idiomatic JavaScript. This article explains some of the esoteric, hidden corners of the language that can improve your productivity and ability to understand others’ code.


Tutorial: 3 benefits of using Immutable Objects

By now, you’ve probably heard about immutable objects and that you “should” use them. However, perhaps no one explained the benefits. This article gives some clear explanations of the advantages.


Tutorial: SpeedCoder

Most online (and offline) typing tutor applications emphasize typical writing. SpeedCoder is specifically for programmers/developers, offering practice sheets in 10 different programming languages. You can even upload your own code and use it for practice. And the whole thing is free.


Tutorial: Understanding /proc

Not everyone will need to know about the Unix/Linux /proc file system, but understanding will almost certainly make you a better developer, especially if you use new systems languages like Go or Rust, by helping you comprehend how the OS manages the various processes and how it actually runs your application.


Tutorial: Modern JavaScript Stack Training

Let’s face it. The JavaScript development ecosystem is complex, even for those with a good deal of experience. If you are just getting started with some of the latest and greatest JavaScript technologies, like React, ES6, etc., then this tutorial helps you get the various tools for both back-end and front-end JavaScript development installed and working together, starting from the very beginning with installing Node.JS and NPM.


Tutorial: Xplain - Explaining X11 for the rest of us

If you’ve ever used a GUI running on Linux or Unix, chances are very good that you interacted with the X Window System (a.k.a. X11), even if you didn’t know it. X11 is the de facto standard graphics platform for Linux/Unix. This interactive tutorial, which features real X11 displays embedded in HTML5 Canvas element, explains without a lot of technical jargon how the platform works and how the various pieces fit together.


Return to top

Career Development/Miscellaneous

Article: Surprising Things Ultra Productive People Do Every Day

Do you know someone who is simply more productive than everyone else in your organization? Have you wondered how he/she does it? This list should give you some tips for habits to improve your own productivity and perhaps even your overall well-being.


Article: Programmers are having a huge discussion about the unethical and illegal things they’ve been asked to do

How often do you consider the legal or ethical consequences of the work that you do as a developer or other technology worker? As software becomes more ubiquitous, but often more hidden, these factors are more than just philosophical abstractions. This article looks at how others deal with some of these dilemmas.


Article: Programmers are confessing their coding sins to protest a broken job interview process

The creator of the Ruby on Rails framework has caused a groundswell of support in his opposition to using ad hoc programming tests in interviews. Many other prominent developers have lent their support to the cause by admitting that they have to “Google it” to remember some basic concepts.


Article: Mark Cuban on Why You Need to Study Artificial Intelligence or You’ll be a Dinosaur in 3 Years

Still thinking about what you’re going to do in 2017 to improve your skills? Regardless, this seems like some good advice: learn machine learning. The data science field and especially machine learning are exploding and everyone needs some background in this. To get started, you may want to browse the machine learning links on Pinboard.


Article: How Do You Know A Developer Is Doing A Good Job?

Most readers of this newsletter are familiar the difficulty and complexity of measuring and evaluating developer performance. (Hint: Don’t grade based on lines of code!) But how should you assess whether an employee (or you!) are doing well or not? This article provides some great principles and context. The bottom line (according to this author) is that it’s the soft skills that are most important.


Article: What Makes A Senior Software Developer?

In almost every case, at some point in your technology career, you will come to a fork in the path where you must choose between a technical track or a management/supervisory path. For those who opt for the technical path, most often the first stop is as a “senior” developer, where you act as a coach/mentor for other developers. But many times the role of senior developer is ambiguous and variable from organization to organization. This article gives a broad perspective on not on the “qualifications” for the senior role, but what the role could/should mean.


Return to top

Useful Utilities

Grafitti (Free – Cross-platform/Java – 800kB)

Grafitti is a free analyzer for Java JAR files that gives you nicely-styled HTML output showing the number of classes, interfaces, and abstract classes, Java version, Maven and other dependencies and more. It’s available as an online tool (just upload your JAR file) or as a downloadable utility for offline use.


LANClipboard (Free – Cross-platform/Java – 23kB)

Working on multiple systems is commonplace in development today. And often it’s useful to be able to quickly share your clipboard across various systems. LANClipboard is a small, single-executable client-server that does just that. It even allows you to password-protect the server (sender).


Sophie (Free – Cross-platform/Java – 7.6MB)

Sophie is a cross-platform (binaries are available for Windows, Linux, and Mac OS X) browser and administration tool for Solr indexes. You can list and search your index documents, modify the schema, add and update the index, and more.


Visual Studio Code for Chromebook and Raspberry Pi (Free – Cross-platform – Varies)

The Visual Studio Code editor is an excellent, multi-purpose editor for Windows. This site provides ports for “regular” Linux (both APT and YUM packages are available), as well as special builds for Chromebook (running Crouton) and Raspberry Pi.


Return to top

Just For Fun

That Old-Time Hucksterism: The Oddest Doohickeys of Industrial-Age Entrepreneurs

We often think that entrepreneurship is a modern creation. But this article points out that someone is always out to find that something that you just must have. Kind of reminds me of those vintage ads that Wendy’s restaurants used to have on their tables.


I am going to eradicate the inbound Windows Support scam

Doubtless that you’ve been accosted by the “Windows error” browser pop-ups on your forays across the Internet. This guy took the scammers on in a way that is both hilarious and incredibly effective.


WSL: Wine runs on it!

In what must be one of the strangest uses of technological indirection, this hacker demonstrates the ability of the Wine platform to run on the Windows Subsystem for Linux (WSL) under Windows 10. Now I just have to figure out how to get it to run on Docker!


Return to top