Up to Newsletter Index

November 2017 Newsletter


Quotable Quotes

Programming is a few brief moments of sublime elegance embedded in months of niggling, exacting, precise trivialities. –Alan Cooper, creator of Visual Basic

All are lunatics, but he who can analyze his delusions is called a philosopher. –Ambrose Bierce, Epigrams

If you had to identify, in one word, the reason why the human race has not achieved, and never will achieve, its full potential, that word would be ‘meetings’. –Dave Barry

Habitable software is better than perfect software, both for its users and its developers. –Richard Gabriel, Patterns of Software: Tales from the Software Community (1996)

Be truly clever; write boring code. You'll have fewer bugs, and the maintenance programmers will love you for it. –Steve Maguire, Writing Solid Code

Return to top


Software Development Process and Methodology


Article: How to start incorporating machine learning in the enterprise arena

By now, you are probably keenly aware that technologies like big data analysis, artificial intelligence and machine learning are powerful and useful. While many small organizations (think startups!) have adopted them, enterprises have been noticeably slow on the uptake. This author looks at how you can help your company make the transition successfully.

https://readwrite.com/2017/06/15/incorporating-machine-learning-enterprises/


Article: How to write awesome tech specs

Somewhere along the road to agile, we seem to have adopted the idea that “agile” means “no documentation”. This article explains how Lyft prepares the appropriate level of technical specifications for their platforms without getting bogged down in irrelevant minutiae.

https://eng.lyft.com/awesome-tech-specs-86eea8e45bb9


Article: The end of the cloud is coming

Sure, the title of this article contains some clickbait, but the author does a good job of explaining why the “centralized” architecture of the cloud today can’t last, mostly due to intractable security limitations. He goes on to discuss some of the ideas around a new architecture, including distributed approaches such as IPFS and BitTorrent.

https://venturebeat.com/2017/11/04/the-end-of-the-cloud-is-coming/


Article: Write tests. Not too many. Mostly integration.

So, you want to improve the quality of your code, but where should you start? This article takes a compact (“Tweet-sized”) statement and builds a strong test-driven development (TDD) methodology from it. The author emphasizes that focusing strictly on unit tests (the typical approach for TDD) often results in missing the forest for the trees and instead says that integration tests (i.e., between modules and classes) are where tests are most valuable.

https://blog.kentcdodds.com/write-tests-not-too-many-mostly-integration-5e8c7fff591c


Article: Over-engineering (the root of all evil)

If you’ve been working in technology for a few years, doubtless that you’ve seen your share of “over-engineered” applications or systems. This developer discusses how we fall into the trap of over-engineering using some relevant examples and also explores how organization culture contributes to the problem. He goes on to gives some ideas for how to avoid this common pitfall.

https://c0de517e.blogspot.fr/2016/10/over-engineering-root-of-all-evil.html


Return to top


Software Testing & Quality


Article: To type or not to type: quantifying detectable bugs in JavaScript

Type theory and developers’ preferences about whether strongly-typed languages deliver better quality is a slippery slope to go down. Nevertheless, this article provides substantial evidence that typed versions of JavaScript (TypeScript, Flow, etc.) directly reduce defects in the range of 10% - 15% (all else being equal). And for an interesting alternative view, check out this article.

https://blog.acolyer.org/2017/09/19/to-type-or-not-to-type-quantifying-detectable-bugs-in-javascript/


Article: Big consequences of a good bug report

Do you ever wonder if it’s worthwhile to create defect reports with lots of details and steps to reproduce? This article shows how they can help your deliver better quality applications faster. While the report probably took the tester a good bit of time, that time was more than made up for by making it easier for the developer to find and fix.

https://mikekaganski.wordpress.com/2017/11/06/big-consequences-of-a-good-bug-report/


Article: Move Your Bugs to the Left

Again focusing on the principle of finding defects as early in the process as possible, this article examines the concept from the perspective of test-driven design (TDD) and how developers can use good practices to isolate problems as soon as possible in the programming/implementation process.

http://samwho.co.uk/blog/2017/09/06/move-your-bugs-to-the-left/


Article: USS McCain collision ultimately caused by UI confusion

If you don’t think that the quality of the user interface of your application is important, perhaps this article will change your mind. The Navy’s investigation into the collision of the USS McCain concluded that UI confusion was at least partially responsible for the accident. UIs should at least minimize ambiguity about options.

https://arstechnica.co.uk/information-technology/2017/11/uss-mccain-collision-ultimately-caused-by-ui-confusion/


Return to top


Tutorials/References


Tutorial: A Five Minutes Guide to Better Typography

Most readers of this newsletter aren’t graphic designers or artists, but most still want to build elegant, effective UIs for applications. Likewise, typography is often a more powerful tool for usable interfaces than any other factor. This brief guide underlines the key principles to using type in web design and application GUIs effectively by using simple, practical examples.

http://pierrickcalvez.com/journal/a-five-minutes-guide-to-better-typography


Tutorial: Implementing a hash table in JavaScript

One of the best ways to learn a new programming language is to use the basic principles to build something that you already (conceptually) understand. In this tutorial, the author takes a step-by-step approach at building a simple hash table in JavaScript, by starting with a naïve implementation and building up to an efficient algorithm.

