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: https://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>Fri, 24 Oct 2025 01:23:26 +0000</lastBuildDate><item><title>Bun vs. Go for a basic web server benchmark</title><link>http://www.peterbe.com/plog/bun-go-basic-web-server-benchmark</link><description>&lt;p&gt;&lt;strong&gt;tl;dr; Bun is plenty fast to serve as a basic web server that does no I/O. It's even faster than Go using &lt;code&gt;fasthttp&lt;/code&gt;.&lt;/strong&gt;&lt;/p&gt;
  3. &lt;p&gt;Doing a "Hello World" benchmark comparison is rather contrived because it's so unrealistic. No server does no I/O. However, it's good to know that if you do need something as simple as this, and need raw performance, you don't need as statically compiled language like Go. Bun is fast enough.&lt;/p&gt;
  4. &lt;p&gt;Inspired by &lt;a href="https://medium.com/deno-the-complete-reference/bun-v-s-go-hello-world-performance-comparison-1f5418945112"&gt;this blog post&lt;/a&gt; from 2023, I wanted to retry it using Bun 1.3 that &lt;a href="https://bun.com/blog/bun-v1.3"&gt;came out the other day&lt;/a&gt;. Honestly, I was nerdily curious how it would fly on my M4 MacBook Pro.&lt;/p&gt;
  5. &lt;p&gt;Check out the code on: &lt;a href="https://github.com/peterbe/go-bun-compare"&gt;https://github.com/peterbe/go-bun-compare&lt;/a&gt;&lt;/p&gt;
  6. &lt;p&gt;The&lt;/p&gt;</description><pubDate>Fri, 24 Oct 2025 01:23:26 +0000</pubDate><guid>http://www.peterbe.com/plog/bun-go-basic-web-server-benchmark</guid></item><item><title>hylite as an executable</title><link>http://www.peterbe.com/plog/hylite-as-an-executable</link><description>github.com/peterbe/hylite is now available as downloadable single-file executables</description><pubDate>Wed, 15 Oct 2025 23:23:33 +0000</pubDate><guid>http://www.peterbe.com/plog/hylite-as-an-executable</guid></item><item><title>In Python, you have to specify the type and not rely on inference</title><link>http://www.peterbe.com/plog/in-python-you-have-to-specify-the-type-and-not-rely-on-inference</link><description>Unlike TypeScript, if you give a variable a default, which has a type, that variable is implied to always have the type of the default. That's not the case with mypy and ty.</description><pubDate>Fri, 10 Oct 2025 13:07:37 +0000</pubDate><guid>http://www.peterbe.com/plog/in-python-you-have-to-specify-the-type-and-not-rely-on-inference</guid></item><item><title>Find the source of an alias in bash</title><link>http://www.peterbe.com/plog/find-the-source-of-an-alias-in-bash</link><description>&lt;p&gt;This is borderline embarrassing but by blogging about it, at least there's hope that &lt;em&gt;I&lt;/em&gt; will not forget this.&lt;/p&gt;
  7. &lt;p&gt;If you have an executable, you can type &lt;code&gt;which&lt;/code&gt; to find out its full path. For example:&lt;/p&gt;
  8. &lt;pre&gt;&lt;code class="hljs"&gt;
  9. $ which fdfind
  10. /usr/bin/fdfind
  11. &lt;/code&gt;&lt;/pre&gt;
  12.  
  13. &lt;p&gt;then you can do something with that. But if the executable is an alias? E.g. I have set up &lt;code&gt;alias fd='fdfind'&lt;/code&gt; and suppose I don't remember that. I have this executable, &lt;code&gt;gbranch&lt;/code&gt;, but you can't use &lt;code&gt;which&lt;/code&gt; on it:&lt;/p&gt;
  14. &lt;pre&gt;&lt;code class="hljs"&gt;
  15. $ which fd
  16. &lt;/code&gt;&lt;/pre&gt;
  17.  
  18. &lt;p&gt;It outputs nothing and you get an exit code of 1.&lt;/p&gt;
  19. &lt;p&gt;Lo and behold, it's so basic, run the &lt;code&gt;alias&lt;/code&gt; command on it:&lt;/p&gt;
  20. &lt;pre&gt;&lt;code class="hljs"&gt;
  21. $ alias fd
  22. alias fd=&amp;#x27;fdfind&amp;#x27;
  23. &lt;/code&gt;&lt;/pre&gt;</description><pubDate>Mon, 29 Sep 2025 19:04:01 +0000</pubDate><guid>http://www.peterbe.com/plog/find-the-source-of-an-alias-in-bash</guid></item><item><title>From @monaco-editor/react to prism-react-editor</title><link>http://www.peterbe.com/plog/from-monaco-to-prism-react-editor</link><description>Switching from @monaco-editor/react to prism-react-editor means a less powerful in-browser editor but it's much lighter.</description><pubDate>Thu, 25 Sep 2025 21:18:29 +0000</pubDate><guid>http://www.peterbe.com/plog/from-monaco-to-prism-react-editor</guid></item><item><title>How I end-to-end test my Bun CLI app</title><link>http://www.peterbe.com/plog/how-i-end-to-end-test-my-bun-cli-app</link><description>Bun $ Shell makes it easy to write end-to-end tests that tests command line scripts.</description><pubDate>Thu, 18 Sep 2025 18:48:16 +0000</pubDate><guid>http://www.peterbe.com/plog/how-i-end-to-end-test-my-bun-cli-app</guid></item><item><title>How to count the number of non-blank lines with Bash</title><link>http://www.peterbe.com/plog/how-to-count-the-number-of-non-blank-lines-with-bash</link><description>You can use `awk 'NF &gt; 0'` to filter blank lines before piping to `wc` to filter out blank lines.</description><pubDate>Wed, 03 Sep 2025 15:08:07 +0000</pubDate><guid>http://www.peterbe.com/plog/how-to-count-the-number-of-non-blank-lines-with-bash</guid></item><item><title>gg commit with suggested --no-verify</title><link>http://www.peterbe.com/plog/gg-commit-with-suggested-no-verify</link><description>&lt;p&gt;In version &lt;a href="https://github.com/peterbe/gg2/releases/tag/v0.0.11"&gt;0.0.11&lt;/a&gt; of &lt;a href="https://github.com/peterbe/gg2"&gt;gg&lt;/a&gt; you can now type &lt;code&gt;gg commit Bla bla&lt;/code&gt; and it will try to commit but if that fails, it will ask you one more time, if you want to re-attempt to commit but with &lt;code&gt;--no-verify&lt;/code&gt;.&lt;/p&gt;
  24. &lt;p&gt;For example:&lt;/p&gt;
  25. &lt;pre&gt;&lt;code class="hljs"&gt;
  26. $ gg commit This is my commit message
  27. ❌ file has formatting problems
  28. Commit failed and you did not use --no-verify.
  29. ? Try again but with --no-verify? (y/N)
  30. &lt;/code&gt;&lt;/pre&gt;
  31.  
  32. &lt;p&gt;(&lt;em&gt;see screenshots below where color makes these things more intuitive&lt;/em&gt;)&lt;/p&gt;
  33. &lt;p&gt;This is handy when you know that the &lt;code&gt;.git/hooks/pre-commit&lt;/code&gt; might be failing for a reason that is actually not a problem &lt;em&gt;after&lt;/em&gt; you've committed.&lt;/p&gt;
  34. &lt;p&gt;In a sample repo I have:&lt;/p&gt;
  35. &lt;pre&gt;&lt;code class="hljs"&gt;
  36. $ &lt;span class="hljs-built_in"&gt;cat&lt;/span&gt; .git/hooks/pre-commit
  37. &lt;span class="hljs-comment"&gt;#!/bin/sh&lt;/span&gt;
  38.  
  39. &lt;span class="hljs-built_in"&gt;echo&lt;/span&gt; &lt;span class="hljs-string"&gt;&amp;quot;❌ Rejecting all commits like an angry troll&amp;quot;&lt;/span&gt;
  40. &lt;span class="hljs-built_in"&gt;exit&lt;/span&gt; 1
  41. &lt;/code&gt;&lt;/pre&gt;
  42.  
  43. &lt;p&gt;And when I use &lt;code&gt;gg commit ...&lt;/code&gt; this happens:&lt;/p&gt;
  44. &lt;p&gt;&lt;a href="/cache/5a/45/5a45eeb1b7d7baebdc9d07e6eb652fc8.png"&gt;&lt;img src="/cache/ff/ff/ffff529524b78fb3a84267679f8519ee.png" alt="Prompt"  width="370" height="90"&gt;&lt;/a&gt;&lt;/p&gt;
  45. &lt;p&gt;&lt;a href="/cache/67/10/671041199ffb99018237b945e483c761.png"&gt;&lt;img src="/cache/87/0e/870e49b633d6cddde804121623bd08e1.png" alt="Said y for Yes"  width="370" height="147"&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Fri, 29 Aug 2025 18:37:45 +0000</pubDate><guid>http://www.peterbe.com/plog/gg-commit-with-suggested-no-verify</guid></item><item><title>Faster way to sum an integer series in Python</title><link>http://www.peterbe.com/plog/faster-way-to-sum-an-integer-series-in-python</link><description>You can sum a simple series with `n(n+1)/2`</description><pubDate>Thu, 28 Aug 2025 12:11:22 +0000</pubDate><guid>http://www.peterbe.com/plog/faster-way-to-sum-an-integer-series-in-python</guid></item><item><title>Find GitHub Pull Request by commit SHA</title><link>http://www.peterbe.com/plog/find-github-pull-request-by-commit-sha</link><description>You can find the PR by searching for any of its SHA commits</description><pubDate>Thu, 21 Aug 2025 11:38:23 +0000</pubDate><guid>http://www.peterbe.com/plog/find-github-pull-request-by-commit-sha</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=https%3A//www.peterbe.com/rss.xml

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