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)

Contributing to helium-wallet-rs

You'll find my PR at https://github.com/helium/helium-wallet-rs/pull/256
I've recently been spending time working with the Helium blockchain and created a POC for generating Helium wallets and ran into this bug. It is a small fix, but at first it lead me to monkey-patch helium-proto which is a repo with Protobuff bindings. Later on I was able to resolve a duplicate dependency issue (as per the PR conversation), and this ended up pulling the latest from helium-proto's master branch, which helped resolve it quite nicely.

Rust Trait Objects Demystified

Covering Dynamic Dispatch and Object-safety for Trait objects

Updated: 11 April 2022
Originally posted: 14 August 2021
I recently picked up Programming Rust: Fast, Safe Systems Development (2nd Ed) by O'Reilly and one section that I particularly enjoyed is where it covered the approach on using generics (polymorphism) vs. Trait Objects (type-erasure via monomorphization).
When I first picked up Rust, I was looking to approach the "any-type" problem with the generics hammer, and this leads to a rather severe design
struct Salad<V: Vegetable> { veggies: Vec<V> }
We can however take advantage of dyn Trait. The dyn keyword is used to highlight that calls to methods on the associated

Working Completely Remotely Effectively Is Entirely Possible

Over the span of eleven-years I have personally worked completely remotely and have a fair bit of experience to reflect on, especially taking my last two-years with E-Accent BV into consideration.
Even today, many business owners are not completely convinced that working remotely is effective. Even Satya Nadella of Microsoft feels this way, which is rather ironic given they are behind "Teams". My answer to this is simply because they are not doing Remote right.
There cannot be a disconnect in goals, culture and vision when working remotely, and most importantly the stakeholder(s) and product-owner(s) need to have a shared commitment to working remot ...(continued)

Honouring my Late Father, 20 years later ~ "A man of peace and his Jaffna memories"

He'll never be forgotten, and always cherished. Will keep you in my heart till the end of my days.

By Ros Thambiah

On March 16, last year, Nilhan passed away. I was in Australia then and a few days later I was informed that Nilhan was no more. I was sad because I had hoped to see him in Colombo. In May, I visited his wife, Melody, and son, Michael, at their family home and shared many memories of Nilhan.
Nilhan, though he was ailing for sometime, kept his grace, humour and generosity till the end.
I first came to know Nilhan in the early 1950s when as a young boy he was living with his parents at Charles Place. His mother, Daya, and my sister, Mabel, were colleagues at University College, Colombo and became good friends. A friends ...(continued)

I turned down a ~$80k contract, and here's why.

Earlier this year, just by replying to a tweet I found myself in a "Contractor" job, in Rust (yay!) and ended up networking myself into 4x 1 hour interviews.  They went from CTO > COO > 2x members of their engineering team, let's call them Mark and Penny.  Mark worked on the API side of things in Rust, and Penny created amazing UI/UX in React (think "Scratch", by MIT).
During my entire career, each encounter with a client has meant that I have personally worked on every contract moving forwards, and I too have been the issuer of many "Contractor" contracts to other engineers themselves.
In one of my past engagements in developing a complex Android solution, I spent over 6-months with a British legal-team to finesse the details of their contract, which covered aspects like licensing and even licensing of dependencies!

My thoughts on (Ruby on) Rails, and why I'm left with a bitter-sweet feeling.

Here's more context as to why I'm not as thrilled with the direction of Rails.

Yesterday, I responded to a tweet and feel like I need to provide more context as to why I'm not as thrilled with the direction of Rails.
(1) The final say in the direction of Rails belongs to DHH, completely.
(2) Therefore, it isn't much of a surprise that every new release serves to improve his interests first - (a) Basecamp and now (b) HEY.
If you look at hotwired.dev - They even say 
[..]you can use these Hotwire designed frameworks created by the team at Basecamp to power HEY
featured on hotwired.dev
This all looks quite OK at first ...(continued)

Contributing to my first Rust crate

My Rust journey continues and I wanted to sink my teeth into a crate that's relatively popular and well maintained.  One such project is also by Jon and is called tsunami.
This lets you orchestrate cloud services using Rust SDKs, and my first PR is one to add VPC support to the AWS provider.  Here I'm meshing my Cloud Ops experience and Rust, and it feels good!
Checkout the PR for details, it's still in its infancy though!

My first contribution to the Rust language

Earlier this week, Jon dropped his screencast on "Crust of Rust: functions, closures, and their traits". When he covered dyn Fn towards the end of his talk, he noticed this had not been implemented on Arc.
I was curious and reached out to him over Twitter and set about looking into extending this, and did this intentionally so as to get my feet wet within the inner workings of Rust.
Just by going through this process, I was able to setup my local dev environment to compile the bootstrapped Rust compiler as "Stage 1", and I was off to the races.
First, I wanted to try and solve the missing implementation ...(continued)

Post Archive