Deploy Free-tier Tor bridges on AWS

What if you could help journalists and activists in places like Iran and Russia with a few clicks? Tor is an anonymity network run by volunteers that protects the location and identity of users while they use the internet for research, messaging, and organizing. Unfortunately oppressive regimes block the access points to Tor. My project, Bridge Buttons, lets you deploy a Tor bridge for free to Amazon’s cloud. A bridge helps users connect to Tor by first connecting to an innocuous looking server, making it hard to block! I’ve preconfigured these bridges so that it can run for free for up to a year, making this the cheapest and easiest way to get started.

Direct link to Bridge Buttons where you can get started with just a few clicks!

Code and template on GitHub

Introducing FreeTranslate- deploy a personal webpage for neural machine translation with a click!

THE PROBLEM

The language barrier is a major problem during the COVID-19 pandemic when trying to convey critical safety and medical information and to get information to parents and students as we head back to school. Translation services are expensive and there are many communities that need services.

THE SOLUTION

Amazon Web Services has a product called Amazon Translate which is a neural machine translation service, meaning it translates text using machine learning. It is very powerful, and while it cannot replace a human translator, can help people like teachers convey meaning to the communities they work with reliably. Unfortunately this tool is intended for developers, whereas it can be of great value to people who are not programmers who could leverage its generous free usage tier, letting you translate 2 million characters per month for 12 months at no cost.

That’s where FreeTranslate comes in. FreeTranslate is a software project I have worked on that allows people to deploy a personal translation page to use these free credits by simply clicking a button. It will deploy FreeTranslate to your Amazon account and generate a personal URL just for you!

The technical details are that I have built a CloudFormation template that deploys when you click a URL on my projects page. This template deploys an API Gateway (for the webpage and sending translation requests) and a Lambda function (which does the actual translation bit). You can see a diagram from the CloudFormation designer tool here:

Diagram of FreeTranslate and what CloudFormation deploys when you click my Launch Stack button.

SHARING THE SOLUTION

You can deploy it for yourself, view instructions, and see additional pictures here!

As always, the code is open source! You can view it here.

Make Children’s Artwork look like Eric Carle Illustrations

v_hungry_caterpillar
The Very Hungry Caterpillar, by Eric Carle

Famous author and artist Eric Carle turns 91 today. I remember loving his books when I was a kid, especially The Very Hungry Caterpillar and Brown Bear, Brown Bear, What Do You See?. Each book features his distinctive art style. The images are collages composed of tissue paper and acrylic paint, producing vivid depictions of animals and nature.

THE PROBLEM

Carle’s work is as complex as it is beautiful. How can we make it easier for children to produce their own homages to his creations?

THE SOLUTION

Neural style transfer is a technique that allows you to compose images in another’s style using deep learning. That is, you teach a computer to identify key elements of an image’s style and redraw that image in that style it has just learned.

I found this excellent Google Colab notebook which taught me all about how to do this with tf.Keras!

Taking the code from the tutorial I built a website that lets you upload images, have the style of Eric Carle’s The Very Hungry Caterpillar transferred to it, and display it for the world to see and for you to download! At any given time the latest 10 images will be displayed for any visitors to see. The website is built in one of my favorite frameworks, Flask.

You can access the website at ericcarletransfer.ml. Be warned, the transfer time can be in excess of 10 minutes- it is very computationally intensive.

The results have been encouraging though! Take a look:

The neural network is picking up on the look of the tissue paper and paint. In the future I want to work on reducing the amount of noise seen in the backgrounds.

SHARING THE SOLUTION

The URL again is http://ericcarlearttransfer.ml/

As always, the entire project is opens source and can be found here on GitHub!

Text to Word Search!

Try it out for free here!

wordsearchgif

THE PROBLEM

Word searches can be a great way to build a summary activity for reading a story, article, or book. However, they are time consuming and difficult to make.

THE SOLUTION

text2wordsearch uses the Rapid Automatic Keyword Extraction (RAKE) algorithm to automatically extract the top key words from a blob of text! Simply copy the text from the article or story and choose how many words you want in your word search. Then copy the word search into your favorite word processor (be sure to use a monospace font!). The keywords selected are found in the bottom box.

The technical details are that this uses an AWS Lambda function to run the RAKE algorithm and generate the word search, ingesting the text from the web interface above which is deployed on AWS API Gateway. The Lambda function is written in Python and leverages two excellent packages: python-rake and word-search-puzzle. Because it is a Lambda function they had to be installed to a directory and uploaded as part of a zip bundle along with my function code. This zip is included in the repo linked below for you to deploy and play with yourselves!

SHARING THE SOLUTION

Try it for free here!

As always, the code is available to browse and deploy yourselves!

DIY COVID-19 Facemask using a plastic report cover!

mask1

THE PROBLEM

Personal protective equipment (PPE) is in short supply due to the COVID-19 pandemic.

THE SOLUTION

There are tons and tons of awesome PPE designs on Thingiverse, YouMagine, Instructables, and other popular hangouts for makers. One that I really like is this facemask that uses a plastic report cover or overhead transparency made by Erik Cederberg / 3DVerkstan from Faceshield.nu. Unfortunately, it was physically too large to print using my 3D printer, so I made a version of his design that can be cut using home CNC mills, like my Carvey. It can be cut in just 11 minutes! I used a 1/4″ thick MDF sheet, but any flexible but strong material should do the job.

