{
  "version": "https://jsonfeed.org/version/1",
  "title": "rights on Tyler Knows Nothing",
  "icon": "https://www.gravatar.com/avatar/aefe2471dd17582d4028c3cf27b70b0b?s=96&d=https%3A%2F%2Fmicro.blog%2Fimages%2Fblank_avatar.png",
  "home_page_url": "https://tylerknowsnothing.com/",
  "feed_url": "https://tylerknowsnothing.com/feed.json",
  "items": [
      {
        "id": "http://tknblogs.micro.blog/2026/05/31/apples-multi-device-management-tools.html",
        
        "content_html": "<p>Apple&rsquo;s Multi Device Management tools for institutions is fantastic, until it&rsquo;s not disabled before off-leasing the devices, leaving bargain hunters to employ work arounds. But refurbishers won&rsquo;t bother as it costs too much. This needs to be fixed. #Apple #RightToRepair</p>\n\n<style>\n:root {\n   \n  --yt-aspect-ratio-16-9: 56.25%;\n\n   \n  --yt-bg-black: #000;\n  --yt-play-button-bg: rgba(255, 0, 0, 0.8);\n  --yt-play-button-bg-hover: rgba(255, 0, 0, 1);\n  --yt-play-button-icon: #fff;\n  --yt-overlay-bg: rgba(0, 0, 0, 0.85);\n  --yt-overlay-text: #fff;\n  --yt-focus-outline: #e53935;\n\n   \n  --yt-play-button-width: 68px;\n  --yt-play-button-height: 48px;\n  --yt-play-button-border-radius: 12px;\n\n   \n  --yt-focus-outline-width: 3px;\n  --yt-focus-outline-offset: 4px;\n\n   \n  --yt-transition-duration: 0.2s;\n  --yt-transition-timing: ease-in-out;\n}\n\n.video-wrapper {\n  position: relative;\n  display: block;\n  width: 100%;\n  padding: 0;\n  padding-bottom: var(--yt-aspect-ratio-16-9);\n  margin: 0;\n  height: 0;\n  max-width: 100%;\n  overflow: hidden;\n  background-color: var(--yt-bg-black);\n  cursor: pointer;\n  outline: none;\n  border: none;\n  color: inherit;\n  font: inherit;\n  text-align: inherit;\n  appearance: none;\n  -webkit-appearance: none;\n}\n\n.video-wrapper[data-is-loaded=\"true\"] {\n  cursor: auto;\n}\n\n.video-wrapper:focus-visible {\n  outline: var(--yt-focus-outline-width) solid var(--yt-focus-outline);\n  outline-offset: var(--yt-focus-outline-offset);\n}\n\n.video-thumbnail {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  margin: auto;\n  max-width: 100%;\n  max-height: 100%;\n  width: auto;\n  height: auto;\n  object-fit: contain;\n  object-position: center;\n  background-color: var(--yt-bg-black);\n  z-index: 1;\n  transition: opacity var(--yt-transition-duration) var(--yt-transition-timing);\n}\n\n.video-wrapper:hover .video-thumbnail {\n  opacity: 0.9;\n}\n\n.video-overlay {\n  position: absolute;\n  bottom: 0;\n  left: 0;\n  width: 100%;\n  background: var(--yt-overlay-bg);\n  color: var(--yt-overlay-text);\n  text-align: center;\n  font-size: 0.85em;\n  padding: 0.5em 1em;\n  z-index: 2;\n  pointer-events: auto;\n}\n\n.video-play-button {\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  transform: translate(-50%, -50%);\n  width: var(--yt-play-button-width);\n  height: var(--yt-play-button-height);\n  background-color: var(--yt-play-button-bg);\n  border-radius: var(--yt-play-button-border-radius);\n  z-index: 3;\n  pointer-events: none;\n  transition: all var(--yt-transition-duration) var(--yt-transition-timing);\n}\n\n.video-wrapper:hover .video-play-button {\n  background-color: var(--yt-play-button-bg-hover);\n  transform: translate(-50%, -50%) scale(1.1);\n}\n\n.video-wrapper:active .video-play-button {\n  transform: translate(-50%, -50%) scale(1.05);\n}\n\n.video-play-button::before {\n  content: '';\n  position: absolute;\n  left: 26px;\n  top: 14px;\n  width: 0;\n  height: 0;\n  border-left: 18px solid var(--yt-play-button-icon);\n  border-top: 12px solid transparent;\n  border-bottom: 12px solid transparent;\n}\n\n.video-wrapper iframe {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  border: none;\n  z-index: 4;\n}\n\n.video-noscript {\n  display: block;\n  max-width: 100%;\n  background-color: var(--yt-bg-black);\n  color: inherit;\n  text-align: center;\n  padding: 0;\n  margin-top: 0.5em;\n}\n\n.video-noscript img {\n  display: block;\n  width: 100%;\n  height: auto;\n}\n\n.video-noscript a {\n  display: inline-block;\n  padding: 0.75em 1em;\n  color: inherit;\n  text-decoration: underline;\n}\n\n.yt-text-link {\n  display: none;\n}\n</style>\n\n<script>\n(function(){\n  'use strict';\n\n  \n  const CONSTANTS = {\n    VIDEO_ID_LENGTH: 11,\n    MAX_INPUT_LENGTH: 2048,\n    VIDEO_ID_PATTERN: /^[a-zA-Z0-9_-]{11}$/,\n    PLAYLIST_PREFIXES: /^(PL|OL|UU|LL|FL)/i,\n    ALLOWED_URL_CHARS: /^[a-zA-Z0-9_\\-?=&#:/.]+$/,\n    TIME_FORMATS: {\n      HOURS: 3600,\n      MINUTES: 60,\n      SECONDS: 1\n    },\n    YOUTUBE_NOCOOKIE_DOMAIN: 'https://www.youtube-nocookie.com',\n    YOUTUBE_IMG_DOMAIN: 'https://img.youtube.com',\n    EMBED_PARAMS: 'autoplay=1&mute=1'\n  };\n\n  \n\n  function validateInput(input, maxLength = CONSTANTS.MAX_INPUT_LENGTH) {\n    if (!input || typeof input !== 'string') return '';\n\n    const trimmed = input.trim();\n\n    if (trimmed.length > maxLength) {\n      console.warn(`Input exceeds maximum length of ${maxLength}`);\n      return '';\n    }\n\n    \n    if (!CONSTANTS.ALLOWED_URL_CHARS.test(trimmed)) {\n      console.warn('Input contains invalid characters');\n      return '';\n    }\n\n    return trimmed;\n  }\n\n  \n\n  function parseStartValue(value) {\n    if (!value) return 0;\n\n    \n    if (/^\\d+$/.test(value)) {\n      const parsed = parseInt(value, 10);\n      return isNaN(parsed) ? 0 : Math.max(0, parsed);\n    }\n\n    \n    let total = 0;\n    let matched = false;\n    const regex = /(\\d+)(h|m|s)/gi;\n    let match;\n\n    while ((match = regex.exec(value)) !== null) {\n      matched = true;\n      const num = parseInt(match[1], 10);\n      if (isNaN(num)) continue;\n\n      const unit = match[2].toLowerCase();\n      if (unit === 'h') total += num * CONSTANTS.TIME_FORMATS.HOURS;\n      else if (unit === 'm') total += num * CONSTANTS.TIME_FORMATS.MINUTES;\n      else if (unit === 's') total += num * CONSTANTS.TIME_FORMATS.SECONDS;\n    }\n\n    return matched ? Math.max(0, total) : 0;\n  }\n\n  \n\n  function extractStartTime(queryString) {\n    if (!queryString) return 0;\n\n    try {\n      const cleanQuery = queryString.startsWith('?') || queryString.startsWith('#')\n        ? queryString.slice(1)\n        : queryString;\n\n      const params = new URLSearchParams(cleanQuery);\n\n      \n      return parseStartValue(params.get('start')) ||\n             parseStartValue(params.get('t')) ||\n             parseStartValue(params.get('time_continue')) ||\n             0;\n    } catch (e) {\n      console.warn('Failed to parse query parameters:', e);\n      return 0;\n    }\n  }\n\n  \n\n  function parseId(raw) {\n    const validated = validateInput(raw);\n    if (!validated) {\n      return { type: 'unknown', id: '', start: 0 };\n    }\n\n    let startSeconds = 0;\n    let normalized = validated;\n\n    \n    const queryIndex = normalized.indexOf('?');\n    if (queryIndex !== -1) {\n      startSeconds = extractStartTime(normalized.slice(queryIndex + 1));\n      normalized = normalized.slice(0, queryIndex);\n    }\n\n    \n    const hashIndex = normalized.indexOf('#');\n    if (hashIndex !== -1) {\n      startSeconds = startSeconds || extractStartTime(normalized.slice(hashIndex + 1));\n      normalized = normalized.slice(0, hashIndex);\n    }\n\n    \n    if (CONSTANTS.PLAYLIST_PREFIXES.test(normalized)) {\n      return { type: 'playlist', id: normalized, start: startSeconds };\n    }\n\n    \n    if (CONSTANTS.VIDEO_ID_PATTERN.test(normalized)) {\n      return { type: 'video', id: normalized, start: startSeconds };\n    }\n\n    \n    const listMatch = normalized.match(/list=([^&]+)/);\n    if (listMatch && listMatch[1]) {\n      return { type: 'playlist', id: listMatch[1], start: startSeconds };\n    }\n\n    console.warn('Unable to parse video/playlist ID:', raw);\n    return { type: 'unknown', id: '', start: startSeconds };\n  }\n\n  \n\n  function validateThumbnailUrl(thumbUrl) {\n    if (!thumbUrl) return '';\n\n    let cleaned = thumbUrl.trim();\n\n    \n    const markdownMatch = cleaned.match(/^\\[[^\\]]*\\]\\(([^)]+)\\)$/);\n    if (markdownMatch) {\n      cleaned = markdownMatch[1].trim();\n    }\n\n    \n    try {\n      const url = new URL(cleaned, document.baseURI);\n\n      \n      if (url.protocol !== 'http:' && url.protocol !== 'https:') {\n        console.warn('Thumbnail URL must use http or https protocol');\n        return '';\n      }\n\n      return url.href;\n    } catch (e) {\n      console.warn('Invalid thumbnail URL:', e);\n      return '';\n    }\n  }\n\n  \n\n  function getPlaylistPlaceholder() {\n    const svg = `<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1280 720'>` +\n                `<rect width='100%' height='100%' fill='#000'/>` +\n                `<rect x='220' y='260' width='840' height='60' fill='#fff'/>` +\n                `<rect x='220' y='340' width='660' height='60' fill='#fff'/>` +\n                `</svg>`;\n    return 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(svg);\n  }\n\n  /**\n   * Sets up thumbnail for video wrapper\n   * @param {HTMLImageElement} thumbnail - Thumbnail element\n   * @param {Object} kind - Parsed video/playlist info\n   * @param {string} customThumb - Custom thumbnail URL\n   */\n  function setupThumbnail(thumbnail, kind, customThumb) {\n    if (!thumbnail) return;\n\n    if (customThumb) {\n      // Use custom thumbnail\n      thumbnail.onerror = null;\n      thumbnail.src = customThumb;\n    } else if (kind.type === 'playlist') {\n      // Use playlist placeholder\n      thumbnail.src = getPlaylistPlaceholder();\n    } else if (kind.type === 'video' && kind.id) {\n      // Use YouTube thumbnail with fallback\n      thumbnail.src = `${CONSTANTS.YOUTUBE_IMG_DOMAIN}/vi/${kind.id}/maxresdefault.jpg`;\n      thumbnail.onerror = () => {\n        thumbnail.onerror = null;\n        thumbnail.src = `${CONSTANTS.YOUTUBE_IMG_DOMAIN}/vi/${kind.id}/0.jpg`;\n      };\n    }\n    // For unknown type, keep the default placeholder\n  }\n\n  /**\n   * Creates embed URL for video or playlist\n   * @param {Object} kind - Parsed video/playlist info\n   * @returns {string} Embed URL or empty string if invalid\n   */\n  function createEmbedUrl(kind) {\n    if (kind.type === 'playlist' && kind.id) {\n      return `${CONSTANTS.YOUTUBE_NOCOOKIE_DOMAIN}/embed/videoseries?list=${encodeURIComponent(kind.id)}&${CONSTANTS.EMBED_PARAMS}`;\n    } else if (kind.type === 'video' && kind.id) {\n      let url = `${CONSTANTS.YOUTUBE_NOCOOKIE_DOMAIN}/embed/${encodeURIComponent(kind.id)}?${CONSTANTS.EMBED_PARAMS}`;\n      if (kind.start > 0) {\n        url += `&start=${Math.floor(kind.start)}`;\n      }\n      return url;\n    }\n    return '';\n  }\n\n  /**\n   * Creates and loads iframe embed\n   * @param {HTMLElement} wrapper - Video wrapper element\n   * @param {Object} kind - Parsed video/playlist info\n   * @param {string} title - Video title\n   */\n  function loadEmbed(wrapper, kind, title) {\n    if (wrapper.dataset.isLoaded === 'true') return;\n\n    const embedUrl = createEmbedUrl(kind);\n    if (!embedUrl) {\n      console.error('Unable to create embed URL - invalid video/playlist ID');\n      // Show error message to user\n      wrapper.innerHTML = '<div style=\"padding: 2em; text-align: center; color: #fff;\">Unable to load video. Please check the video ID.</div>';\n      return;\n    }\n\n    // Create iframe\n    const iframe = document.createElement('iframe');\n    iframe.setAttribute('allowfullscreen', '');\n    iframe.setAttribute('loading', 'lazy');\n    iframe.setAttribute('allow', 'accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture');\n    iframe.setAttribute('title', title ? `YouTube video player: ${title}` : 'YouTube video player');\n    iframe.src = embedUrl;\n\n    \n    const replacement = document.createElement('div');\n    replacement.className = wrapper.className;\n    replacement.dataset.listenersAdded = 'true';\n    replacement.dataset.isLoaded = 'true';\n    replacement.appendChild(iframe);\n\n    wrapper.replaceWith(replacement);\n  }\n\n  \n\n  function enhanceEmbeds() {\n    const wrappers = document.querySelectorAll('.video-wrapper');\n\n    wrappers.forEach(wrapper => {\n      \n      if (wrapper.dataset.listenersAdded === 'true') return;\n      wrapper.dataset.listenersAdded = 'true';\n\n      \n      const rawVideoId = wrapper.dataset.videoId || '';\n      const rawThumbUrl = wrapper.dataset.thumb || '';\n      const videoTitle = wrapper.dataset.videoTitle || '';\n\n      \n      const kind = parseId(rawVideoId);\n      const safeThumb = validateThumbnailUrl(rawThumbUrl);\n\n      \n      const thumbnail = wrapper.querySelector('.video-thumbnail');\n      setupThumbnail(thumbnail, kind, safeThumb);\n\n      \n      const loadHandler = () => loadEmbed(wrapper, kind, videoTitle);\n\n      wrapper.addEventListener('click', loadHandler);\n\n      const overlay = wrapper.querySelector('.video-overlay');\n      if (overlay) overlay.addEventListener('click', loadHandler);\n      if (thumbnail) thumbnail.addEventListener('click', loadHandler);\n\n      \n      wrapper.addEventListener('keydown', (e) => {\n        if (e.key === 'Enter' || e.key === ' ') {\n          e.preventDefault();\n          loadHandler();\n        }\n      });\n    });\n  }\n\n  \n  enhanceEmbeds();\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', enhanceEmbeds);\n  }\n})();\n</script><p class=\"yt-text-link\">\n      <a href=\"https://www.youtube.com/watch?v=6YGVo48qPaA\">YouTube Video</a>\n    </p><button type=\"button\"\n    class=\"video-wrapper\"\n    aria-label=\"Play YouTube video\"\n    data-video-id=\"6YGVo48qPaA\"\n    data-thumb=\"\"\n    ><img\n      class=\"video-thumbnail\"\n      src=\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20viewBox=%270%200%201280%20720%27%3E%3Crect%20width=%27100%25%25%27%20height=%27100%25%25%27%20fill=%27%23000%27/%3E%3C/svg%3E\"\n      alt=\"YouTube Thumbnail\"\n      loading=\"lazy\"\n      decoding=\"async\"><div class=\"video-play-button\"></div>\n  </button><noscript>\n    <div class=\"video-noscript\"><img src=\"https://img.youtube.com/vi/6YGVo48qPaA/maxresdefault.jpg\"\n             alt=\"YouTube Thumbnail\"><p>\n          <a href=\"https://www.youtube.com/watch?v=6YGVo48qPaA\" target=\"_blank\" rel=\"noopener noreferrer\">YouTube Video</a>\n        </p></div>\n  </noscript>\n",
        "date_published": "2026-05-31T12:17:05-07:00",
        "url": "https://tylerknowsnothing.com/2026/05/31/apples-multi-device-management-tools.html",
        "tags": ["rights","Apple","technology"]
      },
      {
        "id": "http://tknblogs.micro.blog/2026/05/29/freedom-is-in-hospice-care.html",
        
        "content_html": "<p>Freedom is in hospice care. #NY shoehorned anti-maker #surveillance legislation into their budget claiming to target ghost guns, but not understanding how much they&rsquo;re actually breaking in the process. CNC, lathes, laser cutters, 3D printers &amp; more are included. #uspol #tech #rights</p>\n\n<style>\n:root {\n   \n  --yt-aspect-ratio-16-9: 56.25%;\n\n   \n  --yt-bg-black: #000;\n  --yt-play-button-bg: rgba(255, 0, 0, 0.8);\n  --yt-play-button-bg-hover: rgba(255, 0, 0, 1);\n  --yt-play-button-icon: #fff;\n  --yt-overlay-bg: rgba(0, 0, 0, 0.85);\n  --yt-overlay-text: #fff;\n  --yt-focus-outline: #e53935;\n\n   \n  --yt-play-button-width: 68px;\n  --yt-play-button-height: 48px;\n  --yt-play-button-border-radius: 12px;\n\n   \n  --yt-focus-outline-width: 3px;\n  --yt-focus-outline-offset: 4px;\n\n   \n  --yt-transition-duration: 0.2s;\n  --yt-transition-timing: ease-in-out;\n}\n\n.video-wrapper {\n  position: relative;\n  display: block;\n  width: 100%;\n  padding: 0;\n  padding-bottom: var(--yt-aspect-ratio-16-9);\n  margin: 0;\n  height: 0;\n  max-width: 100%;\n  overflow: hidden;\n  background-color: var(--yt-bg-black);\n  cursor: pointer;\n  outline: none;\n  border: none;\n  color: inherit;\n  font: inherit;\n  text-align: inherit;\n  appearance: none;\n  -webkit-appearance: none;\n}\n\n.video-wrapper[data-is-loaded=\"true\"] {\n  cursor: auto;\n}\n\n.video-wrapper:focus-visible {\n  outline: var(--yt-focus-outline-width) solid var(--yt-focus-outline);\n  outline-offset: var(--yt-focus-outline-offset);\n}\n\n.video-thumbnail {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  margin: auto;\n  max-width: 100%;\n  max-height: 100%;\n  width: auto;\n  height: auto;\n  object-fit: contain;\n  object-position: center;\n  background-color: var(--yt-bg-black);\n  z-index: 1;\n  transition: opacity var(--yt-transition-duration) var(--yt-transition-timing);\n}\n\n.video-wrapper:hover .video-thumbnail {\n  opacity: 0.9;\n}\n\n.video-overlay {\n  position: absolute;\n  bottom: 0;\n  left: 0;\n  width: 100%;\n  background: var(--yt-overlay-bg);\n  color: var(--yt-overlay-text);\n  text-align: center;\n  font-size: 0.85em;\n  padding: 0.5em 1em;\n  z-index: 2;\n  pointer-events: auto;\n}\n\n.video-play-button {\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  transform: translate(-50%, -50%);\n  width: var(--yt-play-button-width);\n  height: var(--yt-play-button-height);\n  background-color: var(--yt-play-button-bg);\n  border-radius: var(--yt-play-button-border-radius);\n  z-index: 3;\n  pointer-events: none;\n  transition: all var(--yt-transition-duration) var(--yt-transition-timing);\n}\n\n.video-wrapper:hover .video-play-button {\n  background-color: var(--yt-play-button-bg-hover);\n  transform: translate(-50%, -50%) scale(1.1);\n}\n\n.video-wrapper:active .video-play-button {\n  transform: translate(-50%, -50%) scale(1.05);\n}\n\n.video-play-button::before {\n  content: '';\n  position: absolute;\n  left: 26px;\n  top: 14px;\n  width: 0;\n  height: 0;\n  border-left: 18px solid var(--yt-play-button-icon);\n  border-top: 12px solid transparent;\n  border-bottom: 12px solid transparent;\n}\n\n.video-wrapper iframe {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  border: none;\n  z-index: 4;\n}\n\n.video-noscript {\n  display: block;\n  max-width: 100%;\n  background-color: var(--yt-bg-black);\n  color: inherit;\n  text-align: center;\n  padding: 0;\n  margin-top: 0.5em;\n}\n\n.video-noscript img {\n  display: block;\n  width: 100%;\n  height: auto;\n}\n\n.video-noscript a {\n  display: inline-block;\n  padding: 0.75em 1em;\n  color: inherit;\n  text-decoration: underline;\n}\n\n.yt-text-link {\n  display: none;\n}\n</style>\n\n<script>\n(function(){\n  'use strict';\n\n  \n  const CONSTANTS = {\n    VIDEO_ID_LENGTH: 11,\n    MAX_INPUT_LENGTH: 2048,\n    VIDEO_ID_PATTERN: /^[a-zA-Z0-9_-]{11}$/,\n    PLAYLIST_PREFIXES: /^(PL|OL|UU|LL|FL)/i,\n    ALLOWED_URL_CHARS: /^[a-zA-Z0-9_\\-?=&#:/.]+$/,\n    TIME_FORMATS: {\n      HOURS: 3600,\n      MINUTES: 60,\n      SECONDS: 1\n    },\n    YOUTUBE_NOCOOKIE_DOMAIN: 'https://www.youtube-nocookie.com',\n    YOUTUBE_IMG_DOMAIN: 'https://img.youtube.com',\n    EMBED_PARAMS: 'autoplay=1&mute=1'\n  };\n\n  \n\n  function validateInput(input, maxLength = CONSTANTS.MAX_INPUT_LENGTH) {\n    if (!input || typeof input !== 'string') return '';\n\n    const trimmed = input.trim();\n\n    if (trimmed.length > maxLength) {\n      console.warn(`Input exceeds maximum length of ${maxLength}`);\n      return '';\n    }\n\n    \n    if (!CONSTANTS.ALLOWED_URL_CHARS.test(trimmed)) {\n      console.warn('Input contains invalid characters');\n      return '';\n    }\n\n    return trimmed;\n  }\n\n  \n\n  function parseStartValue(value) {\n    if (!value) return 0;\n\n    \n    if (/^\\d+$/.test(value)) {\n      const parsed = parseInt(value, 10);\n      return isNaN(parsed) ? 0 : Math.max(0, parsed);\n    }\n\n    \n    let total = 0;\n    let matched = false;\n    const regex = /(\\d+)(h|m|s)/gi;\n    let match;\n\n    while ((match = regex.exec(value)) !== null) {\n      matched = true;\n      const num = parseInt(match[1], 10);\n      if (isNaN(num)) continue;\n\n      const unit = match[2].toLowerCase();\n      if (unit === 'h') total += num * CONSTANTS.TIME_FORMATS.HOURS;\n      else if (unit === 'm') total += num * CONSTANTS.TIME_FORMATS.MINUTES;\n      else if (unit === 's') total += num * CONSTANTS.TIME_FORMATS.SECONDS;\n    }\n\n    return matched ? Math.max(0, total) : 0;\n  }\n\n  \n\n  function extractStartTime(queryString) {\n    if (!queryString) return 0;\n\n    try {\n      const cleanQuery = queryString.startsWith('?') || queryString.startsWith('#')\n        ? queryString.slice(1)\n        : queryString;\n\n      const params = new URLSearchParams(cleanQuery);\n\n      \n      return parseStartValue(params.get('start')) ||\n             parseStartValue(params.get('t')) ||\n             parseStartValue(params.get('time_continue')) ||\n             0;\n    } catch (e) {\n      console.warn('Failed to parse query parameters:', e);\n      return 0;\n    }\n  }\n\n  \n\n  function parseId(raw) {\n    const validated = validateInput(raw);\n    if (!validated) {\n      return { type: 'unknown', id: '', start: 0 };\n    }\n\n    let startSeconds = 0;\n    let normalized = validated;\n\n    \n    const queryIndex = normalized.indexOf('?');\n    if (queryIndex !== -1) {\n      startSeconds = extractStartTime(normalized.slice(queryIndex + 1));\n      normalized = normalized.slice(0, queryIndex);\n    }\n\n    \n    const hashIndex = normalized.indexOf('#');\n    if (hashIndex !== -1) {\n      startSeconds = startSeconds || extractStartTime(normalized.slice(hashIndex + 1));\n      normalized = normalized.slice(0, hashIndex);\n    }\n\n    \n    if (CONSTANTS.PLAYLIST_PREFIXES.test(normalized)) {\n      return { type: 'playlist', id: normalized, start: startSeconds };\n    }\n\n    \n    if (CONSTANTS.VIDEO_ID_PATTERN.test(normalized)) {\n      return { type: 'video', id: normalized, start: startSeconds };\n    }\n\n    \n    const listMatch = normalized.match(/list=([^&]+)/);\n    if (listMatch && listMatch[1]) {\n      return { type: 'playlist', id: listMatch[1], start: startSeconds };\n    }\n\n    console.warn('Unable to parse video/playlist ID:', raw);\n    return { type: 'unknown', id: '', start: startSeconds };\n  }\n\n  \n\n  function validateThumbnailUrl(thumbUrl) {\n    if (!thumbUrl) return '';\n\n    let cleaned = thumbUrl.trim();\n\n    \n    const markdownMatch = cleaned.match(/^\\[[^\\]]*\\]\\(([^)]+)\\)$/);\n    if (markdownMatch) {\n      cleaned = markdownMatch[1].trim();\n    }\n\n    \n    try {\n      const url = new URL(cleaned, document.baseURI);\n\n      \n      if (url.protocol !== 'http:' && url.protocol !== 'https:') {\n        console.warn('Thumbnail URL must use http or https protocol');\n        return '';\n      }\n\n      return url.href;\n    } catch (e) {\n      console.warn('Invalid thumbnail URL:', e);\n      return '';\n    }\n  }\n\n  \n\n  function getPlaylistPlaceholder() {\n    const svg = `<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1280 720'>` +\n                `<rect width='100%' height='100%' fill='#000'/>` +\n                `<rect x='220' y='260' width='840' height='60' fill='#fff'/>` +\n                `<rect x='220' y='340' width='660' height='60' fill='#fff'/>` +\n                `</svg>`;\n    return 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(svg);\n  }\n\n  /**\n   * Sets up thumbnail for video wrapper\n   * @param {HTMLImageElement} thumbnail - Thumbnail element\n   * @param {Object} kind - Parsed video/playlist info\n   * @param {string} customThumb - Custom thumbnail URL\n   */\n  function setupThumbnail(thumbnail, kind, customThumb) {\n    if (!thumbnail) return;\n\n    if (customThumb) {\n      // Use custom thumbnail\n      thumbnail.onerror = null;\n      thumbnail.src = customThumb;\n    } else if (kind.type === 'playlist') {\n      // Use playlist placeholder\n      thumbnail.src = getPlaylistPlaceholder();\n    } else if (kind.type === 'video' && kind.id) {\n      // Use YouTube thumbnail with fallback\n      thumbnail.src = `${CONSTANTS.YOUTUBE_IMG_DOMAIN}/vi/${kind.id}/maxresdefault.jpg`;\n      thumbnail.onerror = () => {\n        thumbnail.onerror = null;\n        thumbnail.src = `${CONSTANTS.YOUTUBE_IMG_DOMAIN}/vi/${kind.id}/0.jpg`;\n      };\n    }\n    // For unknown type, keep the default placeholder\n  }\n\n  /**\n   * Creates embed URL for video or playlist\n   * @param {Object} kind - Parsed video/playlist info\n   * @returns {string} Embed URL or empty string if invalid\n   */\n  function createEmbedUrl(kind) {\n    if (kind.type === 'playlist' && kind.id) {\n      return `${CONSTANTS.YOUTUBE_NOCOOKIE_DOMAIN}/embed/videoseries?list=${encodeURIComponent(kind.id)}&${CONSTANTS.EMBED_PARAMS}`;\n    } else if (kind.type === 'video' && kind.id) {\n      let url = `${CONSTANTS.YOUTUBE_NOCOOKIE_DOMAIN}/embed/${encodeURIComponent(kind.id)}?${CONSTANTS.EMBED_PARAMS}`;\n      if (kind.start > 0) {\n        url += `&start=${Math.floor(kind.start)}`;\n      }\n      return url;\n    }\n    return '';\n  }\n\n  /**\n   * Creates and loads iframe embed\n   * @param {HTMLElement} wrapper - Video wrapper element\n   * @param {Object} kind - Parsed video/playlist info\n   * @param {string} title - Video title\n   */\n  function loadEmbed(wrapper, kind, title) {\n    if (wrapper.dataset.isLoaded === 'true') return;\n\n    const embedUrl = createEmbedUrl(kind);\n    if (!embedUrl) {\n      console.error('Unable to create embed URL - invalid video/playlist ID');\n      // Show error message to user\n      wrapper.innerHTML = '<div style=\"padding: 2em; text-align: center; color: #fff;\">Unable to load video. Please check the video ID.</div>';\n      return;\n    }\n\n    // Create iframe\n    const iframe = document.createElement('iframe');\n    iframe.setAttribute('allowfullscreen', '');\n    iframe.setAttribute('loading', 'lazy');\n    iframe.setAttribute('allow', 'accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture');\n    iframe.setAttribute('title', title ? `YouTube video player: ${title}` : 'YouTube video player');\n    iframe.src = embedUrl;\n\n    \n    const replacement = document.createElement('div');\n    replacement.className = wrapper.className;\n    replacement.dataset.listenersAdded = 'true';\n    replacement.dataset.isLoaded = 'true';\n    replacement.appendChild(iframe);\n\n    wrapper.replaceWith(replacement);\n  }\n\n  \n\n  function enhanceEmbeds() {\n    const wrappers = document.querySelectorAll('.video-wrapper');\n\n    wrappers.forEach(wrapper => {\n      \n      if (wrapper.dataset.listenersAdded === 'true') return;\n      wrapper.dataset.listenersAdded = 'true';\n\n      \n      const rawVideoId = wrapper.dataset.videoId || '';\n      const rawThumbUrl = wrapper.dataset.thumb || '';\n      const videoTitle = wrapper.dataset.videoTitle || '';\n\n      \n      const kind = parseId(rawVideoId);\n      const safeThumb = validateThumbnailUrl(rawThumbUrl);\n\n      \n      const thumbnail = wrapper.querySelector('.video-thumbnail');\n      setupThumbnail(thumbnail, kind, safeThumb);\n\n      \n      const loadHandler = () => loadEmbed(wrapper, kind, videoTitle);\n\n      wrapper.addEventListener('click', loadHandler);\n\n      const overlay = wrapper.querySelector('.video-overlay');\n      if (overlay) overlay.addEventListener('click', loadHandler);\n      if (thumbnail) thumbnail.addEventListener('click', loadHandler);\n\n      \n      wrapper.addEventListener('keydown', (e) => {\n        if (e.key === 'Enter' || e.key === ' ') {\n          e.preventDefault();\n          loadHandler();\n        }\n      });\n    });\n  }\n\n  \n  enhanceEmbeds();\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', enhanceEmbeds);\n  }\n})();\n</script><p class=\"yt-text-link\">\n      <a href=\"https://www.youtube.com/watch?v=n4QxcwAm2bQ\">YouTube Video</a>\n    </p><button type=\"button\"\n    class=\"video-wrapper\"\n    aria-label=\"Play YouTube video\"\n    data-video-id=\"n4QxcwAm2bQ\"\n    data-thumb=\"\"\n    ><img\n      class=\"video-thumbnail\"\n      src=\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20viewBox=%270%200%201280%20720%27%3E%3Crect%20width=%27100%25%25%27%20height=%27100%25%25%27%20fill=%27%23000%27/%3E%3C/svg%3E\"\n      alt=\"YouTube Thumbnail\"\n      loading=\"lazy\"\n      decoding=\"async\"><div class=\"video-play-button\"></div>\n  </button><noscript>\n    <div class=\"video-noscript\"><img src=\"https://img.youtube.com/vi/n4QxcwAm2bQ/maxresdefault.jpg\"\n             alt=\"YouTube Thumbnail\"><p>\n          <a href=\"https://www.youtube.com/watch?v=n4QxcwAm2bQ\" target=\"_blank\" rel=\"noopener noreferrer\">YouTube Video</a>\n        </p></div>\n  </noscript>\n",
        "date_published": "2026-05-29T08:51:50-07:00",
        "url": "https://tylerknowsnothing.com/2026/05/29/freedom-is-in-hospice-care.html",
        "tags": ["politics","rights","technology","American Idiocracy"]
      },
      {
        "id": "http://tknblogs.micro.blog/2026/05/20/bmw-really-sucks-now-if.html",
        
        "content_html": "<p><a href=\"https://www.autoblog.com/news/bmw-wants-plug-in-hybrid-owners-punished-for-not-charging-enough\">BMW really sucks now</a>: If a monthly fee for heated seats and fake M-series cars weren’t bad enough, BMW is considering reducing your engine power if you don’t charge your PHEV enough. We truly own nothing. #cars #bmw #anticonsumer #crapitalism</p>\n",
        "date_published": "2026-05-20T08:10:57-07:00",
        "url": "https://tylerknowsnothing.com/2026/05/20/bmw-really-sucks-now-if.html",
        "tags": ["rights","capitalism","automotive"]
      },
      {
        "id": "http://tknblogs.micro.blog/2026/05/17/hire-one-experienced-midmanager-desperate.html",
        
        "content_html": "<p><a href=\"https://gizmodo.com/the-young-are-being-battered-by-ai-as-hiring-shifts-to-older-workers-2000759608\">Hire one experienced mid-manager desperate for work, deploy dozens of AI workers</a>:</p>\n<p>Why hire entry-level you have to corral when you can fleece more experienced workers who&rsquo;ve previously been pushed out? #crapitalism #AI #jobs #dystopia #techbros</p>\n",
        "date_published": "2026-05-17T14:53:31-07:00",
        "url": "https://tylerknowsnothing.com/2026/05/17/hire-one-experienced-midmanager-desperate.html",
        "tags": ["rights","capitalism","technology"]
      },
      {
        "id": "http://tknblogs.micro.blog/2026/05/15/how-tommy-robinson-disguises-white.html",
        
        "content_html": "<p><a href=\"https://bylinetimes.com/2026/05/15/how-tommy-robinson-disguises-white-supremacism-in-the-coded-language-of-anti-islam-politics/\">How Tommy Robinson Disguises White Supremacism In the Coded Language of Anti-Islam Politics</a>:</p>\n<p>This is a disturbing and revealing dive into the methodology of a white supremacist. It might be the UK, but forms of this are applied here in the US as well. It&rsquo;s a sickness. #racism</p>\n",
        "date_published": "2026-05-15T19:41:11-07:00",
        "url": "https://tylerknowsnothing.com/2026/05/15/how-tommy-robinson-disguises-white.html",
        "tags": ["rights","activism"]
      },
      {
        "id": "http://tknblogs.micro.blog/2026/05/12/say-hello-to-your-new.html",
        
        "content_html": "<p>Say hello to your new (actually very old but newly emboldened) American Oligarchy™, now with 5,000% more #Crapitalism!! #capitalism #ai #nodatacenters #youHaveNoRights #youOwnNothing <a href=\"https://youtu.be/Xou8-yr42Vs\">youtu.be/Xou8-yr42&hellip;</a></p>\n",
        "date_published": "2026-05-12T12:48:32-07:00",
        "url": "https://tylerknowsnothing.com/2026/05/12/say-hello-to-your-new.html",
        "tags": ["rights","capitalism","technology","activism"]
      },
      {
        "id": "http://tknblogs.micro.blog/2026/04/11/sex-toys-thrown-at-detention.html",
        
        "content_html": "<p><a href=\"https://www.latimes.com/california/story/2026-04-11/anti-ice-sex-toy-protest-outside-la-detention-center-leads-to-arrests\">Sex toys thrown at detention facility in L.A. anti-ICE protest; police declare unlawful assembly</a>:</p>\n<p>They were shipped in from Minnesota. Can&rsquo;t imagine why. Sex toy industrial complex center of the world? WTF knows. If you can, please explain? #activism #FUCKICE #FUCKTRUMP #FUCKFASCISM #LosAngeles</p>\n",
        "date_published": "2026-04-11T18:17:52-07:00",
        "url": "https://tylerknowsnothing.com/2026/04/11/sex-toys-thrown-at-detention.html",
        "tags": ["rights","activism","Los Angeles"]
      },
      {
        "id": "http://tknblogs.micro.blog/2026/04/03/here-have-some-bettemidler-and.html",
        
        "content_html": "<p>Here. Have some #BetteMidler and let&rsquo;s sing this at the #NoKings rallies. Catchy tune! #activism #uspol #midterms #progressivewave <a href=\"https://youtu.be/U5VXwncNvTo\">youtu.be/U5VXwncNv&hellip;</a></p>\n",
        "date_published": "2026-04-03T16:09:14-07:00",
        "url": "https://tylerknowsnothing.com/2026/04/03/here-have-some-bettemidler-and.html",
        "tags": ["politics","rights","activism"]
      },
      {
        "id": "http://tknblogs.micro.blog/2026/03/25/apple-begins-age-checks-in.html",
        
        "content_html": "<p><a href=\"https://arstechnica.com/tech-policy/2026/03/apple-begins-age-checks-in-the-uk-with-latest-ios-update/\">Apple begins age checks in the UK with latest iOS update</a>: nice way to roll over there, Tim. This is on the shoulders of #socialmedia, not platforms. Great job, #Apple 🤨 #UK #crapitalism</p>\n",
        "date_published": "2026-03-25T08:44:54-07:00",
        "url": "https://tylerknowsnothing.com/2026/03/25/apple-begins-age-checks-in.html",
        "tags": ["rights","Apple","technology"]
      },
      {
        "id": "http://tknblogs.micro.blog/2026/03/24/well-this-is-distressing-no.html",
        
        "content_html": "<p>Well, this is distressing. No, it&rsquo;s not law yet, but with the corruption running rampant in #USPol and #SCOTUS&rsquo;s willingness to bend legal definitions beyond the breaking point, I don&rsquo;t doubt this is on it&rsquo;s way. Get yourself an #opensource capable router for your home ASAP. #technology #opsec <a href=\"https://youtu.be/04oL0qVSWJE\">youtu.be/04oL0qVSW&hellip;</a></p>\n",
        "date_published": "2026-03-24T11:09:44-07:00",
        "url": "https://tylerknowsnothing.com/2026/03/24/well-this-is-distressing-no.html",
        "tags": ["politics","rights","open source","security","technology","activism"]
      },
      {
        "id": "http://tknblogs.micro.blog/2025/11/04/this-is-whitehousegov-the-nations.html",
        
        "content_html": "<p>This is WhiteHouse.gov, the nation&rsquo;s official webpage for the Executive branch of the US government. Apparently this is the new &ldquo;humor&rdquo; we&rsquo;re supposed to be &ldquo;enjoying&rdquo; in #TFG&rsquo;s AmeriKKKa. Disgusting. Don&rsquo;t fall for the distractions, but remain aware. #uspol #idiocracy #NoFacists</p>\n<img src=\"https://cdn.uploads.micro.blog/151098/2025/screenshot-2025-11-04-at-2.25.50pm.png\" width=\"600\" height=\"752\" alt=\"A parody of MySpace called mysafespace, a place for dems, showing what is supposed to be Hakeem Jeffries' profile regarding the government shutdown. The background is a repeating pattern of sombrero. The overall tone is mocking and juvenile. At the top is a banner ad for TrumpRX and there is a link to information on getting a Trump Card in the navigation. A tracker at the top claims that Democrats have shut down the government for 34+ days. \">\n",
        "date_published": "2025-11-04T15:47:29-07:00",
        "url": "https://tylerknowsnothing.com/2025/11/04/this-is-whitehousegov-the-nations.html",
        "tags": ["politics","rights","capitalism","activism"]
      },
      {
        "id": "http://tknblogs.micro.blog/2025/10/18/the-gop-has-their-talking.html",
        
        "content_html": "<p>The #GOP has their talking points nailed down, glued, epoxied, welded, then encased in Amber. The #Democrats should have understood this years ago when #TFG started his endless agitprop campaign and have direct counters to all the propaganda. But nope. So sick of this bullshit. #NOKINGS #uspol</p>\n",
        "date_published": "2025-10-18T11:37:40-07:00",
        "url": "https://tylerknowsnothing.com/2025/10/18/the-gop-has-their-talking.html",
        "tags": ["politics","rights","activism"]
      },
      {
        "id": "http://tknblogs.micro.blog/2025/10/18/the-democrats-and-unbiased-mainstream.html",
        
        "content_html": "<p>The #Democrats and &ldquo;unbiased&rdquo; mainstream media&rsquo;s handling of the #GOP and #MAGA sucks. #TFG &amp; Co.&rsquo;s messaging is all tightly coordinated. They get their marching orders, are invited onto #CNN and whatnot to spew their lies, whilst Dems change nothing of their messaging. WTAF. #uspol #NOKINGS</p>\n",
        "date_published": "2025-10-18T11:28:57-07:00",
        "url": "https://tylerknowsnothing.com/2025/10/18/the-democrats-and-unbiased-mainstream.html",
        "tags": ["journalism","politics","rights","activism"]
      },
      {
        "id": "http://tknblogs.micro.blog/2025/07/01/miami-florida-republicans-postponed-the.html",
        
        "content_html": "<p>#Miami #Florida #Republicans &ldquo;postponed&rdquo; the upcoming 2025 elections until November 2026, ensuring that time-limited officials who are no longer eligible to run again will remain in power for another year. Voters did not have a choice. #fascism #lawless #autocracy <a href=\"https://www.miamiherald.com/news/local/community/miami-dade/article309065285.html\">www.miamiherald.com/news/loca&hellip;</a></p>\n",
        "date_published": "2025-07-01T16:40:59-07:00",
        "url": "https://tylerknowsnothing.com/2025/07/01/miami-florida-republicans-postponed-the.html",
        "tags": ["politics","rights"]
      },
      {
        "id": "http://tknblogs.micro.blog/2025/06/16/judge-young-of-the-us.html",
        
        "content_html": "<p>Judge Young of the US District Court asks, &ldquo;Have we fallen so low? Have we no shame?&rdquo; Yes, they have, and no they do not. The judge appointed by #GOP hero Ronald Reagan ruled against the #TFG administration in the #NIH case citing blatant discrimination. Doi. #uspol #law <a href=\"https://www.salon.com/2025/06/16/never-seen-discrimination-like-this-orders-admin-to-restore-cancelled-nih-fund/\">www.salon.com/2025/06/1&hellip;</a></p>\n",
        "date_published": "2025-06-16T18:15:28-07:00",
        "url": "https://tylerknowsnothing.com/2025/06/16/judge-young-of-the-us.html",
        "tags": ["politics","rights"]
      },
      {
        "id": "http://tknblogs.micro.blog/2025/06/13/officials-from-florida-have-announced.html",
        
        "content_html": "<p>Officials from #Florida have announced that they will kill protestors who throw things at their cops. I&rsquo;m NOT kidding. Watch them say it themselves! #fascism #NoKings #StateSanctionedMurder #protests #activism #humanrights #civilrights #MAGA #FuckTrump <a href=\"https://www.youtube.com/shorts/lHFdiHprQs0\">www.youtube.com/shorts/lH&hellip;</a></p>\n",
        "date_published": "2025-06-13T16:18:03-07:00",
        "url": "https://tylerknowsnothing.com/2025/06/13/officials-from-florida-have-announced.html",
        "tags": ["rights","activism"]
      },
      {
        "id": "http://tknblogs.micro.blog/2025/06/12/this-is-amerikkkas-new-fascist.html",
        
        "content_html": "<p>This is AmeriKKKa&rsquo;s new #Fascist #MAGA #Right. This is lawlessness in action while they scream that they&rsquo;re &ldquo;protecting&rdquo; justice and the law. This is our road to hell. Go out and march peacefully. Violence is not the answer. #uspol #DHS #AlexPadilla #KristiNoem #racism #civilrights #humanrights</p>\n<p><video controls=\"controls\" playsinline=\"playsinline\" src=\"https://cdn.uploads.micro.blog/151098/2025/ce93a14e58.mov\" width=\"1280\" height=\"720\" poster=\"https://tylerknowsnothing.com/uploads/2025/e21faf4a1a.png\" preload=\"none\"></video></p>\n",
        "date_published": "2025-06-12T11:29:36-07:00",
        "url": "https://tylerknowsnothing.com/2025/06/12/this-is-amerikkkas-new-fascist.html",
        "tags": ["politics","rights","activism"]
      },
      {
        "id": "http://tknblogs.micro.blog/2025/06/12/welcome-to-the-new-mccarthy.html",
        
        "content_html": "<p>Welcome to the new McCarthy &ldquo;Red Scare&rdquo; era. I guess we call this the &ldquo;Not White Scare&rdquo; era, then? This was posted on Twitter by the #DHS. I am disgusted on so many levels. #civilrights #humanrights #StopTFG #StopICE #EndFascism #EjectTrumpNow <a href=\"https://thehill.com/homenews/administration/5346337-dhs-sends-out-provocative-new-poster/\">thehill.com/homenews/&hellip;</a></p>\n<img src=\"https://cdn.uploads.micro.blog/151098/2025/b7f9bdb2d2.jpg\" width=\"400\" height=\"600\" alt=\"\">\n",
        "date_published": "2025-06-12T09:18:11-07:00",
        "url": "https://tylerknowsnothing.com/2025/06/12/welcome-to-the-new-mccarthy.html",
        "tags": ["politics","rights","security","activism"]
      },
      {
        "id": "http://tknblogs.micro.blog/2025/06/05/there-is-one-brain-sickness.html",
        
        "content_html": "<p>There is one brain sickness that can&rsquo;t be fixed by mere herd immunity: stupidity. It&rsquo;s not that stupid people take over, but that smart people are suspending their critical thinking skills in response to a social climate that rewards doing so. #uspol #TFG #fascism <a href=\"https://www.youtube.com/watch?v=Sfekgjfh1Rk\">www.youtube.com/watch</a></p>\n",
        "date_published": "2025-06-05T09:41:13-07:00",
        "url": "https://tylerknowsnothing.com/2025/06/05/there-is-one-brain-sickness.html",
        "tags": ["politics","rights","security","activism"]
      },
      {
        "id": "http://tknblogs.micro.blog/2025/05/27/centrism-doesnt-work-you-dont.html",
        
        "content_html": "<p>Centrism doesn&rsquo;t work? You don&rsquo;t say! I&rsquo;ll let Adam cover the details as he&rsquo;s far more effectively sarcastic than I am. #politics #humanrights #civilrights #activism #EndFascism #EndOligarcy <a href=\"https://www.youtube.com/watch?v=sWHxKD27XKk\">www.youtube.com/watch</a></p>\n",
        "date_published": "2025-05-27T08:07:00-07:00",
        "url": "https://tylerknowsnothing.com/2025/05/27/centrism-doesnt-work-you-dont.html",
        "tags": ["politics","rights","security","activism"]
      },
      {
        "id": "http://tknblogs.micro.blog/2025/05/26/i-really-hope-tfg-keeps.html",
        
        "content_html": "<p>I really hope #TFG keeps acting like he owns America &amp; can do whatever he wants. The more he acts like a authoritarian, the more people he&rsquo;ll piss off, and the closer we&rsquo;ll get to his ejection. #uspol #NYC #activism #resistFascism #goodtrouble #congestionpricing <a href=\"https://www.jalopnik.com/1867570/new-york-wont-shut-down-congestion-pricing-without-court-order/\">www.jalopnik.com/1867570/n&hellip;</a></p>\n",
        "date_published": "2025-05-26T22:52:28-07:00",
        "url": "https://tylerknowsnothing.com/2025/05/26/i-really-hope-tfg-keeps.html",
        "tags": ["politics","rights","activism"]
      },
      {
        "id": "http://tknblogs.micro.blog/2025/05/26/non-blondes-was-a-great.html",
        
        "content_html": "<p>4 Non Blondes was a great #rock band that only made one studio album and had the global hit What&rsquo;s Up that lit the world on fire in 1993. It&rsquo;s amazing that, to this day, that one song has remained in the cultural zeitgeist. #music #activism #LGBTQRights #LGBTQIAPlus <a href=\"https://www.salon.com/2025/05/26/whats-up-song-4-non-blondes-whats-going-on/\">www.salon.com/2025/05/2&hellip;</a></p>\n",
        "date_published": "2025-05-26T22:44:23-07:00",
        "url": "https://tylerknowsnothing.com/2025/05/26/non-blondes-was-a-great.html",
        "tags": ["music","rights","activism"]
      },
      {
        "id": "http://tknblogs.micro.blog/2025/05/26/this-is-about-as-bullshit.html",
        
        "content_html": "<p>This is about as bullshit as it gets. Just having this article up in my news reader makes it stink in here. #ai #capitalism #tech #artistsrights #kleptocracy <a href=\"https://tech.slashdot.org/story/25/05/26/2026200/nick-clegg-says-asking-artists-for-use-permission-would-kill-the-ai-industry\">tech.slashdot.org/story/25/&hellip;</a></p>\n",
        "date_published": "2025-05-26T20:05:32-07:00",
        "url": "https://tylerknowsnothing.com/2025/05/26/this-is-about-as-bullshit.html",
        "tags": ["rights","capitalism","technology","activism"]
      },
      {
        "id": "http://tknblogs.micro.blog/2025/05/25/i-dont-think-i-can.html",
        
        "content_html": "<p>I don&rsquo;t think I can say it better or more succinctly than Mr. Lawrence Ware. I&rsquo;ll add that the carefully coded hate speech from #TFG and his #KKK sycophants on TV every day from the Whitest House has been adding nuclear fuel to the fire. Criminals. #FuckRacism #uspol <a href=\"https://www.theroot.com/why-things-have-only-gotten-worse-for-black-folks-in-th-1851782348\">www.theroot.com/why-thing&hellip;</a></p>\n",
        "date_published": "2025-05-25T20:57:24-07:00",
        "url": "https://tylerknowsnothing.com/2025/05/25/i-dont-think-i-can.html",
        "tags": ["politics","rights","activism"]
      },
      {
        "id": "http://tknblogs.micro.blog/2025/04/26/public-service-announcement-we-are.html",
        
        "content_html": "<p>Public Service Announcement: We are not safe. #AdamConover #PSA #freedom #civilrights #uspol <a href=\"https://www.youtube.com/watch?v=kOoiJt4iQAY\">www.youtube.com/watch</a></p>\n",
        "date_published": "2025-04-26T10:33:42-07:00",
        "url": "https://tylerknowsnothing.com/2025/04/26/public-service-announcement-we-are.html",
        "tags": ["politics","rights"]
      },
      {
        "id": "http://tknblogs.micro.blog/2025/04/22/um-wow-this-is-in.html",
        
        "content_html": "<p>Um&hellip; WOW?!! This is in #Idaho!! Look at that crowd! Listen to the words! #FightOligarchy #FightTrump #FightForYourRights #FightForFreedom #FightTyranny <a href=\"https://www.youtube.com/shorts/cNVwT8xD84I\">www.youtube.com/shorts/cN&hellip;</a></p>\n",
        "date_published": "2025-04-22T11:23:49-07:00",
        "url": "https://tylerknowsnothing.com/2025/04/22/um-wow-this-is-in.html",
        "tags": ["politics","rights"]
      },
      {
        "id": "http://tknblogs.micro.blog/2025/04/22/the-latest-video-from-spectacles.html",
        
        "content_html": "<p>The latest video from Spectacles on #YouTube must be seen as it clearly outlines the new stealth #authoritarianism through the lens of classic #fascism and how it differs. America is teetering on the precipice of a devastating fall. Learn now before it&rsquo;s too late. #uspol <a href=\"https://www.youtube.com/watch?v=Mxzwvd8cudo\">www.youtube.com/watch</a></p>\n",
        "date_published": "2025-04-22T09:09:15-07:00",
        "url": "https://tylerknowsnothing.com/2025/04/22/the-latest-video-from-spectacles.html",
        "tags": ["politics","rights"]
      },
      {
        "id": "http://tknblogs.micro.blog/2025/04/14/tired-of-being-lied-to.html",
        
        "content_html": "<p>Tired of being lied to? Well, too bad because the lies will keep coming and there will continue to be truthbombs blowing them up. #Germany ran a 3-year study on #UniversalBasicIncome and have once again proven that people keep working. Period. #UBI #economics #mentalhealth <a href=\"https://yro.slashdot.org/story/25/04/12/0351222/germanys-universal-basic-income-experiment-proves-it-doesnt-encourage-unmployment\">yro.slashdot.org/story/25/&hellip;</a></p>\n",
        "date_published": "2025-04-14T10:41:55-07:00",
        "url": "https://tylerknowsnothing.com/2025/04/14/tired-of-being-lied-to.html",
        "tags": ["politics","rights","capitalism"]
      },
      {
        "id": "http://tknblogs.micro.blog/2025/04/10/just-a-simple-reminder-tfgs.html",
        
        "content_html": "<img src=\"https://cdn.uploads.micro.blog/151098/2025/dei-image.jpeg\" width=\"600\" height=\"337\" alt=\"An image showing diversity, equity, and inclusion with definitions. Diversity: All the ways in which people differ. Equity: Fair treatment, access, opportunity, and advancement for all people. One's identity cannot predict the outcome. Inclusion: A variety of people have power, a voice, and decision-making authority. Sources: City of Portland Office of Equity and Human Rights, The Independent Sector, and UC Berkeley.\">\n<p>Just a simple reminder&hellip; #TFG&rsquo;s &ldquo;No More DEI&rdquo; means an end to #diversity, #equity, and #inclusion. No more people of color. No more recognition that other cultures are also human beings. All to be replaced with institutionalized #racism. #truthbomb #fucktrump</p>\n",
        "date_published": "2025-04-10T10:30:52-07:00",
        "url": "https://tylerknowsnothing.com/2025/04/10/just-a-simple-reminder-tfgs.html",
        "tags": ["politics","rights"]
      },
      {
        "id": "http://tknblogs.micro.blog/2025/03/29/public-service-announcement-if-you.html",
        
        "content_html": "<p>PUBLIC SERVICE ANNOUNCEMENT: If you are #traveling you need to be aware of your #rights and those that could be taken from you when on the road. Axios has a helpful guide to understand how to secure your data. #cellphones #security #internet #politics #uspol <a href=\"https://www.axios.com/2025/03/29/protecting-phone-data-information-travel-immigration-deportation\">www.axios.com/2025/03/2&hellip;</a></p>\n",
        "date_published": "2025-03-29T15:30:38-07:00",
        "url": "https://tylerknowsnothing.com/2025/03/29/public-service-announcement-if-you.html",
        "tags": ["politics","rights","security"]
      },
      {
        "id": "http://tknblogs.micro.blog/2025/03/28/ok-im-pretty-sure-that.html",
        
        "content_html": "<p>Ok. I&rsquo;m pretty sure that for putting sarcastic sticky notes on a #Tesla to be considered a &ldquo;Hate Crime&rdquo;, the Tesla itself would need to be recognized as a &ldquo;protected class&rdquo;. I may have the terminology wrong, but I think I&rsquo;m generally correct. #uspol #WashingtonDC #police <a href=\"https://boingboing.net/2025/03/27/dc-cops-now-treating-snarky-notes-on-tesla-windshields-as-hate-crimes.html\">boingboing.net/2025/03/2&hellip;</a></p>\n",
        "date_published": "2025-03-28T16:28:56-07:00",
        "url": "https://tylerknowsnothing.com/2025/03/28/ok-im-pretty-sure-that.html",
        "tags": ["politics","rights","capitalism"]
      },
      {
        "id": "http://tknblogs.micro.blog/2025/03/22/well-duh-tfg-was-a.html",
        
        "content_html": "<p>Well, duh. #TFG 45 was a chaotic, disorganized mess desperately grasping for more support, no matter what color. TFG 47 is now laser focused on making #America white &ldquo;again&rdquo; (PROTIP: America was never all white. Ever.) #uspol #racism #NASA #space <a href=\"https://arstechnica.com/space/2025/03/trump-white-house-drops-diversity-plan-for-moon-landing-it-created-back-in-2019/\">arstechnica.com/space/202&hellip;</a></p>\n",
        "date_published": "2025-03-22T18:39:20-07:00",
        "url": "https://tylerknowsnothing.com/2025/03/22/well-duh-tfg-was-a.html",
        "tags": ["politics","rights","science"]
      },
      {
        "id": "http://tknblogs.micro.blog/2025/02/28/the-hatred-that-emanates-from.html",
        
        "content_html": "<p>The hatred that emanates from the Whites Only House is existentially disturbing, notably through the nasty, painful cuts to programs like The Elizabeth Glaser Pediatric AIDS Foundation. Thousands of #children born with #AIDS will now die. #uspol #humanrights #healthcare <a href=\"https://www.salon.com/2025/02/28/a-whole-new-level-of-cruelty-health-experts-decry-devastating-cuts-to-hiv-treatment-programs/\">www.salon.com/2025/02/2&hellip;</a></p>\n",
        "date_published": "2025-02-28T23:35:25-07:00",
        "url": "https://tylerknowsnothing.com/2025/02/28/the-hatred-that-emanates-from.html",
        "tags": ["politics","rights"]
      },
      {
        "id": "http://tknblogs.micro.blog/2025/02/28/pay-attention-people-the-huntington.html",
        
        "content_html": "<p>Pay attention, people! The Huntington Beach City Council fired former #Vikings punter Chris Kluwe from his job as high school football coach at Edison HS for the crime of protesting against #MAGA. Don&rsquo;t just follow the National madness. #uspol #fascism <a href=\"https://mynewsla.com/sports/2025/02/28/former-ucla-nfl-punter-fired-as-high-school-coach-following-arrest/\">mynewsla.com/sports/20&hellip;</a></p>\n",
        "date_published": "2025-02-28T14:36:47-07:00",
        "url": "https://tylerknowsnothing.com/2025/02/28/pay-attention-people-the-huntington.html",
        "tags": ["politics","rights"]
      },
      {
        "id": "http://tknblogs.micro.blog/2025/02/27/denis-kitchen-should-be-mentioned.html",
        
        "content_html": "<p>Denis Kitchen should be mentioned alongside #comicbook avant-garde guerrillas like Crumb, Spiegelman, and Eisner. He created the #CBLDF and published #Gay Comix. He fought for the artistic expression of the oppressed and marginalized. Now a #documentary is on the way. <a href=\"https://boingboing.net/2025/02/26/trailer-for-oddly-compelling-explores-the-life-of-comic-artist-and-cbldf-founder-denis-kitchen.html\">boingboing.net/2025/02/2&hellip;</a></p>\n",
        "date_published": "2025-02-27T17:30:49-07:00",
        "url": "https://tylerknowsnothing.com/2025/02/27/denis-kitchen-should-be-mentioned.html",
        "tags": ["rights","movies","comics \u0026 manga"]
      },
      {
        "id": "http://tknblogs.micro.blog/2025/02/27/anyone-else-surprised-by-the.html",
        
        "content_html": "<p>Anyone else surprised by the bombastic #hypocrisy of #TFG all hot for freedom and independence and the power of #capitalism, but pissed his pet project to disenfranchise #BIPOC Americans is being ignored by #Apple? It&rsquo;s like he thinks he&rsquo;s king or something. #uspol #tech <a href=\"https://appleinsider.com/articles/25/02/26/president-trump-is-irritated-about-apple-not-completely-killing-dei-initiatives\">appleinsider.com/articles/&hellip;</a></p>\n",
        "date_published": "2025-02-27T14:15:11-07:00",
        "url": "https://tylerknowsnothing.com/2025/02/27/anyone-else-surprised-by-the.html",
        "tags": ["rights","Apple","capitalism","technology"]
      },
      {
        "id": "http://tknblogs.micro.blog/2025/02/24/reason-to-uninstallfacebook-you-know.html",
        
        "content_html": "<p>Reason #1,432,644 to #UninstallFacebook&hellip; you know what, I&rsquo;ll let John cover this one in the latest episode of Last Week Tonight. #UninstallInstagram #UninstallWhatsapp #UninstallMeta #fuckZuckerberg <a href=\"https://www.youtube.com/watch?v=nf7XHR3EVHo\">www.youtube.com/watch</a></p>\n",
        "date_published": "2025-02-24T10:35:12-07:00",
        "url": "https://tylerknowsnothing.com/2025/02/24/reason-to-uninstallfacebook-you-know.html",
        "tags": ["politics","rights","technology"]
      },
      {
        "id": "http://tknblogs.micro.blog/2025/02/20/there-is-no-question-that.html",
        
        "content_html": "<p>There is no question that, if there isn&rsquo;t one already, we need a #ProtestTracker. Or even just use the hashtag and post images and videos from these protests. Share our frustration at the outrages of #TFG and Co since the MSM won&rsquo;t. #uspol #news #protests <a href=\"https://kottke.org/25/02/0046257-if-youre-wondering-where-\">kottke.org/25/02/004&hellip;</a></p>\n",
        "date_published": "2025-02-20T19:09:12-07:00",
        "url": "https://tylerknowsnothing.com/2025/02/20/there-is-no-question-that.html",
        "tags": ["politics","rights","security"]
      },
      {
        "id": "http://tknblogs.micro.blog/2025/02/16/americans-have-historically-gotten-shorted.html",
        
        "content_html": "<p>Americans have historically gotten shorted on #Black #History, but I came across a #YouTube channel the other day that&rsquo;s doing the work to rectify that, one story at a time. #TIL about Robert Smalls, and his tale is fascinating! #civilrights #humanrights #BLM #civilwar <a href=\"https://www.youtube.com/watch?v=90d1McY2fyA\">www.youtube.com/watch</a></p>\n",
        "date_published": "2025-02-16T08:05:35-07:00",
        "url": "https://tylerknowsnothing.com/2025/02/16/americans-have-historically-gotten-shorted.html",
        "tags": ["rights"]
      },
      {
        "id": "http://tknblogs.micro.blog/2025/02/14/have-you-heard-the-news.html",
        
        "content_html": "<p>Have you heard the news? Fascistic othering is the new #American #Freedom&hellip; as in the freedom to forcefully eradicate the freedoms of those you deem sub-human. Life, Liberty, and the Pursuit of Happiness, as long as you&rsquo;re #MAGA. #fascism #racism #oligarchy #opensource <a href=\"https://www.theverge.com/news/612857/codeberg-open-source-code-far-right-forces-spam\">www.theverge.com/news/6128&hellip;</a></p>\n",
        "date_published": "2025-02-14T13:38:57-07:00",
        "url": "https://tylerknowsnothing.com/2025/02/14/have-you-heard-the-news.html",
        "tags": ["rights","open source"]
      },
      {
        "id": "http://tknblogs.micro.blog/2025/02/14/how-dare-you-gutter-trash.html",
        
        "content_html": "<p>How DARE you gutter trash have lives and needs and opinions outside of your indentured servitude to your corporate overlords! Your job is your identity that we, #Capitalism, have generously granted you and we can take it away with the crook of a withered finger! #WFH <a href=\"https://slashdot.org/story/25/02/13/197228/jpmorgan-ceo-dimon-slams-return-to-office-pushback\">slashdot.org/story/25/&hellip;</a></p>\n",
        "date_published": "2025-02-14T12:24:36-07:00",
        "url": "https://tylerknowsnothing.com/2025/02/14/how-dare-you-gutter-trash.html",
        "tags": ["rights","capitalism"]
      },
      {
        "id": "http://tknblogs.micro.blog/2025/02/13/i-didnt-bother-watching-superb.html",
        
        "content_html": "<p>I didn&rsquo;t bother watching Superb Owl LIX, but I should have. Kendrick killed the #halftime show, and watching it on YouTube I see he spoke loud if you were willing to listen and see with open ears and eyes. #music #superbowl #resistfascism #resisthate <a href=\"https://www.youtube.com/watch?v=6ajnW0k0dM0\">www.youtube.com/watch</a></p>\n",
        "date_published": "2025-02-13T17:19:55-07:00",
        "url": "https://tylerknowsnothing.com/2025/02/13/i-didnt-bother-watching-superb.html",
        "tags": ["music","television","rights"]
      },
      {
        "id": "http://tknblogs.micro.blog/2025/02/10/move-fast-and-break-shit.html",
        
        "content_html": "<p>Move fast and break shit shouldn&rsquo;t be a thing one can do to a society&hellip; I&rsquo;m just sayin'. #elonmusk #TFG #uspol #fascism #toxiccapitalism #americanoligarchy <a href=\"https://www.theverge.com/elon-musk/609164/auto-draft\">www.theverge.com/elon-musk&hellip;</a></p>\n",
        "date_published": "2025-02-10T17:02:30-07:00",
        "url": "https://tylerknowsnothing.com/2025/02/10/move-fast-and-break-shit.html",
        "tags": ["politics","rights","capitalism"]
      },
      {
        "id": "http://tknblogs.micro.blog/2025/02/06/unfettered-uncontrolled-unregulated-capitalism-is.html",
        
        "content_html": "<p>Unfettered, uncontrolled, unregulated #Capitalism is essentially crime since they do what they want, say what they want, harm whomever they please, break any laws they choose, and are never held accountable. Those who help them are criminals, as well. #ai #piracy #books <a href=\"https://arstechnica.com/tech-policy/2025/02/meta-torrented-over-81-7tb-of-pirated-books-to-train-ai-authors-say/\">arstechnica.com/tech-poli&hellip;</a></p>\n",
        "date_published": "2025-02-06T15:01:09-07:00",
        "url": "https://tylerknowsnothing.com/2025/02/06/unfettered-uncontrolled-unregulated-capitalism-is.html",
        "tags": ["rights","capitalism","security","technology"]
      },
      {
        "id": "http://tknblogs.micro.blog/2025/01/28/in-the-continuing-saga-of.html",
        
        "content_html": "<p>In the continuing saga of All The Reasons I Hate #Meta #US and #Canadian #Facebook and #Instagram users #Fuckerberg&rsquo;s #AI Chatbot will take your user data and there&rsquo;s nothing you can do to stop it&hellip; unless you #UninstallMeta. What&rsquo;re you waiting for? #socialnetworking #capitalism <a href=\"https://tech.slashdot.org/story/25/01/27/1821216/metas-ai-chatbot-taps-user-data-with-no-opt-out-option\">tech.slashdot.org/story/25/&hellip;</a></p>\n",
        "date_published": "2025-01-28T10:54:29-07:00",
        "url": "https://tylerknowsnothing.com/2025/01/28/in-the-continuing-saga-of.html",
        "tags": ["rights","capitalism","security","technology"]
      },
      {
        "id": "http://tknblogs.micro.blog/2025/01/22/um-sure-cool-story-bro.html",
        
        "content_html": "<p>Um, sure. Cool story, bro. Amazon closing a recently unionized warehouse to go back to contract-based workers is like trying to compare motor oil to French toast. Just cost cutting. &ldquo;SQUIRREL&rdquo; [POINTS IN DIFFERENT DIRECTION] #capitalism #amazon #Canada #Quebec #unions <a href=\"https://gizmodo.com/amazon-shuts-down-quebec-operations-after-unionization-swears-its-unrelated-2000553618\">gizmodo.com/amazon-sh&hellip;</a></p>\n",
        "date_published": "2025-01-22T17:08:02-07:00",
        "url": "https://tylerknowsnothing.com/2025/01/22/um-sure-cool-story-bro.html",
        "tags": ["rights","capitalism"]
      },
      {
        "id": "http://tknblogs.micro.blog/2025/01/20/things-you-can-do-instead.html",
        "title": "Things you can do instead of watching America being peacefully handed over to a criminal - Inauguration Special 2025",
        "content_html": "<p>Don&rsquo;t watch the news today since all they&rsquo;ll be talking about is how great and normal it is to just hand an entire country over to a criminal in the name of a democracy that&rsquo;s been utterly broken and shreaded. If that leaves you unsure of what to do instead, here are some suggestions:</p>\n<ul>\n<li>Listen to some music. I&rsquo;ve been sharing my album plays, and here&rsquo;s a list of them that I refresh a few times a week. <a href=\"https://tylerknowsnothing.com/nothing-manor-jukebox/\">tylerknowsnothing.com/nothing-m&hellip;</a></li>\n<li>Go for a walk</li>\n<li>Spend time with friends</li>\n<li>Play a game like a board game, video games, or get into table-top role-playing games (TTRPG), or even just a few dozen rounds of poker</li>\n<li>Read a book like Isaac Asimov&rsquo;s Robot series, many of which are murder mysteries. <a href=\"https://en.wikipedia.org/wiki/Robot_series\">en.wikipedia.org/wiki/Robo&hellip;</a></li>\n<li>Nap in a patch of sunlight or next to a warming fire with your kids and/or pets</li>\n<li>Bake something like biscuits or pie or some nice, big potatoes and stuff them with cheese, bacon, sour cream, and chives, or whatever you like</li>\n<li>Help out at your local homeless shelter or donate some old clothes to families in need</li>\n<li>If you can afford it, slap a few hundred bucks on a gift card, go to that store, and pay for everyone until it runs out</li>\n<li>Stop and smell some roses</li>\n<li>Watch a movie or three like The Wild Robot (2024 on Apple TV, Google Play, Amazon Prime and more)</li>\n<li>Write something nice on a pad of paper about nice and/or hopeful for yourself or someone you like</li>\n<li>Get out an old computer and install Linux Mint and engage in some joyful technological discovery. <a href=\"https://linuxmint.com\">linuxmint.com</a></li>\n<li>Go out on a thrift shop crawl in your local area and buy some old things to give them a new home</li>\n</ul>\n<p>And if you must watch TV, then allow me to suggest one of the single most joyful and affirming shows ever made;l Netflix&rsquo;s <em>Somebody Feed Phil</em>. You will not regret it. Well, you&rsquo;ll regret having trouble eating the food Phil eats, unless you live in one of the cities he&rsquo;s covered.</p>\n<p>Feel free to submit your own lists of things to do other than watch the news today. #animation #comics #manga #film #movies #linux #music #retrocomputing #humanrights #civilrights #scifi #tech #videogames #writing</p>\n",
        "date_published": "2025-01-20T11:59:15-07:00",
        "url": "https://tylerknowsnothing.com/2025/01/20/things-you-can-do-instead.html",
        "tags": ["music","rights","movies","animation","Linux","technology","comics \u0026 manga","retro technology","scifi"]
      },
      {
        "id": "http://tknblogs.micro.blog/2025/01/02/while-i-remain-unsurprised-i.html",
        
        "content_html": "<p>While I remain unsurprised I am still mortified, more at the unapologetic, emotionless callousness of #Texas' than of the disturbing number of babies left to die in ditches and dumpsters. Government prescribed subjugation of women will, after all, result in ugliness. Period. #humanrights #womensrights #abortion #health <a href=\"https://www.salon.com/2025/01/02/newborns-are-being-left-in-dumpsters-in-texas-but-dont-seem-to-care/\">www.salon.com/2025/01/0&hellip;</a></p>\n",
        "date_published": "2025-01-02T09:20:20-07:00",
        "url": "https://tylerknowsnothing.com/2025/01/02/while-i-remain-unsurprised-i.html",
        "tags": ["politics","rights"]
      },
      {
        "id": "http://tknblogs.micro.blog/2024/12/29/i-dont-think-i-mention.html",
        
        "content_html": "<p>I don&rsquo;t think I mention how much I hate private medical insurance (even more than I hate paid parking at medical facilities). So, I&rsquo;m going to mention that the people at Select Health are terrible for denying a 9 year old girl born with one arm a $24K robotic arm because it was &ldquo;cosmetic&rdquo;. Despite their callousness, she got her arm. Read her story. #healthcare #humanrights <a href=\"https://science.slashdot.org/story/24/12/29/0213248/anger-at-health-insurance-prompts-the-public-to-fund-a-9-year-olds-bionic-arm\">science.slashdot.org/story/24/&hellip;</a></p>\n",
        "date_published": "2024-12-29T13:23:39-07:00",
        "url": "https://tylerknowsnothing.com/2024/12/29/i-dont-think-i-mention.html",
        "tags": ["rights"]
      },
      {
        "id": "http://tknblogs.micro.blog/2024/12/28/this-is-heartbreaking-i-was.html",
        
        "content_html": "<p>This is heartbreaking. I was very lucky to be among those whose loans were mostly wiped clean by the Biden administration and I&rsquo;m &ldquo;only&rdquo; 56. And my outstanding loans were a pittance compared to Valerie&rsquo;s. I thought my 16k was stressful&hellip; #studentloans #debt <a href=\"https://yro.slashdot.org/story/24/12/28/0423232/millions-of-us-seniors-still-owe-student-loan-debt\">yro.slashdot.org/story/24/&hellip;</a></p>\n",
        "date_published": "2024-12-28T17:30:04-07:00",
        "url": "https://tylerknowsnothing.com/2024/12/28/this-is-heartbreaking-i-was.html",
        "tags": ["politics","rights"]
      },
      {
        "id": "http://tknblogs.micro.blog/2024/11/26/the-new-yorker.html",
        
        "content_html": "<p>The New Yorker has made a wonderful mini-doc about a 99 year-old criminal defense lawyer named Frank Lucianna preparing for his final case. It&rsquo;s gorgeously shot and a bittersweet snapshot of a single human life. Well worth a watch. #documentaries #minidoc #YouTube #law <a href=\"https://youtu.be/YvqqZ2vIXzU\">youtu.be/YvqqZ2vIX&hellip;</a></p>\n",
        "date_published": "2024-11-26T14:59:31-07:00",
        "url": "https://tylerknowsnothing.com/2024/11/26/the-new-yorker.html",
        "tags": ["rights"]
      },
      {
        "id": "http://tknblogs.micro.blog/2016/02/15/john-oliver-skewers.html",
        "title": "John Oliver skewers voter ID laws",
        "content_html": "<p>&quot; &ldquo;&gt;</p>\n<p>The idea that a few million people can't vote in America because of deliberately misguided voter ID laws is reprehensible at best. I can't explain it any better than John Oliver, so take a look. </p>\n<p><iframe width=\"800\" height=\"450\" src=\"https://www.youtube.com/embed/rHFOwlMCdto?feature=oembed\" frameborder=\"0\" allowfullscreen></iframe></p>\n",
        "date_published": "2016-02-15T15:37:53-07:00",
        "url": "https://tylerknowsnothing.com/2016/02/15/john-oliver-skewers.html",
        "tags": ["rights"]
      }
  ]
}
