July 2019

Wait ’til you see our submarines with Polaris

No recent postings; I’m sure you’ve noticed. I got the inventory system put back together the way I wanted it, as well as the armor “picker” for the character screen. In fact, that screen is pretty much finished- maybe a few nit-picky things left, but the meat of it is definitely there.

I’ve gotten myself into a few other projects at the moment, though, which has left Forge of Asha on the back burner:

One of my projects at work has been the “revamping” of the visualization our machine uses. Because of some proprietary libraries we have to use to communicate with the machine’s PLC, we’re stuck using Visual C# 2008 to program it. In addition, the guy who wrote the initial version of the HMI’s visualization really didn’t understand C# or windows programming in general, so it’s a memory hog and extremely inefficient. However, none of us have had time for anything more than band-aids over the last couple years, so the visualization has been slowly spiraling deeper and deeper into a massive rat’s nest of inefficiency and redundant code.
However, I recently came up with a way to bypass those communication libraries altogether- our PLC uses the CoDeSys programming language, and one of its features is the ability for multiple PLCs on the same local network to send lists of variables to each other using some specialized CoDeSys protocol. I managed to deconstruct that protocol, and have tricked the PLC into thinking that the HMI running our visualization is just another PLC on that network, so now they can exchange information back and forth without relying on those outdated libraries.
This means I can finally modernize our visualization to take advantage of all the improvements and features that Visual Studio has implemented in the last eleven years. Of course, it means I have to write a new visualization from scratch, and the largest part of this job is packaging up the code for my “PLC communication emulation” method into something that my coworkers can easily reuse, so it’s a bit of a task.

Another work project is something along the same lines- one of the biggest memory/processor sinks in our visualization is the periodic writing of historical process data to a SQL database. On some of our machines (new enough to be complex, old enough to have touchscreen HMIs that still run Atom processors with 2GB of RAM) the entire screen will freeze up for 10-15 seconds whenever a SQL record is made (for whatever reason, threading doesn’t seem to work properly- maybe it’s a problem with the old processor, or maybe it’s a Visual Studio 2008 limitation). We’ve looked into CoDeSys libraries for writing to the SQL database directly from the PLC, but the licensing is extremely expensive.
However, if someone else figured it out then surely I can too, right? Turns out yes, I can. Microsoft was extremely forthcoming with regard to the details behind their TDS (Tabular Data Stream) protocol, used to communicate with a Microsoft SQL Server. It took hardly any time for me to recreate this protocol in CoDeSys, and I managed to get something together that wrote huge data records to the database within milliseconds with absolutely no lag on the HMI.
Of course, reading from the database is slightly more complex, since it also sends along enormous amounts of metadata about the table in question, so it’s still a work in progress.

Lastly, as if my actual career weren’t enough, I recently started my own app development company. I’ll hold off on advertising it here until I’ve got a website that’s slightly more impressive, but I’m currently working on something that was kind of a request- someone I know has been looking for a particular type of alarm clock/system that just doesn’t seem to exist out there currently- not bug-free, anyways. After thinking about it just a little bit, I realized I could make something like that with no problem, and it would actually be pretty useful for lots of people.
I’d been toying with the idea of my own software development company/studio for a while; I actually bought the domain for it over a year ago. But I only just got the business license and registered with the IRS and Dun & Bradstreet within the last couple weeks.

On top of the projects I’m running at work, I’ve got a large project coming up that’s going to have be working at a job site for about 4 weeks. Usually, by the end of the day, I’m too tired to put any effort into software development, so I just want to grab a book or watch some TV (the internet connection at the hotel we stay at is just barely above dialup speeds, so no Netflix).
So I think it might be a little while before I have any significant progress to show off in the game.