Krzysztof Ciesielski — Senior Software Engineer

This month I learned

ScalaTest 3.1.0 has been seriously refactored, so migrating your current code requires some care. Here are a few important notes which may help you save time:

Read: http://www.scalatest.org/release_notes/3.1.0 carefully and follow the guide, don’t skip updating to 3.0.8 first, cleaning up the deprecations, and then to 3.1.0. Use mentioned ScalaFix-based tool, it really works like a charm. If you use the Checkers trait to integrate with ScalaCheck, add following library to your build:

“org.scalatestplus” %% “scalatestplus-scalacheck” % “3.1.0.0-RC2”

It is not mentioned in the documentation, but yes, these utils are now extracted into a separate library. The eventually block now takes an implicit Retrying[T] . My tests were failing to work normally with the one resolved by default, but after some explorations I tried to explicitly state in my base test trait:

// required for eventually to work

implicit def retryingNatureOf[T]: Retrying[T] = Retrying.retryingNatureOfT[T] and this did the trick, now retries work correctly. Hope this will be helpful!

This tool helped me the most

This month, two neat Scala discoveries made my life better:

coursierDependencyTree , which is a nicer and cleaner version of good old sbt dependencyTree task. I had no idea that it existed even though we’ve been using Coursier in all our new projects for quite a while! Option.when , a practical syntax sugar addition available since Scala 2.13. You can use it instead of if (condition) Some(result) else None which is a very common pattern.

Michał Matłoka — Senior Software Engineer

Medusa — a Cassandra backup tool

This month I’ve learned about a new Cassandra backup tool — Medusa. Doing backups on a C* cluster isn’t the simplest task. Data is distributed among multiple nodes, where additionally there are multiple replicas of every partition. This means that in order to get a full copy of the data you need to make a copy of each node. In practice, to make the backup, you need to perform snapshots of every node separately and upload them to external storage (for safety). Additionally, restore process requires the new cluster to have exactly the same number of nodes, and exactly the same token ranges. It isn’t the easiest, nor the most convenient way for backups.

Fortunately, a new tool has been announced recently — Medusa created by Spotify and later improved by The Last Pickle. It is open source (under Apache 2.0 licence) and integrates with AWS S3, GCP Storage, and of course local storage/NFS. What is the most interesting, it does not only offer for multi node backups and restoration to similar clusters, but also restoration to clusters with different topologies! The process takes then more time, because it is required to parse all backed up SSTables and reinsert data to new nodes. Because of the replication factor you may need to run the compaction after the restore process. However, there are benefits — you are not tied up to the same cluster structure and you can use a totally different number of nodes in the new cluster.

Medusa is being actively developed and looks very promising, so we plan to leverage it in various projects. For the whole list of features take a look at the project GitHub repository.

Photo by Andrea Rizzo on Unsplash

Tomasz Łuczak — Senior Software Engineer

PW-Sat2: Happy 1st birthday!

It’s been roughly a year since Falcon 9 has launched on the 3rd December 2018. It was a very special moment for both Polish students engaged in a project and us at SoftwareMill — we participated in a project by developing the PW-Sat Ground Station application: https://radio.pw-sat.pl. Our focus was to deliver user friendly environment which would enable radio amateurs all over the world to upload binary data retrieved from the satellite.

The launch of the cubesat was streamed live on YouTube:

Polish cubesat was deployed into the Orbit after around 4 hours from the launch and after another 5 hours the first beacon was received by K4KDR USA — PW-Sat2 was alive!

During last year PW-Sat2 team:

handled over 2300 communication sessions

took more than 700 photos

and uploaded around 500 000 frames to the https://radio.pw-sat.pl/.

There are also more than 50 radio amateurs all over the world who have contributed. Despite the mission has ended successfully, cubesat stays operational.

The PW-Sat Ground Station application was developed in the spirit of Agile methodology. During the process, as we all learned new details, we were able to adapt to changing requirements. In the most intensive phase of development together with PW-Sat2 team we had weekly meetings at 8 p.m. In the final phase of the project PW-Sat2 Team, thanks to Michał Gumiela, was able to deliver working mockups of required functionalities, which made our work a lot easier. The whole solution is based on Scala language and Play! Framework. It runs on Google Cloud.