Congratulations!

[Valid RSS] This is a valid RSS feed.

Recommendations

This feed is valid, but interoperability with the widest range of feed readers could be improved by implementing the following recommendations.

Source: http://www.peterbe.com/rss.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Peterbe.com</title><link>http://www.peterbe.com/rss.xml</link><description>Stuff in Peter's head</description><atom:link href="http://www.peterbe.com/rss.xml" rel="self"/><language>en-us</language><lastBuildDate>Thu, 20 Mar 2025 17:06:50 +0000</lastBuildDate><item><title>Adding client-to-server sync to PissueTracker</title><link>http://www.peterbe.com/plog/client-to-server-sync-pissuetracker</link><description>When you save a record in Dexie.js, its payload is sent to the server for backup, and once that works, the record in Dexie.js is updated to indicate that it successfully synced.</description><pubDate>Thu, 20 Mar 2025 17:06:50 +0000</pubDate><guid>http://www.peterbe.com/plog/client-to-server-sync-pissuetracker</guid></item><item><title>Useful GitHub.com trick I learned today: l</title><link>http://www.peterbe.com/plog/useful-github.com-trick-l</link><description>Use the keyboard shortcut `l` when viewing a file on GitHub</description><pubDate>Wed, 19 Mar 2025 13:57:32 +0000</pubDate><guid>http://www.peterbe.com/plog/useful-github.com-trick-l</guid></item><item><title>Starting a side project: PissueTracker</title><link>http://www.peterbe.com/plog/starting-a-side-project-pissuetracker</link><description>&lt;p&gt;I've started a new side project called PissueTracker. It's an issue tracker, but adding the "P" because my name is "Peter" and it makes the name a bit more unique. Also, the name isn't important. What this project &lt;em&gt;can do&lt;/em&gt; is important.&lt;/p&gt;
  3. &lt;p&gt;In a sense, it's a competitor to GitHub Issues. An issue can be anything such as a feature or bug report or just something that needs to be addressed. In another sense, it's a competitor to a web product I built 24 years ago called &lt;a href="/plog/issuetrackerproduct-no-more"&gt;IssueTrackerProduct&lt;/a&gt;. That was a huge success and it was so much fun to build.&lt;/p&gt;
  4. &lt;p&gt;What's special about this issue tracker is that it's all about offline data, with server sync. All the issues you create and edit are stored in your browser. And if you don't want to lose all your data if/when your browser resets, you can have all that data constantly synchronized to the server which will either store it in PostgreSQL or the file system of a server. Since there's a shared data store, you can also authorize yourself amongst others in the system and this way it can become a collaborative experience.&lt;/p&gt;
  5. &lt;p&gt;I'm building it by using a React framework called &lt;a href="https://mantine.dev/"&gt;Mantine&lt;/a&gt;, which I'm a huge fan of. The browser storage is done with &lt;a href="https://dexie.org/"&gt;Dexie.js&lt;/a&gt; which uses &lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API"&gt;IndexedDB&lt;/a&gt; and allows you to store data in relational ways.&lt;/p&gt;
  6. &lt;p&gt;So far, I've only spent 1 weekend day on it but I now have a foundation. It doesn't support comments or auth, yet. And I haven't even started on the server sync. But it supports creating multiple trackers, creating/editing issues, fast filtering, and safe Markdown rendering.&lt;/p&gt;
  7. &lt;p&gt;The front end is handled by Vite, React Router, and Bun, I don't know if that's important. Right now, the &lt;strong&gt;most important thing is to have fun and build&lt;/strong&gt; something that feels intuitive and so fast that it feels instantly responsive.&lt;/p&gt;
  8. &lt;p&gt;More to come!&lt;/p&gt;
  9. &lt;p&gt;&lt;a href="/cache/70/51/7051dfb22e4c97bf3476798198210f14.png"&gt;&lt;img src="/cache/4e/c3/4ec305c211858dfdc5bbb2e31a099091.png" alt="Listing issues"  width="370" height="206"&gt;&lt;/a&gt;&lt;br /&gt;
  10. &lt;em&gt;List of issues in a tracker&lt;/em&gt;&lt;/p&gt;
  11. &lt;p&gt;&lt;a href="/cache/67/f1/67f18254262be0c4cef013d6cadc36c8.png"&gt;&lt;img src="/cache/e3/b9/e3b98d36051fcee1cefdbb45530742ca.png" alt="Viewing an issue" width="370" height="227"&gt;&lt;/a&gt;&lt;br /&gt;
  12. &lt;em&gt;Viewing an issue&lt;/em&gt;&lt;/p&gt;</description><pubDate>Sun, 16 Mar 2025 22:31:46 +0000</pubDate><guid>http://www.peterbe.com/plog/starting-a-side-project-pissuetracker</guid></item><item><title>Announcing: Spot the Difference</title><link>http://www.peterbe.com/plog/announcing-spot-the-difference</link><description>Spot the Difference is a web app where you're shown two snippets of code and you're supposed to find the one difference. If you get it right, you get showered in confetti.</description><pubDate>Sun, 23 Feb 2025 21:08:54 +0000</pubDate><guid>http://www.peterbe.com/plog/announcing-spot-the-difference</guid></item><item><title>get in JavaScript is the same as property in Python</title><link>http://www.peterbe.com/plog/get-in-javascript-is-the-same-as-property-in-python</link><description>Prefix a function, in an object or class, with `get` and then that acts as a function call without brackets. Just like Python's `property` decorator.</description><pubDate>Thu, 13 Feb 2025 12:41:56 +0000</pubDate><guid>http://www.peterbe.com/plog/get-in-javascript-is-the-same-as-property-in-python</guid></item><item><title>Use 'key' in React components to reset them</title><link>http://www.peterbe.com/plog/key-react-components-to-reset</link><description>You can use a unique `key` prop to reset a sub-components state in React.</description><pubDate>Wed, 12 Feb 2025 04:16:00 +0000</pubDate><guid>http://www.peterbe.com/plog/key-react-components-to-reset</guid></item><item><title>How to send custom headers in a loader in react-router v7</title><link>http://www.peterbe.com/plog/custom-headers-loader-react-router-v7</link><description>Use `data()` in your `loader` function and pass `headers` to be able to connect a `loader` function to the `header` function.</description><pubDate>Fri, 07 Feb 2025 17:11:51 +0000</pubDate><guid>http://www.peterbe.com/plog/custom-headers-loader-react-router-v7</guid></item><item><title>TypeScript enums without enums</title><link>http://www.peterbe.com/plog/typescript-enums-without-enums</link><description>You can use `type State = typeof State[keyof typeof State]` to get a type that is similar to enums but isn't an enum.</description><pubDate>Wed, 29 Jan 2025 14:12:37 +0000</pubDate><guid>http://www.peterbe.com/plog/typescript-enums-without-enums</guid></item><item><title>How I run standalone Python in 2025</title><link>http://www.peterbe.com/plog/run-standalone-python-2025</link><description>`uv run --python 3.12 --with requests python $@` to quickly start a Python interpreter with the `requests` package installed without creating a whole project.</description><pubDate>Tue, 14 Jan 2025 20:06:22 +0000</pubDate><guid>http://www.peterbe.com/plog/run-standalone-python-2025</guid></item><item><title>My 2024 golf goals</title><link>http://www.peterbe.com/plog/my-2024-golf-goals</link><description>I beat my golf goals for 2024, made up some new during the year, and have thoughts about 2025.</description><pubDate>Mon, 30 Dec 2024 23:48:41 +0000</pubDate><guid>http://www.peterbe.com/plog/my-2024-golf-goals</guid></item></channel></rss>

If you would like to create a banner that links to this page (i.e. this validation result), do the following:

  1. Download the "valid RSS" banner.

  2. Upload the image to your own server. (This step is important. Please do not link directly to the image on this server.)

  3. Add this HTML to your page (change the image src attribute if necessary):

If you would like to create a text link instead, here is the URL you can use:

http://www.feedvalidator.org/check.cgi?url=http%3A//www.peterbe.com/rss.xml

Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda