• It’s not just Radio, it’s Meshtastic!

    My latest interest in microcontrollers has me learning all about Meshtastic mesh radio devices.
    The Meshtastic website puts it concisely – “An open source, off-grid, decentralized, mesh network built to run on affordable, low-power devices”.
    A lot to unpack right there but definitely within my Venn diagram of interests. As I dig in to this niche community of RF enthusists I realize there is almost limtless applications, reason for use, and areas to expand or learn about.

    Essentially these are text-based walkie-talkies operating on an open band of radio frequency that go much farther than WiFi.
    They bounce or “hop” off other similar nearby devices on the same channel, each called a “Node” to travel great distances in some cases.
    If you have two nodes, and they are close enough to communicate, you can send text messages or other string data between them.

    Configured correctly that message can be encrypted or you can choose to chat on the public default channel. The Citizens Band Radio – “Breaker Breaker 1-9”.

    Some nodes have screens, GPS or other sensors but much of Meshtastic can be used or configured through a phone app UI.

    I have used LoRa, or Long-Range radios on microcontrollers in the past but that involved sending and parsing raw packets with the RFM95 series of radios. I enjoyed seeing just how far I could transmit and recieve data. (Not that far)

    Meshtastic is messy but moving quickly. Old documentation or tutorials online might not reflect the latest UI or experience. These radios are not inherently reliable and there are many variations.
    Your experience will be directly related to your device’s functions, app version, the number of Meshtastic nodes in your area, distance, and line of sight to another node.

    I started in the mountains with no other users. But I had two radios so I could ping each other and get an good understanding of how it all works. Occasionally another node will show up on weekends when tourists are traveling into town.

    When I travelled into Vancouver, driving with default notifications on Android, I learned that “New Node Seen” notifications were a bad idea.

    Not enough nodes or too many nodes, each has it’s own issue. Dense populations such as Vancouver have switched modem settings from the default to get better experiences.

    On top of the radio hardware and phone app there is also an optional connection to the internet using MQTT. Maps, dashboards, and every other conceivable web based project has used MQTT to connect the data from the radio network such as location, radio type etc.

    Antenna design, 3D printed enclosures, solar and battery setup, different sensors or microcontrollers… You can see that there is plenty for gear-heads, hams, EE’s, and software developers.
    The Meshtastic Discord is super-busy with lots of info flying. Good to lurk and look back to see related issues and discussions.

    Recent changes mean less data or telemetry being pushed out from each radio by default so you might not see any others right away. Given some time you will eventually see other nodes if they are in range.

    With the use of SDR, or Software Defined Radio, you can also view this radio communication in real time. In North American this is in the open 915MHz frequency.

    Each country has it’s own rules so be sure to check local regulations.
    If interested, make sure to buy two devices to start.
    10-4 good buddy – OVER

  • Old man shakes fist at cloud animation

    My Arduino UNO Q arrived today and I eagerly unboxed and admired the board layout. The north-south resister “cities” contrasting with the led matrix 45 degree slant. New chips but all of the pin layout of classic Arduino boards. Lots of business going on underneath which is also new.

    Now if you haven’t aready, please read my previous post.

    Sucks that the first thing you need to do is read another article.

    Well..

    The first thing Arduino App Lab asked me to do was flash the board after installing a CLI (Command Line Interface) tool. This is not just the update software upon arrival we’ve all come to experience. That would also come later. This requires female to female jumper cables to short two pins. Not exactly beginner friendly.

    I understand these are early days and there will be some bumps to get user friendly software and hardware.

    Unfortunately I choose “Get Flasher Tool” instead of “Skip” which I abandoned, then got stuck in a set-up loop. After restarting App Lab App, I now had a choice between two boards? Because I was stuck after setting up the Wifi, it showed two UNO Q boards. “USB” and “Network” being the only difference.

    Now the update… 15 minutes wha?

    Board name however cannot be the default…

    errr U”NOpe”Q.

    Way too much friction during onboarding for my liking.

    I did manage to get in and duplicate the Weather demo, update the location string found on the Arduino side of things, and get it running.

    Some interesting stuff with this unique Python/Arduino setup is that it uses a newer version of Python than I currently have installed when it creates a virtual environment.

    The most annoying thing right now is the Arduino App Lab 0.1.28 for Mac window blink. It randomly looks like the window is gaining and losing focus. Purple – Grey, Grey – Purple etc. Some mouse hover seems to trigger it briefly but not reproducible.

    I tried to take a look at App Lab source seeing as it is open source to see if I could contribute in any way but found a bunch of TypeScript and SCSS.
    Fine for someone who hates the web and builds “Apps” not “Web Pages” but not my monkeys, not my circus.

    I’m a bit more familiar with UI now but I think the Learn > First Setup would be a good onboarding option during the users first UNO-Q connection.

    My real vision for this board will be to combine the use of low power microcontroller to trigger more powerful Linux abilities.
    “is there a face? > Run Facial recognition” etc.
    Sensors running on microcontroller can be tied directly to webserver. Lots of ideas with this dual combination, each with their own strengths.

    Next steps will test some I2C sensors.

  • Qualcomm Acquires Arduino

    At todays “blink to think” event a new Arduino board was released, the Arduino Q, however perhaps most important was the announcement that chipmaker Qualcomm had acquired Arduino for an undisclosed amount.

    After watching the entire two hours of announcements I’m not crazy about this but I remain cautiously optimistic.

    My first Arduino was the 2009 Duemilanove followed by multiple other boards, Uno R3, R4, Mega, leonardo, lilypad, Mini, Sense, etc.

    I still have my first breadboarded “Arduino” while getting really into electronics in about 2010.


    Full upfront disclosure: At the time of writing, this author has a very minor holding in Qualcomm shares, purchased in April 2025, shortly after their acquisition of Edge Impulse.

    You see, for years I have been a huge fan of both Arduino and Edge Impulse. I truly believe in AI “at the edge” or on device. TinyML as it was once known ran on select Arduino boards, and has expanded to larger more capable models run on beefed-up dedicated accelerator hardware as well. Large or small, Edge Impulse makes collecting data, training small AI models, and running inference easy. It runs on a bunch of different boards/chips, and that has not changed so far after 6 months under Qualcomm. The founders remain to this date, and this is what I hope for Arduino.
    The Edge Impulse service had been built into the Arduino IDE a while ago in a slick software white labelling which is why todays news seems to make sense to me.

    And while this reads as huge chip conglomerate absorbing a beloved open-source hardware company and community, they didn’t need to buy. They could have just taken, like many clone or knock-off arduino boards, it’s all open and free to do so.

    Some of the community reaction has been negative. Phillip Torrone aka PT of Adafruit has written about, advocated, and contributed to open source hardware for years. There may be literally no one more qualified to talk about open source.
    Recently critical of Arduino’s closed source “Pro” boards and VC funding, he writes about “Turning Maker Dreams into Shareholder Value“. With hints of 2014 documentary Print the Legend as a recent blueprint, I really respect Phil’s views.

    Here is where I feel there might be some hope…

    First, Edge Impulse has so far been allowed to continue independently and continue to support competing silicone.

    Arduino vows to continue to support and add other future vendors.

    Today’s hardware announcement from Arduino runs Debian Linux, runs Zephyr RTOS. The Qualcomm accelerator chip supports OpenGL ES. Qualcomm has a Director of Software – Open Source. The CEO Fabio Violante says there is Gerber files and schematics coming soon for the Arduino Q.
    It supports Qwiic I2C connection made popular by both Sparkfun and Adafruit.

    They seem to really align with many open source initiatives at this point.

    Sure this could change at any time. Time will tell.

    I’ve got two on pre-order.


    Like I said, at this point I’m cautiously optimistic.

  • Coding with Claude Code

    Claude Code Intro

    Vibe coding, code assistance, no-code, call it what you want. “AI” coding tools are likely being used to produce a good majority of software today. And for good reason as they have come a long way in a short time. A popular article written this week titled Claude Code is a Slot Machine comically describes the mechanics.

    This is my experience with using Anthropic’s Claude Code tool, having paid a month on the Pro Plan recently.
    I have prevously used Github Co-Pilot, chatted with OpenAI’s Chat-GPT, used Google AI Studio with Gemini, and many others. In fact, in many cases I use multiple AI models or companies to compare the output of the same request or “Prompt”.
    Peer code reviews if you will.

    What is Claude Code and how it different from Chat GPT or CoPilot?
    It essentially takes action from the terminal to create/edit/delete whole projects from the command line interface. It can add proper Classes and Functions, fetch APIs, adjust interfaces, import libraries, even perform Git actions pushing code to production with just a suggestion. It does this all the while it enthusiastically replies to your prompts. “Perfect!”, “That’s a great idea!”, “You are the best!”.

    Creating from the Microscopic and Macroscopic level offer similar amazing orchestration.
    At the 10,000 foot level it’s pretty cool to see a coding agent throw together an entire working framework such as a Python based Django with Python, HTML, CSS, and JavaScript. It’s also quite useful to refine algorithms, shuffle pixels on a display interface, or change slight webform behaviour.

    Having domain knowledge helps immensely. Prompting a LLM or AI Agent to do your bidding can be really successful if you know what you want. Feeding source information such as examples, schematics, charts, PDF’s etc will get you the most accurate return.

    You get an immediate satisfaction when these coding tools save you time creating the boilerplate or framework but notice it takes more time to refine or steer the results. Recently announced Subagents make maintaining or pegging down specifics a lot easier.

    If you are a stickler for anything, having a subagent to focus on that detail can be convenient way to maintain quality assurance. A Brand Standards Design subagent for example could refer to a design document and catch any infractions as updates are made by Claude. I giggle to think that in the future having a “Seat at the Table” might just be a subagent. “Marketing-subagent had a great new campaign idea but Legal-subagent won’t allow it.”

    As for the slot machine reference, there is the repeated action-then-wait command prompting. Tokens ticking by and clever synonyms Claude is “running”. Followed by win after win.

    I really do appreciate the Todo lists Claude churns out to detail what it will perform next. Showing the work may be where some trust is formed. Letting you know it’s only going to do these four things. Checking the boxes as it goes.

    Error recovery and creating self-tests is quite impressive. Hardly ever did it seem to trip up. However at some stage I imagine vibe-code may be difficult to debug if unfamiliar.

    It’s impressive to see progress specifically towards code generation quality. With MCP and the ability to control other tools, I can see Claude performing more and more custom actions in the future.

  • Winter at the Beach

    A couple more pictures from the Nikon FM with Nikkor 50mm f/1.4
    This time using Ilford Delta 100 film, developed in Ilfosol 3 for 5 minutes at 20°C
    Fairly rare for snow in Vancouver to stick around very long.

    A black and white photograph of a snowy beach in winter with a city in the background.


    Trees really are the lungs of the earth.
    The negative I developed looked like lightning. I like this one.

    A black and white photograph of two trees in winter with vein-like leafless branches.


    I’m a bit slow to shoot a whole roll of 36 and develop it so it feels out of season while currently enjoying Spring.