Coverage-safe geometry simplification

Our safety and alerting products work with geographic zones: a country, a region, a flood-warning area. A zone is a set of polygons, and those polygons decide, cell by cell, who gets alerted. That last part is what makes this a more interesting problem than it looks. This post is the write-up of a hackathon project that started as “these polygons are too big, let’s simplify them” and ended somewhere more subtle: you cannot simplify a coverage geometry the way you simplify a geometry you only want to draw.

Read more

XDP packet capture

The Linux network stack is generic. It handles interfaces, routing, sockets, firewalling, packet delivery, and many other things. This is useful, but it has a cost. For the purpose of a high-traffic probe, this is a waste of CPU time.

XDP (eXpress Data Path) makes packets hop on the express train from the NIC to the userspace, avoiding the kernel network stack altogether.

The kernel stack cost

In the classical capture path, every packet first takes the normal receive path. It reaches the driver, becomes a kernel networking object, crosses the generic stack, then reaches a capture API such as AF_PACKET/libpcap.

Read more

Ragnarök: Rebuilding Our Maps

The Nine Realms

Maps are everywhere in our products. Almost every screen shows something on a map: zones, alerts, devices, the trace of a phone across a city. For years all of this has been drawn by Leaflet , a small and reliable JavaScript mapping library. Leaflet served us well — but over the years it grew roots into every corner of the front-end, and those roots became hard to move.

Read more

Rust in lib-common, Part 1: Integrating Rust in a Waf-based C Build System

This is Part 1 of a multi-part series on integrating Rust into a large C codebase.

  • Part 1: Integrating Rust in a Waf-based C Build System
  • Part 2: First Rust Component: Rewriting farchc (WIP)

Introduction

lib-common is a C library developed by Intersec . It provides core utilities (strings, containers, memory management), networking (HTTP, RPC, event loop), serialization through IOP (Intersec Object Packer, similar to Protocol Buffers), etc. It targets Linux environments and has been in active development for many years.

Read more

Adding Class Attributes to Dynamic Cython Extension Types Using Metaclasses

Introduction

Cython is a programming language that makes writing C extensions for Python as easy as Python itself. It lets us write Python code that calls back and forth from and to C/C++ code natively, and compiles to efficient C code usable as a Python extension module.

At Intersec , we use Cython in lib-common , our open-source C library. One of its key components is IOPy, the Python binding for our IOP serialization framework (similar to Protocol Buffers). IOPy dynamically creates Python classes from IOP type definitions at DSO load time, and each class needs to hold a pointer to its C type descriptor for fast serialization.

Read more

Hackathon 0x0d - Slack My Ticket 🧾

Presentation 🤓

In recent years, there has been significant progress in the field of artificial intelligence, especially with the development of lightweight models that can run locally and provide good results. These local AIs are interesting because they ensure data confidentiality, which is a crucial factor in our work environment.

As a software company, we use many digital tools to facilitate our work and collaboration among colleagues. Among these tools, we use Slack for internal communication and Redmine for project management.

Read more

Hackathon 0x0c - Rive - A state machine animation builder

For the designers

Introduction: What is Rive?

Rive is a brand new animation tool and we tested it to try its innovative features that bring in interactivity while keeping good performance.

Today we’re using Lottie and we’re comparing it to Rive. Lottie is an After Effects plugin. It allows motion designs to be exported out of After Effects and used in-app with their own JS runtime, an NPM Library. While Lottie is built on top of After Effects, Rive is built from scratch with its own animation software allowing developers to add interactivity to their animations. As a result, we have lots of great exclusive features while getting 10 times smaller exported files and better in-app performance.

Read more

Hackathon 0x0c - Language Server Protocol (LSP)

Objective

Text editors are essential tools for software developers. These editors provide many useful features to make developers’ lives easier and improve their productivity.

There is a wide variety of text editors. Moreover, each language has its own characteristics and each company/project may decide to adopt different coding rules. For all these reasons, it is difficult to offer a configuration suitable for everyone.

In this hackathon, we tried to help developers configure their text editors correctly for optimal performance. For this purpose, using the Language Server Protocol (LSP) seemed like a good option.

Read more

Web Speech API - Creating a web interface with 0 clicks

Context and purpose

This project was part of the 12th Intersec Hackathon (0x0C). We had 2 days (31 hours) to develop and present our project. Our team consisted of Yohann Balawender and Benoît Mariat.

The purpose of our project was to explore the Web Speech API and to use it in an Intersec product to send verbal commands that would replace the use of a mouse, even for complex actions.

Read more

Hackathon 0x0c - Testing Nexus Repository Manager

Background

At Intersec, we have produced and installed multiple applications over the years, and installed them on multiple platforms (various OS) for many customers all over the world.

Today some of these applications are in a “maintenance only” mode (we no longer add features to them). However, we must keep the artifacts (mainly packages for Debian and Red Hat) currently installed on the customer’s premises.

We also regularly build new versions of our “active” products (to add new features and bugfixes), also on multiple OS. And we have continuous delivery pipelines which create “nightly” builds for our internal development and test platforms.

Read more