My open source software projects, scripts, and patches. Unless otherwise noted, everything is public domain. Also see my resume, GitHub profile, and other lists.
Projects
- Bridgy connects your web site to social media. Likes, reposts, mentions, cross-posting, and more. Part of the IndieWeb ecosystem.
-
Bridgy Fed connects your web site to federated social networks natively, via ActivityPub. Lets you reply, like, and repost on Mastodon and Hubzilla from your IndieWeb site, and vice versa.
-
granary: the social web translator. Fetches and converts data between social networks, HTML and JSON with microformats2, ActivityStreams, Atom, RSS, JSON Feed, and more.
-
lexrpc is a Python implementation of AT Protocol‘s XRPC + Lexicon.
-
dag-json is a Python implementation of the IPLD DAG-JSON codec.
-
Indie Map is a public IndieWeb social graph and dataset, based on a complete crawl of 2300 of the most active IndieWeb sites.
-
huffduff-video lets you send Huffduffer the audio from videos on YouTube, Vimeo, and more.
-
flask-gae-static is a Flask extension for Google App Engine that serves static file handlers from
app.yaml
files. -
wordpress-micropub is a Micropub server plugin for WordPress.
-
Baffle (now decommissioned) used to let you use Microsub client apps with traditional feed readers like NewsBlur and Feedly.
-
OwnYourResponses is PESOS as a service for likes, comments, reshares, etc. on social networks.
-
OwnYourCheckin is PESOS as a service for Facebook checkins.
-
IndieWeb Press This bookmarklets for WordPress let you quickly reply, like, repost, and RSVP to IndieWeb posts and events.
-
oauth-dropins is a collection of drop-in OAuth client flows in Python App Engine for popular sites like Facebook, Twitter, and many more.
-
Open Link in App is an Android app that opens links in their native app instead of the browser. It currently supports Facebook, Twitter, Instagram, GitHub, and Goodreads.
-
plusstreamfeed generates and serves an Atom feed of your Google+ stream, ie posts from the people in your circles.
-
instagram-atom generates and serves an Atom feed of your Instagram stream, ie photos from the people you follow.
-
facebook-atom generates and serves an Atom feed of your Facebook news feed, ie posts from your friends. More background.
-
twitter-atom generates and serves an Atom feed of your Twitter stream or a Twitter list. More background.
-
portablecontacts-unofficial is a library and REST API that converts Facebook and Twitter contacts to PortableContacts format. See the blog post for more.
-
webfinger-unofficial is a WebFinger server for social networking sites like Facebook and Twitter that donβt implement it themselves. See the blog post for more.
-
salmon-unofficial is a Salmon server for social networking sites like Facebook, Twitter, and Google+ that don’t implement it themselves. See the blog post for details.
-
Facebook to WordPress is a script that copies your Facebook posts to a WordPress blog of your choice.
-
Bowflex Planner optimizes Bowflex Revolution exercise routines to minimize rearranging weights and attachments. It was an excuse to learn the Go programming language (aka golang).
-
codeherenow 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) Super Happy Block Party.
-
Locale Headphone Buttons Plugin is a plugin for the Locale Android app that simulates pressing a headphone or headset button.
-
Locale Music Plugin is a plugin for the Locale Android app that plays any song, audio file, or playlist in the default music app.
-
mockfacebook is a standalone HTTP server that implements Facebook’s FQL and Graph API. It’s particularly useful for testing.
-
The snarfed WordPress theme, which
is currently runningused to run on this site. -
google_talk_sms.pl, a Pidgin plugin that enables Google Talk‘s SMS text messaging feature.
-
shell, openid-provider, and openid-consumer, three Google App Engine sample apps. See my announcement for details.
-
openid-test is an interoperability test suite for OpenID.
-
PyBlosxom is a lightweight weblog platform, based on Blosxom and written in Python.
-
index is a PyBlosxom plugin that displays an alphabetical index of all entries.
-
history is a PyBlosxom plugin that displays change history for entries.
-
photogallery is a PyBlosxom plugin that displays photo galleries.
-
hardcodedates is a PyBlosxom plugin that stores mtimes in a file.
-
An RDF flavour for Pyblosxom.
-
The snarfed.org PyBlosxom flavour, which looks like this site.
-
Filekicker is a PyBlosxom plugin that serves static files.
-
Fillcode is an Emacs minor mode that fills, or wraps, some parts of source code.
-
BigBrother generates statistics and graphs from your away message history. See my personal example.
-
P4 is a compact, lightweight overlay network library, similar to Gnutella and Chord.
-
p4sync is a successor to P4 that synchronizes playback across multiple computers.
-
libmsntp is a compact, portable SNTP library. It provides both client and server functionality.
-
The snarfed.org SnipSnap theme, which looks like this site.
-
Snipsnap macros is a collection of macros for SnipSnap, the web server that
runsused to run this site. -
Tictactoe is an OpenGL engine that provides realistic procedural modelling and rendering of water.
-
Voxel is a high-resolution voxel terrain rendering engine.
-
MAlbum is a quick and easy graphical interface for creating a web album. (Maulik has a sample album.)
-
Nullprpl is a mock protocol plugin that lets you use Pidgin without connecting to a server. (Added to Pidgin on 5/30/2007.)
-
Remote is a client for httpQ, a network server plugin for Winamp (RIP; download here).
-
Scavenger extracts RFC2822 email addresses from text and binary files.
-
Folderstat retrieves the size of the folders in an IMAP email account.
Scripts
- choose.sh, choose.py, and rename.sh are a dirt simple suite of scripts for managing pictures, specifically choosing the ones you want to keep and renaming (ie tagging) them.
-
import_issues.py imports issues from a CSV file into a Google Code project hosting issue tracker.
-
Greasemonkey usercripts: remove trailing quotes in GMail, check availability in Palo Alto Library.
-
Userstyles: More Minimalist Gmail, Google Calendar Simplified, and Google Tasks Simplified.
-
sync_wordpress.sh syncs WordPress, files, plugins, themes, and options stored in the database from one WordPress instance to another.
-
pyblosxom2wxr.sh is a shell script that migrates content from PyBlosxom to WordPress.
-
unixify.sh is a simple shell script I use to sanitize filenames and files people send me from other operating systems.
-
backup_google.sh is a shell script that backs up data from Google Contacts, Calendar, Reader, and Tasks.
-
download_picasa_album.sh downloads entire Picasa Web photo albums.
-
simonitor screen scrapes simon.com to fetch the available balance on one or more Simon gift cards.
-
cdname.py names MP3 files according to CDDB/freedb INF files.
-
snipsnap2svn is an XSLT script that converts SnipSnap XML database exports into Subversion dumpfiles.
-
Ditrit is a programmable application launcher that tries to “do the right thing” for any input it’s given.
-
snipscrape transforms SnipSnap-generated HTML into XML that can be imported back into SnipSnap.
Patches
I stopped tracking these comprehensively a long time ago. Still, here’s a sampling.
-
A patch for the Ryu WordPress theme that adds published and modified dates to pages. Submitted here.
-
A setting for KeyRemap4MacBook that provides sticky modifier keys like Mac OS X, but without locking.
-
A patch (download) for NextGEN Gallery that fixes its ImageMagick checks for
exec
andpassthru
. -
A patch for Emacs‘s dirtrack-mode that adds support for shells with path prefixes, e.g. Tramp-based remote shells. Applied in revision 106107.
-
A patch for the WordPress Ajax Comment Preview plugin that fixes bugs with the loading and error messages and wraps them in stylable spans.
-
A patch for the WWW::Netflix Perl library that update the regular expression it uses to screen-scrape movie ratings. This handles Netflix’s HTML as of 11/2010.
-
Patches to shutter-reloaded and NextGEN Gallery that let you close the shutter display with the Escape key or by clicking on the background.
-
WordPress importer patch that fixes an order-dependent comment tag bug.
-
Patches that add per-comment hooks (applied in r661) and a comment-meta filter (applied in r660) to the Thematic WordPress theme.
-
Two minor patches (one, two) to paste.webob that fix character set handling bugs. (Both applied on 2/17/2008).
-
A patch for opml2markdown.xslt that adds links to each item’s web site and feed.
-
A patch that updates the PyBlosxom OpenID comments plugin to work with versions 1.x of the Python OpenID libraries. (Applied on 9/6/2007.)
-
A minor bugfix for cryptutil.py in the Python OpenID libraries. The patch is against version 2.0.0-rc3b.
-
A tkdiff patch that quotes filenames (tracker) for files in Subversion repositories.
-
AJAX commenting in Pyblosxom. (Applied on 1/24/2007.)
-
A tcsh highlighting patch that highlights the match during incremental search, and in emacs mode, the region between the mark and cursor. (Applied on 8/23/2006.)
-
A patch to remove tcsh globbing in history search. (Applied on 8/23/2006.)
-
A fix for a tcsh bug that moves the mark after deletions. (Applied on 8/23/2006.)
-
A fix for an Emacs bug in minibuffer code, specifically in minibuffer-complete-and-exit. (Fixed in Emacs 22.)
-
port_pine_patch is a shell script that automates porting Pine patches between versions.
-
Pine reply-all patch adds a reply-all command to the Pine email client.
-
Pine flowed-text patch adds an option to Pine to turn off displaying flowed text.
-
Pine remove trailing quote patch adds an option to automatically remove trailing quotes from outgoing emails.
-
Pine delete attachments on save patch adds an option to delete attachments from messages when you save them.
-
Gaim chat_invite patch fixes a parameter ordering bug in Gaim 2.x‘s GaimPluginProtocolInfo::chat_invite callback member. (Applied on 11/15/2006.)
-
Gaim accelerators in away menus patch (tracker) fixes Gaim 1.x‘s GTK menu code to allow accelerators in dynamically created menus, such as away message menus.
-
Similarly, Gaim accelerators in accounts submenus patch fixes Gaim 2.x‘s GTK menu code to allow accelerators in the dynamically created submenus of the Accounts menu. (Applied on 11/19/2006.)
-
SnipSnap comment without login patch allows visitors to post comments without logging in.
-
SnipSnap recent-changes snip name patch fixes a bug in SnipSnap that causes recent-changes to show blog posts incorrectly.
-
SnipSnap 1.0b1 virtual hostname patch fixes a bug in SnipSnap that prevents virtual host redirection.
-
Autocutsel clipboard and primary patch extends autocutsel to synchronize both the clipboard and the primary selection in X Windows.
-
Libwebserver shutdown patch (tracker) adds a call to libwebserver to stop a running server and close its socket(s).
-
Webalizer nofollow patch adds nofollow support to the popular web server log analyzer Webalizer.
The best site search with the Google AJAX Search API
Ajax is Google Code the Power
http://snarfed.org article 10 :P
The AJAX site search with the Google AJAX Search API. Good Snarfed – lol excelent.
wow nice list of open source software. thanks for sharing.
Thanks
Open Source Library
Ryan,
I have some questions for you regarding Ryu and our website. Anyway I can get you to look at a few things Im sure you can change in seconds?
Thanks,
Brian Levine
hi brian! i’m far from a wordpress or ryu expert (or consultant), but if you have specific questions, feel free to send them my way and i’ll see if i can help.
Hi
I represent a tiny setup and need help with an MVP project. Mini-web-app. 4-pages for an online grocery service.
Would you be available for something like this? Or could you please refer me to anyone in your network who might be available?
Thanks vm in advance!
R
scope:
import page:
-admin can login using email & pwd.
-admin can import csv/Excel into catalog.
catalog page:
-user can view catalog.
-user can search catalog. Live-search so no page reloads.
-user can click on items to get popup to show detailed product information.
-user can sort catalog headers.
-user can add to cart.
-user can filter using tag-bundles & tags. Live-filtering so no page reloads.
-user can click checkout.
-admin can edit catalog data & upload photos.
checkout page:
-can view cart summary, edit quantities and remove products.
-can type email in text field.
-can type name in text field.
-can type address in text field.
-can type phone number in text field.
-can type preferred delivery date & time in text field.
-can click “submit button” to send email to admin with order details.