Scraping the Teknoids Mailman PiperMail Archive

Putting this here in case anyone finds themselves in need of something to scrape a Pipermail web archive of a Mailman mailing list. This bit of Python 3 is based on a a bit of Python 2 I found at Scraping GNU Mailman Pipermail Email List Archives. The only changes I made from the original are to update somethings to work in Python 3. It works well for my purposes, generating a single text file of the teknoids list archive from 2005 to today.

#!/usr/bin/env python

import requests
from lxml import html
import gzip
from io import BytesIO

listname = 'teknoids'
url = '' + listname + '/'

response = requests.get(url)
tree = html.fromstring(response.text)

filenames = tree.xpath('//table/tr/td[3]/a/@href')

def emails_from_filename(filename):
print (filename)
response = requests.get(url + filename)
if filename[-3:] == '.gz':
contents = gzip.GzipFile(fileobj=BytesIO(response.content)).read()
contents = response.content
return contents

contents = [emails_from_filename(filename) for filename in filenames]

contents = b"\n\n\n\n".join(contents)

with open(listname + '.txt', 'wb') as filehandle:

Got a nice garden going this year

Tomatoes, peppers, eggplant, zucchini, basil, and more.

I’ve always wanted to have room for a nice sized garden. When we had some of the pasture fence redone this spring we fenced a specific area for a vegetable garden. Turned out to be a bit over 40×20, just the right size to give everything room to grow.

It was a lot of work and took longer to get ready than I thought it would but I’m happy with the way it turned out. I hope it doesn’t turn into a buffet for the local rabbit population!

Set up Home Assistant to manage your open source smart home ::

In the first article in this series, I introduced Home Assistant and why you might be interested in it. In short, Home Assistant is an automation hub for some of the most common smart devices on the market today. It enables centralized coordination of disparate hardware. By using it, you no longer have to choose suboptimal tech from a single vendor to manage your smart home from a single app.

Source: Set up Home Assistant to manage your open source smart home

Putting the AMP into LAMP  in Linux Subsystem for Windows 10

Lets have a look on what we have on this article:

  • Setting up Apache 2 in Linux Subsystem for Windows 10
  • Setting up MySQL Server in Linux Subsystem for Windows 10
  • Setting up PHP in Linux Subsystem for Windows 10
  • Visual Studio Code and PHP Extensions
  • Few tweaks to work on PHP, Visual Studio Code with Linux Subsystem for Windows

Source: How to setup Apache, MySQL and PHP in Linux Subsystem for Windows 10

Hey, what good’s Ubuntu 18.04 for web dev without Apache, PHP, and MySQL? Getting the full LAMP stack up and running in WSL is a breeze and then you can get some work done. BTW, don’t forget Git.

Tips on getting the most out of Ubuntu 18.04 running in WSL on Windows 10

There are some good pointers and excellent tips in Web Development and Advanced Techniques with Linux on Windows (WSL) that are useful if you’re using WSL as part of your dev toolkit. Getting the same envs, including PATH, running across both systems is handy. It’s cool to be able to develop in Windows and test in Ubuntu without mucking about with VMs or ssh or anything.

SMA30 A Simplified WiFi Throttle You Can Customize | Model Railroad Hobbyist magazine

SMA30 A Simplified WiFi Throttle You Can Customize | Model Railroad Hobbyist magazine

Are we back? Getting past WP Android client issues

It seems that the WordPress Android client did not take kindly to my decision to go all in on the https craze. I needed to delete the site from the app and as it back again. 

2 things would have been useful here. First, a more descriptive error message. The 405 Method not  allowed message didn’t tell me anything. I knew it wasn’t working. Maybe a hint that it could be related to a change on the site wood be good. Second, let me change the URL of the site without needing to delete it. I think this used to be a feature but I couldn’t find it. I’ve been using the app for years and lost a bunch of data because I had to delete the site and reattach.

The ask is still great, but it child stand to be a bit more flexible.