Category Archives: Daily Blog

Generally a bunch of various small items that come up on a given day. Less focused than other topics, a catch-all…

Looking at CAD Options for 3D Printing

Watching some training sessions for Fusion 360. I’m probably going to finally try to commission a RepRap this winter at some point. A co-worker has a prusa i3 and recommended Fusion 360 in start-up mode (free to use as long as you’re not making significant money) as a good tool so I’m going to see what I can learn about putting things together with the tool.

FreeCad has also been recommended and I’ve grabbed a copy. Fusion seems more capable and so I’m inclined to start there. Blender is also something I’ve played with…more for artistic than engineering work though. It is also on the list, but likely behind a practical cad tool at this point.

As a software engineer, the open source tools appeal quite a bit as they’re a possible place to make enhancements to the tooling over time and a way to look at the internals as well as the UI side. They’re on my list and I’ve grabbed the git repos for both tools but at the moment I’m looking more for an overview of the state of the art rather than internal details and I need to understand what current practice looks like before thinking about new features.

I would love to enable use of my HTC Vive with these tools at some point. Being able to walk around a shape or assembly in three-space and manipulate it would be pretty interesting. I suspect it could make some of the manipulations that are of interest much easier for less experienced users.

Full file ID API in Win32

In order to get the full ID of a file in Win32 the GetFileInformationByHandle  returning a BY_HANDLE_FILE_INFORMATION which contains 64 bits of file ID (and the volume id where the file resides) is a start.

The GetFileInformationByHandleEx  with FILE_INFO_BY_HANDLE_CLASS of returns FILE_ID_INFO which provides the full (potentially) 128 bit file id as required for ReFS.

I’ll likely provide support for both of these shortly, likely using C++/CLI to simplify the interface.

Given these two pieces of information it should  be much safer to clear out duplicate files as various sorts of links and mount points will still show the ultimate file identity properly and avoid deleting apparent duplicates that are really just aliased paths to the same file.

 

More progress on the controller front…

I’ve picked up some representative AVR based boards to supplement the ARM based RPi board I have around the house. Between the two, I expect that a pretty capable solution can be put together. The ARM running Linux and providing high level business logic and user interface while the AVR boards provide hardware level control and real-time ‘fast twitch’ capability.

The ATMega2560 is a high-end device with generous resources in pretty much all relevant areas. It is quite a bit more expensive than the lower tier parts and I’m inclined to look at a finer grained approach initially.

The ATmega328 is the ‘common’ controller in this line. This is the part that powers most of the Arduino line of boards. It has relatively limited resources but with multiple timer/counters and an I2C link should suffice for most of the sorts of tasks I’m looking at. This is a fully featured board, but I have a package of five free-standing boards on the way. These boards run less than $5.00 a piece but have no integrated USB capability and thus need either an ISP programmer or a separate USB to RS232 converter to load with code.
The last three small boards I picked up for sandbox purposes are ATmega23U4 boards. These use the AVR controller that has built-in USB capability. I’m very interested in what can be done with this support as it should allow coding of various sorts of USB devices using the native hardware on the parts.

I’ve had these pololu stepper controller break-out boards sitting around for some time now. They’re destined for a RepRap machine (assuming I ever find the time and budget to finish buying components). They’re H bridge, step and direction style stepper controllers with an Allegro A4988 device. I’m expecting to push these together with a stepper motor and at least see it responding to commands in the near future.

Once I’ve got a stepper running at least a bit, the next step needs to involve more mechanical parts…probably makes sense to get the real RepRap implementation rolling at that point.

I am a bit curious about ARM based possibilities…something like a cortex M0 with a free/open source RTOS running on it. This would certainly allow for more to be done with fewer independent controllers…though the relevant pieces remain to be worked out. I’m suspicious that the RPi SOC is too poorly documented to work here…would need  a lower end, more dedicated part with a board support package for something free and capable…more to come.

Apache Commons Daemon

Pulled the code and built a copy from source. Looks like it doesn’t handle the pre-shutdown flag in its out of the box form. It probably can have the capability added easily enough.

The harder question will be how we interface that functionality to the hosted java code. The hosted java would need access to the message and be able to generate the response that tells the system how long to wait before allowing shutdown to proceed. It also needs access to the win32 function that can request the shutdown be aborted.

Given this code is native C, I’d expect that to be relatively easy.

 

Looking at Java, Windows Services and hosted Javascript

This weekend I’m roaming a bit afield of my normal haunts.

I’m looking at service hosted JVMs in windows and in particular having such a service interact with the SERVICE_CONTROL_PRESHUTDOWN message. Handling this message allows a service to defer shutdown while handling activities that it needs to complete before the actual shutdown processing begins. I suspect it may also allow that service to call AbortSystemShutdown()  in order to cancel the shutdown.

I’m looking at the Apache Commons Daemon package first as it seem to be common, well regarded and reasonably licensed. At first look it doesn’t seem to support the extended messaging from the host OS but it seems like an interesting starting point. Continue reading Looking at Java, Windows Services and hosted Javascript

Just bought some eBooks on Kubernetes

A container coordinator isn’t something that is all that likely to be important to me in the immediate future but given that docker keeps showing up in java spring related tutorials I’m inclined to take a look at the technology.

It sounds as if the docker equivalent has largely fallen flat and kubernetes  is the solution I’m seeing most frequently out there.  I’m not sure when I’ll find time to do more than skim these, but interesting technology is always worth a look…

Surprised that Docker and VirtualBox are Incompatible

I’ve been doing some reading on Spring Boot and Spring in general. Several of the books I’ve been reading use docker containers to provide tools to support the sandbox projects they walk through.

Last night I installed Docker on my small development machine so that I could start playing with some of the examples. I was surprised to find that it uses Hyper-V and that I’d lose access to my VirtualBox VMs if I completed the installation.

There appears to be a ‘toolbox’ version that doesn’t have such issues and I’ll be looking into that sometime soon (I installed it, but I haven’t yet dug into running it).

I have installed the full docker on a machine that I don’t run VMs on and will likely use that one for any experimental coding that needs Docker.

It is disappointing that they chose a path that makes it difficult to share one development box between VM and docker containers though…

Finally Spring Tools is Working all Around

After a bunch of reinstalling of JDK code and messing with environment, the sprint tools suite is back to a working state on my small home development machine.

I’m not sure what fixed the problem but it was a rather strange one. Eclipse and IntelliJ were working normally and the java command line looked good. For some reason the STS IDE wouldn’t find some JDK pieces it expected. I have STS running on three other machines here at home without problems (and with pretty much identical installs).

Glad to have that dealt with though I wish I understood why it was broken and what actually fixed the problem.

Monday morning after some java spring for the weekend…

I spent my sandbox time this weekend bouncing between JavaFX and various java spring topics.

I have pretty much concluded that JavaFX isn’t somewhere I want to spend sandbox time. It appears to be less capable and productive than WPF for local UI work and Angular on Spring appear more broadly useful in the environments where Java reigns supreme.

Continue reading Monday morning after some java spring for the weekend…

Flying home from California

Heading for home after a few days in California for my daughter’s wedding. Going to try to keep up with the C# sandbox projects and fit in a bit of playing with Kotlin and the intellij idea IDE.  I’m thinking that Kotlin looks like a less constrained Java and there is so much JVM code out there that it could be an interesting option in my kit of tools.

Also looking as if I should get my PHP back in shape as this hosting runs PHP and I’d like to do a little single page application game work. As that will need a back end I will need some restful PHP code for persistence and some rules engine logic.