Building Out Cluster Web Parts

Schema fun

I’ve been through the basic pieces (many, small and fiddly) of the SQL schema for this game a couple of times now. Each time I get a certain distance down the road and run out of steam putting together the various details needed.

First web bits

I’m going to start in on the process of laying down the game logic and support structure at this point. Initially I’m not planning to lay in any significant security. I’ll likely skip password storage and focus on the first two big steps in getting a game setup.

  • Login and signup screen
    This gets me user creation and walks me through session management for players in the game.
  • Game creation screen
    I expect a logged in user to create a game and then perhaps invite other players (up to three more) into the game. Initially, I’ll probably make the invitation process very simple…you invite the others to the game at game creation time and when you login you see your active games and open invitations (where you can accept or decline).
  • Game administration screen
    Ideally useful to help with debugging of things. Getting a look at digested versions of the game tables in a helpful format should make it easier to see what is going on and when things are messing up.

Steps to follow

Once these pieces are in place (and perhaps backed by some RESTful API bits) I’ll want to set up the VR viewer to access the stored star information for a selected game.

I expect that user permission information will be pre-stored on a given computer/account separately and the VR lobby will simply provide a list of games to the user to select from.

Once a game has been selected, the full game VR will be displayed and the player may begin setting up a new turn (if the previous turn has completed).

Software Diversity

Every year it becomes clearer to me that any software engineer must become proficient in a broad range of languages and environments in order to be effective in modern environments.

Over the last few years I’ve written substantial amounts of code at work in C#, Java, C++, Javascript and a bit of perl and python. At home I’m coding in C#, C++, PHP, Python, Javascript and a smattering of other languages now and again. This code has run under Linux, Windows, AWS, MacOS and a bit of embedded work.

The many, varied choices out there bring so many different strengths to the table for various work items that coding in only a single language or for a single platform involves leaving your most powerful tools behind.

Steps and Tangents…

Started reading a book on coding CUDA using python so I’ve loaded Anaconda and the CUDA SDK on my machines that have Nvidia video systems. Looks interesting and perhaps useful and the ebook was on sale at Packt for $10. I’ll share here as things progress…as usual with sandbox items, this may move slowly as time permits.

Brought the basement Ubuntu system attached to the TV down there up to a better state. It now auto-launches chrome on boot and does not prompt for credential access on login…less secure overall, but much better user experience for a television.

I’m also loading an internal house use wordpress instance onto that system…it is one of the few machines around that doesn’t get used for software development, stays running most of the time and has Ubuntu Linux running. Hoping to use this for local only notes and tracking that I’d rather not host on my main public hosting.

Getting wordpress setup properly is proving a bit more labor intensive than I remembered with all of the database setup being manual…but is has been a while since I set one of these up.

Waiting for my Pi 4 to arrive though I’m not sure how much priority will go to it when it does as I’ve got quite a few other things going on currently.

I do want to put together a small motion triggered frame capture tool on the pi using OpenCV for data acquisition and image processing. My wife likes watching the wildlife and I expect we could get some interesting shots with a pi and a web cam pointed out a window for a day or two.

RPi-4 is on order

I’ve got a raspberry pi 4, 4 GB on order. I’m not expecting it to arrive until later in July.

I’m looking at this as a way to have a decently generic ARM development platform hanging around for a reasonable price. I’ll likely look at booting it off of a 512 GB USB-3 SSD that I have hanging around to give me a more robust and larger dev system.

The 4 GB of physical memory is particularly interesting as I had to set up a swap file on my pi-3 and pi-2 boards before I could build an up-to-date local version of OpenCV. Without the swap space, the build hangs quietly at the part-way mark and never completes.

I’m hoping that I can use the pi-4 as a build and development machine while pulling executables over from there to the pi-3 and pi-2 machines to run. Being able to develop on a system with plentiful resources yet run on cheap and less capable machines would be a great combination…

A Weekend of Database and CertificateS

Spent some time over the weekend doing some more work on the MySQL database layout for the cluster game and working on getting self-signed certificates prepared for my various development machines.

PHP and MySQL

The database work went smoothly. Still largely on the whiteboard at the moment. I’ve also been going through a PHP re-familiarization as I’ll need to code this stuff in PHP for my hosting and I haven’t worked in that environment in some time. I did grab an evaluation license for PHPStorm a few weeks back, but I fear that was premature as I haven’t reached the point where I need such tools on this sandbox project yet.

Certificates

I finally took the time to create SSH certificates to permit direct logins to my linux machines from my windows systems. That part I’ve done many times before and it went flawlessly.

I created and installed self-signed certificates for various local systems and set up TLS on their Apache servers. The creation and installation went smoothly, but the end-result was not what I was hoping for.

After installing the certificates in several different ways on the systems/browsers involved, I still did not see the secure icon in the address bar. I’m not sure whether this is caused by the certificates being self-signed (shouldn’t be as I installed the keys directly from files into the trust stores) of something else I’m not doing properly. I’ll need to keep looking at that one.

I do want to verify that the connections are using TLS. If they’re encrypted but not ‘safe’ because they’re not signed by a major cert vendor then I’m probably ok with that. If the TLS handshake failed because they don’t have the right certs then there’s a bigger problem.

Sunday evening I started down the road to building a local CA to sign all of my certificates with. I’m wondering if setting this up and loading its public key as a trusted root may give better results. The process is a bit more involved but may be worth it if it gets closer to the results I’d get with a commercial certificate.

I still haven’t found a way to load a FreeTLS certificate on my GoDaddy hosting. One of these days I’ll spend the time to get on the phone with their support folks and see if this can be worked out.

I may try setting up a FreeTLS cert on my dynamic DNS connection that targets a port on my home firewall. That would provide more flexibility, but be less robust and scalable.

Samba SMB Shares

Toward the end of the evening I ran through samba installs on several systems. I had been pushing files around between my windows and Linux machines all weekend and wanted to make things closer to seamless.

I had no real luck on that front. I could get things to the point where windows recognized share names from the Linux machines. I could never get things to the point where my windows systems could connect to a share and see files inside. Not sure what I’m missing and the samba logs were not at all helpful.

I’ll probably re-visit this again sometime soon, but for now the convenience of having it working isn’t worth the effort involved in finding out why it isn’t.