<?xml version="1.0" encoding="iso-8859-1"?>
<rss version="2.0">
<channel>
    <title>Shedding Bikes</title>
    <link>http://sheddingbikes.com/</link>
    <description>Essays on Programming Philosophy and Culture.</description>
    <language>en-us</language>
    
        <item>
            <title>Mongrel2 v1.7: SSL, Config-From-Anything, Filters, Reloading</title>
            <author>Zed A. Shaw</author>
            <link>http://sheddingbikes.com/posts/1307388904.html</link>
            <guid>http://sheddingbikes.com/posts/1307388904.html</guid>
            <pubDate>Mon, 6 Jun 2011 12:32:55 -0700</pubDate>
            <description>
                &lt;p&gt;This is just a quick blog post announcing a fresh &lt;a href=&#34;https://github.com/zedshaw/mongrel2&#34;&gt;release of
Mongrel2&lt;/a&gt; v1.7 that has support
for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SSL with a nice configuration system.&lt;/li&gt;
&lt;li&gt;Config-From-Anything foundations laid and mostly working.&lt;/li&gt;
&lt;li&gt;Much better reloading support.&lt;/li&gt;
&lt;li&gt;Lots of bug fixes all around.&lt;/li&gt;
&lt;li&gt;The beginning of the Filters feature.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can grab this release at
&lt;a href=&#34;http://mongrel2.org/static/downloads/mongrel2-1.7.tar.bz2&#34;&gt;http://mongrel2.org/static/downloads/mongrel2-1.7.tar.bz2&lt;/a&gt; and it has the MD5 3f7ec3fa4cf10d71e6a1ef34b60a8106 just in case.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;WARNING:&lt;/em&gt; This release is after quite a few upheavals to the project, namely switching to
&lt;a href=&#34;https://github.com/zedshaw/mongrel2&#34;&gt;github&lt;/a&gt;, problems with griefers on
github, major refactoring internally, and other changes, so be warned that it
might be as solid as past releases.&lt;/p&gt;

            </description>
        </item>
    
        <item>
            <title>Thanks, Github</title>
            <author>Zed A. Shaw</author>
            <link>http://sheddingbikes.com/posts/1306948009.html</link>
            <guid>http://sheddingbikes.com/posts/1306948009.html</guid>
            <pubDate>Wed, 1 Jun 2011 10:04:40 -0700</pubDate>
            <description>
                &lt;p&gt;I&#39;d like to just do a quick thank you to github for implementing the new
&lt;a href=&#34;https://github.com/blog/862-block-the-bullies&#34;&gt;Block The Bullies&lt;/a&gt;
feature, and to actually step up and call it what it is: bullying.
They&#39;ve also been on point to block anyone who griefed my projects over
the last day, and they&#39;ve done it fast, which is awesome.  I&#39;ll gladly
keep my projects there now that I know my project collaborators won&#39;t
have to deal with abuse from idiots.&lt;/p&gt;

&lt;p&gt;This was one of the reasons I didn&#39;t want to put my code on github.  If
I ran my own project services then I could easily control the griefers
and trolls.  I could just block them.  Also, they weren&#39;t really smart
enough to figure out fossil so I didn&#39;t run into them that often.
Github however was this large &#34;community&#34; full of mostly Ruby
programmers who acted with a mob mentality regarding me.  Without any
way to block people I knew I&#39;d run into that ever present dark side of
community: gangs.&lt;/p&gt;

&lt;p&gt;During the day my projects (which means all my collaborators) received
more griefing from 3 people, and a total of 10 emails with ASCII dongs
in them.  Each time, Rick Olson (a man I respect very much) blocked them
and banned them for violating the Github Terms of service.  They also
worked to create a feature that I think was long overdue on such a large
social site.&lt;/p&gt;

&lt;p&gt;People who don&#39;t have a small group of weakling anonymous trolls
constantly after them couldn&#39;t understand this.  I actually had friends
email me saying they were really sorry people harass me about my book
being on github, and then ask me to join github.  To them, community is
this great thing they don&#39;t mind following because they don&#39;t ever do
anything adventurous that might piss someone off.  They just couldn&#39;t
understand why I&#39;d be so &#34;contrarian&#34;.&lt;/p&gt;

            </description>
        </item>
    
        <item>
            <title>Github&#39;s Favorite Joke</title>
            <author>Zed A. Shaw</author>
            <link>http://sheddingbikes.com/posts/1306816425.html</link>
            <guid>http://sheddingbikes.com/posts/1306816425.html</guid>
            <pubDate>Mon, 30 May 2011 21:30:15 -0700</pubDate>
            <description>
                &lt;p&gt;This isn&#39;t a rant, but more of a warning about ignoring your users and
letting other users abuse them when you&#39;re trying to build trust and
community.  &lt;em&gt;WARNING: Not safe for work if you work at ebay or
similarily draconian companies.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;As some of you may know, I recently switched the
&lt;a href=&#34;http://mongrel2.org&#34;&gt;Mongrel2&lt;/a&gt; project over to
&lt;a href=&#34;http://github.com/zedshaw/mongrel2&#34;&gt;github&lt;/a&gt;.  Everything&#39;s been going
alright, except, there&#39;s this guy who keeps adding me as a collaborator
to his project called &#34;dongml&#34;.  I didn&#39;t really ask to be on the
project, but he thinks it&#39;s absolutely hilarious to have me on the
&lt;a href=&#34;https://github.com/nickmartini/dongml&#34;&gt;dongml&lt;/a&gt; project.&lt;/p&gt;

&lt;p&gt;Now, I think I need to explain a little bit of back story.  First, this
guy Nick Martini has trolled me in the past on twitter.  Back then he
went by &lt;a href=&#34;http://twitter.com/#!/elotente&#34;&gt;elotente&lt;/a&gt;, which is also
&lt;a href=&#34;http://twitter.com/#!/potente&#34;&gt;potente&lt;/a&gt;, and
&lt;a href=&#34;http://twitter.com/#!/fagatini&#34;&gt;fagatini&lt;/a&gt;.  Back then he would just try
to troll me as elotente, call me homophobic slurs, and other things.
So, I hunted him down, found out the three accounts were connected,
found his facebook, found his home address, and then pointed a google
map at his home address with the tweet, &#34;I can see your house from
here.&#34;&lt;/p&gt;

&lt;p&gt;You see, until that point Nick was hiding behind an anonymous identity
trying to troll me, and once he was outed he didn&#39;t bother me much after
that.  That&#39;s how anonymous trolls work.  I don&#39;t mind trolls, but I
firmly believe that anonymous trolls are incredibly abusive as they
deprive their victims of any valid recourse to their abuses such as the
law or direct confrontation.  Whenever I find an anonymous troll I try
to expose them so that they are forced to act on equal ground with their
victims.&lt;/p&gt;

            </description>
        </item>
    
        <item>
            <title>Mongrel2 and Tir Now On Github</title>
            <author>Zed A. Shaw</author>
            <link>http://sheddingbikes.com/posts/1306005291.html</link>
            <guid>http://sheddingbikes.com/posts/1306005291.html</guid>
            <pubDate>Sat, 21 May 2011 12:14:20 -0700</pubDate>
            <description>
                &lt;p&gt;The Rapture is upon us, or at least for the
&lt;a href=&#34;http://mongrel2.org&#34;&gt;Mongrel2&lt;/a&gt; project, because I
&lt;a href=&#34;https://github.com/zedshaw/mongrel2&#34;&gt;moved mongrel2 to github&lt;/a&gt; officially now, as well as
&lt;a href=&#34;https://github.com/zedshaw/Tir&#34;&gt;moving Tir&lt;/a&gt;.  The original fossil
repositories will be decommissioned soon and I&#39;ll have a new website up
in their place.  In case you missed the links they are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/zedshaw/mongrel2&#34;&gt;https://github.com/zedshaw/mongrel2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/zedshaw/Tir&#34;&gt;https://github.com/zedshaw/Tir&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thankfully fossil has a good git export that let me move everything over
to github in one day.  Also, thanks to all the mongrel2 hackers who
helped me today since, holy crap I still hate git and would have never
been able to get this done so quick.&lt;/p&gt;

&lt;h1&gt;Why The Switch? Will The World End?&lt;/h1&gt;

            </description>
        </item>
    
        <item>
            <title>Mongrel2 v1.6 Released, Tons Of Improvements</title>
            <author>Zed A. Shaw</author>
            <link>http://sheddingbikes.com/posts/1305220138.html</link>
            <guid>http://sheddingbikes.com/posts/1305220138.html</guid>
            <pubDate>Thu, 12 May 2011 10:02:29 -0700</pubDate>
            <description>
                &lt;p&gt;It&#39;s been a full 5 months since I released the 1.5 version of
&lt;a href=&#34;http://mongrel2.org&#34;&gt;Mongrel2&lt;/a&gt; so I&#39;m very pleased to announce version
&lt;a href=&#34;http://mongrel2.org/home#download&#34;&gt;1.6 of Mongrel2 is ready&lt;/a&gt;.  This
release includes a ton of bug fixes and then new internal features that
lay the foundation for some big changes to mongrel2 in the following
releases.&lt;/p&gt;

&lt;p&gt;You can grab the latest source .tar.bz2 at:&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://mongrel2.org/static/downloads/mongrel2-1.6.tar.bz2&#34;&gt;http://mongrel2.org/static/downloads/mongrel2-1.6.tar.bz2&lt;/a&gt;
(MD5: 4b7467c17dcd192e574d4d2c1455997c)&lt;/p&gt;

&lt;p&gt;I&#39;ve been running this release on my sites for a while, so it should be
stable, but please report any bugs you find as &lt;a href=&#34;http://mongrel2.org/tktnew&#34;&gt;a new bug ticket&lt;/a&gt; so we can fix them.&lt;/p&gt;

            </description>
        </item>
    
        <item>
            <title>Udemy Online LPTHW Course</title>
            <author>Zed A. Shaw</author>
            <link>http://sheddingbikes.com/posts/1301941734.html</link>
            <guid>http://sheddingbikes.com/posts/1301941734.html</guid>
            <pubDate>Mon, 4 Apr 2011 11:27:20 -0700</pubDate>
            <description>
                &lt;p&gt;A quick bit of pimping for a new &lt;a href=&#34;http://learnpythonthehardway.org&#34;&gt;Learn Python The Hard
Way&lt;/a&gt; course I&#39;m doing on
&lt;a href=&#34;http://udemy.com&#34;&gt;Udemy.com&lt;/a&gt; where I go through the whole book in 4
weeks.  It includes 8 videos (4 already done, 4 to come), all the
material, and I&#39;ll be interacting with the students.&lt;/p&gt;

&lt;p&gt;You can &lt;a href=&#34;http://www.udemy.com/learn-python-the-hard-way/&#34;&gt;signup for the course&lt;/a&gt; and should if you&#39;ve wanted to go through the book but had problems.&lt;/p&gt;

&lt;p&gt;Feel free to bring up any problems you have in the forums and the Udemy
team will help get it fixed.  They&#39;re very keen on making it a great
experience for everyone.&lt;/p&gt;

&lt;p&gt;P.S. Don&#39;t put this on &lt;a href=&#34;http://news.ycombinator.com&#34;&gt;HackerNews&lt;/a&gt;.  They
really only like pimping their own startups and anything Ycombinator
does. Heaven forbid you tell them about a course teaching
non-programmers to code based on a book with &lt;a href=&#34;http://sheddingbikes.com/posts/1301901149.html&#34;&gt;335k
downloads&lt;/a&gt; from all over
the world.&lt;/p&gt;

            </description>
        </item>
    
        <item>
            <title>1 Year Of LPTHW, 335K Downloads?!</title>
            <author>Zed A. Shaw</author>
            <link>http://sheddingbikes.com/posts/1301901149.html</link>
            <guid>http://sheddingbikes.com/posts/1301901149.html</guid>
            <pubDate>Mon, 4 Apr 2011 00:10:17 -0700</pubDate>
            <description>
                &lt;p&gt;On April 27th it&#39;ll be about 1 year since I started &lt;a href=&#34;http://learnpythonthehardway.org&#34;&gt;Learn Python The
Hard Way&lt;/a&gt; and I thought I&#39;d check the
statistics out for downloads.  I&#39;m now kicking myself for not having
tracked this sooner, because it looks like it&#39;s been downloaded &lt;em&gt;335
thousand&lt;/em&gt; times.  I totally don&#39;t believe those numbers myself.  That&#39;s
insane so I want to share the knowledge with others to get them
validated.&lt;/p&gt;

&lt;p&gt;I&#39;m putting the access logs for GET requests online for others to verify
the numbers and tell me if I&#39;m getting them right.  You can &lt;a href=&#34;http://zedshaw.com/lpthw.Apr.04.2011.log.bz2&#34;&gt;download the stats logs in bzip2 format&lt;/a&gt; and review them.
Feel free to tell me what you think the real download stats are for
the .pdf of the book.&lt;/p&gt;

&lt;p&gt;I&#39;m doing this because, frankly, I had no idea there was such a huge
market for cheap or free books teaching programming.  Hell, for teaching
programming at all.  I just thought that it&#39;d maybe get 10k downloads
maximum by the end of the year.  That&#39;s what I heard was a good run for
a programming book.  If these download logs are true, then I think
&lt;em&gt;everyone&lt;/em&gt; is seriously under evaluating the power of online publishing.&lt;/p&gt;

&lt;p&gt;I think right now those of us writing tech books are fed numbers from
the major publishers, who have incentives to either flat out lie or who
simply don&#39;t sell that many copies.  That means when people like me put
a book up for free, we&#39;re operating under false assumptions about its
reach.  I&#39;m hoping that my raw access logs (with ip addresses removed)
will give people who want to publish a similar book a bit more
information so they can make good decisions.&lt;/p&gt;

            </description>
        </item>
    
        <item>
            <title>Launchpad vs. Github/SysAdmin vs. Coder</title>
            <author>Zed A. Shaw</author>
            <link>http://sheddingbikes.com/posts/1299555462.html</link>
            <guid>http://sheddingbikes.com/posts/1299555462.html</guid>
            <pubDate>Mon, 7 Mar 2011 19:07:50 -0800</pubDate>
            <description>
                &lt;p&gt;I saw this &lt;a href=&#34;http://b.lvh.cc/why-do-people-hate-launchpad-so-much&#34;&gt;blog post by lvh&lt;/a&gt; asking the
