<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><description>Personal blog of Bill Casarin. I write code.</description><title>Bill Casarin</title><generator>Tumblr (3.0; @jackbox55)</generator><link>https://blog.jb55.com/</link><item><title>Sending commands from vim to a separate tmux pane</title><description>&lt;p&gt;Sometimes I&amp;rsquo;d rather send a command to be executed on a separate shell than from inside vim. Here&amp;rsquo;s how you do it:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;mkfifo /tmp/cmds&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Now in one of your tmux panes run:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;while :; do bash &amp;lt; /tmp/cmds &amp;amp;&amp;amp; echo "== OK =="; done&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Now make a vim mapping:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;map &amp;lt;F4&amp;gt; :exe '!echo "cd ' . getcwd() . ' &amp;amp;&amp;amp; make" &amp;gt; /tmp/cmds'&amp;lt;CR&amp;gt;:redraw&amp;lt;CR&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This simply sends a make command to the other pane.&lt;/p&gt;

&lt;p&gt;Press F4 and watch it go!&lt;/p&gt;

&lt;p&gt;&lt;img src="http://jb55.com/img/commands.png" style="width: 769px; height: 494px"/&gt;&lt;/p&gt;

&lt;p&gt;This is great for build system which take a long time and you dont want to block your current vim session.&lt;/p&gt;</description><link>https://blog.jb55.com/post/29072842980</link><guid>https://blog.jb55.com/post/29072842980</guid><pubDate>Thu, 09 Aug 2012 16:39:00 -0400</pubDate></item><item><title>Haskell curry second argument</title><description>&lt;p&gt;Two ways&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;(`map` [1,2,3,4]) $ \n -&amp;gt; ...
flip map [1,2,3,4] $ \n -&amp;gt; ...
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Hardest part is deciding which one to use&lt;/p&gt;</description><link>https://blog.jb55.com/post/27484268014</link><guid>https://blog.jb55.com/post/27484268014</guid><pubDate>Wed, 18 Jul 2012 11:21:01 -0400</pubDate></item><item><title>Vim indent text objects for Coffeescript and Python</title><description>&lt;p&gt;Do you write a lot of Coffeescript, Python, Jade templates, Haskell, or any other language that uses indentation? If you are like me, you may be sad to find out that your trusty &lt;code&gt;ciB&lt;/code&gt; does not work anymore in Vim. &lt;code&gt;ciB&lt;/code&gt; is &amp;ldquo;change inside block&amp;rdquo; which only matches inside () and {}. This is no good when we are dealing with languages like Python that use indentation instead of curly braces for block structures.&lt;/p&gt;

&lt;p&gt;Luckily there is a plugin that adds this functionality:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.vim.org/scripts/script.php?script_id=3037"&gt;vim-indent-object&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once you install this you can use &lt;code&gt;vii&lt;/code&gt; or &lt;code&gt;vai&lt;/code&gt; to see how it works. Use &lt;code&gt;cii&lt;/code&gt; to change an entire indentation block.&lt;/p&gt;

&lt;p&gt;Here&amp;rsquo;s a quick screencast to see how it works:&lt;/p&gt;

&lt;iframe src="http://www.screenr.com/embed/B8U8" width="650" height="396" frameborder="0"&gt;&lt;/iframe&gt;

&lt;p&gt;Good luck and happy Vimming!&lt;/p&gt;</description><link>https://blog.jb55.com/post/19921717365</link><guid>https://blog.jb55.com/post/19921717365</guid><pubDate>Sun, 25 Mar 2012 19:12:00 -0400</pubDate><category>indent</category><category>vim</category><category>coffeescript</category></item><item><title>Iteratee Hello World</title><description>&lt;p&gt;This entire blog post is in literate Haskell, you can clone it from the gist to try it out:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;git clone git://gist.github.com/1571444.git iteratee-hello-world
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This is the simplest example of an Iteratee that I could think of. It simply reads from an stdin/file Enumerator and spits it out to an stdout Iteratee. The stream is transformed to uppercase characters using an Enumeratee.&lt;/p&gt;

&lt;script src="https://gist.github.com/1571444.js?file=Iteratee.lhs"&gt;&lt;/script&gt;

