He who lives without folly is not as wise as he thinks. –François de La Rouchefoucald
Great things are done by a series of small things brought together. –Vincent Van Gogh
Time is the only thing that separates mathematics from computer science. –Adam Nemecek
If you want to find the secrets of the Universe, think in terms of energy, frequency and vibration. –Nikola Tesla
Software production is assumed to be a line function, but it is run like a staff function. –Paul Licker
As much as we like to think of programming as a rational pursuit, it has plenty of rules of thumb. This author proposes one in which he recommends not refactoring until you’ve seen (at least) three instances of a pattern. He shows how just two examples often lead us to an untenable solution that would be avoided with more evidence.
https://erikbern.com/amp/2017/08/29/the-software-engineering-rule-of-3.html
When you get down to it, management is essentially the art of getting others to do things for you. In the case of developers, this process can seem mysterious. This author looks at the key factors influencing motivation of programmers. The most significant point that the author makes is that managers should manage the process not the people.
https://www.7pace.com/blog/motivating-software-engineers-101/
As agile methodologies have gone mainstream and matured (or maybe just aged?!), some organizations have “buyer’s remorse” about them. This article examines five difficulties that are common, especially those that are most visible (and annoying) to senior management. The author says that success with agile requires long-term commitment at all levels of the organization.
https://hackernoon.com/why-isnt-agile-working-d7127af1c552
This article discusses some interesting concepts about the importance of team dynamics (remember “team velocity” from Scrum?) and how team members work with and communicate among each other. The author suggests instead of focusing on the intelligence or skills of individual team members, it is substantially more important to understand the “collective intelligence” of the team.
http://blog.lunarlogic.io/2017/effective-collaboration-superstar-developers/
With Scrum becoming mainstream, many developers have had little training in the underlying principles and others may have fallen into to some of the traps around it. Here are ten common misconceptions (which often turn into bad practices) that you should know about Scrum.
Don’t let the fact that this article is aimed at startups/entrepreneurs deter you. The concept applies to almost all development work, including (perhaps especially!) enterprise software. The author explains the importance of understanding the point at which the costs of customizing an application exceed the benefits. If you consider enterprise development to typically have only one customer (your organization!), you can quickly see how this is vital in this situation.
https://blog.ycombinator.com/the-customization-curve/
Surely every manager looking for new developers wants to hire “rock stars”, right? According to this writer, you should think twice about doing that, because of the potential damage that such programmers can do to your team and organization.
https://techvibes.com/2017/10/03/why-hiring-rockstars-is-harmful-to-your-organization
Certainly, the title of this article is intended to conjure up images of the destruction of the world because of software defects and failures. While it seems unlikely that software will be our undoing, the author references several software problems with significant (catastrophic?) consequences and discusses how software is entirely ubiquitous now. The author suggests that better tools are the answer to the software quality crisis. Robert “Uncle Bob” Martin rejects the notion that tools can solve these problems and comes down in favor of better development practices, but he has his own detractors.
https://www.theatlantic.com/technology/archive/2017/09/saving-the-world-from-code/540393/
Most of us are familiar with the concept that costs to fix defects tend to increase exponentially through the various phases of a project, as popularized by Boehm. However, we often overlook cases where defects are introduced due to poor understanding of existing code. This article explores the typical errors in reading source code and offers preventive measures to reduce these problems. And just like human language shapes meaning and understanding, new research shows the same is true of programming languages and tools.
https://ssl.engineering.nyu.edu/papers/gopstein_atoms_fse_2017.pdf
This software testing professional services firm offers a whitepaper with results from their annual survey of testers (via LinkedIn profiles) about the career, industry, and tools. Some of the insights include that more than 1/3 of testers work in organizations of 10000 or more employees and 2/3 are male. See here for an overview that does not require registration.
http://go.qualitestgroup.com/the-global-state-of-software-testers-whitepaper-qualitest
This is a very interesting, comprehensive study of how programming language affects (or doesn’t!) code quality. The researchers looked at code from 17 languages across 700+ popular Github projects with 29000 developers to evaluate quality factors. The overall conclusion: The data indicates that functional languages are better than procedural languages; it suggests that disallowing implicit type conversion is better than allowing it; that static typing is better than dynamic; and that managed memory usage is better than unmanaged.
Most of us probably use the terms URL and URI interchangeably, but as this article explains, there are some substantial differences and those differences can be important, especially in specific contexts. The basic difference is in whether the access method (usually protocol) is specified, which makes a URI into a URL.
https://danielmiessler.com/study/url-uri/
If you’ve tried to understand the concepts of functional programming and had some difficulty (or even if you do have a good grasp of it!), this tutorial is just for you. Instead of discussing things like “pure functions”, “immutability”, “monads”, “category theory”, and other esoterica in an abstract manner, this author uses the metaphor of cooking something (tiramisu!) with a recipe to show the concepts, including how to refactor. Highly recommended!
http://www.lihaoyi.com/post/WhatsFunctionalProgrammingAllAbout.html
Creating a report of the changes to your code is a common and useful activity. This tutorial shows how to generate a nice-looking HTML report from Git Log using the composition of various simple tools (i.e., using the “Unix philosophy”).
http://www.oilshell.org/blog/2017/09/19.html
If you didn’t take a macroeconomics class in college, this 30-minute video animation is a great introduction (or refresher) on how the various pieces of the economy work. It’s presented by hedge fund king Ray Dalio.
http://www.economicprinciples.org/
We frequently discuss the importance of good design and usually try to provide articles which help the non-designers among us (most of all me!) do simple things that improve design of our systems. This multi-part series is just such an item: It gives you more than two dozen practical concepts to use when laying out the text of your pages. In my view, if you aren’t graphically/artistically inclined, then good typography is your best tool in good design.
http://blog.alexdevero.com/33-laws-typography-pt1/
Many people have the mistaken idea that leadership skill is a gift. As this great interview with John Hennessy, the former president of Stanford and an accomplished high-tech entrepreneur, shows, leadership can be developed in almost any person, but it takes commitment, effort, and time.
http://ecorner.stanford.edu/videos/3849/Great-Leadership-Can-Be-Learned-Entire-Talk
Do you ever feel like you must go faster just to keep up? I’ve felt like that for many years. The number of technologies and tools to learn in development are astronomical and growing. This article gives you some needed perspective on dealing with this and emphasizing the things you do, rather than everything that you think just passes you by.
http://zackkanter.com/2016/01/13/you-are-not-behind/
Undoubtedly, new technologies like machine learning, “big data”, and others will be huge disruptors of our current economy and work. But, what can we really expect as a consequence? Here’s some perspective based on how the industrial revolution of the 19th century impacted workers.
Since major providers aren’t interested in expanding broadband services to small towns and farm areas, many communities are taking a distinctly America approach: do it yourself. Some of the interesting innovations include requiring that anytime any infrastructure work requires digging that the contractor lay fiber optic cable in that right-of-way.
According to a new report from Cisco, by 2021, 82% of Internet traffic will be video, up from ~70% now. Several factors are driving this trending, including increased video consumption, higher video content resolution, and transition from traditional cable TV to online viewing.
Most of us have experienced slowdown of our systems after running for some time. Memory Hogs is a tiny AutoHotKey utility (source included) that helps you monitor memory and resource usage. You can set thresholds for warnings when applications use more memory that you want or other resources drop below desired limits. Likewise, you can kill applications/processes from Memory Hogs’ main window.
http://s355751075.onlinehome.us/category/freeware/memory-hogs/
Sqlbiter is a small command-line utility built with Python that allows you quickly convert a variety of tabular data formats into a SQLite database. It supports CSV, Excel, and even Google Sheets. In addition, it can parse web pages for tabular data to import.
https://github.com/thombashi/sqlitebiter
Generating GUID (a.k.a. UUID) values is a common task in development and sometimes you need to create a few ad hoc. GuidGenConsole is a tiny, shell-based tool to generate GUIDs in various formats and it even supports sending the generated values directly to the Windows Clipboard.
https://github.com/michaelmcdaniel/GuidgenConsole
If you use PuTTY for both SSH sessions and for creating network tunnels over SSH, your PuTTY session manager can get quite cluttered. PuTTY Tunnel Manager operates from the system tray and is designed specifically for using PuTTY in the background for tunneling. You can even keep your SSH and tunneling sessions separately.
https://github.com/kostapc/Putty-Tunnel-Manager
Here’s a real sign (hee hee!) of the times. And perhaps it’s not such a bad idea, since it’s going to be much harder to rip the guy off since he’s using cryptocurrency.
http://imgur.com/gallery/Fc6CT
Looking for a real workout for your brain? Then this is the challenge for you. It simple, just answer the 40 questions on this quiz correctly to win. So far, it’s only been successfully completed 40 times (by the same person!) out of millions of attempts.
https://www.nevercompletedgame.com/
Are you frustrated with your noisy, privacy-free work space? If so, here’s an option that you may want to recommend to your management as an alternative.
Sometimes it’s fun to take a detour from the world of bits and bytes. Check out this site where you can generate a graphic of almost any chemical compound that you can think of.
Many newsletter readers may not have even been born when Voyager 1 and 2 left Earth 40 years ago for missions intended to last about a dozen years. Now, with their legendary reliability, we have the first man-made interstellar objects. Check out these awesome graphics celebrating the mission.
https://voyager.jpl.nasa.gov/downloads/
What if the popular epic Game of Thrones had been made in the silent film era? Here’s one persons imagining about what it would have been like. Very fun and creative.
https://www.youtube.com/watch?v=dlMilUlOIFQ