I recently upgraded our analytics database at The Org to PostgreSQL 13.1 in order to support periodically refreshing materialized views using pg_cron to run the jobs directly in the database. Our previous setup involved CloudWatch events that triggered a Lambda to run a refresh command.

Install pg_cron on Amazon RDS

Upgrading to PostgreSQL 12.5+

Amazon RDS supports pg_cron from version 12.5 and higher (source). If you are running an older version you will need to update it.

You can check the version in the AWS control panel or by running:
SELECT version();

If you are running version 12.5 or newer, just skip to the next section. Otherwise, you need…

Yat is the newest universal digital identity — and it is even tradable! Is this your opportunity to get in early and buy up all the good identities and make a huge profit when everyone needs their own Yat! Let’s take a look.

Screenshot from the Yat checkout screen.

What is Yat? 🥳

A Yat consist of 1 to 5 emojis of your choice and “ is a universal digital identity as unique as your fingerprint!”

You could be known as ✏️💻👑👏! Well, not exactly that combination of emojis — because that is my Yat, so you can only obtain it by buying it from me! 💰🤑

Yats are tradable…

Official Artwork by Blizzard Entertainment

Please note before reading: This article is based on learnings from the StarCraft II AI Framework, Abathur. It introduces a method for hiding dependency injection from the user of your framework which might not be desirable in your case.

One of the features that the framework ‘Abathur’ includes is the ability to add and remove components without recompiling the code. This feature is implemented through dependency injection and utilizes reflection.

The framework is responsible for the overall flow of control and the user interact with it by adding ‘components’ through a simple IModule interface;

public interface IModule {

Official Artwork by Blizzard Entertainment


Running the SC2Abathur project the first time will generate everything needed to get started with Abathur. You should see output similar to this;

This article assumes that you are developing in .NET Core and intend to use the NydusNetwork wrapper. I have attempted to front-load the article with general applicable knowledge such that it can provide value to users of other wrappers.

The StarCraft II API includes quite a few messages. They are all wrapped in the message, so that is the only message you will ever send — and the client will respond with message which wraps all the possible responses.

Official Artwork by Blizzard Entertainment

This article will take you through the initial steps of writing your own API for the StarCraft II client. This is not required at all, community APIs exist in most popular languages. However, the article provides some insights into how a basic SC2 API wrapper works.

The client exposes a request-response style API that accepts protobuf messages. I wrote an article on the subject of protobuf for readers unfamiliar with the format, but it is essentially just a binary data-interchange format.

Launching the Client

Download the StarCraft II client if you do not already have it installed — it is free to play…

Protocol Buffers, commonly known as protobuf, is a binary data-interchange format that guarantees type-safety while being language-agnostic and cross-platform. The format is size-efficient and developed with a focus on high serialization/deserialization performance.

The format relies on pre-compiled schemas unlike other data-interchange formats such as JSON that can be serialized/deserialized using generic libraries. The official compiler supports C++, C#, Dart, Go, Java and Python. Utilizing protobuf with a language not supported by the compiler, while possible, is quite cumbersome.

Schema Files

The schema is defined in .proto files using the language defined in the official language guide. …

A modulized approach to writing SC2 AIs in .NET Core with multi-language support. Follow the process of kickstarting a dormant project.

The first use of Abathur Framework— one line of code.

What it was…
Abathur, NydusNetwork and NydusWorm worked together to ease development of modulized SC2 AIs. The Abathur (.NET Core) framework communicated with the SC2 Client using NydusNetwork (.NET Core) as a wrapper to the official protobuf interface exposed by the client. Framework functionality could then be accessed from multiple languages, e.g. Python through NydusWorm.

The framework essentially took care of all the cumbersome parts of writing SC2 bots…

Jens Schmidt

Software Engineer @ The Org

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