&lt;p&gt;I put this together to figure out how to apply the Iteratee abstraction in everyday situations, hopefully this will serve as a jump off point for people looking to learn about Iteratees.&lt;/p&gt;</description><link>https://blog.jb55.com/post/15405054081</link><guid>https://blog.jb55.com/post/15405054081</guid><pubDate>Fri, 06 Jan 2012 13:00:00 -0500</pubDate></item><item><title>Using Haskell's QuickCheck to generate random test data</title><description>&lt;p&gt;QuickCheck is a random testing library written in Haskell and is typically used for fuzz testing code. The main typeclass provided by QuickCheck is the &lt;code&gt;Arbitrary&lt;/code&gt; typeclass. When you make one of your data types an instance of this typeclass (by implementing the &lt;code&gt;arbitrary&lt;/code&gt; function) you can generate random samples of those data types&lt;/p&gt;

&lt;p&gt;I recently needed a way to generate a large number of Serial numbers of a specific format, QuickCheck turned out to be perfect for this.&lt;/p&gt;

&lt;p&gt;I started out by creating a new data type representing my serial number:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;data Serial = Serial String Int
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The &lt;code&gt;String&lt;/code&gt; represents a random prefix (eg. &amp;ldquo;ABC&amp;rdquo;), and the &lt;code&gt;Int&lt;/code&gt; represents some number which could represent the order number, etc. Implementing &lt;code&gt;show&lt;/code&gt; allows me to easily convert this data type to a string:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;instance Show Serial where
  show (Serial prefix number) = prefix ++ show number
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now to generate &lt;code&gt;Serial&lt;/code&gt;s we implement &lt;code&gt;Arbitrary&lt;/code&gt; for our &lt;code&gt;Serial&lt;/code&gt; type:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;instance Arbitrary Serial where
  arbitrary = do
    prefix &amp;lt;- vectorOf 3 $ elements ['A'..'Z']
    number &amp;lt;- choose (10000, 99999)
    return $ Serial prefix number
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The magic happens during the call to &lt;code&gt;arbitrary&lt;/code&gt;. &lt;code&gt;arbitrary&lt;/code&gt; returns the type &lt;code&gt;Gen Serial&lt;/code&gt; which represents a computation that generates a random &lt;code&gt;Serial&lt;/code&gt;. &lt;code&gt;Gen&lt;/code&gt; is a Monad, so that allows us to use &lt;code&gt;do&lt;/code&gt; notation to build our generating computation.&lt;/p&gt;

&lt;p&gt;The first line in our do block is a call to &lt;code&gt;elements&lt;/code&gt;, which chooses a single element out of a list of elements. The &lt;code&gt;vectorOf 3&lt;/code&gt; says to apply this generator 3 times and assign it to &lt;code&gt;prefix&lt;/code&gt;. As you can probably guess by now this generates a random string of length 3 with random characters between &amp;lsquo;A&amp;rsquo; and 'Z&amp;rsquo;.&lt;/p&gt;

&lt;p&gt;The second line in the do block is a call to &lt;code&gt;choose&lt;/code&gt; which chooses a single value between a range of values.&lt;/p&gt;

&lt;p&gt;Finally we return our serial with the generated prefix and number.&lt;/p&gt;

&lt;p&gt;We can now generate a list of random serials by using &lt;code&gt;unGen&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;serialGen :: Int -&amp;gt; [Serial]
serialGen seed = unGen arbitrary (mkStdGen seed) 9999999
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Some data from this function:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;LWQ74236
IZK97057
MTT84566
FBL91704
OUX61740
GFX20409
SGO76263
SXE22215
JNH61151
ZQY93980
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Naturally you can apply this method to any data type you can think of, the Gen Monad is a great DSL for generating random test data!&lt;/p&gt;

&lt;p&gt;The full program:&lt;/p&gt;

&lt;script src="https://gist.github.com/1008001.js?file=Serial.hs"&gt;&lt;/script&gt;</description><link>https://blog.jb55.com/post/6180072300</link><guid>https://blog.jb55.com/post/6180072300</guid><pubDate>Sat, 04 Jun 2011 12:53:00 -0400</pubDate><category>haskell</category><category>dsl</category><category>quickcheck</category></item><item><title>F# CSV Parsing with FParsec</title><description>&lt;p&gt;I needed a .NET CSV parser for work, and since I don&amp;rsquo;t trust most .NET code I find online I wrote one in F# with FParsec!&lt;/p&gt;

&lt;p&gt;This handles both quoted &lt;em&gt;and&lt;/em&gt; unquoted cells. It even supports escaped characters (including commas)!&lt;/p&gt;

&lt;script src="https://gist.github.com/897600.js?file=parseCsv.fs"&gt;&lt;/script&gt;

