RSSAmplifier

Blog

Bokeh

Recent content on Bokeh

ericbariaux.comRSS feed ↗34 posts

Latest posts

Exploring Uncut - March 3rd, 2026

Update 2026-03-07: Added example of generated output. Clarified usage of Codex instead of ChatGPT. Some styling improvements. Introduction This time, the focus is solely on providing an update on my exploration of getting a Mandelbrot set renderer running on an STM32F746G-DISCO board. I had hoped to also cover “The Egg Project” and some Home Assistant improvements I’ve been working on. However,…

Exploring Uncut - December 6th, 2025

Introduction I’ve had drafts of Exploring Uncut posts on my computer for months now. They contain bullet points of things I wanted to talk about, sometimes with additional notes, sometimes a draft of a few paragraphs. But as time went by, the potential post only became bigger and the time it would take me to finish it would only grow. So here’s a new post focusing on what I’m working…

Exploring Uncut - July 14th, 2025

Game follow-up As we had another GeekClub meeting at the beginning of the month, I wanted to make some progress on my embedded game development so I would have something cool to show my friends. 3D Modeling Back in March , I described how I modeled and 3D-printed a screen support, partly using ChatGPT to help me get there. On the one hand, there were small issues with the print, like a small gap…

Exploring Uncut - May 26th, 2025

HWS+ livestream Saturday, May 17th marked another Hacking with Swift+ subscriber livestream. This time, Paul walked us through building a macOS application that uses the AppStoreConnect API to retrieve information about our published apps. It was the longest session I ever attended but was super interesting, both from a coding perspective and in terms of the resulting app. In fact, it was so…

Swiftly and SourceKit-LSP issue follow-up

Update 2025-07-12: Swiftly 1.0.1 has now been released and it fixes the problem described in this post. No workaround is necessary anymore. Introduction A few weeks ago, I wrote a post about Swiftly and mentioned that I experienced issues with code-completion and the likes when doing embedded development in VSCode. I pointed to a SourceKit-LSP error I was seeing but did not take the time to…

Exploring Uncut - April 28th, 2025

It’s been a while since the last “Exploring Uncut” post, so without further ado, here’s a recap of some of the fun and important things from the past few weeks. Home Assistant I’ve been interested in home automation for a very (very) long time, nearly 40 years. As a teenager, I had seen an article on how to control your home using some custom electronics on your Commodore 64.…

Swiftly and Swift 6.1 released

Update 2025-07-12: Swiftly 1.0.1 has now been released and it fixes the problem described in this post. No workaround is necessary anymore. Update 2025-05-04: There is now a workaround for the SourceKit-LSP issue mentioned at the end of this post , see Swiftly and SourceKit-LSP issue follow-up for more information. Introduction End of March was a busy time for Apple, with the release of swiftly…

Exploring Uncut - April 7th, 2025

Battery low As you might have noticed, there was no post last week. I had a couple of bullet points in my note but come Sunday evening, I had not started writing any draft. I was also contemplating writing a more in-depth article on a particular topic, as I did before, but I could not decide on which one and commit to it. I just needed to disconnect and relax and did not have the energy for it. So…

Exploring Uncut - March 24th, 2025

Structs, classes and memory I continued my reflection on how value and reference semantic impacts the memory allocation in the generated code. Given there’s now an active Embedded Swift channel on The Swift Programming Language Discord , I asked the question there. Some comments led me to revisite the test examples I made earlier and update them. It started to make slightly more sense but…

Exploring Uncut - March 17th, 2025

Embedded Swift Community Hour Last Friday, Rauhul organized an Embedded Swift Community Hour call on Discord, where members of the community interested in Embedded Swift gathered, presented their projects and talked about the future of this topic. It was super interesting to virtually meet such a nice group of people, motivated to explore, share their findings and push the boundaries of Embedded…

Exploring Uncut - March 10th, 2025

A bit of a social life Not much happened this week in terms of exploration. Being an introvert, I try to space out social events so I have time to recharge in between. This week was a bit of a failure on that front, with one concert, two family dinners, lunch with a friend, and a GeekClub meeting. You might be wondering—what exactly is GeekClub? I’ve been a CoderDojo coach for several years now.…

