Log
Here the ARCsoft team write about things we’ve learned or are excited about! Each member contributes an article periodically, both as part of our mission to contribute to the community as well as to grow personally and professionally.
Getting Setup in Visual Studio Code
by Lee Napthine, 19 September 2024
This blog post gets us started with Visual Studio Code (VS Code). It is intended for onboarding at ARCsoft, and should help sync IDE enironments with the Git projects. Topics include install, startup, formatting, extensions, and shortcuts.
Project versioning and tagging
by Drew Leske, 20 August 2024
Lately we’ve been discussing project versions and tagging for both releases and packaging. This has come up for tags on container images, and we also have developed a couple of Python libraries which we may want to publish to a public repository. While tags on container images have fairly relaxed restrictions, the Python Package Index for example follows a very prescriptive specification for versioning, and ideally we can find a solution that will work for both and is reasonably meaningful and intuitive.
Use Terraform to deploy Helm charts
by Archie To, 17 July 2024
We’ve talked about Terraform and Helm. Those surely are cool technologies. But you know what’s even cooler? When you combine both of those. This article will show you how to use Terraform to deploy Helm charts, a very popular practice for our infrastructure in ARCsoft. This article requires some prerequisites: readers must read about Terraform and Helm first. So if you haven’t, go read those, I can wait. Why use Terraform to deploy Helm charts?
Using syntax trees in Python
by Bhavy Rai, 2 July 2024
I’ve recently been working on a project where I needed to parse and update Django model files by adding new fields. Initially, I used plain string manipulation for parsing, but it quickly became too complex and error-prone. To address this, I switched to using syntax trees, specifically concrete syntax trees (CSTs), for parsing. In this post, I’ll discuss how I leveraged syntax trees in Python to handle Django model files more effectively.
Introduction to Terraform
by Archie To, 18 June 2024
Terraform is a very popular technology used both in the industry and within the Research Computing Services (RCS) Team. We at ARC Software have used Terraform to build up STRAP and implemented scripts for Strapper to deploy applications onto STRAP (these apps are called Strapplications). So what is Terraform? What makes it so popular? What is Terraform? Terraform is an infrastructure as code tool that allows users to define and provision infrastructure using a high-level configuration language.
Building application containers
by Drew Leske, 13 June 2024
For one of our projects (ZooDB) we recently ran into a problem when adding new Python libraries to our dependencies, as several of the libraries required build tools in their installation. These tools were not available in the application’s base image nor were they installed as part of the build, so they had to be added. Alpine Linux Our application image for this project is currently based on Alpine Linux, which describes itself as “a security-oriented, lightweight Linux distribution”–sounds like a good fit for a containerized app, and it’s a popular choice.
Comparing the use of our web development tools to more mainstream ones
by Bhavy Rai, 6 June 2024
Recently, Karan and I had the opportunity to work on a passion project, not related to the work we do with ARCsoft. Doing so gave us the chance to use some of the more mainstream web development tools that we wouldn’t typically use in our day-to-day work. This experience was both enriching and fulfilling, so I wanted to share some of the key differences we noticed between the tools we use at ARCsoft and the more mainstream ones used in the industry.
Generic spreadsheet ingestion
by Bhavy Rai, 27 May 2024
In which Bhavy talks about handling the ingestion of generic spreadsheets
Introduction to Helm
by Archie To, 24 May 2024
This article assumes readers have a basic knowledge about Kubernetes, as Helm and Kubernetes are closely related. Reading Introduction to Kubernetes is highly recommended prior to reading this article. What is Helm? Helm is a package manager for Kubernetes. Think of Helm as a way to install and upgrade applications built on Kubernetes. Helm allows you to install applications with multiple Kubernetes components with a single command. Why Helm? To explain the benefits that Helm brings about, suppose you are deploying an app onto k8s (an abbreviation for Kubernetes).
Performance analysis of database caching versus in-memory caching
by Bhavy Rai, 5 April 2024
Django offers many caching strategies, but most notably supports in-memory caches like Memcached and Redis, or database-centric caching solutions interfacing directly with your pre-defined backend. However, there are a couple of considerations you might want to take into account when choosing a caching solution. Below, I will give an analysis of my findings after implementing both caching with Redis and PostgreSQL/SQLite. Benchmarking data All performance comparisons are made with the following data: