Add blogroll features

This commit is contained in:
Nathan Upchurch 2024-09-25 13:02:36 -05:00
parent 6328a531a7
commit cb33208e54
3 changed files with 499 additions and 0 deletions

450
_data/blogroll.js Normal file
View File

@ -0,0 +1,450 @@
export default {
categories: [
{
name: "Comics",
blogs: [
{
title: "Incidental Comics",
feedUrl:
"http://www.incidentalcomics.com/feeds/posts/default?alt=rss",
url: "http://www.incidentalcomics.com",
description: "Nice comics about words, et cetera.",
},
{
title: "XKCD",
feedUrl: "https://xkcd.com/rss.xml",
url: "https://xkcd.com",
description: "Does XKCD needs an introduction?",
},
],
},
{
name: "Design",
blogs: [
{
title: "Libre Arts",
feedUrl: "https://librearts.org/index.xml",
url: "https://librearts.org",
description: "News on FLOSS creative software.",
},
{
title: "Autumn Kotsiuba",
feedUrl: "https://autumnkotsiuba.wixsite.com/portfolio/blog-feed.xml",
url: "https://autumnkotsiuba.wixsite.com",
description: "Autumn blogs about UX content design.",
},
{
title: "Dave Smyth",
feedUrl: "https://davesmyth.com/commonplace-feed",
url: "https://davesmyth.com",
description:
"Dave Smyth is a designer and developer interested in privacy, type and ethics.",
},
{
title: "Grumpy Website",
feedUrl: "https://grumpy.website/feed.xml",
url: "https://grumpy.website",
description: "Grumpy takes on UI mistakes.",
},
{
title: "TypeOff.",
feedUrl: "https://www.typeoff.de/rss",
url: "https://www.typeoff.de",
description:
"A blog from Dan Reynolds, a design researcher based in Wuppertal, Germany.",
},
{
title: "UX Daily",
feedUrl: "https://www.interaction-design.org/rss/site_news.xml",
url: "https://www.interaction-design.org",
description: "The Worlds Largest Free Online Resource on UX Design ",
},
],
},
{
name: "Food & Beverage",
blogs: [
{
title: "Cocktail Doodle",
feedUrl: "https://cocktaildoodle.substack.com/feed",
url: "https://cocktaildoodle.substack.com",
description:
"A charming (but perhaps abandoned) blog from cocktail expert Luke Andrews.",
},
{
title: "Sarah's Vegan Kitchen",
feedUrl: "https://sarahsvegankitchen.com/feed/",
url: "https://sarahsvegankitchen.com",
description:
"Sarah has years of recipes including complex staples like vegan cultured butter.",
},
],
},
{
name: "General Interest",
blogs: [
{
title: "Big Think",
feedUrl: "https://bigthink.com/feed",
url: "https://bigthink.com",
description: "Big thoughts on big issues.",
},
{
title: "Clients from Hell",
feedUrl: "https://notalwaysright.com/tag/clients-from-hell/feed",
url: "https://notalwaysright.com/tag/clients-from-hell",
description:
"Cathartic stories about clients behaving badly from notalwaysright.com.",
},
{
title: "kottke.org",
feedUrl: "https://feeds.kottke.org/main",
url: "https://kottke.org",
description: "Home of fine hypertext products since 1998.",
},
{
title: "Neatorama",
feedUrl: "https://www.neatorama.com/feed",
url: "https://www.neatorama.com/",
description: "Yep, Neatorama's still around!",
},
{
title: "The Reframe",
feedUrl: "https://www.the-reframe.com/rss/",
url: "https://www.the-reframe.com/",
description:
"Essays on politics and narrative fiction from A.R. Moxon.",
},
{
title: "Webcurios",
feedUrl: "https://webcurios.co.uk/feed",
url: "https://webcurios.co.uk",
description:
"A regular(-ish) newsletterblogtypething all about stuff on the internet that its author finds interesting and thinks you might too.",
},
],
},
{
name: "Health",
blogs: [
{
title: "ADDitude",
feedUrl: "https://www.additudemag.com/feed/",
url: "https://www.additudemag.com/",
description:
"The worlds most trusted resource for families and adults living with ADHD and related conditions, and for the professionals who work with them.",
},
{
title: "The Gauntlet",
feedUrl: "https://www.thegauntlet.news/feed",
url: "https://www.thegauntlet.news",
description:
"A newsletter covering the current science on, and commentary related to, the unmitigated spread of COVID.",
},
],
},
{
name: "Incense, Fragrance, and Perfumery",
blogs: [
{
title: "Apothecary's Garden Blog",
feedUrl: "https://apothecarysgarden.com/blogs/blog.atom",
url: "https://apothecarysgarden.com/blogs/blog",
description:
"Explore the world of natural aromatics, and the communities that bring them to us",
},
{
title: "Ayala Moriel Parfums - SmellyBlog",
feedUrl: "https://ayalamoriel.com/blogs/smellyblog.atom",
url: "https://ayalamoriel.com/blogs/smellyblog",
description:
"Ayala Moriel Parfums is an independent artisan perfume house dedicated to the art of natural perfumery.",
},
{
title: "A whiff of Ambrosia",
feedUrl: "https://whiffofambrosia.wordpress.com/feed/",
url: "https://whiffofambrosia.wordpress.com/",
description: "Incense reviews and more. (Abandoned?)",
},
{
title: "Dr. Incense",
feedUrl: "https://dr-incense.com/blogs/dr-incense-blog.atom",
url: "https://dr-incense.com/blogs/dr-incense-blog",
description:
"Traditional incense maker and founder of the Incense Culture Association of Singapore, and Nanyang Culture Academy.",
},
{
title: "Glass Petal Smoke",
feedUrl: "https://glasspetalsmoke.blogspot.com/feeds/posts/default",
url: "https://glasspetalsmoke.blogspot.com/",
description:
"Decoder of flavors and fragrances. Creator of Smell & Tell programming.",
},
{
title: "Incense In The Dark",
feedUrl: "https://incenseinthewind.blogspot.com/feeds/posts/default",
url: "https://incenseinthewind.blogspot.com/",
description: "Incense reviews, rankings, and information.",
},
{
title: "Kikoh Incense",
feedUrl: "https://kikohincense.com/blogs/news.atom",
url: "https://kikohincense.com/blogs/news",
description:
"Detailed descriptions of incense listening sessions from the Kikoh Incense web store.",
},
{
title: "KyaraZen",
feedUrl: "https://www.kyarazen.com/feed/",
url: "https://www.kyarazen.com/",
description:
"Very informative (but perhaps abandoned) blog from world-renowned incense maker KyaraZen.",
},
{
title: "Olfactory Rescue Service",
feedUrl: "https://olfactoryrescueservice.wordpress.com/feed",
url: "https://olfactoryrescueservice.wordpress.com",
description:
"The ultimate retail incense resource providing incense writing and reviews.",
},
{
title: "Ratnagandh",
feedUrl: "https://ratnagandh.wordpress.com/feed/",
url: "https://ratnagandh.wordpress.com/",
description: "Short incense reviews.",
},
{
title: "Rauchfahne",
feedUrl: "https://blog.rauchfahne.de/en/feed/",
url: "https://blog.rauchfahne.de/en/",
description:
"Incense reviews and writing in German and English from incense maker, enthusiast, and industry insider Irene.",
},
{
title: "Reed's Handmade Incense Blog",
feedUrl: "https://reedshandmadeincense.com/blog/feed/",
url: "https://reedshandmadeincense.com/blog/",
description:
"Writing on incense, tea, and other topics from the Reed's Handmade Incense web store.",
},
{
title: "The Parfum Apothecary - Learning & Culture",
feedUrl:
"https://www.theparfumapothecary.com/blogs/learning-culture.atom",
url: "https://www.theparfumapothecary.com/blogs/learning-culture",
description: "Writing on perfume and its history. (Abandoned?)",
},
],
},
{
name: "News",
blogs: [
{
title: "openDemocracy",
feedUrl: "https://www.opendemocracy.net/en/feed",
url: "https://www.opendemocracy.net/",
description:
"High-quality journalism which challenges power, inspires change and builds leadership among groups underrepresented in the media.",
},
],
},
{
name: "Personal Blogs",
blogs: [
{
title: "Andy Bell",
feedUrl: "https://andy-bell.co.uk/feed.xml",
url: "https://andy-bell.co.uk",
description:
"Designer, front-end developer and the founder of Set Studio and Piccalilli.",
},
{
title: "Darek Kay",
feedUrl: "https://darekkay.com/atom.xml",
url: "https://darekkay.com",
description:
"Front-end developer and an accessibility advocate, currently working at IBM.",
},
{
title: "Ellie Kennard",
feedUrl: "https://www.elliekennard.ca/feed",
url: "https://www.elliekennard.ca",
description: "Photography and thoughts in story form.",
},
{
title: "Garbage Collector",
feedUrl: "https://blog.zedas.fr/index.xml",
url: "https://zedas.fr/",
description:
"The little space of a writer, tinkerer, and a coffee addict.",
},
{
title: "Later On",
feedUrl: "https://leisureguy.ca/rss",
url: "https://leisureguy.ca",
description:
"Writing on wet shaving, politics, whole food plant based diets, and more.",
},
{
title: "Luke Andrews",
feedUrl: "https://world.hey.com/lukeandrews/feed.atom",
url: "https://world.hey.com/lukeandrews",
description: "A sparse (abandoned?) blog from Luke Andrews.",
},
{
title: "MediaActivist",
feedUrl: "https://www.mediaactivist.com/rss/",
url: "https://www.mediaactivist.com/",
description:
"The website of Jay Baker (they/he), a long-time guerrilla journalist and documentarian.",
},
{
title: "Ploum.net",
feedUrl: "https://ploum.net/atom_en.xml",
url: "https://ploum.net/index_en.html",
description:
"Writing on tech and free / libre and open source philosophy.",
},
{
title: "Rosnovsky Park",
feedUrl: "https://rosnovsky.us/feed/feed.xml",
url: "https://rosnovsky.us/",
description:
"Writing on web development, hiking, and random hobbies from the venerable benefactor, founder, and admin of the lounge.town Mastodon instance.",
},
{
title: "Simone",
feedUrl: "https://simone.org/rss",
url: "https://simone.org/",
description:
"Explore modern life via thought-provoking essays, pictures, and conversations.",
},
{
title: "Steven Kennard : Turned Art, Sculpture and Photography",
feedUrl: "https://stevenkennard.com/blog/rss",
url: "https://stevenkennard.com/blog",
description:
"Steven Kennard is a woodturner, sculptor and photographer living and working in Nova Scotia, Canada.",
},
{
title: "Stories by Ellen Feinberg",
feedUrl: "https://ellensusie59.medium.com/feed",
url: "https://ellensusie59.medium.com",
description: "Uptown Chicago gal. Irreverent/Irrelevant/Sarcastic.",
},
{
title: "Thefoggiest.dev",
feedUrl: "https://thefoggiest.dev/feed",
url: "https://thefoggiest.dev",
description: "The personal blog of Diederick de Vries of Amsterdam.",
},
{
title: "TorrentFreak",
feedUrl: "http://torrentfreak.com/feed",
url: "http://torrentfreak.com/",
description: "Breaking File-sharing, Copyright and Privacy News.",
},
],
},
{
name: "Tech",
blogs: [
{
title: "9to5Linux",
feedUrl: "https://9to5linux.com/rss",
url: "https://9to5linux.com/",
description: "Linux news, reviews, tutorials, and more",
},
{
title: "It's FOSS",
feedUrl: "https://itsfoss.com/feed/",
url: "https://itsfoss.com/",
description: "Making You a Better Linux User.",
},
{
title: "LinuxInsider",
feedUrl: "https://www.linuxinsider.com?rss=1",
url: "https://www.linuxinsider.com",
description: "Linux News & Information From Around the World.",
},
{
title: "LOW←TECH MAGAZINE",
feedUrl: "https://solar.lowtechmagazine.com/posts/index.xml",
url: "https://solar.lowtechmagazine.com/posts/",
description:
"This is a solar-powered website, which means it sometimes goes offline.",
},
{
title: "Planet KDE",
feedUrl: "https://planet.kde.org/global/atom.xml",
url: "https://planet.kde.org/",
description:
"A feed aggregator that collects what the contributors to the KDE community are writing on their respective blogs.",
},
{
title: "Pluralistic",
feedUrl: "https://pluralistic.net/feed/",
url: "https://pluralistic.net/",
description: "Daily links from Cory Doctorow",
},
{
title: "Werd I/O",
feedUrl: "https://werd.io/feed",
url: "https://werd.io",
description:
"Writing at the intersection of technology, democracy, and society by Ben Werdmuller.",
},
{
title: "We Distribute",
feedUrl: "https://wedistribute.org/rss",
url: "https://wedistribute.org",
description: "Connecting threads across the Web.",
},
],
},
{
name: "Veganism",
blogs: [
{
title: "Vegan Horizon",
feedUrl: "https://veganhorizon.substack.com/feed",
url: "https://veganhorizon.substack.com",
description:
"The vegan newsletter you've been waiting for! Brave, disruptive, to the point.",
},
],
},
{
name: "Web Development",
blogs: [
{
title: "CSS Tricks",
feedUrl: "https://css-tricks.com/feed",
url: "https://css-tricks.com",
description:
"Tips, Tricks, and Techniques on using Cascading Style Sheets.",
},
{
title: "Chris Coyier",
feedUrl: "https://chriscoyier.net/feed/",
url: "https://chriscoyier.net",
description: "Web craftsman, blogger, author, speaker.",
},
{
title: "Jim Nielsens Blog",
feedUrl: "https://blog.jim-nielsen.com/feed.xml",
url: "https://blog.jim-nielsen.com",
description:
"20+ years at the intersection of design & code on the web.",
},
{
title: "Own Your Web",
feedUrl: "https://buttondown.email/ownyourweb/rss",
url: "https://buttondown.com/ownyourweb",
description:
"A newsletter by Matthias Ott about designing, building, creating, and publishing for and on the Web.",
},
],
},
],
};