Exploring Uncut - March 3rd, 2025

Introduction I would like to publish more often on this blog. I really do. In fact, I have a long list of topics to write about. I even have several draft posts that I should just finalize and publish. One main issue is that, as I reread a post to put the finishing touches on it, I ask myself more questions. Is it totally exact ? Does it need more background information ? Why can I write this and…

Addressing previous oversights

Introduction Back in November 2024, as I closed my Blink them to death using Embedded Swift presentation at Pragma Conf, I promised to release the source code of the 3 projects I presented before the end of the year. I thought this would be an easy goal to achieve and that I’d finish way sooner. Of course the projects had been prototypes so far, so I wanted to cleanup the code and recheck…

Rolling back a brew formula

Introduction I find Homebrew super convenient to install and keep up to date the large collection of tools I rely on. But sometimes, things do not work out the way you plan. Warning At the time of this writing, a malware site masquerading as the Homebrew site is being spread through Google Ads, see this post on X by Ryan Chenkie for more details. Some weeks ago, I was cleaning up the code for an…

Timers in Swift on nRF52

Introduction In this post, we’ll continue exploring Embedded Swift on an nRF 52840 dk, using the nRF Connect SDK. Our goal this time is to execute code after a certain delay, with optional periodic repetition. In Swift, one would typically use a Timer class to implement such a feature. Can we use that with Embedded Swift? Foundation Embedded Swift is really about the Swift language, and the…

Randomness on nRF52 using Embedded Swift

Update 2025-07-12: Added import statement for getentropy() implementation in stubs.c Introduction Randomness comes in handy in many different places. It’s useful in the logic of many games to make enemies behave in an unpredictable fashion, it can distribute the timing of events when used within a retry mechanism and random data is sometimes integral to AI algorithms. In this post,…

Creating a Swift type for button input on nRF52 - Part 2

