My Raspberry PI 4 Came In

I have now received my pi4 board (4 GB model to act as a developer machine for my older pi boards). So far so good…I’ve loaded up the latest raspian (buster) on the a 64 GB micro SD card and things came up just fine.

I’ve got it in a simple case with laser cut sides and a small fan to keep the chip cool…sinks installed on the CPU, memory and one other part. A friend got his board in a bit earlier and loaded it up without a fan on things and noted that the CPU became VERY warm. Looks to me as if this board is going to need active cooling in many cases…I expect this may keep the pi3 in service for some time as a low-power option for many builds.

I’ve only started loading up development related items…went to bed a bit early last night with apt installing emacs when I went to bed. I’ll likely get this much further along over the weekend and post a bit more detailing my experience with the board.

I am hoping to get an OS loaded on one of my USB3 SSD drives as well. This should be faster, bigger and more robust than the micro-SD for the sort of things I’ll likely be doing with this board. I’ll detail my experiences as I get there.

Interesting weekend, Gene Sequencing, PHP and Some Physics

The weather hasn’t been great, but I found myself doing some digging into gene sequencing technology with some digressions into a talk on loop quantum gravity and some small progress on RESTful interface implementation on PHP. I’m once again tempted to go with Angular for my web UI code. React and Vue may be a bit simpler to get rolling, but for larger projects Angular and typescript seems to provide better tools and productivity.

It is interesting to see that the basics of gene sequencing have a lot in common with the PCR technology I’ve been involved with in the last few years. Automated clinical instruments seem like a good fit for this stuff.

Interesting…watching a piece discussing vision systems with automated ecoli colony pickers to grab ecoli amplified plasmids from growth media. Must have saved many grad students from repetitive stress injuries.

Looks like Illumina, Roche and Applied Biosciences play in this area. On to clustering technologies and no more ecoli required. Some pretty cool amplification isolation techniques.

Interesting dive into the history here.

PacBio? Oxford Nanopore?

Kind of challenging to find presentations that are recent and not focused on one of the major players. This appears to be an area where the technology is moving at very high velocity but the leading edge is hard to track (at least quickly).

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.

Getting Back to PHP Work for Cluster

Since vacation I’ve been pretty busy working on photo post processing and around the yard.

At this point I’m going to be trying to get back to building a back-end for the unity based cluster game that runs in PHP on my web hosting (initial work on local sandbox PHP instances of course).

I think I’m going to try using Visual Studio Code with PHP Extensions to get this started. I’ve done a little PHP coding in the past, but this looks likely to be far more involved than any of that.

I’d like to get a TLS cert on my site before going live with this, but it appears that my hosting may not support free TLS or similar cert installs and I’m not happy adding the annual renewal cost for a cert to my site at this point so stay tuned. I’ll probably try hitting GoDaddy support some evening soon to see what they can tell me.

First steps will be getting a simple RESTful interface defined and then laying out some simple SQL schema to provide the back-end. If I can get that working, I’ll look at extensions necessary to provide the full back-end to the game as a whole. Not looking for commercial quality here, just something sufficient to allow multi-player turn based gaming.

Looking at InfoSec Stuff a Bit

Information security with a software hardening focus has been coming up a bit lately. Picked up a Engineering Trustworthy Systems over the week end as a refresher along with digging out my copy of Cryptography Engineering by Bruce Schneier to re-read.

This stuff is more about system architecture and design than it is about algorithms and coding so these books should be a good touchstone. Coding standards and use of standard algorithms and protocols can cover the fine grained issues. The larger scale issues tend to be less well attended to and more prone to providing openings to the bad guys.

CLuster Game Web Back Ends

Just reinstalled clean and up to date copies of XAMPP, MariaDB and MongoDB on one of my home machines. 

I need to write some RESTful PHP code that can run on my web hosting as the back-end for a VR game I’m playing with. This gives me a platform for building that code in a safe place.

I do need to stick to PHP 5.x features as my GoDaddy shared hosting does not support PHP 7.

I’ve got to get the basics stitched together, add an appropriate .htaccess to keep passwords out of inappropriate hands and then start working out a SQL schema that works for the persistent game data I need to store.

Spending a big chunk of this long weekend post processing pictures from our recent vacation (see them on the blog side of ninecrows if you’re interested). Watched the whole last season of Game of Thrones and saw Aladdin. Lots to still get done, but progress is progress 🙂