Thinking about home projects as we head into fall…

Long laundry list of home coding projects that have been on hold as work has been very busy for three years or so. Trying to list them and then get things rolling…

Probably more here as I think about things. One reason for this item is to provide a spot to accumulate the items on the docket. Probably going low tech as well with some cork-board and index card setup at home.

I’ve had lots of things on the list for a long time but getting them moved consistently forward while work intrudes on a regular basis has been challenging.

  • MongoDb work in C++.
    Done plenty of MongoDb work at home in C# but some things are better done in C++. Built the drivers with some messing about yesterday afternoon. Now time to try to do some stuff with those drivers.
  • MySQL refresher.
    I’ve done lots with MySQL (MariaDB these days) in the past. I’m looking at some networked stuff where PHP/MySQL would be the most appropriate persistent store option. Headed that way I need to do some refresher work.
  • Learn some Powershell programming
    On windows old school batch files are incredibly hard to use when building robust processes. Jenkins and other such want interactive scripts to drive activities and powershell seems to provide a .NET compatible scripting engine that would make things much cleaner.
  • C# Refresher
    I do a lot of coding in C# but mostly stick to the simpler parts of the language. Time to come up to date with version 10 and some of the more powerful features.
  • C++ 17 and 20 Refresher
    C++ has been my coding environment for a long time but the last few years I’ve been sticking to C++11 or earlier as the systems my work has been targeting are older and use older compilers. There is quite a bit of interesting looking stuff in C++20 and I want to come up to speed on that.
  • PHP programming
    My web hosting is PHP based and so anything I want to do that uses this hosting as a central point of contact will require PHP coding and back end into SQL. I have done a little PHP work but there’s lots to do on that front.
  • Javascript and WebUI coding…ThreeJS, Angular, React
    I’ve done a bit of Angular some time ago but now I’m looking at that or react as possible frameworks. Adding in a bit of ThreeJS and I’m hoping I can build some interesting things that run in the browser but have interesting display rendering. Again, lots to learn here.
  • Unity on a flat screen
    I’ve done a bit of unity coding for VR and found it to be a very nice environment for building 3D code. I have several reasons for wanting to put together some 3D games on 2D screens and that is a bit different and the focus in in a different place. I’m thinking of starting off with a simple space invaders clone in 3D mode and move on from there.
  • Unity in VR. Quest 2 and Vive
    I’ve done a bit of Unity VR coding several years ago using the Vive headset in my basement. I bought a quest 2 a while ago and want to get some coding running on that as well as the Vive. I am very interested in what VR can do for UI capability and ease of use as compared to flat screens and so this is on my list.
  • More file indexing work using C#, C++ and MongoDb
    I’ve been indexing my backups and archives to MongoDb using a C# based tool. This tool also handles duplicate removal in simple ways. I could use more tools on this front but the C# code ends up with some very, very messy PInvoke stuff to get to the Win32 API calls that aren’t available and getting MongoDb working with visual studio 2022 C++ will give me some interesting options.
  • Unity based space invaders on a flat screen
    As mentioned above. Simple exercise in doing some flat screen based unity work.
  • Space conquest game using PHP hub and VR UI
    This is the game I was looking at some time back but probably adapted a bit. Making it work in VR and flat screen would be interesting and making the back end to PHP/MySQL happen become important.
  • VR render of classic D&D random dungeon layout
    I’d love to be able to generate a classic D&D random dungeon layout and then see what it looks like from a VR headset perspective. Might go somewhere further but mostly just a toy idea.
  • Win32 ACL/ACE and ownership issues
    I keep running into archives where rsync has messed up the NTFS file ownership and the paths are very long too. Breaks takeown and icacls at times and I want more control over that so I’m looking at writing some C++/Win32 code to walk very long file name paths and then manipulate file ACEs and ownership along the way. Running as admin the process token should be able to enable rights that will make it possible to do what needs doing.
  • Win32 UI to display pdf files on screen and manage indexing
    It should be possible to launch a pdf viewer and manipulate the position of the resulting window(s) on screen and then record information in MongoDb based on user input. Needs some experimentation with windows C API functions and process management. Adds in registry stuff as CreateProcess is a better choice than ShellExec for this so the code needs to dig out the appropriate application and run it. Add in some screen probing as I run multiple monitors and would like to place the viewer app on one monitor while running the control UI on another and this gets interesting.
  • Python refresher/step up
    I’ve long used perl as my preferred quick script language across platforms. Python seems like the better choice these days so, while I use it now and again I could use some time to make my python better for those things that need a quick script.
  • Kotlin/Android coding
    It would be very nice to be able to put together code that runs on my phone (or those of family members). Kotlin seems nicer in many ways than Java (which I know pretty well but don’t particularly love) and getting some simple things working on Android would be nice.
  • Test target system setups for PHP/MySQL on Linux and Windows
    I’ve used XAMPP on windows in the past to host test code in PHP and local wordpress instances for various purposes. I need to get back to that and set up a test target that I can run debugging on (Jetbrains tools should enable this) and then transfer that code to my web hosting for public facing use.
  • RESTful interfaces to PHP code
  • PHP Debugging. Set up and get familiar with.
  • Javascript/Typescript debugging. Set up and improve familiarity.
  • Python to MongoDB work
  • Python, C# and C++ interface to MySQL/MariaDB
  • Programmatic interface to my GoDaddy EMail account
    GoDaddy changed things from IMAP to Outlook and I need to get back to figuring out how to replace the code I had previously to manage my email account that expected IMAP with something similar that works with whatever network interface outlook provides.
  • More? Probably more to be added here before I’m done…

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.

Engineering execution and creativity mixed for the best results…