Posts
Rethinking UIs in a world of AI
Last post of 2023!
Adding Hardware handshake in Thermal Printer
I’ve been struggling to get my thermal printer to print bitmaps correctly. More specifically QRCodes.
Pixelator co-written with OpenAI - Part II
This is Part II of my AI written mosaic generator in which I describe the algorithm I used to create the tiles. (Part I is described here).
Pixelator co-written with OpenAI - Part I
I continued to experiment with ChatGPT and my mosaic generator project (a.k.a. Pixelator).
More Programming with OpenAI
My son loves puzzles and Legos. He recently completed one Lego set that kind of combines both:
Rethinking programming with OpenAI
OpenAI released a new version of their API, which (according to what is advertised) is 90% cheaper, faster, and more efficient. I am all for efficiency so I decided to upgrade my implementation from
text-davinci-003
model toChatGPT3.5
A glimpse into the future?
My database of quotes is full of colorful English translations. Most of them are very old. Lot’s of “thee” and “thou”, mixed up with “thy” and “wilst”. The quotes might sound more profund perhaps, but… philosophy is for living, not just for learning….
The button that pressed itself (not)
I recently bought a new (larger) e-Ink display from Adafruit: 2.9” ThinkInk FeatherWing. It comes with the usual SD card, memory and differently from the previous versions with 3 convenient buttons.
Experiments with Arduino Stream class
In my Arduino projects a lot of the ends up being string manipulation. A good example is constructing the response objects for a REST API. This ends up being a bunch of concatenations,
sprintf
, etc.An opinionated HTTP Client for Arduino
There are a few HTTP libraries available for the Arduino platform. I decided against using any of them because:
Experiments with Vestaboard
A few weeks ago I finally got a Vestaboard after a long wait. It is a beautiful piece of hardware. Very well built, super high quality. And it brings memories of standing in train stations and airports long time ago.
Running scheduled tasks in Heroku
Many of my projects often times have a background job that runs on a schedule:
The Dexcom API - Part II
I wrote before about the Dexcom device for continuous glucose monitoring, and how you can use their API to login, obtain
access_token
.A CLI for Arduino revisited
A reader of this blog pointed out that my implementation of the Arduino CLI was using memory sub-optimally. He also wrote my implementation would not work on an Arduino UNO. I don’t have one, so I cannot test it.
OTA Updates for Arduino Projects - Part IV
Continuing with my series on OTA updates for my project, this time I’ll cover building the back-end. The hardest piece was comparing versions (following the
MAJOR.MINOR.PATCH
format). Thanks StackOverflow for some good ideas on how to do it.OTA Updates for Arduino Projects - Part III
In this post of the “OTA Updates” series, I am covering automating the build. Until now, I’ve been always compiling sketches using the IDE. It works great and for this projects, I think the experience has been great, even when my project grew to +30 files.
OTA Updates for Arduino Projects - Part II
A followup of the previous post on OTA updates. The second step is getting the bits downloaded. I added downloading capabilities to the
HTTPRequest
implementation.OTA Updates for Arduino Projects - Part I
Today I started researching options for “Over The Air” (OTA) updates for my Arduino based project. Until now whenever I need to update the sketch I simply connect the board to my computer, compile and upload using the Arduino IDE. It works well, but for a “real” project it would not be practical.
Exploring the Dexcom API
Someone I know is using the Dexcom G6 CGM device (CGM = Continuous Glucose Monitoring). It is a pretty amazing device. It takes a glucose measurement every 5 min without requiring you to prick your finger and using strips. I’m told it is life changing for people who have diabetes and I can see why.
To Proxy Or Not
SSL / TLS support on small footprint Arduino boards like the Adafruit M0 has been somewhat tricky, with missing documentation, rather poor troubleshooting, or both. Perhaps it is just that I have limited knowledge of all the various versions, variations and flavours of TLS/signing algorithms, etc.
Surprises with MFA and Device Flow
As I was experimenting with the SMS Broadcaster, one of my projects stopped working suddenly.
A Broadcaster for SMS MFA Challenges
Many web applications now require MFA which is great to see. Some use time based tokens (TOTP), with application like Google Authenticator to enroll and generate them. Others use SMS messages which are not super secure but better than nothing I guess… Others use a combination: TOTP with SMS as fallback. Very few apps have the sophistication to allow multiple phones to be enrolled on a given account.
A CLI for Arduino - followup
In a previous post I described a simple approach for sending commands to an Arduino based project via the
Serial
interface.Using a Watchdog to fix all issues
My little project has become quite sophisticated now. I managed to code enough to fill 82% of Arduino’s total program memory!
Art and geometry - Building the Auth0 Logo with Nanoleaf Panels - Part IV
A picture is worth a thousand words. So this post is all pictures and no words (6 thousand words equivalent):
A Very Simple Task Scheduler on Arduino
Another turn in my journey building the Stoic Display. I wanted to launch a number of tasks on some recurrence. The most basic one being
showing a quote
.Art and geometry - Building the Auth0 Logo with Nanoleaf Panels - Part III
I was able to make some progress this weekend, my parents were visiting so I enrolled them. We completed the frame:
The story of the invisible CR
While building my Stoic Display I run into an issue that consumed me a lot of time. As it always happens with some bugs, in retrospect it was so obvious that it gets to the point of being embarrassing. All the clues were there in front of me, but I missed them all.
A Simple Command Line Interface for Arduino
In a previous post I described a simple display of quotes using an ePaper and an Arduino board. There’s no interface (keyboard, buttons, touchscreen), so all interactions and configuration must happen through the terminal (via the USB connection).
A Display of Stoic Quotes using Arduino and e-Paper Display
Some time ago, I was experimenting with e-paper displays and built a prototype that would use an API to retrieve a quote (from my favorite stoic philosophers). Because I was calling an API, it was a good excuse to test the Device Flow authentication that Auth0 supports.
Lego Disney Train And Station
A family tradition for christmas / end of the year is to build a large Lego set as a team. This year, I surprised everyone with the Lego Disney Train and Station. It is a cool, very detailed set.
Art and geometry - Building the Auth0 Logo with Nanoleaf Panels - Part II
Now that the basic design is ready, I need to build a base for each light panel. Not every supporting parallelogram needs to be the same. They all need to be the projected shape, but I can vary the height and even “convexity” to make an interesting installation.
Art and geometry - Building the Auth0 Logo with Nanoleaf Panels - Part I
A colleague of mine had a really nice backwall light art and I asked him what was it. It turned out to be a design based on nanoleaf light panels
Loading Express Route Handlers Using Naming Conventions
For a little project I’ve been working on, I wanted to load nodejs modules into an express router automagically, using naming conventions by just having folders in a predefined location.
Notes on TLS connections with Arduino
TL;DR
An IVR for collecting rainfall data
I put together a small app for collecting rainfall information. It is essential to get precise rainfall information in specific locations of our family farm, and the one practical way I found is just to allow people working in the fields to report it back via their phones.
First incursions into Computer Vision
I took a few days off and decided to dive into a completely unexplored domain. With all the hype in ML and AI, I figured I would look into that first.
QRCode on Arduino
For the e-Paper project I worked before I had to generate a QR code. The QR code encodes the login URL. The idea is that you point a phone’s camera to it. Modern phones are configured to scan QRCodes automagically with their cameras and prompt the user to open a URL (the login URL in my case). Pretty convenient.
Experiments with e-Paper displays
Our board member Peter Van Hardenberg got me intrigued on e-Paper displays. So I went to Adafruit to check what was available for the Feather M0. I figured it would be a nice extension to my original printer project, to replace the printer with a display. Also gives me a chance to work on a low power project that can work on batteries for a long time. Low power consumption is one of the benefits of e-Paper, after all.
Calling Secure APIs From Arduino - Part II
In the previous post, I covered the printer. In this post, I focus on the API.
Calling Secure APIs From Arduino - Part I
A new authentication flow is now available in Auth0, that allows devices with limited input capabilities (e.g., no keyboard or touch screens) to get an
access_token
that can be then used to call an API.Fun with Washington Public Transit APIs
The sun is becoming a more frequent companion here in the Pacific Northwest. Days are longer, warmer and nature is noting the change too. A great time of the year to take any of the ferries in the Washington State Ferries fleet around Puget Sound. One of the cheapest cruises you can take.
A Pill Tracker using AWS IoT and Twilio
A couple of members in the family take regular pills every day. I wanted to give them a mechanism to:
The daily stoic quote service is changing
You are likely reading this post because you are or were subscribed to my micro-application that sends an SMS with a daily quote from my favorite stoic philosophers.
Simplyfing Webtask Configuration Management
Dec 27th, 2023 update: Webtasks have been deprecated.
Interacting with a NEST Camera with SMS
In this post I’m expanding my experiments with the NEST API from thermostats to cameras.
Controlling a NEST thermostat with SMS - Part II
This is a short followup excercise in my SMS <-> NEST integration: adding Phone verification.
Controlling a NEST thermostat with SMS
This new application, shows how to control a NEST thermostat with SMS messages via Twilio:
Fun with Stats - Tracking Sleep & Mood with Twilio and Webtask
Dec 27th, 2023 update: Webtasks have been deprecated.
Using Twilio and Auth0 Webtask to become a better stoic
Dec 27th, 2023 update: Webtasks have been deprecated.
Securing a Google Cloud Endpoint API with Auth0
TL;DR
Pace Locomotive Works - Part II - Control Panel
Last weekend I’ve got some time to work on our model engine again. I reviewed the original control panel I designed some time ago:
Building a Nexmo app with Webtask
Dec 27th, 2023 update: Webtasks have been deprecated.
A Simple IVR with Webtask and Twilio
Dec 27th, 2023 update: Webtasks have been deprecated.
Securing an IVR with Auth0
Dec 27th, 2023 update: Webtasks have been deprecated.
Pace Locomotive Works - Notes on building a model diesel engine from scratch
I’ve decided to build a small (fake) diesel engine. I like those that were used in industrial complexes, or small rail yards. This is a type of engine that was meant for switching or shunting (if you are in the UK), rather than long trips.
Interfacing MBED with a serial RFID Reader
The data capture unit I’m building will use a serial RFID reader.
Using Webtask for a custom Passwordless connection in Auth0
Dec 27th, 2023 update: Webtasks have been deprecated.
Using Webtask as an API gateway
Dec 27th, 2023 update: Webtasks have been deprecated.
A simple test harness for MBED based apps
With the basic architecture in place, I set on building a more automated way of verifying that I’m on the right track. There are a few unit test frameworks for C++ that I found googling around, but all seemed very complicated. I opted for a simpler approach.
Building a simple data capturing device - Part III
With the basic modules and general architecture in place, it is time to build the heart (or the brain) of the device.
Building a simple data capturing device - Part II
In the first part of this series I introduced the basic hardware for a data capturing device.
Building Secure Alexa Skills - Part III
Dec 27th, 2023 update: Webtasks have been deprecated.
Building a simple data capturing device - Part I
I’m building a simple data capture device for our family farm. I’ve experimented with a few devices before, but I’ve had trouble with both their usability and reliability.
Building Secure Alexa Skills - Part II
Dec 27th, 2023 update: Webtasks have been deprecated.
Building Secure Alexa Skills - Part I
Dec 27th, 2023 update: Webtasks have been deprecated.
Trying out AWS IoT Button
Dec 27th, 2023 update: Webtasks have been deprecated.
Welcome!
Hi! Welcome to my tech blog. I’m usually working on multiple projects at the same time. This is the place I’m planning on using to publish about them.