Welcome to the jernoxIT blog! From now on, we’ll be sharing technical insights, best practices, and experiences from our daily work.

What to Expect

In this blog, we will regularly cover the following topics:

  • Systems Engineering – Architecture decisions, platform engineering and infrastructure automation
  • Cloud Solutions – Kubernetes, container orchestration and cloud-native development
  • Embedded & IoT – Rust programming for embedded systems, LTE-M and 5G campus networks

An Example: Rust in Embedded

Why do we use Rust? Here’s a small example:

#![no_std]
#![no_main]

use embassy_executor::Spawner;
use embassy_time::{Duration, Timer};

#[embassy_executor::main]
async fn main(_spawner: Spawner) {
    let p = embassy_stm32::init(Default::default());
    let mut led = Output::new(p.PB14, Level::Low, Speed::Low);

    loop {
        led.set_high();
        Timer::after(Duration::from_millis(500)).await;
        led.set_low();
        Timer::after(Duration::from_millis(500)).await;
    }
}

Rust provides memory safety without a garbage collector – ideal for resource-constrained environments.

Kubernetes Deployment

In the cloud space, we also work daily with configurations like this:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: edge-service
spec:
  replicas: 3
  selector:
    matchLabels:
      app: edge-service
  template:
    spec:
      containers:
        - name: edge-service
          image: registry.jernoxit.de/edge-service:latest
          resources:
            limits:
              memory: "256Mi"
              cpu: "500m"

Stay tuned – more technical content is coming soon!