Caktus Blog
2024

Getting Started with Dagster
Recently, Caktus has been using Tailscale to manage VPN connections between Android tablets and a central server. We wanted to report on the devices connected to the network using the Tailscale API. While we could use tools like Celery to fetch data from the API and load it into a database—given its widespread use in the Django ecosystem—we also wanted to explore other options.
2023

Upgrading PostgreSQL From v11 to v15 in Your Django Application
In the ever-evolving world of data management, staying up-to-date with the latest technologies and best practices is imperative. One crucial aspect of this is ensuring your PostgreSQL version remains current. On November 9, 2023, PostgreSQL 11 reaches end of life (EOL).

Migrating a Django Project from a GPU to a Convenience Image on CircleCI
Recently we learned that as of September 30th, 2023 several linux
images will be
deprecated,
including the one we used, ubuntu-2004:202111-02
. Therefore, after
September 30th, our pipelines would have failed. To avoid this, we
switched several machines in our Django project from Ubuntu GPU images
to convenience images; This writing details that switch.

Addressing the recent uptick in scam job offers on LinkedIn related to Caktus Group LLC.
Beginning on July 20th, many individuals contacted us asking if a job offer they had received from us was a legitimate offer, wanting to ensure that they were talking with the correct person at the company. The unfortunate truth was that none of the potential applicants seeking information had submitted an application with Caktus Group.

Migrate to Amazon EKS Add-ons
Amazon Elastic Kubernetes Service (Amazon EKS) released support for operational cluster add-on software, or Amazon EKS add-ons, around Kubernetes version 1.19 in May 2021. These include:

Set up AWS CloudTrail to Monitor Application Events using Ansible
AWS CloudTrail is a service that enables monitoring and recording of account activities. In this post, we will use CloudTrail to monitor CPU usage and to monitor our nodes. We will use Ansible to automate the setup process and as a means to document our setup (IaC). This post assumes you already have Ansible set up for your project and will not provide setup instructions.

GitHub Submodules: Leveraging Branches to Allow Independent Updates in Parent Applications
Recently I’ve been working with projects that use GitHub submodules. According to GitHub, submodules “allow you to include or embed one or more repositories as a sub-folder inside another repository.” Submodules help us keep code dry when functionality is shared across multiple repositories.

Update an Amazon EKS cluster Kubernetes version to 1.23+
Introduction
Caktus is committed to developing and maintaining high-quality web applications for clients, so we focus on software sustainability. Software sustainability refers to the ability of software to continue to function as expected over time, even as hardware and software environments change. It involves maintaining and updating software to remain reliable, secure, and compatible with new hardware and software technologies. Additionally, from a security perspective, attackers can exploit software vulnerabilities to gain unauthorized access to systems or data. Keeping software up-to-date with the latest security patches helps to reduce the risk of these vulnerabilities being exploited.

Analyze data with SQL window functions
We regularly use tools like PostgreSQL, Pandas, and Jupyter Notebooks to analyze data here at Caktus. Recently, we were reviewing North Carolina traffic stop data for the NC CopWatch project and had the opportunity to use PostgreSQL's window functions, which are helpful when aggregating data.

Begin your Data Analysis Journey with Pandas and Seaborn
Lately, there has been a lot of talk about scoring in the NBA because LeBron James surpassed Kareem Abdul-Jabbar with 38,390 career points. I have noticed that there is not much discussion about post-season scoring, so I searched for this dataset on Kaggle (nba_playoffs.csv) which contains the top 25 all-time post-season scoring leaders. Post-season scoring is its own beast. Since teams face one opponent multiple times in a row, they can better concentrate on the opposing team and its individual players, particularly star players. This results in improved defenses across the board. However, the post-season also means players improving their game. What is the result of improved defenses and players alike? Only elite players score consistently and thus, only the NBA's elite are on this list. This post will first examine the dataset using Pandas and then use Seaborn to graph such data.