May 8, 2023 Getting Started…

New week, still looking. Three things in the pipeline.

I’m planning to spend a bit of time writing up a couple of ideas I’ve been playing with and then put them on the shelf.

The idea of a modern secure multicast design has come together a bit but right now I have other things to spend coding time on so a short white paper describing where I’m at seems appropriate.

I’ve thought about the possibilities of using sound for detecting faults. Some recent conversations brought those ideas to mind and I’m going to write up a white-paper laying out those ideas. Again probably no coding as I have other priorities but getting them written up will make it easier to keep them on the table for later.

At the moment I’m going to focus on some work that wraps around some areas I’m interested in and some digging on the Azure side of things. I’ve got significant experience in AWS and want to see how the Azure side lives. I’m also probably going to continue with some spring coding and perhaps some parallel ASP.NET core coding. Should be an interesting week…

I also want to take another run at writing up my ‘Draeger’ section for the ‘places I’ve worked’ tab on this site. I’m struggling a bit to get the level of detail right so that I’m not going too deep while still covering the areas that are of interest. I’ll get there, just may have to rework the unpublished draft a few times…

Weekend and Some Reassessment

Definitely ended last week feeling a bit frustrated. I’m going to reset for next week and pick some tech refresher work based on things I’ve been doing on the home front rather than jobs I’m looking at. Patience is clearly called for and I’d much rather find a job where everyone if comfortable with my skills and abilities and we can dive into challenges with confidence rather than something where there’s any doubt on either side….

Not sure where I’ll shift to at the moment. Probably something related to the VR coding I had been working on, but that covers a lot of ground as I was looking to have a RESTful web back end for that work so lots of possibilities. I still may look at some AWS or Azure coding as those are both possibilities for the back-end and while my web hosting is already paid for and supports PHP that isn’t really a very scalable environment and PHP isn’t my favorite language. Got to reflect a bit over the weekend and make some decisions.

I may even go back to the OpenGL coding I was playing with a few weeks ago. OpenGL is a good tool for handling the sort of 3D rendering that a flat screen view of the things I was trying to do in VR would work on. Getting back to that environment also has potential for jobs that could be interesting so might be a win-win. Have to think a bit…

I do think I’m going to take a high level look at Azure to see what the Microsoft cloud offers. Probably also worth some practice with C# language integrated query as it offers interesting capabilities akin to Java 9 streams. Lots to play with, lots to learn.

Just ordered a couple of Azure books from Amazon. One high level and the other also covers ASP.NET Core with Azure. Should be interesting reading.

Ups and Downs but Hopeful End to the Week

Another interesting day. Another cloud position possible in the pipeline, a cloud position that seemed very interesting and a good match from what I could see declined to look further and an embedded position interview completed that looks very interesting.

Over all feels like a good day. Another interview early next week already in the pipeline and likely a second interview for the embedded role.

Overall frustrating to see so many possible positions walk away because I’m not a 100% match when I came away feeling like I was more than capable of coming up to speed on any gaps and delivering exception value but in the end that is their choice and I will keep looking…

I’ve made ‘getting the job done’ a core part of my approach to engineering and have demonstrated again and again that I bring a lot to the table and can fill in any gaps in no time flat. I do wish I was better at communicating that succssfully.

Cloud and AWS Reading Goes On

Busy day yesterday. Didn’t get all that much AWS reading done but did get my copy of the third edition of ‘Amazon Web Services in Action’ from Amazon. It is clear that things have moved quite a way forward since last time I worked in AWS (and being an inside customer may make a difference as well).

One of the things we struggled with was the lack of MySQL support in AWS and adapting designs that expected that database was a challenge. It also appears that the filesystems for instances are now preserved in ways that those we were working with were not. We designed for the possibility that all compute nodes and their storage would disappear at the same time and the only thing we could safely count on was data in one of the persistent stores.

I’m going to keep reading to up date my understanding of where AWS is at this time. Interesting stuff and I’d be happy to find myself once again addressing challenges in the cloud.

I’ve got a cloud related interview this afternoon at 2:30. Looking forward to seeing whether there’s a fit there. My cloud coding is a bit out of date but I’m hoping I bring enough other things to the table to make it a fit. Definitely seems as if things are heating up a bit again on the job search front. Lots of variety as well so that’s good.

Cloud Tech Stack Refresher Time…

Working on bringing my view of cloud technologies up to date. Picked up a couple of recent books and reconnected to my AWS and Azure accounts. It has been a while since I played with this stuff and I want to get back into those tech stacks and see all of the interesting new things that have become available.

I’m seeing a lot of interesting roles out there that span embedded, medical and cloud in various ways and I’m looking to fill in my gaps to be better positioned to help in those areas.

There’s plenty of time in my day now around job search activities so it is a good time to dig in. I’m putting some of my multicast and encryption work on the back burner to get this done but will likely (if time permits) get back to that at some point.

AWS and Azure accounts…

Slower day today. Recovered my personal AWS account so I can do some things over there and verified that I can log in to my Azure account. Haven’t done much with the Azure account so far but I do want to see what they offer. In particular the choice between Java/Kotlin and C# seems interesting and C# feels more appropriate on Azure than on AWS.

These are both likely more capable than using PHP on my hosting here if I’m going to do RESTful web work and a number of home projects I’ve played with want a cloud hub to coordinate activities.

Today’s Coding Goals, C++ Multicast Early Sample

Today’s focus is going to be getting my C++ simple sample running on windows for send and receive. Mostly looking at just sending out the hostname and a few other similar items. May add in some other bits if time permits and might look at AES256GCM and HMAC SHA256 wrappers on a fixed key just as a starter.

I had considered using the GCM capability for validity checking in place of HMAC but after some more thought I realize that there are going to be places where peer key management needs unencrypted but verified information to be exchanged between peers.

That is for later but I want to start out in the right direction using standard, off the shelf approaches.


So initial version here has an unencrypted length followed by the IV for symmetric encryption and perhaps a key identifier followed by the length of the encrypted block. This allows messages with mostly or entirely unencrypted payloads to be sent. It also should support varied message layouts and provide some additional checking along the way. Not sure quite how to structure the IV inclusion or the key id yet.

Key id will probably be a SHA256 hash (or part of one) of the key material.

IV may be smaller than the whole IV and use off the shelf PBKDF2 key expansion to generate the actual IV.

There is going to be some tension between including everything at full size and keeping as much space within the usual UDP MTU available for actual message content.

Starting Month 3 of My Job Search

Starting month three of my job search. The rate of job contacts has slowed down (unsurprisingly) and I’m digging into tech refresher things and some new areas.

Doing some work on a ‘modern’ multicast telemetry encryption design. Looking at doing some general multicast coding in C++, C#, Java and Python as a good exercise (and to feed into the encryption part later). Spending some time increasing my depth of knowledge of Java Spring and Spring Boot as medical cloud opportunities seem very interesting. May dive into C# and Azure offerings as well at some point.

Still hopeful but certainly a bit discouraged. Have had a number of jobs get close but not close. Mostly small things like too little experience in some specific area…something I’m quite capable of dealing with but I certainly understand an employer deciding to take the safer route of going for someone who has everything they’re looking for.

Back to java spring for a bit…

Back over to Java Spring stuff again. A very interesting possibility that was on hold has come back on the table. I’ve done a decent amount of Java but generally spring was in the background for me. Recently started looking at it after some opportunities involved that environment and it looks pretty cool.

Might also poke at azure/c# a bit but since I’ve done more in the AWS environment I’m going to spend my initial time doing a quick java refresher (already done some but putting together some spring microservice code will do more 🙂 ) and looking at working through some spring exercises (probably in docker containers but we’ll see).

Sketching out a modern secure multicast design.

I spent the last few years designing, documenting, implementing and releasing a secure multicast protocol with full key management and seamless key rotation for Draeger Healthcare.

That protocol is their property and I cannot go into great detail about its design here. That protocol was also severely constrained by the very old hardware it needed to run on and by the very out of date operating systems and cryptography libraries those systems used. While I cannot share that design, I can create the design I would have built if not for those limitations.

I intend to put together that design and share it here while I’m looking for my next job. I will be using this work to showcase my technical abilities and as a focus for refresher work in the various languages and coding environments I have available here at home.

I’m expecting to target C, C++, C#, Java and Python (probably in that order). I’ll likely use both OpenSSL and BCryptLib for cryptography support. At this point my OS targets are windows and Ubuntu Linux. If things run on I may look into other options including possibly Android and Kotlin (a language I’ve been interested in for some time but unlike Java haven’t found time to experiment with).

Initial goals for this are:

  • Target fully capable OS and hardware environments that can support elliptic curve cryptography and X.509 certificates.
  • Multiple root certs per device.
  • Root cert, site cert (for authorization) and device cert
  • Root cert(s) pre-installed on devices (out of band)
  • Key management to add new root certs, site certs.
  • Device generates CSR to sign device cert.
  • RESTful TLS API for key management (or off the shelf standard, need to look into this)
  • Seamless cert rotation to ensure no loss of functionality as certs expire.
  • Elliptic curve cryptography to establish device keys.
  • Send only for multicast activity.
  • TLS side-channel for reliable communications between peers.
  • Full library support in multiple languages on a range of operating systems.

There doesn’t seem to be any protocol out there similar to this at this time so I’m hoping this proves useful. It is pretty clear that TLS/SOAP based protocols do not scale as well as a multicast protocol for data dissemination and many application require a scalable and secure way to make information available in real-time.

I’ll keep posting as I move things forward. Currently I’m just getting this started and depending on what comes up I may divert into other areas along the way. I expect to share the code on my github repos at https://github.com/ninecrows

Engineering execution and creativity mixed for the best results…