Skip to content

Repository files navigation

PDX-lkmu - Portland Linux Kernel Meetup

This is where we post the public web and calendar for the monthly Portland Linux Kernel Meetup.

Each commit to this repo automatically updates the static web site at https://ikluft.github.io/pdx-lkmu/ .

Contents

Info for participants

For participants authorized to update the repository, here's how to set up your local environment to work on it. It uses the Python-based Pelican static web site generator. Each commit to the main branch triggers a GitHub Actions workflow to deploy the contents to the live web site.

Setting up a local preview workspace

For work on the site, you can also install Pelican on your local system to preview your work. To set up your local environment on a Linux or other POSIX-compatible system:

  • Make sure you have a current version of Python installed. The GitHub Action which deploys the site uses 3.13.
  • install Pelican (based on the quickstart docs)

python -m pip install "pelican[markdown]" icalendar pytz recurrent

The original instructions just said to run "pelican --autoreload --listen". But there were differences from the site deployment. So the run-pdx-lkmu script adds customizations which better sync up with the GitHub Actions build process. That's intended to make the local simulated site generator as much as possible like the GitHub site deploy upon each commit.

Structure of the pdx-lkmu repo

Here is the directory structure of the pdx-lkmu repo:

  • top - configuration files
    • content - each file here is a post in the timeline
      • category - optional content to add to categories
      • images - image files for use in pages and posts
      • pages - static pages not part of the timeline
    • output - not in the repository: the generated site is here in your workspace after run-pdx-lkmu; do not add or commit it to the repo
    • templates - local page templates (such as calendar event list) are placed here without having to develop a whole new theme

Adding a post, including newly-scheduled meetups

More details are at the Pelican static site generator's documentation on writing content.

A short summary of what any of our volunteers need for posting in the PDX Linux Kernel Meetup site is included here. Long story made short:

  • Add new posts in the content directory.
  • Prefix file names with the date in YYYY-MM-DD format so they will sort neatly for years to come. (Note the 'Date:' metadata in the file contains the date & timestamp for the post. You should keep these consistent.)
  • Posts are in Markdown format. So use a .md file suffix. Each file starts with some Pelican metadata headers before the Markdown content.
  • Use a local preview to check your work.
  • The static site will update automatically within minutes when you commit your changes. Errors can be corrected by editing affected files and committing the changes.

Automated method of creating a post for a new meetup

You can generate a post text by running with a parameter of the ISO8601 date of the meetup (i.e. format a date like 2025-09-18):

./gen_lkmu_event.py YYYY-MM-DD

That command creates a text file in the contents/ directory named for the event date. For example, './gen_lkmu_event.py 2025-09-18' would try to create 2025-09-18-meetup.md - except that file already exists and would error out. You should run it in your git workspace. Then use 'git add ...', 'git commit ...' and 'git push' to update the git repo. A rebuild of the web site will be triggered when you commit.

After posting the event on our site, proceed to the section below on Uploading to Calagator.

Manual method of creating a post for a new meetup

Here's how to manually format a post for a newly-scheduled Portland Linux Kernel Meetup. Substitute [bracketed items] and date stamps YYYY-MM-DD HH:MM with actual info for the event. Timestamps are in Portland local time, "US/Pacific" - it will automatically use standard or daylight time for the time of year. Pelican doesn't recognize time zone suffixes on timestamps so don't use them in this file.

Title: ${month} ${year} Portland Linux Kernel Meetup
Date: ${post_date}
Category: Event Posts
Author: ${author}
Summary: Portland Linux Kernel Meetup on ${month} ${day}, ${year} ${start_time} at ${location_short}
Event-start: ${event_start}
Event-end: ${event_end}
Event-location: ${location_name}, ${location_street}, ${location_city}
Event-url: ${url}
Event-geo: ${location_geo}
Event-categories: MEETING,PDXLKMU,Linux,Kernel

The Portland Linux Kernel Meetup for ${month} ${year} will be at...

* Date: ${weekday}, ${month} ${day}, ${year}
* Time: ${start_time} to ${end_time} ${time_zone}
* Location: ${location_name}, ${location_street}, ${location_city}

Come enjoy a beverage and chat with other people who are interested in the Linux kernel.
All experience levels are welcome. This is a friendly and casual meetup.

[more intro text if needed for the specific date]

After posting the event on our site, proceed to the section below on Uploading to Calagator.

Uploading to Calagator

We don't yet have a system to automatically have the Portland-area Calagator tech calendar import our events from our iCal feed. It should be technically possible.

Until then, follow these manual steps:

  • Verify the newly-posted event you just made is actually listed in our iCal RSS feed
  • Go to calagator.org
  • Click "Import events" on Calagator's top menu.
  • Enter the URL of our feed into the box: https://ikluft.github.io/pdx-lkmu/calendar.ics
  • That imports our raw event data. But you're not done yet. On the right sidebar, click "edit" because we want to add some metadata.
  • In the "Tags" field enter these comma-delimited tags: PDXLKMU, kernel, linux
  • Solve the Captcha to hint that you're probably not a bot. This will probably take some temporary tweaks to browser anti-tracking defenses to get it to work.
  • Submit it.
  • Remember to turn back on any browser anti-tracking defenses that had to be disabled to submit the form.

Current status

April 2026:

Pelican 4.12 was released. The PDX-LKMU site build was verified to be working with the new version.

December 2025:

After failing to get the legacy (2015) events plugin to generate iCalendar files with support for the URL field, Ian had to update the plugin. The static site generator now uses our pelican-events plugin. This builds on the 2015 events plugin and fixes/extensions by Makerspace Esslingen (Germany). The updated plugin complies with Pelican's current requirement that it is discoverable as a Python module whose name is prefixed with pelican.plugins.* .

The pelican-events plugin has been on PyPI since Oct 2025.

With some usage since then, it'll be time soon to approach Pelican about submitting it to their package repository.

About

public web and calendar for Portland Linux Kernel Meetup

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages