<img data-lazy-fallback="1" decoding="async" src="/gears.jpg"/>
My open source software [projects](#projects ), [scripts](#scripts ), and [patches](#patches ). Unless otherwise noted, everything is public domain. Also see my [resume](/resume ), [GitHub profile](
), and [other lists](/lists ).
###
Projects
<li><a href="https://brid.gy/">Bridgy</a> connects your web site to social media. Likes, reposts, mentions, cross-posting, and more. Part of the <a href="https://indieweb.org/">IndieWeb</a> ecosystem.
</li>
<li>
<p><a href="https://fed.brid.gy/">Bridgy Fed</a> connects your web site to federated social networks natively, via ActivityPub. Lets you reply, like, and repost on <a href="https://joinmastodon.org/">Mastodon</a> and <a href="https://project.hubzilla.org/">Hubzilla</a> from your <a href="https://indieweb.org/">IndieWeb</a> site, and vice versa.</p>
</li>
<li>
<p><a href="https://github.com/snarfed/granary">granary</a>: the social web translator. Fetches and converts data between social networks, HTML and JSON with <a href="http://microformats.org/wiki/microformats2">microformats2</a>, <a href="http://activitystrea.ms/">ActivityStreams</a>, <a href="https://tools.ietf.org/html/rfc4287">Atom</a>, <a href="http://www.rssboard.org/rss-specification">RSS</a>, <a href="https://jsonfeed.org/">JSON Feed</a>, and more.</p>
</li>
<li>
<p><a href="https://lexrpc.readthedocs.io/">lexrpc</a> is a Python implementation of <a href="https://atproto.com/">AT Protocol</a>‘s <a href="https://atproto.com/specs/xrpc">XRPC</a> + <a href="https://atproto.com/guides/lexicon">Lexicon</a>.</p>
</li>
<li>
<p><a href="https://github.com/snarfed/dag-json">dag-json</a> is a Python implementation of the <a href="https://ipld.io/">IPLD</a> <a href="https://ipld.io/docs/codecs/known/dag-json/">DAG-JSON codec</a>.</p>
</li>
<li>
<p><a href="http://www.indiemap.org/">Indie Map</a> is a public <a href="https://indieweb.org/">IndieWeb</a> social graph and dataset, based on a complete crawl of 2300 of the most active IndieWeb sites.</p>
</li>
<li>
<p><a href="http://huffduff-video.snarfed.org/">huffduff-video</a> lets you send <a href="http://huffduffer.com/">Huffduffer</a> the audio from videos on YouTube, Vimeo, <a href="http://rg3.github.io/youtube-dl/supportedsites.html">and more</a>.</p>
</li>
<li>
<p><a href="https://github.com/snarfed/flask-gae-static">flask-gae-static</a> is a <a href="https://flask.palletsprojects.com/">Flask</a> extension for <a href="https://cloud.google.com/appengine/">Google App Engine</a> that serves static file handlers from <a href="https://cloud.google.com/appengine/docs/standard/python3/config/appref"><code>app.yaml</code> files</a>.</p>
</li>
<li>
<p><a href="https://github.com/indieweb/wordpress-micropub">wordpress-micropub</a> is a
<a href="https://indieweb.org/micropub">Micropub</a> server plugin for WordPress.</p>
</li>
<li>
<p><a href="https://github.com/snarfed/baffle">Baffle</a> (now decommissioned) used to let you use <a href="https://indieweb.org/Microsub-spec">Microsub</a> client apps with traditional feed readers like <a href="https://www.newsblur.com/">NewsBlur</a> and <a href="https://feedly.com/">Feedly</a>.</p>
</li>
<li>
<p><a href="https://github.com/snarfed/ownyourresponses">OwnYourResponses</a> is <a href="https://indieweb.org/PESOS">PESOS</a> as a service for likes, comments, reshares, etc. on social networks.</p>
</li>
<li>
<p><a href="https://github.com/snarfed/ownyourcheckin">OwnYourCheckin</a> is <a href="https://indieweb.org/PESOS">PESOS</a> as a service for Facebook checkins.</p>
</li>
<li>
<p><a href="/indieweb-press-this-bookmarklets-for-wordpress">IndieWeb Press This bookmarklets for WordPress</a> let you quickly <a href="https://indieweb.org/reply">reply</a>, <a href="https://indieweb.org/like">like</a>, <a href="https://indieweb.org/repost">repost</a>, and <a href="https://indieweb.org/rsvp">RSVP</a> to <a href="https://indieweb.org/">IndieWeb</a> posts and events.</p>
</li>
<li>
<p><a href="https://github.com/snarfed/oauth-dropins">oauth-dropins</a> is a collection of
drop-in <a href="http://oauth.net/">OAuth</a> client flows in Python
<a href="https://appengine.google.com/">App Engine</a> for popular sites like Facebook,
Twitter, and many more.</p>
</li>
<li>
<p><a href="/2013-07-16_open-link-in-app">Open Link in App</a> is an
Android app that opens links in their native app instead of the browser. It
currently supports Facebook, Twitter, Instagram, GitHub, and Goodreads.</p>
</li>
<li>
<p><a href="https://plusstreamfeed.appspot.com/">plusstreamfeed</a> generates and serves
an Atom feed of your Google+ stream, ie posts from the people in your
circles.</p>
</li>
<li>
<p><a href="https://instagram-atom.appspot.com/">instagram-atom</a> generates and serves
an Atom feed of your Instagram stream, ie photos from the people you follow.</p>
</li>
<li>
<p><a href="https://facebook-atom.appspot.com/">facebook-atom</a> generates and serves an
Atom feed of your Facebook news feed, ie
posts from your friends. <a href="/2012-03-12_activitystreams_for_facebook_and_twitter">More background.</a></p>
</li>
<li>
<p><a href="https://twitter-atom.appspot.com/">twitter-atom</a> generates and serves an
Atom feed of your Twitter stream or a Twitter list.
<a href="/2012-03-12_activitystreams_for_facebook_and_twitter">More background.</a></p>
</li>
<li>
<p><a href="https://github.com/snarfed/portablecontacts-unofficial">portablecontacts-unofficial</a>
is a library and REST API that converts Facebook and Twitter contacts to
<a href="http://portablecontacts.net/">PortableContacts</a> format. See the
<a href="/2012-02-22_portablecontacts_for_facebook_and_twitter">blog post</a> for more.</p>
</li>
<li>
<p><a href="https://github.com/snarfed/webfinger-unofficial">webfinger-unofficial</a> is a
<a href="http://code.google.com/p/webfinger/">WebFinger</a> server for social
networking sites like Facebook and Twitter that don’t implement it
themselves. See the
<a href="/2012-01-16_webfinger_for_facebook_and_twitter">blog post</a> for more.</p>
</li>
<li>
<p><a href="https://github.com/snarfed/salmon-unofficial">salmon-unofficial</a> is a
<a href="http://salmon-protocol.org/">Salmon</a> server for social networking sites like
Facebook, Twitter, and Google+ that don’t implement it themselves. See the
<a href="/2012-07-14_salmon_for_facebook_twitter_and_google_plus">blog post</a> for
details.</p>
</li>
<li>
<p><a href="/2012-11-30_facebook_to_wordpress">Facebook to WordPress</a>
is a script that copies your <a href="http://www.facebook.com/">Facebook</a> posts to a
<a href="http://wordpress.org/">WordPress</a> blog of your choice.</p>
</li>
<li>
<p><a href="http://bowflex-planner.appspot.com/">Bowflex Planner</a> optimizes Bowflex
Revolution exercise routines to minimize rearranging weights and
attachments. It was an excuse to learn the
<a href="http://golang.org/">Go programming language</a> (aka golang).</p>
</li>
<li>
<p><a href="https://github.com/snarfed/codeherenow">codeherenow</a> is a scrolling ticker
of source code checkins made by people right here, right now (ie recently,
at a specific place). Good for hackathons, conferences, etc. Written for
(and at) <a href="http://www.superhappy.be/">Super Happy Block Party</a>.</p>
</li>
<li>
<p><a href="/locale_headphone_buttons_plugin">Locale Headphone Buttons Plugin</a>
is a plugin for the <a href="http://www.twofortyfouram.com/">Locale</a> Android app that
simulates pressing a headphone or headset button.</p>
</li>
<li>
<p><a href="/locale_music_plugin">Locale Music Plugin</a>
is a plugin for the <a href="http://www.twofortyfouram.com/">Locale</a> Android app that
plays any song, audio file, or playlist in the default music app.</p>
</li>
<li>
<p><a href="https://github.com/rogerhu/mockfacebook">mockfacebook</a> is a standalone HTTP
server that implements Facebook’s
<a href="http://developers.facebook.com/docs/reference/fql/">FQL</a> and
<a href="http://developers.facebook.com/docs/reference/api/">Graph API</a>. It’s
particularly useful for testing.</p>
</li>
<li>
<p>The <a href="/snarfed_wordpress_theme">snarfed WordPress theme</a>, which
<strike>is currently running</strike> used to run on this site.</p>
</li>
<li>
<p><a href="/google_talk_sms_pidgin_plugin">google_talk_sms.pl</a>,
a <a href="http://pidgin.im/">Pidgin</a> plugin that enables
<a href="http://talk.google.com/">Google Talk</a>‘s
<a href="http://gmailblog.blogspot.com/2008/12/really-new-in-labs-this-time-sms-text.html">SMS text messaging</a>
feature.</p>
</li>
<li>
<p><a href="http://shell.appspot.com/">shell</a>,
<a href="http://openid-provider.appspot.com/">openid-provider</a>, and
<a href="http://openid-consumer.appspot.com/">openid-consumer</a>, three
<a href="http://code.google.com/appengine/">Google App Engine</a>
<a href="http://code.google.com/p/google-app-engine-samples/">sample apps</a>. See
<a href="/2008-04-07_google_app_engine_launched">my announcement</a> for details.</p>
</li>
<li>
<p><a href="http://code.google.com/p/openid-test/">openid-test</a> is an
interoperability test suite for <a href="http://openid.net/">OpenID</a>.</p>
</li>
<li>
<p><a href="https://pyblosxom.github.io/">PyBlosxom</a> is a lightweight weblog
platform, based on <a href="http://blosxom.com/">Blosxom</a> and written in Python.</p>
</li>
<li>
<p>An <a href="/pyblosxom_openid_comments">OpenID comments plugin for PyBlosxom</a>.</p>
</li>
<li>
<p>An <a href="/pyblosxom_openid_server">OpenID server plugin for PyBlosxom</a>.</p>
</li>
<li>
<p><a href="/site_search_with_the_Google_AJAX_Search_API">AJAX site search with the Google AJAX Search API</a>.</p>
</li>
<li>
<p><a href="/pyblosxom_index">index</a> is a <a href="https://pyblosxom.github.io/">PyBlosxom</a>
plugin that displays an alphabetical index of all entries.</p>
</li>
<li>
<p><a href="/pyblosxom_history">history</a> is a <a href="https://pyblosxom.github.io/">PyBlosxom</a>
plugin that displays change history for entries.</p>
</li>
<li>
<p><a href="/photogallery">photogallery</a> is a <a href="https://pyblosxom.github.io/">PyBlosxom</a>
plugin that displays photo galleries.</p>
</li>
<li>
<p><a href="/hardcodedates">hardcodedates</a> is a <a href="https://pyblosxom.github.io/">PyBlosxom</a>
plugin that stores mtimes in a file.</p>
</li>
<li>
<p>An <a href="/pyblosxom_rdf_flavour">RDF flavour</a> for Pyblosxom.</p>
</li>
<li>
<p>The <a href="/snarfed_org_pyblosxom_flavour">snarfed.org PyBlosxom flavour</a>, which
looks like this site.</p>
</li>
<li>
<p><a href="/filekicker">Filekicker</a> is a <a href="https://pyblosxom.github.io/">PyBlosxom</a>
plugin that serves static files.</p>
</li>
<li>
<p><a href="/fillcode">Fillcode</a> is an <a href="http://gnu.org/software/emacs/">Emacs</a>
minor mode that fills, or wraps, some parts of source code.</p>
</li>
<li>
<p><a href="/bigbrother">BigBrother</a> generates statistics and graphs from your
away message history. See my <a href="/ryan.barrett.name/bigbrother/">personal
example</a>.</p>
</li>
<li>
<p><a href="/p4">P4</a> is a compact, lightweight overlay network library, similar
to <a href="http://rfc-gnutella.sourceforge.net/">Gnutella</a> and
<a href="http://www.pdos.lcs.mit.edu/chord/">Chord</a>.</p>
</li>
<li>
<p><a href="https://github.com/snarfed/p4sync">p4sync</a> is a successor to <a href="/p4">P4</a> that
synchronizes playback across multiple computers.</p>
</li>
<li>
<p><a href="/libmsntp">libmsntp</a> is a compact, portable
<a href="/libmsntp">SNTP library</a>. It provides both client and server functionality.</p>
</li>
<li>
<p>The <a href="/snarfed_org_snipsnap_theme">snarfed.org SnipSnap theme</a>, which looks
like this site.</p>
</li>
<li>
<p><a href="/snipsnap_macros">Snipsnap macros</a> is a collection of macros for
<a href="http://snipsnap.org">SnipSnap</a>, the web server that <strike>runs</strike> used
to run this site.</p>
</li>
<li>
<p><a href="/tictactoe">Tictactoe</a> is an OpenGL engine that provides realistic
procedural modelling and rendering of water.</p>
</li>
<li>
<p><a href="/voxel">Voxel</a> is a high-resolution voxel terrain rendering engine.</p>
</li>
<li>
<p><a href="/malbum">MAlbum</a> is a quick and easy graphical interface for creating
a web album. (Maulik has a
<a href="http://maulik.freeshell.net/software/malbum-release/malbumSample">sample album</a>.)</p>
</li>
<li>
<p><a href="/nullprpl_pidgin_null_protocol_plugin">Nullprpl</a> is a mock
protocol plugin that lets you use <a href="http://pidgin.sf.net/">Pidgin</a> without
connecting to a server.
(<a href="http://developer.pidgin.im/viewmtn/revision/info/17c1e71f633d40fd14e46c08a17a500605d793c8">Added to Pidgin</a>
on 5/30/2007.)</p>
</li>
<li>
<p><a href="/remote">Remote</a> is a client for
<a href="http://httpq.sourceforge.net/">httpQ</a>, a network server plugin for
<a href="http://winamp.com">Winamp</a> (RIP; <a href="http://winamp.en.botbi.com/">download here</a>).</p>
</li>
<li>
<p><a href="/scavenger">Scavenger</a> extracts
<a href="http://zvon.org/tmRFC/RFC2822/Output/index.html">RFC2822</a> email addresses from
text and binary files.</p>
</li>
<li>
<p><a href="/folderstat">Folderstat</a> retrieves the size of the folders in an IMAP
email account.</p>
</li>
###
Scripts
<li><a href="https://github.com/snarfed/misc/blob/master/choose.sh">choose.sh</a>,
<a href="https://github.com/snarfed/misc/blob/master/choose.py">choose.py</a>, and
<a href="https://github.com/snarfed/misc/blob/master/rename.sh">rename.sh</a> are a
dirt simple suite of scripts for managing pictures, specifically choosing
the ones you want to keep and renaming (ie tagging) them.
</li>
<li>
<p><a href="/import_issues">import_issues.py</a> imports issues from a CSV file into a
<a href="http://code.google.com/hosting/">Google Code project hosting</a>
<a href="http://code.google.com/p/support/wiki/IssueTracker">issue tracker</a>.</p>
</li>
<li>
<p><a href="http://greasespot.net/">Greasemonkey</a> usercripts:
<a href="/greasemonkey_gmail_remove_trailing_quote">remove trailing quotes in GMail</a>,
<a href="/palo_alto_library_amazon_greasemonkey">check availability in Palo Alto Library</a>.</p>
</li>
<li>
<p><a href="http://userstyles.org/help/userstyles">Userstyles</a>:
<a href="/more_minimalist_gmail">More Minimalist Gmail</a>,
<a href="/google_calendar_simplified_userstyle">Google Calendar Simplified</a>, and
<a href="/google_tasks_simplified_userstyle">Google Tasks Simplified</a>.</p>
</li>
<li>
<p><a href="/sync_wordpress">sync_wordpress.sh</a> syncs
<a href="http://wordpress.org/">WordPress</a>, files, plugins, themes, and options
stored in the database from one WordPress instance to another.</p>
</li>
<li>
<p><a href="https://github.com/snarfed/wordpress/blob/main/pyblosxom2wxr.sh">pyblosxom2wxr.sh</a> is a shell script that migrates content from <a href="https://pyblosxom.github.io/">PyBlosxom</a> to <a href="http://wordpress.org/">WordPress</a>.</p>
</li>
<li>
<p><a href="/unixify">unixify.sh</a> is a simple shell script I use to sanitize
filenames and files people send me from other operating systems.</p>
</li>
<li>
<p><a href="/backup_google">backup_google.sh</a> is a shell script
that backs up data from Google
<a href="http://www.google.com/contacts">Contacts</a>,
<a href="http://calendar.google.com/">Calendar</a>,
<a href="http://www.google.com/reader/">Reader</a>, and
<a href="https://mail.google.com/tasks/canvas">Tasks</a>.</p>
</li>
<li>
<p><a href="/download_picasa_album">download_picasa_album.sh</a> downloads entire
<a href="http://picasaweb.google.com/">Picasa Web</a> photo albums.</p>
</li>
<li>
<p><a href="/simonitor">simonitor</a> screen scrapes <a href="http://simon.com/">simon.com</a>
to fetch the available balance on one or more Simon gift cards.</p>
</li>
<li>
<p><a href="/cdname_py">cdname.py</a> names MP3 files according to
<a href="http://cddb.com/">CDDB</a>/<a href="http://freedb.org/">freedb</a> INF files.</p>
</li>
<li>
<p><a href="/snipsnap2svn">snipsnap2svn</a> is an
<a href="http://www.w3.org/TR/xslt">XSLT</a> script that converts
<a href="http://snipsnap.org/">SnipSnap</a> XML database exports into
<a href="http://svn.collab.net/viewvc/*checkout*/svn/trunk/notes/fs_dumprestore.txt">Subversion dumpfiles</a>.</p>
</li>
<li>
<p><a href="/ditrit">Ditrit</a> is a programmable application launcher that tries to
“do the right thing” for any input it’s given.</p>
</li>
<li>
<p><a href="/snipscrape">snipscrape</a> transforms SnipSnap-generated HTML into XML
that can be imported back into SnipSnap.</p>
</li>
###
Patches
I stopped tracking these comprehensively a long time ago. Still, here’s a
sampling.
<li>
<p>A
<a href="https://github.com/snarfed/misc/blob/master/patches/wordpress_ryu_theme_1.1_dates_on_pages.patch">patch</a>
for the <a href="http://wordpress.org/themes/ryu">Ryu</a> WordPress theme that adds
published and modified dates to pages.
<a href="http://wordpress.org/support/topic/patch-show-published-and-modified-dates-on-pages">Submitted here.</a></p>
</li>
<li>
<p>A <a href="https://github.com/tekezo/KeyRemap4MacBook/pull/118">setting</a> for
<a href="http://pqrs.org/macosx/keyremap4macbook/">KeyRemap4MacBook</a> that provides
<a href="http://support.apple.com/kb/PH11262">sticky modifier keys</a> like Mac OS X, but
<a href="http://apple.stackexchange.com/questions/13708/disabling-the-keep-pressed-function-of-os-x-sticky-keys"><em>without</em> locking</a>.</p>
</li>
<li>
<p>A <a href="http://wordpress.org/support/topic/plugin-nextgen-gallery-patch-bug-fix-for-imagemagick-exec-and-passthru-checks">patch</a>
(<a href="https://github.com/snarfed/misc/blob/master/patches/nextgen_gallery_imagemagick_exec_passthru_check.patch">download</a>)
for <a href="http://www.nextgen-gallery.com/">NextGEN Gallery</a> that fixes its
<a href="http://www.imagemagick.org/">ImageMagick</a> checks for <code>exec</code> and <code>passthru</code>.</p>
</li>
<li>
<p>A <a href="http://debbugs.gnu.org/cgi/bugreport.cgi?bug=9647">patch</a> for
<a href="http://www.gnu.org/software/emacs/">Emacs</a>‘s
<a href="http://www.emacswiki.org/emacs/ShellDirtrackByPrompt">dirtrack-mode</a> that adds
support for shells with path prefixes, e.g.
<a href="http://www.gnu.org/software/tramp/">Tramp</a>-based remote shells. Applied in
<a href="http://bzr.savannah.gnu.org/lh/emacs/trunk/revision/106107">revision 106107</a>.</p>
</li>
<li>
<p>A <a href="https://github.com/snarfed/misc/blob/master/patches/ajax_comment_preview_2.3_loading_and_error.patch">patch</a> for the WordPress
<a href="http://blogwaffe.com/ajax-comment-preview/">Ajax Comment Preview</a> plugin that
fixes bugs with the loading and error messages and wraps them in stylable spans.</p>
</li>
<li>
<p>A <a href="https://github.com/snarfed/misc/blob/master/patches/www_netflix_new_rating_regex.patch">patch</a> for the
<a href="http://search.cpan.org/dist/WWW-Netflix/">WWW::Netflix</a> Perl library that
update the regular expression it uses to screen-scrape movie ratings. This
handles Netflix’s HTML as of 11/2010.</p>
</li>
<li>
<p>Patches to <a href="http://plugins.trac.wordpress.org/ticket/1178">shutter-reloaded</a>
and <a href="http://www.nextgen-gallery.com/">NextGEN Gallery</a> that
let you close the shutter display with the Escape key or by clicking on the
background.</p>
</li>
<li>
<p>WordPress importer <a href="http://plugins.trac.wordpress.org/ticket/1162">patch</a>
that fixes an order-dependent comment tag bug.</p>
</li>
<li>
<p>Patches that add
<a href="http://code.google.com/p/thematic/issues/detail?id=83">per-comment hooks</a>
(applied in <a href="http://code.google.com/p/thematic/source/detail?r=661">r661</a>)
and a <a href="http://code.google.com/p/thematic/issues/detail?id=82">comment-meta filter</a>
(applied in <a href="http://code.google.com/p/thematic/source/detail?r=660">r660</a>)
to the <a href="http://themeshaper.com/thematic/">Thematic</a> WordPress theme.</p>
</li>
<li>
<p>Two minor patches
(<a href="http://pythonpaste.org/archives/message/20080210.035948.3e0d6399.en.html">one</a>,
<a href="http://pythonpaste.org/archives/message/20080210.185854.234c983e.en.html">two</a>) to
<a href="http://pythonpaste.org/webob/">paste.webob</a>
that fix character set handling bugs.
(<a href="http://trac.pythonpaste.org/pythonpaste/changeset/7234">Both</a>
<a href="http://trac.pythonpaste.org/pythonpaste/changeset/7235">applied</a>
on 2/17/2008).</p>
</li>
<li>
<p>A <a href="https://github.com/snarfed/misc/blob/master/patches/opml2markdown_linkify.patch">patch</a> for
<a href="http://fletcher.freeshell.org/wiki/Markdown_and_XML">opml2markdown.xslt</a> that
adds links to each item’s web site and feed.</p>
</li>
<li>
<p>A <a href="https://github.com/snarfed/misc/blob/master/patches/comments_openid.patch">patch</a> that updates the
<a href="http://www.openidenabled.com/software/pyblosxom/release-announcement">PyBlosxom OpenID comments plugin</a>
to work with versions 1.x of the
<a href="http://www.openidenabled.com/openid/libraries/python">Python OpenID libraries</a>.
(<a href="/pyblosxom_openid_comments">Applied</a> on 9/6/2007.)</p>
</li>
<li>
<p>A <a href="https://github.com/snarfed/misc/blob/master/patches/cryptutil_ioerror.patch">minor bugfix for cryptutil.py</a> in the
<a href="http://www.openidenabled.com/openid/libraries/python">Python OpenID libraries</a>.
The patch is against version 2.0.0-rc3b.</p>
</li>
<li>
<p>A <a href="https://github.com/snarfed/misc/blob/master/patches/tkdiff_quote_filenames_svn.patch">tkdiff patch that quotes filenames</a>
(<a href="http://sourceforge.net/tracker/index.php?func=detail&aid=1672284&group_id=64960&atid=509274">tracker</a>)
for files in Subversion repositories.</p>
</li>
<li>
<p><a href="/pyblosxom_ajax_comments">AJAX commenting</a> in Pyblosxom.
(<a href="http://pyblosxom.svn.sourceforge.net/viewvc/pyblosxom?view=rev&revision=973">Applied</a>
on 1/24/2007.)</p>
</li>
<li>
<p>A <a href="/tcsh_highlighting_patch">tcsh highlighting patch</a> that highlights
the match during incremental search, and in emacs mode, the region between the
mark and cursor.
(<a href="http://mx.gw.com/pipermail/tcsh/2006-August/003724.html">Applied</a> on 8/23/2006.)</p>
</li>
<li>
<p>A patch to <a href="/remove_tcsh_globbing_in_history_search">remove tcsh globbing in history search</a>.
(<a href="http://mx.gw.com/pipermail/tcsh/2006-August/003726.html">Applied</a> on 8/23/2006.)</p>
</li>
<li>
<p>A <a href="/tcsh_delete_moves_mark_bug_fix">fix for a tcsh bug that moves the mark after deletions</a>. (Applied on 8/23/2006.)</p>
</li>
<li>
<p>An <a href="/acoc_conf_for_context_diffs">acoc rule for coloring context diffs</a>.</p>
</li>
<li>
<p>A <a href="/emacs_minibuffer-complete-and-exit_bug_fix">fix for an Emacs bug in minibuffer code</a>, specifically in
<em>minibuffer-complete-and-exit</em>. (Fixed in Emacs 22.)</p>
</li>
<li>
<p><a href="/port_pine_patch">port_pine_patch</a> is a shell script that automates
porting Pine patches between versions.</p>
</li>
<li>
<p><a href="/pine_reply-all_patch">Pine reply-all patch</a> adds a reply-all command
to the <a href="http://www.washington.edu/pine">Pine</a> email client.</p>
</li>
<li>
<p><a href="/pine_flowed-text_patch">Pine flowed-text patch</a> adds an option to
<a href="http://www.washington.edu/pine">Pine</a> to turn off displaying flowed text.</p>
</li>
<li>
<p><a href="/pine_remove_trailing_quote_patch">Pine remove trailing quote patch</a>
adds an option to automatically remove trailing quotes from outgoing emails.</p>
</li>
<li>
<p><a href="/pine_delete_attachments_on_save_patch">Pine delete attachments on save patch</a> adds an option to delete attachments from messages when you save
them.</p>
</li>
<li>
<p><a href="https://github.com/snarfed/misc/blob/master/patches/gaim_2_chat_invite_reverse_params.patch">Gaim chat_invite patch</a>
fixes a
<a href="https://sourceforge.net/tracker/index.php?func=detail&aid=1595828&group_id=235&atid=100235">parameter ordering bug</a>
in <a href="http://gaim.sf.net/">Gaim 2.x</a>‘s
<a href="http://gaim.sourceforge.net/api/struct__GaimPluginProtocolInfo.html#a3ea6e94a223c32ba8814aec326f02a5">GaimPluginProtocolInfo::chat_invite</a>
callback member.
(<a href="https://sourceforge.net/tracker/index.php?func=detail&aid=1595831&group_id=235&atid=300235">Applied</a>
on 11/15/2006.)</p>
</li>
<li>
<p><a href="https://github.com/snarfed/misc/blob/master/patches/gaim_1_away_menu_accelerators.patch">Gaim accelerators in away menus patch</a>
(<a href="http://sourceforge.net/tracker/index.php?func=detail&aid=1031098&group_id=235&atid=300235">tracker</a>)
fixes <a href="http://gaim.sf.net/">Gaim 1.x</a>‘s GTK menu code to allow accelerators in
dynamically created menus, such as away message menus.</p>
</li>
<li>
<p>Similarly, <a href="https://github.com/snarfed/misc/blob/master/patches/gaim_2_accounts_menu_accels.patch">Gaim accelerators in accounts submenus patch</a>
fixes <a href="http://gaim.sf.net/">Gaim 2.x</a>‘s GTK menu code to allow accelerators in
the dynamically created submenus of the Accounts menu.
(<a href="https://sourceforge.net/tracker/index.php?func=detail&aid=1597271&group_id=235&atid=300235">Applied</a>
on 11/19/2006.)</p>
</li>
<li>
<p><a href="/snipsnap_comment_without_login_patch">SnipSnap comment without login patch</a> allows visitors to post comments without logging in.</p>
</li>
<li>
<p><a href="/snipsnap_recent-changes_snip_name_patch">SnipSnap recent-changes snip name patch</a> fixes a <a href="http://bugs.snipsnap.org/browse/SNIPSNAP-392">bug</a> in
SnipSnap that causes recent-changes to show blog posts incorrectly.</p>
</li>
<li>
<p><a href="/snipsnap_1_0b1_virtual_hostname_patch">SnipSnap 1.0b1 virtual hostname patch</a> fixes a <a href="http://bugs.snipsnap.org/browse/SNIPSNAP-387">bug</a> in
SnipSnap that prevents <a href="/virtual_host_redirection">virtual host redirection</a>.</p>
</li>
<li>
<p><a href="/autocutsel_clipboard_and_primary_patch">Autocutsel clipboard and primary patch</a>
extends <a href="http://www.nongnu.org/autocutsel/">autocutsel</a> to
synchronize both the clipboard and the primary selection in X Windows.</p>
</li>
<li>
<p><a href="/libwebserver_shutdown_patch">Libwebserver shutdown patch</a>
(<a href="http://sourceforge.net/tracker/index.php?func=detail&aid=1146074&group_id=50164&atid=458797">tracker</a>)
adds a call to <a href="http://libwebserver.sourceforge.net/">libwebserver</a> to stop a
running server and close its socket(s).</p>
</li>
<li>
<p><a href="/webalizer_nofollow_patch">Webalizer nofollow patch</a> adds
<a href="http://www.google.com/googleblog/2005/01/preventing-comment-spam.html">nofollow</a>
support to the popular web server log analyzer
<a href="http://webalizer.com/">Webalizer</a>.</p>
</li>
GitHub
snarfed - Overview
snarfed has 150 repositories available. Follow their code on GitHub.