<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Blog on Rock-IT - Peter Dewachtere - Freelance IT Developer</title><link>https://dewachtere.be/en/blog/</link><description>Recent content in Blog on Rock-IT - Peter Dewachtere - Freelance IT Developer</description><generator>Hugo</generator><language>en</language><atom:link href="https://dewachtere.be/en/blog/index.xml" rel="self" type="application/rss+xml"/><item><title>Searching a technical catalogue: Elasticsearch and ETIM at Omni-Term</title><link>https://dewachtere.be/en/blog/etim-zoeken-elasticsearch-omniterm/</link><pubDate>Wed, 16 Sep 2026 00:00:00 +0000</pubDate><guid>https://dewachtere.be/en/blog/etim-zoeken-elasticsearch-omniterm/</guid><description>&lt;p&gt;An installer who types &amp;ldquo;pressure gauge 1/2&amp;rdquo; wants one thing: the right article, right away. In the &lt;a href="https://dewachtere.be/en/projects/omni-term-webshop/"&gt;Omni-Term B2B webshop&lt;/a&gt; installers search by article number, supplier code, brand, description or technical feature, across a catalogue from many manufacturers. This is how I built that search.&lt;/p&gt;
&lt;h3 id="one-search-box-many-kinds-of-questions"&gt;One search box, many kinds of questions&lt;/h3&gt;
&lt;p&gt;The query is analysed first. If the code recognises an article number or a supplier code, it goes straight to exact and wildcard matching on those fields, with the highest boost. If it recognises a brand name, products of that brand get priority. Everything else is treated as regular terms, searched across several fields at once: the description as exact keyword, as analysed text and as edge n-gram for prefixes, the product description, and the hierarchy from category down to product family. Searching for an old article number also finds the successor through a nested list of predecessors.&lt;/p&gt;</description></item><item><title>Voice notes with AI: how BillableMe turns audio into text with Whisper</title><link>https://dewachtere.be/en/blog/whisper-spraaknotities-billableme/</link><pubDate>Wed, 16 Sep 2026 00:00:00 +0000</pubDate><guid>https://dewachtere.be/en/blog/whisper-spraaknotities-billableme/</guid><description>&lt;p&gt;As a freelancer you get your best ideas in the car or on site, exactly when typing is not an option. That is why &lt;a href="https://dewachtere.be/en/projects/billableme/"&gt;BillableMe&lt;/a&gt; got voice notes: you speak a to-do, reminder or note, and half a minute later the text appears next to it, searchable. This is how I approached it.&lt;/p&gt;
&lt;h3 id="the-requirements"&gt;The requirements&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Audio stays on my own server, without an external transcription service.&lt;/li&gt;
&lt;li&gt;Dutch and English, with automatic language detection.&lt;/li&gt;
&lt;li&gt;No GPU: it has to run on the existing Docker Swarm.&lt;/li&gt;
&lt;li&gt;The user never waits for the transcription.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="step-1-recording-in-flutter"&gt;Step 1: recording in Flutter&lt;/h3&gt;
&lt;p&gt;The app records with the &lt;code&gt;record&lt;/code&gt; package in AAC (m4a), asks for microphone permission and lets you pick a category, a flag and a title right away. The file goes to the NestJS API as a multipart upload. From that moment the note is visible in the list, with the status &amp;ldquo;processing&amp;rdquo;.&lt;/p&gt;</description></item></channel></rss>