Published inThe Backpacking Photographer·Sep 6Backpacking with the Peak Design TripodI bought the Peak Design Travel Tripod, carbon version, several years ago. It has been a great travel companion due to its light weight (2.81lbs — 1.27kg advertised, 2.95lbs — 1.34kg in my measurements), compact dimensions, and a number of clever features. But like all travel tripods, it comes with…Backpacking5 min readBackpacking5 min read
Published inScala 3·Jun 4Scala 3: What Is “Direct Style”?Scala uses monads extensively for many operations with non-trivial effects, such as those involving asynchronous computation, including I/O. The idea of direct style is to allow writing code with non-trivial effects more simply without the boilerplate of monads. I recommend viewing this Martin Odersky talk about the on-going work on…Scala 37 min readScala 37 min read
Published inScala 3·Nov 20, 2022Scala 3: Even Fewer BracesOne of the most significant, if controversial features in Scala 3 is optional braces, where significant indentation can be used instead of curly braces. However, there were a few syntax areas where braces were still required, such as passing anonymous functions and import statements. Scala 3.3 will remove the requirement…Scala 35 min readScala 35 min read
Published inScala 3·Mar 26, 2022Scala 3: “Erased” DefinitionsMartin Odersky and the EPFL Scala Center continue experimenting with potential new features in Scala 3. Let’s explore one of them, erased definitions. This experimental feature is described in the documentation. Here, I’ll summarize its purpose, how it works, and provide an example of how it might be used. A…Scala6 min readScala6 min read
Published inScala 3·Jan 16, 2022Safer Exceptions in Scala 3I mentioned in What’s Changed Since Scala 3.0.0 that Scala 3.1 introduced an experimental feature for safer exceptions. Let’s explore it in more detail. Java’s checked exceptions were an attempt to express in method signatures the possibility that an exception might be thrown. While laudable in theory, in practice the…Scala7 min readScala7 min read
Published inScala 3·Oct 10, 2021The Value of Parametric PolymorphismI’m giving a talk at Scale by the Bay, October 28th, on Lessons Learned from 15 Years of Scala in the Wild. Programming Scala, Third Edition is now available. It provides a comprehensive introduction to Scala 3 for experienced Scala developers, as well as a complete introduction to Scala for…Scala7 min readScala7 min read
Published inScala 3·Sep 4, 2021Scala 3: What’s Changed Since Scala 3.0.0The Scala team continues to refine Scala 3, fixing bugs, refining existing features, and introducing some experimental features for Scala 3.1. Here are a few highlights. Programming Scala, Third Edition is now available. It provides a comprehensive introduction to Scala 3 for experienced Scala developers, as well as a complete…Scala 35 min readScala 35 min read
Published inThe Backpacking Photographer·Aug 15, 2021Move Shoot Move for AstrophotographyDuring my recent trip to the Ruby Mountains in Nevada, I tried out the inexpensive and compact Move Shoot Move star tracker. This isn’t a full review, just my initial impressions, as I didn’t have a lot of time to try it out (for reasons I’ll mention below). What Is a Star Tracker? Here is…Astrophotography6 min readAstrophotography6 min read
Published inThe Backpacking Photographer·Aug 7, 2021Camera Control for the Sony A7RIV Using the Syrp Genie DevicesI spent a week in the Ruby Mountains of Nevada last month. I’ve posted my best pictures to Flickr. I just purchased the Syrp Genie Micro and several of their motion control devices. You can see the Micro below mounted in my camera’s hot shoe. The compatibility list says the…Syrp Motion Control3 min readSyrp Motion Control3 min read
Published inScala 3·Jul 6, 2021Scala 3: MacrosUpdate May 22, 2022: Michel Charpentier correctly pointed out that the arguments don’t need to be by-name if they are inlined. This makes perfect sense if you think about it (which I didn’t 🤓), because we are no longer calling the invariant and fail functions; they are now gone, replaced…Scala3 min readScala3 min read