All posts by KyleWilson

Re-seated Memory and SSD in my Router

…and so far, with the fan blowing on it and keeping the temperature down it seems to be doing better than it was yesterday.

It will be good to have a fallback machine available but I’m really hoping that this resolves the issue.

I do intend to keep a fan blowing across this ‘fanless’ machine as well once I get things back together. Crossing my fingers that this stays up now…

DTLS – Security for UDP

I had a short conversation yesterday about securing UDP data. When I dug around little it became clear that there is an existing, RFC documented protocol for handling that. I haven’t yet read the specification (though I likely will as it is an interesting technology).

There is a wikipedia description here and the primary RFC is here.

Being able to secure unsequenced and unreliable datagram traffic using a design that is reasonably well vetted seems extremely useful. There are places where UDP is uniquely useful and security is becoming a much larger issue in the market today.

Interesting looking sample code here.

A Bit of a Crazy Day

Today has wrapped up with repeated DNS failures from my PFSense boundary router. I’ve been trying to diagnose things for a good chunk of the evening and so far have little to show for it.

I’ve played with the DNS configuration and things don’t seem to have gotten better. I’ve got a fan blowing on it…temperature is down but it is still flaking. I’ve reseated the memory and SSD and so far it hasn’t failed again, but I’m still concerned.

I did finally order another similar small machine to act as either a replacement or a spare. The household firewall is one of those things that will really impact everyone here should it go down for a period of days (hours is bad enough) so the spare will be welcome.

Hoping to figure this out in more detail sometime soon. I am expecting to have an external fan blowing across the ‘fanless’ computer from now on to keep the temperature down and hopefully forestall any future problems. It had been getting warmer than I liked, but not so warm that I felt there was likely to be an issue…more to come as I work through this over the coming weekend…

Some Thoughts on Agile

I’ve done some development in an agile/scrum environment. There are a number of things it brings to the table that I see improving code quality in some ways and providing a more stable delivery schedule.

With all that being said, I don’t believe it is a silver bullet and I become a bit annoyed when I read books and articles that present it that way. I’ve been doing some refresher reading lately as we’re working with customers who run agile teams here and I’d like to help our team adopt useful bits of agile without harming our overall effectiveness. This is particularly challenging in a regulated environment like the medical device development we do here. It is also challenging when we’re doing contract development engineering and customers expect to have a contract that covers the work we’ll do before they start paying.


I’ve been running some sort of daily stand-up long before I heard of agile or scrum. If anything, scrum environments seem to make stand-up longer and more formal. In lead roles before I hit scrum environments, my stand-up usually involved going to wherever the bulk of the team was located (if I wasn’t already there…jobs varied) and having a short discussion with members of the team about how things were going.

One aspect of stand-up that I don’t endorse is the ‘blockers’ question that usually seems to be a rote part of the process. In a team of under ten people, there should never be blocking issues that last for more than a very short time. If you know who can help you then just ask (by email if they’re not immediately present). If you don’t know who to ask then either ask your lead or ask someone else and follow it up from there. If someone consistently fails to help those who need assistance then the team needs to stage an intervention and make it clear that we work as a team.

Blocking issues should never persist for long enough to make it to stand-up.

I also tend to use stand-up as a platform to address team wide issues and support issues that people encounter. Another side-effect of the ‘keep it short’ philosophy of scrum stand-ups are ‘information free’ comments. Telling the team that you’ve closed issues/stories ‘1123 and 1127’ and are starting work on ‘1134’ doesn’t really help to share information with the team. It may help the leadership track progress, but they have plenty of tools to do that already if you’re using any sort of software to manage work-flow.

I think this is enough for one day…I’ll add comments in another page in the near future…

< Prev | Next >

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…