j.a.r.v.i.s. realized

If you remember from my earlier post, I wanted to build the cool AI interface from the Iron Man movie series: J.A.R.V.I.S., as voiced by Paul Bettany.


Well, I’ve done it. I wrote up several intents in an Amazon Alexa Skill, created an Amazon Lambda function as the end-point, created a proxy in Node (which is served up by a Raspberry Pi Zero W single-board computer) to forward inbound Internet traffic and I’m now able to ask an Amazon Echo Dot how my printer is doing at home.


Remotely Control a Printer

For example, I can say:

Computer, ask Jarvis for my printer’s status.

…to which she will reply:

charming-pascal is ready and operational.

Now remember, I’m two miles away from home while I’m doing this and all of this still works.  I could ask:

Computer, ask Jarvis which file is selected.

…and she’ll say:

RC_microSD-clip.gcode is currently selected.

This is useful to know when I later code this up to remotely print a job as well. I can also ask:

Computer, ask Jarvis for the job status.

…and the reply might be:

charming-pascal is finished printing RC_microSD-clip.gcode

In the collection of skill intents, I now have the following:

  • Stop the print job
  • Start the print job
  • Pause the print job
  • Resume the print job
  • Ask for the print job status
  • Ask for the selected print job file
  • Ask for help
  • Open the Jarvis app

And I’ll need other intents to select a file to print, preheat the extruder and possibly other things yet unimagined.

I’ll definitely want to remotely see the output of the internal webcam inside the printer to make sure that it’s happy; sometimes print jobs go afoul for a variety of reasons.

Remote Power Control

In addition, I also purchased a TP-Link Smart Plug to control power to the printer. I now have an Alexa skill to turn the printer on and off remotely.


Computer, turn on my 3D printer.


happiness is a warm coin

A Bitcoin is a type of cryptocurrency in which money is represented by an accumulation of agreed-upon virtual coins in a very long accounting ledger.

I’m a miner. Similar to the gold rush days in California in the 19th century, I mine coins using a hardware rig in my apartment. The miner, per se, is a high-end graphics card typically seen in a gamer’s computer—it represents about 70% of the overall cost of everything going on. The coins in this case aren’t Bitcoin but Ethereum, a popular alt-coin, if you will.

The overall process looks like this:

  1. Buy parts for a computer and assembly them
  2. Install some sort of operating system and software to mine the currency you’re interested in
  3. Buy something called a cold wallet on which to safely store your currency and a fire-proof safe
  4. Generate a wallet for the type of currency that you’ll be mining, Ethereum in this case
  5. Generate a receiving address for this wallet
  6. Configure the mining software to use your receiving address
  7. Choose a mining pool (akin to joining a co-op of miners who will collectively mine together and share the profits) and configure the mining software for this group
  8. Configure the mining pool’s interface so that you select how often you are compensated from the monies owed to you
  9. Turn it on, let it run and monitor the progress

Today, I was rewarded with my first pay-out from this mining pool. It’s not a huge sum of money at the moment but I couldn’t be more pleased because I understand about the nature of accumulated interest…


Reverse Inflation

Fiat currency (dollar bills, for example) suffers from something called inflation. If you’re old enough, you’ve experienced the ever-decreasing value of the dollar when you wish to buy a gallon of milk or some other familiar commodity (whose price continually increase year after year).

According to the Bureau of Labor Statistics consumer price index, the dollar experienced an average inflation rate of 2.09% per year. Prices in 2017 are 42.2% higher than prices in 2000.

Perhaps one of the biggest reasons why fiat currency loses so much value is because 1) it is no longer backed by gold and 2) anytime the major banks feel like it, they just print more of the stuff in a process called quantitative easing. In earlier days, the federal government would have needed to issue bonds to investors and then later to pay off these debt instruments. Now, it just prints more paper currency without fearing the negative effects of doing so.

Now imagine a type of currency which enjoys reverse-inflation, an ever-increasing value instead of a decrease. Ethereum seems to have an average increase of 64% per month in its recent history. Imagine buying a gallon of milk three months ago for $4.00 and three months from now you could buy it for a mere $0.27. Of course, Ethereum might crash completely and be worthless—that’s the nature of something like this. At the moment, though, it looks like something worth maintaining over time.

The Future

It’s difficult to guess what the future holds for these types of currencies. I would guess that the quantitative easing of fiat currency would be enough to erode our confidence in the value of those paper currencies which should translate into people migrating to these cryptocurrency alternatives.

add comments to a gcode file

I’ve just written a new command-line tool (CLI), this time in NodeJS/JavaScript but as usual, it’s open-source. The program will create a new version of your 3D printer’s GCODE file, adding comments along the way which describe what each command does.


I would suggest that it’s best to install it somewhere in your path and then you should be able to just invoke it easily in your working directory where the GCODE file(s) live:


$ gcode-comments file.gcode

;Generated with Cura_SteamEngine 2.3.1
M104 S205            ; Set extruder temperature
M109 S205            ; Set extruder temperature and wait (blocking)
M107                 ; Turn off fan
M205 X10             ; Adjust jerk speed
G1 F2400 E-1         ; Move and/or extrude to the indicated point

Input:  file.gcode
Output: file_commented.gcode

meow wolf

Santa Fe turned out to be a fun city (at least the original/old part of town) with lots of shops, art galleries and cafes/restaurants. Had a quiche and a cafe au lait at the French Pastry Shop & Restaurant there and later, lunch at the Blue Corn Cafe nearby.

A very cool spot to check out is an artistic interactive/mystery sort of place in a converted bowling alley called Meow Wolf. They call it an immersive art installation. The current rendering is named House of Eternal Return and features what appears to be an entire house inside. From inside this house, you gather clues about the whereabouts of the family members. There are a variety of interactive musical pieces like the dinosaur skeleton and opportunities to go inside furniture you wouldn’t otherwise suspect is a portal to another dimension.



So, I’m traveling throughout the Southwest for Christmas break—merry Christmas by the way—and I wanted to share some photos of Chiricahua National Monument park, New Mexico. A hoodoo is a column or pinnacle of weathered rock, in case you didn’t know that. And this park is quite full of them on every turn.


Quite a few of the rocks have been weathered down so that a remaining piece stands precariously on top, threatening to fall. It’s interesting to imagine just how long these have been forming.

Wikipedia lists the balancing stone in the third photo above as one of the best examples on the planet.

Next stop appears to be Silver City today which was a booming town in the 19th century and location of the famed Billy the Kid character. (Stay tuned.)


Since I’m now an instructor, I thought I would create a repository which demonstrates  code for the many languages out there which could produce a command line tool/interface (CLI).


Currently, there are nine languages represented but I may add more later. Note that everything here is decidedly OSX-specific. Each subsection includes the instructions for running and/or compiling each, noting that some are compiled languages and some are not.

talking at the speed of lightning

I give so-called “lightning talks” at San Diego JS, a four-times-per-month local group on Meetup.com. Each talk only lasts five minutes so there’s time for several speakers within the span of a single event.

The venue is typically packed. Here’s a photograph of a typical turnout—there were about 120 attendees this month alone.

I suppose you can communicate a lot in a mere five minutes. It is a bit challenging to try to distill down all the things you need to say into this timeframe. There’s really no room for story-telling, just tell the straight facts and details as you race through your slides and screenshots and nothing more. At best, you can hope that someone will ask a relevant question which may allow you to go into some detail you’d earlier hoped to have included.


Many of my projects involve more than one computer. Unfortunately, the security settings on most wi-fi routers at venues like this don’t want you to connect from one computer to the next. The router would actively prevent your demo from working. So I’ve learned to bring along my own networking, which is a hassle. This is especially difficult with IoT projects, for what it’s worth.

Another challenge is related to power. It seems like each of the speakers needs to setup prior to the event and so they all want to bring along their power adapters and plug in. This means that the venue would need to accommodate all those brick-style adapters and they usually forget this.

And I suppose, a recurring problem is that of screen resolution compromises that you have to put up with. You will have formatted all your screens for one resolution while creating your content, only to find that you’re now presenting in a smaller resolution. This then threatens to clip off content or the font size is now too small to be seen by those near the back.

Regardless, it’s a rewarding experience and I hope to give more talks in the months to come. I would encourage others to do the same. It’s a great opportunity to give back to the community of like-minded coders.

mobile app for the robo

I’ve written a new mobile app for the Robo C2 and Robo R2 set of printers by Robo 3D, a local San Diego—based company.



It’s written in the Adobe PhoneGap (Cordova) platform with Framework7 for the styling and scaffolding. It communicates to the underlying OctoPrint interface inside the printer itself. Rather than building several smartphone apps and being subject to the recurring annual developer fees by Apple/Google/Microsoft, I intend to serve it up in a more economical way: embed another single-board computer inside the printer.


This will fit nicely on a $10 Raspberry Pi Zero W computer, as shown. It’s then powered by the USB 5V supply inside the printer and would be powered on every cycle. I’d then use my iPhone’s or iPad’s browser to simply connect to the app.


The app is fully-functional for the Robo C2 printer and sports a slick-looking interface.



And here are some obligatory screenshots of the app.