Pre-calculating vaccine ingredients: from PostgreSQL to HTML data-*

The VIC pre-calculates ingredient amounts in order to dramatically speed-up performance.  This article describes how its done and why AJAX would be the absolute worst way of doing dynamic calculations on a complex set of variables.

The VIC delivers a tiny database to the browser inside the Ingredient Report page. The data is stored as HTML data-* and the engine is Javascript. “By adding data-* attributes, even ordinary HTML elements can become rather complex and powerful program-objects.” [1]

Once the Ingredient Report is loaded…

Continue reading “Pre-calculating vaccine ingredients: from PostgreSQL to HTML data-*”

Experimental features: randomized slowdowns + retweet chains

Normally, Autovist broadcasts every hour at a random time within the hour.  I created a new Twitter account for Autovist itself, but don’t want hourly tweets yet until we build up at least 100 messages.  Autovist already has a built in check to make sure the same tweet is not broadcasted within the same 12-hour period.  But I wanted to add some randomized behavior on top of that:

Continue reading “Experimental features: randomized slowdowns + retweet chains”

Autovist broken-URL notification

Isn’t just awful when a great link you’ve been sharing breaks?  Perhaps the content has been removed or the website has been reorganized.  As busy online activists, we don’t have the time to check all the links we share. Especially when we use Autovist and have thousands of tweets in our knowledge-base, checking links becomes unmanageable.

Continue reading “Autovist broken-URL notification”

Simple, effective parental control for your Mac

Today, I whipped together a simple, effective parental control script for our shared Macbook Air.  For many months, our homeschooled son has been easily distracted by videos and messages when he is supposed to be working hard on crafting a good paragraph.  Apples parental controls are a massive #FAIL – deselecting the default apps do not work and you cannot just simply turn off the Internet.

Continue reading “Simple, effective parental control for your Mac”

How NOT to change your API (looking at you, Twitter!)

Twitter added extended tweet mode to their API and screwed up Autovist. Autovist helps you build a massive knowledge base by importing your tweets every night.  When importing a tweet with a photo, Autovist has always been able to tweet it again and again looking exactly like the original tweet. It worked perfectly for years.

But then Twitter “enhanced” its API and returned different results by default.  What was originally tweeted like this:

Continue reading “How NOT to change your API (looking at you, Twitter!)”

Disable Spring when debugging gems

I spent a good 45 minutes puzzled as to why byebug wasn’t working from within a gem I’m debugging.  Even more confusing was that when I set byebug in the gem code along with some debugging code, and stepped into the gem, I saw my code edits along with the call to byebug… but the new code was never reached, it was as if it was being skipped right over.  Odd.

Went for a cup of coffee and to ponder this….

Finally, I figured out that spring was preloading the app and keeping the gems loaded – even after I changed the gem code.

For now, I’m going to keep spring disabled by setting DISABLE_SPRING=1 in my .env file.

How to search for methods on a massive Ruby object

While debugging Autovist today, I wanted to see what methods the Tweet object supported (from the Twitter gem, which wraps the Twitter API) in order to figure out why the message was null.  As you can see below, it doesn’t have a nice way of dumping out all values for inspection.  🙁

Continue reading “How to search for methods on a massive Ruby object”

Stripe’s multiple quantities of a plan saved me a TON of time

Autovist was designed with the assumption of one customer paying with one credit card has one Twitter account.  We’ve just been faced with a great problem to have: a customer loves the service so much that she wants a second Twitter account’s advocacy to be automated with Autovist. Yeah!

But how can I get this to work with the current design?

Continue reading “Stripe’s multiple quantities of a plan saved me a TON of time”