<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Posts tagged "open-source" - nolan caudill&#39;s internet house</title>
    <link>https://nolancaudill.com/tags/open-source/</link>
    <description>Posts tagged "open-source" on nolan caudill&#39;s internet house</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Wed, 11 Feb 2026 21:29:14 -0800</lastBuildDate>
    <atom:link href="https://nolancaudill.com/tags/open-source/feed.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Hosting an RSS reader</title>
      <link>https://nolancaudill.com/2026/02/11/hosting-rss/</link>
      <pubDate>Wed, 11 Feb 2026 21:29:14 -0800</pubDate>
      <guid>https://nolancaudill.com/2026/02/11/hosting-rss/</guid>
      <description>&lt;p&gt;In the year 2026, I decided I wanted to self-host an RSS reader. After setup, I am running &lt;a href=&#34;https://miniflux.app&#34;&gt;miniflux&lt;/a&gt; in Docker on a Synology NAS configured to expose a Google Reader API so I can use &lt;a href=&#34;https://netnewswire.com&#34;&gt;NetNewsWire&lt;/a&gt; as the client on iOS and macOS. Here&amp;rsquo;s how I got that working.&lt;/p&gt;
&lt;h2 id=&#34;motivation&#34;&gt;Motivation&lt;/h2&gt;
&lt;p&gt;My news reading method was incredibly haphazard. I flitted betweeen big news sites, apps like Apple News, various subreddits and blogs. I forgot which sites I visited. I lost track of interesting articles I came across. I was disorganized.&lt;/p&gt;
&lt;p&gt;Also, like every tech-savvy person of a particular age, I really missed Google Reader. I had dozens of RSS feeds I read daily and I missed that. I&amp;rsquo;ve tried various RSS readers over the years and none of them stuck.&lt;/p&gt;
&lt;p&gt;But, &lt;a href=&#34;https://netnewswire.blog/2026/02/11/netnewswire-turns.html&#34;&gt;on its 23rd birthday&lt;/a&gt;, I downloaded NetNewsWire and instantly loved the macOS-familiar UI.&lt;/p&gt;
&lt;p&gt;But, when exploring what RSS syncing service to use, none of the options fit what I wanted. I wouldn&amp;rsquo;t have enough feeds to justify using one of the paid services, and the iCloud option, while being the right price (read: free), is &lt;a href=&#34;https://netnewswire.com/help/iCloud.html&#34;&gt;slow&lt;/a&gt;. So, I dug into self-hosting, which NetNewsWire supports as long as the service exposes a Google Reader-compatible API.&lt;/p&gt;
&lt;p&gt;The option that floated to the top was &lt;a href=&#34;%5Bhttps://miniflux.app&#34;&gt;miniflux&lt;/a&gt;. Miniflux is, in its own words, &amp;ldquo;a minimalist and opinionated feed reader.&amp;rdquo; Perfect. It does have a very usable web UI but I planned to use it primarily via the NetNewsWire apps.&lt;/p&gt;
&lt;p&gt;I uncovered a couple of gotchas so wanted to write them here in case anyone else wants to glue these pieces together and host their own RSS reader.&lt;/p&gt;
&lt;h2 id=&#34;install-miniflux&#34;&gt;Install miniflux&lt;/h2&gt;
&lt;p&gt;First, I created a new directory on the NAS itself.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;mkdir -p /[your volume here]/docker/miniflux&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Inside that directory, I created 1 file and 2 more directories.&lt;/p&gt;
&lt;p&gt;The 2 directories were: &lt;code&gt;data/postgres&lt;/code&gt; and &lt;code&gt;var/lib/postgresql/data&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The docker-compose file, titled &lt;code&gt;docker-compose.yml&lt;/code&gt; follows. Note: there are placeholder passwords and URLs in there which may be worth changing.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;version: &amp;#39;3.8&amp;#39;