&lt;p&gt;For example,&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;CODE, EN, FR
HOME_DESCRIPTION, Hello\, welcome to our site!, Bonjour\, bienvenue sur notre site
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Will parse to:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;[
  ["CODE", "EN", "FR"],
  ["HOME_DESCRIPTION", "Hello, welcome to our site!", "Bonjour, bienvenue sur notre site"]
]
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;You can even mix them if you want:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;"CODE", "EN", "FR"
HOME_DESCRIPTION, Hello\, welcome to our site!, "Bonjour, bienvenue sur notre site"
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This will parse to the same thing&lt;/p&gt;

&lt;p&gt;It even handles cases where there are quotes inside unquoted cells!&lt;/p&gt;

&lt;p&gt;Since we&amp;rsquo;re using FParsec, if the parse fails it will tell you exactly where and why. Here is an excerpt from one of my test cases that fails when there&amp;rsquo;s a comma missing:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Error in Ln: 4 Col: 19
SOME_CODE,"Herp\,"Derp
                  ^
Expecting: end of file, newline or ','
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Have fun!&lt;/p&gt;</description><link>https://blog.jb55.com/post/4247991875</link><guid>https://blog.jb55.com/post/4247991875</guid><pubDate>Thu, 31 Mar 2011 21:46:00 -0400</pubDate></item><item><title>Irssi notifications with notify.io</title><description>&lt;p&gt;Ever wanted more powerful notification capabilities inside of
&lt;a href="http://irssi.org"&gt;&lt;code&gt;irssi&lt;/code&gt;&lt;/a&gt;?&lt;/p&gt;

&lt;p&gt;If you use &lt;code&gt;irssi&lt;/code&gt; and you&amp;rsquo;re like me, you might have a setup similar to
this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;irssi&lt;/code&gt; on home desktop or server inside of a screen session&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is an ideal setup for me since it allows me to shell into my box at home
from various locations. A lot of the time the IRC ports are blocked so &lt;code&gt;ssh&lt;/code&gt; +
&lt;code&gt;screen&lt;/code&gt; + &lt;code&gt;irssi&lt;/code&gt; gets around that.&lt;/p&gt;

&lt;p&gt;One things sorely lacking is message notifications, specifically when your name
is mentioned in the channel or when you receive a private message. There are a
few plugins that will email you alerts when you&amp;rsquo;re away but what I was really
looking for was growl notifications.&lt;/p&gt;

&lt;p&gt;The best service for doing this is something called
&lt;a href="http://notify.io"&gt;notify.io&lt;/a&gt;. Not only will it forward growl notifications to
desktop clients, but you also have the option to send prowl notifications to your iOS
devices, jabber, sms, and email.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://jb55.com/img/notify-io.png" alt="How irssi + notify.io works" title="How irssi + notify.io works"/&gt;&lt;/p&gt;

&lt;p&gt;I&amp;rsquo;ve put together a small irssi script that does just this! &lt;code&gt;notify-io.pl&lt;/code&gt;
listens for private messages and channel mentions, and forwards them to your
notify.io account!&lt;/p&gt;

&lt;h3&gt;Installation&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;The first thing you&amp;rsquo;ll need to do is get an account at
&lt;a href="http://notify.io"&gt;notify.io&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Download the &lt;code&gt;notify-io.pl&lt;/code&gt; script from the &lt;a href="https://github.com/jb55/irssi-notify-io"&gt;github
page&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Install the script to &lt;code&gt;~/.irssi/scripts/autorun&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run the command &lt;code&gt;/set notify_io_api_key &amp;lt;key&amp;gt;&lt;/code&gt; where &lt;code&gt;&amp;lt;key&amp;gt;&lt;/code&gt; is your
notify.io api key (retrieved from the settings panel on the notify.io website)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run the command &lt;code&gt;/set notify_io_email &amp;lt;email&amp;gt;&lt;/code&gt; with the notify.io email
registered with the account&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That&amp;rsquo;s it! Enjoy.&lt;/p&gt;</description><link>https://blog.jb55.com/post/2063779132</link><guid>https://blog.jb55.com/post/2063779132</guid><pubDate>Wed, 01 Dec 2010 17:49:00 -0500</pubDate><category>irssi</category><category>perl</category><category>growl</category><category>notify.io</category></item><item><title>Static Factorial in Clay</title><description>&lt;p&gt;Meta programming in Clay is very intuitive:&lt;/p&gt;

&lt;script src="https://gist.github.com/717637.js?file=fact.clay"&gt;&lt;/script&gt;

&lt;p&gt;Here&amp;rsquo;s the same thing in C++:&lt;/p&gt;

&lt;script src="https://gist.github.com/717637.js?file=fact.cpp"&gt;&lt;/script&gt;

&lt;p&gt;The cool thing about this is that you can have both runtime and compile time (static) overloads at the same time.&lt;/p&gt;

&lt;p&gt;Have a function that you can turn into a compile time operation? Simply add an overload that takes a static value and do your custom logic.&lt;/p&gt;

&lt;p&gt;Compile-time meta programming is truly a first class citizen in Clay.&lt;/p&gt;

&lt;p&gt;Thanks to &lt;code&gt;qx&lt;/code&gt; on #clay for showing me how to do this&lt;/p&gt;</description><link>https://blog.jb55.com/post/1699624812</link><guid>https://blog.jb55.com/post/1699624812</guid><pubDate>Sat, 27 Nov 2010 01:44:00 -0500</pubDate><category>clay</category><category>statics</category></item><item><title>Print-friendly lesswrong Sequences</title><description>&lt;p&gt;I have started to convert &lt;em&gt;The Sequences&lt;/em&gt; over at &lt;a href="http://lesswrong.com"&gt;lesswrong.com&lt;/a&gt; to print and ebook ready formats such as epub and PDF. You can get them on my github page:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/jb55/lesswrong-print"&gt;https://github.com/jb55/lesswrong-print&lt;/a&gt;&lt;/p&gt;</description><link>https://blog.jb55.com/post/1653088542</link><guid>https://blog.jb55.com/post/1653088542</guid><pubDate>Mon, 22 Nov 2010 19:28:52 -0500</pubDate></item><item><title>Interesting Minecraft-clone Projects</title><description>&lt;p&gt;I&amp;rsquo;ve been following Minecraft development for awhile, and I&amp;rsquo;ve
always wondered what future Minecraft games might look like.
Surprisingly, there already seems to be a couple working clones and
bunch more in development. I wouldn&amp;rsquo;t be surprised if major game
development are starting to work on their own Minecraft games as
well, who knows!&lt;/p&gt;

&lt;h3&gt;Manic Digger&lt;/h3&gt;

&lt;p&gt;&lt;img src="http://static.jb55.com/img/manic1t.png" alt="Manic Digger"/&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://manicdigger.sourceforge.net/news/" title="Manic Digger"&gt;Manic Digger&lt;/a&gt;
is a working Minecraft clone written in C# using (I&amp;rsquo;m assuming)
XNA. It keeps the blocky style from the original minecraft and some
new features. According to their
&lt;a href="http://manicdigger.sourceforge.net/wiki/index.php/Main_Page" title="wiki"&gt;wiki&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;New blocks (Natrium, Platinum, Lead to name a few)&lt;/li&gt;
&lt;li&gt;New monsters (Dragons, imps, giants!)&lt;/li&gt;
&lt;li&gt;Monster editor&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It&amp;rsquo;s also open source, if you&amp;rsquo;re the kind of guy who likes hacking
on open source C# projects. It only works in Windows at the
moment.&lt;/p&gt;

&lt;h3&gt;Meincraft&lt;/h3&gt;

&lt;p&gt;&lt;img src="http://static.jb55.com/img/meinkraft.jpg" alt="Meinkraft"/&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.opserver.de/ubb7/ubbthreads.php?ubb=showflat&amp;amp;Number=342726&amp;amp;page=1"&gt;meinKraft&lt;/a&gt;
is a small Minecraft-like tech demo written in C. He says the
source is included but I didn&amp;rsquo;t see it in the zip.&lt;/p&gt;

&lt;h3&gt;RogueMiner&lt;/h3&gt;

&lt;p&gt;A C++ Minecraft project! This one looks interesting.
&lt;a href="http://ncarlson.com/" title="RogueMiner"&gt;RogueMiner&lt;/a&gt; looks to be a
Minecraft clone built from scratch using SDL and OpenGL.&lt;/p&gt;

&lt;h3&gt;Ogre3D projects&lt;/h3&gt;

&lt;p&gt;There have been some interesting discussions on the Ogre3D forums
about new efficient Minecraft implementations. A person named
&lt;em&gt;Kojack&lt;/em&gt; put together a pretty cool tech demo using various shader
implementations:&lt;/p&gt;

&lt;p&gt;&lt;img src="http://static.jb55.com/img/kojack1t.png" alt="image"/&gt;
&lt;img src="http://static.jb55.com/img/kojack2t.png" alt="image"/&gt;
&lt;img src="http://static.jb55.com/img/kojack3t.png" alt="image"/&gt;
&lt;img src="http://static.jb55.com/img/kojack4t.png" alt="image"/&gt;&lt;/p&gt;