simple question, &#34;Why do people hate &lt;a href=&#34;https://launchpad.net/&#34;&gt;launchpad&lt;/a&gt;
so much?&#34;  It was something I also wondered until I started tinkering
with forking &lt;a href=&#34;http://www.netbsd.org/docs/software/packages.html&#34;&gt;NetBSD pkgsrc&lt;/a&gt; and went to
research various package managers.  When I was going through all the various
package managers I finally realized that the difference between
Launchpad and &lt;a href=&#34;http://github.com&#34;&gt;Github&lt;/a&gt; is actually the difference
between System Administrators and Software Developers.&lt;/p&gt;

&lt;p&gt;Try this out, let&#39;s pick a random github project, say
&lt;a href=&#34;https://github.com/nvie/gitflow&#34;&gt;gitflow&lt;/a&gt; on github, and then
&lt;a href=&#34;https://launchpad.net/bzr&#34;&gt;Bazaar&lt;/a&gt; on Launchpad.  You could do this
with various random projects, but check out what you see first:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Github starts right off with, the &lt;em&gt;author&lt;/em&gt; as the most important thing,
followed by the code, commits, and readme.&lt;/li&gt;
&lt;li&gt;Launchpad starts off with the &lt;em&gt;project&lt;/em&gt;, then the revisions and
releases, FAQ, bugs that got closed, and project members.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now, I&#39;m not saying one way is better or another, I&#39;m saying that
depending on what your day job is, you want either Github&#39;s focus or
Launchpad&#39;s focus.&lt;/p&gt;

            </description>
        </item>
    
        <item>
            <title>Edifying.TV Progress, It Can Load Stuff</title>
            <author>Zed A. Shaw</author>
            <link>http://sheddingbikes.com/posts/1299315785.html</link>
            <guid>http://sheddingbikes.com/posts/1299315785.html</guid>
            <pubDate>Sat, 5 Mar 2011 01:01:55 -0800</pubDate>
            <description>
                &lt;p&gt;I&#39;ve been rolling an idea for a &#34;media browser&#34; in my head for a while,
but recently I think I found a small tiny little corner of the idea that
I can actually work on.  Now I&#39;m tinkering with
&lt;a href=&#34;http://edifying.tv&#34;&gt;Edifying.TV&lt;/a&gt; which will be a way for students to
watch videos from teachers.  Basically the same thing, but focused
directly on one type of media, and two very narrow users.&lt;/p&gt;

&lt;p&gt;The idea came from trying to do videos for an online course I teach, and
finding that there is no one video encoding that does this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Put a link to the raw file in a page.&lt;/li&gt;
&lt;li&gt;User clicks that link.&lt;/li&gt;
&lt;li&gt;It plays.  Period.  No stupid nerd freak out about the bizarre matrices of codecs intersecting with encodings intersecting with the Pythagorean derivative of second order legal systems on a Martian sun.&lt;/li&gt;
&lt;li&gt;Yes, just play.  Like how I can click on a damn .gif and it displays.  Or a .txt and it prints out.  Or hell, a .mp3 and it plays.&lt;/li&gt;
&lt;li&gt;It plays.  Get it?  Not with Flash. Not with a stupid video HTML5 tag. Just play the damn video file.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Really that&#39;s just one requirement, but holy crap is video frustrating.
Since I figure there&#39;s no way in hell browsers will ever get their act
together and make this happen, I might as well take a crack at making a
separate program that can do it.&lt;/p&gt;

            </description>
        </item>
    
        <item>
            <title>Wikipedia&#39;s Notability Requirements And The Slash</title>
            <author>Zed A. Shaw</author>
            <link>http://sheddingbikes.com/posts/1297662169.html</link>
            <guid>http://sheddingbikes.com/posts/1297662169.html</guid>
            <pubDate>Sun, 13 Feb 2011 21:39:30 -0800</pubDate>
            <description>
                &lt;p&gt;There&#39;s a recent problem with one &lt;a href=&#34;http://monsan.to/&#34;&gt;Chris Mansanto&lt;/a&gt;
deciding that &lt;a href=&#34;http://www.reddit.com/r/programming/comments/fkt7t/nemerle_factor_alice_ml_and_other_programming/&#34;&gt;he&#39;s the sole decider in the notability of programming
languages&lt;/a&gt;
on Wikipedia, so he&#39;s taking it on himself to delete all the languages
that don&#39;t meet &lt;a href=&#34;http://en.wikipedia.org/wiki/Wikipedia:Notability&#34;&gt;Wikipedia&#39;s Notability
requirements&lt;/a&gt;.  Let&#39;s
put aside the insanely weird idea that one person has the ability to
derail the creation of information unilaterally, without a vote, and
without any oversight to focus on the real problem:&lt;/p&gt;

&lt;h1&gt;Notability Is Avoiding The Slash&lt;/h1&gt;

&lt;p&gt;Wikipedia&#39;s stupid notability page creation rule is effectively working
around their software&#39;s inability to handle arbitrary paths to
sub-pages.  Yes, they don&#39;t want to create too many pages because they
can&#39;t handle a nested namespace.  Hell I got no idea if the software can
or cannot, but they sure don&#39;t use it much.  There&#39;s absolutely no
reason you can&#39;t have sub-pages under
&lt;a href=&#34;http://en.wikipedia.org/wiki/Esoteric_programming_languages&#34;&gt;Esoteric programming languages&lt;/a&gt;
for each and every language on the planet.  Wikipedia is just using
social rules to solve a technical problem with the slash.&lt;/p&gt;

&lt;p&gt;These requirements are entirely stupid for a programming language since
they&#39;re primarily for people and biographical information and based on
&#34;popularity&#34; in the regular press.  In a way the entire Notability
requirement simply props up the established publishing and music
industries.  You can literally read these requirements as &#34;some big mega
corp my grandma might encounter has mentioned it.&#34;  This attitude
completely eliminates a vast majority of sub-cultures, revolutionary
movements, ethnic groups, and just about anything that mainstream media
hasn&#39;t covered.&lt;/p&gt;

            </description>
        </item>
    
        <item>
            <title>My Python A Starts Tomorrow: With Video</title>
            <author>Zed A. Shaw</author>
            <link>http://sheddingbikes.com/posts/1296532451.html</link>
            <guid>http://sheddingbikes.com/posts/1296532451.html</guid>
            <pubDate>Mon, 31 Jan 2011 19:39:37 -0800</pubDate>
            <description>
                &lt;p&gt;This is a quick announcement that I&#39;m doing another Python course based
on my book &lt;a href=&#34;http://learnpythonthehardway.org&#34;&gt;Learn Python The Hard Way&lt;/a&gt;
over at
&lt;a href=&#34;http://codelesson.com/courses/view/introduction-to-programming-in-python&#34;&gt;Codelesson.com&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The class starts &lt;em&gt;tomorrow&lt;/em&gt; so &lt;a href=&#34;http://codelesson.com/courses/view/introduction-to-programming-in-python&#34;&gt;signup for
it&lt;/a&gt;
if you want to get in.  It will probably be small, at about 12 students
this time around.&lt;/p&gt;

&lt;h1&gt;Improvements To The Course&lt;/h1&gt;

&lt;p&gt;The course covers the very first half of the book, exercises 0-24, and
lasts 4 weeks.  This will be the second time I&#39;ve taught the class and
I&#39;m making the following improvements:&lt;/p&gt;

            </description>
        </item>
    
        <item>
            <title>My Learn Python THW Class At PyCon 2011</title>
            <author>Zed A. Shaw</author>
            <link>http://sheddingbikes.com/posts/1295120282.html</link>
            <guid>http://sheddingbikes.com/posts/1295120282.html</guid>
            <pubDate>Sat, 15 Jan 2011 11:23:09 -0800</pubDate>
            <description>
                &lt;p&gt;It&#39;s official, I am teaching &lt;a href=&#34;http://learnpythonthehardway.org&#34;&gt;Learn Python The Hard
Way&lt;/a&gt; at &lt;a href=&#34;http://us.pycon.org/2011/home/&#34;&gt;PyCon
2011&lt;/a&gt;.  That means I&#39;ll be at PyCon and
I&#39;ll be teaching total beginners in person out of &lt;a href=&#34;http://www.lulu.com/product/paperback/learn-python-the-hard-way/13509215?productTrackingContext=search_results/search_shelf/center/2&#34;&gt;my book.&lt;/a&gt;
It&#39;s going to be lots of fun, and I have this idea that I may just teach
the book the whole time I&#39;m there.  I think it&#39;d be fun to just grab one
of the rooms they have down in the basement and hang out with people
trying to learn Python.&lt;/p&gt;

&lt;p&gt;So, here&#39;s the deal:  If enough people signup to fill up the class, then I&#39;ll
keep teaching the class during the conference and be the Newbie Conference
Guide.  The goal will be to get at least 1/2 of the class leaving PyCon with a
brain totally introduced to Python, and get everyone into the Python community
and enjoying the conference.&lt;/p&gt;

&lt;p&gt;How we&#39;ll do it, is we&#39;ll go through the beginning of the book during the
tutorials.  When the conference is in session, we&#39;ll mix it up and split half
of the time doing LPTHW exercises, and the other half going to conference talks
that I or the group think are good beginner topics.  After each talk we&#39;ll then
try to apply what we just saw using the book.&lt;/p&gt;

&lt;p&gt;I&#39;ll basically be your guide throughout the conference so that nobody
picks on you and you get to learn the most you can.&lt;/p&gt;

            </description>
        </item>
    
        <item>
            <title>Tir 0.9 Is Out, Hype.la Open Sourced</title>
            <author>Zed A. Shaw</author>
            <link>http://sheddingbikes.com/posts/1294605882.html</link>
            <guid>http://sheddingbikes.com/posts/1294605882.html</guid>
            <pubDate>Sun, 9 Jan 2011 12:31:33 -0800</pubDate>
            <description>
                &lt;p&gt;Today I&#39;m happy to announce that my little Mongrel2+Lua web framework
&lt;a href=&#34;http://tir.mongrel2.org&#34;&gt;Tir&lt;/a&gt; as version 0.9.  This release is the
product of me using Tir and Mongrel2 for a few months on two real
projects: &lt;a href=&#34;http://hype.la&#34;&gt;Hype.la&lt;/a&gt; and &lt;a href=&#34;http://autho.me&#34;&gt;Autho.me&lt;/a&gt;.
You can read &lt;a href=&#34;http://tir.mongrel2.org/home&#34;&gt;more about Tir&lt;/a&gt;, figure out
how to &lt;a href=&#34;http://tir.mongrel2.org/wiki?name=Install&#34;&gt;install it&lt;/a&gt;, and see
how to &lt;a href=&#34;http://tir.mongrel2.org/wiki?name=GettingStarted&#34;&gt;get started&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This release features the following new cool stuff:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Refactored code so that everything is in nice little files.&lt;/li&gt;
&lt;li&gt;Support for forms, including multipart file uploads.&lt;/li&gt;
&lt;li&gt;Tasks, that let you offload async requests to 0mq backends.&lt;/li&gt;
&lt;li&gt;Full unit testing for doing interaction tests with handlers.&lt;/li&gt;
&lt;li&gt;Actual real-world use of the framework and all the features.  It&#39;s only got features I&#39;ve actually used.&lt;/li&gt;
&lt;li&gt;A lot less than 440,000 lines of code. I don&#39;t know, for some people that might be a strike against it, but about 1300 is pretty decent.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;Hype.la Soon To Be Open Sourced&lt;/h1&gt;

            </description>
        </item>
    
        <item>
            <title>Autho.me API And Python Demo</title>
            <author>Zed A. Shaw</author>
            <link>http://sheddingbikes.com/posts/1294445127.html</link>
            <guid>http://sheddingbikes.com/posts/1294445127.html</guid>
            <pubDate>Fri, 7 Jan 2011 15:52:21 -0800</pubDate>
            <description>
                &lt;p&gt;I&#39;ve managed to get &lt;a href=&#34;http://autho.me&#34;&gt;Autho.me&lt;/a&gt; working to the point
where there&#39;s a functioning API and a full Python demonstration web site
that uses it.  The API is very simple right now, but it should work and
the mechanisms should all be solid enough to try out.  I&#39;ve got the SRP
javascript code to check all the various failure modes required, and
have thrashed it good, so it should hopefully hold up to scrutiny.&lt;/p&gt;

&lt;p&gt;If you want to try it, just go to &lt;a href=&#34;http://autho.me/start.html&#34;&gt;the getting
started instructions&lt;/a&gt; and they&#39;ll tell you
how to get setup.  It&#39;s a single page of docs so to find out more you&#39;ll
need to look at the code and check it out.&lt;/p&gt;

&lt;h1&gt;Big Ass Warnings&lt;/h1&gt;

&lt;p&gt;Do &lt;em&gt;not&lt;/em&gt; use this for anything serious yet.  I still have to do a few
attack decision trees analyzing possible attacks and then handling them.
I&#39;m going to work on a spreadsheet that lays out attacks to standard
website, autho.me, oauth, and openid.  I&#39;ll be using this decision tree
to figure out what needs to be handled and what can&#39;t be handled, and
also to make sure that Autho.me is at least as secure as OpenID or well
done site login system.  This attack tree will also drive the design and
UI of Autho.me in the future.&lt;/p&gt;

            </description>
        </item>
    
        <item>
            <title>Why I Don&#39;t Use Tor</title>
            <author>Zed A. Shaw</author>
            <link>http://sheddingbikes.com/posts/1293530004.html</link>
            <guid>http://sheddingbikes.com/posts/1293530004.html</guid>
            <pubDate>Tue, 28 Dec 2010 01:39:55 -0800</pubDate>
            <description>
                &lt;p&gt;I have this hypothetical question I&#39;ve been using periodically to talk
