<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>NNDI Blog</title><link>https://blog.nndi.cloud/</link><description>Recent content on NNDI Blog</description><generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>hello@nndi.cloud (NNDI)</managingEditor><webMaster>hello@nndi.cloud (NNDI)</webMaster><lastBuildDate>Mon, 10 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.nndi.cloud/index.xml" rel="self" type="application/rss+xml"/><item><title>Running Chichewa Speech to Text (STT) inference via ONNX</title><link>https://blog.nndi.cloud/beaker/ai/running-chichewa-speech-inference-via-onnx/</link><pubDate>Mon, 10 Aug 2026 00:00:00 +0000</pubDate><author>hello@nndi.cloud (NNDI)</author><guid>https://blog.nndi.cloud/beaker/ai/running-chichewa-speech-inference-via-onnx/</guid><description>In this article, I will show how we converted Dunstan Matekenya&amp;rsquo;s Chichewa Whisper model to ONNX and running it within Python. Chichewa is one of the national languages of Malawi, fondly known as the warm heart of Africa. Our home. Chichewa is considered a low-resource language and there are not that many resources around transcription and audio based models for it.
Fortunately, there is an ongoing effort to change this status quo, which we are eager to support by putting into practical implementation.</description></item><item><title>Generating previews of Word Documents in a web application</title><link>https://blog.nndi.cloud/posts/generating-previews-of-docx-in-webapp/</link><pubDate>Tue, 30 Jun 2026 00:00:00 +0000</pubDate><author>hello@nndi.cloud (NNDI)</author><guid>https://blog.nndi.cloud/posts/generating-previews-of-docx-in-webapp/</guid><description>As a developer, you may find yourself embedding word documents in your application or supporting them as part of user uploaded content. Typically, that should be enough. But for something we&amp;rsquo;re building at NNDI we needed the ability to generate a preview of Word Documents.
On the face of it, this sounds pretty straightforward, get the word document from wherever your system stores it and display it on your user interface.</description></item><item><title>Your /metrics Endpoint Is Probably Unsecured - Here’s How to Fix It</title><link>https://blog.nndi.cloud/posts/securing-prometheus-metrics-endpoint/</link><pubDate>Fri, 27 Mar 2026 00:00:00 +0000</pubDate><author>hello@nndi.cloud (NNDI)</author><guid>https://blog.nndi.cloud/posts/securing-prometheus-metrics-endpoint/</guid><description>If you’re building a cloud-native application, chances are you expose application-level metrics through an HTTP endpoint like /metrics, typically for a system such as Prometheus. This has become standard practice in modern systems—especially in Kubernetes environments.
A metrics endpoint is an invaluable source of insight into how your application behaves in production. With tools like Prometheus collecting data in near real time and platforms like Grafana visualizing it, you gain deep visibility into performance, reliability, and usage patterns.</description></item><item><title>Automated Go Deployments with GitHub Actions, Ansible and Pebble</title><link>https://blog.nndi.cloud/tutorials/2026/automated-go-deployments-with-github-actions-ansible-and-pebble/</link><pubDate>Tue, 03 Mar 2026 00:00:00 +0000</pubDate><author>hello@nndi.cloud (NNDI)</author><guid>https://blog.nndi.cloud/tutorials/2026/automated-go-deployments-with-github-actions-ansible-and-pebble/</guid><description>We&amp;rsquo;ve recently started bringing Ansible into our deployment pipeline — and it&amp;rsquo;s changed how we think about shipping. No more SSHing into servers and running commands by hand. No more wondering which version is actually running. Push a tag, and it goes.
This post walks through the exact setup: a Go app, a VPS, and a pipeline where GitHub Actions builds your binary, Ansible deploys it, and Pebble manages the running service.</description></item><item><title>Pipelined PostgreSQL Queries in Go</title><link>https://blog.nndi.cloud/tutorials/2026/pipelined-postgresql-queries-in-go/</link><pubDate>Fri, 05 Dec 2025 00:00:00 +0000</pubDate><author>hello@nndi.cloud (NNDI)</author><guid>https://blog.nndi.cloud/tutorials/2026/pipelined-postgresql-queries-in-go/</guid><description>Cross Posted from Our CEO&amp;rsquo;s blog
In this article we will see how to leverage Postgres support for pipelining queries which “allows applications to send a query without having to read the result of the previously sent query”. This allows you for example to perform batch updates which you can send serially and comes with a significant performance boost in processing.
Taking advantage of the pipeline mode, a client will wait less for the server, since multiple queries/results can be sent/received in a single network transaction.</description></item><item><title>Using pebble to ship application logs to VictoriaLogs</title><link>https://blog.nndi.cloud/posts/using-pebble-to-send-logs-to-loki/</link><pubDate>Tue, 29 Jul 2025 00:00:00 +0000</pubDate><author>hello@nndi.cloud (NNDI)</author><guid>https://blog.nndi.cloud/posts/using-pebble-to-send-logs-to-loki/</guid><description>We migrated from using supervisor to having all our services managed by pebble. One of the benefits we got from switching is pebble&amp;rsquo;s native ability to ship logs to Loki or any other Loki compatible system. This capability allows us to run and collect logs from our services using one solution which is super convenient as it reduces one operational burden.
In this article, we will show how to configure pebble for shipping application logs to VictoriaLogs.</description></item><item><title>Why we switched from Supervisor to Pebble for running our services</title><link>https://blog.nndi.cloud/posts/switching-from-supervisor-to-pebble/</link><pubDate>Thu, 29 May 2025 00:00:00 +0000</pubDate><author>hello@nndi.cloud (NNDI)</author><guid>https://blog.nndi.cloud/posts/switching-from-supervisor-to-pebble/</guid><description>We recently completed a migration from supervisor to pebble on our production hosts.
In this article, we will share how we set it up, why we did so, and what we anticipate forward for our infrastructure moving forward.
At NNDI we build systems that typically run on Linux based operating systems, though we have also shipped Windows services as part of our Consulting Work. Most of our services are built with Go and so far we have taken advantage of Go&amp;rsquo;s ability to build single binaries to power our simple deployment pipeline which involves just taking the binary and putting it on the server.</description></item><item><title>Tingoyenera kukhaladi mavenda</title><link>https://blog.nndi.cloud/posts/tingoyenera-kukhaladi-mavenda/</link><pubDate>Thu, 13 Jun 2024 00:00:00 +0000</pubDate><author>hello@nndi.cloud (NNDI)</author><guid>https://blog.nndi.cloud/posts/tingoyenera-kukhaladi-mavenda/</guid><description>This article is written in Chichewa. I wanted to try something different. Here goes nothing
Mawu oti venda nthawi zambiri amatikumbutsa anyamata ndi amayi a mtawuni kapena kumsika omwe amagulitsa zinthu zosiyanasiyana monga nsapato, katundu wa magetsi ndi zina zambiri. Mavenda timawaona mosiyanabe ndi anthu a bizinesi zokhazikika. Koma tikabwela ku nkhani zokhuza Software, mawu okuti Software Vendor amatipatsa malingaliro a makampani aakulu monga Microsoft, ndi Oracle. Koteleko Software Vendor amakhala wolemekezeka ndithu.</description></item><item><title>Exposing prometheus metrics from a SparkJava application via Micrometer</title><link>https://blog.nndi.cloud/beaker/sparkjava-prometheus/</link><pubDate>Sat, 07 Nov 2020 19:30:00 +0200</pubDate><author>hello@nndi.cloud (NNDI)</author><guid>https://blog.nndi.cloud/beaker/sparkjava-prometheus/</guid><description>In this article we will see how we can export metrics from Spark Java so that Prometheus can scrape them for application monitoring purposes.</description></item><item><title>Generating test data using zefaker</title><link>https://blog.nndi.cloud/tutorials/2020/intro-to-zefaker/</link><pubDate>Sat, 07 Nov 2020 18:30:00 +0200</pubDate><author>hello@nndi.cloud (NNDI)</author><guid>https://blog.nndi.cloud/tutorials/2020/intro-to-zefaker/</guid><description>zefaker is a command-line tool that is especially useful for generating test files for when you&amp;rsquo;re developing or testing data pipelines. It enables you to generate random data into SQL, CSV, Excel and JSON files via a simple Groovy script.</description></item><item><title>SparkJava application powered by Project Loom Virtual Threads</title><link>https://blog.nndi.cloud/beaker/sparkjava-backed-by-loom-virtual-threads/</link><pubDate>Mon, 14 Sep 2020 19:30:00 +0200</pubDate><author>hello@nndi.cloud (NNDI)</author><guid>https://blog.nndi.cloud/beaker/sparkjava-backed-by-loom-virtual-threads/</guid><description>Using Java 16 and Project Loom&amp;rsquo;s Virtual Threads to power a simple Spark Java application.</description></item><item><title>Building a Vue application with a Java backend and a custom vue-cli configuration</title><link>https://blog.nndi.cloud/tutorials/2020/using-vue-cli-with-java-backend/</link><pubDate>Sat, 04 Jul 2020 00:00:00 +0000</pubDate><author>hello@nndi.cloud (NNDI)</author><guid>https://blog.nndi.cloud/tutorials/2020/using-vue-cli-with-java-backend/</guid><description>In this guide you will learn how to combine a VueJS front-end with a Java backend. We will achieve this using a custom vue-cli configuration and directory structure. You will also see how to use a maven plugin to help build the Vue app during the package phase of the maven build process, so that you do not have to run two commands to build the final application, which we will bundle as an uber jar.</description></item><item><title>Writing to multiple files in one go with Java</title><link>https://blog.nndi.cloud/tutorials/2020/writing-to-multiple-output-streams-in-java/</link><pubDate>Sat, 04 Jul 2020 00:00:00 +0000</pubDate><author>hello@nndi.cloud (NNDI)</author><guid>https://blog.nndi.cloud/tutorials/2020/writing-to-multiple-output-streams-in-java/</guid><description>In this short guide you are going to see how to write to multiple files at-once in Java. The technique you will see here will allow you to write the same data to multiple output streams in one go, which will keep your code shorter, readable and safer from errors that can come through copy-and-pasting.
The rationale First of all, why would you want to write to multiple output streams at once?</description></item></channel></rss>