The rest of the owl
This commit is contained in:
3
Dockerfile
Normal file
3
Dockerfile
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
FROM nginx
|
||||||
|
COPY _site /usr/share/nginx/html
|
||||||
|
COPY nginx /etc/nginx/conf.d
|
||||||
15
deploy/certificate.yaml
Normal file
15
deploy/certificate.yaml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: garrettmills-dev-tls
|
||||||
|
namespace: default
|
||||||
|
spec:
|
||||||
|
secretName: garrettmills-dev-tls-secret
|
||||||
|
dnsNames:
|
||||||
|
- 'garrettmills.dev'
|
||||||
|
- 'www.garrettmills.dev'
|
||||||
|
- 'k8s.garrettmills.dev'
|
||||||
|
issuerRef:
|
||||||
|
name: letsencrypt-ca
|
||||||
|
kind: ClusterIssuer
|
||||||
43
deploy/deployment.yaml
Normal file
43
deploy/deployment.yaml
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: garrettmills-dev
|
||||||
|
namespace: default
|
||||||
|
spec:
|
||||||
|
replicas: 2
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: garrettmills-dev
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
name: garrettmills-dev-www
|
||||||
|
namespace: default
|
||||||
|
labels:
|
||||||
|
app: garrettmills-dev
|
||||||
|
spec:
|
||||||
|
affinity:
|
||||||
|
podAntiAffinity:
|
||||||
|
preferredDuringSchedulingIgnoredDuringExecution:
|
||||||
|
- weight: 100
|
||||||
|
podAffinityTerm:
|
||||||
|
labelSelector:
|
||||||
|
matchExpressions:
|
||||||
|
- key: app
|
||||||
|
operator: In
|
||||||
|
values: ['garrettmills-dev']
|
||||||
|
topologyKey: 'kubernetes.io/hostname'
|
||||||
|
containers:
|
||||||
|
- name: garrettmills-www
|
||||||
|
image: registry.millslan.net/garrettmills/www-ssg
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /
|
||||||
|
port: 80
|
||||||
|
initialDelaySeconds: 60
|
||||||
|
periodSeconds: 10
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /
|
||||||
|
port: 80
|
||||||
|
initialDelaySeconds: 30
|
||||||
47
deploy/ingress.yaml
Normal file
47
deploy/ingress.yaml
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
---
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: garrettmills-dev-ingress
|
||||||
|
namespace: default
|
||||||
|
annotations:
|
||||||
|
nginx.ingress.kubernetes.io/ssl-redirect: 'false'
|
||||||
|
spec:
|
||||||
|
tls:
|
||||||
|
- hosts:
|
||||||
|
- garrettmills.dev
|
||||||
|
- www.garrettmills.dev
|
||||||
|
- k8s.garrettmills.dev
|
||||||
|
secretName: garrettmills-dev-tls-secret
|
||||||
|
ingressClassName: nginx
|
||||||
|
rules:
|
||||||
|
- host: garrettmills.dev
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- pathType: Prefix
|
||||||
|
path: '/'
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: garrettmills-dev-service
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
|
- host: www.garrettmills.dev
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- pathType: Prefix
|
||||||
|
path: '/'
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: garrettmills-dev-service
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
|
- host: k8s.garrettmills.dev
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- pathType: Prefix
|
||||||
|
path: '/'
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: garrettmills-dev-service
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
12
deploy/service.yaml
Normal file
12
deploy/service.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: garrettmills-dev-service
|
||||||
|
namespace: default
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
app: garrettmills-dev
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
targetPort: 80
|
||||||
@@ -1,101 +1,39 @@
|
|||||||
import fetch from "node-fetch";
|
import pugPlugin from '@11ty/eleventy-plugin-pug'
|
||||||
import pugPlugin from "@11ty/eleventy-plugin-pug";
|
import rssPlugin from '@11ty/eleventy-plugin-rss'
|
||||||
import rssPlugin from "@11ty/eleventy-plugin-rss";
|
import brokenLinksPlugin from 'eleventy-plugin-broken-links'
|
||||||
import brokenLinksPlugin from "eleventy-plugin-broken-links";
|
import { eleventyImageTransformPlugin } from '@11ty/eleventy-img'
|
||||||
import { eleventyImageTransformPlugin } from "@11ty/eleventy-img";
|
import syntaxHighlight from '@11ty/eleventy-plugin-syntaxhighlight'
|
||||||
import syntaxHighlight from "@11ty/eleventy-plugin-syntaxhighlight";
|
import footnote from 'markdown-it-footnote'
|
||||||
import footnote from "markdown-it-footnote";
|
import { EleventyRenderPlugin, IdAttributePlugin } from '@11ty/eleventy'
|
||||||
import { EleventyRenderPlugin, IdAttributePlugin } from '@11ty/eleventy';
|
import { setupBlogCollections } from './scripts/eleventy/blog.js'
|
||||||
import * as fs from 'fs';
|
import { setupFeedCollections } from './scripts/eleventy/feed.js'
|
||||||
import * as opml from 'opml';
|
|
||||||
|
|
||||||
const OUTLINE = {
|
const setupDirectories = eleventyConfig => {
|
||||||
url: 'https://outline.garrettmills.dev/api',
|
eleventyConfig.setInputDirectory('src')
|
||||||
apiKey: 'ol_api_oyqeX4YSeUe8L1GKvrcGusYpHjyjIAtrSqUHJt',
|
eleventyConfig.addPassthroughCopy('src/assets/**')
|
||||||
documentId: '2abb5ebe-f856-4566-a21b-eab845f8dfdd',
|
eleventyConfig.addPassthroughCopy('src/favicon.ico')
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function (eleventyConfig) {
|
const setupPlugins = eleventyConfig => {
|
||||||
eleventyConfig.setInputDirectory("src")
|
eleventyConfig.addPlugin(brokenLinksPlugin)
|
||||||
eleventyConfig.addPlugin(brokenLinksPlugin);
|
eleventyConfig.addPlugin(pugPlugin)
|
||||||
eleventyConfig.addPlugin(pugPlugin);
|
eleventyConfig.addPlugin(rssPlugin)
|
||||||
eleventyConfig.addPlugin(rssPlugin);
|
eleventyConfig.addPlugin(syntaxHighlight)
|
||||||
eleventyConfig.addPlugin(syntaxHighlight);
|
eleventyConfig.addPlugin(IdAttributePlugin)
|
||||||
|
eleventyConfig.addPlugin(EleventyRenderPlugin)
|
||||||
|
eleventyConfig.amendLibrary('md', md => md.use(footnote))
|
||||||
eleventyConfig.addPlugin(eleventyImageTransformPlugin, {
|
eleventyConfig.addPlugin(eleventyImageTransformPlugin, {
|
||||||
htmlOptions: {
|
htmlOptions: {
|
||||||
imgAttributes: {
|
imgAttributes: {
|
||||||
alt: '',
|
alt: '',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
});
|
|
||||||
eleventyConfig.addPlugin(IdAttributePlugin);
|
|
||||||
eleventyConfig.addPlugin(EleventyRenderPlugin);
|
|
||||||
eleventyConfig.addPassthroughCopy("src/assets/**")
|
|
||||||
eleventyConfig.addPassthroughCopy("src/favicon.ico")
|
|
||||||
eleventyConfig.amendLibrary("md", md => md.use(footnote))
|
|
||||||
eleventyConfig.addCollection("markmark", async api => {
|
|
||||||
const response = await fetch(`${OUTLINE.url}/documents.info`, {
|
|
||||||
method: 'POST',
|
|
||||||
headers: {
|
|
||||||
'Content-Type': 'application/json',
|
|
||||||
'Authorization': `Bearer ${OUTLINE.apiKey}`,
|
|
||||||
},
|
|
||||||
body: JSON.stringify({
|
|
||||||
id: OUTLINE.documentId,
|
|
||||||
}),
|
|
||||||
})
|
|
||||||
|
|
||||||
if ( !response.ok ) {
|
|
||||||
throw new Error('Unable to load bookmarks from Outline: response was not okay')
|
|
||||||
}
|
|
||||||
|
|
||||||
const body = await response.json()
|
|
||||||
console.log('body', body)
|
|
||||||
return []
|
|
||||||
})
|
|
||||||
|
|
||||||
eleventyConfig.addCollection("blogByYear", api => {
|
|
||||||
const postsByYear = {}
|
|
||||||
const posts = api.getFilteredByTag('blog')
|
|
||||||
const years = []
|
|
||||||
for ( const post of posts ) {
|
|
||||||
const year = post.date.getFullYear()
|
|
||||||
if ( !postsByYear[year] ) postsByYear[year] = []
|
|
||||||
postsByYear[year] = [post, ...postsByYear[year]]
|
|
||||||
if ( !years.includes(year) ) years.push(year)
|
|
||||||
}
|
|
||||||
|
|
||||||
return years.sort().reverse().map(year => ({
|
|
||||||
year,
|
|
||||||
posts: postsByYear[year],
|
|
||||||
}))
|
|
||||||
})
|
|
||||||
|
|
||||||
eleventyConfig.addCollection("blogByTag", api => {
|
|
||||||
const postsByTag = {}
|
|
||||||
const posts = api.getFilteredByTag('blog')
|
|
||||||
const tags = []
|
|
||||||
for ( const post of posts ) {
|
|
||||||
for ( const tag of post.data.blogtags || [] ) {
|
|
||||||
if ( !postsByTag[tag] ) postsByTag[tag] = []
|
|
||||||
postsByTag[tag].push(post)
|
|
||||||
if ( !tags.includes(tag) ) tags.push(tag)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return tags.sort().map(tag => ({
|
|
||||||
tag,
|
|
||||||
posts: postsByTag[tag],
|
|
||||||
}))
|
|
||||||
})
|
|
||||||
|
|
||||||
eleventyConfig.addCollection("opmlByCategory", async api => {
|
|
||||||
const xml = fs.readFileSync("./src/assets/rss_opml.xml")
|
|
||||||
const parsed = await new Promise((res, rej) => {
|
|
||||||
opml.parse(xml, (err, doc) => err ? rej(err) : res(doc))
|
|
||||||
})
|
|
||||||
|
|
||||||
return parsed.opml.body.subs
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export default function (eleventyConfig) {
|
||||||
|
setupPlugins(eleventyConfig)
|
||||||
|
setupDirectories(eleventyConfig)
|
||||||
|
setupBlogCollections(eleventyConfig)
|
||||||
|
setupFeedCollections(eleventyConfig)
|
||||||
|
}
|
||||||
|
|||||||
19
nginx/default.conf
Normal file
19
nginx/default.conf
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name localhost;
|
||||||
|
absolute_redirect off;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
root /usr/share/nginx/html;
|
||||||
|
index index.html index.htm;
|
||||||
|
}
|
||||||
|
|
||||||
|
#error_page 404 /404.html;
|
||||||
|
|
||||||
|
# redirect server error pages to the static page /50x.html
|
||||||
|
#
|
||||||
|
error_page 500 502 503 504 /50x.html;
|
||||||
|
location = /50x.html {
|
||||||
|
root /usr/share/nginx/html;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,7 +5,12 @@
|
|||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "pnpm run logos && eleventy --config eleventy.config.js",
|
"build": "pnpm run logos && eleventy --config eleventy.config.js",
|
||||||
"logos": "cd node_modules/canvas && pnpm run install && cd ../../ && node logo.js && node favicons.js"
|
"serve": "pnpm run logos && eleventy --serve",
|
||||||
|
"logos": "cd node_modules/canvas && pnpm run install && cd ../../ && node scripts/logo.js && node scripts/favicons.js",
|
||||||
|
"docker:build": "pnpm run build && docker build -t ${DOCKER_REGISTRY}/garrettmills/www-ssg .",
|
||||||
|
"docker:run": "pnpm run docker:build && docker run --rm -p 8080:80 ${DOCKER_REGISTRY}/garrettmills/www-ssg",
|
||||||
|
"docker:sh": "pnpm run docker:build && docker run --rm -it -p 8080:80 ${DOCKER_REGISTRY}/garrettmills/www-ssg sh",
|
||||||
|
"docker:push": "docker push ${DOCKER_REGISTRY}/garrettmills/www-ssg"
|
||||||
},
|
},
|
||||||
"keywords": [],
|
"keywords": [],
|
||||||
"author": "",
|
"author": "",
|
||||||
|
|||||||
50
scripts/eleventy/blog.js
Normal file
50
scripts/eleventy/blog.js
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
import fs from "fs";
|
||||||
|
import * as opml from "opml";
|
||||||
|
|
||||||
|
export const setupBlogCollections = eleventyConfig => {
|
||||||
|
eleventyConfig.addCollection("blogByYear", api => {
|
||||||
|
const postsByYear = {}
|
||||||
|
const posts = api.getFilteredByTag('blog')
|
||||||
|
const years = []
|
||||||
|
for ( const post of posts ) {
|
||||||
|
const year = post.date.getFullYear()
|
||||||
|
if ( !postsByYear[year] ) postsByYear[year] = []
|
||||||
|
postsByYear[year] = [post, ...postsByYear[year]]
|
||||||
|
if ( !years.includes(year) ) years.push(year)
|
||||||
|
}
|
||||||
|
|
||||||
|
return years.sort().reverse().map(year => ({
|
||||||
|
year,
|
||||||
|
posts: postsByYear[year],
|
||||||
|
}))
|
||||||
|
})
|
||||||
|
|
||||||
|
eleventyConfig.addCollection("blogByTag", api => {
|
||||||
|
const postsByTag = {}
|
||||||
|
const posts = api.getFilteredByTag('blog')
|
||||||
|
const tags = []
|
||||||
|
for ( const post of posts ) {
|
||||||
|
for ( const tag of post.data.blogtags || [] ) {
|
||||||
|
if ( !postsByTag[tag] ) postsByTag[tag] = []
|
||||||
|
postsByTag[tag].push(post)
|
||||||
|
if ( !tags.includes(tag) ) tags.push(tag)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return tags
|
||||||
|
.sort()
|
||||||
|
.map(tag => ({
|
||||||
|
tag,
|
||||||
|
posts: postsByTag[tag].reverse(),
|
||||||
|
}))
|
||||||
|
})
|
||||||
|
|
||||||
|
eleventyConfig.addCollection("opmlByCategory", async api => {
|
||||||
|
const xml = fs.readFileSync("./src/assets/rss_opml.xml")
|
||||||
|
const parsed = await new Promise((res, rej) => {
|
||||||
|
opml.parse(xml, (err, doc) => err ? rej(err) : res(doc))
|
||||||
|
})
|
||||||
|
|
||||||
|
return parsed.opml.body.subs
|
||||||
|
})
|
||||||
|
}
|
||||||
10
scripts/eleventy/feed.js
Normal file
10
scripts/eleventy/feed.js
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
|
||||||
|
export const setupFeedCollections = eleventyConfig => {
|
||||||
|
eleventyConfig.addCollection("feedDesc", api => {
|
||||||
|
const posts = api.getFilteredByTag('feed')
|
||||||
|
return posts
|
||||||
|
.sort((a, b) => {
|
||||||
|
return b.date < a.date ? -1 : 1
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -10,8 +10,4 @@ block content
|
|||||||
h2 #{title}
|
h2 #{title}
|
||||||
.content-wrapper !{content}
|
.content-wrapper !{content}
|
||||||
.footer
|
.footer
|
||||||
a.permalink(href=`/feed/#${slug}`) permalink (v1)
|
|
||||||
span.sep |
|
|
||||||
a.permalink(href=url) permalink (v2)
|
|
||||||
span.sep |
|
|
||||||
span.date #{date.toLocaleDateString()}
|
span.date #{date.toLocaleDateString()}
|
||||||
|
|||||||
@@ -28,6 +28,7 @@
|
|||||||
|
|
||||||
.feed .post .footer {
|
.feed .post .footer {
|
||||||
margin-top: 15px;
|
margin-top: 15px;
|
||||||
|
color: var(--color-2);
|
||||||
}
|
}
|
||||||
|
|
||||||
.feed .post .footer .sep {
|
.feed .post .footer .sep {
|
||||||
|
|||||||
@@ -1,259 +1,289 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<opml version="2.0">
|
<opml version="1.0">
|
||||||
<head>
|
<head>
|
||||||
<title>NewsFlash OPML export</title>
|
<dateCreated>Sat, 28 Feb 2026 15:51:52 GMT</dateCreated>
|
||||||
|
<title>garrettmills subscriptions in CommaFeed</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<outline text="Food" title="Food">
|
<outline text="Food" title="Food">
|
||||||
<outline text="Just One Cookbook" type="rss" htmlUrl="https://www.justonecookbook.com/" title="Just One Cookbook" xmlUrl="https://www.justonecookbook.com/feed/" />
|
<outline text="Just One Cookbook" type="rss" title="Just One Cookbook" xmlUrl="https://www.justonecookbook.com/feed/" htmlUrl="https://www.justonecookbook.com/" />
|
||||||
<outline htmlUrl="https://www.mexicanplease.com/" title="Mexican Please" type="rss" text="Mexican Please" xmlUrl="https://www.mexicanplease.com/feed/" />
|
<outline text="Best Food Blog" type="rss" title="Best Food Blog" xmlUrl="https://www.bestfoodblog.net/archive/rss/" htmlUrl="https://www.bestfoodblog.net/" />
|
||||||
<outline text="Homesick Texan" type="rss" xmlUrl="https://www.homesicktexan.com/feed/" htmlUrl="https://www.homesicktexan.com/" title="Homesick Texan" />
|
<outline text="Not a Chef - Ian Fujimoto" type="rss" title="Not a Chef - Ian Fujimoto" xmlUrl="https://ianfujimoto.substack.com/feed" htmlUrl="https://ianfujimoto.substack.com" />
|
||||||
<outline title="The Pasta Project" text="The Pasta Project" type="rss" htmlUrl="https://www.the-pasta-project.com/" xmlUrl="https://www.the-pasta-project.com/feed/" />
|
<outline text="Budget Bytes" type="rss" title="Budget Bytes" xmlUrl="https://www.budgetbytes.com/feed/" htmlUrl="https://www.budgetbytes.com/" />
|
||||||
<outline text="Sandwich Tribunal" htmlUrl="https://www.sandwichtribunal.com/" title="Sandwich Tribunal" xmlUrl="https://www.sandwichtribunal.com/feed/" type="rss" />
|
<outline text="The Good Enough Weekly by Devin K Pope" type="rss" title="The Good Enough Weekly by Devin K Pope" xmlUrl="https://www.dkp.news/feed" htmlUrl="https://www.dkp.news" />
|
||||||
|
<outline text="Mexican Please" type="rss" title="Mexican Please" xmlUrl="https://www.mexicanplease.com/feed/" htmlUrl="https://www.mexicanplease.com/" />
|
||||||
|
<outline text="Sandwich Tribunal" type="rss" title="Sandwich Tribunal" xmlUrl="https://www.sandwichtribunal.com/feed/" htmlUrl="https://www.sandwichtribunal.com" />
|
||||||
|
<outline text="The Pasta Project" type="rss" title="The Pasta Project" xmlUrl="https://www.the-pasta-project.com/feed/" htmlUrl="https://www.the-pasta-project.com/" />
|
||||||
|
<outline text="Homesick Texan" type="rss" title="Homesick Texan" xmlUrl="https://www.homesicktexan.com/feed/" htmlUrl="https://www.homesicktexan.com" />
|
||||||
</outline>
|
</outline>
|
||||||
<outline title="Misc Blogs" text="Misc Blogs">
|
<outline text="Misc Blogs" title="Misc Blogs">
|
||||||
<outline text="The Untourists" htmlUrl="http://www.theuntourists.com/" xmlUrl="http://www.theuntourists.com/feed/" type="rss" title="The Untourists" />
|
<outline text="The Untourists" type="rss" title="The Untourists" xmlUrl="http://www.theuntourists.com/feed/" htmlUrl="http://www.theuntourists.com/" />
|
||||||
<outline xmlUrl="https://chrisglass.com/feed/" text="Chris Glass - Photos" type="rss" title="Chris Glass - Photos" htmlUrl="https://chrisglass.com/" />
|
<outline text="flak" type="rss" title="flak" xmlUrl="https://flak.tedunangst.com/rss" htmlUrl="https://flak.tedunangst.com/" />
|
||||||
<outline type="rss" xmlUrl="https://chrisglass.com/links/feed/" title="Bookmarks – Chris Glass" text="Bookmarks – Chris Glass" htmlUrl="https://chrisglass.com/" />
|
<outline text="Simon Willison's Weblog" type="rss" title="Simon Willison's Weblog" xmlUrl="https://simonwillison.net/atom/everything/" htmlUrl="http://simonwillison.net/atom/everything/" />
|
||||||
<outline htmlUrl="https://onefoottsunami.com/" xmlUrl="https://onefoottsunami.com/feed/atom/" type="rss" title="One Foot Tsunami" text="One Foot Tsunami" />
|
<outline text="John D. Cook Consulting Substack Podcast" type="rss" title="John D. Cook Consulting Substack Podcast" xmlUrl="https://api.substack.com/feed/podcast/2381728.rss" htmlUrl="https://johndcookconsulting.substack.com/podcast" />
|
||||||
<outline xmlUrl="https://kenthendricks.com/feed/" type="rss" text="Kent Hendricks" title="Kent Hendricks" htmlUrl="https://kenthendricks.com/" />
|
<outline text="Tedium: The Dull Side of the Internet." type="rss" title="Tedium: The Dull Side of the Internet." xmlUrl="https://feed.tedium.co/" htmlUrl="https://feed.tedium.co/" />
|
||||||
<outline type="rss" xmlUrl="https://www.filfre.net/feed/" text="The Digital Antiquarian" htmlUrl="https://www.filfre.net/" title="The Digital Antiquarian" />
|
<outline text="Links I Would Gchat You If We Were Friends" type="rss" title="Links I Would Gchat You If We Were Friends" xmlUrl="https://linksiwouldgchatyou.substack.com/feed" htmlUrl="https://linksiwouldgchatyou.substack.com" />
|
||||||
<outline type="rss" title="Craig Mod — Writer + Photographer" xmlUrl="https://craigmod.com/index.xml" text="Craig Mod — Writer + Photographer" htmlUrl="https://craigmod.com/" />
|
<outline text="The Hacker Factor Blog - Dr. Neal Krawetz" type="rss" title="The Hacker Factor Blog - Dr. Neal Krawetz" xmlUrl="https://hackerfactor.com/blog/index.php?/feeds/index.rss2" htmlUrl="https://hackerfactor.com/blog/" />
|
||||||
<outline htmlUrl="https://www.nomadicnotes.com/" type="rss" text="Nomadic Notes" xmlUrl="https://www.nomadicnotes.com/feed/" title="Nomadic Notes" />
|
<outline text="copyrighteous - Benjamin Mako Hill" type="rss" title="copyrighteous - Benjamin Mako Hill" xmlUrl="https://mako.cc/copyrighteous/feed" htmlUrl="https://mako.cc/copyrighteous" />
|
||||||
<outline htmlUrl="https://www.timemachinego.com/linkmachinego" title="LinkMachineGo" text="LinkMachineGo" type="rss" xmlUrl="https://www.timemachinego.com/linkmachinego/feed/" />
|
<outline text="Interconnected by Matt Webb" type="rss" title="Interconnected by Matt Webb" xmlUrl="https://interconnected.org/home/feed" htmlUrl="https://interconnected.org/home" />
|
||||||
<outline xmlUrl="https://goodstuff.simonpanrucker.com/index.xml" title="Good Stuff" text="Good Stuff" type="rss" htmlUrl="https://goodstuff.simonpanrucker.com/" />
|
<outline text="Robin Rendle - Notes" type="rss" title="Robin Rendle - Notes" xmlUrl="https://robinrendle.com/feed.xml" htmlUrl="https://robinrendle.com/feed.xml" />
|
||||||
<outline type="rss" xmlUrl="https://erinkissane.com/feed.rss" htmlUrl="https://erinkissane.com/" title=" Erin Kissane's small internet website" text=" Erin Kissane's small internet website" />
|
<outline text="Robin Rendle - Newsletter" type="rss" title="Robin Rendle - Newsletter" xmlUrl="https://robinrendle.com/newsletterfeed.xml" htmlUrl="https://robinrendle.com/newsletterfeed.xml" />
|
||||||
<outline text="kottke.org" xmlUrl="https://feeds.kottke.org/main" type="rss" htmlUrl="https://kottke.org/" title="kottke.org" />
|
<outline text="The Everywhereist" type="rss" title="The Everywhereist" xmlUrl="https://feeds.feedburner.com/Everywhereist" htmlUrl="https://www.everywhereist.com/" />
|
||||||
<outline xmlUrl="https://nazhamid.com/links.xml" title="Links by Naz Hamid" htmlUrl="https://nazhamid.com/links" text="Links by Naz Hamid" type="rss" />
|
<outline text="Rash Weblog" type="rss" title="Rash Weblog" xmlUrl="https://www.wunderland.com/WTS/Rash/rash-weblog.xml" htmlUrl="http://www.wunderland.com/WTS/Rash/" />
|
||||||
<outline htmlUrl="https://www.citationneeded.news/" type="rss" text="Citation Needed by Molly White" xmlUrl="https://www.citationneeded.news/rss/" title="Citation Needed by Molly White" />
|
<outline text="In English – Weird and Deadly Interesting" type="rss" title="In English – Weird and Deadly Interesting" xmlUrl="https://ahmetasabanci.com/category/english/feed/" htmlUrl="https://ahmetasabanci.com" />
|
||||||
<outline text="The Noah Kalina Newsletter" type="rss" htmlUrl="https://noahkalina.substack.com/" title="The Noah Kalina Newsletter" xmlUrl="https://noahkalina.substack.com/feed" />
|
<outline text="Life of Audrey - Audrey Eschright" type="rss" title="Life of Audrey - Audrey Eschright" xmlUrl="https://lifeofaudrey.com/atom.xml" htmlUrl="https://lifeofaudrey.com/atom.xml" />
|
||||||
<outline type="rss" htmlUrl="https://tracydurnell.com/" text="Tracy Durnell's Mind Garden" xmlUrl="https://tracydurnell.com/feed/" title="Tracy Durnell's Mind Garden" />
|
<outline text="moser’s frame shop" type="rss" title="moser’s frame shop" xmlUrl="https://anthonymoser.github.io/writing/feed.xml" htmlUrl="http://anthonymoser.github.io/writing/feed.xml" />
|
||||||
<outline xmlUrl="https://davidallengreen.com/feed/" type="rss" htmlUrl="https://davidallengreen.com/" title="The Law and Policy Blog" text="The Law and Policy Blog" />
|
<outline text="Unsung" type="rss" title="Unsung" xmlUrl="https://unsung.aresluna.org/feed.xml" htmlUrl="https://unsung.aresluna.org/feed.xml" />
|
||||||
<outline text="Ten minutes past deadline" xmlUrl="https://tenminutespastdeadline.wordpress.com/feed/" type="rss" title="Ten minutes past deadline" htmlUrl="https://tenminutespastdeadline.wordpress.com/" />
|
<outline text="kottke.org" type="rss" title="kottke.org" xmlUrl="https://feeds.kottke.org/main" htmlUrl="https://feeds.kottke.org/main" />
|
||||||
<outline xmlUrl="https://bigthink.com/feed/strange-maps" text="Strange Maps - Big Think" htmlUrl="https://bigthink.com//feed/strange-maps" type="rss" title="Strange Maps - Big Think" />
|
<outline text="Naz Hamid" type="rss" title="Naz Hamid" xmlUrl="https://nazhamid.com/feed.xml" htmlUrl="https://nazhamid.com/feed.xml" />
|
||||||
<outline type="rss" htmlUrl="https://nazhamid.com/" title="Naz Hamid" text="Naz Hamid" xmlUrl="https://nazhamid.com/feed.xml" />
|
<outline text="Chris Glass - Photos" type="rss" title="Chris Glass - Photos" xmlUrl="https://chrisglass.com/feed/" htmlUrl="https://chrisglass.com" />
|
||||||
<outline title="www.marginalia.nu on marginalia.nu" text="www.marginalia.nu on marginalia.nu" type="rss" xmlUrl="https://www.marginalia.nu/index.xml" htmlUrl="https://www.marginalia.nu/" />
|
<outline text="Azimuth" type="rss" title="Azimuth" xmlUrl="https://johncarlosbaez.wordpress.com/feed/" htmlUrl="https://johncarlosbaez.wordpress.com" />
|
||||||
<outline xmlUrl="https://dynomight.net/feed.xml" text="DYNOMIGHT" type="rss" htmlUrl="https://dynomight.net/" title="DYNOMIGHT" />
|
<outline text="Links by Naz Hamid" type="rss" title="Links by Naz Hamid" xmlUrl="https://nazhamid.com/links.xml" htmlUrl="https://nazhamid.com/links/" />
|
||||||
<outline title="ooh.directory recently added blogs" xmlUrl="https://ooh.directory/feeds/recently-added.xml" type="rss" text="ooh.directory recently added blogs" htmlUrl="https://ooh.directory/" />
|
<outline text="ooh.directory recently added blogs" type="rss" title="ooh.directory recently added blogs" xmlUrl="https://ooh.directory/feeds/recently-added.xml" htmlUrl="https://ooh.directory/" />
|
||||||
<outline text="Pluralistic: Daily links from Cory Doctorow" type="rss" xmlUrl="https://pluralistic.net/feed/" htmlUrl="https://pluralistic.net/" title="Pluralistic: Daily links from Cory Doctorow" />
|
<outline text="Bookmarks – Chris Glass" type="rss" title="Bookmarks – Chris Glass" xmlUrl="https://chrisglass.com/links/feed/" htmlUrl="https://chrisglass.com" />
|
||||||
<outline text="1000 Awesome Things" title="1000 Awesome Things" htmlUrl="https://1000awesomethings.com/" xmlUrl="https://1000awesomethings.com/feed/" type="rss" />
|
<outline text="DYNOMIGHT" type="rss" title="DYNOMIGHT" xmlUrl="https://dynomight.net/feed.xml" htmlUrl="https://dynomight.net/feed.xml" />
|
||||||
<outline text="Azimuth" title="Azimuth" xmlUrl="https://johncarlosbaez.wordpress.com/feed/" type="rss" htmlUrl="https://johncarlosbaez.wordpress.com/" />
|
<outline text="One Foot Tsunami" type="rss" title="One Foot Tsunami" xmlUrl="https://onefoottsunami.com/feed/atom/" htmlUrl="https://onefoottsunami.com/feed/atom/" />
|
||||||
<outline text="Tegowerk" type="rss" htmlUrl="https://tegowerk.eu/" title="Tegowerk" xmlUrl="https://tegowerk.eu/index.xml" />
|
<outline text="/dev/lawyer" type="rss" title="/dev/lawyer" xmlUrl="https://writing.kemitchell.com/feed.xml" htmlUrl="https://writing.kemitchell.com" />
|
||||||
<outline type="rss" title="A Citizen's Guide to Indiana" xmlUrl="https://www.masson.us/blog/feed/" text="A Citizen's Guide to Indiana" htmlUrl="https://www.masson.us/blog/" />
|
<outline text="Email is good." type="rss" title="Email is good." xmlUrl="https://email-is-good.com/feed/" htmlUrl="https://email-is-good.com" />
|
||||||
<outline type="rss" xmlUrl="https://worriedaf.blogspot.com/feeds/posts/default" text="The Chronicles of a Girl Worried AF" htmlUrl="https://worriedaf.blogspot.com/" title="The Chronicles of a Girl Worried AF" />
|
<outline text="Tegowerk" type="rss" title="Tegowerk" xmlUrl="https://tegowerk.eu/index.xml" htmlUrl="https://tegowerk.eu/" />
|
||||||
<outline xmlUrl="https://writing.kemitchell.com/feed.xml" type="rss" title="/dev/lawyer" text="/dev/lawyer" htmlUrl="https://writing.kemitchell.com/" />
|
<outline text="LinkMachineGo" type="rss" title="LinkMachineGo" xmlUrl="https://www.timemachinego.com/linkmachinego/feed/" htmlUrl="https://www.timemachinego.com/linkmachinego" />
|
||||||
|
<outline text="Nomadic Notes" type="rss" title="Nomadic Notes" xmlUrl="https://www.nomadicnotes.com/feed/" htmlUrl="https://www.nomadicnotes.com" />
|
||||||
|
<outline text=" Erin Kissane's small internet website" type="rss" title=" Erin Kissane's small internet website" xmlUrl="https://erinkissane.com/feed.rss" htmlUrl="https://erinkissane.com" />
|
||||||
|
<outline text="The Noah Kalina Newsletter" type="rss" title="The Noah Kalina Newsletter" xmlUrl="https://noahkalina.substack.com/feed" htmlUrl="https://noahkalina.substack.com" />
|
||||||
|
<outline text="Kent Hendricks" type="rss" title="Kent Hendricks" xmlUrl="https://kenthendricks.com/feed/" htmlUrl="https://kenthendricks.com/" />
|
||||||
|
<outline text="Craig Mod — Writer + Photographer" type="rss" title="Craig Mod — Writer + Photographer" xmlUrl="https://craigmod.com/index.xml" htmlUrl="https://craigmod.com/" />
|
||||||
|
<outline text="www.marginalia.nu on marginalia.nu" type="rss" title="www.marginalia.nu on marginalia.nu" xmlUrl="https://www.marginalia.nu/index.xml" htmlUrl="https://www.marginalia.nu/" />
|
||||||
|
<outline text="Strange Maps - Big Think" type="rss" title="Strange Maps - Big Think" xmlUrl="https://bigthink.com/feed/strange-maps" htmlUrl="https://bigthink.com//feed/strange-maps" />
|
||||||
|
<outline text="Pluralistic: Daily links from Cory Doctorow" type="rss" title="Pluralistic: Daily links from Cory Doctorow" xmlUrl="https://pluralistic.net/feed/" htmlUrl="https://pluralistic.net" />
|
||||||
|
<outline text="The Chronicles of a Girl Worried AF" type="rss" title="The Chronicles of a Girl Worried AF" xmlUrl="https://worriedaf.blogspot.com/feeds/posts/default" htmlUrl="https://www.blogger.com/feeds/7143765987832647265/posts/default" />
|
||||||
|
<outline text="The Digital Antiquarian" type="rss" title="The Digital Antiquarian" xmlUrl="https://www.filfre.net/feed/" htmlUrl="https://www.filfre.net" />
|
||||||
|
<outline text="Citation Needed by Molly White" type="rss" title="Citation Needed by Molly White" xmlUrl="https://www.citationneeded.news/rss/" htmlUrl="https://www.citationneeded.news/" />
|
||||||
|
<outline text="Tracy Durnell's Mind Garden" type="rss" title="Tracy Durnell's Mind Garden" xmlUrl="https://tracydurnell.com/feed/" htmlUrl="https://tracydurnell.com" />
|
||||||
|
<outline text="Ten minutes past deadline" type="rss" title="Ten minutes past deadline" xmlUrl="https://tenminutespastdeadline.wordpress.com/feed/" htmlUrl="https://tenminutespastdeadline.wordpress.com" />
|
||||||
|
<outline text="The Law and Policy Blog" type="rss" title="The Law and Policy Blog" xmlUrl="https://davidallengreen.com/feed/" htmlUrl="https://davidallengreen.com" />
|
||||||
</outline>
|
</outline>
|
||||||
<outline title="Books & Reading" text="Books & Reading">
|
<outline text="Books & Reading" title="Books & Reading">
|
||||||
<outline text="The Neglected Books Page" type="rss" title="The Neglected Books Page" htmlUrl="https://neglectedbooks.com/" xmlUrl="https://neglectedbooks.com/?feed=rss2" />
|
<outline text="The Untranslated" type="rss" title="The Untranslated" xmlUrl="https://theuntranslated.wordpress.com/feed/" htmlUrl="https://theuntranslated.wordpress.com" />
|
||||||
<outline type="rss" xmlUrl="https://theuntranslated.wordpress.com/feed/" htmlUrl="https://theuntranslated.wordpress.com/" title="The Untranslated" text="The Untranslated" />
|
<outline text="A Working Library by Mandy Brown" type="rss" title="A Working Library by Mandy Brown" xmlUrl="https://aworkinglibrary.com/feed/index.xml" htmlUrl="https://aworkinglibrary.com/feed/index.xml" />
|
||||||
<outline type="rss" title="The Dusty Bookcase" htmlUrl="https://brianbusby.blogspot.com/" text="The Dusty Bookcase" xmlUrl="https://brianbusby.blogspot.com/feeds/posts/default" />
|
<outline text="The Neglected Books Page" type="rss" title="The Neglected Books Page" xmlUrl="https://neglectedbooks.com/?feed=rss2" htmlUrl="https://neglectedbooks.com" />
|
||||||
|
<outline text="The Dusty Bookcase" type="rss" title="The Dusty Bookcase" xmlUrl="https://brianbusby.blogspot.com/feeds/posts/default" htmlUrl="https://www.blogger.com/feeds/6747768554703669866/posts/default" />
|
||||||
</outline>
|
</outline>
|
||||||
<outline text="Design" title="Design">
|
<outline text="Design" title="Design">
|
||||||
<outline type="rss" htmlUrl="https://journal.buzzusborne.com/" xmlUrl="https://journal.buzzusborne.com/rss" text="Design Inspiration" title="Design Inspiration" />
|
<outline text="Design Inspiration" type="rss" title="Design Inspiration" xmlUrl="https://journal.buzzusborne.com/rss" htmlUrl="https://journal.buzzusborne.com/" />
|
||||||
<outline text="BLAG (Better Letters Magazine)" xmlUrl="https://bl.ag/rss/" htmlUrl="https://bl.ag/" title="BLAG (Better Letters Magazine)" type="rss" />
|
<outline text="Noisy Decent Graphics" type="rss" title="Noisy Decent Graphics" xmlUrl="https://feeds.feedburner.com/noisydecentgraphics" htmlUrl="https://noisydecentgraphics.typepad.com/design/atom.xml" />
|
||||||
<outline text="Latest Dispatches - Scott Boms" title="Latest Dispatches - Scott Boms" htmlUrl="https://scottboms.com/documenting" type="rss" xmlUrl="https://scottboms.com/rss" />
|
<outline text="Graphic Journey Blog" type="rss" title="Graphic Journey Blog" xmlUrl="https://mikedempsey.typepad.com/graphic_journey_blog/atom.xml" htmlUrl="https://mikedempsey.typepad.com/graphic_journey_blog/atom.xml" />
|
||||||
<outline htmlUrl="https://www.thisiscolossal.com/" xmlUrl="https://www.thisiscolossal.com/feed/" type="rss" title="Colossal" text="Colossal" />
|
<outline text="BLAG (Better Letters Magazine)" type="rss" title="BLAG (Better Letters Magazine)" xmlUrl="https://bl.ag/rss/" htmlUrl="https://bl.ag/" />
|
||||||
<outline htmlUrl="https://noisydecentgraphics.typepad.com/design/" text="Noisy Decent Graphics" type="rss" xmlUrl="https://feeds.feedburner.com/noisydecentgraphics" title="Noisy Decent Graphics" />
|
<outline text="Colossal" type="rss" title="Colossal" xmlUrl="https://www.thisiscolossal.com/feed/" htmlUrl="https://www.thisiscolossal.com/" />
|
||||||
<outline title="Graphic Journey Blog" xmlUrl="https://mikedempsey.typepad.com/graphic_journey_blog/atom.xml" text="Graphic Journey Blog" type="rss" htmlUrl="https://mikedempsey.typepad.com/graphic_journey_blog/" />
|
<outline text="Latest Dispatches - Scott Boms" type="rss" title="Latest Dispatches - Scott Boms" xmlUrl="https://scottboms.com/rss" htmlUrl="https://scottboms.com/documenting" />
|
||||||
</outline>
|
</outline>
|
||||||
<outline title="Games" text="Games">
|
<outline text="Games" title="Games">
|
||||||
<outline htmlUrl="https://haikushane.com/" text="Project Work by Shane P." type="rss" title="Project Work by Shane P." xmlUrl="https://haikushane.com/feed/" />
|
<outline text="Direbane: An RPG Home Brewed Repository" type="rss" title="Direbane: An RPG Home Brewed Repository" xmlUrl="https://direbane.blogspot.com/feeds/posts/default" htmlUrl="https://www.blogger.com/feeds/5017797838114882082/posts/default" />
|
||||||
<outline xmlUrl="https://jrients.blogspot.com/feeds/posts/default" type="rss" title="Jeffs Gameblog" text="Jeffs Gameblog" htmlUrl="https://jrients.blogspot.com/" />
|
<outline text="Wunderland" type="rss" title="Wunderland" xmlUrl="https://new.wunderland.com/feed/" htmlUrl="https://new.wunderland.com" />
|
||||||
<outline text="SPACE-BIFF!" htmlUrl="https://spacebiff.com/" xmlUrl="https://spacebiff.com/feed/" title="SPACE-BIFF!" type="rss" />
|
<outline text="Peter Berthoud" type="rss" title="Peter Berthoud" xmlUrl="https://www.peterberthoud.co.uk/blog-feed.xml" htmlUrl="https://www.peterberthoud.co.uk/blog" />
|
||||||
<outline title="Peter Berthoud" xmlUrl="https://www.peterberthoud.co.uk/blog-feed.xml" text="Peter Berthoud" htmlUrl="https://www.peterberthoud.co.uk/" type="rss" />
|
<outline text="Jeffs Gameblog" type="rss" title="Jeffs Gameblog" xmlUrl="https://jrients.blogspot.com/feeds/posts/default" htmlUrl="https://www.blogger.com/feeds/7652921/posts/default" />
|
||||||
<outline text="Hipsters of the Coast" title="Hipsters of the Coast" type="rss" htmlUrl="https://www.hipstersofthecoast.com/" xmlUrl="https://www.hipstersofthecoast.com/feed/" />
|
<outline text="Project Work by Shane P." type="rss" title="Project Work by Shane P." xmlUrl="https://haikushane.com/feed/" htmlUrl="https://haikushane.com" />
|
||||||
<outline htmlUrl="https://opinionatedgamers.com/" title="The Opinionated Gamers" text="The Opinionated Gamers" type="rss" xmlUrl="https://opinionatedgamers.com/feed/" />
|
<outline text="The Opinionated Gamers" type="rss" title="The Opinionated Gamers" xmlUrl="https://opinionatedgamers.com/feed/" htmlUrl="https://opinionatedgamers.com" />
|
||||||
<outline type="rss" text="Sly Flourish" xmlUrl="https://slyflourish.com/index.xml" htmlUrl="https://slyflourish.com/" title="Sly Flourish" />
|
<outline text="Hipsters of the Coast" type="rss" title="Hipsters of the Coast" xmlUrl="https://www.hipstersofthecoast.com/feed/" htmlUrl="https://www.hipstersofthecoast.com/" />
|
||||||
<outline type="rss" xmlUrl="https://direbane.blogspot.com/feeds/posts/default" title="Direbane: An RPG Home Brewed Repository" htmlUrl="https://direbane.blogspot.com/" text="Direbane: An RPG Home Brewed Repository" />
|
<outline text="SPACE-BIFF!" type="rss" title="SPACE-BIFF!" xmlUrl="https://spacebiff.com/feed/" htmlUrl="https://spacebiff.com" />
|
||||||
|
<outline text="Sly Flourish" type="rss" title="Sly Flourish" xmlUrl="https://slyflourish.com/index.xml" htmlUrl="https://slyflourish.com/" />
|
||||||
</outline>
|
</outline>
|
||||||
<outline text="Photography" title="Photography">
|
<outline text="Photography" title="Photography">
|
||||||
<outline xmlUrl="https://www.postcard-past.com/rss/" type="rss" htmlUrl="https://www.postcard-past.com/" title="Postcard Past / Present Photo" text="Postcard Past / Present Photo" />
|
<outline text="Bill Fortney" type="rss" title="Bill Fortney" xmlUrl="https://billfortney.com/?feed=rss2" htmlUrl="https://billfortney.com" />
|
||||||
<outline xmlUrl="https://paulclarke.com/feed/" title="Paul Clarke" text="Paul Clarke" type="rss" htmlUrl="https://paulclarke.com/" />
|
<outline text="Postcard Past / Present Photo" type="rss" title="Postcard Past / Present Photo" xmlUrl="https://www.postcard-past.com/rss/" htmlUrl="https://www.postcard-past.com/" />
|
||||||
<outline text="Bill Fortney" type="rss" xmlUrl="https://billfortney.com/?feed=rss2" title="Bill Fortney" htmlUrl="https://billfortney.com/" />
|
<outline text="Alan Taylor | The Atlantic" type="rss" title="Alan Taylor | The Atlantic" xmlUrl="https://www.theatlantic.com/feed/author/alan-taylor/" htmlUrl="https://www.theatlantic.com/feed/author/alan-taylor/" />
|
||||||
<outline text="Fup Duck Photography" htmlUrl="https://fupduckphoto.wordpress.com/" title="Fup Duck Photography" xmlUrl="https://fupduckphoto.wordpress.com/feed/" type="rss" />
|
<outline text="Iconic Photos" type="rss" title="Iconic Photos" xmlUrl="https://iconicphotos.wordpress.com/feed/" htmlUrl="https://iconicphotos.wordpress.com" />
|
||||||
<outline xmlUrl="https://randomwire.com/feed/" type="rss" htmlUrl="https://randomwire.com/" text="Randomwire" title="Randomwire" />
|
<outline text="Outside the World dot com" type="rss" title="Outside the World dot com" xmlUrl="https://www.outsidetheworld.com/feeds/posts/default" htmlUrl="https://www.blogger.com/feeds/9826409/posts/default" />
|
||||||
<outline text="The Wandering Lensman" type="rss" xmlUrl="https://www.thewanderinglensman.com/feeds/posts/default" htmlUrl="https://www.thewanderinglensman.com/" title="The Wandering Lensman" />
|
<outline text="Long Delays Possible" type="rss" title="Long Delays Possible" xmlUrl="https://www.longdelayspossible.com/feed/" htmlUrl="https://www.longdelayspossible.com" />
|
||||||
<outline xmlUrl="https://fiftyfootshadows.net/feed/" text="fiftyfootshadows.net" type="rss" title="fiftyfootshadows.net" htmlUrl="https://fiftyfootshadows.net/" />
|
<outline text="THE FAMILY MUSEUM" type="rss" title="THE FAMILY MUSEUM" xmlUrl="https://thefamilymuseum.co.uk/feed/" htmlUrl="https://thefamilymuseum.co.uk" />
|
||||||
<outline text="A Life in Photography" htmlUrl="https://alifeinphotography.blogspot.com/" xmlUrl="https://alifeinphotography.blogspot.com/feeds/posts/default" title="A Life in Photography" type="rss" />
|
<outline text="Randomwire" type="rss" title="Randomwire" xmlUrl="https://randomwire.com/feed/" htmlUrl="https://randomwire.com" />
|
||||||
<outline type="rss" title="Iconic Photos" xmlUrl="https://iconicphotos.wordpress.com/feed/" text="Iconic Photos" htmlUrl="https://iconicphotos.wordpress.com/" />
|
<outline text="fiftyfootshadows.net" type="rss" title="fiftyfootshadows.net" xmlUrl="https://fiftyfootshadows.net/feed/" htmlUrl="https://fiftyfootshadows.net" />
|
||||||
<outline type="rss" text="Iconic Photos" title="Iconic Photos" htmlUrl="https://iconic-photos.com/" xmlUrl="https://iconic-photos.com/feed/" />
|
<outline text="A Life in Photography" type="rss" title="A Life in Photography" xmlUrl="https://alifeinphotography.blogspot.com/feeds/posts/default" htmlUrl="https://www.blogger.com/feeds/3786851340213607564/posts/default" />
|
||||||
<outline htmlUrl="https://www.outsidetheworld.com/" title="Outside the World dot com" text="Outside the World dot com" xmlUrl="https://www.outsidetheworld.com/feeds/posts/default" type="rss" />
|
<outline text="The Wandering Lensman" type="rss" title="The Wandering Lensman" xmlUrl="https://www.thewanderinglensman.com/feeds/posts/default" htmlUrl="https://www.blogger.com/feeds/2623751121983216722/posts/default" />
|
||||||
<outline type="rss" htmlUrl="https://thefamilymuseum.co.uk/" title="THE FAMILY MUSEUM" xmlUrl="https://thefamilymuseum.co.uk/feed/" text="THE FAMILY MUSEUM" />
|
<outline text="Fup Duck Photography" type="rss" title="Fup Duck Photography" xmlUrl="https://fupduckphoto.wordpress.com/feed/" htmlUrl="https://fupduckphoto.wordpress.com" />
|
||||||
<outline text="Long Delays Possible" type="rss" title="Long Delays Possible" htmlUrl="https://www.longdelayspossible.com/" xmlUrl="https://www.longdelayspossible.com/feed/" />
|
<outline text="Paul Clarke" type="rss" title="Paul Clarke" xmlUrl="https://paulclarke.com/feed/" htmlUrl="https://paulclarke.com" />
|
||||||
<outline htmlUrl="https://www.theatlantic.com/author/alan-taylor/" title="Alan Taylor | The Atlantic" xmlUrl="https://www.theatlantic.com/feed/author/alan-taylor/" text="Alan Taylor | The Atlantic" type="rss" />
|
|
||||||
</outline>
|
</outline>
|
||||||
<outline title="Places" text="Places">
|
<outline text="Places" title="Places">
|
||||||
<outline htmlUrl="https://nazhamid.com/newsletter/" text="Weightshifting by Naz Hamid and Jen Schuetz" xmlUrl="https://nazhamid.com/weightshifting.xml" type="rss" title="Weightshifting by Naz Hamid and Jen Schuetz" />
|
<outline text="Weightshifting by Naz Hamid and Jen Schuetz" type="rss" title="Weightshifting by Naz Hamid and Jen Schuetz" xmlUrl="https://nazhamid.com/weightshifting.xml" htmlUrl="https://nazhamid.com/weightshifting.xml" />
|
||||||
<outline type="rss" xmlUrl="https://ephemeralnewyork.wordpress.com/feed/" htmlUrl="https://ephemeralnewyork.wordpress.com/" title="Ephemeral New York" text="Ephemeral New York" />
|
<outline text="Chris Arnade Walks the World " type="rss" title="Chris Arnade Walks the World " xmlUrl="https://walkingtheworld.substack.com/feed" htmlUrl="https://walkingtheworld.substack.com" />
|
||||||
|
<outline text="Ephemeral New York" type="rss" title="Ephemeral New York" xmlUrl="https://ephemeralnewyork.wordpress.com/feed/" htmlUrl="https://ephemeralnewyork.wordpress.com" />
|
||||||
</outline>
|
</outline>
|
||||||
<outline title="Urbanism" text="Urbanism">
|
<outline text="Urbanism" title="Urbanism">
|
||||||
<outline xmlUrl="https://urbanhikeskc.com/feed/" text="Urban Hikes KC " type="rss" htmlUrl="https://urbanhikeskc.com/" title="Urban Hikes KC " />
|
<outline text="The Corner Side Yard" type="rss" title="The Corner Side Yard" xmlUrl="https://petesaunders.substack.com/feed" htmlUrl="https://petesaunders.substack.com" />
|
||||||
<outline xmlUrl="https://kevinklinkenberg.substack.com/feed" title="The Messy City | Kevin Linkenberg" type="rss" text="The Messy City | Kevin Linkenberg" htmlUrl="https://kevinklinkenberg.substack.com/" />
|
<outline text="Urban Hikes KC " type="rss" title="Urban Hikes KC " xmlUrl="https://urbanhikeskc.com/feed/" htmlUrl="https://urbanhikeskc.com/" />
|
||||||
<outline htmlUrl="https://www.strongtowns.org/journal/" title="Strong Towns Media" type="rss" xmlUrl="https://www.strongtowns.org/journal?format=rss" text="Strong Towns Media" />
|
<outline text="Holy Mountain: A Blog about Our Common Life" type="rss" title="Holy Mountain: A Blog about Our Common Life" xmlUrl="https://brucefnesmith.blogspot.com/feeds/posts/default" htmlUrl="https://www.blogger.com/feeds/8920445775757996516/posts/default" />
|
||||||
<outline htmlUrl="https://www.granolashotgun.com/" type="rss" title="Granola Shotgun" text="Granola Shotgun" xmlUrl="https://www.granolashotgun.com/granolashotguncom?format=rss" />
|
<outline text="Streetsblog USA" type="rss" title="Streetsblog USA" xmlUrl="https://usa.streetsblog.org/feed" htmlUrl="https://usa.streetsblog.org/" />
|
||||||
<outline title="BICYCLE DUTCH" type="rss" text="BICYCLE DUTCH" xmlUrl="https://bicycledutch.wordpress.com/feed/" htmlUrl="https://bicycledutch.wordpress.com/" />
|
<outline text="BICYCLE DUTCH" type="rss" title="BICYCLE DUTCH" xmlUrl="https://bicycledutch.wordpress.com/feed/" htmlUrl="https://bicycledutch.wordpress.com" />
|
||||||
<outline xmlUrl="https://cornersideyard.blogspot.com/feeds/posts/default" title="The Corner Side Yard" text="The Corner Side Yard" type="rss" htmlUrl="https://cornersideyard.blogspot.com/" />
|
<outline text="The Messy City | Kevin Linkenberg" type="rss" title="The Messy City | Kevin Linkenberg" xmlUrl="https://kevinklinkenberg.substack.com/feed" htmlUrl="https://kevinklinkenberg.substack.com" />
|
||||||
<outline type="rss" xmlUrl="https://petesaunders.substack.com/feed" title="The Corner Side Yard" text="The Corner Side Yard" htmlUrl="https://petesaunders.substack.com/" />
|
<outline text="The Corner Side Yard" type="rss" title="The Corner Side Yard" xmlUrl="https://cornersideyard.blogspot.com/feeds/posts/default" htmlUrl="https://www.blogger.com/feeds/6772669033686003243/posts/default" />
|
||||||
<outline type="rss" htmlUrl="https://usa.streetsblog.org/" xmlUrl="https://usa.streetsblog.org/feed" text="Streetsblog USA" title="Streetsblog USA" />
|
<outline text="Strong Towns Media" type="rss" title="Strong Towns Media" xmlUrl="https://www.strongtowns.org/journal?format=rss" htmlUrl="https://www.strongtowns.org" />
|
||||||
<outline xmlUrl="https://brucefnesmith.blogspot.com/feeds/posts/default" text="Holy Mountain: A Blog about Our Common Life" title="Holy Mountain: A Blog about Our Common Life" type="rss" htmlUrl="https://brucefnesmith.blogspot.com/" />
|
|
||||||
</outline>
|
</outline>
|
||||||
<outline text="Garrett Mills" title="Garrett Mills">
|
<outline text="Garrett Mills" title="Garrett Mills">
|
||||||
<outline xmlUrl="https://garrettmills.dev/food/rss2.xml" htmlUrl="https://garrettmills.dev/food" type="rss" text="Eating the World" title="Eating the World" />
|
<outline text="Eating the World" type="rss" title="Eating the World" xmlUrl="https://garrettmills.dev/food/rss2.xml" htmlUrl="https://garrettmills.dev/food" />
|
||||||
<outline htmlUrl="https://garrettmills.dev/feed/" type="rss" text="Garrett Mills - Posts & Updates" title="Garrett Mills - Posts & Updates" xmlUrl="https://garrettmills.dev/feed/rss.xml" />
|
<outline text="Garrett's Bookmarks" type="rss" title="Garrett's Bookmarks" xmlUrl="https://garrettmills.dev/links/atom.xml" htmlUrl="https://garrettmills.dev/links/atom.xml" />
|
||||||
<outline text="Garrett's Blog" htmlUrl="https://garrettmills.dev/blog" xmlUrl="https://garrettmills.dev/blog/rss2.xml" type="rss" title="Garrett's Blog" />
|
<outline text="Garrett's Blog" type="rss" title="Garrett's Blog" xmlUrl="https://garrettmills.dev/blog/rss2.xml" htmlUrl="https://garrettmills.dev/blog" />
|
||||||
<outline htmlUrl="https://garrettmills.dev/links" text="Garrett's Bookmarks" type="rss" xmlUrl="https://garrettmills.dev/links/rss2.xml" title="Garrett's Bookmarks" />
|
<outline text="Garrett Mills - Posts & Updates" type="rss" title="Garrett Mills - Posts & Updates" xmlUrl="https://garrettmills.dev/feed/rss.xml" htmlUrl="https://garrettmills.dev/feed/" />
|
||||||
</outline>
|
</outline>
|
||||||
<outline title="Tech Blogs" text="Tech Blogs">
|
<outline text="Tech Blogs" title="Tech Blogs">
|
||||||
<outline title="fabiensanglard.net" text="fabiensanglard.net" xmlUrl="https://fabiensanglard.net/rss.xml" htmlUrl="https://fabiensanglard.net/" type="rss" />
|
<outline text="DKB Blog" type="rss" title="DKB Blog" xmlUrl="https://dkb.blog/feed" htmlUrl="https://dkb.blog" />
|
||||||
<outline xmlUrl="https://www.anildash.com/feed.xml" text="Anil Dash" type="rss" htmlUrl="https://anildash.com/" title="Anil Dash" />
|
<outline text="Eric Migicovsky's Blog RSS Feed - Pebble" type="rss" title="Eric Migicovsky's Blog RSS Feed - Pebble" xmlUrl="https://ericmigi.com/rss.xml" htmlUrl="http://github.com/dylang/node-rss" />
|
||||||
<outline text="Daring Fireball" xmlUrl="https://daringfireball.net/feeds/main" title="Daring Fireball" type="rss" htmlUrl="https://daringfireball.net/" />
|
<outline text="fabiensanglard.net" type="rss" title="fabiensanglard.net" xmlUrl="https://fabiensanglard.net/rss.xml" htmlUrl="https://fabiensanglard.net" />
|
||||||
<outline text="Dennis Schubert - Blog" xmlUrl="https://overengineer.dev/blog/feeds/all.xml" htmlUrl="https://overengineer.dev/" type="rss" title="Dennis Schubert - Blog" />
|
<outline text="Ctrl blog" type="rss" title="Ctrl blog" xmlUrl="https://feed.ctrl.blog/latest.atom" htmlUrl="https://feed.ctrl.blog/latest.atom" />
|
||||||
<outline type="rss" xmlUrl="https://mattcool.tech/rss.xml" title="MattCool.tech" htmlUrl="https://mattcool.tech/" text="MattCool.tech" />
|
<outline text="Daring Fireball" type="rss" title="Daring Fireball" xmlUrl="https://daringfireball.net/feeds/main" htmlUrl="https://daringfireball.net/feeds/main" />
|
||||||
<outline text="anderegg.ca" xmlUrl="https://anderegg.ca/feed.xml" type="rss" htmlUrl="https://anderegg.ca/" title="anderegg.ca" />
|
<outline text="anderegg.ca" type="rss" title="anderegg.ca" xmlUrl="https://anderegg.ca/feed.xml" htmlUrl="https://anderegg.ca/feed.xml" />
|
||||||
<outline type="rss" text="DKB Blog" xmlUrl="https://dkb.blog/feed" title="DKB Blog" htmlUrl="https://dkb.blog/" />
|
<outline text="Anil Dash" type="rss" title="Anil Dash" xmlUrl="https://www.anildash.com/feed.xml" htmlUrl="https://anildash.com/feed.xml" />
|
||||||
<outline htmlUrl="https://blog.acolyer.org/" text="the morning paper" title="the morning paper" xmlUrl="https://blog.acolyer.org/feed/" type="rss" />
|
<outline text="MattCool.tech" type="rss" title="MattCool.tech" xmlUrl="https://mattcool.tech/rss.xml" htmlUrl="https://mattcool.tech/" />
|
||||||
<outline type="rss" xmlUrl="https://drew.shoes/feed.xml" text="drew dot shoes" htmlUrl="https://drew.shoes/" title="drew dot shoes" />
|
<outline text="512 Pixels" type="rss" title="512 Pixels" xmlUrl="https://feedpress.me/512pixels" htmlUrl="http://512pixels.net" />
|
||||||
<outline type="rss" text="Jeff Geerling's Blog" xmlUrl="https://www.jeffgeerling.com/blog.xml" title="Jeff Geerling's Blog" htmlUrl="https://www.jeffgeerling.com/" />
|
<outline text="ignorethecode.net" type="rss" title="ignorethecode.net" xmlUrl="http://feeds.feedburner.com/IgnoreTheCode" htmlUrl="http://ignorethecode.net" />
|
||||||
<outline htmlUrl="http://ignorethecode.net/" title="ignorethecode.net" type="rss" xmlUrl="http://feeds.feedburner.com/IgnoreTheCode" text="ignorethecode.net" />
|
<outline text="LOW←TECH MAGAZINE English" type="rss" title="LOW←TECH MAGAZINE English" xmlUrl="https://solar.lowtechmagazine.com/index.xml" htmlUrl="https://solar.lowtechmagazine.com/" />
|
||||||
<outline xmlUrl="https://feed.ctrl.blog/latest.atom" type="rss" htmlUrl="https://www.ctrl.blog/" text="Ctrl blog" title="Ctrl blog" />
|
<outline text="Jeff Geerling's Blog" type="rss" title="Jeff Geerling's Blog" xmlUrl="https://www.jeffgeerling.com/blog.xml" htmlUrl="https://www.jeffgeerling.com/" />
|
||||||
<outline xmlUrl="https://webcurios.co.uk/feed/" htmlUrl="https://webcurios.co.uk/" text="webcurios" type="rss" title="webcurios" />
|
<outline text="Dennis Schubert - Blog" type="rss" title="Dennis Schubert - Blog" xmlUrl="https://overengineer.dev/blog/feeds/all.xml" htmlUrl="https://overengineer.dev/blog/feeds/all.xml" />
|
||||||
<outline xmlUrl="https://solar.lowtechmagazine.com/index.xml" type="rss" title="LOW←TECH MAGAZINE English" text="LOW←TECH MAGAZINE English" htmlUrl="https://solar.lowtechmagazine.com/" />
|
<outline text="webcurios" type="rss" title="webcurios" xmlUrl="https://webcurios.co.uk/feed/" htmlUrl="https://webcurios.co.uk" />
|
||||||
<outline xmlUrl="https://feedpress.me/512pixels" title="512 Pixels" htmlUrl="http://512pixels.net/" type="rss" text="512 Pixels" />
|
<outline text="Security, Privacy & Tech Inquiries" type="rss" title="Security, Privacy & Tech Inquiries" xmlUrl="https://blog.lukaszolejnik.com/rss/" htmlUrl="https://blog.lukaszolejnik.com/" />
|
||||||
|
<outline text="drew dot shoes" type="rss" title="drew dot shoes" xmlUrl="https://drew.shoes/feed.xml" htmlUrl="https://drew.shoes/" />
|
||||||
</outline>
|
</outline>
|
||||||
<outline title="Misc Nerd Shit" text="Misc Nerd Shit">
|
<outline text="Misc Nerd Shit" title="Misc Nerd Shit">
|
||||||
<outline htmlUrl="https://ciechanow.ski/" title="Bartosz Ciechanowski" text="Bartosz Ciechanowski" type="rss" xmlUrl="https://ciechanow.ski/atom.xml" />
|
<outline text="Combinatorics and more" type="rss" title="Combinatorics and more" xmlUrl="https://gilkalai.wordpress.com/feed/" htmlUrl="https://gilkalai.wordpress.com" />
|
||||||
<outline xmlUrl="http://joe-steel.com/feed" type="rss" title="Unauthoritative Pronouncements" text="Unauthoritative Pronouncements" htmlUrl="https://joe-steel.com/" />
|
<outline text="Unauthoritative Pronouncements" type="rss" title="Unauthoritative Pronouncements" xmlUrl="http://joe-steel.com/feed" htmlUrl="https://joe-steel.com/feed.xml" />
|
||||||
<outline type="rss" title="Cool Tools" xmlUrl="https://feedpress.me/CoolTools" text="Cool Tools" htmlUrl="https://kk.org/cooltools" />
|
<outline text="Bartosz Ciechanowski" type="rss" title="Bartosz Ciechanowski" xmlUrl="https://ciechanow.ski/atom.xml" htmlUrl="https://ciechanow.ski/" />
|
||||||
<outline type="rss" title="Combinatorics and more" xmlUrl="https://gilkalai.wordpress.com/feed/" htmlUrl="https://gilkalai.wordpress.com/" text="Combinatorics and more" />
|
<outline text="Cool Tools" type="rss" title="Cool Tools" xmlUrl="https://feedpress.me/CoolTools" htmlUrl="https://kk.org/cooltools" />
|
||||||
</outline>
|
</outline>
|
||||||
<outline text="Industry & Culture" title="Industry & Culture">
|
<outline text="Industry & Culture" title="Industry & Culture">
|
||||||
<outline text="Kevin Drum – Mother Jones" title="Kevin Drum – Mother Jones" type="rss" xmlUrl="https://www.motherjones.com/kevin-drum/feed/" htmlUrl="https://www.motherjones.com/" />
|
<outline text="FrameLab" type="rss" title="FrameLab" xmlUrl="https://www.theframelab.org/latest/rss/" htmlUrl="https://www.theframelab.org/" />
|
||||||
<outline type="rss" title="Stratechery by Ben Thompson" text="Stratechery by Ben Thompson" xmlUrl="https://stratechery.com/feed/" htmlUrl="https://stratechery.com/" />
|
<outline text="Blog - Behzod" type="rss" title="Blog - Behzod" xmlUrl="https://behzod.com/blog?format=rss" htmlUrl="https://behzod.com/blog/" />
|
||||||
|
<outline text="Garbage Day" type="rss" title="Garbage Day" xmlUrl="https://rss.beehiiv.com/feeds/owMwaGYU36.xml" htmlUrl="https://www.garbageday.email/" />
|
||||||
|
<outline text="Kevin Drum – Mother Jones" type="rss" title="Kevin Drum – Mother Jones" xmlUrl="https://www.motherjones.com/kevin-drum/feed/" htmlUrl="https://www.motherjones.com" />
|
||||||
</outline>
|
</outline>
|
||||||
<outline text="Web Comics" title="Web Comics">
|
<outline text="Web Comics" title="Web Comics">
|
||||||
<outline htmlUrl="https://www.smbc-comics.com/" type="rss" text="Saturday Morning Breakfast Cereal" title="Saturday Morning Breakfast Cereal" xmlUrl="https://www.smbc-comics.com/comic/rss" />
|
<outline text="CommitStrip" type="rss" title="CommitStrip" xmlUrl="https://www.commitstrip.com/en/feed/?" htmlUrl="https://www.commitstrip.com" />
|
||||||
<outline title="Dimspire.me" htmlUrl="https://dimspire.me/" type="rss" text="Dimspire.me" xmlUrl="https://feedpress.me/dimspire.xml" />
|
<outline text="xkcd.com" type="rss" title="xkcd.com" xmlUrl="https://xkcd.com/atom.xml" htmlUrl="https://xkcd.com/" />
|
||||||
<outline text="CommitStrip" htmlUrl="https://www.commitstrip.com/" xmlUrl="https://www.commitstrip.com/en/feed/?" type="rss" title="CommitStrip" />
|
<outline text="Saturday Morning Breakfast Cereal" type="rss" title="Saturday Morning Breakfast Cereal" xmlUrl="https://www.smbc-comics.com/comic/rss" htmlUrl="https://www.smbc-comics.com/" />
|
||||||
<outline text="Bloom County" xmlUrl="https://www.comicsrss.com/rss/bloomcounty.rss" type="rss" title="Bloom County" htmlUrl="https://www.gocomics.com/bloomcounty" />
|
<outline text="PHD Comics" type="rss" title="PHD Comics" xmlUrl="https://phdcomics.com/gradfeed.php" htmlUrl="http://www.phdcomics.com" />
|
||||||
<outline xmlUrl="https://xkcd.com/atom.xml" title="xkcd.com" text="xkcd.com" htmlUrl="https://xkcd.com/" type="rss" />
|
<outline text="Bloom County" type="rss" title="Bloom County" xmlUrl="https://www.comicsrss.com/rss/bloomcounty.rss" htmlUrl="https://www.gocomics.com/bloomcounty" />
|
||||||
<outline type="rss" title="PHD Comics" xmlUrl="https://phdcomics.com/gradfeed.php" text="PHD Comics" htmlUrl="http://www.phdcomics.com/" />
|
<outline text="Dimspire.me" type="rss" title="Dimspire.me" xmlUrl="https://feedpress.me/dimspire.xml" htmlUrl="https://feedpress.me/dimspire" />
|
||||||
</outline>
|
</outline>
|
||||||
<outline text="Space" title="Space">
|
<outline text="Space" title="Space">
|
||||||
<outline htmlUrl="https://blogs.nasa.gov/" text="NASA Blogs" xmlUrl="https://blogs.nasa.gov/feed/" type="rss" title="NASA Blogs" />
|
<outline text="Nasa News Blog" type="rss" title="Nasa News Blog" xmlUrl="https://nasa-newsblog.blogspot.com/feeds/posts/default?alt=rss" htmlUrl="https://nasa-newsblog.blogspot.com/" />
|
||||||
<outline htmlUrl="https://www.nasa.gov/image-of-the-day/" xmlUrl="https://www.nasa.gov/rss/dyn/lg_image_of_the_day.rss" type="rss" title="NASA Image of the Day" text="NASA Image of the Day" />
|
<outline text="NASA Image of the Day" type="rss" title="NASA Image of the Day" xmlUrl="https://www.nasa.gov/rss/dyn/lg_image_of_the_day.rss" htmlUrl="https://www.nasa.gov/image-of-the-day/" />
|
||||||
<outline text="Nasa News Blog" title="Nasa News Blog" htmlUrl="https://nasa-newsblog.blogspot.com/" type="rss" xmlUrl="https://nasa-newsblog.blogspot.com/feeds/posts/default?alt=rss" />
|
<outline text="NASA Mars Perseverance Rover: Mission Updates" type="rss" title="NASA Mars Perseverance Rover: Mission Updates" xmlUrl="https://mars.nasa.gov/rss/api/?feed=blogs&category=mars2020&feedtype=rss" htmlUrl="https://mars.nasa.gov/mars2020/mission/status/" />
|
||||||
<outline text="NASA Mars Perseverance Rover: Mission Updates" title="NASA Mars Perseverance Rover: Mission Updates" htmlUrl="https://mars.nasa.gov/mars2020/mission/status/" xmlUrl="https://mars.nasa.gov/rss/api/?feed=blogs&category=mars2020&feedtype=rss" type="rss" />
|
<outline text="NASA Blogs" type="rss" title="NASA Blogs" xmlUrl="https://blogs.nasa.gov/feed/" htmlUrl="https://blogs.nasa.gov" />
|
||||||
</outline>
|
</outline>
|
||||||
<outline title="News" text="News">
|
<outline text="News" title="News">
|
||||||
<outline title="Mirror Indy" type="rss" xmlUrl="https://mirrorindy.org/feed/" htmlUrl="https://mirrorindy.org/" text="Mirror Indy" />
|
<outline text="McSweeney’s" type="rss" title="McSweeney’s" xmlUrl="https://feeds.feedburner.com/mcsweeneys" htmlUrl="https://www.mcsweeneys.net/" />
|
||||||
<outline title="Indianapolis Monthly" htmlUrl="https://www.indianapolismonthly.com/" type="rss" xmlUrl="https://www.indianapolismonthly.com/feed/" text="Indianapolis Monthly" />
|
<outline text="The Lawrence Times" type="rss" title="The Lawrence Times" xmlUrl="https://lawrencekstimes.com/feed/" htmlUrl="https://lawrencekstimes.com" />
|
||||||
<outline title="WFYI - Indianapolis - Local News" htmlUrl="https://www.wfyi.org/news/wfyi-news" text="WFYI - Indianapolis - Local News" type="rss" xmlUrl="https://www.wfyi.org/news/wfyi-news/rss" />
|
|
||||||
<outline text="The Lawrence Times" type="rss" xmlUrl="https://lawrencekstimes.com/feed/" htmlUrl="https://lawrencekstimes.com/" title="The Lawrence Times" />
|
|
||||||
<outline xmlUrl="https://www.wfyi.org/news/arts-and-culture/rss" title="WFYI - Indianapolis - Arts & Culture" text="WFYI - Indianapolis - Arts & Culture" htmlUrl="https://www.wfyi.org/news/arts-and-culture" type="rss" />
|
|
||||||
<outline htmlUrl="https://www.nuvo.net/search/?f=rss&t=article&l=50&s=start_time&sd=desc" xmlUrl="https://www.nuvo.net/search/?f=rss&t=article&l=50&s=start_time&sd=desc" text="NUVO - Indianapolis" type="rss" title="NUVO - Indianapolis" />
|
|
||||||
<outline title="Ars Technica - All content" xmlUrl="https://feeds.arstechnica.com/arstechnica/index/" type="rss" text="Ars Technica - All content" htmlUrl="https://arstechnica.com/" />
|
|
||||||
</outline>
|
</outline>
|
||||||
<outline title="Dev Blogs" text="Dev Blogs">
|
<outline text="Dev Blogs" title="Dev Blogs">
|
||||||
<outline title="Hackle's blog" type="rss" xmlUrl="https://www.hacklewayne.com/rss/index.xml" htmlUrl="https://hacklewayne.com/" text="Hackle's blog" />
|
<outline text="Secret Weblog" type="rss" title="Secret Weblog" xmlUrl="https://blog.startifact.com/atom.xml" htmlUrl="https://blog.startifact.com/atom.xml" />
|
||||||
<outline title="Gunnar Wolf - Nice grey life" type="rss" htmlUrl="https://gwolf.org/" xmlUrl="https://gwolf.org/rss.xml" text="Gunnar Wolf - Nice grey life" />
|
<outline text="NULL BITMAP by Justin Jaffray" type="rss" title="NULL BITMAP by Justin Jaffray" xmlUrl="https://buttondown.com/jaffray/rss" htmlUrl="https://buttondown.com/jaffray" />
|
||||||
<outline title="Mathias Verraes" text="Mathias Verraes" htmlUrl="https://verraes.net/" type="rss" xmlUrl="https://verraes.net/feed.atom" />
|
<outline text="CSS In Real Life - Michelle Barker" type="rss" title="CSS In Real Life - Michelle Barker" xmlUrl="https://css-irl.info/rss.xml" htmlUrl="https://css-irl.info/rss.xml/" />
|
||||||
<outline text="John D. Cook" type="rss" xmlUrl="https://www.johndcook.com/blog/feed/" title="John D. Cook" htmlUrl="https://www.johndcook.com/blog" />
|
<outline text="Geoligard - Goran Popović (PHP+Laravel)" type="rss" title="Geoligard - Goran Popović (PHP+Laravel)" xmlUrl="https://geoligard.com/feed" htmlUrl="https://geoligard.com/feed" />
|
||||||
<outline type="rss" title="David Smith, Independent iOS Developer" htmlUrl="http://david-smith.org/" text="David Smith, Independent iOS Developer" xmlUrl="https://www.david-smith.org/atom.xml" />
|
<outline text="Interrupt" type="rss" title="Interrupt" xmlUrl="https://interrupt.memfault.com/feed.xml" htmlUrl="https://interrupt.memfault.com/" />
|
||||||
<outline xmlUrl="https://samwho.dev/rss.xml" htmlUrl="https://samwho.dev/" type="rss" title="samwho.dev" text="samwho.dev" />
|
<outline text="Habitat Chronicles" type="rss" title="Habitat Chronicles" xmlUrl="http://habitatchronicles.com/feed/" htmlUrl="http://habitatchronicles.com" />
|
||||||
<outline htmlUrl="https://css-tricks.com/" title="CSS-Tricks" xmlUrl="https://css-tricks.com/feed/" text="CSS-Tricks" type="rss" />
|
<outline text="Evan Hahn's blog" type="rss" title="Evan Hahn's blog" xmlUrl="https://evanhahn.com/blog/index.xml" htmlUrl="https://evanhahn.com/blog/" />
|
||||||
<outline text="Davor Minchorov | Articles" title="Davor Minchorov | Articles" xmlUrl="https://davorminchorov.com/feed/articles" htmlUrl="https://davorminchorov.com/articles" type="rss" />
|
<outline text="zverok's space - Ukrainian developer" type="rss" title="zverok's space - Ukrainian developer" xmlUrl="https://zverok.space/feed.xml" htmlUrl="https://zverok.space/" />
|
||||||
<outline title="Chris Coyier" type="rss" htmlUrl="https://chriscoyier.net/" xmlUrl="https://chriscoyier.net/feed/" text="Chris Coyier" />
|
<outline text="ides.dev" type="rss" title="ides.dev" xmlUrl="https://ides.dev/rss.xml" htmlUrl="https://ides.dev" />
|
||||||
<outline htmlUrl="https://blog.codinghorror.com/" xmlUrl="https://blog.codinghorror.com/rss/" text="Coding Horror" type="rss" title="Coding Horror" />
|
<outline text="Digital Flapjack - Michael Winston Dales" type="rss" title="Digital Flapjack - Michael Winston Dales" xmlUrl="https://digitalflapjack.com/blog/index.xml" htmlUrl="https://digitalflapjack.com/blog/" />
|
||||||
<outline xmlUrl="https://devblogs.microsoft.com/oldnewthing/author/oldnewthing/feed" text="Raymond Chen, Author at The Old New Thing" htmlUrl="https://devblogs.microsoft.com/oldnewthing/author/oldnewthing" title="Raymond Chen, Author at The Old New Thing" type="rss" />
|
<outline text="Digital Flapjack - Michael Winston Dales - Weeknotes" type="rss" title="Digital Flapjack - Michael Winston Dales - Weeknotes" xmlUrl="https://digitalflapjack.com/weeknotes/index.xml" htmlUrl="https://digitalflapjack.com/weeknotes/" />
|
||||||
<outline xmlUrl="https://iamsang.com/rss.xml" title="I am Sang" type="rss" htmlUrl="https://iamsang.com/" text="I am Sang" />
|
<outline text="Dave Rupert" type="rss" title="Dave Rupert" xmlUrl="https://daverupert.com/atom.xml" htmlUrl="https://daverupert.com" />
|
||||||
<outline text="Drew DeVault's blog" title="Drew DeVault's blog" type="rss" xmlUrl="https://drewdevault.com/blog/index.xml" htmlUrl="https://drewdevault.com/" />
|
<outline text="The Twenty Percent" type="rss" title="The Twenty Percent" xmlUrl="https://kuenzi.dev/feed.xml" htmlUrl="/feed.xml" />
|
||||||
<outline xmlUrl="https://grant.jurgensen.dev/feed.xml" htmlUrl="https://grant.jurgensen.dev/" text="Grant Jurgensen" title="Grant Jurgensen" type="rss" />
|
<outline text="Harris Raftopoulos (Laravel)" type="rss" title="Harris Raftopoulos (Laravel)" xmlUrl="https://www.harrisrafto.eu/rss/" htmlUrl="https://www.harrisrafto.eu/" />
|
||||||
<outline htmlUrl="https://lornajane.net/" text="LornaJane" title="LornaJane" type="rss" xmlUrl="https://lornajane.net/feed" />
|
<outline text="despair labs - Rob Norris" type="rss" title="despair labs - Rob Norris" xmlUrl="https://despairlabs.com/blog/index.xml" htmlUrl="https://despairlabs.com/blog/" />
|
||||||
<outline text="Learning TypeScript Blog" xmlUrl="https://www.learningtypescript.com/articles/rss.xml" title="Learning TypeScript Blog" type="rss" htmlUrl="https://www.learningtypescript.com/articles" />
|
<outline text="Christoph Rumpel Blog Feed" type="rss" title="Christoph Rumpel Blog Feed" xmlUrl="https://christoph-rumpel.com/feed" htmlUrl="https://christoph-rumpel.com/feed" />
|
||||||
<outline text="Cees-Jan Kiewiet's blog" htmlUrl="https://blog.wyrihaximus.net/" title="Cees-Jan Kiewiet's blog" xmlUrl="https://blog.wyrihaximus.net/atom.xml" type="rss" />
|
<outline text="CSS-Tricks" type="rss" title="CSS-Tricks" xmlUrl="https://css-tricks.com/feed/" htmlUrl="https://css-tricks.com" />
|
||||||
<outline htmlUrl="http://research.swtch.com/feed.atom" title="research!rsc" type="rss" xmlUrl="https://research.swtch.com/feed.atom" text="research!rsc" />
|
<outline text="Faultlore" type="rss" title="Faultlore" xmlUrl="https://faultlore.com/blah/rss.xml" htmlUrl="https://gankra.github.io/blah/" />
|
||||||
<outline type="rss" xmlUrl="https://xn--rpa.cc/feed.atom" htmlUrl="http://xn--rpa.cc/" text="ʞ.cc - lexi hale" title="ʞ.cc - lexi hale" />
|
<outline text="freek.dev - all blogposts" type="rss" title="freek.dev - all blogposts" xmlUrl="https://freek.dev/feed" htmlUrl="https://freek.dev/feed" />
|
||||||
<outline text="Dan Luu" xmlUrl="https://danluu.com/atom.xml" type="rss" htmlUrl="https://danluu.com/atom/index.xml" title="Dan Luu" />
|
<outline text="Matt's Headroom" type="rss" title="Matt's Headroom" xmlUrl="https://blog.millerti.me/index.xml" htmlUrl="https://blog.millerti.me/" />
|
||||||
<outline title="Tania Rascia | RSS Feed" xmlUrl="https://www.taniarascia.com/rss.xml" text="Tania Rascia | RSS Feed" type="rss" htmlUrl="https://www.taniarascia.com/" />
|
<outline text="Davor Minchorov | Articles" type="rss" title="Davor Minchorov | Articles" xmlUrl="https://davorminchorov.com/feed/articles" htmlUrl="" />
|
||||||
<outline text="Holovaty.com" htmlUrl="https://www.holovaty.com/" type="rss" title="Holovaty.com" xmlUrl="https://www.holovaty.com/rss/" />
|
<outline text="Infrastructure as Posts" type="rss" title="Infrastructure as Posts" xmlUrl="https://www.infrastructureposts.com/feed" htmlUrl="https://www.infrastructureposts.com" />
|
||||||
<outline htmlUrl="http://jvns.ca/" text="Julia Evans" xmlUrl="https://jvns.ca/atom.xml" title="Julia Evans" type="rss" />
|
<outline text="Antti Holvikari" type="rss" title="Antti Holvikari" xmlUrl="https://anttih.com/feed.xml" htmlUrl="http://anttih.com/feed.xml" />
|
||||||
<outline htmlUrl="https://leancrew.com/all-this/" title="And now it’s all this" xmlUrl="http://www.leancrew.com/all-this/feed/" text="And now it’s all this" type="rss" />
|
<outline text="John D. Cook" type="rss" title="John D. Cook" xmlUrl="https://www.johndcook.com/blog/feed/" htmlUrl="https://www.johndcook.com/blog" />
|
||||||
<outline text="Dustycloud Brainstorms" htmlUrl="https://dustycloud.org/dustycloud.org" title="Dustycloud Brainstorms" type="rss" xmlUrl="https://dustycloud.org/blog/index.xml" />
|
<outline text="Eric L. Barnes" type="rss" title="Eric L. Barnes" xmlUrl="https://ericlbarnes.com/feed/" htmlUrl="https://ericlbarnes.com/" />
|
||||||
<outline type="rss" xmlUrl="https://notes.eatonphil.com/rss.xml" title="Phil Eaton - Notes on software development" text="Phil Eaton - Notes on software development" htmlUrl="http://notes.eatonphil.com/" />
|
<outline text="The Mad Science of Brett Terpstra" type="rss" title="The Mad Science of Brett Terpstra" xmlUrl="http://brett.trpstra.net/brettterpstra" htmlUrl="https://brett.trpstra.net/" />
|
||||||
<outline text="Posts :: TheOrangeOne" xmlUrl="https://theorangeone.net/posts/feed/" type="rss" title="Posts :: TheOrangeOne" htmlUrl="https://theorangeone.net/" />
|
<outline text="Aral Balkan" type="rss" title="Aral Balkan" xmlUrl="https://ar.al/index.xml" htmlUrl="https://ar.al/" />
|
||||||
<outline title="Bram.us" text="Bram.us" type="rss" xmlUrl="https://www.bram.us/feed/" htmlUrl="https://www.bram.us/" />
|
<outline text="Kieran Healy" type="rss" title="Kieran Healy" xmlUrl="https://kieranhealy.org/blog/index.xml" htmlUrl="https://kieranhealy.org/blog/" />
|
||||||
<outline text="Random ASCII – tech blog of Bruce Dawson" htmlUrl="https://randomascii.wordpress.com/" title="Random ASCII – tech blog of Bruce Dawson" xmlUrl="https://randomascii.wordpress.com/feed/" type="rss" />
|
<outline text="Dan Luu" type="rss" title="Dan Luu" xmlUrl="https://danluu.com/atom.xml" />
|
||||||
<outline title="Nathan Grigg's blog" text="Nathan Grigg's blog" type="rss" htmlUrl="https://nathangrigg.com/" xmlUrl="https://nathangrigg.com/feed/all.rss" />
|
<outline text="Ferd.ca" type="rss" title="Ferd.ca" xmlUrl="https://ferd.ca/feed.rss" htmlUrl="https://ferd.ca/" />
|
||||||
<outline title="Aral Balkan" htmlUrl="https://ar.al/" text="Aral Balkan" xmlUrl="https://ar.al/index.xml" type="rss" />
|
<outline text="Phil Eaton - Notes on software development" type="rss" title="Phil Eaton - Notes on software development" xmlUrl="https://notes.eatonphil.com/rss.xml" />
|
||||||
<outline text="Terence Eden’s Blog" htmlUrl="https://shkspr.mobi/blog" title="Terence Eden’s Blog" type="rss" xmlUrl="https://shkspr.mobi/blog/feed/atom/" />
|
<outline text="Chris Coyier" type="rss" title="Chris Coyier" xmlUrl="https://chriscoyier.net/feed/" htmlUrl="https://chriscoyier.net" />
|
||||||
<outline xmlUrl="https://joeferguson.me/blog/feed.atom" text="Joe Ferguson" type="rss" htmlUrl="https://joeferguson.me/" title="Joe Ferguson" />
|
<outline text="inessential by Brent Simmons" type="rss" title="inessential by Brent Simmons" xmlUrl="https://inessential.com/xml/rss.xml" htmlUrl="https://inessential.com/" />
|
||||||
<outline type="rss" htmlUrl="https://www.infrastructureposts.com/" title="Infrastructure as Posts" xmlUrl="https://www.infrastructureposts.com/feed" text="Infrastructure as Posts" />
|
<outline text="LornaJane" type="rss" title="LornaJane" xmlUrl="https://lornajane.net/feed" htmlUrl="https://lornajane.net" />
|
||||||
<outline type="rss" title="Ben Hoyt's technical writing" text="Ben Hoyt's technical writing" xmlUrl="https://benhoyt.com/writings/rss.xml" htmlUrl="https://benhoyt.com/writings/" />
|
<outline text="Holovaty.com" type="rss" title="Holovaty.com" xmlUrl="https://www.holovaty.com/rss/" htmlUrl="https://www.holovaty.com/" />
|
||||||
<outline type="rss" htmlUrl="https://kieranhealy.org/blog/" text="Kieran Healy" xmlUrl="https://kieranhealy.org/blog/index.xml" title="Kieran Healy" />
|
<outline text="Julia Evans" type="rss" title="Julia Evans" xmlUrl="https://jvns.ca/atom.xml" htmlUrl="https://jvns.ca/atom.xml" />
|
||||||
<outline type="rss" xmlUrl="https://anttih.com/feed.xml" htmlUrl="http://anttih.com/" text="Antti Holvikari" title="Antti Holvikari" />
|
<outline text="Mathias Verraes" type="rss" title="Mathias Verraes" xmlUrl="https://verraes.net/feed.atom" htmlUrl="https://verraes.net/feed.atom" />
|
||||||
<outline text="Liss is More" type="rss" htmlUrl="https://www.caseyliss.com/" xmlUrl="https://www.caseyliss.com/rss" title="Liss is More" />
|
<outline text="Primary Unit" type="rss" title="Primary Unit" xmlUrl="https://www.robjwells.com/rss" htmlUrl="https://www.robjwells.com" />
|
||||||
<outline type="rss" xmlUrl="https://scottrichmond.me/feed/" text="Scott C. Richmond" htmlUrl="https://scottrichmond.me/" title="Scott C. Richmond" />
|
<outline text="Scott C. Richmond" type="rss" title="Scott C. Richmond" xmlUrl="https://scottrichmond.me/feed/" htmlUrl="https://scottrichmond.me/feed/" />
|
||||||
<outline title="nikic's blog" text="nikic's blog" type="rss" xmlUrl="https://www.npopov.com/rss.xml" htmlUrl="https://www.npopov.com/" />
|
<outline text="Ben Hoyt's technical writing" type="rss" title="Ben Hoyt's technical writing" xmlUrl="https://benhoyt.com/writings/rss.xml" htmlUrl="https://benhoyt.com/writings/" />
|
||||||
<outline type="rss" text="Catch TS" title="Catch TS" xmlUrl="https://catchts.com/api/rss" htmlUrl="https://catchts.com/" />
|
<outline text="Hackle's blog" type="rss" title="Hackle's blog" xmlUrl="https://www.hacklewayne.com/rss/index.xml" htmlUrl="https://hacklewayne.com" />
|
||||||
<outline xmlUrl="https://benholmen.com/rss.xml" type="rss" htmlUrl="https://benholmen.com/" title="Ben Holmen" text="Ben Holmen" />
|
<outline text="Gunnar Wolf - Nice grey life" type="rss" title="Gunnar Wolf - Nice grey life" xmlUrl="https://gwolf.org/rss.xml" htmlUrl="https://gwolf.org" />
|
||||||
<outline text="Bitsplitting.org" htmlUrl="https://bitsplitting.org/" type="rss" xmlUrl="https://bitsplitting.org/feed/" title="Bitsplitting.org" />
|
<outline text="Bram.us" type="rss" title="Bram.us" xmlUrl="https://www.bram.us/feed/" htmlUrl="https://www.bram.us" />
|
||||||
<outline type="rss" htmlUrl="https://ferd.ca/" title="Ferd.ca" text="Ferd.ca" xmlUrl="https://ferd.ca/feed.rss" />
|
<outline text="samwho.dev" type="rss" title="samwho.dev" xmlUrl="https://samwho.dev/rss.xml" htmlUrl="/rss.xml" />
|
||||||
<outline htmlUrl="https://derickrethans.nl/archive.html" text="Derick Rethans" xmlUrl="https://derickrethans.nl/feed.xml" type="rss" title="Derick Rethans" />
|
<outline text="nikic's blog" type="rss" title="nikic's blog" xmlUrl="https://www.npopov.com/rss.xml" htmlUrl="https://www.npopov.com" />
|
||||||
<outline type="rss" title="Primary Unit" xmlUrl="https://www.robjwells.com/rss" htmlUrl="https://www.robjwells.com/" text="Primary Unit" />
|
<outline text="research!rsc" type="rss" title="research!rsc" xmlUrl="https://research.swtch.com/feed.atom" htmlUrl="https://research.swtch.com/feed.atom" />
|
||||||
<outline htmlUrl="https://ethanmarcotte.com/" xmlUrl="https://ethanmarcotte.com/wrote/feed.xml" title="Ethan Marcotte’s website" text="Ethan Marcotte’s website" type="rss" />
|
<outline text="ʞ.cc - lexi hale" type="rss" title="ʞ.cc - lexi hale" xmlUrl="https://xn--rpa.cc/feed.atom" htmlUrl="http://ʞ.cc/feed.atom" />
|
||||||
<outline htmlUrl="https://gankra.github.io/blah/" text="Faultlore" type="rss" title="Faultlore" xmlUrl="https://faultlore.com/blah/rss.xml" />
|
<outline text="Raph Levien’s blog" type="rss" title="Raph Levien’s blog" xmlUrl="https://raphlinus.github.io/feed.xml" htmlUrl="https://raphlinus.github.io/feed.xml" />
|
||||||
<outline xmlUrl="https://matt.might.net/articles/feed.rss" htmlUrl="http://matt.might.net/" text="Matt Might's blog" title="Matt Might's blog" type="rss" />
|
<outline text="I am Sang" type="rss" title="I am Sang" xmlUrl="https://iamsang.com/rss.xml" htmlUrl="https://iamsang.com" />
|
||||||
<outline htmlUrl="https://freek.dev/feed" type="rss" title="freek.dev - all blogposts" text="freek.dev - all blogposts" xmlUrl="https://freek.dev/feed" />
|
<outline text="Joe Ferguson" type="rss" title="Joe Ferguson" xmlUrl="https://joeferguson.me/blog/feed.atom" htmlUrl="https://joeferguson.me/blog/feed.atom" />
|
||||||
<outline type="rss" text="Secret Weblog" htmlUrl="https://blog.startifact.com/" title="Secret Weblog" xmlUrl="https://blog.startifact.com/atom.xml" />
|
<outline text="And now it’s all this" type="rss" title="And now it’s all this" xmlUrl="http://www.leancrew.com/all-this/feed/" htmlUrl="https://leancrew.com/all-this/" />
|
||||||
<outline xmlUrl="http://brett.trpstra.net/brettterpstra" htmlUrl="https://brettterpstra.com/" text="The Mad Science of Brett Terpstra" type="rss" title="The Mad Science of Brett Terpstra" />
|
<outline text="Catch TS" type="rss" title="Catch TS" xmlUrl="https://catchts.com/api/rss" />
|
||||||
<outline type="rss" htmlUrl="https://inessential.com/" title="inessential by Brent Simmons" text="inessential by Brent Simmons" xmlUrl="https://inessential.com/xml/rss.xml" />
|
<outline text="David Smith, Independent iOS Developer" type="rss" title="David Smith, Independent iOS Developer" xmlUrl="https://www.david-smith.org/atom.xml" htmlUrl="http://david-smith.org/atom.xml" />
|
||||||
<outline title="Eric L. Barnes" type="rss" text="Eric L. Barnes" xmlUrl="https://ericlbarnes.com/feed/" htmlUrl="https://ericlbarnes.com/" />
|
<outline text="Bitsplitting.org" type="rss" title="Bitsplitting.org" xmlUrl="https://bitsplitting.org/feed/" htmlUrl="https://bitsplitting.org" />
|
||||||
<outline title="Raph Levien’s blog" text="Raph Levien’s blog" htmlUrl="https://raphlinus.github.io/" type="rss" xmlUrl="https://raphlinus.github.io/feed.xml" />
|
<outline text="Tania Rascia | RSS Feed" type="rss" title="Tania Rascia | RSS Feed" xmlUrl="https://www.taniarascia.com/rss.xml" htmlUrl="https://taniarascia.com" />
|
||||||
<outline type="rss" htmlUrl="https://chown.me/" title="Daniel Jakots" text="Daniel Jakots" xmlUrl="https://chown.me/blog/feeds/atom.xml" />
|
<outline text="Raymond Chen, Author at The Old New Thing" type="rss" title="Raymond Chen, Author at The Old New Thing" xmlUrl="https://devblogs.microsoft.com/oldnewthing/author/oldnewthing/feed" htmlUrl="https://devblogs.microsoft.com/oldnewthing/author/oldnewthing" />
|
||||||
<outline title="Matt's Headroom" type="rss" htmlUrl="https://blog.millerti.me/" text="Matt's Headroom" xmlUrl="https://blog.millerti.me/index.xml" />
|
<outline text="Posts :: TheOrangeOne" type="rss" title="Posts :: TheOrangeOne" xmlUrl="https://theorangeone.net/posts/feed/" htmlUrl="https://theorangeone.net/" />
|
||||||
<outline title="Christoph Rumpel Blog Feed" type="rss" text="Christoph Rumpel Blog Feed" xmlUrl="https://christoph-rumpel.com/feed" htmlUrl="https://christoph-rumpel.com/feed" />
|
<outline text="Terence Eden’s Blog" type="rss" title="Terence Eden’s Blog" xmlUrl="https://shkspr.mobi/blog/feed/atom/" htmlUrl="https://shkspr.mobi/blog/feed/atom/" />
|
||||||
|
<outline text="Cees-Jan Kiewiet's blog" type="rss" title="Cees-Jan Kiewiet's blog" xmlUrl="https://blog.wyrihaximus.net/atom.xml" htmlUrl="https://blog.wyrihaximus.net/atom.xml" />
|
||||||
|
<outline text="Learning TypeScript Blog" type="rss" title="Learning TypeScript Blog" xmlUrl="https://www.learningtypescript.com/articles/rss.xml" htmlUrl="https://www.learningtypescript.com/articles" />
|
||||||
|
<outline text="Ethan Marcotte’s website" type="rss" title="Ethan Marcotte’s website" xmlUrl="https://ethanmarcotte.com/wrote/feed.xml" htmlUrl="https://ethanmarcotte.com/wrote/feed.xml" />
|
||||||
|
<outline text="Coding Horror" type="rss" title="Coding Horror" xmlUrl="https://blog.codinghorror.com/rss/" htmlUrl="https://blog.codinghorror.com/" />
|
||||||
|
<outline text="Grant Jurgensen" type="rss" title="Grant Jurgensen" xmlUrl="https://grant.jurgensen.dev/feed.xml" />
|
||||||
|
<outline text="Random ASCII – tech blog of Bruce Dawson" type="rss" title="Random ASCII – tech blog of Bruce Dawson" xmlUrl="https://randomascii.wordpress.com/feed/" htmlUrl="https://randomascii.wordpress.com" />
|
||||||
|
<outline text="Ben Holmen" type="rss" title="Ben Holmen" xmlUrl="https://benholmen.com/rss.xml" htmlUrl="https://benholmen.com" />
|
||||||
|
<outline text="Liss is More" type="rss" title="Liss is More" xmlUrl="https://www.caseyliss.com/rss" htmlUrl="https://www.caseyliss.com" />
|
||||||
|
<outline text="Daniel Jakots" type="rss" title="Daniel Jakots" xmlUrl="https://chown.me/blog/feeds/atom.xml" htmlUrl="https://chown.me/blog/feeds/atom.xml" />
|
||||||
|
<outline text="Drew DeVault's blog" type="rss" title="Drew DeVault's blog" xmlUrl="https://drewdevault.com/blog/index.xml" htmlUrl="gemini://drewdevault.com" />
|
||||||
|
<outline text="Dustycloud Brainstorms" type="rss" title="Dustycloud Brainstorms" xmlUrl="https://dustycloud.org/blog/index.xml" htmlUrl="dustycloud.org//blog/index.xml" />
|
||||||
|
<outline text="Matt Might's blog" type="rss" title="Matt Might's blog" xmlUrl="https://matt.might.net/articles/feed.rss" htmlUrl="http://matt.might.net/" />
|
||||||
|
<outline text="Nathan Grigg's blog" type="rss" title="Nathan Grigg's blog" xmlUrl="https://nathangrigg.com/feed/all.rss" htmlUrl="https://nathangrigg.com/" />
|
||||||
|
<outline text="Derick Rethans" type="rss" title="Derick Rethans" xmlUrl="https://derickrethans.nl/feed.xml" htmlUrl="https://derickrethans.nl/archive.html" />
|
||||||
</outline>
|
</outline>
|
||||||
<outline title="Forums & Collectives" text="Forums & Collectives" />
|
|
||||||
<outline text="Projects & Products" title="Projects & Products">
|
<outline text="Projects & Products" title="Projects & Products">
|
||||||
<outline text="Fish-shell Blog" xmlUrl="https://fishshell.com/blog/feed.xml" type="rss" title="Fish-shell Blog" htmlUrl="https://fishshell.com/blog/" />
|
<outline text="Laravel" type="rss" title="Laravel" xmlUrl="https://blog.laravel.com/feed" htmlUrl="https://blog.laravel.com/feed" />
|
||||||
<outline htmlUrl="https://aws.amazon.com/about-aws/whats-new/recent/" title="AWS - Recent Announcements" type="rss" text="AWS - Recent Announcements" xmlUrl="https://aws.amazon.com/about-aws/whats-new/recent/feed/" />
|
<outline text="Angular Blog - Medium" type="rss" title="Angular Blog - Medium" xmlUrl="https://blog.angular.io/feed" htmlUrl="https://blog.angular.dev?source=rss----447683c3d9a3---4" />
|
||||||
<outline type="rss" xmlUrl="https://kubernetes.io/feed.xml" text="Kubernetes Blog" htmlUrl="https://kubernetes.io/" title="Kubernetes Blog" />
|
<outline text="AWS - Recent Announcements" type="rss" title="AWS - Recent Announcements" xmlUrl="https://aws.amazon.com/about-aws/whats-new/recent/feed/" htmlUrl="https://aws.amazon.com/about-aws/whats-new/recent/" />
|
||||||
<outline text="The JetBrains Blog" type="rss" htmlUrl="https://blog.jetbrains.com/" title="The JetBrains Blog" xmlUrl="https://blog.jetbrains.com/feed/" />
|
<outline text="The JetBrains Blog" type="rss" title="The JetBrains Blog" xmlUrl="https://blog.jetbrains.com/feed/" htmlUrl="https://blog.jetbrains.com" />
|
||||||
<outline htmlUrl="https://hacks.mozilla.org/" type="rss" title="Mozilla Hacks – the Web developer blog" xmlUrl="https://hacks.mozilla.org/feed/" text="Mozilla Hacks – the Web developer blog" />
|
<outline text="Laravel News" type="rss" title="Laravel News" xmlUrl="https://feed.laravel-news.com/" htmlUrl="https://laravel-news.com" />
|
||||||
<outline xmlUrl="https://developer.apple.com/news/releases/rss/releases.rss" text="Releases - Apple Developer" type="rss" htmlUrl="https://developer.apple.com/news/" title="Releases - Apple Developer" />
|
<outline text="Releases - Apple Developer" type="rss" title="Releases - Apple Developer" xmlUrl="https://developer.apple.com/news/releases/rss/releases.rss" htmlUrl="https://developer.apple.com/news/" />
|
||||||
<outline xmlUrl="https://blog.remirepo.net/feed/atom" htmlUrl="https://blog.remirepo.net/" title="Remi's RPM repository - Blog" text="Remi's RPM repository - Blog" type="rss" />
|
<outline text="Blog" type="rss" title="Blog" xmlUrl="https://blog.gitea.io/index.xml" htmlUrl="https://blog.gitea.com/" />
|
||||||
<outline xmlUrl="https://blog.thunderbird.net/feed/" text="The Thunderbird Blog" htmlUrl="https://blog.thunderbird.net/" type="rss" title="The Thunderbird Blog" />
|
<outline text="Mozilla Hacks – the Web developer blog" type="rss" title="Mozilla Hacks – the Web developer blog" xmlUrl="https://hacks.mozilla.org/feed/" htmlUrl="https://hacks.mozilla.org/" />
|
||||||
<outline type="rss" xmlUrl="https://blog.mozilla.org/en/feed/" title="The Mozilla Blog" text="The Mozilla Blog" htmlUrl="https://blog.mozilla.org/en/" />
|
<outline text="Node.js Blog" type="rss" title="Node.js Blog" xmlUrl="https://nodejs.org/en/feed/blog.xml" htmlUrl="https://nodejs.org/en" />
|
||||||
<outline text="Angular Blog - Medium" xmlUrl="https://blog.angular.io/feed" type="rss" title="Angular Blog - Medium" htmlUrl="https://blog.angular.dev/?source=rss----447683c3d9a3---4" />
|
<outline text="The Mozilla Blog" type="rss" title="The Mozilla Blog" xmlUrl="https://blog.mozilla.org/en/feed/" htmlUrl="https://blog.mozilla.org/en/" />
|
||||||
<outline type="rss" htmlUrl="https://blog.gitea.com/" xmlUrl="https://blog.gitea.io/index.xml" text="Blog" title="Blog" />
|
<outline text="Remi's RPM repository - Blog" type="rss" title="Remi's RPM repository - Blog" xmlUrl="https://blog.remirepo.net/feed/atom" htmlUrl="https://blog.remirepo.net/feed/atom" />
|
||||||
<outline xmlUrl="https://nodejs.org/en/feed/blog.xml" htmlUrl="https://nodejs.org/en/feed/blog.xml" title="Node.js Blog" type="rss" text="Node.js Blog" />
|
<outline text="Fish-shell Blog" type="rss" title="Fish-shell Blog" xmlUrl="https://fishshell.com/blog/feed.xml" htmlUrl="https://fishshell.com/blog/feed.xml" />
|
||||||
<outline xmlUrl="https://feed.laravel-news.com/" text="Laravel News" htmlUrl="https://laravel-news.com/" title="Laravel News" type="rss" />
|
<outline text="The Thunderbird Blog" type="rss" title="The Thunderbird Blog" xmlUrl="https://blog.thunderbird.net/feed/" htmlUrl="https://blog.thunderbird.net/" />
|
||||||
<outline title="The Cloudflare Blog" type="rss" text="The Cloudflare Blog" htmlUrl="https://blog.cloudflare.com/" xmlUrl="https://blog.cloudflare.com/rss/" />
|
<outline text="Kubernetes Blog" type="rss" title="Kubernetes Blog" xmlUrl="https://kubernetes.io/feed.xml" htmlUrl="https://kubernetes.io/" />
|
||||||
<outline title="Laravel" type="rss" text="Laravel" htmlUrl="https://blog.laravel.com/feed" xmlUrl="https://blog.laravel.com/feed" />
|
|
||||||
</outline>
|
</outline>
|
||||||
<outline title="IT Blogs" text="IT Blogs">
|
<outline text="IT Blogs" title="IT Blogs">
|
||||||
<outline text="Schneier on Security" xmlUrl="https://www.schneier.com/feed/" type="rss" htmlUrl="https://www.schneier.com/" title="Schneier on Security" />
|
<outline text="SecLists - Bugtraq" type="rss" title="SecLists - Bugtraq" xmlUrl="https://seclists.org/rss/bugtraq.rss" htmlUrl="https://seclists.org/#bugtraq" />
|
||||||
<outline text="SecList - Microsoft Sec Notification" type="rss" title="SecList - Microsoft Sec Notification" htmlUrl="https://seclists.org/#microsoft" xmlUrl="https://seclists.org/rss/microsoft.rss" />
|
<outline text="David Anderson - blog.dave.tf" type="rss" title="David Anderson - blog.dave.tf" xmlUrl="https://blog.dave.tf/index.xml" htmlUrl="https://blog.dave.tf/" />
|
||||||
<outline htmlUrl="https://securelist.com/" title="Securelist" xmlUrl="https://securelist.com/feed/" text="Securelist" type="rss" />
|
<outline text="Securelist" type="rss" title="Securelist" xmlUrl="https://securelist.com/feed/" htmlUrl="https://securelist.com" />
|
||||||
<outline text="Amazon Web Services Service Status" xmlUrl="https://status.aws.amazon.com/rss/all.rss" htmlUrl="https://status.aws.amazon.com/" title="Amazon Web Services Service Status" type="rss" />
|
<outline text="brr | Antarctica Blog" type="rss" title="brr | Antarctica Blog" xmlUrl="https://brr.fyi/feed.xml" htmlUrl="https://brr.fyi/" />
|
||||||
<outline type="rss" xmlUrl="https://krebsonsecurity.com/feed/" text="Krebs on Security" htmlUrl="https://krebsonsecurity.com/" title="Krebs on Security" />
|
<outline text="Errata Security" type="rss" title="Errata Security" xmlUrl="https://blog.erratasec.com/feeds/posts/default" htmlUrl="https://www.blogger.com/feeds/37798047/posts/default" />
|
||||||
<outline title="EFF Deeplinks" text="EFF Deeplinks" type="rss" xmlUrl="https://www.eff.org/rss/updates.xml" htmlUrl="https://www.eff.org/rss/updates.xml" />
|
<outline text="Krebs on Security" type="rss" title="Krebs on Security" xmlUrl="https://krebsonsecurity.com/feed/" htmlUrl="https://krebsonsecurity.com" />
|
||||||
<outline type="rss" htmlUrl="https://brr.fyi/" xmlUrl="https://brr.fyi/feed.xml" text="brr | Antarctica Blog" title="brr | Antarctica Blog" />
|
<outline text="Trail of Bits Blog" type="rss" title="Trail of Bits Blog" xmlUrl="https://blog.trailofbits.com/feed/" htmlUrl="https://blog.trailofbits.com/" />
|
||||||
<outline text="Trail of Bits Blog" title="Trail of Bits Blog" xmlUrl="https://blog.trailofbits.com/feed/" htmlUrl="https://blog.trailofbits.com/" type="rss" />
|
<outline text="EFF Deeplinks" type="rss" title="EFF Deeplinks" xmlUrl="https://www.eff.org/rss/updates.xml" htmlUrl="https://www.eff.org/rss/updates.xml" />
|
||||||
<outline title="Errata Security" text="Errata Security" xmlUrl="https://blog.erratasec.com/feeds/posts/default" type="rss" htmlUrl="https://blog.erratasec.com/" />
|
<outline text="Schneier on Security" type="rss" title="Schneier on Security" xmlUrl="https://www.schneier.com/feed/" htmlUrl="https://www.schneier.com/" />
|
||||||
<outline text="SecLists - Bugtraq" type="rss" xmlUrl="https://seclists.org/rss/bugtraq.rss" htmlUrl="https://seclists.org/#bugtraq" title="SecLists - Bugtraq" />
|
<outline text="Amazon Web Services Service Status" type="rss" title="Amazon Web Services Service Status" xmlUrl="https://status.aws.amazon.com/rss/all.rss" htmlUrl="https://status.aws.amazon.com/" />
|
||||||
|
<outline text="SecList - Microsoft Sec Notification" type="rss" title="SecList - Microsoft Sec Notification" xmlUrl="https://seclists.org/rss/microsoft.rss" htmlUrl="https://seclists.org/#microsoft" />
|
||||||
</outline>
|
</outline>
|
||||||
<outline text="Architecture" title="Architecture">
|
<outline text="Architecture" title="Architecture">
|
||||||
<outline text="Tasmanian 20th Century Modernism Blog - Thomas Ryan Photography" type="rss" xmlUrl="https://www.tryanphotos.com/tasmanian-modernism-blog?format=rss" title="Tasmanian 20th Century Modernism Blog - Thomas Ryan Photography" htmlUrl="https://www.tryanphotos.com/tasmanian-modernism-blog/" />
|
<outline text="Spoon & Tamago" type="rss" title="Spoon & Tamago" xmlUrl="https://www.spoon-tamago.com/feed/" htmlUrl="https://spoon-tamago.com" />
|
||||||
<outline htmlUrl="https://socks-studio.com/" type="rss" title="SOCKS Studio" text="SOCKS Studio" xmlUrl="https://feeds.feedburner.com/socks-studio" />
|
<outline text="Municipal Dreams" type="rss" title="Municipal Dreams" xmlUrl="https://municipaldreams.wordpress.com/feed/" htmlUrl="https://municipaldreams.wordpress.com" />
|
||||||
<outline xmlUrl="https://abandoned.photos/rss" htmlUrl="https://abandoned.photos/" text="Destroyed and Abandoned" title="Destroyed and Abandoned" type="rss" />
|
<outline text="Vintage Home Plans" type="rss" title="Vintage Home Plans" xmlUrl="https://vintagehomeplans.tumblr.com/rss" htmlUrl="https://vintagehomeplans.tumblr.com/" />
|
||||||
<outline text="The Spaces" xmlUrl="https://thespaces.com/feed/" htmlUrl="https://thespaces.com/" title="The Spaces" type="rss" />
|
<outline text="Tasmanian 20th Century Modernism Blog - Thomas Ryan Photography" type="rss" title="Tasmanian 20th Century Modernism Blog - Thomas Ryan Photography" xmlUrl="https://www.tryanphotos.com/tasmanian-modernism-blog?format=rss" htmlUrl="https://www.tryanphotos.com/tasmanian-modernism-blog/" />
|
||||||
<outline htmlUrl="https://vintagehomeplans.tumblr.com/" title="Vintage Home Plans" type="rss" xmlUrl="https://vintagehomeplans.tumblr.com/rss" text="Vintage Home Plans" />
|
<outline text="Destroyed and Abandoned" type="rss" title="Destroyed and Abandoned" xmlUrl="https://abandoned.photos/rss" htmlUrl="https://abandoned.photos/" />
|
||||||
<outline text="BLDGBLOG" htmlUrl="https://www.bldgblog.com/" xmlUrl="https://www.bldgblog.com/feed/" title="BLDGBLOG" type="rss" />
|
<outline text="SOCKS Studio" type="rss" title="SOCKS Studio" xmlUrl="https://feeds.feedburner.com/socks-studio" htmlUrl="https://socks-studio.com" />
|
||||||
<outline htmlUrl="https://archeyes.com/" xmlUrl="https://archeyes.com/feed/" type="rss" title="ArchEyes" text="ArchEyes" />
|
<outline text="ArchEyes" type="rss" title="ArchEyes" xmlUrl="https://archeyes.com/feed/" htmlUrl="https://archeyes.com/" />
|
||||||
<outline htmlUrl="https://municipaldreams.wordpress.com/" title="Municipal Dreams" xmlUrl="https://municipaldreams.wordpress.com/feed/" type="rss" text="Municipal Dreams" />
|
<outline text="BLDGBLOG" type="rss" title="BLDGBLOG" xmlUrl="https://www.bldgblog.com/feed/" htmlUrl="https://www.bldgblog.com" />
|
||||||
<outline title="Pylon of the Month" text="Pylon of the Month" xmlUrl="https://www.pylonofthemonth.org/atom.xml" htmlUrl="https://www.pylonofthemonth.org/" type="rss" />
|
<outline text="Pylon of the Month" type="rss" title="Pylon of the Month" xmlUrl="https://www.pylonofthemonth.org/atom.xml" htmlUrl="https://pylonofthemonth.org/feed/atom/" />
|
||||||
<outline type="rss" title="Spoon & Tamago" xmlUrl="https://www.spoon-tamago.com/feed/" text="Spoon & Tamago" htmlUrl="https://www.spoon-tamago.com/" />
|
|
||||||
</outline>
|
</outline>
|
||||||
</body>
|
</body>
|
||||||
</opml>
|
</opml>
|
||||||
@@ -11,7 +11,11 @@ This list is also available in the standard <a href="/assets/rss_opml.xml" downl
|
|||||||
</blockquote>
|
</blockquote>
|
||||||
|
|
||||||
{% for cat in collections.opmlByCategory %}
|
{% for cat in collections.opmlByCategory %}
|
||||||
|
{% if (cat.title == "Garrett Mills") %}
|
||||||
|
<h4 style="background-color: var(--c-font)">{{ cat.title }} (Shameless Self-Plug)</h4>
|
||||||
|
{% else %}
|
||||||
<h4 style="background-color: var(--c-font)">{{ cat.title }}</h4>
|
<h4 style="background-color: var(--c-font)">{{ cat.title }}</h4>
|
||||||
|
{% endif %}
|
||||||
<ul>
|
<ul>
|
||||||
{% for sub in cat.subs %}
|
{% for sub in cat.subs %}
|
||||||
<li><a href="{{ sub.xmlUrl }}" download>{{ sub.title }}</a></li>
|
<li><a href="{{ sub.xmlUrl }}" download>{{ sub.title }}</a></li>
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ block blog_content
|
|||||||
|
|
||||||
.recent-posts
|
.recent-posts
|
||||||
ul.plain
|
ul.plain
|
||||||
each post in collections.blog.reverse().slice(0, 5)
|
each post in collections.blog.reverse().slice(0, 10)
|
||||||
li
|
li
|
||||||
.secondary #{post.data.date.toISOString().split('T')[0]}
|
.secondary #{post.data.date.toISOString().split('T')[0]}
|
||||||
a.title(href=post.url) #{post.data.title}
|
a.title(href=post.url) #{post.data.title}
|
||||||
|
|||||||
34
src/blog/posts/2025-04-16-miscellaneous-photos-april-2025.md
Normal file
34
src/blog/posts/2025-04-16-miscellaneous-photos-april-2025.md
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
---
|
||||||
|
layout: blog_post
|
||||||
|
tags: blog
|
||||||
|
title: Miscellaneous Photos - April 2025
|
||||||
|
permalink: /blog/2025/04/16/Miscellaneous-Photos-April-2025/
|
||||||
|
slug: Miscellaneous-Photos-April-2025
|
||||||
|
date: 2025-04-16 22:48:06
|
||||||
|
blogtags:
|
||||||
|
- photography
|
||||||
|
---
|
||||||
|
|
||||||
|
> I'm attempting to use this blog more by not limiting it to posts I view as "on-topic" or technically advanced enough.
|
||||||
|
|
||||||
|
Here are some miscellaneous photos I've taken since the [last photo-dump](https://garrettmills.dev/blog/2024/05/15/Miscellaneous-Photos-from-Commencement-2024/).
|
||||||
|
|
||||||
|
<br><br>
|
||||||
|
<img src="https://static.garrettmills.dev/assets/blog-images/photos-202504/p1.jpg">
|
||||||
|
<center><small><em>One Leg.</em> Port of New Orleans, New Orleans, Louisiana. (December 2024)</small></center>
|
||||||
|
|
||||||
|
<br><br>
|
||||||
|
<img src="https://static.garrettmills.dev/assets/blog-images/photos-202504/p2.jpg">
|
||||||
|
<center><small><em>A. Thomas Higgins.</em> Port of New Orleans, New Orleans, Louisiana. (December 2024)</small></center>
|
||||||
|
|
||||||
|
<br><br>
|
||||||
|
<img src="https://static.garrettmills.dev/assets/blog-images/photos-202504/p3.jpg">
|
||||||
|
<center><small><em>Snowstorm.</em> Downtown, Indianapolis, Indiana. (January 2025)</small></center>
|
||||||
|
|
||||||
|
<br><br>
|
||||||
|
<img src="https://static.garrettmills.dev/assets/blog-images/photos-202504/p4.jpg">
|
||||||
|
<center><small><em>Untitled.</em> Fort Collins, Colorado. (March 2025)</small></center>
|
||||||
|
|
||||||
|
<br><br>
|
||||||
|
<img src="https://static.garrettmills.dev/assets/blog-images/photos-202504/p5.jpg">
|
||||||
|
<center><small><em>State Line.</em> Downtown, Indianapolis, Indiana. (April 2025)</small></center>
|
||||||
@@ -9,7 +9,7 @@ block content
|
|||||||
a.button(href='/feed/json.json') JSON
|
a.button(href='/feed/json.json') JSON
|
||||||
|
|
||||||
section#posts
|
section#posts
|
||||||
each post in (collections.feed || []).reverse()
|
each post in collections.feedDesc
|
||||||
.post(id=post.data.slug)
|
.post(id=post.data.slug)
|
||||||
if post.data.feedtags
|
if post.data.feedtags
|
||||||
.tags
|
.tags
|
||||||
@@ -18,8 +18,6 @@ block content
|
|||||||
h2 #{post.data.title}
|
h2 #{post.data.title}
|
||||||
.content-wrapper !{post.content}
|
.content-wrapper !{post.content}
|
||||||
.footer
|
.footer
|
||||||
a.permalink(href=`/feed/#${post.data.slug}`) permalink (v1)
|
|
||||||
span.sep |
|
|
||||||
a.permalink(href=post.url) permalink (v2)
|
a.permalink(href=post.url) permalink (v2)
|
||||||
span.sep |
|
span.sep |
|
||||||
span.date #{post.date.toLocaleDateString()}
|
span.date #{post.date.toLocaleDateString()}
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
---
|
||||||
|
layout: feed_post
|
||||||
|
title: "Building a Raspberry Pi Cluster - Part 3"
|
||||||
|
slug: 5dbc536798927ad9f6245e7a
|
||||||
|
date: 2019-11-01 11:00:00
|
||||||
|
tags: feed
|
||||||
|
permalink: /feed/2019-11-01-building-a-raspberry-pi-cluster-part-3/
|
||||||
|
feedtags:
|
||||||
|
- Blog Post
|
||||||
|
---
|
||||||
|
<p>
|
||||||
|
In the third installment of my miniature-HPC series, we discuss OpenMPI, Python3, and running parallel jobs. Read more <a target="_blank" href="https://garrettmills.dev/blog/2019/04/29/Building-a-Raspberry-Pi-Cluster-Part-III/">here</a>.
|
||||||
|
</p>
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
---
|
||||||
|
layout: feed_post
|
||||||
|
title: "Computing in the Kubernetes Framework"
|
||||||
|
slug: 5dbc53fe98927ad9f6245e7b
|
||||||
|
date: 2019-11-01 11:00:00
|
||||||
|
tags: feed
|
||||||
|
permalink: /feed/2019-11-01-computing-in-the-kubernetes-framework/
|
||||||
|
feedtags:
|
||||||
|
- Speaking
|
||||||
|
---
|
||||||
|
<p>
|
||||||
|
Recently I had the pleasure of presenting at the University of Kansas' Center for Research Methods and Data Analysis Weekly Colloquium. You can find resources from my talk on using k8s for scientific computing <a href="https://static.garrettmills.dev/events/crmda_colloquim_k8s/k8s.html" target="_blank">here</a>.</p>
|
||||||
13
src/feed/posts/2019-11-01-flitter-auth013.md
Normal file
13
src/feed/posts/2019-11-01-flitter-auth013.md
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
---
|
||||||
|
layout: feed_post
|
||||||
|
title: "flitter-auth@0.13"
|
||||||
|
slug: 5dbc5b2298927ad9f6245e7c
|
||||||
|
date: 2019-11-01 11:00:00
|
||||||
|
tags: feed
|
||||||
|
permalink: /feed/2019-11-01-flitter-auth013/
|
||||||
|
feedtags:
|
||||||
|
- Code Release
|
||||||
|
---
|
||||||
|
<p>
|
||||||
|
This release of Flitter's auth provider brings an OAuth2 server, OAuth2 client, and refinements to the login flow structure. More details <a href="https://flitter.garrettmills.dev/tutorial-Overview_%20flitter-auth.html" target="_blank">here</a>.
|
||||||
|
</p>
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
---
|
||||||
|
layout: feed_post
|
||||||
|
title: "A New Platform - My Relentless Pursuit of Privacy"
|
||||||
|
slug: 5dce587aac2bb042f50478ab
|
||||||
|
date: 2019-11-15 11:00:00
|
||||||
|
tags: feed
|
||||||
|
permalink: /feed/2019-11-15-a-new-platform-my-relentless-pursuit-of-privacy/
|
||||||
|
feedtags:
|
||||||
|
- Blog Post
|
||||||
|
---
|
||||||
|
<p>
|
||||||
|
I've finally moved the home of my blog from Medium.com over to a self-hosted Hexo blog. Why? Read more <a href="https://garrettmills.dev/blog/2019/11/15/A-New-Platform/" target="_blank">here</a>.
|
||||||
|
</p>
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
---
|
||||||
|
layout: feed_post
|
||||||
|
title: "Dependency Injection in Less Than 100 Lines of Pure JavaScript"
|
||||||
|
slug: 5dd04b99e54ea20caf6b7249
|
||||||
|
date: 2019-11-16 11:00:00
|
||||||
|
tags: feed
|
||||||
|
permalink: /feed/2019-11-17-dependency-injection-in-less-than-100-lines-of-pure-javascript/
|
||||||
|
feedtags:
|
||||||
|
- Blog Post
|
||||||
|
---
|
||||||
|
<p>
|
||||||
|
DI is a powerful pattern for segmenting code to keep it efficient and easy to reuse. In this article, we're going to build a basic DI in <100 lines of pure ES6. Read about it <a href="https://garrettmills.dev/blog/2019/11/16/Dependency-Injection-in-Less-Than-100-Lines-of-Pure-JavaScript/">here</a>.
|
||||||
|
</p>
|
||||||
13
src/feed/posts/2019-12-20-flitter-di01.md
Normal file
13
src/feed/posts/2019-12-20-flitter-di01.md
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
---
|
||||||
|
layout: feed_post
|
||||||
|
title: "flitter-di@0.1"
|
||||||
|
slug: 5dfbe96b78c3d7593abd5c8d
|
||||||
|
date: 2019-12-19 11:00:00
|
||||||
|
tags: feed
|
||||||
|
permalink: /feed/2019-12-20-flitter-di01/
|
||||||
|
feedtags:
|
||||||
|
- Code Release
|
||||||
|
---
|
||||||
|
<p>
|
||||||
|
Flitter-DI is the second-generation dependency-injector used by the Flitter framework. It was pulled from the libflitter project in the hope that it can remain independent from the rest of Flitter and can be used in other projects. More info <a target="_blank" href="https://code.garrettmills.dev/flitter/di">here.</a>
|
||||||
|
</p>
|
||||||
17
src/feed/posts/2020-02-25-noded-free-form-notes-databases.md
Normal file
17
src/feed/posts/2020-02-25-noded-free-form-notes-databases.md
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
---
|
||||||
|
layout: feed_post
|
||||||
|
title: "Noded - Free-Form Notes & Databases"
|
||||||
|
slug: 5e547826173147060d872951
|
||||||
|
date: 2020-02-25 11:00:00
|
||||||
|
tags: feed
|
||||||
|
permalink: /feed/2020-02-25-noded-free-form-notes-databases/
|
||||||
|
feedtags:
|
||||||
|
- HackKU 2020
|
||||||
|
---
|
||||||
|
<p>
|
||||||
|
I recently attended the annual University of Kansas hackathon, where me and a couple friends <a target="_blank" href="https://dev.azure.com/HackKu/HackKu%202020/_git/backend">built</a> Noded. <br><br>
|
||||||
|
|
||||||
|
Noded is a tree-based note taking app based on reusable page elements. It provides support for basic notes, uploaded files, a built-in code editor, customizable databases, static website exports, and sub-tree sharing.
|
||||||
|
|
||||||
|
Check it out <a target="_blank" href="https://hack20.glmdev.tech/">here.</a>
|
||||||
|
</p>
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
---
|
||||||
|
layout: feed_post
|
||||||
|
title: "Code Freedom with Gitea & Drone - Part I"
|
||||||
|
slug: 5e632cd98c1b7808113a5adb
|
||||||
|
date: 2020-03-07 11:00:00
|
||||||
|
tags: feed
|
||||||
|
permalink: /feed/2020-03-07-code-freedom-with-gitea-drone-part-i/
|
||||||
|
feedtags:
|
||||||
|
- Blog Post
|
||||||
|
---
|
||||||
|
<p>
|
||||||
|
In my never-ending quest to self-host all the things, I've deployed a combination of Gitea and Drone CI for a feature-for-feature, self-hosted alternative to GitHub. <a href="https://garrettmills.dev/blog/2020/03/06/Code-Freedom-with-Gitea-and-Drone-Part-I/" target="_blank">Here's how.</a>
|
||||||
|
</p>
|
||||||
13
src/feed/posts/2020-04-08-connect-4-webtoy.md
Normal file
13
src/feed/posts/2020-04-08-connect-4-webtoy.md
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
---
|
||||||
|
layout: feed_post
|
||||||
|
title: "Connect-4 Webtoy"
|
||||||
|
slug: 5e8ddda99127dad0043b9c66
|
||||||
|
date: 2020-04-08 11:00:00
|
||||||
|
tags: feed
|
||||||
|
permalink: /feed/2020-04-08-connect-4-webtoy/
|
||||||
|
feedtags:
|
||||||
|
- Side Project
|
||||||
|
---
|
||||||
|
<p>
|
||||||
|
I've built a simple Connect-4 webtoy as a project for EECS 368 at the University of Kansas. You can <a href="https://static.garrettmills.dev/sites/connect4" target="_blank">play with it here.</a>
|
||||||
|
</p>
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
---
|
||||||
|
layout: feed_post
|
||||||
|
title: "VuES6 - ES6 Vue.js Components, in Plain JavaScript"
|
||||||
|
slug: 5ea0d07b000b92b10459cd4f
|
||||||
|
date: 2020-04-22 11:00:00
|
||||||
|
tags: feed
|
||||||
|
permalink: /feed/2020-04-23-vues6-es6-vuejs-components-in-plain-javascript/
|
||||||
|
feedtags:
|
||||||
|
- Code Release
|
||||||
|
---
|
||||||
|
<p>
|
||||||
|
I recently released a small utility library for defining Vue components as proper ES6 classes, but in vanilla JavaScript. I like to use this in small projects where I don't want to have to set up vue-cli and compile templates. More info <a target="_blank" href="https://code.garrettmills.dev/garrettmills/vues6/">here.</a>
|
||||||
|
</p>
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
---
|
||||||
|
layout: feed_post
|
||||||
|
title: "Feed Page, RSS, & Atom - Minor Website Updates"
|
||||||
|
slug: 5eb5f9a991202acecf005016
|
||||||
|
date: 2020-05-09 11:00:00
|
||||||
|
tags: feed
|
||||||
|
permalink: /feed/2020-05-09-feed-page-rss-atom-minor-website-updates/
|
||||||
|
feedtags:
|
||||||
|
- Code Release
|
||||||
|
---
|
||||||
|
I recently made some tweaks to my website. I added a <a href="/feed">dedicated page</a> as a historical archive for these updates.
|
||||||
|
<br><br>
|
||||||
|
I also added the ability to subscribe to this feed using RSS, Atom, and JSON thanks to a <a href="https://npmjs.org/package/feed" target="_blank">handy NPM package</a>.
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
---
|
||||||
|
layout: feed_post
|
||||||
|
title: "How to Code From Home Like a Boss"
|
||||||
|
slug: 5f199bad6ba57f18297b4e7c
|
||||||
|
date: 2020-07-23 11:00:00
|
||||||
|
tags: feed
|
||||||
|
permalink: /feed/2020-07-23-how-to-code-from-home-like-a-boss/
|
||||||
|
feedtags:
|
||||||
|
- Blog Post
|
||||||
|
---
|
||||||
|
<p>
|
||||||
|
With the current need to work from home, I've put together a list of tricks and tools I use to do my work as a software developer remotely, and discuss the challenges. <a href="https://garrettmills.dev/blog/2020/07/23/How-to-Code-From-Home-Like-a-Boss/" target="_blank">Here's what I use.</a>
|
||||||
|
</p><p></p>
|
||||||
18
src/feed/posts/2020-11-29-my-technical-notes-site.md
Normal file
18
src/feed/posts/2020-11-29-my-technical-notes-site.md
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
layout: feed_post
|
||||||
|
title: "My Technical Notes Site"
|
||||||
|
slug: 5fc3663a081ff50074eb4926
|
||||||
|
date: 2020-11-29 11:00:00
|
||||||
|
tags: feed
|
||||||
|
permalink: /feed/2020-11-29-my-technical-notes-site/
|
||||||
|
feedtags:
|
||||||
|
- Side Project
|
||||||
|
---
|
||||||
|
<p>
|
||||||
|
I'm trying to write down or save all the technical tricks, notes,
|
||||||
|
and fixes I find. That way, it's easier for me to find them again
|
||||||
|
in the future, and maybe they can be of use to others.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
You can check them out <a target="_blank" href="https://static.garrettmills.dev/sites/technical/">here</a>.
|
||||||
|
</p>
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
layout: feed_post
|
||||||
|
title: "Converting an Ionic/Angular Site into a Progressive Web App"
|
||||||
|
slug: 5fc68b4f5b35c233d85fd294
|
||||||
|
date: 2020-12-01 11:00:00
|
||||||
|
tags: feed
|
||||||
|
permalink: /feed/2020-12-02-converting-an-ionicangular-site-into-a-progressive-web-app/
|
||||||
|
feedtags:
|
||||||
|
- Blog Post
|
||||||
|
---
|
||||||
|
<p>
|
||||||
|
For the last year or so, I've been working on converting an Ionic app to a progressive
|
||||||
|
web app with offline support called <a href="https://noded.garrettmills.dev/" target="_blank">Noded</a>. I decided to
|
||||||
|
write up my findings on how to do this with Angular service-worker.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Read more about it <a href="https://garrettmills.dev/blog/2020/12/01/Converting-Ionic-Angular-Site-into-PWA/" target="_blank">here</a>.
|
||||||
|
</p>
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
layout: feed_post
|
||||||
|
title: "MiniQ: A bare-bones, CRON-driven job queue."
|
||||||
|
slug: 5fc7f0515b35c233d85fd2d2
|
||||||
|
date: 2020-12-02 11:00:00
|
||||||
|
tags: feed
|
||||||
|
permalink: /feed/2020-12-03-miniq-a-bare-bones-cron-driven-job-queue/
|
||||||
|
feedtags:
|
||||||
|
- Side Project
|
||||||
|
---
|
||||||
|
<p>
|
||||||
|
I wanted a simple way to queue jobs to be run in the background without having to run a separate daemon.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
MiniQ is what I came up with. With just 3 files, MiniQ provides the ability to log jobs
|
||||||
|
and the CRON script will run periodically and execute the queued jobs in the background.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
More info <a target="_blank" href="https://code.garrettmills.dev/garrettmills/miniq/">here</a>.
|
||||||
|
</p>
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
---
|
||||||
|
layout: feed_post
|
||||||
|
title: "Full-text search PDFs from Linux CLI"
|
||||||
|
slug: 5fd029e89d55604a939f9b2c
|
||||||
|
date: 2020-12-09 11:00:00
|
||||||
|
tags: feed
|
||||||
|
permalink: /feed/2020-12-09-full-text-search-pdfs-from-linux-cli/
|
||||||
|
feedtags:
|
||||||
|
- Code Snippet
|
||||||
|
---
|
||||||
|
<p>
|
||||||
|
For an open-note exam, I wanted a quick way to full-text search PDFs from the command-line.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I wrote a 2-line script to help with that, using just find, grep, and pdftotext (common to most distros).
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Get it <a target="_blank" href="https://garrettmills.dev/snippet/pdfsearch">here</a>.
|
||||||
|
</p>
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
---
|
||||||
|
layout: feed_post
|
||||||
|
title: "An Open Letter to Senator-elect Roger Marshall"
|
||||||
|
slug: 5ff10217c8162e185a523495
|
||||||
|
date: 2021-01-02 11:00:00
|
||||||
|
tags: feed
|
||||||
|
permalink: /feed/2021-01-03-an-open-letter-to-senator-elect-roger-marshall/
|
||||||
|
feedtags:
|
||||||
|
- Open Letter
|
||||||
|
---
|
||||||
|
<p>
|
||||||
|
Roger Marshall, Kansas Senator-elect, has expressed his intention to vote not to certify the result of the 2020 presidential election.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I feel very strongly that this is a dangerous and irresponsible move that goes against the core tenets of American democracy.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Read the letter <a target="_blank" href="https://static.garrettmills.dev/assets/An_Open_Letter_to_Roger_Marshall_No_Address.pdf">here</a>.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<i>
|
||||||
|
This letter is released in the <a target="_blank" href="https://creativecommons.org/publicdomain/zero/1.0/">public domain</a>. Please, adapt it, share it with others, and most importantly, send it to your representatives. Call them, e-mail them, snail mail them to tell them to support free and fair elections.
|
||||||
|
</i>
|
||||||
|
</p>
|
||||||
44
src/feed/posts/2021-02-09-new-features-in-noded.md
Normal file
44
src/feed/posts/2021-02-09-new-features-in-noded.md
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
---
|
||||||
|
layout: feed_post
|
||||||
|
title: "New Features in Noded"
|
||||||
|
slug: 6021af9360b9ec2b58623a2d
|
||||||
|
date: 2021-02-08 11:00:00
|
||||||
|
tags: feed
|
||||||
|
permalink: /feed/2021-02-09-new-features-in-noded/
|
||||||
|
feedtags:
|
||||||
|
- Side Project
|
||||||
|
---
|
||||||
|
<p>
|
||||||
|
Noded is a project I started at HackKU last year. It's a rich-data notes app designed to help people create information trees. I've been slowly improving it since.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
</p><ul>
|
||||||
|
<li><b>File Box</b>
|
||||||
|
<ul>
|
||||||
|
<li>In addition to the basic file uploader, you can now add "File Boxes" to your notes, which support nested structures and managing individual files.</li>
|
||||||
|
<li>Files in File Boxes appear in the universal search, and will open to their nested location directly.</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li><b>Universal Search</b>
|
||||||
|
<ul>
|
||||||
|
<li>Nodes that support full-screen mode now open directly from the search interface. This means that the open page is unchanged.</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li><b>WYSIWYG</b>
|
||||||
|
<ul>
|
||||||
|
<li>In-line links and images now render properly in view-only mode.</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li><b>Databases</b>
|
||||||
|
<ul>
|
||||||
|
<li>Added the "Hyperlink" column type for external links.</li>
|
||||||
|
<li>Added the "Link to Page" column type for referencing other notes.</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Users can now drag-and-drop to re-order subtrees in the sidebar.</li>
|
||||||
|
</ul>
|
||||||
|
<p></p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
You can try Noded out <a href="https://noded.garrettmills.dev/" target="_blank">here</a>.
|
||||||
|
</p>
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
---
|
||||||
|
layout: feed_post
|
||||||
|
title: "Rethinking Dependency Injection in TypeScript"
|
||||||
|
slug: 606379301694a11cf37d1ce5
|
||||||
|
date: 2021-03-30 11:00:00
|
||||||
|
tags: feed
|
||||||
|
permalink: /feed/2021-03-31-rethinking-dependency-injection-in-typescript/
|
||||||
|
feedtags:
|
||||||
|
- Blog Post
|
||||||
|
---
|
||||||
|
<p>
|
||||||
|
For the past few years, I've been experimenting with various paradigms for DI in JavaScript and TypeScript.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
In the latest in my series of mad ramblings on dependency injection, I've written up my thoughts on the various paradigms I've tried.
|
||||||
|
</p>
|
||||||
|
Read more <a href="https://garrettmills.dev/blog/2021/03/30/Rethinking-Dependency-Injection-in-TypeScript/" target="_blank">here</a>.
|
||||||
22
src/feed/posts/2021-04-23-opting-websites-out-of-floc.md
Normal file
22
src/feed/posts/2021-04-23-opting-websites-out-of-floc.md
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
---
|
||||||
|
layout: feed_post
|
||||||
|
title: "Opting Websites Out of FLoC"
|
||||||
|
slug: 6082f0de63ffc03c1503d6e5
|
||||||
|
date: 2021-04-23 11:00:00
|
||||||
|
tags: feed
|
||||||
|
permalink: /feed/2021-04-23-opting-websites-out-of-floc/
|
||||||
|
feedtags:
|
||||||
|
- Code Release
|
||||||
|
---
|
||||||
|
<p>
|
||||||
|
Google announced recently that the beta version of their Chrome browser will include a new tracking system called Federated Learning of Cohorts (FLoC). This system is their replacement for 3rd-party tracking cookies. You can learn more <a href="https://amifloced.org/" target="_blank">here</a>.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
FLoC perpetuates the track-by-default system in Chrome that violates users' privacy. Worse, because it's baked into the browser itself, this tracking can occur on <i>all</i> sites by default.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I remain strongly opposed to these privacy-invasive moves. As a result, starting with version 0.59.0, all <a href="https://code.garrettmills.dev/Flitter/libflitter/commit/374ac7ca3a7df5efcdbf52abcdfd1a77f88af411" target="_blank">Flitter-powered sites</a> (including this one) will opt-out of FLoC <b>by default</b>.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
As a user, if this change makes you uncomfortable, consider using a browser that respects user privacy like <a href="https://www.mozilla.org/en-US/firefox/new/" target="_blank">Firefox</a> or <a href="https://brave.com/" target="_blank">Brave</a>.
|
||||||
|
</p>
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
---
|
||||||
|
layout: feed_post
|
||||||
|
title: "Technical Info on *.garrettmills.dev Sites"
|
||||||
|
slug: 608a5f537ac6155bc27f8a70
|
||||||
|
date: 2021-04-29 11:00:00
|
||||||
|
tags: feed
|
||||||
|
permalink: /feed/2021-04-29-technical-info-on-garrettmillsdev-sites/
|
||||||
|
feedtags:
|
||||||
|
- Site Update
|
||||||
|
---
|
||||||
|
<p>
|
||||||
|
For the past few weeks, I've been reworking my analytics collection system with an eye to privacy.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I've tried to make my system collect only the data I wish to use in aggregate, and give users the ability
|
||||||
|
to permanently opt-out of page-view collection.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
For details and interesting nitty-gritty about this site, I've added a new
|
||||||
|
<a href="/technical">technical info</a> page that talks about how the analytics system works,
|
||||||
|
the data it stores, and how you can opt-out.
|
||||||
|
</p>
|
||||||
21
src/feed/posts/2021-05-09-monochrome-redesign.md
Normal file
21
src/feed/posts/2021-05-09-monochrome-redesign.md
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
layout: feed_post
|
||||||
|
title: "Monochrome Redesign"
|
||||||
|
slug: 609822ebedbfbd5398c6e51f
|
||||||
|
date: 2021-05-09 11:00:00
|
||||||
|
tags: feed
|
||||||
|
permalink: /feed/2021-05-09-monochrome-redesign/
|
||||||
|
feedtags:
|
||||||
|
- Site Update
|
||||||
|
---
|
||||||
|
<p>
|
||||||
|
I decided that it was time for a visual refresh of this site.
|
||||||
|
I liked the bright & flashy design I've had for about a year now, but
|
||||||
|
decided on a return to relative simplicity.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The new design has the added benefit of being very light and semantic,
|
||||||
|
and relies on no external stylesheets or frameworks, unlike the old. This
|
||||||
|
has the added benefit of making the page more accesible and improving load
|
||||||
|
times.
|
||||||
|
</p>
|
||||||
35
src/feed/posts/2021-08-11-gbash-a-simple-bash-framework.md
Normal file
35
src/feed/posts/2021-08-11-gbash-a-simple-bash-framework.md
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
---
|
||||||
|
layout: feed_post
|
||||||
|
title: "g.bash: A simple Bash framework"
|
||||||
|
slug: 611418d29444004b82e03edb
|
||||||
|
date: 2021-08-11 11:00:00
|
||||||
|
tags: feed
|
||||||
|
permalink: /feed/2021-08-11-gbash-a-simple-bash-framework/
|
||||||
|
feedtags:
|
||||||
|
- Side Project
|
||||||
|
---
|
||||||
|
<br>
|
||||||
|
<p>
|
||||||
|
Between work and my personal lab, I write a lot of command-line tools to help automate various tasks. But, as anyone who's worked with Bash before knows, adding multi-command support, flags, and other handling can be difficult to get off the ground.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
However, including a multi-file Bash framework is kinda... gross. One of the benefits of a shell script is that it can usually be distributed as a single-file affair. I was also unpleased with the current state of Bash argument-parsing.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Enter: <code>g.bash</code>. This is my take on a single-file framework and standard library for Bash that addresses these issues. I might write a more extensive blog in the future, but for now the broad strokes are:
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li>Utility & array helpers</li>
|
||||||
|
<li>Filesystem helpers</li>
|
||||||
|
<li>Error handling & try-catch</li>
|
||||||
|
<li>String manipulation helpers</li>
|
||||||
|
<li>Logging to standard error/files by levels/flags</li>
|
||||||
|
<li>Math constants & helpers</li>
|
||||||
|
<li>Import system w/ singleton includes</li>
|
||||||
|
<li>Configuration file system</li>
|
||||||
|
<li>Command definitions & argument parsing</li>
|
||||||
|
<li>Locking & singleton execution</li>
|
||||||
|
</ul>
|
||||||
|
<p>
|
||||||
|
This side-project is still very much a work-in-progress, but if you're curious you can check it out <a href="https://code.garrettmills.dev/garrettmills/g.bash" target="_blank">here</a>.
|
||||||
|
</p>
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
layout: feed_post
|
||||||
|
title: "Photo Challenge 01: Self-Portrait"
|
||||||
|
slug: 6126e7f649f285057b041002
|
||||||
|
date: 2021-08-26 11:00:00
|
||||||
|
tags: feed
|
||||||
|
permalink: /feed/2021-08-26-photo-challenge-01-self-portrait/
|
||||||
|
feedtags:
|
||||||
|
- Blog Post
|
||||||
|
---
|
||||||
|
<br>
|
||||||
|
<p>
|
||||||
|
One non-technical interest of mine is photography. I'm starting a new 30-prompt photo challenge, which I'll be posting on my blog.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The first challenge is a self-portrait. Mine tries to capture my technical side, and allowed me to tinker with depth of field and reflections.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Follow along <a href="/blog/2021/08/25/Photo-Challenge-01-Self-Portrait" target="_blank">here</a>.
|
||||||
|
</p>
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
---
|
||||||
|
layout: feed_post
|
||||||
|
title: "multicrypt: a library for multi-key encryption"
|
||||||
|
slug: 619bf581c4ea2d02660ccf75
|
||||||
|
date: 2021-11-22 11:00:00
|
||||||
|
tags: feed
|
||||||
|
permalink: /feed/2021-11-23-multicrypt-a-library-for-multi-key-encryption/
|
||||||
|
feedtags:
|
||||||
|
- Side Project
|
||||||
|
---
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
Recently, I've been working on adding secure vaults for user secrets to my auth server project, <a href="https://code.garrettmills.dev/Starship/CoreID" target="_blank">CoreID</a>.<br>
|
||||||
|
<br>
|
||||||
|
To implement shared-vaults, I wrote an implementation of multi-key encryption using enveloped keys. It seemed fairly useful on its own, so I pulled it out into a standalone TypeScript package called <a href="https://www.npmjs.com/package/multicrypt" target="_blank">Multicrypt</a>.<br>
|
||||||
|
<br>
|
||||||
|
Multicrypt provides a simple interface for multi-key two-way encryption for arbitrary keys and values, and makes it easy to add & remove keys from the shared values.<br>
|
||||||
|
<br>
|
||||||
|
Learn more <a href="https://code.garrettmills.dev/garrettmills/multicrypt" target="_blank">here</a>.
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
---
|
||||||
|
layout: feed_post
|
||||||
|
title: "Runtime Data Validation from TypeScript Interfaces"
|
||||||
|
slug: 61e1e6f684d7114345701178
|
||||||
|
date: 2022-01-14 11:00:00
|
||||||
|
tags: feed
|
||||||
|
permalink: /feed/2022-01-15-runtime-data-validation-from-typescript-interfaces/
|
||||||
|
feedtags:
|
||||||
|
- Blog Post
|
||||||
|
---
|
||||||
|
<br>
|
||||||
|
<p>
|
||||||
|
How I (ab)used the TypeScript compiler to enable transparent runtime data validation using Zod and TypeScript interfaces.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Read more <a href="https://garrettmills.dev/blog/2022/01/14/Runtime-Data-Validation-from-TypeScript-Interfaces/" target="_blank">here</a>.
|
||||||
|
</p>
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
layout: feed_post
|
||||||
|
title: "The Ultimate Guide to Cleaning a Dell XPS 15 Keyboard"
|
||||||
|
slug: 61f1f28f84d7114345702556
|
||||||
|
date: 2022-01-27 11:00:00
|
||||||
|
tags: feed
|
||||||
|
permalink: /feed/2022-01-27-the-ultimate-guide-to-cleaning-a-dell-xps-15-keyboard/
|
||||||
|
feedtags:
|
||||||
|
- Blog Post
|
||||||
|
---
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Recently, I've been having a really annoying issue with my laptop keyboard where some keys require multiple presses or lots of force when pressed to register a key stroke.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Since I like to try to repair my own stuff, at least as a first-line, I decided to do a quick write-up on how to remove and replace the key caps without breaking them to clean out the key wells.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Read more <a href="https://garrettmills.dev/blog/2022/01/26/Ultimate-Guide-to-Cleaning-Dell-XPS-15-Keyboard/" target="_blank">here</a>.
|
||||||
|
</p>
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
layout: feed_post
|
||||||
|
title: "Rancher K3s: Kubernetes on Proxmox Containers"
|
||||||
|
slug: 625e4f5521783a026a957090
|
||||||
|
date: 2022-04-19 11:00:00
|
||||||
|
tags: feed
|
||||||
|
permalink: /feed/2022-04-19-rancher-k3s-kubernetes-on-proxmox-containers/
|
||||||
|
feedtags:
|
||||||
|
- Blog Post
|
||||||
|
---
|
||||||
|
<br>
|
||||||
|
<p>
|
||||||
|
I've been re-learning Docker and containerization and I decided to take the plunge and start converting my self-hosted environment over to Kubernetes.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
This post details how I set up a Kubernetes cluster on LXD containers on Proxmox using Rancher K3s and NGINX ingress controller.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Read it <a href="https://garrettmills.dev/blog/2022/04/18/Rancher-K3s-Kubernetes-on-Proxmox-Container/" target="_blank">here</a>.
|
||||||
|
</p>
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
---
|
||||||
|
layout: feed_post
|
||||||
|
title: "Importing an OpenVPN Profile on Fedora 36"
|
||||||
|
slug: 625e4f3521783a026b957190
|
||||||
|
date: 2022-07-12 11:00:00
|
||||||
|
tags: feed
|
||||||
|
permalink: /feed/2022-07-13-importing-an-openvpn-profile-on-fedora-36/
|
||||||
|
feedtags:
|
||||||
|
- Blog Post
|
||||||
|
---
|
||||||
|
<br>
|
||||||
|
<p>
|
||||||
|
I recently upgraded to Fedora 36 and discovered
|
||||||
|
that my VPN settings were completely broken and
|
||||||
|
I couldn't re-import it from the <code>.ovpn</code> file.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
What ensued was an annoyingly difficult series
|
||||||
|
of workarounds required to avoid bugs in OpenVPN,
|
||||||
|
NetworkManager, and NetworkManager-gui.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I've detailed how to do it <a href="https://garrettmills.dev/blog/2022/07/12/Importing-OpenVPN-Profile-on-Fedora-36/" target="_blank">here</a>.
|
||||||
|
</p>
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
---
|
||||||
|
layout: feed_post
|
||||||
|
title: "Generalized Commutative Data Types"
|
||||||
|
slug: 5b0527ef-1792-4624-a220-9a910d7e0230
|
||||||
|
date: 2022-12-09 11:00:00
|
||||||
|
tags: feed
|
||||||
|
permalink: /feed/2022-12-09-generalized-commutative-data-types/
|
||||||
|
feedtags:
|
||||||
|
- Blog Post
|
||||||
|
---
|
||||||
|
<p>
|
||||||
|
Recently, I've been working on a distributed, parallel language called
|
||||||
|
<a href="https://github.com/swarmlang" target="_blank">Swarm</a>. One challenge
|
||||||
|
with such a language is ensuring consistent data operations when they are performed
|
||||||
|
in parallel.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
A GCDT is one approach to simplify this process. Such types define commutative and
|
||||||
|
pseudo-commutative operations which allow order-agnostic consistency when accumulating
|
||||||
|
parallel computations.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I describe such a system and explore its limitations in
|
||||||
|
<a href="https://garrettmills.dev/blog/2022/12/09/Generalized-Commutative-Data-Types/" target="_blank">this blog post</a>.
|
||||||
|
</p>
|
||||||
22
src/feed/posts/2023-01-16-retro70s-redesign.md
Normal file
22
src/feed/posts/2023-01-16-retro70s-redesign.md
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
---
|
||||||
|
layout: feed_post
|
||||||
|
title: "Retro/70s Redesign"
|
||||||
|
slug: 5447f787-0f3c-42a7-95c7-c0f28ff43a0f
|
||||||
|
date: 2023-01-16 11:00:00
|
||||||
|
tags: feed
|
||||||
|
permalink: /feed/2023-01-16-retro70s-redesign/
|
||||||
|
feedtags:
|
||||||
|
- Site Update
|
||||||
|
---
|
||||||
|
<p>
|
||||||
|
On a whim, I decided to redesign this site to have a bit more character. Initially inspired by <a href="https://open.spotify.com/album/3Po6WS22068XclNCiZqDIi" target="_blank">this cool album art</a>, I tried to incorporate retro/70s design elements.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
A fun element of this design is how parametric it is. The color palette can be completely swapped out for a complementary one.
|
||||||
|
I built several different palettes and randomly select one for each visitor.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
I'll do a more in-depth write-up of the process soon. For now, though, you can play with the themes on <a href="/technical">the technical info page</a>.
|
||||||
|
</p>
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
---
|
||||||
|
layout: feed_post
|
||||||
|
title: "Adventures in AI-assisted proof generation"
|
||||||
|
slug: b4e7bf56-e429-4ec1-8cdf-b39afcd7ab07
|
||||||
|
date: 2023-03-20 11:00:00
|
||||||
|
tags: feed
|
||||||
|
permalink: /feed/2023-03-20-adventures-in-ai-assisted-proof-generation/
|
||||||
|
feedtags:
|
||||||
|
- Blog Post
|
||||||
|
---
|
||||||
|
<p>
|
||||||
|
Begrudgingly, I recently spent a bit of time playing around with ChatGPT and its prowess with the Coq proof-assistant language.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
I chronicle my adventures, and some of my broader thoughts, in <a href="https://garrettmills.dev/blog/2023/03/20/Adventures-in-AI-assisted-proof-generation/" target="_blank">this blog post</a>.
|
||||||
|
</p>
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
---
|
||||||
|
layout: feed_post
|
||||||
|
title: "Down the Rabbit Hole of Linux Terminal Emulators"
|
||||||
|
slug: d6157751-4ccd-4e1e-af29-067a4157eb5e
|
||||||
|
date: 2023-05-03 11:00:00
|
||||||
|
tags: feed
|
||||||
|
permalink: /feed/2023-05-03-down-the-rabbit-hole-of-linux-terminal-emulators/
|
||||||
|
feedtags:
|
||||||
|
- Blog Post
|
||||||
|
---
|
||||||
|
<p>
|
||||||
|
I've had a pretty stable shell setup consisting of Guake + Fish shell for ~5 years now.
|
||||||
|
Recently, I decided I wanted the ability to copy-paste output w/ <code>screen</code> and
|
||||||
|
the ramifications of this forced me to re-examine my entire setup.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Read about my foibles <a href="https://garrettmills.dev/blog/2023/04/28/down-the-rabbit-hole-of-linux-terminal-emulators/" target="_blank">here</a>.
|
||||||
|
</p>
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
layout: feed_post
|
||||||
|
title: "MarkMark: simple, Markdown-based, federated bookmarks"
|
||||||
|
slug: 62df0d97-1e49-4c4c-bf25-e272f9dd26b6
|
||||||
|
date: 2023-11-20 11:00:00
|
||||||
|
tags: feed
|
||||||
|
permalink: /feed/2023-11-20-markmark-simple-markdown-based-federated-bookmarks/
|
||||||
|
feedtags:
|
||||||
|
- Side Project
|
||||||
|
---
|
||||||
|
<p>
|
||||||
|
MarkMark is a free (<a href="https://en.wikipedia.org/wiki/Free_as_in_Freedom" target="_blank">as in freedom</a>) bookmark format designed to be machine-readable and easy to use.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The goal of MarkMark is to standardize "link sharing" pages to build connections between small websites on the Internet.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<a href="/markmark">Learn more</a> or <a href="/links">see it in action</a>.
|
||||||
|
</p>
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
layout: feed_post
|
||||||
|
title: "Mitigating the iconv Vulnerability for PHP (CVE-2024-2961)"
|
||||||
|
slug: d6778cae-4f34-45ea-97c6-a94b2127c864
|
||||||
|
date: 2024-04-22 11:00:00
|
||||||
|
tags: feed
|
||||||
|
permalink: /feed/2024-04-22-mitigating-the-iconv-vulnerability-for-php-cve-2024-2961/
|
||||||
|
feedtags:
|
||||||
|
- Blog Post
|
||||||
|
---
|
||||||
|
<p>
|
||||||
|
Recently, CVE-2024-2961 was released which identifies a buffer overflow vulnerability in GNU libc.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
I had a hard time finding information on how to mitigate it at the OS-level. I collected my notes, in case they might be useful for someone else.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Read about it <a href="/blog/2024/04/22/Mitigating-the-iconv-Vulnerability-for-PHP-CVE-2024-2961">here</a>.
|
||||||
|
</p>
|
||||||
17
src/feed/posts/2024-06-30-world-plate-adventures.md
Normal file
17
src/feed/posts/2024-06-30-world-plate-adventures.md
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
---
|
||||||
|
layout: feed_post
|
||||||
|
title: "World Plate Adventures"
|
||||||
|
slug: 06f06691-b015-4e03-9424-03ea909c9769
|
||||||
|
date: 2024-06-30 11:00:00
|
||||||
|
tags: feed
|
||||||
|
permalink: /feed/2024-06-30-world-plate-adventures/
|
||||||
|
feedtags:
|
||||||
|
- Side Project
|
||||||
|
---
|
||||||
|
<p>
|
||||||
|
World Plate Adventures is a lifetime exploration of international food. Each month, we will choose a country and spend a few days researching the food. Then, each week of the month I'll cook a new dish from that country.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The first cuisine I'm exploring is France, with la Mère Brazier's <a href="/food/2024/06/30/FR-Blanquette-de-Veau"><i>blanquette de veau</i></a>.
|
||||||
|
</p>
|
||||||
25
src/feed/posts/2024-12-31-markmark-v11-syndication.md
Normal file
25
src/feed/posts/2024-12-31-markmark-v11-syndication.md
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
---
|
||||||
|
layout: feed_post
|
||||||
|
title: "MarkMark v1.1 - Syndication"
|
||||||
|
slug: 7ac51c5d-fd19-4be7-a33b-ad694ce91979
|
||||||
|
date: 2024-12-31 11:00:00
|
||||||
|
tags: feed
|
||||||
|
permalink: /feed/2024-12-31-markmark-v11-syndication/
|
||||||
|
feedtags:
|
||||||
|
- Site Update
|
||||||
|
---
|
||||||
|
<p>
|
||||||
|
I've published a new version of my markdown-based bookmark format, MarkMark. <a href="/markmark/standard">Version 1.1</a> adds support for tracking the date a link was saved.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The MarkMark <a href="https://code.garrettmills.dev/garrettmills/www/src/branch/master/src/markmark" target="_blank">parser/renderer collection</a> has been updated to support the new date format, as well as generating a unique hash identifier for each link (for use in permalinks).
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
These changes enable better support for one of <a href="/blog/feeds" target="_blank">my favorite things</a> on the web: syndication! With unique hashes and dates, it is now possible to automatically generate RSS/Atom/JSON feeds from a MarkMark list.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Which means you can now <a href="/links">subscribe to my bookmarks feed</a>. ;)
|
||||||
|
</p>
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
---
|
||||||
|
layout: feed_post
|
||||||
|
title: "Salvaging a Corrupted Table from PostgreSQL"
|
||||||
|
slug: 4724ec7f-7d51-4043-9b97-fb7caf2b666b
|
||||||
|
date: 2025-01-11 11:00:00
|
||||||
|
tags: feed
|
||||||
|
permalink: /feed/2025-01-11-salvaging-a-corrupted-table-from-postgresql/
|
||||||
|
feedtags:
|
||||||
|
- Blog Post
|
||||||
|
---
|
||||||
|
<p>
|
||||||
|
I've been dealing with data corruption on the Postgres server in my home lab. When migrating to a new server, I wanted a way to recover "as much data as possible" from some non-critical tables.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
What resulted was a dirty, terrible, dangerous, and effective Postgres recovery tool. Read about it <a href="/blog/2025/01/11/Salvaging-a-Corrupted-Table-from-PostgreSQL">here</a>.
|
||||||
|
</p>
|
||||||
@@ -1,16 +1,13 @@
|
|||||||
---
|
---
|
||||||
layout: feed_post
|
layout: feed_post
|
||||||
title: Site Redesign
|
title: "Site Redesign"
|
||||||
slug: 79ddb506-367e-47ce-bc1d-cd34e5a302e8
|
slug: 79ddb506-367e-47ce-bc1d-cd34e5a302e8
|
||||||
date: 2025-02-22 09:00:00
|
date: 2025-02-22 11:00:00
|
||||||
tags: feed
|
tags: feed
|
||||||
permalink: /feed/2025-02-22-site-redesign/
|
permalink: /feed/2025-02-22-site-redesign/
|
||||||
feedtags:
|
feedtags:
|
||||||
- Site Update
|
- Site Update
|
||||||
---
|
---
|
||||||
|
<p>Sticking with my approximately-annual tradition of redesigning this site, I've just switched over to a new design.</p>
|
||||||
Sticking with my approximately-annual tradition of redesigning this site, I've just switched over to a new design.
|
<p>This design is my attempt to return to a simpler design language that better conveys my current mood, with really (<i>really</i>) good fonts on a solid background.</p>
|
||||||
|
<p>Some more details on the <a href="/technical">Technical</a> page.</p>
|
||||||
This design is my attempt to return to a simpler design language that better conveys my current mood, with really (_really_) good fonts on a solid background.
|
|
||||||
|
|
||||||
Some more details on the [Technical](/technical) page.
|
|
||||||
@@ -4,15 +4,15 @@ permalink: humans.txt
|
|||||||
/* PEOPLE */
|
/* PEOPLE */
|
||||||
Garrett Mills
|
Garrett Mills
|
||||||
E-Mail: shout@garrettmills.dev
|
E-Mail: shout@garrettmills.dev
|
||||||
From: Lawrence, Kansas, USA (Rock Chalk!)
|
From: Kansas City, USA
|
||||||
|
|
||||||
/* SITE */
|
/* SITE */
|
||||||
Updated: 2025-06-03
|
Updated: 2026-02-28
|
||||||
Language: English
|
Language: English
|
||||||
Doctype: HTML5
|
Doctype: HTML5
|
||||||
IDE: IntelliJ IDEA Ultimate
|
IDE: IntelliJ IDEA Ultimate
|
||||||
This site was built using the Eleventy SSG.
|
This site was built using the Eleventy SSG.
|
||||||
Copyright (C) 2015-2025 Garrett Mills. See `/technical` for licensing.
|
Copyright (C) 2015-2026 Garrett Mills. See `/technical` for licensing.
|
||||||
|
|
||||||
/* OTHER */
|
/* OTHER */
|
||||||
Just a little something for the humans scraping the web... -GM
|
Just a little something for the humans scraping the web... -GM
|
||||||
|
|||||||
236
src/robots.njk
236
src/robots.njk
@@ -40,15 +40,30 @@ permalink: robots.txt
|
|||||||
User-agent: Google-Extended
|
User-agent: Google-Extended
|
||||||
Disallow: /
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: Google-CloudVertexBot
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: Gemini-Deep-Research
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
# Google
|
||||||
|
|
||||||
User-agent: GoogleOther
|
User-agent: GoogleOther
|
||||||
Disallow: /
|
Disallow: /
|
||||||
|
|
||||||
User-agent: Googlebot-Image
|
User-agent: Googlebot-Image
|
||||||
Disallow: /
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: Googlebot-Video
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
User-agent: AdsBot-Google
|
User-agent: AdsBot-Google
|
||||||
Disallow: /
|
Disallow: /
|
||||||
|
|
||||||
|
# Bing
|
||||||
|
User-agent: bingbot
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
# Common Crawl
|
# Common Crawl
|
||||||
User-agent: CCBot
|
User-agent: CCBot
|
||||||
Disallow: /
|
Disallow: /
|
||||||
@@ -60,6 +75,9 @@ Disallow: /
|
|||||||
User-agent: ChatGPT
|
User-agent: ChatGPT
|
||||||
Disallow: /
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: ChatGPT Agent
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
User-agent: GPTBot
|
User-agent: GPTBot
|
||||||
Disallow: /
|
Disallow: /
|
||||||
|
|
||||||
@@ -70,48 +88,250 @@ Disallow: /
|
|||||||
User-agent: Omgili
|
User-agent: Omgili
|
||||||
Disallow: /
|
Disallow: /
|
||||||
|
|
||||||
# Facebook AI
|
# Facebook
|
||||||
User-agent: FacebookBot
|
User-agent: FacebookBot
|
||||||
Disallow: /
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: meta-externalagent
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: Meta-ExternalAgent
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: meta-externalfetcher
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: Meta-ExternalFetcher
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: meta-webindexer
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
# Anthropic
|
||||||
|
User-agent: anthropic-ai
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
User-agent: Claude-Web
|
User-agent: Claude-Web
|
||||||
Disallow: /
|
Disallow: /
|
||||||
|
|
||||||
User-agent: ClaudeBot
|
User-agent: ClaudeBot
|
||||||
Disallow: /
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: Claude-SearchBot
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: Claude-User
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
# Apple AI
|
# Apple AI
|
||||||
User-agent: Applebot-Extended
|
User-agent: Applebot-Extended
|
||||||
Disallow: /
|
Disallow: /
|
||||||
|
|
||||||
# Other AI training known or suspected
|
# Other AI training known or suspected
|
||||||
User-agent: anthropic-ai
|
User-agent: AddSearchBot
|
||||||
Disallow: /
|
Disallow: /
|
||||||
|
|
||||||
User-agent: PerplexityBot
|
User-agent: AI2Bot
|
||||||
Disallow: /
|
Disallow: /
|
||||||
|
|
||||||
User-agent: Bytespider
|
User-agent: Ai2Bot-Dolma
|
||||||
Disallow: /
|
|
||||||
|
|
||||||
User-agent: The Knowledge AI
|
|
||||||
Disallow: /
|
Disallow: /
|
||||||
|
|
||||||
User-agent: aiHitBot
|
User-agent: aiHitBot
|
||||||
Disallow: /
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: Andibot
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: Awario
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: bedrockbot
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: bigsur.ai
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: Brightbot 1.0
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: Bytespider
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
User-agent: cohere-ai
|
User-agent: cohere-ai
|
||||||
Disallow: /
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: cohere-training-data-crawler
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: Cotoyogi
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: Crawlspace
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: Datenbank Crawler
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: DeepSeekBot
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: Devin
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
User-agent: Diffbot
|
User-agent: Diffbot
|
||||||
Disallow: /
|
Disallow: /
|
||||||
|
|
||||||
User-agent: YouBot
|
User-agent: DuckAssistBot
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: Echobot Bot
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: EchoboxBot
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: Factset_spyderbot
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: FirecrawlAgent
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: FriendlyCrawler
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: iaskspider/2.0
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: ICC-Crawler
|
||||||
Disallow: /
|
Disallow: /
|
||||||
|
|
||||||
User-agent: ImagesiftBot
|
User-agent: ImagesiftBot
|
||||||
Disallow: /
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: img2dataset
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: ISSCyberRiskCrawler
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: Kangaroo Bot
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: LinerBot
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: MistralAI-User
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: MistralAI-User/1.0
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: MyCentralAIScraperBot
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: netEstate Imprint Crawler
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: NovaAct
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: OAI-SearchBot
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: Operator
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: PanguBot
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: Panscient
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: panscient.com
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: Perplexity-User
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: PerplexityBot
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: PetalBot
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: PhindBot
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: Poseidon Research Crawler
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: QualifiedBot
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: QuillBot
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: quillbot.com
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: SBIntuitionsBot
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: Scrapy
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: SemrushBot-OCOB
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: SemrushBot-SWA
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: ShapBot
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: Sidetrade indexer bot
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: TerraCotta
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: The Knowledge AI
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: Thinkbot
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: TikTokSpider
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: Timpibot
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: VelenPublicWebCrawler
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: WARDBot
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: Webzio-Extended
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: wpbot
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: YaK
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: YandexAdditional
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: YandexAdditionalBot
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
User-agent: YouBot
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
# Siri and Alexa yuck
|
# Siri and Alexa yuck
|
||||||
User-agent: Amazonbot
|
User-agent: Amazonbot
|
||||||
Disallow: /
|
Disallow: /
|
||||||
|
|||||||
Reference in New Issue
Block a user