Posts

Showing posts from 2024

Using OpenTelemetry to send Python metrics and traces to Azure Monitor and App Insights

Image
Microsoft has updated its Python libraries that let us send 3rd party library invocation metrics and traces and application-specific custom metrics and traces to Application Insights.  Their OpenTelemetry Exporters make it simple to route the standard Python OpenTelemetry library observations to Application Insights. You bootstrap the Azure config and credentials and then use standard OT calls to capture metrics and trace information. SpeedTest network Metrics in Azure using OpenTelmetry A couple of years ago I wrote a program to record the health of my home internet connection and store that information in Azure Application Insights. I did this with a Python program that leveraged Microsoft's OpenCensus Azure exporter.  That library is becoming obsolete with the move from OpenCensus to OpenTelemetry.   That project has now been ported to Open Telemetry!  It involved 6 hours and 40 lines of code that was preceded by 20 hours of whining and internet surfing. The hard part was figuri

T-shirt sizing - Estimating workload and capacity without false precision

Image
T-shirt sizing is a great way of estimating the relative size or level of effort of a set of tasks. Effort and cost discussions are significantly easier when decoupled from hours and dollars. It lets people focus on the problem definition and possible approaches without getting hung up on absolute values. Size some work items relative to each other. "This one feels maybe twice the size of this other one".  Bin the sorted items in arbitrary groups (T-Shirt sizes) Small, Medium, Large, etc. based on the amount of work or complexity.   New items are sized the same way when they are first introduced. They are compared to the existing backlog and slotted into the buckets. This process gives you a feel for work and relative complexity without resorting to false precision for specific days and hours. Velocity and Capacity can be extrapolated later after tasks of various sizes are completed. Start with relative sizing and then iterate closer to absolute sizing as you know more. Peopl

NVIDIA Broadcast - Eye Contact - No more looking down in videos

Image
NVIDIA added a new beta feature to NVIDIA Broadcast that manipulates the speaker's eye position to make it appear as if they are looking at the camera instead of the prompt or contact.  It isn't perfect but it really helps.  You can see the effect in the two pictures below. This has been around for a while but I never noticed. NVIDIA added support in Jan 2023.  Camtasia added support for NVidia Broadcast in Camtasia 2022 update 2 or 3. Virtual Camera works with other programs like Camtasia The NVIDIA broadcast acts as a virtual camera that can be used in other programs like Camtasia 2022.  You'll want the latest version of Camtasia Revision History Created 2024 02

Want to run a local LLM? How much memory does your NVIDIA RTX have?

Image
Want to run LLMs locally? The new NVIDIA  Chat with RTX   requires 8GB of VRAM. Other language models require even more.  You can use the Windows utility ' dxdiag ' to see how much memory your NVIDIA RTX card has. Windows-R or click on the Windows key and type in the search bar. Enter dxdiag Click on Display or in my case Display 1 We're looking for the amount of  Display Memory (VRAM)  I have 12,086MB or 12GB so I'm good to go. Machine Learning models suddenly made me care how much VRAM my NVIDIA graphics card has. I can never remember the exact model let alone how much VRAM it has.  Now I have this handy article to remind me how to find the numbers I need. Vido Revision History 2024 02 created

Supporting command line arguments in Dart programs

Image
Dart programs, really all programs, are either hardcoded against certain targets and configurations or they configurable at startup. Not sure about you but the word "hardcoded" always sounds bad.  The most common way of providing configuration information is probably: Command-line arguments Environmental variables Properties files or other accessible storage Properties services The approach you pick depends on the nature ephemeral nature of the program, the environment you run in, and if the configuration can change while the program is running .  Sometimes you use a combination, one configuration method at bootstrap, and then a different one as the program continues running. In all command-style programs, I've found that I need some way to bootstrap the process.  It almost always has command-line arguments or environmental variables. Environment variables are great but can be a bit opaque depending on how the program is run. My go-to is to include run-time argument suppo

Creating Service Accounts for programmatic access to Google Drive APIs

Image
Google Drive is one of those cloud technologies that democratized cloud access to data storage. It lets you securely push all kinds of data into and out of the cloud via Google-provided APIs. APIs and documents are bound to permissions, roles, and identities. Programs accessing Google Docs require credentials, preferably least-privilege credentials, which exist just for a single program's needs. Google IAM supports Service Accounts that are not tied to any human .  They can be enabled and disabled without impacting individual users.  Accessing Google Docs via API means you have to enable  Google Drive API  in a project, create an identity/credentials for the program, and then give the identity access to the docs or the API.  There are plenty of good tutorials that walk you through setting up an account. They are often light on the overall process or how the steps tie together.  It can be confusing the first time or 10 you go through it. Google services are enabled on a per-project

Flutter mobile - certificate and SSL exclusions for development domains

Image
Flutter mobile development gets twisty when working behind corporate firewalls and with self-signed development certificates. We look at a bit of code that can be used in debug builds that sets the emulator/simulator proxies and disables cert checks.   Example Code See  fs-dart-tools on GitHub  for the latest versions of this code. You can use this sample code wrapped in an `if (isKDebug)` when running Flutter on mobile.  It lets you exclude your self-signed certificates for your internal domains while leaving certificate checks enabled for production and external domains.  The code also sets the proxy when running in the Android Emulator or the iOS Simulator.  Setting the proxy is optional, enabled when you pass in the proxy port.   import 'dart:io' ; /// /// Ignores certificates in developermode for limited set of domains /// Simplifies development in corporate self signed environment /// Configures the emulator or simulator proxy if passed proxy port. /// Assumes there is

Building your brand - Being visibile in a cross ranking environment

Image
Your personal brand and reputation are the most reliable tools for succeeding and being perceived as succeeding in an organization. A lot of people rely on their nearest manager to do the heavy lifting. That can become a single point of career failure. They may move or be moved. They may not have the personality for ratings combat. A better plan is to help them help you when it comes time for new opportunities, promotions, and compensation.   Cross-group rankings are objective, in theory, but are really a cage match of discussions between management where they put everyone into a pool and rank them against each other.  This means management speaks up about their people to increase perception and question other management about their staff to create doubt about their people's relative position. The best way to come out on top of this is to have strong management and to be visible to others to create familiarity before the process.  This is especially true in environments where the p