RSSAmplifier

Blog

Marcin Copik

Personal webpage

mcopik.github.ioRSS feed ↗10 posts

Latest posts

C++ for Serverless - Always Faster?

The motivation to use compiled languages in serverless is straightforward - they typically provide better performance, which translates not only to faster executions but also to lower costs. In SeBS, our benchmarking suite for serverless functions, we have long supported Python and Node.js workloads with automatic build, deployment, and configuration across cloud providers. For a while, we also…

Generating documentation with AI Agents

Software development and maintenance are slightly different in academia than in the industry: there is much more pressure on developing features relevant for new publications and implementing only minimal viable prototypes. For the last five years, I have been maintaining the the serverless benchmark suite SeBS, which formed my first PhD paper. SeBS evolved into a large codebase over time,…

Cross-compiling C++ to serverless ARM

AWS Lambda is arguably the most popular serverless service. Lambda functions support natively several programming languages, such as Python, Node.js, Java or Golang. However, other languages can be supported through custom runtime, where we deploy a function with a bootstrap script to execute.

Google Summer of Code 2023

Google Summer of Code is a unique opportunity to engage with the open-source community. To work on exciting projects with established organizations, candidates must submit a proposal that outlines their project idea and explains how they plan to accomplish project goals during the coding period. I participated in the GSoC program as a student twice, I mentored students, and now I am proud to…

Installing FetchContent targets in CMake

The FetchContent module is the easiest and most efficient way of adding dependencies to your CMake project. In contrast to ExternalProject, it fetches the dependency at the configuration time, which makes it easier to discover imported targets and verify that you are linking your executables and libraries correctly. Thus, you can now easily add to your C/C++ project dependencies that you do not…

Debugging the debugger

While working on our high-performance serverless platform rFaaS, I stumbled upon a curious bug in the GNU debugger gdb. In rFaaS, we allowed clients to submit the function code directly to a remote executor by shipping the contents of the shared library across networks. This works quite well for simple functions in homogenous HPC clusters since there are no issues with binary compatibility.

Remote Bash scripts with SSH

What is the easiest way of executing a Bash script on remote machines, with support for arbitrary options and arguments, without having to transmit the code manually? Let’s say we have a script to invoke that we want to run on a remote machine - in our case, it’s the part of rFaaS that scans network interfaces and RDMA links to generate a device database.

JSON in Bash and CLI with jq

The JSON data format has become a ubiquitous tool for interchanging and storing human-readable data. In particular, it is very convenient when it comes to storing user-defined settings and properties. For example, in rFaaS, our RDMA-accelerated serverless platform, we have to store multi-parameter device configurations for the local and remote endpoints. Thus, we want to have the configuration in…

Relative paths in LaTeX.

Recently, I started to gather the LaTeX tools, scripts, and useful imports in a single repository: latex-tools @ GitHub.com. I designed it to have a single entry point includes.tex, and for each paper, I could add this repository as a submodule.

C++ Toolchain with Taint Analysis

Clang comes with a set of tools known as sanitizers that provide a runtime verification of common problems such as memory issues and undefined behavior. An interesting and a not well-known one is DfSan, a dataflow sanitizer. The name does not really reveal the true purpose: the library brings a compiler pass and runtime to implement taint analysis1. The main purpose is to taint specific memory…