Initial LED Driver functional verification

Posted in Hobbies > PCB Designs > Cree LED Strip

Having received the previously designed low-side LED driver PCBs, it was time to perform some initial functional tests.  The usual process here is to check for potential shorts and waveforms on the board, essentially checking components/stages 'block' by block.
The initial setup took some time as I not only had to solder the PTH components (Plated-through hole) such as the jumper headers but also various power, test and output leads as well. Ideally I would have not used my DC electronic load for initial testing but I sadly ran out of high-wattage wirewound resistors on hand.

Building an Embedded Rust Stack for ESP32

Posted in Hobbies > Electronics Projects > ESP32-based IoT Stack in Rust

I wanted to take my Rust skills into the Embedded eco-system and for a good long time, spent way too much time trying to re-invent a certain wheel (nothing to do with Rust, though) - more to do with choosing the 'right' MCU SOC for the job.
RTC module is the smaller board at the top (which has a small battery) and connects via I2C with the ESP32 that's on the smaller board in the M.2 socket.
My biggest issue is I wanted it to be capable of everything and anything, but in the embedded world, constraints are always part of the designing stage.  It's hard to say optimise for work-horse performance and say ...(continued)

Rust for Embedded is Better on x86

Having recently picked up a M1 Max MacBook Pro, in hindsight I expected to run into some issues due to the change in CPU architecture.
For some the idea of 64GB RAM is excessive, but if you've been pushing Mac's to their limit as long as I have - I've been running 32GB RAM defacto for over a decade.  It doesn't take many tabs in Chrome to exhaust 16GB RAM.
Here's a snap of running some heavy IO in Docker:
Running both Glances and Htop

Designing the LED Driver PCB

Posted in Hobbies > PCB Designs > Cree LED Strip

Updated: Nov 18th: Here's a quick update from the Fab house as they are performing QC on the assembly of the new boards
SMT parts have been populated
---
I decided to make this a MicroMod Function board, and also threw in an extra footprint to stack on a RTC board as well. The RTC board is the SparkFun Real Time Clock Module - RV-8803.
Here are some progress snaps of the board layout:

Troubleshooting Cross-account VPC Peering

Posted in Work > AWS: Cloud Solutions > VPC Peering

On Tuesday I was setting up VPC Peering and even had a colleague double check my setup.  This one was a tricky one as I had got everything correct, but missing one small configuration.
Here's the Requester side of the connection:
And the Accepter side.  Notice that I've used separate CIDR blocks (as per the requirements) to establish the connection.

Let's build a gRPC server and client in Rust with tonic

I found an excellent article on this very topic and decided to extend this a bit further with a client in NodeJS as well.  Make sure you run the (Rust) server first.
Here's an example of the node client running:
-> % node client.js --vote 0 --url foo.com Resp: { confirmation: 'Happy to confirm that you upvoted for foo.com' } -> % node client.js --vote 1 --url foo.com Resp: { confirmation: 'Confirmation that you downvoted for foo.com' }
I can i ...(continued)

Buying the Apple 16.2-inch MacBook Pro with M1 Max at Apple Orchard Road in Singapore

Having just landed wee past 8am, local time, we headed first to our hotel on Orchard Road, as per the usual, and checked in to relax and rest up before heading...out across the street!
Haha, yes, as crazy as it sounds our hotel was right across from the flagship Apple store, which is also conveniently next to Takashimaya/Ngee Ann City and Paragon (again, across the street). Just a block down and you reach CK Tangs/Marriott and ION mall.  All our shopping needs, nicely packed in a short-distance, utterly safe, and many many malls and food courts as well.
Well over 100 people lined up for the ...(continued)

Spawn tasks and talk to them via a channel with Axum

To share some background on my particular use-case, I'm processing a large CSV file (somewhere in the 800MB range) and this task is triggered by a post request from AWS S3.
The Axum request handler needs to return a 200 success response instantly and let the long running task proceed on a spawned thread, leaving the main thread (running the Axum server) free to proceed.

Inside the Axum request handler 

I will first show you my implementation of this, and discuss it afterwards.  Here's the block in for the request handler.  Notice the important call here, which is task_handle.run_task(&masterfile_key).await.
pub async fn handle_trigger( Extension(task_handle): Extension<crate::MyActorHandle>, extract::Json(payload): extract::Jso ...(continued)

Publishing the 1Password Connect Rust SDK

Couple weeks back I noticed an email update from 1Password announcing their "Connect" API, which now allows anyone to programmatically use their vaults as a credential store for secrets.
Over the years I've been playing with quite a few pieces of tech from Hashicorp and one of the things I've setup in my homelab is a HA Vault and Consul cluster and a "demo" application target that rotates TLS certs every 3 minutes (just to prove a point), for mTLS PKI certificate management which was inspired by a video series on YouTube.
While it was fun and I learned a lot in getting this working, like any distributed system, at scale, there are so many moving parts that invariably one would have to rely on a HA cluster provisioned across at least 2x Cloud providers to have any rea ...(continued)

Post Archive