Category Archives: Topics

Posts on technical topics. The sub-category provides the specific area of interest.

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.

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…

Machine Learning and Feature Extraction

I’ve been doing a bit of reading on machine learning lately as the field shows great potential for making a range of hard things easier.

One thing I have noticed pretty consistently in the books I’ve been going through is that they address the recognizer and statistical side of things in great detail but pass by the feature extraction side rather quickly.

It seems as if this approach misses some of the most challenging aspects involved in making a useful machine learning system. Given a blob of raw data, the identification and extraction of features that are suitable for processing by the ML system on the back end is non-trivial. Most of the sorts of data that I’d find interesting to process fall into this category.

Perhaps I’m missing something here, but it does not appear to me that feeding the entire photograph or audio stream to the machine learning algorithm is the intended approach. I’ll keep reading and sandboxing things (no real sandbox activity on this front yet as other priorities are ahead of ML in my queue). Hoping that I’ve missed something and this is less challenging that it appears from my current perspective.

Finished my quick read of ‘Learning JavaScript’

Came across a few items I had not seen before. WeakMap and the Map and Set types in ES6 look useful. I think I had seen the map, reduce and filter methods on array but had not really considered their usefulness.

There were probably a bunch of other minor items that I picked up along the way. All in all, worth the small investment of time. I learned a few things and can feel more comfortable that there aren’t core concepts that I’ve missed by jumping into the middle up front.

One day soon I’ll likely read through the ES6 standard document. Ultimately that is the only way to hit all of the high points (missing details of products specific quirks, but then that is what the other books can do).

What I really need to do now is put together a small node based sandbox project with a web UI on the front end…

Backfilling on JavaScript…Touching base with the basics

I’ve been doing some deep dives into TypeScript and JavaScript and related technologies. Much of that has been looking at newer features and advanced topics.

I’m now reading through O’Reilly’s Learning Javascript to make sure I’ve covered the basics and pick up any language idioms I may have missed along the way. I expect this to be a quick read as I’m pretty familiar with the language and tools. Once I’m done I should feel good about having filled in any gaps that may have been present previously. Continue reading Backfilling on JavaScript…Touching base with the basics

Struggles with Ubuntu

I have Ubuntu 17.04 installed on one of my NUC machines as a place to run Linux code. I haven’t used it in a while and now I’m finding that it fails to connect with its apt-get repositories and cannot update to 17.10. I’ve done enough google digging and come up with nothing convincing and so I’m on the cusp of blowing everything up and loading it clean.

I think I may just go with the LTS version 16.04.3 as I expect that will have longer useful life and be easier to upgrade to version 18 when it drops. I’m mildly tempted to go to 17.10 and just accept that upgrades to Linux are really clean installs. Not thrilled with that as it means reinstalling everything else each time but I’m finding that I don’t do enough Linux work to maintain the skills to dig deep and fix the routine issues that pop up.