services:
  miniflux-db:
    image: postgres:15-alpine
    container_name: miniflux-db
    environment:
      - POSTGRES_USER=miniflux
      - POSTGRES_PASSWORD=changeme_strong_password
      - POSTGRES_DB=miniflux
    volumes:
      - ./data/postgres:/var/lib/postgresql/data
    restart: unless-stopped

  miniflux:
    image: miniflux/miniflux:latest
    container_name: miniflux
    ports:
      - &amp;#34;8080:8080&amp;#34;
    depends_on:
      - miniflux-db
    environment:
      - DATABASE_URL=postgres://miniflux:changeme_strong_password@miniflux-db/miniflux?sslmode=disable
      - RUN_MIGRATIONS=1
      - CREATE_ADMIN=1
      - ADMIN_USERNAME=admin
      - ADMIN_PASSWORD=changeme_admin_password
      - BASE_URL=http://your-nas-ip:8080
    restart: unless-stopped
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Now that you have the docker-compose file and the required directories created, run: &lt;code&gt;sudo docker-compose up -d&lt;/code&gt; to build the containers and start them.&lt;/p&gt;
&lt;p&gt;When this is complete, you should have a running miniflux reader listening on port 8080. You will now need to login to configure the service.&lt;/p&gt;
&lt;h2 id=&#34;configure-miniflux&#34;&gt;Configure miniflux&lt;/h2&gt;
&lt;p&gt;Once logged in, you will need to configure miniflux to turn on its Google Reader API, which is not on by default. Under Settings -&amp;gt; Integrations, you will see &amp;lsquo;Google Reader&amp;rsquo;. Under this section, you will need to create a new username and password (I just used the same one as the service login). Hit update and you&amp;rsquo;re done.&lt;/p&gt;
&lt;h2 id=&#34;configure-netnewswire&#34;&gt;Configure NetNewsWire&lt;/h2&gt;
&lt;p&gt;In NetNewsWire, you will want to add a new account. In the settings, under accounts, you will see &amp;lsquo;self-hosting&amp;rsquo; with FreshRSS. (NetNewsWire should probably just call this option &amp;ldquo;Google Reader API-compatible service&amp;rdquo; or something, because that&amp;rsquo;s what it is.)&lt;/p&gt;
&lt;p&gt;Select FreshRSS and then enter in the Google Reader integration username/password you just created and enter in the URL that miniflux gave you. It &lt;em&gt;should&lt;/em&gt; just be the base URL of the miniflux service with no trailing slash.&lt;/p&gt;
&lt;p&gt;If all went well, you should be in business.&lt;/p&gt;
&lt;h2 id=&#34;some-new-install-gotchas&#34;&gt;Some new install gotchas&lt;/h2&gt;
&lt;p&gt;I am not sure why but I needed to go to the &amp;lsquo;Feeds&amp;rsquo; section in miniflux and hit &amp;lsquo;refresh all feeds in the background&amp;rsquo; to get them to start polling automatically. I think this was related to the OPML import. I bet that adding a feed automatically queues up the first polling job, but an OPML import doesn&amp;rsquo;t. This fixes whatever problem that is.&lt;/p&gt;
&lt;p&gt;Also, I was moving my OPML from an existing RSS reader to this one. I wasn&amp;rsquo;t able to do it from the NetNewsWire interface but importing via the miniflux import feature worked fine.&lt;/p&gt;
&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;After following the steps above, I now have a hosted RSS reader running on my NAS and some slick native clients that stay in sync. Success.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Tiny Tiny RSS, a Google Reader Replacement</title>
      <link>https://nolancaudill.com/2013/06/15/google-reader-replacement/</link>
      <pubDate>Sat, 15 Jun 2013 07:00:00 +0000</pubDate>
      <guid>https://nolancaudill.com/2013/06/15/google-reader-replacement/</guid>
      <description>&lt;p&gt;Google Reader is being &lt;a href=&#34;http://googlereader.blogspot.com/2013/03/powering-down-google-reader.html&#34;&gt;discontinued&lt;/a&gt; on June 30th. This is probably the web application I&amp;rsquo;ve used the most and for the longest so I was a little bummed when they made the announcement. I immediately started looking for its replacement.
I wanted the replacement to be something that had a liberal open-source license (so I could poke at the code and share patches) and something I could host myself to avoid having to worry about the whims of some big corporation&amp;rsquo;s product roadmap.
After some exploration, I found one called &lt;a href=&#34;http://tt-rss.org/redmine/projects/tt-rss/wiki&#34;&gt;Tiny Tiny RSS&lt;/a&gt;. It used just PHP and MySQL, which meant I didn&amp;rsquo;t need to install or maintain any new things on my server. The code looked relatively sane and clean so I downloaded and installed it. Within probably half an hour, I had a very usable and surprisingly feature-rich RSS reader that even included an API. It&amp;rsquo;s also multi-tenant right out of the box.
The only caveat I had was that it didn&amp;rsquo;t have a usable mobile version. Today, I figured out that some kind developer had &lt;a href=&#34;http://tt-rss.org/forum/viewtopic.php?f=22&amp;amp;t=1981&amp;amp;sid=f3ff298fc728efca855d87c6072c0715#p10233&#34;&gt;written a plugin&lt;/a&gt; that exposed a &lt;a href=&#34;http://www.feedafever.com/&#34;&gt;fever&lt;/a&gt;-compatible API which &lt;a href=&#34;http://reederapp.com/iphone/&#34;&gt;Reeder&lt;/a&gt; for iPhone supports. (Hint: After installing the plugin you have to enable API access for your account to make it work. In retrospect that seems obvious, but I had to printf-debug my way through the app to figure why it wouldn&amp;rsquo;t accept my username and password.)
&lt;a href=&#34;http://www.flickr.com/photos/nolancaudill/9054581494/&#34; title=&#34;Another your-URL-goes-here app by Nolan Caudill, on Flickr&#34;&gt;&lt;img src=&#34;https://nolancaudill.com/images/flickr/9054581494_221f9e7fc1.jpg&#34; alt=&#34;Another your-URL-goes-here app&#34;&gt;&lt;/a&gt;
The end result of all this is that I have an RSS reader that will stay running as long as I&amp;rsquo;d like with no danger of it and/or my data being sold to the highest bidder along with a nice-looking iPhone app to read on the go.
This whole thing is also proof that the web can be resilient to vendor lock-in as long open standards (like OPML, RSS, HTTP, etc.) and the spirit that encourages them (like Reeder&amp;rsquo;s your-URL-goes-here screen) sticks around.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>FlickrTrickle</title>
      <link>https://nolancaudill.com/2013/03/30/flickrtrickle/</link>
      <pubDate>Sat, 30 Mar 2013 07:00:00 +0000</pubDate>
      <guid>https://nolancaudill.com/2013/03/30/flickrtrickle/</guid>
      <description>&lt;p&gt;This is a little tool that I wrote a couple of years ago that I think a handful of people use occasionally. To keep up with my philosophy of &amp;ldquo;if it can be open sourced, it should be open sourced,&amp;rdquo; combined with asking for people&amp;rsquo;s read-and-write privileges to their Flickr accounts without showing the code, I finally got around to taking out the secret config bits, writing a README and &lt;a href=&#34;https://github.com/mncaudill/flickrtrickle&#34;&gt;opening it up&lt;/a&gt;. Below is a copy of the README.&lt;/p&gt;
&lt;h2 id=&#34;what&#34;&gt;What?&lt;/h2&gt;
&lt;p&gt;FlickrTrickle lets you slowly introduce photos you upload to Flickr into your contact&amp;rsquo;s streams so they&amp;rsquo;ll get seen by working around Flickr&amp;rsquo;s interface that only shows the last five photos show from a contact, regardless of how many they just uploaded.&lt;/p&gt;
&lt;p&gt;This is the code behind &lt;a href=&#34;https://flickrtrickle.com&#34;&gt;FlickrTrickle&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;why&#34;&gt;Why?&lt;/h2&gt;
&lt;p&gt;So let&amp;rsquo;s say you go on a trip, like hiking the Appalachians, touring federal prisons, or visiting Disneyland, and get shutter-happy and take more than 5 photos. With the rise of digital cameras, taking multiple pictures in one day is not unheard of, and is practically encouraged in some circles. Now, you want to upload your more-than-a-handful number of pictures to Flickr. You&amp;rsquo;re quite proud of these photos, either due to their composition, their dynamics, or the way the light plays softly against edges of your latte art next to the kitten, and want your friends to see them. But Flickr (rightfully) wants to keep your photos-from-your-friend&amp;rsquo;s stream from being dominated by one person if they were to upload 150 photos so they only show the last five uploaded from each your contacts. This is very egalitarian of them.&lt;/p&gt;
&lt;p&gt;Through anecdotal experience, anything beyond that 5-photo barrier gets next to no views. Maybe my storytelling abilities don&amp;rsquo;t drive people to want to see those next photos but the interface doesn&amp;rsquo;t help me out either.&lt;/p&gt;
&lt;p&gt;You want more. You want your friends to see your photos. The best way to make this happen for me is to only upload a maximum of five at a time. Remembering to do this and keeping track of what you&amp;rsquo;ve already made public is an exercise in bookkeeping, something that computers are quite good at and my wife will attest to that I&amp;rsquo;m terrible at.&lt;/p&gt;
&lt;h2 id=&#34;how&#34;&gt;How?&lt;/h2&gt;
&lt;p&gt;The way around this is to use three different Flickr features: tags, privacy settings, and the date-posted-at attribute.&lt;/p&gt;
&lt;p&gt;Flickr sorts your photos in the global stream by the date posted to Flickr. Like most things on the site, this is adjustable by the API, meaning you can lie to the computers and say &amp;ldquo;yep, I uploaded this one a second ago even though you saw me upload it two weeks ago.&amp;rdquo; Computers are gullible that way. We can use that superpower and upload photos to Flickr whenever we&amp;rsquo;d like but set them private just to get them up there. Sometimes you want a photo to be a private without being visible to this trickling-interface (trickle-face?) so the code only pulls photos you&amp;rsquo;ve tagged with &amp;ldquo;flickrtrickle.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Then through a magical web interface (aka, this code), you select the ones you want to be visible to your friends and the date stuff automatically work itself out so it looks like you uploaded them at that moment.&lt;/p&gt;
&lt;p&gt;You get to upload all your photos to Flickr at one time, and then &amp;ldquo;trickle&amp;rdquo; them in a few at a time.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>The Code Behind the Yearbook</title>
      <link>https://nolancaudill.com/2012/01/23/yearbook/</link>
      <pubDate>Mon, 23 Jan 2012 08:00:00 +0000</pubDate>
      <guid>https://nolancaudill.com/2012/01/23/yearbook/</guid>
      <description>&lt;p&gt;&lt;em&gt;This is lifted from the README to &lt;a href=&#34;https://github.com/mncaudill/yearbook&#34;&gt;the github repository&lt;/a&gt;.&lt;/em&gt;
