This Week in Programming: That’s How C Does It

I had grand ambitions this week. I’d come across a smattering of articles delving into the history of programming languages, practices, and other Internet-based tidbits. I’d pondered a pithy title like “if !mistake(history) do repeat” and dug through my source materials for evidence, but came up a bit empty-handed. In the end, the line that really summed up this week’s theme was found at the closing of an interesting article asking why does “=” mean assignment?

“I don’t know if this adds anything to the conversation. I just like software history.”

So with that in mind, that’s where we’ll start, with an interesting look at the origins of “=” as a tool of variable value assignment rather than (or in addition to, rather) evaluation.

“A common FP critique of imperative programming goes like this: ‘How can a = a + 1? That’s like saying 1 = 2. Mutable assignment makes no sense.’ This is a notation mismatch: ‘equals’ should mean ‘equality’, when it really means ‘assign’. I agree with this criticism and think it’s bad notation. But I also know some languages don’t write a = a + 1, instead writing a := a + 1. Why isn’t that the norm?”

While the simple answer may be “that’s how C does it,” the author digs a bit deeper to find out how the practice evolved along the way. But again, are we really learning a lesson here not to repeat? Not really, it’s just interesting.

Similarly, another bit of Internet history that caught my eye this week was a post offering up a brief history of JavaScript. Long story short, does JavaScript have anything to do with Java? As one cartoony blurb points out, “JavaScript sounds like it has something to do with Java. It doesn’t. In fact, Java is to JavaScript as Ham is to Hamster.”

For an intriguing tale of the early browser wars (did you know “Mozilla” was a portmanteau of “Mosaic Killer”?) and the birth of ubiquitous, full-stack language (feel free to flame and/or debate in the comments, of course) we know today, read on.

This Week in Programming

.NET Core 2.1 Nearing Release: Microsoft has announced the .NET Core 2.1 Preview 2, the likely final preview before the full release in the next month or two. New features in the preview include build-performance improvements, newSDK commands, global tools, new tools arguments, self-contained application servicing, and more.

Google & Netflix Release Open Source Canary Analysis Tool: If you haven’t heard of a “canary analysis tool” before, Techcrunch’s Frederic Lardinois sums it up nicely: ” Like the name implies, this is an early warning system that is all about prevent major issues when you roll out an update to a service or your infrastructure. As you roll out an update to a subset of new users (or servers, or parts of your network), the canary analysis service checks whether the new system behaves as it should — or at least as well as the old one.” Announced this week, Kayenta is “integrated into the Netflix-incubated Spinnaker continuous delivery platform, which works across virtually every public and private cloud.”

Berkley’s ‘Foundation of Data Science’ Course Now Free Online: That’s right, the university’s fastest-growing course is now available online, for free through the campus’s online education hub, edX. According to the announcement, the course “covers everything from testing hypotheses, applying statistical inferences, visualizing distributions and drawing conclusions, all while coding in Python and using real-world data sets.” The edX certificate program is a sequence of three five-week courses taught by John DeNero, statistics professor Ani Adhikari and computer science professor David Wagner and starts at 9 a.m. (PDT) on Monday, April 2. Enrollment will remain open after the course begins.

A Perl 6 IDE for the Masses: The Perl 6 community seems excited by the announcement of a Perl 6 IDE named Comma that is based on the JetBrains IDEA platform. The IDE is currently in beta and available to early supporters for a fee. To see the full details on the soon-to-be-released IDE, check out the features, FAQ, and roadmap sections of its site.

A Kotlin/Native Plugin for AppCode: Speaking of IDEs and Jetbrains, the company behind Kotlin and the IDEA platform is announcing a Kotlin/Native plugin for AppCode, its macOS-only IDE designed for iOS/macOS developers. According to the company, it’s been “getting lots of questions about IDE support that would allow working on projects that mix Kotlin/Native and Swift/Objective-C” ever since it announced interoperability with Objective-C for Kotlin/Native. To give it a try, download AppCode 2018.1.1.

That’s all the newsy stuff we have this week, but we did see a few instruction articles that we thought worthy of inclusion…

Don’t Install Kubernetes! That’s the advice, at least, from an author over at DevOps Zone. We’ve looked several times at how modern container tools can help developers, but the fact of the matter — as this article points out — is that fully installing one of these systems can be time-consuming and difficult. Instead, the gist of the argument here is that “there is an arms race between the big cloud platforms to make Kubernetes a turnkey and automatically managed service, from very small to very large scale, so why not make use of them?”

Mind Your Dependencies! While we’re taking advice from the Internet, here’s another article suggesting that you might want to mind your dependencies. Separating dependencies into three categories — foundational, core, and utility — the author explores how you might consider the risk around adopting different libraries, frameworks or other technologies in building your software. “I have experienced the consequences of bad choices in the three groups mentioned above,” they write. “Wrong picks for utility libraries are pretty dismissible, but wrong picks in the other two can become a severe burden.”

Ensure Team Misery! And finally, in case you found yourself wondering how to make your team miserable, a wonderful outline on how to do just that. “Fascinated by the phenomenon of teams and companies of truly smart and talented people unable to work together, turning almost every day of their work into just another step to inevitable failure, I’ve been collecting tips and recipes for creating miserable teams.” Peruse and either laugh, groan knowingly, or silently stew over the week of misery ahead.