summaryrefslogtreecommitdiffstats
path: root/_site
diff options
context:
space:
mode:
Diffstat (limited to '_site')
-rw-r--r--_site/projects/bumblebee/index.html2
-rw-r--r--_site/projects/e-reader/index.html2
-rw-r--r--_site/projects/etlas/index.html20
-rw-r--r--_site/projects/matrix-digital-rain/index.html2
4 files changed, 14 insertions, 12 deletions
diff --git a/_site/projects/bumblebee/index.html b/_site/projects/bumblebee/index.html
index df30f8c..e17a669 100644
--- a/_site/projects/bumblebee/index.html
+++ b/_site/projects/bumblebee/index.html
@@ -50,7 +50,7 @@ scraping, and other browser automation tasks.</p>
<p>Bumblebee is a Windows Forms application written in C#. The rendering of web
content is handled by the embedded Microsoft Edge browser (via WebView). The
-text editor on the right is Scintilla.NET. It
+text editor on the right is <a src="https://github.com/desjarlais/Scintilla.NET" class="external" target="_blank" rel="noopener noreferrer">Scintilla.NET</a>. It
enables users to override the script at any point during the session. There are
application settings that let users debounce events, ignore hidden elements
and scripts, and more.</p>
diff --git a/_site/projects/e-reader/index.html b/_site/projects/e-reader/index.html
index 540e86a..6d2f2f5 100644
--- a/_site/projects/e-reader/index.html
+++ b/_site/projects/e-reader/index.html
@@ -40,7 +40,7 @@
<br>
- <div class="threecol justify"><p>This project features a prototype e-reader powered by a 7.5-inch Waveshare e-paper display and an
+ <div class="threecol justify"><p>This project features a prototype e-reader powered by a 7.5-inch <a href="https://www.waveshare.com/" class="external" target="_blank" rel="noopener noreferrer">Waveshare</a> e-paper display and an
ESP-WROOM-32 development board.</p>
<iframe style="max-width: 100%" src="ereader.mp4" frameborder="0" allowfullscreen=""></iframe>
diff --git a/_site/projects/etlas/index.html b/_site/projects/etlas/index.html
index ebcc018..11d6e74 100644
--- a/_site/projects/etlas/index.html
+++ b/_site/projects/etlas/index.html
@@ -41,7 +41,8 @@
<br>
<div class="threecol justify"><p>Etlas is a news, stock market, and weather tracker powered by an ESP32 NodeMCU
-D1, featuring a 7.5-inch Waveshare e-paper display and a DHT22 sensor module.</p>
+D1, featuring a 7.5-inch <a href="https://www.waveshare.com/" class="external" target="_blank" rel="noopener noreferrer">Waveshare</a> e-paper display and a
+DHT22 sensor module.</p>
<table style="border: none;">
<tr style="border: none;">
@@ -50,7 +51,7 @@ D1, featuring a 7.5-inch Waveshare e-paper display and a DHT22 sensor module.</p
</tr>
</table>
-<p>The top left panel displays the end-of-day stock prices from the Polygon.io API, relayed through my own
+<p>The top left panel displays the end-of-day stock prices from the <a href="https://polygon.io/" class="external" target="_blank" rel="noopener noreferrer">Polygon.io</a> API, relayed through my own
FastCGI-wrapped Flask app hosted on a VPS. The stock symbols can be configured
through the Flask app’s application settings. The server.fcgi script enclosed
in the tarball at the end of the page contains the Flask app.</p>
@@ -64,24 +65,25 @@ Etlas downloads time series data as CSV and computes the price curves on the
ESP32.</p>
<p>The more prominent panel on the right of the e-paper display shows local
-(Singapore) and world news from the Channel News Asia RSS feed. The MCU
-downloads and parses XML data from the RSS feed directly before rendering it to
-the display. Although I did it this way to avoid writing server code, it limits
-the feeds from which Etlas can receive data. In a future version, I will relay
-the RSS feed through a server (like the stock prices) to make it more flexible.</p>
+(Singapore) and world news from the <a href="https://www.channelnewsasia.com/" class="external" target="_blank" rel="noopener noreferrer">Channel News Asia</a>
+RSS feed. The MCU downloads and parses XML data from the RSS feed directly
+before rendering it to the display. Although I did it this way to avoid writing
+server code, it limits the feeds from which Etlas can receive data. In a future
+version, I will relay the RSS feed through a server (like the stock prices) to
+make it more flexible.</p>
<p>The bottom panels (middle and right) display the temperature and relative
humidity from a DHT22 sensor. The DHT22 driver, arguably the most interesting
part of the software, reads real-time sensor data by comparing relative pulse
widths. The pulses themselves are too quick for the ESP32 to reliably measure
-directly. I ported this
+directly. I ported <a href="https://github.com/Fonger/ESP8266-RTOS-DHT" class="external" target="_blank" rel="noopener noreferrer">this</a>
implementation for ESP8266 modules to my ESP32. All credit for the algorithm
belongs to them.</p>
<p>Much of the heavy lifting of acquiring, interpreting, and rendering data from
different data sources is performed on the microcontroller using less than 512
KB of memory. The embedded software that makes that possible is written in C
-using the ESP-IDF v5.2.1. My e-paper display driver is a port of Waveshare examples for Arduino
+using the ESP-IDF v5.2.1. My e-paper display driver is a port of Waveshare <a href="https://github.com/waveshareteam/e-Paper" class="external" target="_blank" rel="noopener noreferrer">examples</a> for Arduino
and STM32 platforms.</p>
<p>I’ve been using Etlas daily (for a couple of hours on weekdays and all day on
diff --git a/_site/projects/matrix-digital-rain/index.html b/_site/projects/matrix-digital-rain/index.html
index ce87e73..8ab334a 100644
--- a/_site/projects/matrix-digital-rain/index.html
+++ b/_site/projects/matrix-digital-rain/index.html
@@ -47,7 +47,7 @@ the Unix terminal without using any GUI/TUI kits:</p>
<source src="matrix.mp4" type="video/mp4" />
</video>
-<p>Domsson’s Fakesteak inspired
+<p>Domsson’s <a href="https://github.com/domsson/fakesteak" class="external" target="_blank" rel="noopener noreferrer">Fakesteak</a> inspired
this project. I added the following features while trying to keep the original
project’s simplicity intact as much as possible:</p>