Dino Fizzotti

Engineer, maker, hacker, thinker, funner.

Oct 14, 2018 - 6 minute read - Comments - Software Python

CarbAlert - Part 3: Celery, Mailgun and Flower

This is part 3 of a 4 part series of articles where I explain how I discovered and purchased my laptop by building a web application which scrapes a local PC parts forum and sends automated email alerts when posts featuring specific keywords appear:

CarbAlert on GitHub: https://github.com/dinofizz/carbalert

Celery

Celery is a distributed task queue framework. In conjunction with a message broker (in my case Redis) it can be used to process asynchronous tasks as well as schedule periodic tasks. I am using both of these features:

  • A periodic task is run every 5 minutes to initiate the Scrapy CarbSpider to scrape and scan the first page of the Carbonite Laptop forum index page for new threads featuring search phrases of interest.
  • From within the CarbPipeline activity I push asynchronous email tasks for Celery to handle. This separates the sending of my email notifications from the parsing of the thread metadata.

Oct 14, 2018 - 11 minute read - Comments - Software Python

CarbAlert - Part 2: Django and Scrapy

This is part 2 of a 4 part series of articles where I explain how I discovered and purchased my laptop by building a web application which scrapes a local PC parts forum and sends automated email alerts when posts featuring specific keywords appear:

CarbAlert on GitHub: https://github.com/dinofizz/carbalert

Django

In order to manage the search phrases and email addresses I am using Django. Django is a Python web framework, and is known for including many extras right out of the box. I am taking advantage of two specific extras: Django’s built-in ORM and the Django admin console.

Oct 14, 2018 - 3 minute read - Comments - Software Python

CarbAlert - Part 1: Let Your Next Laptop Find YOU!

This is part 1 of a 4 part series of articles where I explain how I discovered and purchased my laptop by building a web application which scrapes a local PC parts forum and sends automated email alerts when posts featuring specific keywords appear:

CarbAlert on GitHub: https://github.com/dinofizz/carbalert

TL;DR

Web inbox

CarbAlert is a web application which scrapes a local (South African) second-hand computer parts forum for new posts offering laptops featuring keywords of interest (specifically the first page of the “laptops” forum) I’m using Django for the admin console and database/ORM integration, Scrapy for web-scraping, Celery for task management, Flower for task monitoring and Mailgun for sending out alert emails. I am using Docker to manage and run the containers which make up the CarbAlert application.

Find the code here: https://github.com/dinofizz/carbalert

Aug 21, 2017 - 10 minute read - Comments - Electronics Arduino

NoiseBlanket: Arduino White Noise Player with IR Remote Control

Overview After a recent sinus/ear infection I began to experience tinnitus. In my case it presents itself as a constant high frequency static hiss/whine in my left ear. It’s been about a month since I first noticed it. Hopefully it will eventually disappear. During the day when I’m at work or around friends I don’t really notice it. However when I’m in a quiet room, such as when falling asleep or in the early morning after waking up, it is quite noticeable and distracting.

Jun 10, 2017 - 4 minute read - Comments - Electronics Software Python Raspberry Pi

A Python wrapper for the Adafruit USB/Serial LCD Backpack

Overview I’m working on a project which requires a character LCD to work with a Raspberry Pi. A character LCD is thing displaying the text in the image above. The one I am currently using is a “green backlit 16x2” character LCD. This means that the display is capable of displaying 2 rows of 16 characters, and it features black characters on a green background. There are various sizes and colour combinations (text and backlight) available.

May 1, 2017 - 3 minute read - Comments - Software

Adding Hugo version and commit information to a status page

As described in a previous post, I have set up a GitLab CI runner to build and deploy this blog. For obvious content changes it is easy to see if they have been applied - I can just visit the site itself. For changes that are a bit more “behind the scenes” it may not be so easy to determine if and what changes have been applied. For example: updating the version of Hugo used by the GitLab CI runner to generate the site.