about the relevance of ad hominem in evaluating software:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;What if Hitler gave you a cheese sandwich?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It&#39;s a pretty simple question.  Imagine you&#39;re sitting there and, yeah,
Hitler is eating across the table from you.  He&#39;s got a cheese sandwich
and he hands it to you. &#34;Hey, want my grilled cheese?&#34;&lt;/p&gt;

&lt;p&gt;Most normal folks would turn him down, politely most likely but they&#39;d
definitely not eat a sandwich from a guy who used to slowly increase his
doses of arsenic.  But also, you&#39;re probably thinking, &#34;No way, this
guy&#39;s an insane mass murderer, I&#39;m not eating that damn sandwich.&#34;&lt;/p&gt;

            </description>
        </item>
    
        <item>
            <title>Using Tir&#39;s Tasks For Async Photo Uploads</title>
            <author>Zed A. Shaw</author>
            <link>http://sheddingbikes.com/posts/1292063326.html</link>
            <guid>http://sheddingbikes.com/posts/1292063326.html</guid>
            <pubDate>Sat, 11 Dec 2010 02:16:26 -0800</pubDate>
            <description>
                &lt;p&gt;While working on &lt;a href=&#34;http://hype.la&#34;&gt;Hype.la&lt;/a&gt; I wanted to do some photo
scaling/cropping stuff for people&#39;s uploaded profile pictures.  If
there&#39;s one thing on the web that sucks more than uploading a photo,
it&#39;s munging it for efficiency.  Usually you&#39;re stuck with nasty API&#39;s
that are written in C and just damn hard to use.  Combine that with the
range of image types and sizes people can upload and you&#39;ve got lots
additional headaches.&lt;/p&gt;

&lt;p&gt;With &lt;a href=&#34;http://tir.mongrel2.org&#34;&gt;Tir&#39;s&lt;/a&gt; new Tasks though I figured I
could create a system that did the photo uploading, but did all the
processing in async tasks off ZeroMQ.  After figuring out how to
actually crop photos in Lua with Imalib2 it was about a day of work
and now gives me some nice room for the future.&lt;/p&gt;

&lt;p&gt;Here&#39;s how I did it.&lt;/p&gt;

&lt;h1&gt;Step 1: Scale And Crop With Imlib2&lt;/h1&gt;

            </description>
        </item>
    
        <item>
            <title>Tir 0.8 Out, Works On OSX</title>
            <author>Zed A. Shaw</author>
            <link>http://sheddingbikes.com/posts/1291926545.html</link>
            <guid>http://sheddingbikes.com/posts/1291926545.html</guid>
            <pubDate>Thu, 9 Dec 2010 12:15:45 -0800</pubDate>
            <description>
                &lt;p&gt;Just a very quick announcement that I&#39;ve put Tir 0.8 online with fixes
that make it install on OSX.  You can read the &lt;a href=&#34;http://tir.mongrel2.org/wiki?name=Install&#34;&gt;Install
Guide&lt;/a&gt; for more information.&lt;/p&gt;

&lt;p&gt;This gets rid of the luauuid requirement, which really only worked on
Linux anyway, and falls back to luaposix 5.1.2 since 5.1.7 doesn&#39;t
compile on OSX.  If you installed Tir before you probably want to do:&lt;/p&gt;

&lt;pre&gt;
sudo luarocks remove tir
sudo luarocks remove luaposix
&lt;/pre&gt;

&lt;p&gt;To make sure you&#39;ve cleaned it out.&lt;/p&gt;

            </description>
        </item>
    
        <item>
            <title>Tir 0.6 Up, With Background Task Goodies</title>
            <author>Zed A. Shaw</author>
            <link>http://sheddingbikes.com/posts/1291689108.html</link>
            <guid>http://sheddingbikes.com/posts/1291689108.html</guid>
            <pubDate>Mon, 6 Dec 2010 18:18:06 -0800</pubDate>
            <description>
                &lt;p&gt;I just uploaded the latest &lt;a href=&#34;http://tir.mongrel2.org&#34;&gt;Tir 0.6&lt;/a&gt; for
everyone.  This version has everything refactored into multiple modules,
extensive unit testing, and built-in very easy to use background tasks.
If you want to install it then follow the &lt;a href=&#34;http://tir.mongrel2.org/wiki?name=Install&#34;&gt;Tir Install&lt;/a&gt; guide to get it running.&lt;/p&gt;

&lt;h1&gt;Built-in Background Tasks&lt;/h1&gt;

&lt;p&gt;Over on &lt;a href=&#34;http://hype.la&#34;&gt;Hype.la&lt;/a&gt; people can upload their pictures,
which is great, except they usually want to upload monster photos that
need to be scaled.  There&#39;s also things like search indexing, updating
their static ads lists, and tons of stuff that really can just be don in
a background task rather than hold up the browser.&lt;/p&gt;

&lt;p&gt;Tir uses &lt;a href=&#34;http://zeromq.org&#34;&gt;ZeroMQ&lt;/a&gt; so I figured, shouldn&#39;t be too hard
to make a nice little &#34;background task&#34; API.  For those not familiar
with the concept, a background task is basically a process you start
that receives some kind of RPC to do work.  You use these to offload
long running processes like some of the stuff I mention above.&lt;/p&gt;

            </description>
        </item>
    
        <item>
            <title>Yearly ZedShaw.com Reinvention/2011</title>
            <author>Zed A. Shaw</author>
            <link>http://sheddingbikes.com/posts/1291498004.html</link>
            <guid>http://sheddingbikes.com/posts/1291498004.html</guid>
            <pubDate>Sat, 4 Dec 2010 13:14:33 -0800</pubDate>
            <description>
                &lt;p&gt;&lt;em&gt;tl;dr&lt;/em&gt; ZedShaw.com will change to audio only, so move your RSS feed to
&lt;a href=&#34;http://sheddingbikes.com/feed.xml&#34;&gt;here&lt;/a&gt; or &lt;a href=&#34;http://oppugn.us/feed.xml&#34;&gt;oppugn&#39;s
feed&lt;/a&gt; for my rants.&lt;/p&gt;

&lt;p&gt;I like to change up my blog about once every year or so, just to keep
with the spirit of the internet and to explore new ideas.  Last year I
decided that I want to branch my &lt;a href=&#34;http://zedshaw.com&#34;&gt;ZedShaw.com&lt;/a&gt; blog
out into a set of other blogs that covered topics I was interested in.
This worked great and now people know they can get technical essays from
here, and rants from &lt;a href=&#34;http://oppugn.us&#34;&gt;oppugn.us&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Well, I&#39;m feeling the itch again, so I&#39;m going to change up ZedShaw.com
to match a new &lt;em&gt;music&lt;/em&gt; related idea, while leaving
&lt;a href=&#34;http://sheddingbikes.com&#34;&gt;sheddingbikes.com&lt;/a&gt; and
&lt;a href=&#34;http://oppugn.us&#34;&gt;oppugn.us&lt;/a&gt; alone.  I&#39;m going to basically adopt the
challenge of turning ZedShaw.com into a &#34;No Writing Zone&#34;.  The only
thing I&#39;ll post there is audio files, maybe pictures.  All the writing
will be done on my other sites.&lt;/p&gt;

&lt;p&gt;What this means for all of you is, &lt;em&gt;if you are following the RSS feed on ZedShaw.com then it&#39;s time to move!&lt;/em&gt;.  &lt;/p&gt;

            </description>
        </item>
    
        <item>
            <title>Tir Web Framework Officially Up</title>
            <author>Zed A. Shaw</author>
            <link>http://sheddingbikes.com/posts/1291412302.html</link>
            <guid>http://sheddingbikes.com/posts/1291412302.html</guid>
            <pubDate>Fri, 3 Dec 2010 13:26:05 -0800</pubDate>
            <description>
                &lt;p&gt;This is a quick post announcing that I finally setup the &lt;a href=&#34;http://tir.mongrel2.org&#34;&gt;Tir Web
Framework Site&lt;/a&gt; at
&lt;a href=&#34;http://tir.mongrel2.org&#34;&gt;http://tir.mongrel2.org&lt;/a&gt;.  There you will find:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://tir.mongrel2.org/wiki?name=Install&#34;&gt;Install instructions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://tir.mongrel2.org/wiki?name=GettingStarted&#34;&gt;Getting Started guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://tir.mongrel2.org/wiki?name=ContributorInstructions&#34;&gt;Contributor Instructions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Downloads for source, luarocks, example code.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I spent the last month crafting Tir at the same time that I worked on my
latest side project &lt;a href=&#34;http://hype.la&#34;&gt;Hype.la&lt;/a&gt;.  During the development I
came up with a way to have all your cakes and eat it too.  You can have
coroutine based handlers, stateless, and evented, and mix and match them
in the same application.&lt;/p&gt;

&lt;p&gt;I found that this &#34;State Agnostic&#34; approach meant that I could use
whatever worked best for each interface.  I&#39;ll go more into it later
when I talk about &lt;a href=&#34;http://hype.la&#34;&gt;Hype.la&lt;/a&gt; more and show how I used the
different state styles to make the application.&lt;/p&gt;

            </description>
        </item>
    

    </channel>
</rss>
