Posts

NVidia AI Studio Workbench is a containerized ML playground

Image
NVidia AI Studio creates and manages containerized ML environments that isolate ML projects on local and remote machines.  You no longer have to switch environments  or remember which version of Python or Anaconda you are using in your global machine environment. NVidia simplifies the initial configuration by providing predefined image definitions containing Python, PyTorch and other tools to be used with or without NVidia Graphics cards. The actual development is done via browser-based tools like JupyterLabs notebooks. Workbench spins up local proxies that port forward into the development container. See videos below NVidia Workbench runs in a WSL instance NVidia workbench runs in its own WSL instance.  Each project runs in its own Docker container.  You can look at the NVidia main WSL instance by opening a shell into that WSL instance. The following command can be run in a Windows terminal window. wsl -d NVIDIA-Workbench NVidia projects live in the WSL instance in   /home/workbench/n

Install and use 'htop' when the Linux 'top' command isn't wide enough or is too hard to read

Image
I was trying to troubleshoot an issue on an NVIDIA AI Workbench WSL instance and the top program didn't show enough information.  It was hard to read the monochrome output and the command section was too narrow to tell me the full program launch commands with all the parameters.  The NVIDIA VMs had htop  installed which colorized pieces of information and displayed at full widescreen width. Installation htop on Ubuntu Install with apt apt update && apt install htop in my case sudo apt sudo apt update && apt install htop   Installing htop in a WSL Instance (Ubuntu) Find the WSL instance wsl -l -v Shell into the VM using the wsl command wsl -d <wsl instance name> Install htop sudo apt update && apt install htop Installing htop in a docker desktop WSL instance (Alpine) I wanted to see what was happening in the WSL instance that runs my Docker containers to see the CPU load and process details. Shell into the Docker Desktop wsl instance with  wsl -d docker

Cut a model with Prusa Slicer and put it back together with dovetail joints

Image
The Prusa Slicer supports a couple different patterns for cutting a model into pieces and then joining it back together after the print. I wanted to print a sword that was too large for my printer.  It needed to be in 4 pieces.  The Prusa Slicer supports cutting a model using an infinite plane and joining those back together after the print with plugs, snaps, dowels, or dovetail joints.   The dovetails work great but need different reinforcement and printing settings than the plugs or snaps. The standard planar cut The standard cut is "planar" or a flat cut across the piece.  This is a pretty common way of cutting a figure to split printing or for some other need. The slicer "Add Connectors" button brings you to another screen that lets you size the connectors that will join the two pieces. You can place a connector anywhere on the cut line by clicking on it.  The geometry of the connector is specified in the panel. Dovetail Cut You can instead try a dovetail cut th

Demonstrating bidirectional messaging between Flutter and a hosting web app

Image
We're modifying the sample Flutter application to demonstrate bi-directional messaging between the HTML/Javascript and the Flutter code. The sample Flutter counter app is embedded in a web page. It communicates with Javascript via browser window messages. Demonstrates messaging Flutter to the web app via window messages whenever the counter increments. Demonstrates messaging from the web app to Flutter whenever a button is pressed on the HTML page. An "increment" message is passed to Flutter via the browser window messaging which causes the Flutter app to increment its counter. Show me the code Extracted snippets can be seen by scrolling down on this page. https://github.com/freemansoft/flutter-embedded https://github.com/freemansoft/flutter-embedded/tree/main/v1 Video on Joe's YouTube channel The videos are always more expressive than anything I would write here. Demonstration and overview Demonstration and code Flutter Initiated message flow Diagram used in the vid

Titles matter when they give you a seat at the big people's table

Image
A title acts as a credibility and conversation gate for enterprise communication and decision-making. Senior management expects to participate in meetings and make decisions with people at their level or, one below. Meaningful two-way skip-level communication is often rare. Feedback and input are filtered by the title and role of the person making the request relative to the person receiving the request. This applies across organizations as well.  "The business" often engages their counterparts at the same level effectively cutting off senior contributors.  Conway's law for Titles? The Impact of Title on Impact I'm talking about the title itself, not the job level which drives pay and rating bands. The " Director " level is the first real breakpoint for this.  Inter-org networking happens at a job title level where people attend the same events or training.  Companies often create decision-making groups, hold off-sites, and do major planning at the Director

Organizing Flutter for standalone and embedding

Image
The flutter world is pretty straightforward if you are building new multi-channel applications. You can probably leverage 90% of the same Flutter/Dart code across your Native mobile and web applications. Flutter's out-of-the-box project organization may work with little modification. Enterprises get a different experience when they already have iOS, Android, and web applications on different tech stacks with overlapping functionality.  Enterprises change their tech stack by incrementally replacing native or javascript functionality with Flutter modules.  The Flutter default project structure must be recast in this situation. Organizing Flutter for Standalone and Embedded applications on YouTube The rest of this article is converted in greater depth in the video.  The content exists here for search optimization and will be updated over time. Default "greenfield" organization This is the project structure for a new standalone application that can be deployed as web, Android

Breaking Down the House - I mean Flutter Projects

Image
Flutter makes it easy to create code that can be deployed on web, mobile, or PC-type native applications.  The Flutter templates are the perfect starting place in a greenfield scenario where you don't intend to embed Flutter in another application.  The default templates don't work as well when you want to drop your Flutter code into existing applications written with other tools while at the same time supporting standalone development apps or test jigs. Here is my opinionated view on organizing code if you are building a simple application that works across channels and that may be embedded in existing applications on some platforms. Video Breaking down the Flutter project structure on YouTube The Various Flutter Directories Flutter maintains or creates various directories based on your target environments. Flutter supports having multiple target environments in the same project.  It has an opinionated file structure that prescribes where platform-specific / non-flutter pieces

Running Android Apps on Windows with the Bluestacks Emulator

Image
Microsoft's Windows Subsystem for Android is dead but you can still run Android applications on Windows 11 with the Bluestacks Android emulator. Demonstration Here I use the Wyze Android application to watch a 3D print in progress. Software and Hardware used in this video Site:  https://www.bluestacks.com/download.html Version: Bluestacks 5 Emulator Variant: Android 11 Windows 11 Ryzen 7 5700G Note: Bluestacks does have an advertiser pane to the left of the emulator that is not shown in the video Revision History Created 2024 05