We are blessed with technology that would be indescribable to our forefathers. We have the wherewithal, the know-it-all, to feed everybody, clothe everybody, and give every human on Earth a chance. We know now what we could never have known before-that we now have the option for all humanity to make it successfully on this planet in this lifetime. Whether it is to be Utopia or Oblivion will be a touch-and-go relay race right up to the final moment. –R. Buckminster Fuller, Critical Path (1982)
To me programming is more than an important practical art. It is also a gigantic undertaking in the foundations of knowledge. –Grace Hopper
Temper [is] a weapon that we hold by the blade. –J.M. Barrie, The Little Minister
A closure is a poor man’s object; an object is a poor man’s closure. –Guy Steele
Return to top
Does your organization allow development teams to choose their languages, tools, and operating practices? Or are they mandated and standardized? This developer makes some strong arguments for the value of choice, especially in terms of motivation and ownership by the development team.
Estimation on development projects are among the most contentious of topics in the programming world. This author describes development as akin to exploring uncharted territory in the dark and, accordingly, any kind of time estimations are just wild guesses. He advocates returning to original intention of “story points” as relative measures of difficulty without any time dimension whatsoever.
This article puts forward an almost certainly controversial thesis. The author points out that much of the “agile” and “Scrum” practices so popular in development today don’t have much (or any!) independent empirical evidence to support them (i.e., the cargo cult mentality). Moreover, he notes that many of the well-known “thought leaders” are also consultants in these practices. While I don’t think that these short-comings invalidate agile, it is a strong indication of the immaturity of these practices and the discipline.
The head of the language (C++, C#, VB, and F#) development team at Microsoft says that the main influence on programming over the past 15 years has been concurrency. He uses this as the springboard to predict how paradigms will change over the next 15 years with a focus on the transition to distributed systems.
Last month, we had an article advocating against microservices and for services-enabled monoliths. Of course, every architecture has its trade-offs. This author warns against what he terms “micro-monoliths”, which he characterizes as situations where changes have a cascading effect among multiple microservices.
Using his own account of trying to find who was responsible for some bad code and learning it was actually himself, this author emphasizes that playing the blame game about “bad code” is counter-productive and that a team’s efforts are better spent on the “Boy Scout principle” of leaving a code base better than you found it.
Return to top
In this wide-ranging survey of software security, researchers from the Economist claim that software providers do not have sufficient market incentives to ensure application security. They specifically emphasize the increasing importance of quality and security in software as it moves into new areas like self-driving vehicles and the “Internet of Things” where life and limb are at risk.
Checking applications for security defects is now part and parcel of the software testing regime, especially since cryptography code tends to be an area quite prone to error. But what if you are new to the process? This article gives you some great tips for how one security expert goes about the initial checks for flaws in crypto implementation.
In my view, one of the best ways of improving as a tester is to learn about the experiences of others, even if their situation seems rather oblique to your own. This article discusses the basic approach that Microsoft test team takes to testing Windows Subsystem for Linux (WSL) and their philosophy about quality.
Most testers that I’ve worked with are very good at their jobs (indispensable I’d say). Yet, one of the struggles that testers face is whether the tests were sufficient. In my view, this is the single biggest factor contributing to impostor syndrome among testers. This article provides some good perspective on this matter.
Return to top
Perhaps one of the best ways to learn (or refresh your memory on) a programming language is by seeing common data structures and algorithms, which you probably already know in the languages you already use. This comprehensive repository includes not only the data structures and algorithms in a straightforward, minimalist manner, but also includes simple examples of common uses to help you understand the pattern.
One of the concepts that is a bit difficult to grasp when getting started with Docker (or LXC or any other virtualization platform) is what constitutes a container. This article does an excellent job of explaining the container concept, including its components, and the relationship of containers to Docker itself.
This handy online reference of oft-confused technology, development, security, and networking terms uses clever analogies to explain the concepts, rather than other arcane and esoteric terms. It’s not only educational, but fun, to read.
If you want to learn about the fundamental underlying structure of computers and how they take the code that we write and do useful things, then check out this simple, brief tutorial. The author starts with binary arithmetic and then discusses logic gates and finally how those work together with code in the CPU.
Return to top
One good transition for developers who want to move onto the management career path is into project management. If you are considering this track, you might wonder what the key skills are for project managers. This article presents ten important traits and skills, including how each is used.
Whether you are just starting out in your career or job or have been at it for decades, you’re sure to find something of interest and use in this article to improve your productivity and impact. The most important aspect of this article that makes it different from many is that each item is backed up by solid research.
Call it “wasting time”, “daydreaming”, “unstructured time”, or whatever makes the most sense to you, but researchers know that constant work is not only impossible, but unhealthy. Moreover, they emphasize that this time away needs to be really away, not sitting at your desk browsing cat videos on the Internet, such as perhaps taking a walk to clear your mind and gain a different perspective or a few exercises to counteract a sedentary lifestyle.
When George Shultz was U.S. Secretary of State, he would take one uninterrupted hour per week to think strategically about his job and write down ideas for how to accomplish those items. Most of us have mostly tactical work, but we should also consider the strategic aspects of our jobs and career. Perhaps you need to also set aside some time each week to do just that.
Citing the fact that while the median age of American workers is 42, but less than 13% of developers are over 40, this article interviews several common developers (i.e., not the famous ones, although we have plenty of them who were late bloomers!) who have intentionally stayed in the role past age 40. One of the common themes among them is the satisfaction of mentoring those new to the field. However, I felt a bit uncomfortable that all of those interviewed were white males, since sustainability of the profession depends on diversity.
With many legacy applications, banks (as well as plenty of other businesses!) are struggling to find COBOL programmers to help fix and integrate their applications. One programmer parlayed this problem into a consulting business. Perhaps it’s time to brush up on COBOL.
New research based on three data dimensions of over 5000 adults, indicates that excessive social media use correlates strongly to depressed mood and other psychological disorders. It also confirms that real, personal social interaction promotes better mental health.
Return to top
A Facebook engineer discusses the development and implementation of an open-source 100G single-mode optical transceiver that they developed for interconnecting data centers. The main driver for the design was ability to upgrade the transceivers for faster speeds without rebuilding the fiber infrastructure.
Top-level Google network technologist discuss how they are using their SDN (software-defined networking) technology to improve performance of the peering/edge network.
Return to top
Rooby is Ruby-like (syntax compatible) object-oriented language implemented completely in the Go language. Thus, it allows you to develop applications in familiar Ruby and compile them to small, native binaries that run anywhere that Go does without dependencies or virtual machine. The author’s focus for the language is microservice development, but most Ruby language features are available, so it can be used for most any development effort.
Return to top
GiG is a simple, yet powerful shell script that generates .gitignore files a variety of languages and frameworks. It has templates for 100 languages/frameworks! And you can easily add your own templates for specialized situations. GiG is a real timesaver if you start with plain vanilla configurations frequently.
You probably use <Alt>+<Tab> to switch between windows dozens of times each day. Easy Window Switcher takes this shortcut one step further by allow you to use <Alt>+` (back tick) to switch between/cycle through all windows of the same application. Very handy when working with multiple spreadsheets or copying/moving files in separate Windows Explorer windows.
bfs stands for “breadth-first find” and it is a drop-in replacement (supports same command-line parameters) for the venerable Unix find command. The difference is that it searches breadth-first in the file system instead of depth-first, which tends to find the file you are looking for more quickly.
Undoubtedly, this application won’t appeal to all readers, but tiling window managers are very popular on Linux among developers. Now, Windows users have this option, as well, with Stacks. It features multi-monitor support, defining custom layouts, moving windows with keyboard or middle mouse button, and more.
Return to top
Artificial intelligence (AI) is taking over the world, especially in the form of neural networks. Some even fear that it will take away everyone’s jobs. But it looks like we still have a ways to go before AI masters the pickup line.
Now this is news you can use! Researchers at none other than Cal Berkeley have figured out why, despite your best efforts and intentions, shoelaces still come untied. It all comes down to the forces exerted on them by the swinging of your leg and your feet striking the ground while walking.
This site features a very creative approach to building awareness. It shows 30 endangered species, all rendered entirely with CSS3. Beautiful and informative!
So you probably know the joke about how you can’t (or actually used to be unable to) ship a software program that uses pi to certain countries because it likely (not definitely!) contains every finite sequence of digits. This flips that idea around to use sequences of digits from pi to “compress” data. The author’s tests show it took ~3 minutes to “compress” a 50kB image and makes the resulting file 3-5 times larger.
Return to top