- Use of ENV vars (this is pretty basic)
- Use of dotenv, for both dev and production, of course.
- Taking a Docker first approach (more on this later...)
With my initial focus on the Rust API, I made sure to enable Github CI and ensure my test suite would run its full gamut of tests on every push of a commit. Other good practices involve
Of course, an ideal DevOps solution would introduce a build-pipeline; there are many options in this space from the likes of Jenkins to GoCD, although a local GitLab instance can do all of this including hosting of a container registry. Instead, I decided to take a "scrappier" approach (for now), with simply Docker. For those wondering, my local GoCD instance hasn't been involved in this project (yet).
My Homelab produc ...(continued)
I don't always set myself hard to obtain goals, as you know, "ambition is the last refuge of failure". No, I haven't failed!

Look at those sexy UUIDs. Oh my!
The premise was simple. I wanted to create a "simple" Rust backend API that would basically be a RUST API around a Postgres DB. The other part is of course the frontend; at the started I didn't put too much stock into this until I had the Rust API out of the way.
Much of the initial Rust work was in setting up the boilerplate Axum handlers, getting a test-harness setup for end-to- ...(continued)
From my work on
rued
, I wanted to use the callback defined in esp-idf-sys, but these are the C bindings. The esp-idf-sys crate implements type-safe Rust wrappers.My initial use and testing in rued involved manipulating the raw-C bindings themselves, along the lines of
unsafe extern "C" fn sync_cb(tv: *mut esp_idf_sys::timeval)
. While I did this just to "get things to work", there is a reason why there is a HAL (hardware-abstraction layer) provided in Rust.So, it was time to contribute back to the community effort of a Rust-based HAL. To this effort, I created a PR called Add wrapper to specify callback for SNTP. ...(continued)
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.

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)
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
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:
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.
This is based on the excellent series by SDG Electronics on YouTube.
MOSFET calculations
Here are Steve's calculations, for his setup. He explains these further in his video.

Towards the bottom, notice he calculates the percentage of time spent by the MOSFET in switching (wasting power), so I worked this out as well:
Post Archive
-
October 2022
-
September 2022
-
August 2022
-
June 2022
-
April 2022
-
March 2022
-
October 2021
-
August 2021
-
July 2021
-
November 2019
-
October 2019
-
June 2019
-
May 2019
-
April 2019
-
September 2017
-
May 2017
-
March 2017
-
January 2017
-
December 2016
-
October 2016
-
August 2016
-
June 2016
-
April 2016
- You can get US$200 for FREE from Amazon. Cold hard cash.
- Using BrowserSync and Gulp with the Rails Asset Pipeline
- HOWTO: Providing Clients with an IAM Account to Manage Billing & Payment Methods for their Root AWS Account
- Sneak Peak: Building a Ruby Gem to Provision Amazon AWS Services
- Feeling Refreshed, Back from Taking Time Off (April 2016)
-
February 2016
-
January 2016
-
October 2015
-
September 2015
-
August 2015
-
July 2015
- Dissecting The Latest Spree and Solidus API Security Vulnerability
- Autoglym Product Reviews, Now Get Replies
- Freelance 101: Early Warning Signs of a Troublesome Client
- Reaching Half a Million Views on YouTube
- Stripping sensitive details copied from terminal STDOUT by piping via sed in Mac OS X
- Faking APIs in Development and Staging
- When that Startup Interviewer cares more about where you're from
-
June 2015
- Suits is back, with Season 5 and Under the Dome
- Improving my Dockerised App stack
- Jack Dorsey is CEO at Twitter, so here's a TODO list
- Replace a MySQL table in Production via a Rails 4 Migration
- Converting SVG to PNG via Linux CLI
- Getting Resque, Rails 4.2, and Unicorn to play nice
- My favourite Docker productivity tips
- Now with Resque & Redis for hooking up with Mailchimp
- Just built a Ruby 2.2.1 compatible Mailchimp wrapper
-
May 2015
-
April 2015
-
March 2015
-
February 2015
-
November 2014
-
October 2014
-
September 2014
-
August 2014
-
May 2014
-
January 2014
-
December 2013
-
October 2013
-
September 2013
-
August 2013
-
July 2013
-
June 2013
-
May 2013
-
April 2013
-
March 2013
-
February 2013
-
January 2013
-
December 2012
-
November 2012
-
October 2012
-
May 2012
-
April 2012
-
March 2012
-
February 2012
-
January 2012
-
December 2011
-
October 2011
-
January 2011
-
December 2010
-
October 2009