Back to Modern C++ and C# :)

I’ve been very busy implementing cryptography code to support a range of devices, some of them quite old for the last couple of years. This has resulted in most of my coding being focused on C++ 1998 (at least one device supported nothing newer) and very simple C# for proof of concept code.

Now that work is winding down I’m looking at getting back up to speed on C++ 2011, 2017 and later features and some full featured C# coding.

I’m hoping that I’ll be doing more modern coding in both languages in the relatively near future. Going to make sure I get some coding done on the home front while things are relatively quiet and look for work related tasks where modern tools and techniques are good things.

Wrapping up Crypto Work

Wrapping up the tail end of the tail end of the multicast encryption work here. VxWorks port is looking good and looking forward to new challenges. It has been an interesting three years getting this defined, implemented, handed off to the teams and wrapped up.

It has been a wild ride taking an early stage prototype and building it out to something that is deployable across a line of products. Adding to the challenge was a multicast protocol that is central to the functioning of the systems that isn’t similar enough to anything out there for there to be an off the shelf solution and devices that are low-spec enough that no modern public key solutions perform adequately.

I was surprised to realize how much of the design ended up being key management. The algorithm and packet packaging stuff tends to get most of the attention but making sure that keys are updated and that updates can happen seamlessly without creating coverage gaps (important with ICU monitors) gets quite involved.

Dealing with the issues of systems coming into and out of coverage and devices that are not on or not working properly during key rotation makes things even more of a challenge.

In the end I feel good about the solution and it appears to be rolling out relatively smoothly to the product teams for implementation. The heavy lifting was largely done last fall but tying up loose and and a new platform to target has kept me busy since then…

Wrapping up the crypto work at work

The network cryptography design, implementation and hand-off to the development teams that has occupied much of the last two years for me is almost done. Feels good to be nearing the completion of this work. It has been a real challenge but I’m happy with the end product. Slowing down as the remaining items are more varied and less technically challenging…but still need to be wrapped up.

Not sure what comes next though it looks like there will be more clean-up after the main work gets approved and shipped. Hoping for an interesting slate of new challenges to dig into as we enter the new year.

Covid remains a challenge. Mostly working remotely as with omicron in play we’re back to at most one day in the office each week. Various complications on the home front are distracting but things keep moving forward and we’ll get this wrapped up with a bow on top soon enough.

Fun with SSH and SFTP

Had to reload my Ubuntu test box a couple of weeks ago.

Now back to doing some development that involves SFTP and working on reconfiguring things to work. Needing to get everything properly configured and running with the C# client library I’m using and the security requirements for this testing.

Command line is working, now I need to understand what is failing and why with the library. Next step will be to restrict the server to ec25519 for this work. I had that set up before so I expect I can get it there again…then to the client code and see what is getting messed up there.

There were some protocol level changes on that front so I may end up there before I’m done. Step by step…

Wednesday, Mar 17, 2021

I’m really finding the resharper code cleanup/fix functionality for C# to be helpful. I’m reading through my copy of C# 9.0 in a Nutshell and finding features that are useful, but it is much faster to write something and have a ‘cleaner’ alternative proposed and presented by the tools.

Slowly the tools I need to build the tooling I want is coming together and I’m feeling better about the classes I write here. My C# code has been serviceable in the past but I’m now feeling more like I’m making best use of the available language features.

I’ve given in on PInvoke 🙂 and I’m using that to get to any native API calls I need that aren’t exposed in the core C# libraries. Currently mostly volume and file information stuff. Also looking at (for tangentially related reasons) display layout APIs. Keeping me busy when I’m not polishing work related network cryptography specs.

Wednesday, September 9, 2020

Interesting times. Hitting a bunch of topics that are more than a little divergent but interesting.

Networking Security

Work keeps me deeply involved on this front. Down in the TLS RFCs, certificate stuff, algorithm and cipher suite options and some lower level work. This may sync well with some home project work as well at some point..later once I’ve gotten some other things back rolling.

WPF

I’m digging deeper into WPF coding for some of the simpler home-front tools. I’ve done a decent amount of JavaFX coding and MFC work but java doesn’t give me access to the low level APIs these tools need and MFC is old, crusty and much harder to work with.

WPF is a bit of an odd critter but seems to fit my needs decently. I’m still working through many of its oddities and figuring out what works well with its design but I’m optimistic that it will remain a good tool for prototyping on windows and for small home tools development.

