By what inept logic must we bow to our creation if it be a machine, and spurn it as “unreal” if it happens to be a painting or a poem? The machine is just as much a creature of thought as the poem: the poem is as much a fact of reality as the machine. –Lewis Mumford, Technics and Civilization (1934)
Magnanimity by its very name denotes stretching forth of the mind to great things. Now virtue bears a relationship to two things, first to the matter about which is the field of its activity, secondly to its proper act, which consists in the right use of such matter. And since a virtuous habit is denominated chiefly from its act, a man is said to be magnanimous chiefly because he is minded to do some great act. Now an act may be called great in two ways: in one way proportionately, in another absolutely. An act may be called great proportionately, even if it consist in the use of some small or ordinary thing, if, for instance, one make a very good use of it: but an act is simply and absolutely great when it consists in the best use of the greatest thing. –Thomas Aquinas, Summa Theologiæ
That language is an instrument of human reason, and not merely a medium for the expression of thought, is a truth generally admitted. –George Boole
Every 5 minutes you spend writing code in a new language is more useful than 5 hours reading blog posts about how great the language is. –Des Traynor, “Programming Theorems” (2006)
Our knowledge can only be finite, while our ignorance must necessarily be infinite. –Karl Popper
The purpose of computing is insight, not numbers. –Richard Hamming
Return to top
What practices do the most productive developers use that make them so effective? According to this empirical analysis, the best developers are the ones who work on many small sections (“chunks”) of code and check in changes frequently. Moreover, this approach is much more measurable than the usual mantra of “do more with less”.
This article drives home a point that is often overlooked by developers: Your fundamental job is to provide business value (or reduce costs). Writing code is simply a by-product of that job. He further emphasizes that reducing the amount of code (or equivalently the number of systems) should always be the objective, because each bit of code is another area of opportunity for problems or defects.
Undoubtedly, you’ve heard a lot in the past couple of years about “dev ops”. Even so, I still can’t succinctly define it. This article gives some great perspective on the concepts by emphasizing that for “dev ops” to be successful, the entire organization must adopt it. In other words, it can’t be just the operations/infrastructure team (or the development group, for that matter!) that is invested in the process.
Certainly, on the Internet, it’s easy to say most anything you want (and people do!), so the simple statement “Chrome won” might be taken with a grain of salt. However, the one making it here was the CTO of Mozilla, maker of the Firefox browser, for 7 years. Personally, I love the Firefox browser (still my primary browser), but this article is quite clear that Chrome is the de facto standard (on the desktop, at least) now.
Microservices are one of the hottest architectural concepts in enterprise development. However, this programmer says that the principles are too immature and, often, the problems that microservices are intended to solve can make things worse. Moreover, he claims that only quite mature organizations, especially in the dev ops domain, are suited to using microservices.
This article title certainly contains some “click bait”, but the article has some great points, too. The author suggests that sprints are the cause of problems with scrum, since it essentially drives teams toward a false sense of security around the deadline of the sprint. Instead of scrum, the author proposes a model based on the principle of continuously delivering the most important thing in the simplest way.
Return to top
Brooks’ The Mythical Man-Month is the seminal work on craft of large-scale software development. This article looks at 5 points from the book with direct applicability to software testing that have stood the test of time. While each item is relevant, the most salient is the fact that testers must be flexible and successfully adapt to change.
Testers have an important role as advocates for the practice of our craft. One import aspect of this is to dispel the many “myths” about software testing. This article does a good job of summarizing both sides of the discussion of some significant misconceptions. And, interestingly, this author also cites Fred Brooks widely, as well.
Balzac famously wrote, “There are no little events with the heart.” In software testing, the same concept applies with respect to “little” defects. This article shows how something that seems insignificant in testing can balloon into a major problem in production. Nevertheless, testers must remember that our role is to provide information, including risk assessment and potential cost (financial and otherwise), to decision-makers, not to insist on their way.
Return to top
Many of you know that good writing and grammar are passions of mine. And the cardinal rule of good writing is write a lot. So everyone can use some guidance about grammar from time to time. This site is well-organized and provides simple explanations with relevant examples.
If you need to do any sort of data visualization in your web application, the de facto standard is the D3.js library. Certainly, it’s powerful, but getting a grasp of the concepts can be daunting. This article gives a broad, non-technical introduction to the various concepts and features.
Machine learning has become the new “golden child” of the programming world. But if this area is new to you, many of the concepts (and almost certainly the terminology) can be daunting. This article takes an entirely non-technical approach to clearly explaining the key ideas, common approaches, and language.
Return to top
Whether you like Jeff Bezos or not, he is a skilled business person. In his annual shareholder letter, he suggests that decisions should be made when you obtain 70% of the information that you think you need. This seems to help quantify the oft-quoted maxim “Seek clarity, not certainty,” which requires suspension of our standard mode of thinking.
Do you ever face the situation where you are productive and focused for quite a while and suddenly feel like you can’t concentrate? Psychologists and neuroscientists say that our brains simply can’t focus for much longer than several minutes at a time and that almost half of the time our brains are in “idle” mode. So the next time your boss asks you if you are daydreaming, you can honestly reply, “Yeah.”
Making the jump from programming/development to management is not for the faint of heart. If you considering this option, check out this list of brief, but very insightful concepts from one of the creators of RethinkDB to do the best job possible.
Return to top
With the announcement by Google that they have made Kotlin the third officially supported language (along with heavy-hitters Java and C++) for Android, it seems appropriate to feature it this month. I’ve heard about Kotlin for a while, but never really considered it much before now. My take is that it’s a simplified Java syntax with built-in null handling. Here are several resources to learn more.
Return to top
Medley Text is a specialized editor for Windows, Mac OS X, and Linux for writing programming notes and documentation, such as “how tos”. It has syntax highlighting support for 40+ languages and Markdown and you can insert images, create lists, and much more. You can even define custom shortcuts for inserting formatted sections or boilerplate. Probably the nicest feature is applying formatting just by selecting text.
Diffoscope is a command-line-based Python utility that is like diff for comparing files and directories, but it goes far beyond that. It will recursively unpack various archive, Linux package formats, and other aggregate files to try to precisely determine the differences.
Tamper Chrome is a Chrome web browser extension from Google that simplifies the process of editing/modifying HTTP requests for both application/API and web security testing. It adds a Tamper to the standard Google Chrome Dev Tools which further segments the functions into groups like blocking requests, modifying request or response headers, and monitoring POST messages. The GUI is clean and it breaks out each attribute so you don’t have to construct all of the details, like you would when using cURL or httpie.
SQL Notebook is a small, nimble tool for doing analysis of (more or less) tabular data (think “spreadsheet”). It uses SQLite under the covers and makes quick data analysis that is beyond the capability of spreadsheets very accessible to most any user. You can use any SQL, plus the tool adds its own commands for common tasks.
Windows has had built-in support for handling Zip archives for a while, but it is quite spartan. TC4Shell extends the idea of handle many archive formats, including Zip, RAR, 7Z, and more, transparently in the shell and file system. And it does it in a much more intuitive and seamless manner.
Return to top
Unless yachting is your thing, most of us usually only hear about it every four years when the America’s Cup comes around. But this story is just too good (and odd) to pass up. This guy plans to cross the Atlantic Ocean in a 3-1/2” yacht. He expects the trip to take about 3 months, most of it standing up.
If you’re a data scientist looking for some data to analyze, where should you look? This guy took an existing data set about the colors of sweaters worn by Mr. Rogers on his show and broke it down. Creative and culturally chic!
Return to top