tl;dr: Rust’s memory management model, discussed in part 1 of this series, extends nicely to provided similar protection against data races when using shared-memory concurrency. This post looks at two specific examples of how the compiler prevents what could be hard-to-reproduce and time-consuming errors at compile time.

Managing interacting thread can be hard or impossible to reason about. Static analysis can untangle many issues where shared data interactions cannot be avoided. Photo by Nima Shabani on Unsplash

The Only Good Shared Data are Immutable Shared Data

EDA (Electronic Design Automation) tools are a class of technical computing applications focused on the design and validation of semiconductors and electronic systems in general. As discussed in part 1 of this series, elapsed runtime is commonly a competitive differentiator for these compute-intensive tools. …


tl;dr: The Rust Language offers a potential competitive advantage to development teams by providing compute and memory efficiency on-par with C/C++ but with more robust, higher quality code and better developer productivity. Part 1, here, provides an introduction to Rust’s memory safety guarantees by way of example illustrating how it can eliminate hard-to-find memory errors at compile time with no runtime overhead. Parts 2 and 3 will look at Rust’s thread-safety guarantees and the benefits it provides for code reuse.

EDA tools are critical to the design, verification, and manufacture of IC’s (chips) and electronic systems. Photo by Denny Müller on Unsplash

What is EDA?

The EDA (Electronic Design Automation) industry produces semiconductor design tools — applications used for designing, simulating, verifying, and testing chips…


On Valentine’s Weekend, 2021, Texas got hit with a record-breaking winter storm. A polar vortex brought single-digit (F) temperatures, six+ inches of snow, a multi-day blackout, and sledding to much of Texas, including us in Austin.

It also happens that many Texas houses have barely-insulated pipes running through their attics because, in Texas, attics are usually hot. Not freezing cold. Except for this week, when our house, and many others, was 45 degrees indoors, and much colder in the attic. And some of those pipes froze and burst.

As you can see in this image, we have plumbing running through…


tl;dr: Yes, for a performance-oriented, system-level language, scripting in Rust is surprisingly practical, on par with Python in this case. The Cargo build/package manager offer three big advantages compared to using a language like C or C++.

Maybe overkill for a garden… but looks like fun! Photo by omid roshan on Unsplash

Gphoto-sort

Gphoto-sort started as a small Bash script back when Google killed its link between Google Photos and Google Drive. I used the Google Drive sync tool to easily backup all of our photos. Then it was replaced by Google Takeout, which lets me download all of my Photos. Every. Single. Time. In a different directory structure.

Most photos have the timestamp in the…


A while back, I was sitting outside on the deck at night working and, while
waiting for a build, I was looking at the stars. Then I got curious, how
big a is light-year? OK, I can look it up and it’s ~5.9 x 10¹² miles. So more
miles than the US Government’s annual budget in dollars. I can’t comprehend either.

At the time I started playing with Google searches, but I wanted to try using only Google Assistant.

OK Google, how big is a grain of sand?

Sand ranges in size from 2–64mm. Close enough, call it 1mm for…

Jason McCampbell

Software architect with interests in technical computing, physics, and finance/economics.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store