&lt;p&gt;I highly recommend you read his
&lt;a href="http://ogre3d.org/forums/viewtopic.php?f=2&amp;amp;t=60381&amp;amp;p=405688" title="posts"&gt;posts&lt;/a&gt; on
the Ogre3D forums if you&amp;rsquo;re interested in this stuff.&lt;/p&gt;

&lt;h3&gt;Cubelands&lt;/h3&gt;

&lt;p&gt;Can&amp;rsquo;t say much about this one, it looks to be the most polished
Minecraft clone to date. It&amp;rsquo;s currently in
&lt;a href="http://www.cubelands.com/"&gt;private beta&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Future&lt;/h3&gt;

&lt;p&gt;Most of the clones I found seem to be trying to emulate Minecraft
as close as possible. While this is great and all, what I&amp;rsquo;d really
like to see in future Minecraft titles are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://static.jb55.com/img/cavecv.jpg"&gt;More&lt;/a&gt; &lt;a href="http://static.jb55.com/img/lavac.jpg"&gt;realistic&lt;/a&gt;, immersive gameplay&lt;/li&gt;
&lt;li&gt;MMO?&lt;/li&gt;
&lt;li&gt;Infinite depth, harder difficulty the further down you go.&lt;/li&gt;
&lt;li&gt;Physics?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There&amp;rsquo;s so many things that you could do in a game like this, I
look forward to future projects. I may even take a stab at it.&lt;/p&gt;</description><link>https://blog.jb55.com/post/1302107742</link><guid>https://blog.jb55.com/post/1302107742</guid><pubDate>Tue, 12 Oct 2010 20:10:00 -0400</pubDate><category>minecraft</category></item><item><title>Stuxnet Dossier</title><description>&lt;p&gt;Symantec has released a breakdown of the Stuxnet worm, you can read it here: &lt;a title="goo.gl/fkXF" href="http://goo.gl/fkXF"&gt;goo.gl/fkXF&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Some interesting quotes:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt; If this value is equal to 19790509 the threat will exit. This is thought to be an infection marker or a “do not infect” marker. If this is set correctly infection will not occur. The value appears to be a date of May 9, 1979. While on May 9, 1979 a variety of historical events occured, according to Wikipedia “Habib Elghanian was executed by a firing squad in Tehran sending shock waves through the closely knit Iranian Jewish community. He was the first Jew and one of the first civilians to be executed by the new Islamic government. This prompted the mass exodus of the once 100,000 member strong Jewish community of Iran which continues to this day.” Symantec cautions readers on drawing any attribution conclusions. Attackers would have the natural desire to implicate another party.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
&lt;p&gt; In the driver file, the project path b:\myrtus\src\objfre_w2k_x86\i386 \guava.pdb was not removed.&lt;/p&gt;
&lt;p&gt;Guavas are plants in the myrtle (myrtus) family genus. In addition, according to Wikipedia, “Esther was originally named Hadassah. Hadassah means ‘myrtle’ in Hebrew.” Esther learned of a plot to assassinate the king and “told the king of Haman’s plan to massacre all Jews in the Persian Empire&amp;hellip;The Jews went on to kill only their would- be executioners.” Symantec cautions readers on drawing any attribution conclusions. Attackers would have the natural desire to implicate another party.&lt;/p&gt;
&lt;/blockquote&gt;</description><link>https://blog.jb55.com/post/1226576819</link><guid>https://blog.jb55.com/post/1226576819</guid><pubDate>Sat, 02 Oct 2010 02:30:00 -0400</pubDate></item><item><title>Gists on Tumblr?</title><description>&lt;p&gt;Looks like it works!&lt;/p&gt;
&lt;script src="http://gist.github.com/537010.js?file=gistfile1.cpp"&gt;&lt;/script&gt;</description><link>https://blog.jb55.com/post/1169883663</link><guid>https://blog.jb55.com/post/1169883663</guid><pubDate>Wed, 22 Sep 2010 20:18:57 -0400</pubDate></item><item><title>Hello World</title><description>&lt;p&gt;This is my blag&lt;/p&gt;</description><link>https://blog.jb55.com/post/1127617173</link><guid>https://blog.jb55.com/post/1127617173</guid><pubDate>Wed, 15 Sep 2010 15:23:41 -0400</pubDate></item></channel></rss>
