Category Archives: Thoughts

General thoughts, usually on some technical or engineering development related topic. A place for me to chat about things I think might be of interest.

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.

More WPF and PInvoke

My command of the PInvoke functionality that I need is largely complete. I’m looking at stepping up my WPF skills to build out some more usable UI front-ends to these tools.

Add in some MongoDB back ends for persistence and I expect to be in a much better position to manage my data archives.

I’ll be pushing updates to my github account as I build test projects and useful tools.

Back to a Little VHDL

VHDL keeps coming up in places and my VHDL is more than a little rusty so I was back doing some refresher last night and will likely do some more tonight.

I need to get back to a point where I can read VHDL and make reasonable sense of it (and perhaps make small changes without breaking too much). If I hit the point where I’m feeling comfortable with it again I may dig out the Spartan-6 board I have lying around and see about trying some real work programming it.

This is something that keeps coming up, but once the need fades off I find other things that are higher priority and never get past the early stages…need to reach basic fluency this time around.

Interesting Looking AI Board

Just saw an article on Tom’s Hardware talking about an affordably priced AI board from NVidia here. At $99.00 with 4 GBytes of memory, a pretty capable ARM and a GPU that is usable for neural net work it looks intersting. No wireless (neither bluetooth or WiFi) but should be capable of taking a USB dongle (thought it seems the default kernel lacks driver support).

Unity Investigations…

I’ve been splitting my experiments with Unity between this blog and pandamallet.com (where I put ‘creative’ things.

More graphical content and thoughts on game design possibilities have lived on the creative side while more technical, C# coding and Unity script coding bits have lived here.

I’m going to move to keeping everything in one place for convenience and accessibility. From here on, I’m going to put all of the game programming related content on the creative side and keep my career blog for more directly coding related items and similar things.

As pandamallet.com does not share with linked-in at this time, this will mean that anyone who was watching these goings-on through linked-in notifications will need to pop over to pandamallet to see what’s up going forward. I will look at making sure that all of my sites (pandamallet, my main blog and my career blog) are publishing to my twitter feed when something new is added to make this (perhaps) a bit easier.

Playing with Python

I was playing with Python a bit more over the weekend. It is a serviceable language but I am persistently amused/irritated by a few things.

The python 2/3 breaking incompatibility split seems to be persistent, entrenched and troubling. It appears that the .NET and java ports (jython and iron python) have still not made the transition to python 3. The cython baseline and web site are now confidently stating that python 3 is the present and python 2 is the past, yet I’d expect that if that were really true, the other python implementations would at least support python 3 and ideally would have the same position with regards to python 2.

I was watching a video discussing some python features and they mocked the curly brace languages for having religious wars about where to put the braces. I have a general aversion to using white space (a very poorly conserved type of text) for block scoping as far too many tools consider spaces and tabs to be adjustable and interchangeable. The thing I find amusing here is that I’ve seen far more friction in the python community between use of spaces or tabs and how many spaces per indent level than I’ve ever seen around the placement of curly braces.

I do expect to replace perl with python for various places and the OpenCV support looks quite interesting. I think that in time the style issues will feel less foreign and I very much hope that the 2/3 split will be dealt with in the overall community as JVM and CLR versions of the engine that implement a non-obsolete version of the language would be very nice to have.

More adventures with C++/CLI

I’ve been working with C++/CLI to get access to native API functionality from C# some more lately. I’ve been running into cases where something compiles flawlessly when I create the project but then fails miserably when pulled from GIT clean and rebuilt. I’m looking at various build issues that might be contributing to this and will hopefully find the right recipe soon.

Some notes here related to parts that matter and APIs that I’m looking to use…half of this for my own reference as I mess with solutions to see what works:

Marshaling strings the (relatively) easy way:

 #include <msclr/marshal.h>

System::String^ myPath = "ABC";
std::wstring path = msclr::interop::marshal_as(myPath);

File information:

typedef struct _FILE_ID_INFO {
ULONGLONG VolumeSerialNumber;
FILE_ID_128 FileId;
} FILE_ID_INFO, *PFILE_ID_INFO;

FILE_ID_INFO info;

BOOL ok = GetFileInformationByHandleEx(myHandle, FileIdInfo, &info, sizeof(info));

Alternate string marshaling:

inline void MarshalString(String ^ s, std::wstring& os) {
using namespace Runtime::InteropServices;
const wchar_t* chars =
(const wchar_t)Marshal::StringToHGlobalUni(s)).ToPointer();
os = chars;
Marshal::FreeHGlobal(IntPtr((void)chars));
}

