Posts

Showing posts from 2023

FSGroupWare - a shared NextStep whiteboard used by the 1993 SM1 Hubble Servicing Mission

Image
Seeing your app electronically distributed in the Electronic AppWrapper was a big deal back before the internet even though the ecosystem was so tiny at that time. Maybe because it was so tiny at that time. I had a tiny app, really a demo, and was super excited about it. The one tiny app was used in a tiny way on the Hubble repair mission which was awesome for Nerd Joe. I had forgotten about it until seeing Jesse Taylor's LinkedIn Post Astronauts changed out Hubble Telescope hardware during a space walk.  Someone at NASA wanted a digital shared whiteboard with drawing capability.  Astronauts could take and transmit pictures to Earth. Multiple sites would examine the same picture and share notes or markup.  They had a couple NeXTStep machines running FSGroupWare.  Displays were 1120x832 and either 2-bit or 12-bit.  I was on call but never heard from anyone. I want to believe that is because they used it and it worked flawlessly. It was a tiny piece of a cool mission and one of the m

Commercial Chef CCD100W6 Dehydrator plus Rubbermaid Commercial 6-Quart Storage container for 3D filament drying

Image
This is yet another example of how you can convert a home food dehydrator into a filament dryer.  CCDW100W6 + Rubbermaid Commercial Storage Container This storage bucket fits right on top of the lip of the trays or the base.  It does not fit over, outside, or inside the lip. I like this bucket because it makes for zero air gap and because it was a lot simpler than printing a bunch of extension pieces. The bucket does get narrower at the bottom so you can't stack spools all the way to the top I picked this lid because it should be relatively heat resistant having been created for food items including hot liquids. Two Inland 1Kg spools fit in the dehydrator with this tub as a lid. I only dry one at a time. The hot air actually blows up through the centers of the spools.   I'd recommend using at least one or two of the dehydrator trays. You want to make sure you have a passthrough to get enough flow to get the air back into the heater at the base. You don't want to overheat th

Companies can punish those that buy in to transformation

Image
Companies can accidentally teach people that being "all in" on transformative efforts is risky and potentially career-limiting (CLM).  They do this because joining a transformation or reshaping puts those same people on the "most likely to get laid off" list when the company's senior leadership changes direction. This behavior flips the risk-reward decision process by rewarding those that keep their heads down and those that "wait out" any changes.  Passive resistance or inaction is more profitable than commitment. Transformation initiatives spin up when companies recognize the need to change. They organize around the transformation as a top priority. This continues until the next prioritization cycle with its associated reorganization. The previous priorities including the transformation are de-prioritized. This de-prioritizes skills learned to support the transformation. Companies ramp up to transform and then ramp down those teams punishing those t

Tuning your Personal Technology Radar - Future proof your technical skills

Image
Technology tools, products, and techniques continue to advance.  The industry continually evolves and the people who want to be near the top of the industry must continually learn and grow.  Technology radar is a technique, pioneered by ThoughtWorks, for always paying attention to the technical horizon watching trends, trying to determine future technology winners, and learning more about different technologies as they become more and more likely to become important.  We have more confidence and learn with more depth for the nearer-term technologies.  We have less confidence and less depth for things farther out where we "just don't know" if they will catch on. This is tough because things like language-based ML seemed unlikely to many 5 years ago.  Technologists must continually sweep the current news and trends to determine where they will put the learning and future-proofing investment. Near-term are covered as part of today's work.  Mid-term items are going to hav

We are not here to drain the pool - Companies smother the culture they purchase.

Image
Large companies purchase smaller ones to enter new markets, buy IP or get an edge that they couldn't otherwise make happen.  It is crazy but then they often integrate  those acquisitions into themselves often killing the creative spark and culture that made that acquisition important, to begin with. Does anyone know of a company that succeeds with acquisitions without smothering the culture that they purchase?   ROLM and the pool metaphor that wasn't a metaphor IBM acquired ROLM in the mid-80s. ROLM was a market leader at that time and one of the companies that prided itself as a Great Place to Work (GPW). ROLM created a place with a completely different culture from that of IBM.  There was a story that IBM showed up to the first all-hands meeting with the employees and said  We are not here to drain the swimming pool. IBM then went on to do everything they could to make ROLM conform essentially draining the pool that didn't fit their model. IBM moved its people into ROLM b

entitopia - a Python tool that for loading, customizing and automating indexes and data loads into Elasticsearch

