Moddable Meetings

I’ve been working from home for a number of years, but the Coronavirus lockdown brought me a couple new “office” mates – my family! But being a remote worker means I’m in a lot of video conferences. With a day or two, it became obvious that we needed a way for the family to know when I’m on a call, and when’s a good time to chat.

After a number of (failed) iterations, I settled on using a Moddable Two programmable display. The Moddable Two is a fully programmable (with JavaScript) device, with a color touchscreen, WiFi, Bluetooth, and a bunch of other goodies…….for $25!!!

Here’s how the final product came out:

Display mounted on wall
Busy Morning

Software side

Just want to jump to the code? Github repository is here.
There are two software projects that make up this system: the display software, and a Chrome Extension to collect the meeting schedule from an MS Outlook web view.

Display

The display software implements a web server, and uses mDNS to publish a local URL that can be seen by my work computer. It receives the schedule, and displays the meetings in a scrollable list.

During meetings, the active schedule entry turns red.

So that family members can let me know if they’d like to see me, the display has a row of buttons. Pressing one of the buttons triggers a notification to be displayed on my work computer.

Computer notification

The display has an auto-dimmer, that darkens the screen at the end of the workday, but clicking on the face wakes it up for a couple minutes.

Chrome Extension

The Chrome Extension loads only on a page that’s displaying an Outlook calendar view, eg: outlook.office.com/calendar

The Extension scrapes the web page and collects meetings, bundles up start and end times, and sends them off to the Moddable Two device. These API calls return and pending message notifications (family member pushed one of the device buttons), which the Extension then displays on the work computer.

Hardware

Moddable Two

The Moddable Two is a little wonder. To get an idea of the kinds of things it can do, check out one of the example pages. It’s not without its challenges though. The main difficulty is that while it’s fully programmable with JavaScript, it’s NOT browser/web based. The display is not implemented with HTML and CSS. Learning the display framework is a bit of a chore. To make things easier, the folks at Moddable have provided the source code for a ton of examples. My project has nuggets of code (lovingly!) stolen from at least 4 of their sample projects.

Baseplate

The back of the Moddable Two is basically just a circuit board, so it’s not something you can just stick to a wall. And, since this is an ongoing hobby project, I wanted to be able to easily be able to remove it from the mount to deploy/test new software features.

The answer was a 3D-printed baseplate, that can be semi-permanently attached to the wall, but allows the display to slide in and out.

Printed baseplate.

The printable model, OpenSCAD model file, and addition images are available on Thingiverse.

Early iterations

micro:bit

The first version of this project used a micro:bit. During an active meeting

The micro:bit doesn’t have the networking capabilities of the Moddable Two. The device used USB for power, and to receive “on” and “off” messages when meetings begin and end. During meetings, the LEDs would pulse in a starburst pattern.

On the work computer, the schedule was being scraped by a NodeJS app, using Puppeteer to interact with a Chromium window.

Managing the USB connection when the computer went to sleep was a pain. It also meant that the device needed to be directly tethered to the computer.

Adafruit

The second iteration used the Moddable Two, and used Adafruit IO as a data “middleman”. The work computer would send schedule info up to Adafruit, and the Moddable would pull it down. Message notifications went the other direction.

After reading this blog post by one of the engineers at Moddable, I had the pieces of the puzzle that allowed me to abandon the middleman, and added the webserver to the Moddable device, and used mDNS to make it easily findable.

Scraping

The web scraping isn’t the best. I did go down the path of using Microsoft’s Graph to access the schedule, but couldn’t get it to work due to access restrictions on my work’s server.

Tour de Silicon Valley

On Memorial Day I rode the valley. The ride took 4 hours, and covered 60 miles total. I had to cut it a bit short since I needed to get back to pick up my brother at the airport.

There’s a self portrait at site G – Intel. As I was taking a picture of the front of the building, I realized that the windows were really reflective.

It’s amazing to me that in one morning I could hit so many famous companies. I also passed by a number of others, but I knew my time was short so I didn’t take pictures. Some of them were: Canon, Hitachi, Toshiba, Memorex, Polycom, Citrix, Fortinet, Nortel Networks, WebEx (funny, I passed by an old WebEx building that is abandoned now that they’ve moved into a huge building…and their WebEx sign was covered in spider webs.)

Make sure you click on site Q – Google, and see their company bike racks. They were all around the building. Google has taken over much of that area of Mountain View, so I bet the bikes are in demand during the week.

A random thought about why I do this

For me, it can be frustrating to see people pass me up. But I need to remember that I’m only racing one guy – the depressed one, that overweight guy that has a heart problem, and is so stressed by his work that he takes it out on himself and those around him. That guy is me – and I’m working real hard to beat him. I don’t ever want THAT guy to catch me. (from an EnduranceNation post of mine a couple months back)

C-Different

At the risk of ending up in copyright court, I’m going to steal a chunk of C Different’s February newsletter…’cause I think it’s the coolest thing I’ve read in a long while:

22 financial grants were mailed out this month to respective blind athletes throughout the country. Each of the grant recepients had to meet certain qualifications in order to receive their grant. But most importantly, they each had to display the C Different credo, “Inspire, Educate, Change.”

We are proud to support some wonderful blind athletes throughout their 2008 journey. Here are a few examples of athletes whom we are supporting.

Justin Grant and Kyle Coon plan to use their grant to purchase climbing equipment to assist them on their journey to climb Mt. McKinley.

Mycell Armington plans to use her grant to help her train and be ready to complete her first triathlon with C Different.

Nancy Stevens plans to use her grant to put on a 3 day Tri It Camp in Glenwood Springs, Colorado in order to teach blind women how to become triathletes, while simultaneously teaching sighted women how to become guides.

Adrian Brocaplans to use his grant money to defend his title at the Boston Marathon as overall champion of all blind runners.

Thomas Wolfe is a world champion blind snowboarder who plans to use his grant money to educate blind athletes through his winter sports programs.

When I first learned about C Different, I really only knew about their work with triathletes. But now I know that they do so much more. Their credo is “Inspire, Educate, Change”. I can say, I’m the one being inspired, educated, and changed!

Mike