This will demonstrate how to install and use Font Awesome's free icon pack. The files will be hosted on your own server without using a CDN. We will look at the minimal installation with the least amount of files for maximum efficiency.
There is an official Arduino CLI application that allows you to compile and upload sketches from the command-line without IDE.
This guide will walk through the process of installing and configuring the CLI tool as well as compiling and uploading sketches. It will also cover third-party boards and libraries like the ESP8266, Adafruit PyPortal, and Seed Studio boards like Seeeduino Nano.
The PyPortal is an awesome little IoT device that is programmable with CircuitPython. It's got wi-fi, a color touch screen, a speaker and speaker connector, microSD card slot, 8MB flash memory, a light sensor, a temperature sensor, a NeoPixel LED, a few JST connectors, and more!
You can buy a PyPortal at https://www.adafruit.com/product/4116. This tutorial covers the PyPortal that came in AdaBox011. I don't believe there are any differences between the AdaBox version and the one you can buy separately from the shop.
In this tutorial we will take a look at the various components and how to use them in CircuitPython with code examples for each. After following the tutorial you should have a solid grasp on the PyPortal.
Since the hardware and software is open source, you can find the sources online:
Serial communication, while old, is still used in many embedded systems and microcontrollers. It is commonly used with Arduino, CircuitPy, and similar boards. We will look at how to connect, send, and receive data using serial.
The Ruby ActiveRecord gem provides easy-to-use abstractions for working with databases and allows you to easily swap out the database backend. For example to switch from SQLite3 to MySQL without changing code. It has built-in support for database abstractions to SQLite3, MySQL, and PostgreSQL. One of the primary aspects of ActiveRecord is that there is very little to no configuration needed. It follow convention over configuration.
ActiveRecord is commonly used with the Ruby-on-Rails framework but you can use it with Sinatra or without any web framework if desired.This tutorial will focus on using it independently, outside of any other framework.
I subscribe to Adafruit's AdaBox and I get a fun project every 3 months mailed to me. A little while back I received AdaBox 010 which came with a NeoTrellis M4 board as the centerpiece. The board comes with a microcontroller that can be programmed with Python using CircuitPython.
The NeoTrellis M4 comes with a grid of 32 NeoPixels, which double as buttons. On top of that, it has an audio processor with an 1/8" audio output jack so it can play sound files and generate noise. Furthermore, it even has an accelerometer that can detect motion in three direction so you have even more input available to control the audio and lights. It also comes with a microphone. To top it off, it can act as a MIDI device! It can use the USB port as the MIDI interface or it can use the UART connector for MIDI.
The micro-USB connector is used for power but also acts as a USB removable drive for easy access to the source code files and easily upload sound files. It can also serve as a MIDI USB interface to interact with MIDI software. The USB can also serve as a generic USB HID (Human interface device) like a mouse or keyboard to send events to a computer that it understands like a keypress or a mouse event.
In this tutorial, I try to provide an overview of all the capabilities and give you an idea of all the possibilities with this board. You will find several code examples that focus on one specific aspect of the board.
A common need when writing an application is loading and saving configuration values in a human-readable text format. For example, if you need to pass in database configuration information at run-time, you might want to have a file that stores the username, password, and database name in a plain-text file that you can modify. This is where INI configuration files come in.
Python standard library has a
configparser module that can read
and write INI style files. We will look at how to read and write
INI files as well as some alternatives for storing configuration.
When writing a Python application sometimes it can be useful to get the name of the Python file where the code is stored. To take it further, you might want to get the full absolute path of the Python file or just the directory of the Python file. This can be particularly useful if you want to reference resources relative to the Python file, wherever it may reside.
SQLite3 is an ubiquitous relational database written in C. The main thing that stands out about SQLite versus other databases is the fact that the whole database is contained in a single file with no server or configuration needed making it very easy to set up and use. It is licensed as public domain which is even more free than typical open source libraries like MIT or GPL. It uses a mostly SQL compliant language so if you are familiar with any other standard SQL engine the language should be something you are familiar with.
SQLite3 is an awesome cross-platform relational database. Some of the major benefits of SQLite include its simplicity and easy management. Everything is stored in a single file and there is no authentication.
One of the big drawbacks with a SQLite database is that there is a global write-lock. Only one write operation can occur at any time. This can create a bottleneck for very write-intensive applications.
SQLite is used in production in many embedded and web applications. For example, you can use SQLite in combination with the Sinatra web application framework to persist data. If you are interested in learning how to use Sinatra, check out my Sinatra Tutorial.
Ruby is an incredibly productive and useful language. Combining Ruby with SQLite3 is a natural fit that opens many possibilities. Add in a simple web framework like Sinatra and you have an incredibly powerful but simple set of tools for building a web application.
If you need a database-agnostic library, something that you can use with SQLite and then easily configure to start using MySQL without rewriting all of your code, you want to use an ORM. ORM stands for Object-Relational-Mapping and the most popular one for Ruby is ActiveRecord.
VMware Player is a great tool for virtualizing operating systems. Sometimes it is desirable to disable the shared clipboard feature though to prevent any copied data from going in to or out of the guest machine. This will show you how to disable the shared clipboard feature.
Sinatra is a minimalist web framework for the Ruby programming language. It is known for being very simple and easy to use. If you are familiar with express.js, it was inspired by Sinatra. I have found it to be incredibly useful and fast to work with. This tutorial will cover some of the common tasks that I have used.
This tutorial demonstrates how to deploy a Ruby web app using
the Sinatra framework using uWSGI and nginx as the web server.
This uses the
config.ru standard for creating a web app.
You can use this method to work with several other Ruby web frameworks
This was tested on Fedora 30. Slight modification might be needed for other distributions.
This tutorial demonstrates how to deploy a Django application for production in Linux using nginx and uWSGI. uWSGI will listen on a local-only TCP port and nginx will reverse proxy all requests to the uWSGI listener. Nginx will also be used to serve all the static files.
Nginx is a very fast and stable web server and reverse proxy. It is a great option for serving an Angular application. This tutorial will demonstrate how to setup nginx for a simple Angular app. Also see my more general Nginx Tutorial for more tips on nginx.
A checksum is a special type of hash that is used to verify the integrity of a file. Verifying a checksum ensures there was no corruption or manipulation during the download and the file was downloaded completely and correctly.
A common use case for checksum verification is to verify a large download like an
.iso disk image.
MD5 and SHA1 hashes are commonly used for this task.
We will look at easy ways to obtain a hash to verify a checksum.
This tutorial covers the process of verifying a GPG signature, which is commonly done to verify the authenticity of a email, document, or downloaded file to ensure it came from the expected source. This only covers verifying signature and not creating them. To learn how to sign and how to sign-and-encrypt, read GPG Tutorial - Signatures.
GPG offers a lot more functionality than just verifying signatures though. To learn more about GPG in general and how to manage keys, encrypt, sign, and more, read my GPG Tutorial.
ncurses (new curses) libraries go back to
1980's and 90's and provide an API to create textual
user interfaces (TUI). If you write a command-line
application, you should consider using curses to implement
functionality you could not otherwise do with standard
console output. The text editor
nano is a good
example of a
ncurses application. We will look at how
to use this library in Python.
import statement is usually the first thing you see at the top of any
Python file. We use it all the time, yet it is still a bit mysterious to
many people. This tutorial will walk through how import works and how
to view and modify the directories used for importing.