This Week in Programming: Accounting for All Contingencies
As early computer science pioneer Edsger W. Dijkstra is quoted as famously saying, “If debugging is the process of removing bugs, then programming must be the process of putting them in.”
One story this week really exemplifies the often delicate nature of programming and the difficulties faced when trying to create something that accounts for every possibility. Another fun quote that you’ve likely heard before, this one from computer science pioneer Alan Perlis, speaks to that: “There are two ways to write error-free programs; only the third one works.”
The tale is one of a man with the license plate “NO” who started receiving countless tickets from a parking lot company. As it turns out, when a vehicle illegally parked in one of their lots doesn’t have a license plate, the attendant simply writes “NO” on the form, meaning “no license plate.” Unfortunately, it’s a perfect string match with an unexpected outcome.
Of course, there are simple ways to handle this situation that would prevent this error, but it would require the prescience of needing to avoid it in the first place. In this case, it’s the singular exception for a system that might work flawlessly otherwise. But isn’t that always the case?
— Walter S (@walter_esse) April 18, 2018
Meanwhile, on a similar yet not wholly related note, another tale made the rounds this week of a casino high-roller database stolen through a thermometer in the lobby fish tank. While this may not be a case of sanitizing inputs, it does seem to fall under the category of “accounting for all possibilities” — in this case, that anything and everything connected to a network needs to be secured, otherwise it’s a doorway in. I guess that’s just a reminder, as some of the first news we see this week comes in the form of some Internet of Things announcements. And with that…
This Week in Programming
- Android Things 8 Developer Preview: Google announced this week the Android Things Release Candidate, which is the final preview release of the platform before its upcoming stable release and now includes a feature complete SDK. As such, there will be no more breaking API changes before the v1.0 release, the company says, and all changes are outlined in the release notes updated SDK reference. In addition, the preview includes a number of new features that SDTimes summarizes as “the ability to unpublish current over-the-air builds when issues are discovered, visual storage layout configuration, font and locale management and product sharing support for Google Groups in the Android Things developer console.”
- Microsoft’s IoT-focused Linux Kernel: You read that right — Microsoft has built its own custom Linux kernel. Those may very well be words you never expected to read (I was a bit surprised) but it’s with the intention of getting into the IoT game. The announcement of “a secure end-to-end IoT product that focuses on microcontroller-based devices — the kind of devices that use tiny and relatively low-powered microcontrollers (MCUs) for basic control or connectivity features” is part of Microsoft’s Azure Sphere. As TechCrunch notes, “typically, these kinds of devices, which could be anything from a toy to a household gadget or an industrial application, don’t often get updated and hence, security often suffers.” I guess this is one attempt at fixing those hackable thermometers.
- DIY For AI: Move over Tinker Toys and pegboard kits. Last year, Google announced its AIY Projects and this week it has doubled down on that announcement, with a number of big updates, which BGR says could help shape the future. The company’s plans involve getting these kits into the hands of STEM curriculums around the country, where kids can work with voice and visual recognition using the new Raspberry Pi Zero WH, which comes included in the kit. The company has also offered an AIY companion app for Android to simplify setup and improved the AIY website with more information. Worry not, there is no age limit on these kits and the AIY Voice Kit and Vision Kit are both available at Target for your parents (or just curious adults).
- GitHub Tools for Open Source: In the first of several announcements we’ll cover from GitHub this week, the company announced new tools for open source maintainers, which include minimized comments, retired namespaces for popular projects, and new pull request requirements, among others. The overall intention, according to the announcement, is to simplify maintaining open source projects by basically helping to limit noise and confusion, such as might come from “accidental and ‘drive-through’ pull request prevention”.
- GitHub’s Bot-Based Learning Lab: Continuing its efforts to be more than simply a code repository and versioning tool, GitHub this week announced GitHub Learning Lab, which it calls “a tried-and-true method for helping new developers retain more information and ramp up quickly as they begin their software journeys.” The app uses a bot to lead users through a number of exercises to learn how to use, well, GitHub. At launch, topics include an introduction to GitHub, communicating using Markdown, how to host a website or blog using GitHub Pages, how to move a project to GitHub, and how to manage merge conflicts.
- Git 2.17 Arrives with Bug Fixes and Colored Code: Last up for GitHub, Git 2.17 is now available, which fixes a number of bugs and a colored code feature that colors moved code to make it easier to identify. In addition, the latest version works to speed up status with the watchman and find objects in a repositories history.
Software Development Process: seems accurate.
— Bruno Borges (@brunoborges) May 16, 2017
- Twilio Goes Wireless: Twilio has finally made the move to cellular, announcing the general availability of Programmable Wireless. As Techcrunch points out, “getting into wireless always seemed like a logical next move and a year ago, the company did just that with the beta launch of its SIM-based Programmable Wireless service for IoT.” The company had become a valuable tool for developers looking to add features such as text messages, notifications, and calls, and now looks to offer the same sort of API-based approach to IoT efforts.
- Popularity Isn’t Everything: While we often look at the various polls and indexes concerning programming language popularity to figure out what to do next — what to learn next, what to leave behind — a blog post about the viability of unpopular programming languages offers up the simple idea that popularity isn’t everything. “There’s a lot more to viability than just popularity, though popularity matters,” the author writes. “More users means more people to find bugs, write libraries, develop tools, answer questions, write tutorials, etc. But the benefit of community size is not linear. It goes through a sort of logistic S-curve. There’s some threshold size where the community is large enough for a language to be viable. And somewhere above that threshold, you start hitting diminishing return.”
- Automating Error Look-Ups: Last, but of course not least, (nothing “last” is ever “least”, huh?) a fun little tool that instantly fetches Stack Overflow results when you get a compiler error. Called rebound, the Python tools works on MacOS, Linux, and Windows, and allows you to get related Stack Overflow results right from the command line, rather than having to switch over to a web browser. What can I say? Neat.
Just so I’m clear, laptop stickers are the tech equivalent of prison tattoos right?
— I Am Recruitr (@iamrecruitr) April 18, 2018