Volume information:

BOOL ok = GetVolumeInformationW(path.c_str(),
volumeNameBuffer, MAX_PATH + 1,
&serial,
&pathLength,
&flags,
filesSystemName, MAX_PATH + 1);

File attributes (can be used on c:\ to find things like volume creation time stamp)

WIN32_FILE_ATTRIBUTE_DATA info;     
BOOL ok(GetFileAttributesExW(path.c_str(),
  GetFileExInfoStandard,
static_cast<void *>(&info)));

creationDate = gcnew System::DateTime((long long)(info.ftCreationTime.dwLowDateTime) | ((long long)(info.ftCreationTime.dwHighDateTime) << 32));

Additional volume information:

    wchar_t volumeName[1024];     wchar_t fsName[1024];     DWORD vsn;     DWORD fsflags;     BOOL ok(GetVolumeInformationW(path.c_str(),         volumeName, 1024,         &vsn,         nullptr,         &fsflags,         fsName, 1024));

and

    ULARGE_INTEGER free;     ULARGE_INTEGER total;     ULARGE_INTEGER totalfree;     BOOL ok(GetDiskFreeSpaceExW(path.c_str(), &free, &total, &totalfree));

and basic info

FILE_BASIC_INFO info;
BOOL ok(GetFileInformationByHandleEx(handle, FileBasicInfo, static_cast(&info), sizeof(info)));

Busy week and weekend

…of work related C# and java code. Things stay busy and old projects need additional work as changes happen.

Spent a good chunk of the weekend and several nights last week making sure that work priorities were attended to.

Less fun than messing with sandbox projects, but work does generally come first at the end of the day. Toy projects can slip schedules almost indefinitely…

Looking forward to 2019

Well, 2018 was a bit tumultuous. Lots of high points and a similar number of disappointments. I feel as if I’m ending this year about even with where I began it. Some wins, some losses, mostly evening out overall.

Hoping for more from the year coming up. The gyrations of the previous year have helped to shake out some things that needed shaking out. Expectations are set more reasonably and I think the coming year will move more steadily forward along a less erratic course.

I’m expecting a productive year with things better squared away and the path forward clearer that it has been for some time. Lots to get to…much of it potentially exciting.

This last year I wrapped up the program I had been running as software lead. Lots of C#, WPF and Angular running medical robotics with a team of three software engineers working for me. Since that rolled to a successful close I’ve been filling as as an individual contributor on a Java based instrumentation program. Hoping that the new year will bring in a new challenge as this program is wrapped up and handed off. Plenty of challenges to tackle and lots of diversity in the work ahead.

I’m looking to get my RapRap build rolling on the home front. I’ve had most of the relevant electronics around for some time but have always had other priorities bumping work on the 3D printer aside. This year I have friends who are willing to help out with the build and my basement work-bench cleared and ready for action. I’ll need to order parts and run through the build process, but I expect that things will go more smoothly at this point than they have in some time.

I’ve spent a chunk of time over the KMC holiday break (KMC usually keeps enough scheduled holidays in reserve to shut down for the week between Christmas and New Years) getting some progress on file management tools I’ve been playing with for some time. Hoping this time that I’ll get some completed tools running to assist in managing the current sprawl of files on my machines here.

I’m also hoping to get around to some real VR coding this year. I’ve had an HTC Vive here for some time. This year its time to lay down some code and play with this thing’s capabilities in a real way. I expect Unity will likely be a reasonable platform to build things on. I’m also expecting to put more time into learning blender and improving my drawing skills to support the effort. Time will tell where this might go, but there’s plenty to play with.

I’ve poked at VHDL a bit over the last year. I have a break-out board with a Xilinx FPGA on it in my drawer here. I’m not sure whether any more work on this front will happen this year as I expect other priorities to dominate…but again, time will tell.

I also expect to get back to doing more photography. I’ve fallen out of the habit of taking pictures just for the sake of making pretty shots. I need to spend a bit more time in the coming year making art in addition to building code and learning tools…need to find a balance here as with all things.