<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Dominik Rys</title>
    <link>https://dominikrys.com/</link>
    <description>Recent content on Dominik Rys</description>
    <image>
      <title>Dominik Rys</title>
      <url>https://dominikrys.com/android-chrome-512x512.png</url>
      <link>https://dominikrys.com/android-chrome-512x512.png</link>
    </image>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Thu, 27 Mar 2025 15:15:07 +0000</lastBuildDate>
    <atom:link href="https://dominikrys.com/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>How We Saved $3.5M in BigQuery Costs on Deleting Inactive User Data</title>
      <link>https://dominikrys.com/posts/how-we-saved-3-5m-in-bigquery-costs-on-deleting-inactive-user-data/</link>
      <pubDate>Thu, 27 Mar 2025 15:15:07 +0000</pubDate>
      <guid>https://dominikrys.com/posts/how-we-saved-3-5m-in-bigquery-costs-on-deleting-inactive-user-data/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;This post was also posted on the &lt;a href=&#34;https://medium.com/gocardless-tech/how-we-saved-3-5m-in-bigquery-costs-on-deleting-inactive-user-data-8d0ebbd012ee&#34;&gt;GoCardless Tech blog&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;GoCardless was founded 13 years ago. Over this time, we’ve had hundreds of thousands of merchants create accounts with us and actively use our product. However, we’ve also accumulated a large number of inactive accounts over this time, leaving a lot of their data across our systems. At GoCardless we take our data responsibilities seriously, so we decided to remove this data, reducing the impact of any potential data breaches.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Scraping Grafana Agent Metrics in Kubernetes</title>
      <link>https://dominikrys.com/posts/grafana-agent-monitoring-kubernetes/</link>
      <pubDate>Sun, 03 Jul 2022 10:08:23 +0100</pubDate>
      <guid>https://dominikrys.com/posts/grafana-agent-monitoring-kubernetes/</guid>
      <description>&lt;p&gt;After deploying the &lt;a href=&#34;https://github.com/grafana/agent&#34;&gt;Grafana Agent&lt;/a&gt; in a Kubernetes cluster, you&amp;rsquo;ll most likely want to monitor it to ensure that no observability data gets lost. Grafana provides a &lt;a href=&#34;https://grafana.com/docs/grafana-cloud/agent/agent_monitoring/&#34;&gt;comprehensive guide&lt;/a&gt; on how to configure alerts for the agent, but I found it to not work for all cases. Namely, enabling agent integration didn&amp;rsquo;t enable scraping metrics of the agent itself. This could be due to running the Grafana Agent in Kubernetes, which the guide may not be targeted at, or due to configuring the agent in a manner that deviates from Grafana&amp;rsquo;s recommended way.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Automatically Generating a Grafana Agent Configuration for a Kubernetes Cluster</title>
      <link>https://dominikrys.com/posts/grafana-agent-config-kubernetes/</link>
      <pubDate>Wed, 30 Mar 2022 21:37:36 +0100</pubDate>
      <guid>https://dominikrys.com/posts/grafana-agent-config-kubernetes/</guid>
      <description>&lt;p&gt;Configuring the &lt;a href=&#34;https://github.com/grafana/agent/&#34;&gt;Grafana Agent&lt;/a&gt; to collect metrics from nodes in a Kubernetes cluster can be quite a daunting task. Manually configuring scrape jobs for all the pods running in your cluster can be a laborious undertaking that is not maintainable in the long run, especially as new services are added. In this post, I describe a way to generate a Grafana Agent configuration for a Kubernetes cluster using the Grafana Agent Operator.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Live Reload Browserify &#43; TypeScript in Node.js</title>
      <link>https://dominikrys.com/posts/live-reload-browserify-ts/</link>
      <pubDate>Mon, 17 Jan 2022 20:39:17 +0000</pubDate>
      <guid>https://dominikrys.com/posts/live-reload-browserify-ts/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve recently been working on a Node.js project in TypeScript and bundling its dependencies using &lt;a href=&#34;https://browserify.org/&#34;&gt;Browserify&lt;/a&gt;. To increase the speed of iteration, I wanted to automatically reload the tab with my web app whenever I made code changes, which would entail recompiling the TypeScript code into JavaScript. However, I couldn&amp;rsquo;t find a good guide on how to achieve this online. In the end, I managed to figure it out by bolting some tools together - with no JavaScript task runner such as &lt;a href=&#34;https://gulpjs.com/&#34;&gt;Gulp&lt;/a&gt; or &lt;a href=&#34;https://gruntjs.com/&#34;&gt;Grunt&lt;/a&gt; needed!&lt;/p&gt;</description>
    </item>
    <item>
      <title>HashiCorp Certified: Terraform Associate Course Review</title>
      <link>https://dominikrys.com/posts/terraform-course-review/</link>
      <pubDate>Mon, 27 Dec 2021 10:38:04 +0000</pubDate>
      <guid>https://dominikrys.com/posts/terraform-course-review/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve recently been working with Terraform a lot at work. However, I was never taught properly how it works. I jumped straight into the code and figured things out, which wasn&amp;rsquo;t particularly difficult. Nevertheless, I was curious as to what I was missing and how I could set Terraform up myself in a new project. Therefore, I looked at how I could learn Terraform on my own.&lt;/p&gt;
&lt;p&gt;After some initial looking around, I found &lt;a href=&#34;https://www.reddit.com/r/Terraform/comments/jfzerz/comment/g9nio4h/?utm_source=share&amp;amp;utm_medium=web2x&amp;amp;context=3&#34;&gt;Zeal Vora&amp;rsquo;s &amp;lsquo;HashiCorp Certified: Terraform Associate&amp;rsquo; course&lt;/a&gt; on Udemy to be well-regarded. Now, I&amp;rsquo;m not a fan of courses. I&amp;rsquo;d much rather get stuck into a project of my own and avoid the hand-holding that most courses offer. In the case of Terraform though, since I didn&amp;rsquo;t have deploying any complicated infrastructure in mind, completing a course seemed like the right approach. The instructor of the course also seemed credible, seeing as he&amp;rsquo;s released many courses on Cloud Engineering topics and works as a Cloud Security Consultant.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mapping Google Groups to Kibana Roles</title>
      <link>https://dominikrys.com/posts/mapping-google-groups-kibana/</link>
      <pubDate>Mon, 20 Dec 2021 15:05:10 +0000</pubDate>
      <guid>https://dominikrys.com/posts/mapping-google-groups-kibana/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve recently configured authentication for the Elastic Stack. To take some of the burden off managing permissions manually, we wanted to map Google Groups to Kibana roles, since we manage authentication to most of our systems using Google Groups.&lt;/p&gt;
&lt;p&gt;Having followed &lt;a href=&#34;https://www.elastic.co/guide/en/cloud/current/ec-securing-clusters-oidc-op.html&#34;&gt;Elastic&amp;rsquo;s documentation on setting up Google OIDC authentication&lt;/a&gt;, however, I found that this task is not so easy, as &lt;a href=&#34;https://discuss.elastic.co/t/google-oidc-sso-with-mapping-google-groups-onto-kibana-roles/271762&#34;&gt;Google OIDC doesn&amp;rsquo;t return group memberships in the JWT that the application receives&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Creating Alerts from Logs in Kibana</title>
      <link>https://dominikrys.com/posts/kibana-log-alerts/</link>
      <pubDate>Sat, 18 Dec 2021 12:35:54 +0000</pubDate>
      <guid>https://dominikrys.com/posts/kibana-log-alerts/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve recently deployed the Elastic Stack and set up sending logs to it. To automate certain checks, I then wanted to set up some alerts based on the logs. However, I found that there is several ways that this can be set up in Kibana. Each way has its shortcomings and pre-requisites, which aren&amp;rsquo;t particularly well documented in Elastic&amp;rsquo;s documentation. I&amp;rsquo;ll explain my findings in this post.&lt;/p&gt;
&lt;h2 id=&#34;types-of-kibana-alerts&#34;&gt;Types of Kibana Alerts&lt;/h2&gt;
&lt;h3 id=&#34;rules&#34;&gt;Rules&lt;/h3&gt;
&lt;p&gt;These used to be called Kibana Alerts (for some reason Elastic has done a lot of renaming over the years), and in most cases I found these to be the best choice. These can be found by navigating to &lt;strong&gt;Stack Management&lt;/strong&gt; &amp;gt; &lt;strong&gt;Rules and Connectors&lt;/strong&gt; in Kibana.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Caveats to Creating Datadog Log Metrics in Terraform</title>
      <link>https://dominikrys.com/posts/datadog-log-metrics-terraform/</link>
      <pubDate>Sun, 14 Nov 2021 09:52:58 +0000</pubDate>
      <guid>https://dominikrys.com/posts/datadog-log-metrics-terraform/</guid>
      <description>&lt;p&gt;In this post, I give an overview of how to create Datadog Log Metrics in Terraform. Having had done this recently, I encountered a couple of caveats that warranted documenting. Hopefully it will help others that encountered similar issues.&lt;/p&gt;
&lt;p&gt;This post assumes that you have a basic configuration for Datadog in Terraform already. If you don&amp;rsquo;t, &lt;a href=&#34;https://www.datadoghq.com/blog/managing-datadog-with-terraform/&#34;&gt;Datadog&amp;rsquo;s post on managing Datadog with Terraform&lt;/a&gt; is a good starting point.&lt;/p&gt;
&lt;h2 id=&#34;datadog-terraform-resources&#34;&gt;Datadog Terraform Resources&lt;/h2&gt;
&lt;p&gt;There are three Terraform resources that you can use to configure log metrics in Datadog:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Installing Zsh (and oh-my-zsh) in Windows Git Bash</title>
      <link>https://dominikrys.com/posts/zsh-in-git-bash-on-windows/</link>
      <pubDate>Thu, 11 Nov 2021 19:10:26 +0000</pubDate>
      <guid>https://dominikrys.com/posts/zsh-in-git-bash-on-windows/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve recently started using Windows again. After a long time using a customised Zsh shell on macOS and Linux though, I&amp;rsquo;ve started to miss some of the small productivity boosts that Zsh plugins offered me. Of course, I could set up the shell as I want it under WSL, but WSL doesn&amp;rsquo;t always play nicely with Windows-native applications and tools. To remedy this, I looked into how I could set up Zsh to run instead of Bash in Git Bash.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Injecting Build-Time Variables to Nested Golang Packages</title>
      <link>https://dominikrys.com/posts/injecting-build-variables-nested-go/</link>
      <pubDate>Sun, 07 Nov 2021 18:32:38 +0000</pubDate>
      <guid>https://dominikrys.com/posts/injecting-build-variables-nested-go/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve recently tried to figure out how to inject variables to a Go executable at build-time. The available guidance online was straightforward, but it all referred to simple Go programs with rudimentary package structures that aren&amp;rsquo;t hosted remotely. None also mentioned working with the &lt;a href=&#34;https://github.com/spf13/cobra&#34;&gt;Cobra&lt;/a&gt; CLI library, which usually results in multiple levels of nesting in the Go application&amp;rsquo;s package structure.&lt;/p&gt;
&lt;p&gt;To address what the other posts don&amp;rsquo;t cover, I thought I&amp;rsquo;d write this short blog post.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Enforcing Uniqueness of Multiple Attributes in DynamoDB</title>
      <link>https://dominikrys.com/posts/unqiue-attributes-dynamodb/</link>
      <pubDate>Sun, 31 Oct 2021 09:53:52 +0000</pubDate>
      <guid>https://dominikrys.com/posts/unqiue-attributes-dynamodb/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve recently tried to solve a problem that involved enforcing uniqueness of multiple attributes in DynamoDB. Surprisingly, this wasn&amp;rsquo;t a trivial undertaking. Given most of my database experience is using SQL databases, I initially started solving the problem using SQL paradigms that didn&amp;rsquo;t translate well to NoSQL.&lt;/p&gt;
&lt;p&gt;In this post, I will describe what I learned, and how it&amp;rsquo;s possible to implement enforcing uniqueness of multiple attributes in DynamoDB.&lt;/p&gt;
&lt;h2 id=&#34;approaches-that-dont-work&#34;&gt;Approaches That Don&amp;rsquo;t Work&lt;/h2&gt;
&lt;h3 id=&#34;using-condition-expressions&#34;&gt;Using Condition Expressions&lt;/h3&gt;
&lt;p&gt;After some initial research, I tried implementing a Conditional Put using a &lt;a href=&#34;https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ConditionExpressions.html#Expressions.ConditionExpressions.PreventingOverwrites&#34;&gt;condition expression&lt;/a&gt;. This seemed logical - add a condition expression with chained &lt;code&gt;attribute_not_exists(attribute_name)&lt;/code&gt; statements and suddenly the database will start enforcing uniqueness of whichever combination of attributes I&amp;rsquo;d like.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tips for Developing a Static Site Using Hugo</title>
      <link>https://dominikrys.com/posts/hugo-tips/</link>
      <pubDate>Fri, 20 Aug 2021 21:08:18 +0000</pubDate>
      <guid>https://dominikrys.com/posts/hugo-tips/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been asked a handful of times how this blog is written and maintained. The answer changed every time, as the blog&amp;rsquo;s gone through a couple of iterations in the time I&amp;rsquo;ve had it. I reckon that it&amp;rsquo;s in a good state now, so I thought that I&amp;rsquo;d collate and document what I found works well with developing a Hugo static site, and what I wished that I knew earlier.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Resources for Learning about Operating Systems</title>
      <link>https://dominikrys.com/posts/learning-operating-systems/</link>
      <pubDate>Tue, 03 Aug 2021 16:07:52 +0100</pubDate>
      <guid>https://dominikrys.com/posts/learning-operating-systems/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve recently graduated with a Computer Science degree. Overall, the course covered most of the fundamentals of computer science. However, the course structure changed when I was on my year in industry, causing me to completely miss out on operating systems modules! Since I&amp;rsquo;ve always been interested in operating systems, I decided to teach myself about them.&lt;/p&gt;
&lt;p&gt;In this short post, I will cover what online resources I found to be particularly useful in teaching myself about operating systems. I’ll mention resources ranging from ones that can be gone through in a couple of hours to acquire some surface-level knowledge, to those that will take a bit longer but prepare you to write the next Unix successor.&lt;/p&gt;</description>
    </item>
    <item>
      <title>10 Tips for Getting a First in a Computer Science Dissertation</title>
      <link>https://dominikrys.com/posts/cs-dissertation-tips/</link>
      <pubDate>Thu, 22 Jul 2021 11:02:23 +0100</pubDate>
      <guid>https://dominikrys.com/posts/cs-dissertation-tips/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m proud to have recently graduated with a First Class BSc degree in Computer Science from the University of Birmingham. To my surprise, during the graduation ceremony, I have also been awarded the &lt;strong&gt;Distinguished Dissertation Prize 2020/2021&lt;/strong&gt; for the highest-graded dissertation in the graduating cohort. This was a huge honour as it came completely unexpected, and it made a lot of the effort that went into writing my dissertation worthwhile.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Executing Stream Cipher Attacks on IP Packets</title>
      <link>https://dominikrys.com/posts/stream-cipher-attacks-on-ip/</link>
      <pubDate>Fri, 09 Jul 2021 15:36:55 +0100</pubDate>
      <guid>https://dominikrys.com/posts/stream-cipher-attacks-on-ip/</guid>
      <description>&lt;p&gt;For part of my bachelor&amp;rsquo;s dissertation, I implemented and executed a bit-flipping attack on encrypted IP packets in LTE networks. The attack was first documented by David Rupprecht et al. in their academic paper &lt;a href=&#34;https://alter-attack.net/&#34;&gt;&amp;ldquo;Breaking LTE on Layer Two&amp;rdquo;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The attack is possible due to a specification flaw in LTE standards, where IP packets are &lt;strong&gt;not integrity protected&lt;/strong&gt;. Therefore, a man-in-the-middle (MITM) attacker can modify the packets and the receiver will decrypt them successfully since it can&amp;rsquo;t verify the authenticity of the data. This kind of attack is not specific to LTE networks, however, and can be executed in different environments.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How I Started Learning Rust</title>
      <link>https://dominikrys.com/posts/learning-rust/</link>
      <pubDate>Wed, 16 Jun 2021 18:56:21 +0100</pubDate>
      <guid>https://dominikrys.com/posts/learning-rust/</guid>
      <description>&lt;p&gt;I wanted to learn Rust for a while. The promises of memory-safety and performance have piqued my interest and I needed to see what all the hype was about. In turn, I spent some time learning Rust on and off over the last couple of months alongside university work.&lt;/p&gt;
&lt;p&gt;In this post, I describe how I went about learning Rust and what resources I used. I also reflect on what methods worked well and what could have possibly been skipped. I hope this will be useful to anyone that&amp;rsquo;s also curious about Rust.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Disable UDP Checksum Validation in Linux</title>
      <link>https://dominikrys.com/posts/disable-udp-checksum-validation/</link>
      <pubDate>Thu, 20 May 2021 12:37:22 +0100</pubDate>
      <guid>https://dominikrys.com/posts/disable-udp-checksum-validation/</guid>
      <description>&lt;p&gt;I recently needed to disable the validation of UDP checksums of incoming packets on a Linux machine for a security project. To my surprise, there weren&amp;rsquo;t any satisfactory solutions that I could easily find online related to this. The top Google results suggest &lt;a href=&#34;https://www.linuxquestions.org/questions/linux-networking-3/help-needed-disabling-tcp-udp-checksum-offloading-in-debian-880233/&#34;&gt;disabling checksum offloading&lt;/a&gt;, which doesn&amp;rsquo;t disable checksum validation. Another result mentions &lt;a href=&#34;https://linux-tips.com/t/how-to-disable-udp-checksum-control-in-kernel/362&#34;&gt;a solution from within application source code&lt;/a&gt;, which you may not have access to or be able to modify.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Transparently Proxy IP Packets With Spoofed Destinations</title>
      <link>https://dominikrys.com/posts/transparently-proxy-spoofed-ip/</link>
      <pubDate>Sat, 17 Apr 2021 10:44:53 +0100</pubDate>
      <guid>https://dominikrys.com/posts/transparently-proxy-spoofed-ip/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve recently worked on a security project which required me to transparently proxy IP packets that have had their destination IPs spoofed. By this, I mean that the destination IP in an IP packet is &lt;strong&gt;not&lt;/strong&gt; the IP of the destination which a DNS request would correctly resolve. For example, this could be due to a DNS query being spoofed and sending an IP address of another destination in reply. The diagram above shows what we want to achieve.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Configuring Squid as a Transparent Proxy</title>
      <link>https://dominikrys.com/posts/squid-transparent-proxy/</link>
      <pubDate>Sat, 10 Apr 2021 10:08:45 +0100</pubDate>
      <guid>https://dominikrys.com/posts/squid-transparent-proxy/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve recently set up &lt;a href=&#34;http://www.squid-cache.org/&#34;&gt;Squid&lt;/a&gt; as a transparent proxy for a security project. What should have been relatively straightforward had me browsing through prehistoric tutorials that don&amp;rsquo;t quite work any more. In the end, I managed to get a minimal transparent proxy configuration on a modern version of Linux hosted in the cloud.&lt;/p&gt;
&lt;p&gt;With the hopes of saving someone some time that may be embarking on a similar journey, I thought I&amp;rsquo;d write this post. We discuss HTTP transparent proxying at the start, but provide resources for allowing support for HTTPS.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Debug srsLTE</title>
      <link>https://dominikrys.com/posts/debug-srslte/</link>
      <pubDate>Sat, 13 Feb 2021 10:34:48 +0100</pubDate>
      <guid>https://dominikrys.com/posts/debug-srslte/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve recently been working extensively with &lt;a href=&#34;https://github.com/srsLTE/srsLTE&#34;&gt;srsLTE&lt;/a&gt; for my bachelor&amp;rsquo;s dissertation. So far, the greatest difficulty has been debugging the software. In this short post, I will describe various ways I found that srsLTE can be debugged, and any pitfalls that come with them.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ll assume you know how to debug ordinary C/C++ programs (I&amp;rsquo;ll patiently wait here if you need to have a look into that).&lt;/p&gt;
&lt;h2 id=&#34;compiling-srslte-in-debug-mode&#34;&gt;Compiling srsLTE in Debug Mode&lt;/h2&gt;
&lt;p&gt;Your first attempt at debugging may have been to compile with the &lt;code&gt;Debug&lt;/code&gt; CMake flag, and then executing the binaries using GDB or another debugger:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setting up a TLS-Secured Monitoring Solution in Docker using InfluxDB, Grafana, and Traefik</title>
      <link>https://dominikrys.com/posts/monitoring-influxdb-grafana-traefik/</link>
      <pubDate>Tue, 01 Dec 2020 12:51:48 +0100</pubDate>
      <guid>https://dominikrys.com/posts/monitoring-influxdb-grafana-traefik/</guid>
      <description>&lt;p&gt;During my last internship, I&amp;rsquo;ve been tasked with designing and deploying infrastructure for monitoring a cluster of machines that were used for performance testing. I wrote a blog post detailing high-level choices about it which you can check out &lt;a href=&#34;https://dominikrys.com/posts/monitoring-corda-nodes/&#34; title=&#34;Monitoring Corda Nodes&#34;&gt;here&lt;/a&gt;. The post also includes justifications for why I chose to deploy everything in Docker, and why I chose to work with &lt;a href=&#34;https://grafana.com/&#34;&gt;Grafana&lt;/a&gt; and &lt;a href=&#34;https://www.influxdata.com/products/influxdb/&#34;&gt;InfluxDB&lt;/a&gt; as the front-end and time-series database, respectively.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Monitoring Corda Nodes Using Grafana, InfluxDB, and Telegraf</title>
      <link>https://dominikrys.com/posts/monitoring-corda-nodes/</link>
      <pubDate>Mon, 21 Sep 2020 16:52:48 +0100</pubDate>
      <guid>https://dominikrys.com/posts/monitoring-corda-nodes/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;This post is also hosted on the &lt;a href=&#34;https://www.corda.net/blog/monitoring-corda-nodes-using-grafana-influxdb-and-telegraf/&#34;&gt;Corda Blog&lt;/a&gt;.&lt;/strong&gt; The main goal behind this post was to provide an easily accessible high-level overview on monitoring Corda nodes. It also showcases part of what I&amp;rsquo;ve done during my summer internship at R3.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;intro&#34;&gt;Intro&lt;/h2&gt;
&lt;p&gt;Here at R3, we have a cluster of Corda nodes that we use for performance testing. We have developed a &lt;a href=&#34;https://docs.corda.net/docs/corda-enterprise/performance-testing/toc-tree.html&#34;&gt;performance testing suite&lt;/a&gt; that enables us to establish baseline numbers, quantify improvements from new features, and identify regressions.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Compiling My C&#43;&#43; CHIP-8 Emulator to WebAssembly</title>
      <link>https://dominikrys.com/posts/compiling-chip8-to-wasm/</link>
      <pubDate>Sat, 15 Aug 2020 16:55:48 +0100</pubDate>
      <guid>https://dominikrys.com/posts/compiling-chip8-to-wasm/</guid>
      <description>&lt;p&gt;A couple of months ago I wrote a &lt;a href=&#34;https://github.com/dominikrys/chip8&#34;&gt;CHIP-8 emulator&lt;/a&gt; in C++17, as I wanted to learn about emulation and expand my C++ knowledge outside of work. In this post I&amp;rsquo;ll explain how I went about compiling the emulator which was designed to run natively, to also run on the web using the magic of WebAssembly. You can try out the result &lt;strong&gt;&lt;a href=&#34;https://dominikrys.com/chip8&#34;&gt;here&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;My main motivation for getting the emulator working on the web was that in its current state, it took some effort to get it up and running. I could send someone the pre-compiled binary or give building instructions, but those aren&amp;rsquo;t guaranteed to work on every platform. Ideally, I wanted a solution that can be hosted on the web, and I recently heard about this cool new &amp;ldquo;WebAssembly&amp;rdquo; which seemed perfect for the job.&lt;/p&gt;</description>
    </item>
    <item>
      <title>First Blog Post</title>
      <link>https://dominikrys.com/posts/first-blog-post/</link>
      <pubDate>Sat, 01 Aug 2020 15:16:16 +0100</pubDate>
      <guid>https://dominikrys.com/posts/first-blog-post/</guid>
      <description>&lt;p&gt;Hi, I&amp;rsquo;m Dom. Welcome to my first blog post!&lt;/p&gt;
&lt;p&gt;My main objective for this blog is to start documenting my work more. Having had completed some small side projects and interning at some companies, I wanted a place to document the details of my past work. I thought that a blog is the perfect place for this!&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve also been quite curious about Swyx&amp;rsquo;s &lt;a href=&#34;https://www.swyx.io/learn-in-public/&#34;&gt;Learn in Public&lt;/a&gt; philosophy for a little while, so I thought I&amp;rsquo;d give blogging a go and put it to the test. Reading &lt;em&gt;Show Your Work&lt;/em&gt; by Austin Kleon has also been quite a factor in terms of giving me that final push I needed to get this blog set up.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