http://www.mattzeunert.com/2017/02/01/implementing-a-hash-table-in-javascript.html


Reference: The 14 JavaScript debugging tips you probably didn't know

Often, one of the big hurdles in learning a new language or development platform is finding the best way to debug your code. This article gives many simple, yet very useful suggestions for improving efficiency with debugging JavaScript in the browser.

https://raygun.com/javascript-debugging-tips


Reference: The Blockchain Dictionary

Sometimes, learning about a new technology is hampered by jargon and terminology that is foreign to you. If you are getting started with blockchain or cryptocurrency technology, this is a handy reference to the common terms used.

https://www.theblockchainnewsletter.com/glossary.html


Return to top


Career Development/Miscellaneous


Article: Why You Can Focus in a Coffee Shop but Not in Your Open Office

This author tackles the counterintuitive observation that noise in open-plan offices tends to distract us, while noise at the local coffee shop helps us to focus. The conclusion that he draws is that it’s not the noise that is the problem (in fact, some noise is helpful!), but the interruptions in the office that lower productivity.

https://hbr.org/2017/10/why-you-can-focus-in-a-coffee-shop-but-not-in-your-open-office


Article: Almost half of tech workers worry about losing their jobs because of ageism

Diversity is a hot topic in the technology industries and one of the newer topics is so-called “ageism”. A new survey from Indeed of over 1000 tech workers says that 40% are concerned about losing their job due to age with nearly 20% very worried. The survey shows very few tech workers aged 40 and over. Recently, agile pundit Kent Beck wrote about ageism and it’s been discussed on InfoQ, as well..

http://www.siliconbeat.com/2017/10/19/survey-almost-half-of-tech-workers-worry-about-losing-their-jobs-because-of-ageism/


Article: Simple Ways to Be Better at Remembering

Perhaps you haven’t reached the age yet where your memory starts to fail. (I have!) This article gives some non-intrusive, easy-to-learn tips for how to remember important things. The most important suggestion is that you need focus and concentration to learn and remember.

https://www.nytimes.com/2017/10/19/smarter-living/simple-ways-to-be-better-at-remembering.html


Return to top


Useful Utilities


fd (Free – Cross-platform/Rust – 1.2MB)

fd is a minimal, fast replacement for the venerable Unix/Linux find command. It features simplified syntax, such as case-insensitivity and ignoring hidden files/directories by default, and full support for searching for files with regular expressions. It’s cross-platform, built with Rust, and binaries are available for Windows and Linux.

https://github.com/sharkdp/fd


VBox Raw Disk GUI (Free – Cross-platform/Java – 320kB)

Even for those with a good bit of experience creating new virtual disks with the Virtual Box createrawvmdk internal command is notoriously difficult. Nevertheless, creating raw disks is a common task for Virtual Box. VBox Raw Disk GUI is a Java-based utility that provides a simple GUI for the various parameters needed by createrawvmdk.

https://sourceforge.net/projects/vboxrawdiskgui/


rainbow_csv (Free – Cross-platform/Vim extension – 549kB)

If you are a Vim user who needs to work with CSV (or other delimited) files, with rainbow_csv you no longer need to switch to another tool for simple viewing, editing, or summarizing. It automatically highlights data from each column in a different color and allows you to use a simple SQL-like language for SELECT and UPDATE queries. You can even use JavaScript or Python expressions in your queries. And it supports non-delimited files, as long as the data format is consistent.

https://github.com/mechatroner/rainbow_csv


wsltty (Free – Windows 10 – 1.7MB)

One of the best new features for developers in Windows 10 is the Windows Subsystem for Linux (WSL), which gives you a full-featured Linux system inside of Windows. But getting to WSL can be tricky. Enter wsltty, which allows you to use the excellent mintty terminal as a front end to WSL. Moreover, you can create Start Menu shortcuts to launch different WSL terminals directly.

https://github.com/mintty/wsltty


xmysql (Free – Cross-platform/JavaScript-Node.JS

There are many open-source tools for building a REST API from a database, but you probably won’t find a simpler one than xmysql. It combines the power of Express.JS framework with Node.JS to dynamically build a full-featured REST API from any MySQL database. It has full CRUD support, as well as support for pagination, sorting, relationships between tables and more.

https://github.com/o1lab/xmysql


Return to top


Just For Fun


Bored Microsoft programmer built a bot that tweets anytime devs swear on GitHub

Most readers are a familiar with the old saw “Necessity is the mother of invention”. I don’t know if this fits quite into that paradigm, but certainly boredom gives rise to its share of quirky creations. Want to know when someone checks in profanity on Github? Head over to this bot Twitter account.

https://thenextweb.com/apps/2017/10/09/twitter-microsoft-bot-swear-github/


Luther Insulter

To celebrate the 500th anniversary of Martin Luther delivering his 95 Theses to the Archbishop of Mainz (contrary to popular myth, he never actually nailed them to the door of the Castle Church), you can use this site to provide you with an insult from all of Luther’s plethora of writings. Here’s a salient example: You ass, abecedarian, and bacchanal.

http://ergofabulous.org/luther/


Return to top