&lt;a href=&#34;http://www.flickr.com/photos/nolancaudill/6752628359/&#34; title=&#34;The Yearbook by Nolan Caudill, on Flickr&#34;&gt;&lt;img src=&#34;https://nolancaudill.com/images/flickr/6752628359_d764b003d8.jpg&#34; alt=&#34;The Yearbook&#34;&gt;&lt;/a&gt;
I decided to take all the blog posts, Twitter messages, and Flickr images I made this year, combine them, typeset them, and then get it printed
in a hard-bound book. I wrote a bit about the reasoning &lt;a href=&#34;http://nolancaudill.com/2011/11/29/concrete-words/&#34;&gt;here&lt;/a&gt;.
There was a lot of poking and pawing at the scripts I used to create the final product so I thought I&amp;rsquo;d share them in case someone else could get some use out of them.
Big warning: these are mostly worthless until you change them to fit your project. While all the code here works, and it ended up giving me a decent-looking book, you&amp;rsquo;ll need to modify it, which is mostly the point. This is &lt;em&gt;your&lt;/em&gt; retrospective and thus shouldn&amp;rsquo;t be a cookie-cutter running of the code I wrote (if that would even work).
I&amp;rsquo;ll now explain a bit about the pieces:&lt;/p&gt;
&lt;h2 id=&#34;the-blog-posts&#34;&gt;The Blog Posts&lt;/h2&gt;
&lt;p&gt;All my blog posts are just flat HTML (via jekyll) so getting my blog onto my PC was already done. You&amp;rsquo;ll probably need to run some magic incantation of &lt;code&gt;wget&lt;/code&gt; or &lt;code&gt;curl&lt;/code&gt; to get yours if they&amp;rsquo;re hosted somewhere else.
TeX, specifically pdflatex, was the workhorse on typesetting it so I needed to get these HTML files into tex format. I ran a &lt;code&gt;find . -name &amp;quot;*html&amp;quot; | xargs -I{} python texify.py {}&lt;/code&gt; in my jekyll&amp;rsquo;s site directory which then ran each of the files through &lt;a href=&#34;http://johnmacfarlane.net/pandoc/&#34;&gt;pandoc&lt;/a&gt;. Pandoc is a super magic text transformation library that will slurp in most text format and then spit out a transformed version. In this case, I was reading HTML and spitting out .tex files. You can see the command in &lt;code&gt;texify.py&lt;/code&gt;.
After I had all these converted tex files, I actually loaded all my files up in vim, made a macro that cleaned out things like header and footer, and then just ran the macro across all the open files. I forgot this magic spell almost as soon as I did it, but &lt;code&gt;bufdo&lt;/code&gt; sounds familiar. I&amp;rsquo;d google something like &amp;ldquo;vim macro across all open buffers&amp;rdquo; or something.
Now that I have a directory full of tex files, one file per blog post, you need a master tex file that actually describes the full document, as well as the pointers to all the various tex files to include. This is the &lt;code&gt;book.tex&lt;/code&gt; file in this repository. This is mine lifted as-is, so this is what the finished result looks like and should give you a good idea of how to put yours together.
TeX is a frustratingly arcane markup language, but it is extremely powerful and can create beautiful documents. It&amp;rsquo;s worth it, trust me.
I&amp;rsquo;ve also included a sample blog post tex file. This post includes a couple of images by &lt;code&gt;includegraphics&lt;/code&gt; to give you a heads start on that.&lt;/p&gt;
&lt;h2 id=&#34;twitter&#34;&gt;Twitter&lt;/h2&gt;
&lt;p&gt;To format your Twitter posts, you first need the actual Twitter messages. This is actually hard, if not impossible, if you&amp;rsquo;re especially prolific.
Twitter famously only allows you to fetch your last 3200 messages. This limit is enforced but on the official website and by the API.
I&amp;rsquo;ve been running &lt;a href=&#34;http://pongsocket.com/tweetnest/&#34;&gt;tweetnest&lt;/a&gt; on my server for a year or so, mainly because I think it&amp;rsquo;s pretty, but it turned out to do a whizbang job of archiving as well. Surprise, surprise: this was the source of Twitter messages for my book. I just dumped the table to a text file (via &lt;code&gt;mysqldump&lt;/code&gt;) and used that as my source file.
Inside of &lt;code&gt;twitter/tweet_transform.php&lt;/code&gt;, you&amp;rsquo;ll see the reading of this file and then spitting out the tex file, separating the messages by month and then by the day.
There are some positively Nolan-specific things in here. All the dates in Tweetnest (and probably Twitter&amp;rsquo;s API) return a timestamp for each Tweet using seconds since the epoch. If I only tweeted from San Francisco in all of 2011, getting nice dates would have been easy: just set the timezone at the top of the script and then call it a day. But as it turned out, I climbed on and off airplanes at various locations and at different times. You&amp;rsquo;ll see a block of code that dynamically sets the timezone according to when I was boarding and de-boarding airplanes.
Another sort of fuzzy, human thing I added to this that you may want to be aware of is that I fudged the edges of what constituted a &amp;ldquo;day&amp;rdquo;. Instead of a day being midnight to midnight, I grouped tweets on a 4am boundary. Best I could tell, I never tweeted before 4am after waking up, and never tweeted past 4am by staying up from the night before. This way a day is defined as waking up to going asleep (or passing out, some nights).
This script also runs follows some common URL shorteners so you won&amp;rsquo;t see any bit.ly or goo.gl links in your permanent archive.
The hard part of getting the Twitter section together is actually getting the tweets together, but once you do that, it&amp;rsquo;s a breeze.&lt;/p&gt;
&lt;h2 id=&#34;flickr&#34;&gt;Flickr&lt;/h2&gt;
&lt;p&gt;I uploaded about 600 pictures to Flickr this year. I really wanted to display every single picture for the sake of completeness but figuring out a way to that visually was difficult.
I ended up going something like &lt;a href=&#34;http://images.google.com/search?q=kitten&amp;amp;hl=en&amp;amp;site=webhp&amp;amp;tbm=isch&#34;&gt;Google&amp;rsquo;s image search&lt;/a&gt;. &lt;a href=&#34;http://www.flickr.com/photos/protohiro&#34;&gt;Stephen Woods&lt;/a&gt; was also a major source of inspiration for the layout. This layout lets you plop a lot of images on a page and letting them use their natural dimensions to shoulder out more space as needed.
Instead of forcing tex to layout individual images, or individual rows, I figured it would be easier to create an image that represented the full page and then put that on the page, not unlike the old days of people adding &lt;code&gt;&amp;lt;area&amp;gt;&lt;/code&gt; tags to full-page images in the early days of the web.
The &lt;code&gt;flickr/justified.php&lt;/code&gt; file is what creates these image files and then the &lt;code&gt;flickr.tex&lt;/code&gt; file that includes them all.
I used Aaron Cope&amp;rsquo;s &lt;a href=&#34;http://straup.github.com/parallel-flickr/&#34;&gt;parallel-flickr&lt;/a&gt; as the source of the images. This project conveniently creates an easy-to-query database so I could do something like &amp;ldquo;give me all the images from Jan 1, 2011, to Dec 31, 2011 ordered by date_taken ascending&amp;rdquo;. I used the output of this query to select the appropriate images in the correct order and rsynced them to my book&amp;rsquo;s Flickr directory.
There are a few fuzzy parameters that lets you set things like a maximum row height, and how wide your rows are. Feel free to twiddle these knobs as you see fit.&lt;/p&gt;
&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Nothing about this is drop-in-and-run but there are a lot of gotchas that I came across that might help someone else if they ever decide to tackle a project like this.&lt;/p&gt;
&lt;h2 id=&#34;the-code&#34;&gt;The Code&lt;/h2&gt;
&lt;p&gt;Feel free to browse the code at &lt;a href=&#34;https://github.com/mncaudill/yearbook&#34;&gt;my github repository&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>twitter-last-status</title>
      <link>https://nolancaudill.com/2009/04/23/twitter-last-status/</link>
      <pubDate>Thu, 23 Apr 2009 07:00:00 +0000</pubDate>
      <guid>https://nolancaudill.com/2009/04/23/twitter-last-status/</guid>
      <description>&lt;p&gt;It was a night of firsts.&lt;/p&gt;
&lt;p&gt;I wrote my first Twitter widget. It is the &amp;lsquo;Latest Tweet&amp;rsquo; widget on the far right column of the page that uses Twitter&amp;rsquo;s public JSONP API to pull in my last Twitter update.&lt;/p&gt;
&lt;p&gt;The only thing even mildly interesting is that it has a couple of regexes that finds any &amp;lsquo;@&amp;rsquo; names and links them up and (naively) hooks up any hyperlinks as well. These weren&amp;rsquo;t difficult, but they always take a little bit of tinkering to get right.&lt;/p&gt;
&lt;p&gt;More excitingly, I think, is that I decided to push it out to &lt;a href=&#34;http://github.com/mncaudill/twitter-last-status/tree/master&#34;&gt;github&lt;/a&gt; under a BSD license. This is technically my first open source software, minor as it is.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Helping jQuery Out</title>
      <link>https://nolancaudill.com/2008/10/14/helping-jquery-out/</link>
      <pubDate>Tue, 14 Oct 2008 07:00:00 +0000</pubDate>
      <guid>https://nolancaudill.com/2008/10/14/helping-jquery-out/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve made a commitment to myself to start helping out with some of my favorite open source projects. I&amp;rsquo;ve started helping in my own little way by hanging out in the jQuery IRC channel. It&amp;rsquo;s not much effort and I&amp;rsquo;ve already helped a few people, which feels good. I&amp;rsquo;m &amp;lsquo;mncaudill&amp;rsquo; in there, so feel free to say hi.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;d eventually like to start contributing code, but I&amp;rsquo;d like to get used to the community first and see how things are done. With such an intentionally lead codebase, contributing actual code might be a challenge, so helping people out in the channel might be the best way to help.&lt;/p&gt;
&lt;p&gt;Next up, I&amp;rsquo;d also like to help out with django by doing the same. With a more extensive codebase where size is not as big of as concern as it is in jQuery, getting a patch in or two would not be as difficult I would imagine.&lt;/p&gt;
</description>
    </item>
  </channel>
</rss>