Introduction In the last post, Creating a Swift type for button input on nRF52 - Part 1 , we worked on code to abstract interacting with a button in Swift code. We had a working prototype, but things fell apart as soon as we cleaned up the code and encapsulated it in a struct. Investigating the issue Let’s see if there’s valuable information in the documentation. /** * @brief GPIO…

Creating a Swift type for button input on nRF52 - Part 1

Introduction In my previous post, Controlling an LED using Embedded Swift on nRF52 , we created a Swift struct to encapsulate the C code required to control an LED. In this post, we’ll do the same for a button. If you want to follow along, the code is available on GitHub with each step having its own commit. Starting from working code As a starting point, we will write the whole code in C.…

Controlling an LED using Embedded Swift on nRF52

Introduction In my previous post, nrfx-blink Step by Step , I took you through the steps required to configure your development environment to build and flash the “Blinky” Embedded Swift example from Apple on an nRF52840 DK. In this post, we’ll explore that example more deeply, grow from there, and adapt it to be more natural for Swift developers. If you want to follow along, the code…

nrfx-blink Step by Step

Introduction When getting started with Embedded Swift, the examples published by Apple are really an incredible resource. However they’re just that — examples, right to the point and sometimes with minimal information. If you’re new to embedded development, you’ll need to do some additional digging (which isn’t too bad, that’s how you learn). Embedded Swift…

Using SWD pins on Seeed Studio XIAO nRF52840

Introduction When I discovered the Omi (previously Friend) project and wanted to build myself a device, I followed the instructions on their getting started page. For the firmware, this meant: open the project in VSCode, build, double-click reset on the nRF board, and drap-and-drop the zephyr.uf2 file into the flash drive that appeared on the computer. As I wanted to make some changes to the…

Opus Decoding in Swift

Introduction Friend is an open-source wearable AI device that captures your conversations, transcribes and summarises them, and offers a ton of features based on that information. The wearable device captures the audio signal and sends it to your phone over BLE, which offers a limited bandwidth. Initially, Friend was sending raw PCM data (16 bits, 8kHz), meaning the audio quality was quite low and…

The PAL Project

Several weeks ago, I created the nelcea/PAL: Wearable AI exploration repository on GitHub. I want to take a minute to explain in slight more detail what this open-source project is about. PAL is the vehicle for my research in the world of Wearable AI, with an initial focus on the fields of “Personal Knowledge Management” and “Building a Second Brain” (BASB). The initial use case is to capture…

WWDC 2024

And just like that, WWDC week has come and gone… As expected, there were plenty of announcements across all OSes, both user-facing and technical - including the big one on Apple Intelligence. I don’t think there were many surprises this year. I won’t go into details on the announcements as many people are already doing that, but I do want to point you to a few interesting…

On the proper usage of commonFormat for AVAudioFile

Introduction I started looking into AVAudioFile while working on PALApp , my exploration into the world of portable AI. The MVP I was implementing is receiving audio over BLE from a Friend wearable and storing it in an audio file on the device. Try 1 The Friend audio samples are 16-bit little-endian integers. To ease testing, I can simulate this by populating a buffer with a simple sine wave let…

Portable AI, a month later

It’s been a bit more than one month since my initial post on Portable AI and things are moving fast. The Humane Ai Pin has started shipping, the rabbit R1 has started shipping, Friend has a kickstarter campaign, Rewind became Limitless and a lot of people are now talking about those new “AI devices”. The Humane Ai Pin was the first to ship and the reviews are it. Unfortunately,…

Building a wearable AI Device

As ADeus was the first wearable AI open-source project I discovered, I started building a device based on the hardware they were using, and more specifically on the tutorial at ADeus - Raspberry Pi Zero W Setup Guide . I ordered the Pi and the same microphone but as I did not want to play around with 3D printing a case for now, I ended-up ordering the standard Raspberry Pi Zero Case. Using the…

Portable AI

AI, LLMs and generative models have now been known and used by a majority of the population, technical or not. But they’re mostly used from your desktop or your mobile phone. I’m now seeing a growing proposition of portable AI, new form factors that use or fit within the AI eco-system. Commercial offering One of the first I got to know is the AI pin from Humane . I stumbled upon it…

Vision OS for an existing app

Introduction As a simple intro into visionOS, I used the most simple app I have, AWG Convert , and set-up to add native support for visionOS to it. I added an “Apple Vision” destination to my project, launched the app in the simulator and started to tweak the code to make it look slightly better in the Vision Pro. Just the basics here, not really taking advantage of Spatial Computing,…

Interface orientation in visionOS

Introduction Yesterday, during the super interesting Unwrap Live 2024 stream on visionOS from Paul Hudson, I asked the question on whether it was possible to have your visionOS start in “portrait mode”. The reason I asked is because I’m extending a small utility app ( AWG Convert ) that I’ve coded on the iPhone to have native support for the Vision Pro. There is no iPad…

Obsidian on Multiple Devices

As I’m getting more serious about using Obsidian as my primary note taking application, having the content available on multiple devices becomes critical. Living in the Apple eco-system, I had two options: Obsidian sync or iCloud. I went for the second option.And for those concerned with privacy, Apple now supports end-to-end encryption using your own keys for your iCloud storage with the…

The Wait is Over

Or so I thought… Last week, I had received a shipping notification for my Rift DK2, indicating a delivery for this Monday. So I spent a bit of the week-end preparing a PC to use with it. It’s a powerful desktop system that I built a bit less than 2 years ago, to work on GWT projects (because building GWT projects can take a long time). When I started with that idea, the goal was to…

Virtual Insanity

As about 40.000 people on the planet, I’m patiently waiting for my Oculus Rift DK2 to arrive. Although I’m impatient to get it, I’m not going insane, a trait that some members on the Oculus dev forums or subreddit are clearly exhibiting. Am I annoyed ? Slightly. Am I mad at Oculus ? Definitely no (though if I ever run into Palmer Luckey I’ll only buy him regular juice and…

Welcome (again)

I’ll confess, focus is not my forte! I tend to be interested by a lot of different topics, even more so when it comes to technical and scientific ones. Over the last few years, pumped up by the then latest and greatest idea I just had, I’ve started several blogs. I followed-up with a couple of posts and then swamped by work or some other real-life “obligation”, I let it…