ezgif.com-video-to-gif

SHARING THE SOLUTION

Head on over to Inventables right now to grab the Easel project/G-code! My employer is also printing these same masks in our company hackerspace, so I intend to bring them in as part of their drive to produce PPE and donate them to those who need them.

FreeDisplay – Share your screen with everyone on your local network for free!

COVID-19 is taxing our internet infrastructure, and many stuck at home are struggling with tasks where it would be useful to share one’s screen with others, such as teaching from home, sharing content with someone without handing them your device and getting it contaminated, or monitoring what is happening on a home computer in real time.

FreeDisplay is a free open-source program written in Python that allows you to share your screen with anyone on your local network, such as your home Wi-Fi network. It creates a QR code other can scan for easy sharing and serves a simple webpage with a mirror of your screen so that any device with a web browser can easily view your screen! Use it for home teaching, sharing content without handing someone your device, presentations, monitoring activity on your home computer and more. Download for free here: https://kevinl95.github.io/freedisplay/

As always, the code is open-source and can be viewed here: https://github.com/kevinl95/freedisplay

DIY WiFi Smartbulb Classroom Sound Meter

This is an exciting new project I’ve been working on to use off-the-shelf smart lightbulbs to make an inexpensive and automatic classroom management gadget. Using a bit of Node I was able to get the noise level of a classroom and translate it into a color for a connected smart lightbulb, from green to red as the classroom gets louder! Inspired by the ‘traffic light’ noise warning gadgets I see in classrooms, this one is fully automatic. There are no switches to throw- just set the maximum volume in the free software and the lightbulb will change color on its own!

screenshot-2
Screenshot of the GUI. The program is an Electron application, and I have applied a material design stylesheet.

The software can be downloaded for free for Windows PCs here!

Works with MagicHome brand smart lightbulbs, such as these which are known to work:

MagicLight WiFi Smart Light Bulb, 2nd Generation Dimmable Multicolor A19 E26 Household LED Bulb

MagicLight Smart WiFi Alexa Light Bulb, A19 7w (60w Equivalent)

As always, this program is open source! Click here to view the code on GitHub!

DIY ‘Ghost Box’ for Halloween 2019!

This is a DIY Ghost Box like the Ovilus ghost hunting device. While I don’t believe in ghosts, I do think ghost hunting gear is fascinating. This box chooses words out of a 1000 word dictionary based on magnetic field and temperature changes. The code is available for free on GitHub: https://github.com/kevinl95/ghostbox

Electronics:
1x Adafruit Feather M4 Express (If substituting, make sure you either buy a board with a DAC for the speaker or build one)
1x Adafruit 9-DOF Accel/Mag/Gyro+Temp Breakout Board – LSM9DS0
1x Adafruit Illuminated Toggle Switch with Cover – Green
1x Adafruit Thin Plastic Speaker w/Wires – 8 ohm 0.25W
1x Adafruit Lithium Ion Battery – 3.7v 2000mAh

CAD and STL files can be accessed from the Thingiverse project page!

Getting a ‘Feels Like’ Temperature when transitioning away from the Weather Underground API

IBM has made the disappointing decision to retire the Weather Underground API effective 12/31, leaving many developers scrambling due to the abruptness of this decision and the complete lack of roadmap or guidance as to how to transition to a replacement so that their applications will work on January 1st.

One key element of the Weather Underground API that my popular tutorial for making an Alexa Skill makes use of is the ‘feels-like’ temperature. When updating this tutorial due to the bad news I chose to transition this tutorial to the OpenWeatherMaps API, which offers a free tier like the Weather Underground API used to that allows for up to 60 requests per minute and the current weather.

While it does not offer a ‘feels-like’ temperature, this can be easily calculated by simply factoring in wind chill to the temperature you report. This means you do not need to use OpenWeatherMaps- you can really use any API that gives you a current temperature and wind speed! It really is as simple as this:

 


var http = require( 'http' );
var url = 'http://api.openweathermap.org/data/2.5/weather?zip=<YOURZIP&gt;,us&units=imperial&APPID=<YOURAPPID>';
http.get( url, function( response ) {
var data = '';
response.on( 'data', function( x ) { data += x; } );
response.on( 'end', function() {
var json = JSON.parse( data );
var temp = json.main.temp;
var wind_speed = json.wind.speed;
var wind_chill = 35.74 + 0.6215*temp 35.75*Math.pow(wind_speed, 0.16) + 0.4275*temp*Math.pow(wind_speed, 0.16);
var chill_rounded = Math.round( wind_chill * 10 ) / 10;
} );
} );

view raw

feels like.js

hosted with ❤ by GitHub

The formula in the above code is to calculate a temperature with windchill using US Customary units:

Wind Chill = 35.74 + 0.6215T – 35.75(V^0.16) + 0.4275T(V^0.16) (Courtesy of MentalFloss)

where T is a temperature in Fahrenheit and V is a wind speed in MPH. You should be able to find a corresponding formula for metric online.

I also went ahead and rounded my ‘feels like’ temperature to one decimal place, to make it easier to read (or for a voice assistant to read out loud, which is how I eventually used this code).

I hope this helps others as they transition to other weather APIs as Weather Underground winds down. Its developer community will be missed!