node

Realizing Meshtastic's Promise with the T-Deck

Meshtastic—a simple off-grid mesh network used to transfer short messages—is a neat bit of tech, but until recently, most development has focused on little nodes with or without tiny OLED displays, and a separate phone app or web UI to actually interact with the mesh.

The major use case I have for Meshtastic is backup comms—when cell networks and physical infrastructure may be unavailable. In those conditions, I don't want to run my full computer, or even a full smartphone, just to communicate long range via text.

Enter the T-Deck:

Lilygo T-Deck running experimental UI Meshtastic firmware

Getting Started with Meshtastic

After seeing the Meshtastic booth at Open Sauce, my Dad and I thought it would be fun to learn more about the low power radio tech by getting our own radios and experimenting.

Meshtastic nodes

Then, we were contacted by Simon from Muzi Works, and he offered to send a few units of R1 and H1, his company's pre-built Meshtastic nodes.

What's a node, and what is Meshtastic? Excellent question.

What is Meshtastic?

Simply put—and copied shamelessly from the official website:

An open source, off-grid, decentralized, mesh network built to run on affordable, low-power devices

Meshtastic nodes are often tiny gumstick-size PCBs with a LoRa radio module, a couple buttons, a tiny OLED display, and a USB port.

Deploying a React single-page web app to Kubernetes

React seems to have taken the front-end development community by storm, and is extremely popular for web UIs.

It's development model is a breath of fresh air compared to many other tools: you just clone your app, and as long as you have Node.js installed in your environment, to start developing you run (either with npm or yarn or whatever today's most popular package manager is):

yarn install
yarn serve

And then you have a local development server running your code, which updates in real time when you change code.

But when it comes time to deploy a real-world React app to non-local environments, things can get a little... weird.

For most modern projects I work on, there are usually multiple environments:

Moving Server Check.in functionality to Node.js increased per-server capacity by 100x

Just posted a new blog post to the Server Check.in blog: Moving functionality to Node.js increased per-server capacity by 100x. Here's a snippet from the post:

One feature that we just finished deploying is a small Node.js application that runs in tandem with Drupal to allow for an incredibly large number of servers and websites to be checked in a fraction of the time that we were checking them using only PHP, cron, and Drupal's Queue API.

If you need to do some potentially slow tasks very often, and they're either network or IO-bound, consider moving those tasks away from Drupal/PHP to a Node.js app. Your server and your overloaded queue will thank you!

Read more.

tl;dr Node.js is awesome for running through a large number of network or IO-bound tasks that would otherwise become burdensome at scale using Drupal's Queue API.

Changing RSS Feed item links (and other data) in Drupal 7

You can do a lot of great things with field display in Drupal 7's 'manage display' tab for a content type. You can control the order and label position of each field attached to a node type in that tab for Full node displays, Teasers, and RSS displays (or other displays you set up).

However, there's no way to change certain aspects of a node's display inside an RSS Feed, such as the 'creator' tag, the 'link' tag, or the 'title' tag. For a news aggregation site I run, I wanted to modify the <link> tag when displaying 'story' nodes, and make the link tag give an absolute URL to the original source instead of to my drupal site (so, instead of http://www.mysite.com/node/12, it would go to http://www.example.com/original-story-url).

A lot of blogs also use this kind of format for reposted blog items (such as Daring Fireball), so users go straight to the source when they click on the title of an item in their RSS reader of choice. My method below can be modified to conditionally change a link if a field has a value (say, a 'RSS absolute URL' field or something like that).

Displaying a User's Signature on a Node Page in Drupal

A project I'm working on required a user's signature be displayed on the user's blog posts (only on the page—not in blog teaser listings), and after much wrangling, I figured out how to put the 'Biography' (one of the user profile fields) into the nodes when they were viewed individually.

Here's the snippet (to be placed into node.tpl.php or node-blog.tpl.php):