Unity

Last year I did a good bit of Unity VR programming with a couple of friends.

The year since has been busy as I changed jobs and took on a very challenging set of problems at my new work (cybersecurity, networking security design and fitting it all into an existing architecture that goes back quite a way). I’m hoping that with the fall I will be able to put some more effort into home projects in off hours. Till now I’ve been working during work hours and digging into technology and background issues in off hours.

I’ve got the VR system downstairs back together and calibrated to the room. I’m still eyeing headset upgrades but don’t feel that I’m at the point where I want to throw the money at the systems that are out there.

I need to get back into the basic details needed to build out a VR Unity app. I know I have notes on this blog that will get me there. Once I have that together I’ll move forward with some ‘stretching exercises’ in VR.

I’m also realizing that both the VR environment and the flat screen environment Unity could be a nice environment for some amount of tooling so I’ll probably try to see if PInvoke and similar are supported. Being able to pull information out of a system and then render it and manipulate it in a Unity managed space seems potentially very interesting. With a bit of TLS and networking support and this might get even more interesting. Things to think about.

Rest of it…

I will almost certainly bite off more than I can chew on the home front. Hoping that some interesting bits will make it to a level where they’re useful. I’ll keep blogging here (and on my personal blog and pandamallet for more detailed game stuff). Hoping to reconnect with the friends I was working with a year ago and that a covid vaccine lets us all get back closer to normal life in 2021.

And a Look Back at WPF

Hmm…WPF VIewport3D or Unity 3D rendering. Being able to build a simple-ish windows program rather than something that requires a VR headset does have a sort of charm. Hit testing mouse clicks into the 3D view could be interesting. Choices, choices.

I expect to bump around here a bit.

I really like having the GPU handle display list rendering for me and then being able to change the world while the hardware handles keeping the user’s view consistent.

Seems like it may be worth playing with Unity VR, Unity on a monitor, WPF 3D viewports and perhaps even MFC hosting OpenGL or DIrect3D (Vulkan?). If I can make this stuff work it should prove helpful in many places. Making it work in a more general purpose environment (mostly meaning not Unity) seems alluring as it permits tools to be built with full access to native APIs and facilities.

I think this gives me a direction to head off in that is interesting. I’ll probably still start with a Unity VR implementation as that gives the most ‘bang for the buck’ and should be fun to play with.

THinking that VR Solves Everything :)

After a bit of thought and some time looking at WPF canvas and related items I realized that the same VR environment I planned to use for the random dungeon generator (toy program to play with Unity some more) would make a good environment for putting together an interactive room layout editor.

I was going to try to put together a room drawing tool in WPF. I would prefer to build something like that with interactive drawing as the user moves the mouse. Looking at WPF drawing primitives it seems as if that would get ugly quickly as I really want something closer to a rendering environment. Each frame should be redrawn with updates from any user input reflected.

The 2D APIs seem much more oriented towards static drawings. Update on clicks rather than the 3D style display lists where the image on the screen gets updated continuously. Given the hardware available on even low powered modern computers there is no good reason not to provide this sort of constant, interactive feedback (the equivalent of WSYWG for office tools 30 years ago.

Unity VR provides all of the tools to make this sort of thing happen and should actually provide a very pleasant UI experience along the way. I think I’ll try putting together a map drawing tool as an interesting exercise soon. It may or may not be the final approach but it seems worth trying.

VR Chat

My friend Malcolm suggested using VR chat.

He mentioned spatial.io and VR Chat as options. I registered with both of these as KyleWilson.

So far it looks as if spatial.io does not support any of the PC based 6 DOF room scale devices and since my primary VR system is an HTC Vive this limits my options on that front.

VR Chat looks more promising and I’ll install the windows application tomorrow to see how it looks (it appears to be a steam app).

Just queued it for download on jabberwock (the VR system in the basement). Looks like it already installed…more tomorrow.

Playing with WPF Canvas

I need to put together some 2D-ish editing tools for some home project work I’m doing.

I’m still working my way through WPF panels and controls so that seems like a good place to go with this.

Tonight I’m probably just going to try to get some basic mouse controlled drawing going in this thing. A throw-away toy program with some limited functionality to get familiar with the functions here.

In the end I may very well look at using 3D functions (and perhaps not WPF) to make this happen. Being able to do full renders would allow for some nice effects but if the 2D WPF functions are click enough I may make do.