Image
ElasticSearch is an awesome extensible text search engine. It provides methods for loading data, customizing the data, applying analyzers, changing search weightings, and enriching data by merging subsets of multiple datasets. We can merge pieces of different datasets (indexes) into customized indexes to meet our data analysis needs.  We want to do all of that in a repeatable and automatable fashion with some level of flexibility.  The Python code lets us define pipelines that support multiple steps and customized operations.   This diagram shows a 3-step pipeline that represents data being loaded into two indexes (1,3) with an enrichment and resource manipulation step (2). Each step is driven from a config file that describes the phase processors and other configuration information.  {     "steps" : [         {             "name" : "doctors-clinicians" ,             "phases" : [                 "index-create" ,                 "in

RTO and a return to office hostility and micro-aggressions

Image
The office is a hostile environment for a lot of people especially if they don't totally fall into the majority behaviors, culture, appearance, or stereotypes. The Work From Home (WFH) shift, during the pandemic, made these people's lives better.  Post-pandemic management is calling for a Return to Office (RTO) to  foster corporate culture and accidental communication .  Return to Office  is sending people back to a place where their work is often less important than other factors more subjective factors.  Some communication is strongly negative and unwanted.  Executives and old line managers are pushing for  Return to Office (RTO).  They rightly call out the advantages of accidental communication and the higher bandwidth decision-making.  I suspect that we will find that the biggest advocates are older, lighter, and more male than those asking for more flexible working relationships. The people calling for RTO either don't understand the side channel stresses of being in

Baked-in Runtime Falure Identification and Remediation

Image
Web and other API-based applications are made up of some set of services, data stores and compute dependencies or partner business systems. We need some way of continually monitoring the components in isolation and in situ so that we can have automation repair or heal certain types of problems. Different control plane components have different requirements for the components that they manage. This means the instrumentation may be subtly different, shallower, or more detailed in order for the different control planes to take action for their particular needs.  Health checks are one technique for determining the current health of a component. They are in-service test endpoints or very specific external code that exercise some capability of a specific instance of a component service.  Each control plane or remediation touchpoint needs to be examined to understand what their actual area of concern is. This is refined into a set of health checks. Then the problems that can be identified by

Great teams are like woodchippers. We need to keep the wood stacked next to them to keep them fed.

Image
I've seen plenty of places where they avoided doing the repetitive work it takes to make sure that new tasks were ready to consume. They threw down work items in front of a team and told them to take care of it. This means that team didn't work at full speed during that time and missed the opportunity for some other incremental deliverable.  Great teams are like woodchippers.  We need to keep the wood stacked next to them to keep them fed. Agile has this notion of Definition of Ready, a set of criteria that must be met before a work item is ready to be picked up.  That DoR varies depending on the scope of the item, programmatic, vs quarterly vs individual task. The DoR is a checklist of criteria or check boxes that you need to satisfy in order for a team to pick it up and be successful in a short period of time.    There are two hard times when building a cadence in a project.  There is the initial time when you think you are going to just wing it and be successful where you st

Python Logging in Color

Image
Every Python programmer still using print statements should up their game and migrate to the Python logging module. That module lets you filter output based on severity settings, lets you send the output to different destinations, and lets you format and structure your output.   This formatting ability lets us create more regular and human-readable output.  A classic developer experience use case for this is to color code the output by severity level.  The following output shows 3 different logging levels in three different colors, INFO, WARNING and CRITICAL. The same output also shows an arrangement that includes: time formatting, module name, level and a logging message. Show me the code! We only need 2 lines of code     root_logger = logging . getLogger ()     CustomFormatter (). replace_formatter (root_logger) when we use this class derived from a thread on stackoverflow  and other places. import logging class CustomFormatter ( logging . Formatter ):     grey = " \x1b [38;

3D printing a geodesic dome base for a mason jar style firefly light

Image
We are still iterating on Mason jar firefly lights.  We wanted more light and the most obvious way to do that is to invert the jar so that light shines through the base of the jar.   I have zero CAD skills and only basic tools like Microsoft 3D Builder. This means I need to mix in publicly available components for any complicated shapes or surfaces. I resized the same dome and thinned it out by creating a sphere slightly smaller than the dome and then subtracting that from the dome. I then took a threaded model and inserted it through the top of the dome.  and extruded a hollow box into the back of the unit for the battery box.  The item at the right is the result.    Previously seen in Joe's modeling app A previous article https://joe.blog.freemansoft.com/2023/03/3d-printing-battery-box-holder-for.html was about printing a battery box that fits inside the mason jar.  It was simple but wasted much of the light that went through the bottom glass. The domed shape with the perforation

3D Printing a battery box holder for a mason jar style firefly light

Image
We put together some firefly light jars for some accent lighting.  The light is an LED string dropped into a jar powered by an AA battery pack.  We originally just dropped the whole package into the mason jar. Using them without a cover was kind of cumbersome because you had to reach your hand into the jar every time you wanted to turn them off.   I found a plan on Thingverse and adapted it to better fit our needs and battery pack.  The design attached the jar like any of the two-part lids.  We just drop the lid part and retain the threaded attachments. The Plans - The Video and All That This article as a YouTube video  STL files can be found at https://www.thingiverse.com/thing:5928345 It looks like the Ikea lights we used are the  Ledfyr Standard Mason Jar In Use - On the Jar Drop the string of lights into the jar.  Slide the battery pack into the slot at the top. Push the wire into the slot on the side of the lid.  Insert the mount with the batter pack into the jar. Screw it down wi

Data tokenization formats and other behavior issues like equality and fidelity.

Image
PII tokenization is a way of protecting Personally Identifiable Information (PII) with similar impacts as field-level encryption but without the overhead of key management or rotation.  Tokenization and Encryption both have an impact on data equality checking inside applications and on the fidelity of the data. Plaintext data can be searched and matched us case-sensitive or case-insensitive techniques. Tokenization and Encryption make that impossible because the data is transformed into a form where the case and punctuation are embedded in the data blob.  We can transform the data to a canonical form prior to tokenization.  That makes equality matches easy but makes it difficult to return the originally formatted value because the token/encryption had to same case or character set prior to tokenization in the source data. Video Presentation  Slides and Speaker Notes Slides are provided here for Video reference. Speaker notes to be added Speaker notes to be added Sp