View File

@ -0,0 +1,22 @@
---
permalink: /blogroll/nathanUpchurchBlogroll.opml
---
<?xml version="1.0" encoding="UTF-8"?>
<opml version="2.0">
<head>
<title>nathanUpchurchBlogroll.opml</title>
<ownerName>Nathan Upchurch</ownerName>
</head>
<body>{% for category in blogroll.categories %}
<outline id="{{ category.name }}" text="{{ category.name }}">{% for blog in category.blogs %}
<outline
text="{{ blog.title }}"
description="{{ blog.description }}"
htmlUrl="{{ blog.url }}"
title="{{ blog.title }}"
type="rss"
version="RSS2"
xmlUrl="{{ blog.feedUrl }}"/>{% endfor %}
</outline>{% endfor %}
</body>
</opml>

View File

@ -0,0 +1,27 @@
---
layout: layouts/base.njk
---
<h1>Blogroll</h1>
<p class="nodropcap page-block">Here are some of the blogs I subscribe to. You can click the RSS icon next to each to subscribe using <a href="../about-feeds/">your newsreader</a>, or import all of them at once by downloading and importing this convenient <a href="./nathanUpchurchBlogroll.opml" download>.opml file</a>.</p>
{% for category in blogroll.categories %}
<section class="blogroll">
<h2>{{ category.name }}:</h2>
{% for blog in category.blogs %}
<div class="blogroll-category-group">
<a href="{{ blog.url }}"><h3>{{ blog.title }}</h3></a>
<a href="{{ blog.feedUrl }}">
<svg class="tag-feed-icon small" viewBox="0 0 155 155" width="153.349" height="152.909" version="1.0" xmlns="http://www.w3.org/2000/svg">
<title>RSS feed for {{ blog.url }}</title>
<g transform="translate(-427.323 -373.814)">
<ellipse style="opacity: 1; fill-opacity: 1; fill-rule: nonzero" transform="matrix(.86996 0 0 .86996 135.156 330.529)" cx="360.357" cy="200.643" rx="24.643" ry="23.929"></ellipse>
<path style="fill-opacity: 1; fill-rule: evenodd" d="m427.835 455.057-.073-30.273c64.706 3.375 100.619 49.673 101.5 101.94h-30.318c-.503-45.942-31.74-69.996-71.11-71.667z"></path>
<path style="fill-opacity: 1; fill-rule: evenodd" d="m428.201 404.571-.878-30.757C526.75 378.43 580 450.582 580.67 526.724l-31.197-.44c1.365-48.704-34.665-120.267-121.273-121.713Z"></path>
</g>
</svg>
</a>
<p>{{ blog.description }}</p>
</div>
{% endfor %}
</section>
{% endfor %}