Blogroll
These are my regular blog readings, sorted by category.
Authors
Baltimore
Black
Community
Dev
- Scott Hanselman's Blog
- Google Developers
- Engineering | Uber Blog
- Netflix TechBlog
- Coding Horror
- Revistek's Blog
- Etsy Engineering | Code as Craft
- Changelog
- Cool As Heck
- Times Open
- Eric Mann's Blog
- Nextdoor Engineering
- Scott Berkun
- Lyokolux's blog
- AWS News Blog
- Capital One Tech - Medium
- CrankySec
- HubSpot Product Blog (Live)
- Track Changes
Education
Fearless
- FedTech Magazine
- GovCon Wire
- Government Executive - Tech
- Great Government through Technology
- Newsroom Feeds
- OrangeSlices AI
- Healthcare IT news
- HHS Blog Posts
Flashlight
Freemasonry
- Freemasons For Dummies
- Walking The Walk
- Dr. David Harrison
- The Magpie Mason
- The Midnight Freemasons
- The Past Bastard
- The Hedge Mason
Health
IRL
Law
Library
Marketing
Me
OSINT
Pennsylvania
- Bucks County Beacon
- News - philly power research
- pennlive.com
- Inquirer.com
- Spotlight PA
- PoliticsPA
- News Feed – WHYY
- Pennsylvania Capital-Star
- My Conscious Stream
- Montgomery County Pa DPS Live Incident Status
Policy
Politics
Productivity
Programming
- David Revoy
- Engineering at Meta
- Nextdoor Engineering
- The latest from GitHub's engineering team - The GitHub Blog
- Dale Ghent
- Netflix TechBlog
- Alex Ellis' Blog
- The Stats Geek
- Blog | Chris Sanders
- Posts | L. Collado-Torres
Science
Security
Shopping
Social Media
Software
Stuff
- Flashlights & Other Illumination Devices
- KnifeCenter Blog
- ZeroAir Reviews
- BudgetLightForum.com - Latest topics
Tech
Travel
US News
Writing
Generation
Generated with the following code from a Feedly OMPL download, constructed by ChatGPT
import xml.etree.ElementTree as ET
def parse_opml_to_markdown(input_file_path, output_file_path):
# Parse the OPML file
tree = ET.parse(input_file_path)
root = tree.getroot()
# Check if there are any categories or just a flat list of feeds
body_element = root.find('body')
category_element = body_element.find('outline')
# Initialize markdown content
markdown_content = ""
if category_element is None:
# Flat list of feeds, no categories
feeds = [
(feed.get('title', feed.get('text')), feed.get('htmlUrl'))
for feed in body_element.findall('outline')
if feed.get('htmlUrl') is not None
]
for feed_title, feed_link in feeds:
markdown_content += f"- [{feed_title}]({feed_link})\n"
else:
# Categories exist, handle similar to the previous file
categories = []
for category in body_element.findall('outline'):
category_title = category.get('title', category.get('text'))
feeds = [
(feed.get('title', feed.get('text')), feed.get('htmlUrl'))
for feed in category.findall('outline')
if feed.get('htmlUrl') is not None
]
if feeds:
categories.append((category_title, feeds))
# Sort categories alphabetically
categories.sort(key=lambda x: x[0])
for category_title, feeds in categories:
markdown_content += f"## {category_title}\n\n"
for feed_title, feed_link in feeds:
markdown_content += f"- [{feed_title}]({feed_link})\n"
markdown_content += "\n"
# Save the markdown content to a file
with open(output_file_path, 'w') as markdown_file:
markdown_file.write(markdown_content)
# Example usage:
input_file = 'subscriptions.opml'
output_file = 'subscriptions.md'
parse_opml_to_markdown(input_file, output_file)