<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title>Paul Tarjan's Blog</title>
  <link href="http://blog.paulisageek.com/atom.xml" rel="self"/>
  <link href="http://blog.paulisageek.com/"/>
  <updated>2010-12-16T14:39:51-08:00</updated>
  <id>http://blog.paulisageek.com/atom.xml</id>
  <author>
    <name>Paul Tarjan</name>
    <email>blog@paulisageek.com</email>
  </author>
  
  <entry>
    <title>Facebook Registration Tool</title>
    <link href="http://blog.paulisageek.com/2010/12/registration-tool.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2010/12/registration-tool.html" />
    <updated>2010-12-16T00:00:00-08:00</updated>
    <published>2010-12-16T00:00:00-08:00</published>
    <id>http://blog.paulisageek.com/2010/12/registration-tool</id>
    <content type="html">&lt;p&gt;&lt;em&gt;Republished from &lt;a href='http://developers.facebook.com/blog/post/440'&gt;Facebook Developer&amp;#8217;s Blog&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Today we&amp;#8217;re launching a new &lt;a href='http://www.facebook.com/about/login'&gt;registration tool&lt;/a&gt; that gives website owners the ability to offer quick, easy and social options for sign-up.&lt;/p&gt;

&lt;p&gt;It is an excellent alternative to using &lt;a href='http://developers.facebook.com/docs/guides/web#login'&gt;Facebook Login (formerly Facebook Connect)&lt;/a&gt; when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;you want to provide an option for users without Facebook accounts&lt;/li&gt;

&lt;li&gt;your site needs additional information that Facebook doesn&amp;#8217;t provide&lt;/li&gt;

&lt;li&gt;a traditional HTML form suits your site more&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By minimizing the friction associated with signing up for a new account and making it easy for people to bring their friends with them, we&amp;#8217;ve seen that people are more likely to complete the sign up process, stay on sites longer, share more content, and come back more often. For example, in beta tests with &lt;a href='https://friendfeed.com/account/create?formonly=1'&gt;FriendFeed&lt;/a&gt;, Facebook sign ups increased 300%.&lt;/p&gt;

&lt;p&gt;&lt;img src='http://developers.facebook.com/attachment/registration_tool_blog_example.png' alt='' /&gt;&lt;/p&gt;

&lt;h2 id='how_it_works'&gt;How it works&lt;/h2&gt;

&lt;p&gt;The &lt;a href='http://developers.facebook.com/docs/user_registration'&gt;registration tool&lt;/a&gt; is an iframe that websites can add with just one line of code, and customize to request the specific fields required to create an account. When a user is logged into Facebook and arrives at the registration tool on a website, they&amp;#8217;ll see that the form is prefilled with the relevant information he or she has already shared on their Facebook profile. Users can see the specific information the site is requesting of them, giving them more control to decide whether to sign up.&lt;/p&gt;

&lt;p&gt;The site can request information stored on Facebook (e.g., name, verified email address, current location, etc.) or custom information (e.g., text fields, checkboxes, dropdown menus, security checks, typeaheads, etc.). Users can decide whether to share their information with the site by clicking &amp;#8220;Register,&amp;#8221; or if a Facebook account isn&amp;#8217;t required by the site, select an option to fill out the form manually. Because the tool works through an iframe, no data is shared with the website until the user clicks &amp;#8220;Register.&amp;#8221;&lt;/p&gt;

&lt;p&gt;When a user registers for the site with their Facebook account (similar to Facebook Login), the site is given permission to access the user&amp;#8217;s basic information on Facebook in addition to the data presented in the form, and in turn can provide the user with a personalized and social experience.&lt;/p&gt;

&lt;h2 id='getting_started'&gt;Getting started&lt;/h2&gt;

&lt;p&gt;To integrate the registration tool, simply add the iframe or XFBML to your site:&lt;/p&gt;

&lt;p&gt;Using iframe:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;iframe src=&amp;quot;http://www.facebook.com/plugins/registration.php?
             client_id=113869198637480&amp;amp;
             redirect_uri=http%3A%2F%2Fdevelopers.facebook.com%2Ftools%2Fecho%2F&amp;amp;
             fields=name,birthday,gender,location,email&amp;quot; 
        scrolling=&amp;quot;auto&amp;quot; 
        frameborder=&amp;quot;no&amp;quot; 
        style=&amp;quot;border:none;&amp;quot; 
        allowTransparency=&amp;quot;true&amp;quot;
        width=&amp;quot;100%&amp;quot; 
        height=&amp;quot;310px&amp;quot;&amp;gt;
&amp;lt;/iframe&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The &lt;code&gt;redirect-uri&lt;/code&gt; should point to the page which will process your &lt;code&gt;signed_request&lt;/code&gt;. You can customize the &lt;code&gt;fields&lt;/code&gt; attribute to suit your needs. See the &lt;a href='http://developers.facebook.com/docs/user_registration#named_fields'&gt;docs&lt;/a&gt; for a list of valid fields.&lt;/p&gt;

&lt;p&gt;Using XFBML:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;fb:registration 
  fields=&amp;quot;name,birthday,gender,location,email&amp;quot; 
  redirect-uri=&amp;quot;http://developers.facebook.com/tools/echo/&amp;quot;&amp;gt;
&amp;lt;/fb:registration&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The &lt;code&gt;redirect-uri&lt;/code&gt; and &lt;code&gt;fields&lt;/code&gt; are identical to above. You must use your own &lt;a href='http://www.facebook.com/developers/'&gt;app_id&lt;/a&gt; for the &lt;code&gt;redirect-uri&lt;/code&gt; to be on your domain.&lt;/p&gt;

&lt;p&gt;For more details on getting started with your implementation, please visit our &lt;a href='http://developers.facebook.com/docs/user_registration'&gt;technical documentation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We hope you&amp;#8217;ll try it out and let us know what you think.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Paul, an engineer on the Platform team, will register for your site if you use this tool. 1 more user!&lt;/em&gt;&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>Wisconsin Hackathon 2010</title>
    <link href="http://blog.paulisageek.com/2010/09/wisconsin-hackathon.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2010/09/wisconsin-hackathon.html" />
    <updated>2010-09-28T00:00:00-07:00</updated>
    <published>2010-09-28T00:00:00-07:00</published>
    <id>http://blog.paulisageek.com/2010/09/wisconsin-hackathon</id>
    <content type="html">&lt;style&gt;
#post_content img {
  width: 600px;
  margin: auto;
  display: block;
}
&lt;/style&gt;
&lt;p&gt;Our second &lt;a href='http://www.facebook.com/camphackathon'&gt;Camp Hackathon&lt;/a&gt; was at the University of Wisconsin. Amidst all the wonderful cheese and midwest manners, we found a bunch of great hackers. This time, it was a 12 hour hackathon so every single one of the Facebook engineers stayed up the whole time! No cheating and swapping out for a little shut-eye. Even the &lt;a href='http://www.facebook.com/adamparkzer'&gt;videographer&lt;/a&gt; from the student paper stayed the whole time, filming away for a wonderful &lt;a href='http://badgerherald.com/news/2010/09/19/uw_students_create_h.php'&gt;front-page article&lt;/a&gt; they did on our little Hackathon.&lt;/p&gt;

&lt;p&gt;&lt;img src='http://sphotos.ak.fbcdn.net/hphotos-ak-ash2/hs335.ash2/61570_129446143771439_114869201895800_148590_1931986_n.jpg' alt='Facebook Balls' /&gt;&lt;/p&gt;

&lt;h2 id='best_product_idea__rex'&gt;&lt;a href='http://www.facebook.com/photo.php?pid=148622&amp;amp;id=114869201895800&amp;amp;ref=fbx_album'&gt;Best Product Idea&lt;/a&gt; - REX&lt;/h2&gt;

&lt;p&gt;This won the &amp;#8220;If you want to drop out of school &amp;#8211; not that we recommend that at all &amp;#8211; this could work&amp;#8221; category. It recommends music based on what your social network is listening to.&lt;/p&gt;

&lt;p&gt;&lt;a href='http://www.facebook.com/event.php?eid=150184801660041&amp;amp;v=wall&amp;amp;story_fbid=109685139090671'&gt;&lt;img src='https://mywebspace.wisc.edu/bjfritz2/public/RexScreenshot.png' alt='Best Product Idea' /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id='best_use_of_the_keyboard__newsfeed_navigation'&gt;&lt;a href='http://www.facebook.com/photo.php?pid=148621&amp;amp;id=114869201895800'&gt;Best Use of the Keyboard&lt;/a&gt; - &lt;a href='http://dl.dropbox.com/u/4044504/Final%20Hack.user.js'&gt;NewsFeed Navigation&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;A greasemonkey script that elegantly lets you skim around your News Feed, like, comment, and then keep browsing, all without a mouse.&lt;/p&gt;

&lt;p&gt;&lt;a href='http://www.facebook.com/event.php?eid=150184801660041&amp;amp;v=wall&amp;amp;story_fbid=161038120578860'&gt;&lt;img src='http://dl.dropbox.com/u/4044504/screenshot.png' alt='Best Use of the Keyboard' /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id='best_totally_crazy_hack__face_battle'&gt;&lt;a href='http://www.facebook.com/photo.php?pid=148619&amp;amp;id=114869201895800'&gt;Best Totally Crazy Hack&lt;/a&gt; - Face Battle&lt;/h2&gt;

&lt;p&gt;A Java app, that takes a photo of your face, converts it to map tiles (desert, grassland, water, etc) and then plays a tank battle across your face.&lt;/p&gt;

&lt;p&gt;We didn&amp;#8217;t get a screenshot, so here is an action shot of his hacking setup.&lt;/p&gt;

&lt;p&gt;&lt;img src='http://sphotos.ak.fbcdn.net/hphotos-ak-snc4/hs652.snc4/61245_129446027104784_114869201895800_148587_3470480_n.jpg' alt='Best Totally Crazy Hack' /&gt;&lt;/p&gt;

&lt;h2 id='best_noncrazy_solo_hack__track_your_imdb_250'&gt;&lt;a href='http://www.facebook.com/photo.php?pid=148620&amp;amp;id=114869201895800'&gt;Best Non-Crazy Solo Hack&lt;/a&gt; - Track your IMDb 250&lt;/h2&gt;

&lt;p&gt;This web application allows you to manage and watch all the top 250 movies on the IMDb 250 list. This list represents the best movies made in the last 100 years and is a great start for movie enthusiasts and movie buffs like me. This app crawls through IMDb, fetches the list and other metadata, and allows the user to automatically add movies to their Netflix disc queue. This feature was implemented using Netflix RESTful API.&lt;/p&gt;

&lt;p&gt;&lt;a href='http://www.facebook.com/event.php?eid=150184801660041&amp;amp;v=wall&amp;amp;story_fbid=132131106834689&amp;amp;ref=mf'&gt;&lt;img src='https://mywebspace.wisc.edu/pdoshi/hackathon/wd250.PNG' alt='Best Non-Crazy Solo Hack' /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id='most_practical__classmate_finder'&gt;&lt;a href='http://www.facebook.com/photo.php?pid=148617&amp;amp;id=114869201895800'&gt;Most Practical&lt;/a&gt; - &lt;a href='http://www.facebook.com/apps/application.php?id=161649433850197'&gt;Classmate Finder&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;A Facebook app that allows users to connect with their classmates in Facebook. The app requires the user to upload their class schedule and will then present the user with a list of facebook users for each of their classes.&lt;/p&gt;

&lt;p&gt;&lt;a href='http://www.facebook.com/event.php?eid=150184801660041&amp;amp;v=wall&amp;amp;story_fbid=159769494034802'&gt;&lt;img src='http://img4.imageshack.us/img4/4143/screenshot20100918at553.png' alt='Most Practical' /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id='technically_hardest_problem__video_face_tracking'&gt;&lt;a href='http://www.facebook.com/photo.php?pid=148616&amp;amp;id=114869201895800'&gt;Technically Hardest Problem&lt;/a&gt; - Video Face Tracking&lt;/h2&gt;

&lt;p&gt;Instead of tagging people in pictures, why can&amp;#8217;t you tag them in segments of images? This hack does facial detection in various segments and then prompts you tag your friends in every part of the movie. It was a little rough around the edges (as all hacks should be), but has promise.&lt;/p&gt;

&lt;p&gt;&lt;a href='http://www.facebook.com/event.php?eid=150184801660041&amp;amp;v=wall&amp;amp;story_fbid=127627770621846'&gt;&lt;img src='http://zefrosnbrick.com/freezef/Screenshot.png' alt='Technically Hardest Problem' /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id='best_mashup__hola_mundo'&gt;&lt;a href='http://www.facebook.com/photo.php?pid=148614&amp;amp;id=114869201895800'&gt;Best Mashup&lt;/a&gt; - Hola Mundo&lt;/h2&gt;

&lt;p&gt;It&amp;#8217;s a map-based application that mashes Google Maps API, Google&amp;#8217;s Translate API, Flickr API, and Yahoo News&amp;#8217; API to create a friendly postcard.&lt;/p&gt;

&lt;p&gt;&lt;a href='http://www.facebook.com/event.php?eid=150184801660041&amp;amp;v=wall&amp;amp;story_fbid=118938944826045&amp;amp;ref=mf'&gt;&lt;img src='http://mattmueller.me/postcard.png' alt='Best Mashup' /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id='first_prize__magic_grade_ball'&gt;First Prize - &lt;a href='http://crimson.scout.wisc.edu/projection/select.php'&gt;Magic Grade Ball&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;UW-Madison publishes the summary statistics of grades for every class. This hack parses in that data, and if you put in your previous grades, it can predict your future grade. I can&amp;#8217;t wait to see if it works for these students :)&lt;/p&gt;

&lt;p&gt;&lt;a href='http://www.facebook.com/event.php?eid=150184801660041&amp;amp;v=wall&amp;amp;story_fbid=161614143852275&amp;amp;ref=mf'&gt;&lt;img src='http://crimson.scout.wisc.edu/projection/screenshot.png' alt='First Prize' /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id='grand_prize__soundstroke'&gt;&lt;a href='http://www.facebook.com/photo.php?pid=148628&amp;amp;id=114869201895800&amp;amp;ref=fbx_album'&gt;Grand Prize&lt;/a&gt; - &lt;a href='http://pages.cs.wisc.edu/~mccardel/soundstroke/index.html'&gt;SoundStroke&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;A program that lets you draw on a canvas and have sound produced as you draw. The sounds you get are based on the shape of the strokes you drew, and the different colors are mixed into a &amp;#8220;sound loop&amp;#8221;. A drum machine cross with MSPaint.&lt;/p&gt;

&lt;p&gt;&lt;a href='http://www.facebook.com/event.php?eid=150184801660041&amp;amp;v=wall&amp;amp;story_fbid=152354244795148&amp;amp;ref=mf'&gt;&lt;img src='http://i.imgur.com/WrxJa.png' alt='Grand Prize' /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id='thanks'&gt;Thanks&lt;/h2&gt;

&lt;p&gt;Thank you to all of our amazing engineers &lt;a href='http://www.facebook.com/tkamenick'&gt;Tony Kamenick&lt;/a&gt;, &lt;a href='http://www.facebook.com/venkat'&gt;Venkat Venkataramani&lt;/a&gt;, &lt;a href='http://www.facebook.com/arun'&gt;Arun Vijayvergiya&lt;/a&gt;, and awesome recruiter &lt;a href='http://www.facebook.com/marcia'&gt;Marcia Velencia&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Keep Hacking!&lt;br /&gt; &lt;a href='http://www.facebook.com/paul.tarjan'&gt;Paul Tarjan&lt;/a&gt;&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>GATech Hackathon 2010</title>
    <link href="http://blog.paulisageek.com/2010/09/GATech-hackathon.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2010/09/GATech-hackathon.html" />
    <updated>2010-09-14T00:00:00-07:00</updated>
    <published>2010-09-14T00:00:00-07:00</published>
    <id>http://blog.paulisageek.com/2010/09/GATech-hackathon</id>
    <content type="html">&lt;style&gt;
#post_content img {
  width: 600px;
  margin: auto;
  display: block;
}
&lt;/style&gt;
&lt;p&gt;We just finished our first ever &lt;a href='http://www.facebook.com/camphackathon'&gt;Camp Hackathon&lt;/a&gt; at Georgia Tech. I think this is the most people I&amp;#8217;ve ever seen stay up for the whole 24 hours. Our very own &lt;a href='http://www.facebook.com/justin'&gt;Justin Mitchell&lt;/a&gt; pulled the all-nighter, and then continued on until 3am the next morning! I haven&amp;#8217;t heard from him, I hope he&amp;#8217;s still alive&amp;#8230;&lt;/p&gt;

&lt;p&gt;Here is the answer to &amp;#8220;who stayed up all night?&amp;#8221;&lt;/p&gt;

&lt;p&gt;&lt;img src='http://sphotos.ak.fbcdn.net/hphotos-ak-snc4/hs425.snc4/46863_127506340632086_114869201895800_140854_1225298_n.jpg' alt='People who stayed up all 24 hours' /&gt;&lt;/p&gt;

&lt;h2 id='viral_award__scategories'&gt;Viral Award - Scategories&lt;/h2&gt;

&lt;p&gt;As a fun twist, we said whoever could get the most likes on their post, would win a prize. After only about 50 minutes, the winners had a whopping 37 likes! What a friend-graph they have.&lt;/p&gt;

&lt;p&gt;&lt;img src='http://sphotos.ak.fbcdn.net/hphotos-ak-snc4/hs675.snc4/61563_127506783965375_114869201895800_140877_1039148_n.jpg' alt='Viral Award Winners' /&gt;&lt;/p&gt;

&lt;p&gt;They built a scategories Java app based on the course descriptions for their 8 specializations.&lt;/p&gt;

&lt;h2 id='best_video_sharing_app__virtual_and_social_collaborative_video'&gt;&lt;a href='http://www.facebook.com/photo.php?pid=140872&amp;amp;id=114869201895800'&gt;Best Video Sharing App&lt;/a&gt; - Virtual and Social Collaborative Video&lt;/h2&gt;

&lt;p&gt;A website that lets you synchronize watching videos with your friends in real-time. It was built using HTML 5 and Comet.&lt;/p&gt;

&lt;p&gt;&lt;img src='http://sphotos.ak.fbcdn.net/hphotos-ak-ash2/hs323.ash2/60370_437134094274_626134274_5018467_4520384_n.jpg' alt='Video Sharing App' /&gt;&lt;/p&gt;

&lt;h2 id='best_birthday_wishing_service__lazy_wisher'&gt;&lt;a href='http://www.facebook.com/photo.php?pid=140873&amp;amp;id=114869201895800'&gt;Best Birthday Wishing Service&lt;/a&gt; - &lt;a href='http://www.bdesouza.com/facebook/'&gt;Lazy Wisher&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;Taking slacking to whole new heights! This app will automatically ease the pain of having over 500+ &amp;#8216;friends&amp;#8217;. Just add this app and let the automatic b&amp;#8217;day wishes flow from your &amp;#8216;heart&amp;#8217; and into your &amp;#8216;friends&amp;#8217; wall. Be the &amp;#8216;friend&amp;#8217; everyone thinks you are and install this app.&lt;/p&gt;

&lt;p&gt;&lt;a href='http://www.facebook.com/posted.php?id=133073546735386&amp;amp;share_id=125197694198095&amp;amp;comments=1#s125197694198095'&gt;&lt;img src='http://www.bdesouza.com/facebook/screen.jpg' alt='Birtday Wisher' /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id='second_place__social_juke_box'&gt;&lt;a href='http://www.facebook.com/photo.php?pid=140874&amp;amp;id=114869201895800'&gt;Second Place&lt;/a&gt; - &lt;a href='http://azharb.com/sjb/'&gt;Social Juke Box&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;Social Juke Box is an application that lets you browse through music suggested by your friends to you. In the author&amp;#8217;s opinion, this is what Apple Ping should have been.&lt;/p&gt;

&lt;p&gt;&lt;a href='http://www.facebook.com/posted.php?id=133073546735386&amp;amp;share_id=107990012595937&amp;amp;comments=1#s107990012595937'&gt;&lt;img src='http://azharb.com/sjb/Untitled.jpg' alt='Social Juke Box' /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id='first_place__droistick'&gt;&lt;a href='http://www.facebook.com/photo.php?pid=140875&amp;amp;id=114869201895800'&gt;First Place&lt;/a&gt; - &lt;a href='http://edemocracy.vip.gatech.edu/~krangarajan3/Hackathon'&gt;DroiStick&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;A pair of handheld game controllers for multi player Facebook Games. This particular project implemented a ping pong game in JavaScript as a Facebook application which communicates with the clients (Android handheld device). All the interaction and motion of the game is dependent on the motion of the handheld device (similar to Wii controllers).&lt;/p&gt;

&lt;p&gt;&lt;a href='http://www.facebook.com/event.php?eid=133073546735386&amp;amp;v=wall&amp;amp;story_fbid=140711739304900'&gt;&lt;img src='http://edemocracy.vip.gatech.edu/~krangarajan3/Hackathon/Screenshot.png' alt='DroidStick' /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id='grand_prize__fblingo'&gt;&lt;a href='http://www.facebook.com/photo.php?pid=140876&amp;amp;id=114869201895800'&gt;Grand Prize&lt;/a&gt; - &lt;a href='http://www.nogoodatcoding.com/projects/facebook-transliteration-translation-greasemonkey-scripts'&gt;FB-Lingo&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;A simple greasemonkey script built ontop of Google Transliterate, that lets you type in English but post the characters in any language you want. In addition, you can translation any languages characters into their closest English sounds.&lt;/p&gt;

&lt;p&gt;&lt;a href='http://www.nogoodatcoding.com/projects/facebook-transliteration-translation-greasemonkey-scripts'&gt;&lt;img src='http://www.cc.gatech.edu/grads/t/tyadav3/fbhack/Transliteration-Screenshot.png' alt='FB-Lingo' /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id='thanks'&gt;Thanks&lt;/h2&gt;

&lt;p&gt;Thank you to all of our amazing engineers &lt;a href='http://www.facebook.com/hisham'&gt;Hisham Harik&lt;/a&gt;, &lt;a href='http://www.facebook.com/justin'&gt;Justin Mitchell&lt;/a&gt;, &lt;a href='http://www.facebook.com/Sidhu'&gt;Kiran Sidhu&lt;/a&gt;, and awesome recruiter &lt;a href='htt://www.facebook.com/ctay'&gt;Clifton Tay&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Keep Hacking!&lt;br /&gt; &lt;a href='http://www.facebook.com/paul.tarjan'&gt;Paul Tarjan&lt;/a&gt;&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>Debugging URLs with the Facebook URL Linter</title>
    <link href="http://blog.paulisageek.com/2010/06/facebook-url-linter.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2010/06/facebook-url-linter.html" />
    <updated>2010-06-10T00:00:00-07:00</updated>
    <published>2010-06-10T00:00:00-07:00</published>
    <id>http://blog.paulisageek.com/2010/06/facebook-url-linter</id>
    <content type="html">&lt;p&gt;&lt;em&gt;Republished from &lt;a href='http://developers.facebook.com/blog/post/390'&gt;Facebook Developer&amp;#8217;s Blog&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A primary design goal of the &lt;a href='http://developers.facebook.com/docs/opengraph'&gt;Open Graph protocol&lt;/a&gt; &amp;#8211; which enables any Web page to become a rich object in the social graph &amp;#8211; has been to make it simple for developers to integrate it into their Web pages. But, as with any coding, syntax errors can and do occur. To help you debug your URLs, we&amp;#8217;ve released the &lt;a href='http://developers.facebook.com/tools/lint/'&gt;Facebook URL Linter&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You can use the Facebook URL Linter with many types of URLs, in addition to Open Graph protocol pages. Try the linter on our &lt;a href='http://developers.facebook.com/tools/lint/examples/'&gt;homegrown examples&lt;/a&gt; or on &lt;a href='http://developers.facebook.com/tools/lint/?url=opengraphprotocol.org'&gt;some&lt;/a&gt; &lt;a href='http://developers.facebook.com/tools/lint/?url=http://www.imdb.com/title/tt0117500/'&gt;pages&lt;/a&gt; &lt;a href='http://developers.facebook.com/tools/lint/?url=developers.facebook.com'&gt;in&lt;/a&gt; &lt;a href='http://developers.facebook.com/tools/lint/?url=http://www.rottentomatoes.com/m/matrix/'&gt;the&lt;/a&gt; &lt;a href='http://developers.facebook.com/tools/lint/?url=blog.paulisageek.com'&gt;wild&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src='http://sphotos.ak.fbcdn.net/hphotos-ak-snc3/hs632.snc3/31689_410953598552_19292868552_4354726_6115323_n.jpg' alt='image' /&gt;&lt;/p&gt;

&lt;p&gt;At this time, the linter returns warnings for any issues it encounters. In the near future, the linter will start returning errors. These errors will cause the &lt;a href='http://developers.facebook.com/docs/reference/plugins/like'&gt;Like button&lt;/a&gt; to stop working on your page.&lt;/p&gt;

&lt;p&gt;We also plan to add Open Graph protocol type metadata suggestions, and a lot of helpful messaging. If you have any feedback, we&amp;#8217;d love to hear it on the &lt;a href='http://forum.developers.facebook.com/viewforum.php?id=51'&gt;Developer Forum&lt;/a&gt;. Make sure to put &lt;a href='http://forum.developers.facebook.com/search.php?action=search&amp;amp;keywords=linter'&gt;linter&lt;/a&gt; somewhere in the post, to help us find it.&lt;/p&gt;

&lt;p&gt;This week we&amp;#8217;ve also added Open Graph protocol markup to every public Page on Facebook. This makes it easy for anyone to know that &lt;a href='http://www.facebook.com/Starbucks'&gt;Starbucks&lt;/a&gt; is a company, the &lt;a href='http://www.facebook.com/WhiteHouse'&gt;White House&lt;/a&gt; is part of the government, and &lt;a href='http://www.facebook.com/weirdal'&gt;Weird Al&lt;/a&gt; is my favorite musician.&lt;/p&gt;

&lt;p&gt;&lt;a href='http://developers.facebook.com/tools/lint/'&gt;Lint&lt;/a&gt; away!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Paul is a lint-free, &lt;a href='http://www.youtube.com/watch?v=vhvybkPa15c'&gt;white and nerdy&lt;/a&gt; hacker on the Platform team.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; In case you were wondering, the Facebook URL Linter&amp;#8217;s name hails from the original &lt;a href='http://en.wikipedia.org/wiki/Lint_%28software%29'&gt;lint&lt;/a&gt; UNIX program.&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>Slogging</title>
    <link href="http://blog.paulisageek.com/2010/05/slogging.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2010/05/slogging.html" />
    <updated>2010-05-29T00:00:00-07:00</updated>
    <published>2010-05-29T00:00:00-07:00</published>
    <id>http://blog.paulisageek.com/2010/05/slogging</id>
    <content type="html">&lt;p&gt;I like to follow Nike&amp;#8217;s law of hacking: &lt;strong&gt;Just Do It&lt;/strong&gt;. Sadly, I&amp;#8217;m a little tight on time right now and want to get some feedback on this idea before I actually build it.&lt;/p&gt;

&lt;p&gt;I really like Wikiepdia&amp;#8217;s model for articles. A &lt;a href='http://en.wikipedia.org/wiki/Template:Fact'&gt;template&lt;/a&gt; with some &lt;a href='http://en.wikipedia.org/wiki/Monaco'&gt;cool&lt;/a&gt; &lt;a href='http://en.wikipedia.org/wiki/1984'&gt;facts&lt;/a&gt; and a few sections for longer text. Often, I want to write posts and updates like this, but various excuses always crop up. I forget what I did last time, it doesn&amp;#8217;t exactly fit my new post, I get lazy and stop posting, etc.&lt;/p&gt;

&lt;p&gt;Sometimes I write one-off articles, but most times my posts will be similar. Video game reviews, product announcements, trip photos, etc. I wish I had a nice way to define templates and fill them in. Sure, that&amp;#8217;s not too hard, there are billions of template engines.&lt;/p&gt;

&lt;p&gt;The really cool part would be when &lt;strong&gt;different&lt;/strong&gt; people use the &lt;strong&gt;same&lt;/strong&gt; templates. Then you can cross reference them and building a micro site around those templates. One such template is Yelp reviews; another is Quora questions. You could build up which templates are most used, which keys in which templates are most filled in, which values are allowed in which fields, and grow these templates organically. So when I sit down to write about Super Mario Galaxy 2, there is already a high quality community template for video game reviews where I put in the game title, my hours played, my dates played, enjoyable rating, and a little blurb on how I felt. I don&amp;#8217;t have to think about what would be good facts to write down, someone smarter than me already did that. Then an agregator can look through all the reviews and show an interesting view from all posters.&lt;/p&gt;

&lt;p&gt;I pitched this idea to my friend &lt;a href='http://yury.name'&gt;Yury&lt;/a&gt; and we thought the core of this system is Structured bLOGing. Thus, it should get the abhorrent name &lt;strong&gt;slogging&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;There are still many unanswered questions, and the exact implementation details are a bit muddy. So, I ask my friends and readers a few things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Do you want to write structured posts too? Do you want to host them yourself or would a central site be good?&lt;/li&gt;

&lt;li&gt;Is there existing software that could get me 90% the way there? Wikis? Template engines?&lt;/li&gt;

&lt;li&gt;Does a UI ninja have any neat ideas? I want it to be a little more than a form with a bunch of &lt;code&gt;&amp;lt;textarea&amp;gt;&lt;/code&gt;s.&lt;/li&gt;

&lt;li&gt;Again for a data mining ninja. What neat things would you do with a bunch of structured posts?&lt;/li&gt;

&lt;li&gt;Can someone PLEASE come up with a better name? I hate the name &lt;em&gt;blogging&lt;/em&gt; and I hate slogging more. (and the .com is taken)&lt;/li&gt;

&lt;li&gt;Anything else on your mind?&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry>
  
  <entry>
    <title>Graph Likes Over Time</title>
    <link href="http://blog.paulisageek.com/2010/05/graph-likes-over-time.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2010/05/graph-likes-over-time.html" />
    <updated>2010-05-03T00:00:00-07:00</updated>
    <published>2010-05-03T00:00:00-07:00</published>
    <id>http://blog.paulisageek.com/2010/05/graph-likes-over-time</id>
    <content type="html">&lt;div class=&quot;right&quot;&gt;
  &lt;iframe src=&quot;http://webnumbr.com/likes-on-likebutton-me.all.graph&quot; style=&quot;width: 400px; height: 200px; float:right&quot; allowtransparency=&quot;true&quot; frameborder=&quot;0&quot;&gt; &lt;/iframe&gt;
&lt;/div&gt;

&lt;p&gt;
Wouldn't it be nice to see how many &lt;a href=&quot;http://developers.facebook.com/docs/reference/plugins/like&quot;&gt;likes&lt;/a&gt; a page gets over time? Actually, it's really simple with &lt;a href=&quot;http://webnumbr.com&quot;&gt;webnumbr&lt;/a&gt;:
&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Enter the url you want to track into the box below&lt;/li&gt;
  &lt;li&gt;Click 'Create Numbr' on webnumbr&lt;/li&gt;
  &lt;li&gt;Watch your pretty graph&lt;/li&gt;
&lt;/ol&gt;

&lt;form action=&quot;http://webnumbr.com/edit&quot; id=&quot;webnumbr-like&quot;&gt;
&lt;input type=&quot;hidden&quot; name=&quot;xpath&quot; value='//*[@class=&quot;connect_text_wrapper&quot;]' /&gt;
&lt;input id=&quot;like_url&quot; size=&quot;80&quot; value=&quot;http://&quot; /&gt;
&lt;input type=&quot;submit&quot; value=&quot;Graph Likes&quot; /&gt;
&lt;/form&gt;

&lt;script src=&quot;http://code.jquery.com/jquery-1.4.2.min.js&quot;&gt;&lt;/script&gt;
&lt;script&gt;
$('form#webnumbr-like').submit(function() {
  $('&lt;input/&gt;').attr('name', 'url').val('http://www.facebook.com/widgets/like.php?href=' + $('#like_url').val()).appendTo(this);
  $('&lt;input/&gt;').attr('name', 'title').val('Likes on ' + $('#like_url').val().replace('http://','')).appendTo(this);
});
&lt;/script&gt;

Here is all the &lt;a href=&quot;http://webnumbr.com/search?query=likes&quot;&gt;current like graphs&lt;/a&gt;.
</content>
  </entry>
  
  <entry>
    <title>Don't Throw Your Money Away</title>
    <link href="http://blog.paulisageek.com/2010/05/dont-throw-your-money-away.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2010/05/dont-throw-your-money-away.html" />
    <updated>2010-05-02T00:00:00-07:00</updated>
    <published>2010-05-02T00:00:00-07:00</published>
    <id>http://blog.paulisageek.com/2010/05/dont-throw-your-money-away</id>
    <content type="html">&lt;p&gt;If you are ever buying something from Amazon, I can get 4% of your whole purchase as a &amp;#8216;referral fee&amp;#8217;. If you let me know what you bought and your paypal, I&amp;#8217;m more than happy to send you the money, or I&amp;#8217;ll buy you a drink in your honour.&lt;/p&gt;

&lt;p&gt;If you just start your shopping with this link:&lt;/p&gt;

&lt;p&gt;&lt;a href='http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;amp;location=http%3A%2F%2Fwww.amazon.com%2F&amp;amp;tag=paultarjan-20&amp;amp;linkCode=ur2&amp;amp;camp=1789&amp;amp;creative=390957'&gt;Paul&amp;#8217;s amazon.com link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I get the referral as long as you buy your item before you close your web browser (once you click that link).&lt;/p&gt;

&lt;p&gt;If you don&amp;#8217;t want to find your item again, you can just put a product url here, and I have a handy form for adding in my referral code. Or if you want, you can just add it yourself:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;amp;tag=paultarjan-20&lt;/code&gt;&lt;/pre&gt;
&lt;script src='http://code.jquery.com/jquery-1.4.2.min.js' /&gt;
&lt;p&gt;Amazon Product URL: &lt;form id='convert'&gt;
&lt;input name='amazon' id='amazon' /&gt; 
&lt;input type='submit' value='Add Paul&amp;apos;s Code' /&gt;
&lt;span id='amazon-link'&gt;paul's link appears here&lt;/span&gt;
&lt;/form&gt;&lt;/p&gt;
&lt;script type='text/javascript'&gt;
//&lt;![CDATA[
$(&quot;#convert&quot;).submit(function() {
  var url = $(&quot;#amazon&quot;).val();
  if (url.indexOf('?') == -1) {
    url += '?';
  } else {
    url += '&amp;';
  }
  url += 'tag=paultarjan-20';
  var link = $('&lt;a/&gt;').attr('href', url).text(url);
  $('#amazon-link').text('').append(link);
  return false;
});
//]]&gt;
&lt;/script&gt;</content>
  </entry>
  
  <entry>
    <title>Blogging With Jekyll</title>
    <link href="http://blog.paulisageek.com/2010/04/blogging-with-jekyll.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2010/04/blogging-with-jekyll.html" />
    <updated>2010-04-30T00:00:00-07:00</updated>
    <published>2010-04-30T00:00:00-07:00</published>
    <id>http://blog.paulisageek.com/2010/04/blogging-with-jekyll</id>
    <content type="html">&lt;p&gt;As you may, or may not have noticed, I haven&amp;#8217;t been blogging much lately. I think this is due in part to how I was trying to use blogger. I was inserting my own html into the text box while blogging, and it was just a real pain to build a blog post. I had lots of control, but it was too much of a pain (and I&amp;#8217;m lazy, so it didn&amp;#8217;t happen often).&lt;/p&gt;

&lt;p&gt;I&amp;#8217;ve also been really admiring clean and simple blog templates whenever I see them, and switching to that in blogger would require me to backport little things I would do in each post.&lt;/p&gt;

&lt;p&gt;So, I bit the bullet. I converted all my posts to &lt;a href='http://daringfireball.net/projects/markdown/syntax'&gt;Markdown&lt;/a&gt;. I originally planned on doing a &lt;code&gt;Markdown -&amp;gt; HTML&lt;/code&gt; conversion and posting that to blogger, but then I realized that I could just use &lt;a href='http://jekyllrb.com/'&gt;jekyll&lt;/a&gt; to build the whole thing. I lose a lot of the plugins in blogger (that I wasn&amp;#8217;t using much anyways) but I gain a lot of simplicity. And now I can write my blog posts in vim and host them as straight .html files! And their &lt;a href='http://github.com/ptarjan/ptarjan.github.com'&gt;source&lt;/a&gt; is available! And&amp;#8230; and&amp;#8230; boy am I excited!&lt;/p&gt;

&lt;p&gt;I exported my existing blog (Settings -&amp;gt; Basic -&amp;gt; Export Blog) to an .xml file. I then imported this file using &lt;a href='http://github.com/tannerburson/jekyll/blob/master/lib/jekyll/converters/blogger.rb'&gt;tannerburson&lt;/a&gt;&amp;#8217;s converter. I lost the command out of my history, but maybe a ruby enthusiast can let me know. Something like:&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='ruby'&gt;&lt;span class='err'&gt;$&lt;/span&gt; &lt;span class='n'&gt;ruby&lt;/span&gt; &lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;.&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;stuff&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;.&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt; &lt;span class='s2'&gt;&amp;quot;Jekyll::Blogger.process(&amp;#39;feed.xml&amp;#39;)&amp;quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;It made me a &lt;a href='http://github.com/ptarjan/ptarjan.github.com/tree/master/_posts/'&gt;_posts&lt;/a&gt; directory. I then hand tuned each file to be in markdown instead of html and voila, you now have my new blog. I made jekyl match the permalink structure of my old blog, so no links should break. Let me know if anything goes wrong.&lt;/p&gt;

&lt;p&gt;Hopefully I will post more with this new setup. If anyone have any subject requests let me know, and general comments are always welcome (like the format, hate the format, the RSS is broken, etc).&lt;/p&gt;

&lt;p&gt;P.S. I wrote this whole post in markdown using vim, and it was &lt;strong&gt;MUCH&lt;/strong&gt; nicer than doing it in blogger&amp;#8217;s textarea.&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>Twitter inside Facebook</title>
    <link href="http://blog.paulisageek.com/2010/04/twitter-inside-facebook.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2010/04/twitter-inside-facebook.html" />
    <updated>2010-04-29T00:00:00-07:00</updated>
    <published>2010-04-29T00:00:00-07:00</published>
    <id>http://blog.paulisageek.com/2010/04/twitter-inside-facebook</id>
    <content type="html">&lt;p&gt;With the launch of Facebook&amp;#8217;s like button, I hoped I could do something that I&amp;#8217;ve wanted to do for a while. Create a mirror page of each twitter page inside of facebook. That way, I can just &amp;#8220;like&amp;#8221; that page, and now I don&amp;#8217;t have to have to check facebook AND twitter.&lt;/p&gt;

&lt;p&gt;And voila! It actually worked! Try it for yourself.&lt;/p&gt;

&lt;p&gt;&lt;a href='http://t2fb.paulisageek.com'&gt;Twitter 2 Facebook&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can either &amp;#8220;like&amp;#8221; individual people (like &lt;a href='http://t2fb.paulisageek.com/ptarjan'&gt;mine&lt;/a&gt;) or choose from &lt;a href='http://t2fb.paulisageek.com/followers'&gt;all your existing followees&lt;/a&gt;. Once you click &amp;#8220;like&amp;#8221; then all twitter posts by that person will show up in your facebook feed. You can unlike it any time (from your profile, or the original page).&lt;/p&gt;

&lt;p&gt;If this takes off, then I&amp;#8217;ll buy a better domain for it. Any suggestions for the name (that are avilable)?&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;For the geeks: this uses PHP to proxy the twitter pages, and &lt;a href='http://nodejs.org'&gt;node.js&lt;/a&gt; for the backend. Each proxy page has &lt;a href='http://opengraphprotocol.org'&gt;open graph&lt;/a&gt; data embed in it, so that when a person &amp;#8220;likes&amp;#8221; it, they give my &lt;a href='http://www.facebook.com/apps/application.php?id=117020064991268'&gt;facebook app&lt;/a&gt; permission to post to their feed. When you like a page, you ping my backend telling it to start listening to that user&amp;#8217;s tweets. My backend then, connects to the twitter streaming API and sets the follow list to all the people who have been &amp;#8220;liked&amp;#8221;. When a tweet comes in, it goes right back out to the corresponding facebook page using the &lt;code&gt;stream.publish&lt;/code&gt; API.&lt;/p&gt;

&lt;p&gt;As a byproduct, I built a &lt;a href='http://github.com/ptarjan/node-cache'&gt;node.js cache&lt;/a&gt; that you might find useful. When a cache key expires it actually purges it, so you don&amp;#8217;t end up with tons of memory usage, nor need garbage collection.&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>Goodbye Yodel, Hello Friend</title>
    <link href="http://blog.paulisageek.com/2010/03/goodbye-yodel-hello-friend.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2010/03/goodbye-yodel-hello-friend.html" />
    <updated>2010-03-26T00:00:00-07:00</updated>
    <published>2010-03-26T00:00:00-07:00</published>
    <id>http://blog.paulisageek.com/2010/03/goodbye-yodel-hello-friend</id>
    <content type="html">&lt;p&gt;Today is my last day at Yahoo!&lt;/p&gt;

&lt;p&gt;I made a video to commemorate the occasion and reminisce over my last &lt;a href='http://www.wolframalpha.com/input/?i=May+29+2007+to+March+26+2010'&gt;1032&lt;/a&gt; days being a Yahoo.&lt;/p&gt;

&lt;p&gt;Co-starting &lt;a href='http://en.wikipedia.org/wiki/Yahoo!_SearchMonkey'&gt;SearchMonkey&lt;/a&gt; and being the &lt;a href='http://www.flickr.com/photos/ptarjan/4464308810/'&gt;Chief Technical Monkey&lt;/a&gt; was a dream come true, and I couldn&amp;#8217;t have asked for a better &lt;a href='http://www.flickr.com/photos/ptarjan/2661507853/in/set-72157606136696465/'&gt;manager&lt;/a&gt; and team. Traveling with &lt;a href='http://developer.yahoo.com/hacku/'&gt;HackU&lt;/a&gt; was icing on my already delicious &lt;a href='http://www.flickr.com/photos/ptarjan/2105357171/in/set-72157603442440597/'&gt;(cup)cake&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Cheers to all my Yahoo! friends and I look forward to my new adventure at Facebook.&lt;/p&gt;
&lt;center&gt; 
&lt;object height='385' width='640'&gt;&lt;param name='movie' value='http://www.youtube.com/v/vhvybkPa15c&amp;hl=en_US&amp;fs=1&amp;rel=0' /&gt;&lt;param name='allowFullScreen' value='true' /&gt;&lt;param name='allowscriptaccess' value='always' /&gt;&lt;embed src='http://www.youtube.com/v/vhvybkPa15c&amp;hl=en_US&amp;fs=1&amp;rel=0' allowfullscreen='true' type='application/x-shockwave-flash' allowscriptaccess='always' height='385' width='640' /&gt;&lt;/object&gt; 
&lt;/center&gt;</content>
  </entry>
  
  <entry>
    <title>Rock Band Group Algorithm</title>
    <link href="http://blog.paulisageek.com/2009/10/rock-band-group-algorithm.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2009/10/rock-band-group-algorithm.html" />
    <updated>2009-10-30T00:00:00-07:00</updated>
    <published>2009-10-30T00:00:00-07:00</published>
    <id>http://blog.paulisageek.com/2009/10/rock-band-group-algorithm</id>
    <content type="html">&lt;p&gt;I often play &lt;a href='http://en.wikipedia.org/wiki/Rock_Band_%28video_game%29'&gt;Rock Band&lt;/a&gt; with my friends, but we have a tough time deciding who will play what part and for how long. Here is what we&amp;#8217;ve come up with as requirements&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Everyone must play every instrument an equal amount of time - To avoid hogging&lt;/li&gt;

&lt;li&gt;Every time a person is on an instrument, they must play with a different combination of people - To play on other people&amp;#8217;s strengths and avoid other&amp;#8217;s weaknesses&lt;/li&gt;

&lt;li&gt;Sitting out many songs in a row is minimized&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Does anyone else have other constraints they play with?&lt;/p&gt;

&lt;p&gt;Given these requirements, here is what we do:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Lay the 4 instruments out and randomly put 4 people on them, and intersperse the remaining people in the gaps between instruments&lt;/p&gt;
&lt;/li&gt;

&lt;li&gt;
&lt;p&gt;Cycle everyone through every instrument and every gap (clockwise), until we arrive back at the initial state&lt;/p&gt;
&lt;/li&gt;

&lt;li&gt;
&lt;p&gt;Shuffle everyone like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Group the people into 2 groups. Those on instruments (size &lt;code&gt;4&lt;/code&gt;) and those not (size &lt;code&gt;n-4&lt;/code&gt;)&lt;/li&gt;

&lt;li&gt;Pick 4 people from the non-instruments and randomly put them on instruments&lt;/li&gt;

&lt;li&gt;If you have less than 4 people on non-instruments, select random people to stay on instruments, but change their instruments randomly&lt;/li&gt;

&lt;li&gt;Randomly permute the remaining people into the open spots&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;

&lt;li&gt;
&lt;p&gt;Play another round and then re-cycle&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id='notes'&gt;Notes&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Designate one guitar as the &lt;em&gt;Guitar&lt;/em&gt;, and one as the &lt;em&gt;Bass&lt;/em&gt;. We choose the one with the solo fretboard as the Guitar.&lt;/li&gt;

&lt;li&gt;The singer picks the song since it is the hardest to do if you don&amp;#8217;t know the song.&lt;/li&gt;

&lt;li&gt;If you fail a song, if you are &amp;#60;50% complete, you play again, if you are &amp;#62;50% you move to the next instruments. If you fail again, you add your %s together.&lt;/li&gt;

&lt;li&gt;We don&amp;#8217;t replay the same song that we already played unless we REALLY need to.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This can work for other games, like Guitar Hero or even non-music games. Just change the number 4 to however many slots you have and run it.&lt;/p&gt;

&lt;p&gt;I&amp;#8217;m interested in how other people do this. I like fairness, but I also like not having to have a complicated system that requires white boards, a master planner, and a dictator.&lt;/p&gt;

&lt;p&gt;And what kind of geek would I be if I didn&amp;#8217;t have some code to solve this problem&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='bash'&gt;&lt;span class='nv'&gt;$ &lt;/span&gt;python rockband.py Paul Michelle Martin Melanie Surbhi Ziga Emily
Drums:  Martin
Vocals: Ziga
 Gap:   Melanie
Guitar: Surbhi
 Gap:   Paul
Bass:   Michelle
 Gap:   Emily
Press &amp;lt;Enter&amp;gt; once you finished a round: 

Drums:  Paul
Vocals: Ziga
 Gap:   Surbhi
Guitar: Emily
 Gap:   Michelle
Bass:   Melanie
 Gap:   Martin
Press &amp;lt;Enter&amp;gt; once you finished a round: 

Drums:  Surbhi
Vocals: Martin
 Gap:   Paul
Guitar: Michelle
 Gap:   Melanie
Bass:   Emily
 Gap:   Ziga
Press &amp;lt;Enter&amp;gt; once you finished a round: q
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;and in &lt;code&gt;rockband.py&lt;/code&gt;&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='python'&gt;&lt;span class='kn'&gt;import&lt;/span&gt; &lt;span class='nn'&gt;random&lt;/span&gt;
&lt;span class='kn'&gt;import&lt;/span&gt; &lt;span class='nn'&gt;sys&lt;/span&gt;

&lt;span class='n'&gt;instruments&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='s'&gt;&amp;quot;Drums&amp;quot;&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='s'&gt;&amp;quot;Vocals&amp;quot;&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='s'&gt;&amp;quot;Guitar&amp;quot;&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='s'&gt;&amp;quot;Bass&amp;quot;&lt;/span&gt;&lt;span class='p'&gt;]&lt;/span&gt;

&lt;span class='n'&gt;people&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='n'&gt;sys&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;argv&lt;/span&gt;&lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='mi'&gt;1&lt;/span&gt;&lt;span class='p'&gt;:]&lt;/span&gt;
&lt;span class='k'&gt;if&lt;/span&gt; &lt;span class='nb'&gt;len&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;people&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='o'&gt;==&lt;/span&gt; &lt;span class='mi'&gt;0&lt;/span&gt;&lt;span class='p'&gt;:&lt;/span&gt;
    &lt;span class='k'&gt;print&lt;/span&gt; &lt;span class='s'&gt;&amp;quot;python rockband.py Name1 Name2 ...&amp;quot;&lt;/span&gt;
    &lt;span class='n'&gt;sys&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;exit&lt;/span&gt;&lt;span class='p'&gt;()&lt;/span&gt;
&lt;span class='k'&gt;if&lt;/span&gt; &lt;span class='nb'&gt;len&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;people&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='o'&gt;&amp;lt;&lt;/span&gt; &lt;span class='nb'&gt;len&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;instruments&lt;/span&gt;&lt;span class='p'&gt;):&lt;/span&gt;
    &lt;span class='k'&gt;print&lt;/span&gt; &lt;span class='s'&gt;&amp;quot;If there is less than &lt;/span&gt;&lt;span class='si'&gt;%d&lt;/span&gt;&lt;span class='s'&gt; people, just pick some instruments, &amp;quot;&lt;/span&gt;&lt;span class='o'&gt;+&lt;/span&gt;\
      &lt;span class='s'&gt;&amp;quot;rotate, and then shuffle. You don&amp;#39;t need me for that&amp;quot;&lt;/span&gt;\
      &lt;span class='o'&gt;%&lt;/span&gt; &lt;span class='nb'&gt;len&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;instruments&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt;
    &lt;span class='n'&gt;sys&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;exit&lt;/span&gt;&lt;span class='p'&gt;()&lt;/span&gt;

&lt;span class='n'&gt;random&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;shuffle&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;people&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt;
&lt;span class='n'&gt;num&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='nb'&gt;len&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;people&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt;

&lt;span class='n'&gt;places&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='s'&gt;&amp;#39; Gap&amp;#39;&lt;/span&gt;&lt;span class='p'&gt;]&lt;/span&gt;&lt;span class='o'&gt;*&lt;/span&gt;&lt;span class='n'&gt;num&lt;/span&gt;
&lt;span class='n'&gt;instruments_ids&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='mi'&gt;0&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='nb'&gt;int&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;num&lt;/span&gt;&lt;span class='o'&gt;*&lt;/span&gt;&lt;span class='mf'&gt;0.25&lt;/span&gt;&lt;span class='p'&gt;),&lt;/span&gt; &lt;span class='nb'&gt;int&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;num&lt;/span&gt;&lt;span class='o'&gt;*&lt;/span&gt;&lt;span class='mf'&gt;0.5&lt;/span&gt;&lt;span class='p'&gt;),&lt;/span&gt; &lt;span class='nb'&gt;int&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;num&lt;/span&gt;&lt;span class='o'&gt;*&lt;/span&gt;&lt;span class='mf'&gt;0.75&lt;/span&gt;&lt;span class='p'&gt;)]&lt;/span&gt;
&lt;span class='k'&gt;for&lt;/span&gt; &lt;span class='n'&gt;i&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;ins&lt;/span&gt; &lt;span class='ow'&gt;in&lt;/span&gt; &lt;span class='nb'&gt;zip&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;instruments_ids&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;instruments&lt;/span&gt;&lt;span class='p'&gt;):&lt;/span&gt;
    &lt;span class='n'&gt;places&lt;/span&gt;&lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='n'&gt;i&lt;/span&gt;&lt;span class='p'&gt;]&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='n'&gt;ins&lt;/span&gt;

&lt;span class='k'&gt;while&lt;/span&gt; &lt;span class='bp'&gt;True&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
    &lt;span class='k'&gt;for&lt;/span&gt; &lt;span class='n'&gt;l&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt;&lt;span class='n'&gt;n&lt;/span&gt; &lt;span class='ow'&gt;in&lt;/span&gt; &lt;span class='nb'&gt;zip&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;places&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;people&lt;/span&gt;&lt;span class='p'&gt;):&lt;/span&gt;
        &lt;span class='k'&gt;print&lt;/span&gt; &lt;span class='s'&gt;&amp;quot;&lt;/span&gt;&lt;span class='si'&gt;%s&lt;/span&gt;&lt;span class='s'&gt;:&lt;/span&gt;&lt;span class='se'&gt;\t&lt;/span&gt;&lt;span class='si'&gt;%s&lt;/span&gt;&lt;span class='s'&gt;&amp;quot;&lt;/span&gt; &lt;span class='o'&gt;%&lt;/span&gt; &lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;l&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;n&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt;

    &lt;span class='k'&gt;if&lt;/span&gt; &lt;span class='nb'&gt;raw_input&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='s'&gt;&amp;quot;Press &amp;lt;Enter&amp;gt; once you finished a round: &amp;quot;&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='o'&gt;==&lt;/span&gt; &lt;span class='s'&gt;&amp;quot;q&amp;quot;&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
        &lt;span class='k'&gt;break&lt;/span&gt;

    &lt;span class='k'&gt;print&lt;/span&gt; &lt;span class='s'&gt;&amp;quot;&amp;quot;&lt;/span&gt;
    &lt;span class='n'&gt;playing&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='n'&gt;people&lt;/span&gt;&lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='n'&gt;x&lt;/span&gt;&lt;span class='p'&gt;]&lt;/span&gt; &lt;span class='k'&gt;for&lt;/span&gt; &lt;span class='n'&gt;x&lt;/span&gt; &lt;span class='ow'&gt;in&lt;/span&gt; &lt;span class='n'&gt;instruments_ids&lt;/span&gt;&lt;span class='p'&gt;]&lt;/span&gt;
    &lt;span class='n'&gt;not_playing&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='nb'&gt;list&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nb'&gt;set&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;people&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='o'&gt;-&lt;/span&gt; &lt;span class='nb'&gt;set&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;playing&lt;/span&gt;&lt;span class='p'&gt;))&lt;/span&gt;

    &lt;span class='k'&gt;if&lt;/span&gt; &lt;span class='nb'&gt;len&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;not_playing&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='o'&gt;&amp;lt;&lt;/span&gt; &lt;span class='nb'&gt;len&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;instruments&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
        &lt;span class='n'&gt;new_playing&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='n'&gt;not_playing&lt;/span&gt; &lt;span class='o'&gt;+&lt;/span&gt;\
          &lt;span class='n'&gt;random&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;sample&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;playing&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='nb'&gt;len&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;instruments&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='o'&gt;-&lt;/span&gt; &lt;span class='nb'&gt;len&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;not_playing&lt;/span&gt;&lt;span class='p'&gt;))&lt;/span&gt;
    &lt;span class='k'&gt;else&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
        &lt;span class='n'&gt;new_playing&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='n'&gt;random&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;sample&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;not_playing&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='nb'&gt;len&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;instruments&lt;/span&gt;&lt;span class='p'&gt;))&lt;/span&gt;

    &lt;span class='n'&gt;new_not_playing&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='nb'&gt;list&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nb'&gt;set&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;people&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='o'&gt;-&lt;/span&gt; &lt;span class='nb'&gt;set&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;new_playing&lt;/span&gt;&lt;span class='p'&gt;))&lt;/span&gt;
    &lt;span class='n'&gt;random&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;shuffle&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;new_playing&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt;
    &lt;span class='n'&gt;random&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;shuffle&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;new_not_playing&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt;

    &lt;span class='n'&gt;people&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='bp'&gt;None&lt;/span&gt;&lt;span class='p'&gt;]&lt;/span&gt;&lt;span class='o'&gt;*&lt;/span&gt;&lt;span class='n'&gt;num&lt;/span&gt;
    &lt;span class='k'&gt;for&lt;/span&gt; &lt;span class='n'&gt;i&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;p&lt;/span&gt; &lt;span class='ow'&gt;in&lt;/span&gt; &lt;span class='nb'&gt;zip&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;instruments_ids&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;new_playing&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
        &lt;span class='n'&gt;people&lt;/span&gt;&lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='n'&gt;i&lt;/span&gt;&lt;span class='p'&gt;]&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='n'&gt;p&lt;/span&gt;

    &lt;span class='n'&gt;count&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='mi'&gt;0&lt;/span&gt;
    &lt;span class='k'&gt;for&lt;/span&gt; &lt;span class='n'&gt;i&lt;/span&gt; &lt;span class='ow'&gt;in&lt;/span&gt; &lt;span class='nb'&gt;xrange&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nb'&gt;len&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;people&lt;/span&gt;&lt;span class='p'&gt;))&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
        &lt;span class='k'&gt;if&lt;/span&gt; &lt;span class='ow'&gt;not&lt;/span&gt; &lt;span class='n'&gt;people&lt;/span&gt;&lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='n'&gt;i&lt;/span&gt;&lt;span class='p'&gt;]&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
            &lt;span class='n'&gt;people&lt;/span&gt;&lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='n'&gt;i&lt;/span&gt;&lt;span class='p'&gt;]&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='n'&gt;new_not_playing&lt;/span&gt;&lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='n'&gt;count&lt;/span&gt;&lt;span class='p'&gt;]&lt;/span&gt;
            &lt;span class='n'&gt;count&lt;/span&gt; &lt;span class='o'&gt;+=&lt;/span&gt; &lt;span class='mi'&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;This code doesn&amp;#8217;t work very well with 9 people as they will always be playing with the same group, but at least their instruments will change. All other sizes should work well.&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>File Extensions on the Internet</title>
    <link href="http://blog.paulisageek.com/2009/10/file-extensions-on-the-internet.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2009/10/file-extensions-on-the-internet.html" />
    <updated>2009-10-20T00:00:00-07:00</updated>
    <published>2009-10-20T00:00:00-07:00</published>
    <id>http://blog.paulisageek.com/2009/10/file-extensions-on-the-internet</id>
    <content type="html">&lt;style&gt;
td.num {
  text-align: right;
}
&lt;/style&gt;
&lt;p&gt;I simply wanted to know &lt;em&gt;Which file extensions are used on the internet&lt;/em&gt;?&lt;/p&gt;

&lt;p&gt;So I wrote a little program (&lt;a href='http://paulisageek.com/webExtension/webExtension.py'&gt;webExtension.py&lt;/a&gt;) and a half million calls to Google later, we have some interesting data.&lt;/p&gt;

&lt;p&gt;First, the raw data:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Alphabetical : &lt;a href='http://paulisageek.com/webExtension/1.txt'&gt;1&lt;/a&gt; &lt;a href='http://paulisageek.com/webExtension/2.txt'&gt;2&lt;/a&gt; &lt;a href='http://paulisageek.com/webExtension/3.txt'&gt;3&lt;/a&gt; &lt;a href='http://paulisageek.com/webExtension/4.txt'&gt;4&lt;/a&gt; &lt;a href='http://paulisageek.com/webExtension/all.txt'&gt;All&lt;/a&gt; &lt;a href='http://paulisageek.com/webExtension/all_pruned.txt'&gt;All (Pruned)&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;Numerical : &lt;a href='http://paulisageek.com/webExtension/1_numsort.txt'&gt;1&lt;/a&gt; &lt;a href='http://paulisageek.com/webExtension/2_numsort.txt'&gt;2&lt;/a&gt; &lt;a href='http://paulisageek.com/webExtension/3_numsort.txt'&gt;3&lt;/a&gt; &lt;a href='http://paulisageek.com/webExtension/4_numsort.txt'&gt;4&lt;/a&gt; &lt;a href='http://paulisageek.com/webExtension/all_numsort.txt'&gt;All&lt;/a&gt; &lt;a href='http://paulisageek.com/webExtension/all_numsort_pruned.txt'&gt;All (Pruned)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;
  &lt;a href='http://www.google.com/search?q=ext%3Ahtml'&gt;html&lt;/a&gt;
&lt;/td&gt;&lt;td class='num'&gt;
  6 700 000 000
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
  &lt;a href='http://www.google.com/search?q=ext%3Aphp'&gt;php&lt;/a&gt;
&lt;/td&gt;&lt;td class='num'&gt;
  5 980 000 000
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
  &lt;a href='http://www.google.com/search?q=ext%3Ahtm'&gt;htm&lt;/a&gt;
&lt;/td&gt;&lt;td class='num'&gt;
	1 690 000 000
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
  &lt;a href='http://www.google.com/search?q=ext%3Aasp'&gt;asp&lt;/a&gt;
&lt;/td&gt;&lt;td class='num'&gt;
  1 510 000 000
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
  &lt;a href='http://www.google.com/search?q=ext%3Aaspx'&gt;aspx&lt;/a&gt;
&lt;/td&gt;&lt;td class='num'&gt;
  1 380 000 000
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
  &lt;a href='http://www.google.com/search?q=ext%3Ajsp'&gt;jsp&lt;/a&gt;
&lt;/td&gt;&lt;td class='num'&gt;
  565 000 000
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
  &lt;a href='http://www.google.com/search?q=ext%3Acfm'&gt;cfm&lt;/a&gt;
&lt;/td&gt;&lt;td class='num'&gt;
  385 000 000
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
  &lt;a href='http://www.google.com/search?q=ext%3Apdf'&gt;pdf&lt;/a&gt;
&lt;/td&gt;&lt;td class='num'&gt;
  298 000 000
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
  &lt;a href='http://www.google.com/search?q=ext%3Ado'&gt;do&lt;/a&gt;
&lt;/td&gt;&lt;td class='num'&gt;
  242 000 000
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
  &lt;a href='http://www.google.com/search?q=ext%3Acgi'&gt;cgi&lt;/a&gt;
&lt;/td&gt;&lt;td class='num'&gt;
  199 000 000 
&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;Some interesting facts I saw :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;There are &lt;b&gt;1305&lt;/b&gt; unused 3 letter extensions out of the possible &lt;b&gt;17,576&lt;/b&gt;. That is &lt;b&gt;92.5%&lt;/b&gt; are already used for something. (There IS a lot of junk thought, so don&amp;#8217;t be TOO alarmed).&lt;/li&gt;

&lt;li&gt;There are a lot of common extensions that I have NO idea what they are for. &lt;code&gt;.e&lt;/code&gt;? &lt;code&gt;.nhn&lt;/code&gt;?&lt;/li&gt;

&lt;li&gt;4x more pages are &lt;b&gt;html&lt;/b&gt; instead of just &lt;b&gt;htm&lt;/b&gt;.&lt;/li&gt;

&lt;li&gt;PHP is beating ASP by about 2x.&lt;/li&gt;

&lt;li&gt;Many servers serve HTML from image extensions, and jpg &amp;gt; png == gif &amp;gt; svg &amp;gt; jpeg &amp;gt; bmp &amp;gt; tiff&lt;/li&gt;

&lt;li&gt;Naming is mostly not biased by first letter. The empty part is 3 letter extensions starting with &lt;b&gt;y&lt;/b&gt;.&lt;/li&gt;

&lt;li&gt;&lt;img src='http://1.bp.blogspot.com/_cqlm7VAZ-hU/St7BcCIw9zI/AAAAAAAAAHA/EEEj3Lhf3Sk/s400/alphabetic.png' alt='alphabetic' /&gt;&lt;/li&gt;

&lt;li&gt;Only the top 5,000 extensions have more than 1000 pages.&lt;/li&gt;

&lt;li&gt;&lt;img src='http://4.bp.blogspot.com/_cqlm7VAZ-hU/St7D5jwVFVI/AAAAAAAAAHI/n7Vd3VOjXK4/s400/numeric.png' alt='alphabetic' /&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some caveats&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This was done in October 2009, things might change. I&amp;#8217;ll rerun it if people leave comments.&lt;/li&gt;

&lt;li&gt;I only looked for extensions up to 4 letters. No numbers or funky symbols.&lt;/li&gt;

&lt;li&gt;I am assuming the counts on Google&amp;#8217;s search results are ACTUALLY correct.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If anyone makes any interesting observations with this data, please let me know and I&amp;#8217;ll post it here. Pretty graphs are welcome as well :)&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>Hadoop Hacking on Yahoo! Ad Data</title>
    <link href="http://blog.paulisageek.com/2009/09/hadoop-hacking-on-yahoo--ad-data.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2009/09/hadoop-hacking-on-yahoo--ad-data.html" />
    <updated>2009-09-30T00:00:00-07:00</updated>
    <published>2009-09-30T00:00:00-07:00</published>
    <id>http://blog.paulisageek.com/2009/09/hadoop-hacking-on-yahoo--ad-data</id>
    <content type="html">&lt;p&gt;At the &lt;a href='http://developer.yahoo.com/hacku/cmu.html'&gt;CMU Hackday&lt;/a&gt; we&amp;#8217;re letting students play with an anonymized snapshot of our advertising data. (If you want access, email &lt;a href='mailto:jamieloc [NOSPAM] yahoo-inc.com?subject=Can I have the Yahoo hadoop data, please&amp;body=Can you send me the thing to sign please.'&gt;Jamie&lt;/a&gt;, sign something, and we&amp;#8217;ll give you a key).&lt;/p&gt;

&lt;p&gt;Basically, we have a cluster of EC2 machines running hadoop with the data loaded to play with. So, of course, I wanted to play.&lt;/p&gt;

&lt;p&gt;Here is the README about the data&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;(1) &amp;quot;ydata-ysm-keyphrase-bid-imp-click-v1_0.gz&amp;quot; contains the following fields:

0 day
1 anonymized account_id
2 rank
3 anonymized keyphrase (expressed as list of anonymized keywords)
4 avg bid
5 impressions
6 clicks&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Snippet:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;1       08bade48-1081-488f-b459-6c75d75312ae    2       2affa525151b6c51 79021a2e2c836c1a 327e089362aac70c fca90e7f73f3c8ef af26d27737af376a    100.0     2.0     0.0
29      08bade48-1081-488f-b459-6c75d75312ae    3       769ed4a87b5010f4 3d4b990abb0867c8 cd74a8342d25d090 ab9f74ae002e80ff af26d27737af376a    100.0     1.0     0.0
29      08bade48-1081-488f-b459-6c75d75312ae    2       769ed4a87b5010f4 3d4b990abb0867c8 cd74a8342d25d090 ab9f74ae002e80ff af26d27737af376a    100.0     1.0     0.0
11      08bade48-1081-488f-b459-6c75d75312ae    1       769ed4a87b5010f4 3d4b990abb0867c8 cd74a8342d25d090 ab9f74ae002e80ff af26d27737af376a    100.0     2.0     0.0&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I like python, and &lt;a href='http://hadoop.apache.org/common/docs/current/streaming.html'&gt;hadoop streaming&lt;/a&gt; lets me use it for map reducing. You basically write two scripts, &lt;code&gt;map.py&lt;/code&gt; and &lt;code&gt;reduce.py&lt;/code&gt; which work on stdin, and stdout. Here is me making those files&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='sh'&gt;mkdir money_made_rank
vim money_made_rank/map.py
&amp;lt;code it&amp;gt;
vim money_made_rank/reduce.py
&amp;lt;code it&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;map.py:&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='python'&gt;&lt;span class='c'&gt;#!/usr/bin/python&lt;/span&gt;
&lt;span class='kn'&gt;import&lt;/span&gt; &lt;span class='nn'&gt;sys&lt;/span&gt;
&lt;span class='kn'&gt;import&lt;/span&gt; &lt;span class='nn'&gt;random&lt;/span&gt;

&lt;span class='k'&gt;for&lt;/span&gt; &lt;span class='n'&gt;line&lt;/span&gt; &lt;span class='ow'&gt;in&lt;/span&gt; &lt;span class='n'&gt;sys&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;stdin&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
 &lt;span class='n'&gt;line&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='n'&gt;line&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;strip&lt;/span&gt;&lt;span class='p'&gt;()&lt;/span&gt;
 &lt;span class='n'&gt;cols&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='n'&gt;line&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;split&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;&lt;/span&gt;&lt;span class='se'&gt;\t&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt;
 &lt;span class='k'&gt;if&lt;/span&gt; &lt;span class='nb'&gt;len&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;cols&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='o'&gt;!=&lt;/span&gt; &lt;span class='mi'&gt;7&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
  &lt;span class='k'&gt;continue&lt;/span&gt;
 &lt;span class='n'&gt;day&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;account&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;rank&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;keyprase&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;bid&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;impressions&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;clicks&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='n'&gt;cols&lt;/span&gt;
 &lt;span class='n'&gt;clicks&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='nb'&gt;float&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;clicks&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt;
 &lt;span class='k'&gt;if&lt;/span&gt; &lt;span class='n'&gt;clicks&lt;/span&gt; &lt;span class='o'&gt;==&lt;/span&gt; &lt;span class='mi'&gt;0&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
  &lt;span class='k'&gt;continue&lt;/span&gt;
 &lt;span class='n'&gt;bid&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='nb'&gt;float&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;bid&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt;
 &lt;span class='n'&gt;money&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='n'&gt;clicks&lt;/span&gt; &lt;span class='o'&gt;*&lt;/span&gt; &lt;span class='n'&gt;bid&lt;/span&gt;
 &lt;span class='k'&gt;print&lt;/span&gt; &lt;span class='s'&gt;&amp;quot;&lt;/span&gt;&lt;span class='si'&gt;%s&lt;/span&gt;&lt;span class='se'&gt;\t&lt;/span&gt;&lt;span class='si'&gt;%f&lt;/span&gt;&lt;span class='s'&gt;&amp;quot;&lt;/span&gt; &lt;span class='o'&gt;%&lt;/span&gt; &lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;rank&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;money&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;reduce.py:&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='python'&gt;&lt;span class='c'&gt;#!/usr/bin/python&lt;/span&gt;
&lt;span class='kn'&gt;import&lt;/span&gt; &lt;span class='nn'&gt;sys&lt;/span&gt;
&lt;span class='kn'&gt;from&lt;/span&gt; &lt;span class='nn'&gt;operator&lt;/span&gt; &lt;span class='kn'&gt;import&lt;/span&gt; &lt;span class='n'&gt;itemgetter&lt;/span&gt;

&lt;span class='n'&gt;result&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='p'&gt;{}&lt;/span&gt;

&lt;span class='k'&gt;for&lt;/span&gt; &lt;span class='n'&gt;line&lt;/span&gt; &lt;span class='ow'&gt;in&lt;/span&gt; &lt;span class='n'&gt;sys&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;stdin&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
 &lt;span class='n'&gt;line&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='n'&gt;line&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;strip&lt;/span&gt;&lt;span class='p'&gt;()&lt;/span&gt;
 &lt;span class='n'&gt;key&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;money&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='n'&gt;line&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;split&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;&lt;/span&gt;&lt;span class='se'&gt;\t&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='mi'&gt;1&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt;
 &lt;span class='k'&gt;try&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
  &lt;span class='n'&gt;money&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='nb'&gt;float&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;money&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt;
  &lt;span class='n'&gt;result&lt;/span&gt;&lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='n'&gt;key&lt;/span&gt;&lt;span class='p'&gt;]&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='n'&gt;result&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;get&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;key&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='mi'&gt;0&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='o'&gt;+&lt;/span&gt; &lt;span class='n'&gt;money&lt;/span&gt;
 &lt;span class='k'&gt;except&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
  &lt;span class='k'&gt;continue&lt;/span&gt;
 
&lt;span class='n'&gt;sorted_result&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='nb'&gt;sorted&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;result&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;items&lt;/span&gt;&lt;span class='p'&gt;(),&lt;/span&gt; &lt;span class='n'&gt;key&lt;/span&gt;&lt;span class='o'&gt;=&lt;/span&gt;&lt;span class='n'&gt;itemgetter&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='mi'&gt;0&lt;/span&gt;&lt;span class='p'&gt;))&lt;/span&gt;
&lt;span class='k'&gt;for&lt;/span&gt; &lt;span class='n'&gt;key&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;money&lt;/span&gt; &lt;span class='ow'&gt;in&lt;/span&gt; &lt;span class='n'&gt;sorted_result&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
 &lt;span class='k'&gt;print&lt;/span&gt; &lt;span class='s'&gt;&amp;quot;&lt;/span&gt;&lt;span class='si'&gt;%s&lt;/span&gt;&lt;span class='se'&gt;\t&lt;/span&gt;&lt;span class='si'&gt;%f&lt;/span&gt;&lt;span class='s'&gt;&amp;quot;&lt;/span&gt; &lt;span class='o'&gt;%&lt;/span&gt; &lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;key&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;money&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Then you should test your stuff locally. For that, we left the .gz file and I just ran :&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='sh'&gt;zcat /mnt/data/ydata-ysm-keyphrase-bid-imp-click-v1_0.gz | head -n 1000 | money_made_rank/map.py | sort | money_made_rank/reduce.py
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;And if it spits out&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;1       3540.000000
2       14604.489767
3       13516.602689
4       2668.682927
5       2250.000000
6       540.000000
7       540.000000&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;then you&amp;#8217;re doing it right.&lt;/p&gt;

&lt;p&gt;If you want to run on one machine then just take out the &lt;code&gt;head -n 1000&lt;/code&gt;. That should take about 20 minutes to chew through all the data.&lt;/p&gt;

&lt;h2 id='lets_move_to_hadoop'&gt;Lets move to hadoop&lt;/h2&gt;

&lt;p&gt;Once it works in the piping mode, then it is very simple to just do it on the cluster. Don&amp;#8217;t change any files, just type :&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='sh'&gt;hadoop jar /usr/lib/hadoop/contrib/streaming/hadoop-0.18.3-14.cloudera.CH0_3-streaming.jar 
  -input /data/ydata/* 
  -output money_made_rank 
  -mapper money_made_rank/map.py 
  -reducer money_made_rank/reduce.py 
  -file money_made_rank/*
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;This will print out a whole bunch of stuff and at the end you should have a &lt;code&gt;money_made_rank&lt;/code&gt; directory. Just print it and bask in the glory:&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='sh'&gt;hadoop fs -cat &lt;span class='s1'&gt;&amp;#39;money_made_rank/part-*&amp;#39;&lt;/span&gt; | sort -n
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;and it should print out :&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;1 14743915410.559452
2 5671857020.978109
3 3580521727.805751
4 1770068342.652887
5 1141008200.372228
6 531839794.947136
7 360624250.037246
8 266172741.734491
9 213458413.893067
10 189563018.302472
...&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;And then you can put it in a spreadsheet and make a pretty chart. Did you know half of our money comes from the #1 Search Ad?&lt;/p&gt;
&lt;iframe src='http://spreadsheets.google.com/pub?key=tK-7SP4HSyN4F9Z91MVyR_Q&amp;gid=1' style='height:500px; width: 100%'&gt;?&lt;/iframe&gt;</content>
  </entry>
  
  <entry>
    <title>Converting from MyISAM to InnoDB takes a long time</title>
    <link href="http://blog.paulisageek.com/2009/09/converting-from-myisam-to-innodb-takes-a-long-time.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2009/09/converting-from-myisam-to-innodb-takes-a-long-time.html" />
    <updated>2009-09-15T00:00:00-07:00</updated>
    <published>2009-09-15T00:00:00-07:00</published>
    <id>http://blog.paulisageek.com/2009/09/converting-from-myisam-to-innodb-takes-a-long-time</id>
    <content type="html">&lt;p&gt;Wow, I didn&amp;#8217;t think that with around 80 million rows, MySQL would take 7 hours to convert from MyISAM to InnoDB.&lt;/p&gt;

&lt;p&gt;mysql&amp;gt; alter table metaward_achiever ENGINE=INNODB; Query OK, 76756189 rows affected (6 hours 53 min 57.07 sec) Records: 76756189 Duplicates: 0 Warnings: 0&lt;/p&gt;

&lt;p&gt;mysql&amp;gt; show create table metaward_achiever; | metaward_achiever | CREATE TABLE &lt;code&gt;metaward_achiever&lt;/code&gt; ( &lt;code&gt;id&lt;/code&gt; int(11) NOT NULL AUTO_INCREMENT, &lt;code&gt;modified&lt;/code&gt; datetime NOT NULL, &lt;code&gt;created&lt;/code&gt; datetime NOT NULL, &lt;code&gt;award_id&lt;/code&gt; int(11) NOT NULL, &lt;code&gt;alias_id&lt;/code&gt; int(11) NOT NULL, &lt;code&gt;count&lt;/code&gt; int(11) NOT NULL, PRIMARY KEY (&lt;code&gt;id&lt;/code&gt;), KEY &lt;code&gt;metaward_achiever_award_id&lt;/code&gt; (&lt;code&gt;award_id&lt;/code&gt;), KEY &lt;code&gt;metaward_achiever_alias_id&lt;/code&gt; (&lt;code&gt;alias_id&lt;/code&gt;) ) ENGINE=InnoDB AUTO_INCREMENT=77166947 DEFAULT CHARSET=utf8 |&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>Paul Is A Nerd</title>
    <link href="http://blog.paulisageek.com/2009/09/paul-is-a-nerd.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2009/09/paul-is-a-nerd.html" />
    <updated>2009-09-07T00:00:00-07:00</updated>
    <published>2009-09-07T00:00:00-07:00</published>
    <id>http://blog.paulisageek.com/2009/09/paul-is-a-nerd</id>
    <content type="html">&lt;img src='/images/nerd-venn-diagram.jpg' /&gt;
&lt;p&gt;Good thing I named it paulisageek.com, I&amp;#8217;m no dork dweeb or nerd!&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>List of Guilded WoW players</title>
    <link href="http://blog.paulisageek.com/2009/08/list-of-guilded-wow-players.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2009/08/list-of-guilded-wow-players.html" />
    <updated>2009-08-26T00:00:00-07:00</updated>
    <published>2009-08-26T00:00:00-07:00</published>
    <id>http://blog.paulisageek.com/2009/08/list-of-guilded-wow-players</id>
    <content type="html">&lt;p&gt;I needed a list of as many &lt;a href='http://worldofwarcraft.com'&gt;World of Warcraft&lt;/a&gt; players as I could find. Sadly, blizzard wasn&amp;#8217;t giving this out on &lt;a href='http://wowarmory.com'&gt;wowarmory&lt;/a&gt; and neither were any other sites I could find. Thankfully, I&amp;#8217;m good at web scraping.&lt;/p&gt;

&lt;p&gt;So, I went through each region, server, guild, and character on &lt;a href='http://wowjutsu.com/'&gt;wowjustsu&lt;/a&gt; and pulled out 1.75 Million characters.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1,019,737 US wowarmory links &lt;a href='http://www.box.net/ptarjan#1:31231570:324466458'&gt;(gz)&lt;/a&gt; &lt;a href='http://www.box.net/ptarjan#1:31231570:324468030'&gt;(zip)&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;741,321 EU wowarmory links &lt;a href='http://www.box.net/ptarjan#1:31231570:324465646'&gt;(gz)&lt;/a&gt; &lt;a href='http://www.box.net/ptarjan#1:31231570:324467770'&gt;(zip)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;World of warcraft claims over 10 Million players, wowjutsu claims 4 Million users but I could only find 1.75 Million. Maybe the rest are unguilded or their guilds aren&amp;#8217;t listed. Either way, 1.75 Million is good enough for me, hopefully it helps you out.&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>stdicon</title>
    <link href="http://blog.paulisageek.com/2009/08/stdicon.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2009/08/stdicon.html" />
    <updated>2009-08-18T00:00:00-07:00</updated>
    <published>2009-08-18T00:00:00-07:00</published>
    <id>http://blog.paulisageek.com/2009/08/stdicon</id>
    <content type="html">&lt;p&gt;From the idea of &lt;a href='http://twitter.com/progrium/status/3373976979'&gt;progrium&lt;/a&gt; I did a fun little hack last night.&lt;/p&gt;

&lt;p&gt;(mimetype or file extension) -&amp;gt; icon == &lt;a href='http://stdicon.com'&gt;stdicon.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the vein of gravatar&amp;#8217;s simple URLs, just add the file extension, or mimetype onto the path, and you will get a good icon representing it. &lt;img src='http://stdicon.com/html?size=16' /&gt; There are more options for choosing your icon set, size, and default, but head over to the &lt;a href='http://stdicon.com'&gt;root page&lt;/a&gt; to find out more.&lt;/p&gt;

&lt;p&gt;It&amp;#8217;s &lt;a href='http://github.com/ptarjan/stdicon/tree/master'&gt;open source&lt;/a&gt;, so fork and fix. And if you have any ideas for good icon sets, please post a comment or email me and I&amp;#8217;ll get them into the system.&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>We won hack day!</title>
    <link href="http://blog.paulisageek.com/2009/08/we-won-hack-day-.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2009/08/we-won-hack-day-.html" />
    <updated>2009-08-16T00:00:00-07:00</updated>
    <published>2009-08-16T00:00:00-07:00</published>
    <id>http://blog.paulisageek.com/2009/08/we-won-hack-day-</id>
    <content type="html">&lt;p&gt;Friday was my favorite quarterly event at Yahoo, hackday! It&amp;#8217;s the internal version of the &lt;a href='http://developer.yahoo.com/hacku/'&gt;hacku&lt;/a&gt; event that I help with. I want to chronicle my experience since it was my favourite hackday to-date. I&amp;#8217;m being overly vague about the project since it might actually get shipped.&lt;/p&gt;

&lt;p&gt;This year, I had an idea mulling in my head, talked to a few people, shared it on the internal hacker list and got a ton of great buzz. I started the ball rolling with some editorial work and design. Then our SearchMonkey community manager, &lt;a href='http://goer.org/'&gt;Evan Goer&lt;/a&gt; lept on the idea, and did a ton more of the editorial work. His enthusiasm was contagious.&lt;/p&gt;

&lt;p&gt;When hackday finally came around, Evan was definitely onboard, but it was still a daunting task. He wanted to help in any way he could so I gave him a small coding task in PHP. Lo-and-behold he pulled it off with flying colors. I think we should get huge bonus points for a project manager coding on the project :) He sat next to me at the start of hackday, and went out for dinner, and then CAME BACK to finish it up. What a trooper.&lt;/p&gt;

&lt;p&gt;Right as I started to code, one of the SearchMonkey ops guys, &lt;a href='http://twitter.com/opsguy'&gt;Brett Proctor&lt;/a&gt; IMed me offering his services. He told me he can barely code and had to leave that night at 9pm, so I gave him some &amp;#8220;store and retrieve&amp;#8221; webservice to work on. He pulled it off amazingly, and again, we should get more bonus points for an operations guy building the whole backend :)&lt;/p&gt;

&lt;p&gt;Prior to hackday, in the email exchange, the SearchMonkey UI guy (notice a trend here?) &lt;a href='http://www.alpern.org/'&gt;Micah Alpern&lt;/a&gt; suggested it to one of his designers, &lt;a href='http://friendfeed.com/karacita'&gt;Kara Mccain&lt;/a&gt;. She&amp;#8217;s the one that did the &lt;a href='http://en.wikipedia.org/wiki/File:Logo_SearchMonkeyHiRes.png'&gt;SearchMonkey logo&lt;/a&gt;, so I was elated to have her onboard. She cooked up some sexy designs for the project and then passed out from the exhaustion that the designs caused :) She stopped by the hack room, and then left before Evan got there, so as far as the rest of the team was concerned, she was &amp;#8220;remote&amp;#8221; much like Brett.&lt;/p&gt;

&lt;p&gt;While Brett was doing his work, he showed the project to &lt;a href='http://reidburke.com/'&gt;Reid Burke&lt;/a&gt; who then &lt;em&gt;obviously&lt;/em&gt; wanted in. The only non-SearchMonkey guy, but we won&amp;#8217;t hold it against him. Reid came to the hack room after Evan left, and hung out with me until the wee hours of the morning. Reid came into the project with a self-contained piece so it was easier to integrate. By the time I left at 5:00 am, Reid&amp;#8217;s part still wasn&amp;#8217;t working, but I guess my threats to take him off the team worked, because when I came back at noon the next day, Reid&amp;#8217;s part magically worked. :)&lt;/p&gt;

&lt;p&gt;I&amp;#8217;d like to note that there was a handful of people in the hack room that contributed in one way or another to the hack. &lt;a href='http://www.suburbohemia.com/'&gt;Matt Claypotch&lt;/a&gt; made up a lot of great titles, had some witty banter all night and made us a pretty picture too! &lt;a href='http://bluesmoon.info/'&gt;Philip Tellis&lt;/a&gt; was Mr. Knowledgable sitting in the corner. I would ask a question to the air, Matt would say something snarky, Reid would join in, and then when it simmered down, Philip would quietly answer the question wonderfully. Oh, and Eric Wu was hammering away on the designs for all the little things to make hackday work. Thanks guys, the hack room was great!&lt;/p&gt;

&lt;p&gt;We were presenting as #48 out of 92. #46 was my other hack with &lt;a href='http://yury.name/'&gt;Yury Lifshits&lt;/a&gt;, &lt;a href='http://webnumbr.com/'&gt;webnumbr.com&lt;/a&gt;. And then #47 was Reid&amp;#8217;s other hack. So a big showing all in a row kind of worried me a bit. Right before I was going to present, &lt;a href='http://www.emotioneric.com/'&gt;Eric Wu&lt;/a&gt; called a break for pizza. So I went back, got my carb and sugar rush going, and then setup to be first after the break. It was kind of nice placement, since people actually were ready to pay attention. Not to mention I was wearing my wizard hacking hat, which helped the intrigue.&lt;/p&gt;

&lt;p&gt;I started off pointing out &lt;a href='http://en.wikipedia.org/wiki/Jerry_Yang_%28entrepreneur%29'&gt;Jerry Yang&lt;/a&gt; was on his 3rd beer, so that boded well for his coercibility. 10 seconds in, I realized I didn&amp;#8217;t clear my cookies from all the testing I just did, so nothing was working. I mentioned that noone should pay attention to the man behind the curtain as I quickly &amp;#8984;, -&amp;gt; clear cookies. The presentation went well with lots of laughs and clapping. Lots of people in the audience smiled at me and gave me high fives. It was good. Brett couldn&amp;#8217;t get the live streaming working, so he &lt;code&gt;tail -f&lt;/code&gt;&amp;#8216;ed the apache logs to see what I was showing :)&lt;/p&gt;

&lt;p&gt;When the judges came back we were just sitting around after &lt;a href='http://twitter.com/freshelectrons'&gt;Havi Hoffman&lt;/a&gt; gave away some old shirts. I had been to many hack days before this and hadn&amp;#8217;t won, so I was already over the emotionally crushing experience of not winning and didn&amp;#8217;t care anymore. When &lt;a href='http://theory.stanford.edu/~pragh/'&gt;Prabhakar Raghavan&lt;/a&gt; announced the most innovative entry going to webnumbr, Yury and I were elated! We skipped up and got our awesome bright orange t-shirts with pride. I was just so excited I didn&amp;#8217;t pay attention to when &lt;a href='http://www.linkedin.com/pub/ash-patel/0/108/80b'&gt;Ash Patel&lt;/a&gt; gave away the prize for the most fun hack to us! Sadly Brett and Kara couldn&amp;#8217;t be there, but Evan and Reid and I bounded up to get our shirts (I didn&amp;#8217;t take a second). We got our picture taken as we were hugging and it was just a great experience.&lt;/p&gt;

&lt;p&gt;I chatted for a while with everyone and then walked back with Yury and Evan, talking about the future of our stuff. I&amp;#8217;m sure on Monday the joy will wear off and the reality of our real jobs will set in, but maybe, just maybe, we can start another small project like SearchMonkey and see where it goes.&lt;/p&gt;

&lt;p&gt;So yes, hack day was awesome, and I hope this tradition spreads and thrives.&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>Online YAML parser</title>
    <link href="http://blog.paulisageek.com/2009/08/online-yaml-parser.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2009/08/online-yaml-parser.html" />
    <updated>2009-08-12T00:00:00-07:00</updated>
    <published>2009-08-12T00:00:00-07:00</published>
    <id>http://blog.paulisageek.com/2009/08/online-yaml-parser</id>
    <content type="html">&lt;p&gt;So, today I needed to verify some &lt;a href='http://yaml.org'&gt;YAML&lt;/a&gt; was correct, and eyeball the &lt;a href='http://json.org'&gt;JSON&lt;/a&gt; output. I couldn&amp;#8217;t find a good tool online that did what I wanted, so I wrote my own in about an hour.&lt;/p&gt;

&lt;p&gt;I give you the &lt;a href='http://yaml-online-parser.appspot.com/'&gt;Online YAML Parser&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It takes in YAML and outputs JSON using pyYAML. Simple, but useful. &lt;a href='http://yaml-online-parser.appspot.com/?yaml=-%20Mark%20McGwire%0A-%20Sammy%20Sosa%0A-%20Ken%20Griffey%0A'&gt;Try&lt;/a&gt; &lt;a href='http://yaml-online-parser.appspot.com/?yaml=canonical%3A%201.23015e%2B3%0Aexponential%3A%2012.3015e%2B02%0Afixed%3A%201230.15%0Anegative%20infinity%3A%20-.inf%0Anot%20a%20number%3A%20.NaN%0A'&gt;some&lt;/a&gt; &lt;a href='http://yaml-online-parser.appspot.com/?yaml=null%3A%0Abooleans%3A%20[%20true%2C%20false%20]%0Astring%3A%20%27012345%27%0A'&gt;examples&lt;/a&gt; from the &lt;a href='http://www.yaml.org/spec/1.2/spec.html'&gt;1.2 spec&lt;/a&gt;, or paste in your own, and let me know of any bugs.&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>SearchMonkey Object Examples</title>
    <link href="http://blog.paulisageek.com/2009/07/searchmonkey-object-examples.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2009/07/searchmonkey-object-examples.html" />
    <updated>2009-07-29T00:00:00-07:00</updated>
    <published>2009-07-29T00:00:00-07:00</published>
    <id>http://blog.paulisageek.com/2009/07/searchmonkey-object-examples</id>
    <content type="html">&lt;p&gt;So, a few weeks ago we released &lt;a href='http://developer.search.yahoo.com/start'&gt;SearchMonkey Objects&lt;/a&gt; that let web developers markup any of our 8 object formats for their pages. These pages included examples and explanations.&lt;/p&gt;

&lt;p&gt;To help people understand it a bit more, I marked up a few real-life pages using our SearchMonkey objects.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href='http://developer.search.yahoo.com/help/objects/discussion'&gt;discussion&lt;/a&gt; : &lt;a href='http://paulisageek.com/monkey/examples/discussion/wordpress.html'&gt;wordpress&lt;/a&gt; (&lt;a href='http://paulisageek.com/monkey/examples/discussion/wordpress-old.html'&gt;old&lt;/a&gt;)&lt;/li&gt;

&lt;li&gt;&lt;a href='http://developer.search.yahoo.com/help/objects/event'&gt;event&lt;/a&gt; : &lt;a href='http://paulisageek.com/monkey/examples/event/upcoming.html'&gt;upcoming&lt;/a&gt; (&lt;a href='http://paulisageek.com/monkey/examples/event/upcoming-old.html'&gt;old&lt;/a&gt;)&lt;/li&gt;

&lt;li&gt;&lt;a href='http://developer.search.yahoo.com/help/objects/local'&gt;local&lt;/a&gt; : &lt;a href='http://paulisageek.com/monkey/examples/local/yellowpages.html'&gt;yellowpages&lt;/a&gt; (&lt;a href='http://paulisageek.com/monkey/examples/local/yellowpages-old.html'&gt;old&lt;/a&gt;)&lt;/li&gt;

&lt;li&gt;&lt;a href='http://developer.search.yahoo.com/help/objects/news'&gt;news&lt;/a&gt; : &lt;a href='http://paulisageek.com/monkey/examples/news/cnn.html'&gt;cnn&lt;/a&gt; (&lt;a href='http://paulisageek.com/monkey/examples/news/cnn-old.html'&gt;old&lt;/a&gt;)&lt;/li&gt;

&lt;li&gt;&lt;a href='http://developer.search.yahoo.com/help/objects/product'&gt;product&lt;/a&gt; : &lt;a href='http://paulisageek.com/monkey/examples/product/amazon.html'&gt;amazon&lt;/a&gt; (&lt;a href='http://paulisageek.com/monkey/examples/product/amazon-old.html'&gt;old&lt;/a&gt;)&lt;/li&gt;

&lt;li&gt;&lt;a href='http://developer.search.yahoo.com/help/objects/video'&gt;video&lt;/a&gt; : &lt;a href='http://paulisageek.com/monkey/examples/video/vimeo.html'&gt;vimeo&lt;/a&gt; (&lt;a href='http://paulisageek.com/monkey/examples/video/vimeo-old.html'&gt;old&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;(games and documents are identical to video).&lt;/p&gt;

&lt;p&gt;So, I hope those help a bit. Try running them through the &lt;a href='http://developer.search.yahoo.com/help/objectfinder?url=http://paulisageek.com/monkey/examples/discussion/wordpress.html'&gt;extraction tool&lt;/a&gt;. Let me know if you have any issues or have any more examples.&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>Only 1 word left on google voice, and its mine!</title>
    <link href="http://blog.paulisageek.com/2009/07/only-1-word-left-on-google-voice--and-its-mine-.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2009/07/only-1-word-left-on-google-voice--and-its-mine-.html" />
    <updated>2009-07-16T00:00:00-07:00</updated>
    <published>2009-07-16T00:00:00-07:00</published>
    <id>http://blog.paulisageek.com/2009/07/only-1-word-left-on-google-voice--and-its-mine-</id>
    <content type="html">&lt;p&gt;I recently got an invitation to &lt;a href='https://www.google.com/voice/'&gt;google voice&lt;/a&gt; and have been trying to come up with a good number. I tried all the first 10 digits of &lt;a href='http://www.ebyte.it/library/educards/constants/ConstantsOfPhysicsAndMath.html'&gt;physics constants&lt;/a&gt; and every single 10 letter word in the ubuntu /usr/share/dict/words. Out of all of that, there was &lt;b&gt;ONLY 1&lt;/b&gt; that was available.&lt;/p&gt;

&lt;p&gt;So I give you my new phone number (which is very easy to memorize, hehe) :&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;(MEM) ORI-ZING 
(636) 674-9464&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The 2 other leading candidates were :&lt;/p&gt;

&lt;p&gt;(209) 782-7526 (209) PTA-RJAN&lt;/p&gt;

&lt;p&gt;(707) 728-5468 (707) PAU-LIN8 (thanks &lt;a href='http://twitter.com/ultramegaman/status/2678728642'&gt;ultramegaman&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Is it too much to ask for the number &lt;b&gt;(314) 159-2653&lt;/b&gt;, &lt;b&gt;(299) 792-4580&lt;/b&gt;, or &lt;b&gt;(137) 035-9990&lt;/b&gt;? What is a geek to do&amp;#8230;&lt;/p&gt;

&lt;p&gt;Here is the source of my script:&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='python'&gt;&lt;span class='c'&gt;# This script will search google voice to see if there are any numbers&lt;/span&gt;
&lt;span class='c'&gt;# available that spell a 10 letter word &lt;/span&gt;
&lt;span class='c'&gt;#&lt;/span&gt;
&lt;span class='c'&gt;# It can easily be customized for 9 letters, or to use your own dictionary, etc.&lt;/span&gt;
&lt;span class='c'&gt;#&lt;/span&gt;
&lt;span class='c'&gt;# Author: Paul Tarjan &amp;lt;http://paulisageek.com&amp;gt;&lt;/span&gt;
&lt;span class='c'&gt;#&lt;/span&gt;
&lt;span class='c'&gt;# Make sure you put your own cookie here. Search the web if you don&amp;#39;t know how to find it.&lt;/span&gt;
&lt;span class='n'&gt;cookie&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='s'&gt;&amp;quot;DQAAA&amp;lt;rest of cookie&amp;gt;&amp;quot;&lt;/span&gt;

&lt;span class='kn'&gt;import&lt;/span&gt; &lt;span class='nn'&gt;urllib2&lt;/span&gt;
&lt;span class='kn'&gt;import&lt;/span&gt; &lt;span class='nn'&gt;re&lt;/span&gt;

&lt;span class='k'&gt;def&lt;/span&gt; &lt;span class='nf'&gt;check&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;c&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
    &lt;span class='k'&gt;global&lt;/span&gt; &lt;span class='n'&gt;cookie&lt;/span&gt;
    &lt;span class='n'&gt;r&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='n'&gt;urllib2&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;Request&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='s'&gt;&amp;quot;https://www.google.com/voice/setup/search/?q=&amp;quot;&lt;/span&gt; &lt;span class='o'&gt;+&lt;/span&gt; &lt;span class='n'&gt;c&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;headers&lt;/span&gt;&lt;span class='o'&gt;=&lt;/span&gt;&lt;span class='p'&gt;{&lt;/span&gt;&lt;span class='s'&gt;&amp;quot;Cookie&amp;quot;&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt; &lt;span class='s'&gt;&amp;quot;gv=&amp;quot;&lt;/span&gt; &lt;span class='o'&gt;+&lt;/span&gt; &lt;span class='n'&gt;cookie&lt;/span&gt;&lt;span class='p'&gt;})&lt;/span&gt;
    &lt;span class='n'&gt;response&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='n'&gt;urllib2&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;urlopen&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;r&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt;
    &lt;span class='n'&gt;data&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='n'&gt;response&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;read&lt;/span&gt;&lt;span class='p'&gt;()&lt;/span&gt;
    &lt;span class='k'&gt;if&lt;/span&gt; &lt;span class='s'&gt;&amp;#39;&amp;quot;Sign in&amp;quot;&amp;#39;&lt;/span&gt; &lt;span class='ow'&gt;in&lt;/span&gt; &lt;span class='n'&gt;data&lt;/span&gt;&lt;span class='p'&gt;:&lt;/span&gt;
        &lt;span class='k'&gt;print&lt;/span&gt; &lt;span class='s'&gt;&amp;quot;Bad cookie (probably)&amp;quot;&lt;/span&gt;
        &lt;span class='k'&gt;return&lt;/span&gt; &lt;span class='bp'&gt;False&lt;/span&gt;
    &lt;span class='k'&gt;if&lt;/span&gt; &lt;span class='n'&gt;data&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;find&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;&amp;quot;num_matches&amp;quot;:&amp;quot;0&amp;quot;&amp;#39;&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='o'&gt;!=&lt;/span&gt; &lt;span class='o'&gt;-&lt;/span&gt;&lt;span class='mi'&gt;1&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
        &lt;span class='k'&gt;return&lt;/span&gt; &lt;span class='bp'&gt;False&lt;/span&gt;
    &lt;span class='k'&gt;return&lt;/span&gt; &lt;span class='bp'&gt;True&lt;/span&gt;

&lt;span class='k'&gt;def&lt;/span&gt; &lt;span class='nf'&gt;dict&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;f&lt;/span&gt;&lt;span class='o'&gt;=&lt;/span&gt;&lt;span class='s'&gt;&amp;quot;/usr/share/dict/words&amp;quot;&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
    &lt;span class='k'&gt;for&lt;/span&gt; &lt;span class='n'&gt;word&lt;/span&gt; &lt;span class='ow'&gt;in&lt;/span&gt; &lt;span class='nb'&gt;file&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;f&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;read&lt;/span&gt;&lt;span class='p'&gt;()&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;split&lt;/span&gt;&lt;span class='p'&gt;()&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
        &lt;span class='k'&gt;if&lt;/span&gt; &lt;span class='nb'&gt;len&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;word&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='o'&gt;==&lt;/span&gt; &lt;span class='mi'&gt;10&lt;/span&gt; &lt;span class='ow'&gt;and&lt;/span&gt; &lt;span class='n'&gt;re&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;match&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='s'&gt;&amp;quot;^[a-zA-Z0-9]+$&amp;quot;&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;word&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
            &lt;span class='k'&gt;if&lt;/span&gt; &lt;span class='n'&gt;check&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;word&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
                &lt;span class='k'&gt;print&lt;/span&gt; &lt;span class='n'&gt;word&lt;/span&gt;

&lt;span class='k'&gt;if&lt;/span&gt; &lt;span class='s'&gt;&amp;quot;&amp;lt;rest of cookie&amp;gt;&amp;quot;&lt;/span&gt; &lt;span class='ow'&gt;in&lt;/span&gt; &lt;span class='n'&gt;cookie&lt;/span&gt;&lt;span class='p'&gt;:&lt;/span&gt;
    &lt;span class='k'&gt;print&lt;/span&gt; &lt;span class='s'&gt;&amp;quot;Please look up your google cookie and put it at the top of this file before running&amp;quot;&lt;/span&gt;
&lt;span class='k'&gt;else&lt;/span&gt;&lt;span class='p'&gt;:&lt;/span&gt;
    &lt;span class='nb'&gt;dict&lt;/span&gt;&lt;span class='p'&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;If it can help anyone, here is the list of the first 10 digits of all of the &lt;a href='http://www.ebyte.it/library/educards/constants/ConstantsOfPhysicsAndMath.html'&gt;physics constants&lt;/a&gt; on that site which are known to 10 digits or greater :&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;2997924580
1054571628
1256637061
8854187817
3767303134
1602176487
2417989454
7297352537
1370359996
2067833667
7748091700
1290640377
2581280755
1758820150
2426310217
2817940289
0665245855
3636947519
2002319304
6582106848
6582275971
2802495364
1097373156
5291772085
1660538782
3990312682
0119626564
5485799094
1602176487
1660538782
1672621637
1321409844
1410606662
5585694713
1674927211
1319590895
2002331841
0433073465
0857438230
1074553298
3243410198&lt;/code&gt;&lt;/pre&gt;</content>
  </entry>
  
  <entry>
    <title>What is "git"</title>
    <link href="http://blog.paulisageek.com/2009/07/what-is--git-.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2009/07/what-is--git-.html" />
    <updated>2009-07-15T00:00:00-07:00</updated>
    <published>2009-07-15T00:00:00-07:00</published>
    <id>http://blog.paulisageek.com/2009/07/what-is--git-</id>
    <content type="html">&lt;p&gt;I was just compiling git and found this at the top of the README file :&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;quot;git&amp;quot; can mean anything, depending on your mood.

 - random three-letter combination that is pronounceable, and not
   actually used by any common UNIX command.  The fact that it is a
   mispronunciation of &amp;quot;get&amp;quot; may or may not be relevant.
 - stupid. contemptible and despicable. simple. Take your pick from the
   dictionary of slang.
 - &amp;quot;global information tracker&amp;quot;: you&amp;#39;re in a good mood, and it actually
   works for you. Angels sing, and a light suddenly fills the room.
 - &amp;quot;goddamn idiotic truckload of sh*t&amp;quot;: when it breaks&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Finally, I know how to swear correctly when git isn&amp;#8217;t working!&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>OpenID Avatar</title>
    <link href="http://blog.paulisageek.com/2009/07/openid-avatar.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2009/07/openid-avatar.html" />
    <updated>2009-07-03T00:00:00-07:00</updated>
    <published>2009-07-03T00:00:00-07:00</published>
    <id>http://blog.paulisageek.com/2009/07/openid-avatar</id>
    <content type="html">&lt;p&gt;&lt;a href='http://gravatar.com'&gt;gravatar&lt;/a&gt; does a wonderful job with email avatars, but they have failed to support OpneIDs. I built a simple interface for associating your OpenID with an email, which is then proxied to gravatar.&lt;/p&gt;

&lt;p&gt;So I give you &lt;a href='http://paulisageek.com/openidavatar/'&gt;OpenID Avatar&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Simply change your gravatar urls to use &lt;b&gt;http://paulisageek.com/openidavatar/avatar/&lt;/b&gt; instead of &lt;b&gt;http://www.gravatar.com/avatar/&lt;/b&gt; Then you can use md5s of openids in addition to emails. If you want to use them both, just set the &lt;b&gt;email_md5&lt;/b&gt; param as well. See the img in this post for an example, or see the &lt;a href='http://paulisageek.com/openidavatar/site/implement'&gt;docs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;To setup your openid to email link, simply &lt;a href='http://paulisageek.com/openidavatar/site/login/'&gt;login&lt;/a&gt; and pick which email to associate with. Done.&lt;/p&gt;

&lt;p&gt;Suggestions are always welcome.&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>Easy OpenID Delegation with Yadis</title>
    <link href="http://blog.paulisageek.com/2009/06/easy-openid-delegation-with-yadis.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2009/06/easy-openid-delegation-with-yadis.html" />
    <updated>2009-06-29T00:00:00-07:00</updated>
    <published>2009-06-29T00:00:00-07:00</published>
    <id>http://blog.paulisageek.com/2009/06/easy-openid-delegation-with-yadis</id>
    <content type="html">&lt;p&gt;Lets say you have a site somewhere that you want to use as your openid. The easiest way to delegate OpenID is to put these in your &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;link href=&amp;#39;http://www.myopenid.com/server&amp;#39; rel=&amp;#39;openid.server&amp;#39;/&amp;gt;
&amp;lt;link href=&amp;#39;http://ptarjan.myopenid.com/&amp;#39; rel=&amp;#39;openid.delegate&amp;#39;/&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;That requires that the URL you are putting them on returns HTML. For me, I have a &lt;a href='http://en.wikipedia.org/wiki/HTTP_302'&gt;302&lt;/a&gt; redirect from &lt;a href='http://paulisageek.com'&gt;http://paulisageek.com&lt;/a&gt; to &lt;a href='http://blog.paulisageek.com'&gt;http://blog.paulisageek.com&lt;/a&gt; so all of my enpoints are getting my identity as &lt;a href='http://blog.paulisageek.com'&gt;http://blog.paulisageek.com&lt;/a&gt;. Not what I wanted.&lt;/p&gt;

&lt;p&gt;Enter : &lt;a href='http://en.wikipedia.org/wiki/Yadis'&gt;Yadis&lt;/a&gt;. I created a small Yadis file that says the same thing as those &lt;code&gt;link&lt;/code&gt; elements. &lt;a href='http://paulisageek.com/openid.xml'&gt;openid.xml&lt;/a&gt;.&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='xml'&gt;&lt;span class='cp'&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;xrds:XRDS&lt;/span&gt; &lt;span class='na'&gt;xmlns:xrds=&lt;/span&gt;&lt;span class='s'&gt;&amp;quot;xri://$xrds&amp;quot;&lt;/span&gt; &lt;span class='na'&gt;xmlns=&lt;/span&gt;&lt;span class='s'&gt;&amp;quot;xri://$xrd*($v*2.0)&amp;quot;&lt;/span&gt; &lt;span class='na'&gt;xmlns:openid=&lt;/span&gt;&lt;span class='s'&gt;&amp;quot;http://openid.net/xmlns/1.0&amp;quot;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;XRD&amp;gt;&lt;/span&gt;
    &lt;span class='nt'&gt;&amp;lt;Service&lt;/span&gt; &lt;span class='na'&gt;priority=&lt;/span&gt;&lt;span class='s'&gt;&amp;quot;10&amp;quot;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
        &lt;span class='nt'&gt;&amp;lt;Type&amp;gt;&lt;/span&gt;http://openid.net/signon/1.0&lt;span class='nt'&gt;&amp;lt;/Type&amp;gt;&lt;/span&gt;
        &lt;span class='nt'&gt;&amp;lt;URI&amp;gt;&lt;/span&gt;http://www.myopenid.com/server&lt;span class='nt'&gt;&amp;lt;/URI&amp;gt;&lt;/span&gt;
        &lt;span class='nt'&gt;&amp;lt;openid:Delegate&amp;gt;&lt;/span&gt;http://ptarjan.myopenid.com/&lt;span class='nt'&gt;&amp;lt;/openid:Delegate&amp;gt;&lt;/span&gt;
    &lt;span class='nt'&gt;&amp;lt;/Service&amp;gt;&lt;/span&gt;
    &lt;span class='nt'&gt;&amp;lt;Service&lt;/span&gt; &lt;span class='na'&gt;priority=&lt;/span&gt;&lt;span class='s'&gt;&amp;quot;20&amp;quot;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
        &lt;span class='nt'&gt;&amp;lt;Type&amp;gt;&lt;/span&gt;http://openid.net/signon/1.0&lt;span class='nt'&gt;&amp;lt;/Type&amp;gt;&lt;/span&gt;
        &lt;span class='nt'&gt;&amp;lt;URI&amp;gt;&lt;/span&gt;http://draft.blogger.com/openid-server.g&lt;span class='nt'&gt;&amp;lt;/URI&amp;gt;&lt;/span&gt;
        &lt;span class='nt'&gt;&amp;lt;openid:Delegate&amp;gt;&lt;/span&gt;http://paulisageek.blogspot.com/&lt;span class='nt'&gt;&amp;lt;/openid:Delegate&amp;gt;&lt;/span&gt;
    &lt;span class='nt'&gt;&amp;lt;/Service&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;/XRD&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;/xrds:XRDS&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;And then redirect it if the &lt;a href='http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html'&gt;HTTP Accept&lt;/a&gt; header is &lt;code&gt;application/xrds+xml&lt;/code&gt;. This is my index.php on &lt;code&gt;paulisageek.com&lt;/code&gt; :&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='php'&gt;&lt;span class='cp'&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class='k'&gt;if&lt;/span&gt; &lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nb'&gt;strpos&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nv'&gt;$_SERVER&lt;/span&gt;&lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='s1'&gt;&amp;#39;HTTP_ACCEPT&amp;#39;&lt;/span&gt;&lt;span class='p'&gt;],&lt;/span&gt; &lt;span class='s2'&gt;&amp;quot;application/xrds+xml&amp;quot;&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='o'&gt;!==&lt;/span&gt; &lt;span class='k'&gt;FALSE&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='p'&gt;{&lt;/span&gt;
    &lt;span class='nb'&gt;header&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='s2'&gt;&amp;quot;Content-Type: application/xrds+xml&amp;quot;&lt;/span&gt;&lt;span class='p'&gt;);&lt;/span&gt;
    &lt;span class='k'&gt;echo&lt;/span&gt; &lt;span class='nb'&gt;file_get_contents&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='s2'&gt;&amp;quot;openid.xml&amp;quot;&lt;/span&gt;&lt;span class='p'&gt;);&lt;/span&gt;
    &lt;span class='k'&gt;die&lt;/span&gt;&lt;span class='p'&gt;();&lt;/span&gt;
&lt;span class='p'&gt;}&lt;/span&gt; &lt;span class='k'&gt;else&lt;/span&gt; &lt;span class='p'&gt;{&lt;/span&gt;
    &lt;span class='nb'&gt;header&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='s2'&gt;&amp;quot;Location: http://blog.paulisageek.com&amp;quot;&lt;/span&gt;&lt;span class='p'&gt;);&lt;/span&gt;
    &lt;span class='k'&gt;die&lt;/span&gt;&lt;span class='p'&gt;();&lt;/span&gt;
&lt;span class='p'&gt;}&lt;/span&gt;
&lt;span class='cp'&gt;?&amp;gt;&lt;/span&gt;&lt;span class='x' /&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;And Voila, it work as an &lt;a href='http://openidenabled.com/resources/openid-test/checkup/start?openid_url=http%3A%2F%2Fpaulisageek.com'&gt;openid endpoint&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; You can also use &lt;a href='http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html'&gt;mod_rewrite&lt;/a&gt; to get people to your openid.xml file :&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='apache'&gt;    &lt;span class='nb'&gt;RewriteCond&lt;/span&gt; %{HTTP_ACCEPT} application/xrds\+xml
    &lt;span class='nb'&gt;RewriteRule&lt;/span&gt; .* openid.xml [T=application/xrds+xml,L]
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;You can replace &lt;code&gt;.*&lt;/code&gt; with the urls that you want to be allowed openids, but I intentionally have &lt;code&gt;.*&lt;/code&gt; so that I can have unlimited openids for myself.&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>Equivalent OpenIDs</title>
    <link href="http://blog.paulisageek.com/2009/06/equivalent-openids.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2009/06/equivalent-openids.html" />
    <updated>2009-06-28T00:00:00-07:00</updated>
    <published>2009-06-28T00:00:00-07:00</published>
    <id>http://blog.paulisageek.com/2009/06/equivalent-openids</id>
    <content type="html">&lt;p&gt;I&amp;#8217;ve been having a big dilemma whenever I use an openid. Which do I pick from the 8 that could be me? Talking to &lt;a href='http://josephsmarr.com/'&gt;Joseph Smarr&lt;/a&gt; at the &lt;a href='https://labs.mozilla.com/2009/06/mozilla-labs-meetup-thursday-625/'&gt;Mozilla labs meetup&lt;/a&gt; we stumbled upon a solution. &lt;a href='http://microformats.org/wiki/rel-me'&gt;rel-me&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I should register on any site with an openid that supports at least 1 rel-me link. Most sites where you can set your &amp;#8220;homepage&amp;#8221; will add the attribute &lt;b&gt;rel=&quot;me&quot;&lt;/b&gt; on the link. That basically says that &amp;#8220;I am also over there&amp;#8221;. If you can only link to one homepage, just make sure that from that homepage you can link out to other things you own on the internet. If you can put multiple &lt;b&gt;rel=&quot;me&quot;&lt;/b&gt; links, then just list everything you own. I link to my &lt;a href='http://friendfeed.com/ptarjan'&gt;friendfeed.com/ptarjan&lt;/a&gt; which has &lt;b&gt;rel=&quot;me&quot;&lt;/b&gt; links to all my other &amp;#8220;stuff&amp;#8221;.&lt;/p&gt;

&lt;p&gt;Then when I log into any openid provider they should check the social graph to see if the openid I just used is equivalent to any other one. Google made a &lt;a href='http://code.google.com/apis/socialgraph/'&gt;simple API&lt;/a&gt; to query the graph. This has one problem in that they crawl the graph recursivly on outbound links. Meaning they are trying to start at a webpage and find other things from there. That doesn&amp;#8217;t stop me from saying that &lt;b&gt;twitter.com/cnn&lt;/b&gt; is me. For identity you want to crawl the graph backwards. Similar as to how PageRank only trusts inbound links.&lt;/p&gt;

&lt;p&gt;I made a &lt;a href='http://github.com/ptarjan/yql-tables/blob/b46262062ea2ae715efe2e0d95b6cb2967c0f6a4/socialgraph/socialgraph.trustsme.xml'&gt;YQL execute&lt;/a&gt; file (&lt;a href='http://paulisageek.com/yql-tables/socialgraph/socialgraph.trustsme.xml'&gt;raw code&lt;/a&gt;) that will compute which URIs trust a given URI.&lt;/p&gt;

&lt;p&gt;For example, if I log in with&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;http://paulisageek.com&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;then the website that I logged in to should make the &lt;a href='http://query.yahooapis.com/v1/public/yql?q=USE%20&amp;apos;http%3A%2F%2Fpaulisageek.com%2Fyql-tables%2Fsocialgraph%2Fsocialgraph.trustsme.xml&amp;apos;%3B%20SELECT%20*%20FROM%20socialgraph.trustsme%20WHERE%20q%3D&amp;apos;http%3A%2F%2Fpaulisageek.com&amp;apos;&amp;format=xml&amp;env=http%3A%2F%2Fdatatables.org%2Falltables.env'&gt;YQL call&lt;/a&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;USE &amp;#39;http://paulisageek.com/yql-tables/socialgraph/socialgraph.trustsme.xml&amp;#39;; SELECT * FROM socialgraph.trustsme WHERE q=&amp;#39;http://paulisageek.com&amp;#39;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;which returns something like&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='xml'&gt;&lt;span class='nt'&gt;&amp;lt;query&amp;gt;&lt;/span&gt;
    &lt;span class='nt'&gt;&amp;lt;results&amp;gt;&lt;/span&gt;
        &lt;span class='nt'&gt;&amp;lt;result&amp;gt;&lt;/span&gt;
            &lt;span class='nt'&gt;&amp;lt;trustsme&amp;gt;&lt;/span&gt;http://www.paulisageek.com/&lt;span class='nt'&gt;&amp;lt;/trustsme&amp;gt;&lt;/span&gt;
            &lt;span class='nt'&gt;&amp;lt;trustsme&amp;gt;&lt;/span&gt;http://www.linkedin.com/pub/dir/paul/tarjan&lt;span class='nt'&gt;&amp;lt;/trustsme&amp;gt;&lt;/span&gt;
            &lt;span class='nt'&gt;&amp;lt;trustsme&amp;gt;&lt;/span&gt;http://stackoverflow.com/users/90025/ptarjan&lt;span class='nt'&gt;&amp;lt;/trustsme&amp;gt;&lt;/span&gt;
            &lt;span class='nt'&gt;&amp;lt;trustsme&amp;gt;&lt;/span&gt;http://www.mybloglog.com/buzz/members/ptarjan/&lt;span class='nt'&gt;&amp;lt;/trustsme&amp;gt;&lt;/span&gt;
            &lt;span class='nt'&gt;&amp;lt;trustsme&amp;gt;&lt;/span&gt;http://digg.com/users/paralax/&lt;span class='nt'&gt;&amp;lt;/trustsme&amp;gt;&lt;/span&gt;
            &lt;span class='nt'&gt;&amp;lt;trustsme&amp;gt;&lt;/span&gt;http://www.google.com/profiles/114701835473476527933&lt;span class='nt'&gt;&amp;lt;/trustsme&amp;gt;&lt;/span&gt;
            &lt;span class='nt'&gt;&amp;lt;trustsme&amp;gt;&lt;/span&gt;http://www.flickr.com/photos/ptarjan/&lt;span class='nt'&gt;&amp;lt;/trustsme&amp;gt;&lt;/span&gt;
            &lt;span class='nt'&gt;&amp;lt;trustsme&amp;gt;&lt;/span&gt;http://www.linkedin.com/in/paultarjan&lt;span class='nt'&gt;&amp;lt;/trustsme&amp;gt;&lt;/span&gt;
            &lt;span class='nt'&gt;&amp;lt;trustsme&amp;gt;&lt;/span&gt;http://twitter.com/ptarjan&lt;span class='nt'&gt;&amp;lt;/trustsme&amp;gt;&lt;/span&gt;
            &lt;span class='nt'&gt;&amp;lt;trustsme&amp;gt;&lt;/span&gt;http://github.com/ptarjan&lt;span class='nt'&gt;&amp;lt;/trustsme&amp;gt;&lt;/span&gt;
            &lt;span class='nt'&gt;&amp;lt;trustsme&amp;gt;&lt;/span&gt;http://www.hulu.com/profiles/ptarjan&lt;span class='nt'&gt;&amp;lt;/trustsme&amp;gt;&lt;/span&gt;
            &lt;span class='nt'&gt;&amp;lt;trustsme&amp;gt;&lt;/span&gt;http://stackoverflow.com/users/90025/paul-tarjan&lt;span class='nt'&gt;&amp;lt;/trustsme&amp;gt;&lt;/span&gt;
            &lt;span class='nt'&gt;&amp;lt;trustsme&amp;gt;&lt;/span&gt;http://friendfeed.com/ptarjan&lt;span class='nt'&gt;&amp;lt;/trustsme&amp;gt;&lt;/span&gt;
            &lt;span class='nt'&gt;&amp;lt;trustsme&amp;gt;&lt;/span&gt;http://www.google.com/profiles/ptarjan&lt;span class='nt'&gt;&amp;lt;/trustsme&amp;gt;&lt;/span&gt;
            &lt;span class='nt'&gt;&amp;lt;trustsme&amp;gt;&lt;/span&gt;http://www.flickr.com/photos/78332988@N00/&lt;span class='nt'&gt;&amp;lt;/trustsme&amp;gt;&lt;/span&gt;
            &lt;span class='nt'&gt;&amp;lt;trustsme&amp;gt;&lt;/span&gt;sgn://twitter.com/?pk=14757201&lt;span class='nt'&gt;&amp;lt;/trustsme&amp;gt;&lt;/span&gt;
        &lt;span class='nt'&gt;&amp;lt;/result&amp;gt;&lt;/span&gt;
    &lt;span class='nt'&gt;&amp;lt;/results&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;/query&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;and then walk down that list starting at the top, looking at all their user accounts to see if any matches. The first match is the account they should be logged into.&lt;/p&gt;

&lt;p&gt;Every one of these trust relationships is explicitly put there by the user by a link with &lt;b&gt;rel=&quot;me&quot;&lt;/b&gt; so it can be trusted just as much as the original openid provider. For example, if there is a link on &lt;code&gt;http://twitter.com/ptarjan&lt;/code&gt; with &lt;b&gt;rel=&quot;me&quot;&lt;/b&gt; to &lt;code&gt;http://paulisageek.com&lt;/code&gt;, my twitter account is giving permission to paulisageek to modify any account it owns. If my twitter account were to be hacked to point to another place with &lt;b&gt;rel=&quot;me&quot;&lt;/b&gt;, that is equivalent to the openid login for that URI to be hacked as well. All sites that I am aware of use the same credentials to edit the &lt;b&gt;rel=&quot;me&quot;&lt;/b&gt; link as for the openid identity login. With this assumption, the trust relationship is valid.&lt;/p&gt;

&lt;p&gt;In conclusion, every site that is using openid, should check inbound &lt;b&gt;rel=&quot;me&quot;&lt;/b&gt; links to the openid URI. Using the &lt;a href='http://socialgraph.apis.google.com/'&gt;socialgraph API&lt;/a&gt; I created a helper &lt;a href='http://query.yahooapis.com/v1/public/yql?q=USE%20&amp;apos;http%3A%2F%2Fpaulisageek.com%2Fyql-tables%2Fsocialgraph%2Fsocialgraph.trustsme.xml&amp;apos;%3B%20SELECT%20*%20FROM%20socialgraph.trustsme%20WHERE%20q%3D&amp;apos;http%3A%2F%2Fpaulisageek.com&amp;apos;&amp;format=xml&amp;env=http%3A%2F%2Fdatatables.org%2Falltables.env'&gt;REST API&lt;/a&gt; that can be used to take any URI and find other URIs that trust it.&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>Blogger Theme with hAtom Microformat</title>
    <link href="http://blog.paulisageek.com/2009/06/blogger-theme-with-hatom-microformat.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2009/06/blogger-theme-with-hatom-microformat.html" />
    <updated>2009-06-27T00:00:00-07:00</updated>
    <published>2009-06-27T00:00:00-07:00</published>
    <id>http://blog.paulisageek.com/2009/06/blogger-theme-with-hatom-microformat</id>
    <content type="html">&lt;p&gt;I just updated my theme to be &lt;a href='http://www.blogcrowds.com/resources/view_template.php/garland_73'&gt;Garland&lt;/a&gt; but I found that it didn&amp;#8217;t include the &lt;a href='http://microformats.com/wiki/hatom'&gt;hAtom&lt;/a&gt; &lt;a href='http://microformats/'&gt;microformat&lt;/a&gt;. So I tweaked it a little bit, and now I have a beautiful microformat. If anyone else wants to use it, just copy and paste this into the &amp;#8220;edit template&amp;#8221; part of your blogger layout.&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='html'&gt;&lt;span class='cp'&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;/span&gt;
&lt;span class='cp'&gt;&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Strict//EN&amp;quot; &amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&amp;quot;&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;html&lt;/span&gt; &lt;span class='na'&gt;xmlns=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;http://www.w3.org/1999/xhtml&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;xmlns:b=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;http://www.google.com/2005/gml/b&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;xmlns:data=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;http://www.google.com/2005/gml/data&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;xmlns:expr=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;http://www.google.com/2005/gml/expr&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;b:include&lt;/span&gt; &lt;span class='na'&gt;data=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;blog&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;name=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;all-head-content&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;title&amp;gt;&amp;lt;data:blog&lt;/span&gt;&lt;span class='err'&gt;.&lt;/span&gt;&lt;span class='na'&gt;pageTitle&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;b:skin&amp;gt;&lt;/span&gt;&lt;span class='cp'&gt;&amp;lt;![CDATA[/*&lt;/span&gt;
&lt;span class='cp'&gt;-----------------------------------------------&lt;/span&gt;
&lt;span class='cp'&gt;Blogger Template Style&lt;/span&gt;
&lt;span class='cp'&gt;Name:     Garland&lt;/span&gt;
&lt;span class='cp'&gt;Designer: Steven Wittens&lt;/span&gt;
&lt;span class='cp'&gt;URL:      http://acko.net/&lt;/span&gt;

&lt;span class='cp'&gt;Modified by: http://www.blogcrowds.com&lt;/span&gt;
&lt;span class='cp'&gt;Support:     http://www.blogcrowds.com&lt;/span&gt;
&lt;span class='cp'&gt;----------------------------------------------- */&lt;/span&gt;

&lt;span class='cp'&gt;a:link, a:visited {&lt;/span&gt;
&lt;span class='cp'&gt;color: #027ac6;&lt;/span&gt;
&lt;span class='cp'&gt;text-decoration: none;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;a:hover {&lt;/span&gt;
&lt;span class='cp'&gt;color: #0062a0;&lt;/span&gt;
&lt;span class='cp'&gt;text-decoration: underline;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;a:active, a.active {&lt;/span&gt;
&lt;span class='cp'&gt;color: #5895be;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;body {&lt;/span&gt;
&lt;span class='cp'&gt;background: #edf5fa;&lt;/span&gt;
&lt;span class='cp'&gt;color: #494949;&lt;/span&gt;
&lt;span class='cp'&gt;font: 12px/170% Verdana, Arial, Helvetica, sans-serif;&lt;/span&gt;
&lt;span class='cp'&gt;margin: 0;&lt;/span&gt;
&lt;span class='cp'&gt;padding: 0;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;body.sidebar-left  #footer {&lt;/span&gt;
&lt;span class='cp'&gt;margin-left: -210px;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;/* So we move the #center container over the sidebars to compensate */&lt;/span&gt;
&lt;span class='cp'&gt;body.sidebar-left #center {&lt;/span&gt;
&lt;span class='cp'&gt;margin-left: -210px;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;/* And add blanks left and right for the sidebars to fill */&lt;/span&gt;
&lt;span class='cp'&gt;body.sidebar-left #squeeze {&lt;/span&gt;
&lt;span class='cp'&gt;margin-left: 210px;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;body.sidebar-right #center {&lt;/span&gt;
&lt;span class='cp'&gt;margin-right: -210px;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;body.sidebar-right #footer {&lt;/span&gt;
&lt;span class='cp'&gt;margin-right: -210px;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;body.sidebar-right #squeeze {&lt;/span&gt;
&lt;span class='cp'&gt;margin-right: 210px;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;body.sidebars #center {&lt;/span&gt;
&lt;span class='cp'&gt;margin: 0 -210px;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;body.sidebars #footer {&lt;/span&gt;
&lt;span class='cp'&gt;margin: 0 -210px;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;body.sidebars #squeeze {&lt;/span&gt;
&lt;span class='cp'&gt;margin: 0 210px;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;.meta{margin:0 0 30px 0}&lt;/span&gt;

&lt;span class='cp'&gt;.sidebar .widget{margin:0 0 20px 0}&lt;/span&gt;

&lt;span class='cp'&gt;dl {&lt;/span&gt;
&lt;span class='cp'&gt;margin: 0.5em 0 1em 1.5em;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;dl dd {&lt;/span&gt;
&lt;span class='cp'&gt;margin: 0 0 .5em 1.5em;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;dl dt {&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;h1 {&lt;/span&gt;
&lt;span class='cp'&gt;font-size: 170%;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;h1, h2, h3, h4, h5, h6 {&lt;/span&gt;
&lt;span class='cp'&gt;font-family: Helvetica, Arial, sans-serif;&lt;/span&gt;
&lt;span class='cp'&gt;font-weight: normal;&lt;/span&gt;
&lt;span class='cp'&gt;margin: 0;&lt;/span&gt;
&lt;span class='cp'&gt;padding: 0;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;h2 {&lt;/span&gt;
&lt;span class='cp'&gt;font-size: 160%;&lt;/span&gt;
&lt;span class='cp'&gt;line-height: 130%;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;h3, .sidebar h2 {&lt;/span&gt;
&lt;span class='cp'&gt;font-size: 140%;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;h4 {&lt;/span&gt;
&lt;span class='cp'&gt;font-size: 130%;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;h5 {&lt;/span&gt;
&lt;span class='cp'&gt;font-size: 120%;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;h6 {&lt;/span&gt;
&lt;span class='cp'&gt;font-size: 110%;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;hr {&lt;/span&gt;
&lt;span class='cp'&gt;background: #5294c1;&lt;/span&gt;
&lt;span class='cp'&gt;border: none;&lt;/span&gt;
&lt;span class='cp'&gt;height: 1px;&lt;/span&gt;
&lt;span class='cp'&gt;margin: 0;&lt;/span&gt;
&lt;span class='cp'&gt;padding: 0;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;img, a img {&lt;/span&gt;
&lt;span class='cp'&gt;border: none;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;input {&lt;/span&gt;
&lt;span class='cp'&gt;color: #494949;&lt;/span&gt;
&lt;span class='cp'&gt;font: 12px/100% Verdana, Arial, Helvetica, sans-serif;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;p {&lt;/span&gt;
&lt;span class='cp'&gt;margin: 0.6em 0 1.2em;&lt;/span&gt;
&lt;span class='cp'&gt;padding: 0;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;textarea, select {&lt;/span&gt;
&lt;span class='cp'&gt;color: #494949;&lt;/span&gt;
&lt;span class='cp'&gt;font: 12px/160% Verdana, Arial, Helvetica, sans-serif;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;.content ul {&lt;/span&gt;
&lt;span class='cp'&gt;margin: 0.5em 0 1em;&lt;/span&gt;
&lt;span class='cp'&gt;padding: 0;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;.content ul li {&lt;/span&gt;
&lt;span class='cp'&gt;margin: 0.4em 0 0.4em 1.5em;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;ul, quote, code, fieldset {&lt;/span&gt;
&lt;span class='cp'&gt;margin: .5em 0;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;/**&lt;/span&gt;
&lt;span class='cp'&gt;* Primary navigation&lt;/span&gt;
&lt;span class='cp'&gt;*/&lt;/span&gt;
&lt;span class='cp'&gt;ul.primary-links {&lt;/span&gt;
&lt;span class='cp'&gt;float: right;&lt;/span&gt;
&lt;span class='cp'&gt;margin: 0;&lt;/span&gt;
&lt;span class='cp'&gt;padding: 0;&lt;/span&gt;
&lt;span class='cp'&gt;position: relative;&lt;/span&gt;
&lt;span class='cp'&gt;z-index: 4;&lt;/span&gt;
&lt;span class='cp'&gt;/* Hide links - no idea how to get rid of them */&lt;/span&gt;
&lt;span class='cp'&gt;       display : none;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;ul.primary-links li {&lt;/span&gt;
&lt;span class='cp'&gt;background: none;&lt;/span&gt;
&lt;span class='cp'&gt;float: left;&lt;/span&gt;
&lt;span class='cp'&gt;margin: 0;&lt;/span&gt;
&lt;span class='cp'&gt;padding: 0;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;ul.primary-links li a, ul.primary-links li a:link, ul.primary-links li a:visited {&lt;/span&gt;
&lt;span class='cp'&gt;background: transparent url(&amp;quot;http://s61.photobucket.com/albums/h59/c_stavanger/garland/bg-navigation-item.png&amp;quot;) no-repeat 50% 0;&lt;/span&gt;
&lt;span class='cp'&gt;color: #fff;&lt;/span&gt;
&lt;span class='cp'&gt;display: block;&lt;/span&gt;
&lt;span class='cp'&gt;margin: 0 1em;&lt;/span&gt;
&lt;span class='cp'&gt;padding: .75em 0 0;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;ul.primary-links li a:hover, ul.primary-links li a.active {&lt;/span&gt;
&lt;span class='cp'&gt;background: transparent url(&amp;quot;http://s61.photobucket.com/albums/h59/c_stavanger/garland/bg-navigation-item-hover.png&amp;quot;) no-repeat 50% 0;&lt;/span&gt;
&lt;span class='cp'&gt;color: #fff;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;.nextprev {&lt;/span&gt;
&lt;span class='cp'&gt;margin-bottom: 60px;&lt;/span&gt;
&lt;span class='cp'&gt;margin-top: 10px;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;.alignleft {&lt;/span&gt;
&lt;span class='cp'&gt;float: left;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;.alignright {&lt;/span&gt;
&lt;span class='cp'&gt;float: right;&lt;/span&gt;
&lt;span class='cp'&gt;clear: both;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;.commentlist {&lt;/span&gt;
&lt;span class='cp'&gt;list-style: none;&lt;/span&gt;
&lt;span class='cp'&gt;margin: 1em 0 3em;&lt;/span&gt;
&lt;span class='cp'&gt;padding: 0;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;.commentlist .alt {&lt;/span&gt;
&lt;span class='cp'&gt;background: #edf5fa;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;.commentlist .avatar {&lt;/span&gt;
&lt;span class='cp'&gt;border: 1px dotted #ccc;&lt;/span&gt;
&lt;span class='cp'&gt;float: right;&lt;/span&gt;
&lt;span class='cp'&gt;margin-right: 25px;&lt;/span&gt;
&lt;span class='cp'&gt;padding: 2px;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;.commentlist cite {&lt;/span&gt;
&lt;span class='cp'&gt;font-weight: bold;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;.commentlist li {&lt;/span&gt;
&lt;span class='cp'&gt;padding: 1em 2em;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;.menu {&lt;/span&gt;
&lt;span class='cp'&gt;list-style: none;&lt;/span&gt;
&lt;span class='cp'&gt;margin: 0;&lt;/span&gt;
&lt;span class='cp'&gt;padding: 0;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;.menu li li, .item-list ul li, li.leaf, .links li, .sidebar .li {&lt;/span&gt;
&lt;span class='cp'&gt;background: transparent url(&amp;quot;http://s61.photobucket.com/albums/h59/c_stavanger/garland/menu-leaf.gif&amp;quot;) no-repeat 0 .35em;&lt;/span&gt;
&lt;span class='cp'&gt;list-style-image: none;&lt;/span&gt;
&lt;span class='cp'&gt;list-style-type: none;&lt;/span&gt;
&lt;span class='cp'&gt;padding: 0 0 .3em 13px;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;.post {&lt;/span&gt;
&lt;span class='cp'&gt;margin-bottom: 2em;&lt;/span&gt;
&lt;span class='cp'&gt;overflow: hidden;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;#header h1, #header h1 a {&lt;/span&gt;
&lt;span class='cp'&gt;color: #fff;&lt;/span&gt;
&lt;span class='cp'&gt;font-size: 1.5em;&lt;/span&gt;
&lt;span class='cp'&gt;font-weight: normal;&lt;/span&gt;
&lt;span class='cp'&gt;text-decoration: none;&lt;/span&gt;
&lt;span class='cp'&gt;text-shadow: #1659ac 0px 1px 3px;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;#navigation {&lt;/span&gt;
&lt;span class='cp'&gt;background: url(&amp;quot;http://s61.photobucket.com/albums/h59/c_stavanger/garland/bg-navigation.png&amp;quot;) repeat-x 50% 100%;&lt;/span&gt;
&lt;span class='cp'&gt;height: 1em;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;#s {&lt;/span&gt;
&lt;span class='cp'&gt;margin-bottom: 5px;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;/* Layout and images */&lt;/span&gt;
&lt;span class='cp'&gt;#wrapper {&lt;/span&gt;
&lt;span class='cp'&gt;background: url(&amp;quot;http://s61.photobucket.com/albums/h59/c_stavanger/garland/body.png&amp;quot;) #edf5fa repeat-x 50% 0;&lt;/span&gt;
&lt;span class='cp'&gt;height: 600px;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;#wrapper #container {&lt;/span&gt;
&lt;span class='cp'&gt;margin: 0 auto;&lt;/span&gt;
&lt;span class='cp'&gt;max-width: 1270px;&lt;/span&gt;
&lt;span class='cp'&gt;padding: 0 20px;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;/* We must define 100% width to avoid the body being too narrow for near-empty pages */&lt;/span&gt;
&lt;span class='cp'&gt;#wrapper #container #center {&lt;/span&gt;
&lt;span class='cp'&gt;float: left;&lt;/span&gt;
&lt;span class='cp'&gt;width: 100%;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;/* Now we add the backgrounds for the main content shading */&lt;/span&gt;
&lt;span class='cp'&gt;#wrapper #container #center #squeeze {&lt;/span&gt;
&lt;span class='cp'&gt;background: url(&amp;quot;http://s61.photobucket.com/albums/h59/c_stavanger/garland/bg-content.png&amp;quot;) #fff repeat-x 50% 0;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;#wrapper #container #center .right-corner {&lt;/span&gt;
&lt;span class='cp'&gt;background: transparent url(&amp;quot;http://s61.photobucket.com/albums/h59/c_stavanger/garland/bg-content-right.png&amp;quot;) no-repeat 100% 0;&lt;/span&gt;
&lt;span class='cp'&gt;left: 10px;&lt;/span&gt;
&lt;span class='cp'&gt;position: relative;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;#wrapper #container #center .right-corner .left-corner {&lt;/span&gt;
&lt;span class='cp'&gt;background: transparent url(&amp;quot;http://s61.photobucket.com/albums/h59/c_stavanger/garland/bg-content-left.png&amp;quot;) no-repeat 0 0;&lt;/span&gt;
&lt;span class='cp'&gt;left: -10px;&lt;/span&gt;
&lt;span class='cp'&gt;margin-left: -10px;&lt;/span&gt;
&lt;span class='cp'&gt;min-height: 400px;&lt;/span&gt;
&lt;span class='cp'&gt;padding: 60px 25px 5em 35px;&lt;/span&gt;
&lt;span class='cp'&gt;position: relative;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;#wrapper #container #footer {&lt;/span&gt;
&lt;span class='cp'&gt;clear: both;&lt;/span&gt;
&lt;span class='cp'&gt;color: #898989;&lt;/span&gt;
&lt;span class='cp'&gt;float: none;&lt;/span&gt;
&lt;span class='cp'&gt;margin: 4em 0 -3em;&lt;/span&gt;
&lt;span class='cp'&gt;text-align: center;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;#wrapper #container #header {&lt;/span&gt;
&lt;span class='cp'&gt;height: 80px;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;#wrapper #container #header #logo-floater {&lt;/span&gt;
&lt;span class='cp'&gt;position: absolute;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;#wrapper #container #header h1, #wrapper #container #header h1 a:link, #wrapper #container #header h1 a:visited {&lt;/span&gt;
&lt;span class='cp'&gt;font-weight: bold;&lt;/span&gt;
&lt;span class='cp'&gt;line-height: 120px;&lt;/span&gt;
&lt;span class='cp'&gt;position: relative;&lt;/span&gt;
&lt;span class='cp'&gt;white-space: nowrap;&lt;/span&gt;
&lt;span class='cp'&gt;z-index: 2;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;/* We ensure the sidebars are still clickable using z-index */&lt;/span&gt;
&lt;span class='cp'&gt;#wrapper #container .sidebar {&lt;/span&gt;
&lt;span class='cp'&gt;float: left;&lt;/span&gt;
&lt;span class='cp'&gt;margin: 60px 0 5em;&lt;/span&gt;
&lt;span class='cp'&gt;width: 208px;&lt;/span&gt;
&lt;span class='cp'&gt;z-index: 2;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;body &amp;gt; #wrapper #container .sidebar {&lt;/span&gt;
&lt;span class='cp'&gt;position: relative;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;#sidebar-left li {&lt;/span&gt;
&lt;span class='cp'&gt;margin-right: 10px;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;#sidebar-right ul {&lt;/span&gt;
&lt;span class='cp'&gt;margin-left: 20px;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;#sidebar2 {margin:0 0 0 20px;}&lt;/span&gt;

&lt;span class='cp'&gt;#sidebar-right li ul {&lt;/span&gt;
&lt;span class='cp'&gt;margin-left: 0;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;.sidebar ul {&lt;/span&gt;
&lt;span class='cp'&gt;margin-left: 0;&lt;/span&gt;
&lt;span class='cp'&gt;padding: 0;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;.content img {&lt;/span&gt;
&lt;span class='cp'&gt;margin-left: 10px;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;#comment {&lt;/span&gt;
&lt;span class='cp'&gt;width: 400px;&lt;/span&gt;
&lt;span class='cp'&gt;}&lt;/span&gt;

&lt;span class='cp'&gt;]]&amp;gt;&lt;/span&gt;&lt;span class='nt'&gt;&amp;lt;/b:skin&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;

&lt;span class='nt'&gt;&amp;lt;body&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;sidebars&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;navigation&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;

&lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;wrapper&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;clear-block&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;container&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;

   &lt;span class='c'&gt;&amp;lt;!-- skip links for text browsers --&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;span&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;skiplinks&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;style=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;display:none;&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;href=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;#main&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;skip to main &lt;span class='nt'&gt;&amp;lt;/a&amp;gt;&lt;/span&gt; |
     &lt;span class='nt'&gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;href=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;#sidebar&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;skip to sidebar&lt;span class='nt'&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;

   &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;header&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;b:section&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;header&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;header&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;maxwidgets=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;1&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;showaddelement=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;no&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;b:widget&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;Header1&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;locked=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;true&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;title=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;paulisageek (Header)&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;type=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;Header&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;b:includable&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;title&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:blog.url == data:blog.homepageUrl&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;data:title/&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;b:else/&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;expr:href=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:blog.homepageUrl&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;data:title/&amp;gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;/b:includable&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;b:includable&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;description&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;descriptionwrapper&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;p&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;description&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;span&amp;gt;&amp;lt;data:description/&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;/b:includable&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;b:includable&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;main&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;logo-floater&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;
      &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:blog.url == data:blog.homepageUrl&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
       &lt;span class='nt'&gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;href=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;#&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;data:title/&amp;gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;b:else/&amp;gt;&lt;/span&gt;
       &lt;span class='nt'&gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;expr:href=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:blog.homepageUrl&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;data:title/&amp;gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;ul&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;links primary-links&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;li&amp;gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;expr:href=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:blog.homepageUrl&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;data:title/&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;/ul&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;/b:includable&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;/b:widget&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;/b:section&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

   &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;sidebar&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;sidebar-left&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;b:section&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;side&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;sidebar1&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;preferred=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;yes&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;b:widget&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;Feed1&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;locked=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;false&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;title=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;FriendFeed - ptarjan&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;type=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;Feed&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;b:includable&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;main&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;h2&amp;gt;&amp;lt;data:title/&amp;gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;widget-content&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;expr:id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:widget.instanceId + &amp;quot;_feedItemListDisplay&amp;quot;&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;span&lt;/span&gt; &lt;span class='na'&gt;style=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;filter: alpha(25); opacity: 0.25;&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
       &lt;span class='nt'&gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;expr:href=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:feedUrl&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;data:loadingMsg/&amp;gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;b:include&lt;/span&gt; &lt;span class='na'&gt;name=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;quickedit&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;/b:includable&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;/b:widget&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;b:widget&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;BlogArchive1&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;locked=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;false&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;title=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;Blog Archive&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;type=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;BlogArchive&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;b:includable&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;main&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:title&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;h2&amp;gt;&amp;lt;data:title/&amp;gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;widget-content&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;ArchiveList&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;expr:id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:widget.instanceId + &amp;quot;_ArchiveList&amp;quot;&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:style == &amp;quot;HIERARCHY&amp;quot;&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
    &lt;span class='nt'&gt;&amp;lt;b:include&lt;/span&gt; &lt;span class='na'&gt;data=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;name=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;interval&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:style == &amp;quot;FLAT&amp;quot;&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;b:include&lt;/span&gt; &lt;span class='na'&gt;data=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;name=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;flat&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:style == &amp;quot;MENU&amp;quot;&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;b:include&lt;/span&gt; &lt;span class='na'&gt;data=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;name=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;menu&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;b:include&lt;/span&gt; &lt;span class='na'&gt;name=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;quickedit&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;/b:includable&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;b:includable&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;flat&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;var=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;ul&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;b:loop&lt;/span&gt; &lt;span class='na'&gt;values=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:data&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;var=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;i&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;li&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;archivedate&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
       &lt;span class='nt'&gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;expr:href=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:i.url&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;data:i&lt;/span&gt;&lt;span class='err'&gt;.&lt;/span&gt;&lt;span class='na'&gt;name&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&amp;lt;/a&amp;gt;&lt;/span&gt; (&lt;span class='nt'&gt;&amp;lt;data:i&lt;/span&gt;&lt;span class='err'&gt;.&lt;/span&gt;&lt;span class='na'&gt;post-count&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;)
     &lt;span class='nt'&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;/b:loop&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;/ul&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;/b:includable&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;b:includable&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;menu&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;var=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;select&lt;/span&gt; &lt;span class='na'&gt;expr:id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:widget.instanceId + &amp;quot;_ArchiveMenu&amp;quot;&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;option&lt;/span&gt; &lt;span class='na'&gt;value=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;data:title/&amp;gt;&amp;lt;/option&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;b:loop&lt;/span&gt; &lt;span class='na'&gt;values=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:data&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;var=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;i&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;option&lt;/span&gt; &lt;span class='na'&gt;expr:value=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:i.url&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;data:i&lt;/span&gt;&lt;span class='err'&gt;.&lt;/span&gt;&lt;span class='na'&gt;name&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt; (&lt;span class='nt'&gt;&amp;lt;data:i&lt;/span&gt;&lt;span class='err'&gt;.&lt;/span&gt;&lt;span class='na'&gt;post-count&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;)&lt;span class='nt'&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;/b:loop&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;/select&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;/b:includable&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;b:includable&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;interval&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;var=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;intervalData&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;b:loop&lt;/span&gt; &lt;span class='na'&gt;values=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:intervalData&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;var=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;i&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;ul&amp;gt;&lt;/span&gt;
       &lt;span class='nt'&gt;&amp;lt;li&lt;/span&gt; &lt;span class='na'&gt;expr:class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;&amp;quot;archivedate &amp;quot; + data:i.expclass&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
         &lt;span class='nt'&gt;&amp;lt;b:include&lt;/span&gt; &lt;span class='na'&gt;data=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;i&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;name=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;toggle&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;
         &lt;span class='nt'&gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;post-count-link&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;expr:href=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:i.url&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;data:i&lt;/span&gt;&lt;span class='err'&gt;.&lt;/span&gt;&lt;span class='na'&gt;name&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
           &lt;span class='nt'&gt;&amp;lt;span&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;post-count&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;dir=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;ltr&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;(&lt;span class='nt'&gt;&amp;lt;data:i&lt;/span&gt;&lt;span class='err'&gt;.&lt;/span&gt;&lt;span class='na'&gt;post-count&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;)&lt;span class='nt'&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
         &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:i.data&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
           &lt;span class='nt'&gt;&amp;lt;b:include&lt;/span&gt; &lt;span class='na'&gt;data=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;i.data&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;name=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;interval&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;
         &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;
         &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:i.posts&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
           &lt;span class='nt'&gt;&amp;lt;b:include&lt;/span&gt; &lt;span class='na'&gt;data=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;i.posts&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;name=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;posts&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;
         &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;
       &lt;span class='nt'&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;/ul&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;/b:loop&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;/b:includable&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;b:includable&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;toggle&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;var=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;interval&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:interval.toggleId&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:interval.expclass == &amp;quot;expanded&amp;quot;&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;toggle&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;expr:href=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:widget.actionUrl + &amp;quot;&amp;amp;amp;action=toggle&amp;quot; +       &amp;quot;&amp;amp;amp;dir=close&amp;amp;amp;toggle=&amp;quot; + data:interval.toggleId +       &amp;quot;&amp;amp;amp;toggleopen=&amp;quot; + data:toggleopen&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
       &lt;span class='nt'&gt;&amp;lt;span&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;zippy toggle-open&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;▼ &lt;span class='nt'&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;b:else/&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;toggle&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;expr:href=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:widget.actionUrl + &amp;quot;&amp;amp;amp;action=toggle&amp;quot; +         &amp;quot;&amp;amp;amp;dir=open&amp;amp;amp;toggle=&amp;quot; + data:interval.toggleId +         &amp;quot;&amp;amp;amp;toggleopen=&amp;quot; + data:toggleopen&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
         &lt;span class='nt'&gt;&amp;lt;span&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;zippy&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
           &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:blog.languageDirection == &amp;quot;rtl&amp;quot;&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
             ◄
           &lt;span class='nt'&gt;&amp;lt;b:else/&amp;gt;&lt;/span&gt;
             ►
           &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;
         &lt;span class='nt'&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;/b:includable&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;b:includable&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;posts&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;var=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;posts&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;ul&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;posts&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;b:loop&lt;/span&gt; &lt;span class='na'&gt;values=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:posts&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;var=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;i&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;li&amp;gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;expr:href=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:i.url&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;data:i&lt;/span&gt;&lt;span class='err'&gt;.&lt;/span&gt;&lt;span class='na'&gt;title&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;/b:loop&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;/ul&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;/b:includable&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;/b:widget&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;b:widget&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;AdSense1&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;locked=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;false&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;title=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;type=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;AdSense&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;b:includable&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;main&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;widget-content&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;data:adCode/&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;/b:includable&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;/b:widget&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;/b:section&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

     &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;crosscol-wrapper&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;style=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;text-align:center&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
       &lt;span class='nt'&gt;&amp;lt;b:section&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;crosscol&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;crosscol&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;showaddelement=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;no&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

     &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;center&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;squeeze&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;right-corner&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;left-corner&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
     &lt;span class='c'&gt;&amp;lt;!-- begin content --&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;node&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
       &lt;span class='nt'&gt;&amp;lt;b:section&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;main&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;main&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;showaddelement=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;no&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;b:widget&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;Blog1&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;locked=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;true&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;title=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;Blog Posts&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;type=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;Blog&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;b:includable&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;nextprev&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;blog-pager hentry&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;blog-pager&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:newerPageUrl&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;span&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;blog-pager-newer-link&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;blog-pager-newer-link&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;expr:href=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:newerPageUrl&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;expr:id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:widget.instanceId + &amp;quot;_blog-pager-newer-link&amp;quot;&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;expr:title=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:newerPageTitle&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;data:newerPageTitle/&amp;gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;

   &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:olderPageUrl&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;span&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;blog-pager-older-link&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;blog-pager-older-link&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;expr:href=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:olderPageUrl&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;expr:id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:widget.instanceId + &amp;quot;_blog-pager-older-link&amp;quot;&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;expr:title=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:olderPageTitle&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;data:olderPageTitle/&amp;gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;

   &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:blog.homepageUrl != data:blog.url&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;home-link&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;expr:href=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:blog.homepageUrl&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;data:homeMsg/&amp;gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;b:else/&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:newerPageUrl&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
       &lt;span class='nt'&gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;home-link&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;expr:href=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:blog.homepageUrl&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;data:homeMsg/&amp;gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;

 &lt;span class='nt'&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;clear&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;/b:includable&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;b:includable&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;backlinks&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;var=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;post&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;name=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;links&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&amp;lt;h4&amp;gt;&amp;lt;data:post&lt;/span&gt;&lt;span class='err'&gt;.&lt;/span&gt;&lt;span class='na'&gt;backlinksLabel&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&amp;lt;/h4&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:post.numBacklinks != 0&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;dl&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;comments-block&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;comments-block&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;b:loop&lt;/span&gt; &lt;span class='na'&gt;values=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:post.backlinks&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;var=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;backlink&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
       &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;collapsed-backlink backlink-control&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
         &lt;span class='nt'&gt;&amp;lt;dt&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;comment-title&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
           &lt;span class='nt'&gt;&amp;lt;span&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;backlink-toggle-zippy&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt; &lt;span class='nt'&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
           &lt;span class='nt'&gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;expr:href=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:backlink.url&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;rel=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;nofollow&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;data:backlink&lt;/span&gt;&lt;span class='err'&gt;.&lt;/span&gt;&lt;span class='na'&gt;title&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
           &lt;span class='nt'&gt;&amp;lt;b:include&lt;/span&gt; &lt;span class='na'&gt;data=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;backlink&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;name=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;backlinkDeleteIcon&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;
         &lt;span class='nt'&gt;&amp;lt;/dt&amp;gt;&lt;/span&gt;
         &lt;span class='nt'&gt;&amp;lt;dd&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;comment-body collapseable&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
           &lt;span class='nt'&gt;&amp;lt;data:backlink&lt;/span&gt;&lt;span class='err'&gt;.&lt;/span&gt;&lt;span class='na'&gt;snippet&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;
         &lt;span class='nt'&gt;&amp;lt;/dd&amp;gt;&lt;/span&gt;
         &lt;span class='nt'&gt;&amp;lt;dd&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;comment-footer collapseable&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
           &lt;span class='nt'&gt;&amp;lt;span&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;comment-author&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;data:post&lt;/span&gt;&lt;span class='err'&gt;.&lt;/span&gt;&lt;span class='na'&gt;authorLabel&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt; &lt;span class='nt'&gt;&amp;lt;data:backlink&lt;/span&gt;&lt;span class='err'&gt;.&lt;/span&gt;&lt;span class='na'&gt;author&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
           &lt;span class='nt'&gt;&amp;lt;span&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;comment-timestamp&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;data:post&lt;/span&gt;&lt;span class='err'&gt;.&lt;/span&gt;&lt;span class='na'&gt;timestampLabel&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt; &lt;span class='nt'&gt;&amp;lt;data:backlink&lt;/span&gt;&lt;span class='err'&gt;.&lt;/span&gt;&lt;span class='na'&gt;timestamp&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
         &lt;span class='nt'&gt;&amp;lt;/dd&amp;gt;&lt;/span&gt;
       &lt;span class='nt'&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;/b:loop&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;/dl&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;p&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;comment-footer&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;comment-link&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;expr:href=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:post.createLinkUrl&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;expr:id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:widget.instanceId + &amp;quot;_backlinks-create-link&amp;quot;&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;target=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;_blank&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;data:post&lt;/span&gt;&lt;span class='err'&gt;.&lt;/span&gt;&lt;span class='na'&gt;createLinkLabel&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;/b:includable&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;b:includable&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;post&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;var=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;post&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
  &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;quot;hentry post&amp;quot;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;expr:name=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:post.id&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:post.title&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;h2&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;quot;entry-title post-title&amp;quot;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
    &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:post.link&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
      &lt;span class='nt'&gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;expr:href=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:post.link&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;rel=&lt;/span&gt;&lt;span class='s'&gt;&amp;quot;bookmark&amp;quot;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;data:post&lt;/span&gt;&lt;span class='err'&gt;.&lt;/span&gt;&lt;span class='na'&gt;title&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
    &lt;span class='nt'&gt;&amp;lt;b:else/&amp;gt;&lt;/span&gt;
       &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:post.url&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
         &lt;span class='nt'&gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;expr:href=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:post.url&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;rel=&lt;/span&gt;&lt;span class='s'&gt;&amp;quot;bookmark&amp;quot;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;data:post&lt;/span&gt;&lt;span class='err'&gt;.&lt;/span&gt;&lt;span class='na'&gt;title&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
       &lt;span class='nt'&gt;&amp;lt;b:else/&amp;gt;&lt;/span&gt;
         &lt;span class='nt'&gt;&amp;lt;data:post&lt;/span&gt;&lt;span class='err'&gt;.&lt;/span&gt;&lt;span class='na'&gt;title&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;
       &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;
    &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;
  
   &lt;span class='nt'&gt;&amp;lt;span&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;submitted&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
     Posted On &lt;span class='nt'&gt;&amp;lt;data:post&lt;/span&gt;&lt;span class='err'&gt;.&lt;/span&gt;&lt;span class='na'&gt;dateHeader&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:top.showTimestamp&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
       at
       &lt;span class='nt'&gt;&amp;lt;data:top&lt;/span&gt;&lt;span class='err'&gt;.&lt;/span&gt;&lt;span class='na'&gt;timestampLabel&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;
       &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:post.url&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
         &lt;span class='nt'&gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;timestamp-link&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;expr:href=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:post.url&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;rel=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;bookmark&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;title=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;permanent link&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;abbr&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;published&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;expr:title=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:post.timestampISO8601&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;data:post&lt;/span&gt;&lt;span class='err'&gt;.&lt;/span&gt;&lt;span class='na'&gt;timestamp&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&amp;lt;/abbr&amp;gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
       &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt; by &lt;span class='nt'&gt;&amp;lt;span&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;quot;vcard author fn&amp;quot;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;data:post&lt;/span&gt;&lt;span class='err'&gt;.&lt;/span&gt;&lt;span class='na'&gt;author&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
    
       &lt;span class='c'&gt;&amp;lt;!-- email post links --&amp;gt;&lt;/span&gt;
       &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:post.emailPostUrl&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
         &lt;span class='nt'&gt;&amp;lt;span&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;item-action&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
         &lt;span class='nt'&gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;expr:href=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:post.emailPostUrl&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;expr:title=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:top.emailPostMsg&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
           &lt;span class='nt'&gt;&amp;lt;span&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;email-post-icon&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt; &lt;span class='nt'&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
         &lt;span class='nt'&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
         &lt;span class='nt'&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
       &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;

       &lt;span class='c'&gt;&amp;lt;!-- quickedit pencil --&amp;gt;&lt;/span&gt;
       &lt;span class='nt'&gt;&amp;lt;b:include&lt;/span&gt; &lt;span class='na'&gt;data=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;post&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;name=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;postQuickEdit&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;
    
   &lt;span class='nt'&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;

   &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;content entry-content&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
     
&lt;span class='nt'&gt;&amp;lt;data:post&lt;/span&gt;&lt;span class='err'&gt;.&lt;/span&gt;&lt;span class='na'&gt;body&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;style=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;clear: both;&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt; &lt;span class='c'&gt;&amp;lt;!-- clear for photos floats --&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  
   &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;meta&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
       Posted in  &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:post.labels&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
         &lt;span class='nt'&gt;&amp;lt;data:postLabelsLabel/&amp;gt;&lt;/span&gt;
         &lt;span class='nt'&gt;&amp;lt;b:loop&lt;/span&gt; &lt;span class='na'&gt;values=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:post.labels&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;var=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;label&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
           &lt;span class='nt'&gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;expr:href=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:label.url&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;rel=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;tag&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;data:label&lt;/span&gt;&lt;span class='err'&gt;.&lt;/span&gt;&lt;span class='na'&gt;name&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:label.isLast != &amp;quot;true&amp;quot;&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;,&lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;
         &lt;span class='nt'&gt;&amp;lt;/b:loop&amp;gt;&lt;/span&gt;
       &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt; |

       &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:blog.pageType != &amp;quot;item&amp;quot;&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;

         &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:post.allowComments&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
           &lt;span class='nt'&gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;comment-link&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;expr:href=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:post.addCommentUrl&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;expr:onclick=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:post.addCommentOnclick&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:post.numComments == 1&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;1 &lt;span class='nt'&gt;&amp;lt;data:top&lt;/span&gt;&lt;span class='err'&gt;.&lt;/span&gt;&lt;span class='na'&gt;commentLabel&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&amp;lt;b:else/&amp;gt;&amp;lt;data:post&lt;/span&gt;&lt;span class='err'&gt;.&lt;/span&gt;&lt;span class='na'&gt;numComments&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt; &lt;span class='nt'&gt;&amp;lt;data:top&lt;/span&gt;&lt;span class='err'&gt;.&lt;/span&gt;&lt;span class='na'&gt;commentLabelPlural&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&amp;lt;/b:if&amp;gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
         &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;
       &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;
  

      &lt;span class='c'&gt;&amp;lt;!-- backlinks --&amp;gt;&lt;/span&gt;
        &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:blog.pageType != &amp;quot;item&amp;quot;&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
          &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:post.showBacklinks&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
            &lt;span class='nt'&gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;comment-link&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;expr:href=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:post.url + &amp;quot;#links&amp;quot;&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;data:top&lt;/span&gt;&lt;span class='err'&gt;.&lt;/span&gt;&lt;span class='na'&gt;backlinkLabel&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
          &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;
        &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class='nt'&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;/b:includable&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;b:includable&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;commentDeleteIcon&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;var=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;comment&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;span&lt;/span&gt; &lt;span class='na'&gt;expr:class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;&amp;quot;item-control &amp;quot; + data:comment.adminClass&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;expr:href=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:comment.deleteUrl&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;expr:title=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:top.deleteCommentMsg&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;span&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;delete-comment-icon&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt; &lt;span class='nt'&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;/b:includable&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;b:includable&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;status-message&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:navMessage&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;status-msg-wrap&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;status-msg-body&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;data:navMessage/&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;status-msg-border&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;status-msg-bg&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
       &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;status-msg-hidden&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;data:navMessage/&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;style=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;clear: both;&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;/b:includable&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;b:includable&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;feedLinks&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:blog.pageType != &amp;quot;item&amp;quot;&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt; &lt;span class='c'&gt;&amp;lt;!-- Blog feed links --&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:feedLinks&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;blog-feeds&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
       &lt;span class='nt'&gt;&amp;lt;b:include&lt;/span&gt; &lt;span class='na'&gt;data=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;feedLinks&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;name=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;feedLinksBody&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;

   &lt;span class='nt'&gt;&amp;lt;b:else/&amp;gt;&lt;/span&gt; &lt;span class='c'&gt;&amp;lt;!--Post feed links --&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;post-feeds&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;b:loop&lt;/span&gt; &lt;span class='na'&gt;values=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:posts&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;var=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;post&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
       &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:post.allowComments&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
         &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:post.feedLinks&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
           &lt;span class='nt'&gt;&amp;lt;b:include&lt;/span&gt; &lt;span class='na'&gt;data=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;post.feedLinks&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;name=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;feedLinksBody&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;
         &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;
       &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;/b:loop&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;/b:includable&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;b:includable&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;comment-form&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;var=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;post&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;comment-form&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;name=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;comment-form&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;h4&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;comment-post-message&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;data:postCommentMsg/&amp;gt;&amp;lt;/h4&amp;gt;&lt;/span&gt;
   
&lt;span class='nt'&gt;&amp;lt;data:blogCommentMessage/&amp;gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;data:blogTeamBlogMessage/&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;expr:href=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:post.commentFormIframeSrc&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;comment-editor-src&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;iframe&lt;/span&gt; &lt;span class='na'&gt;allowtransparency=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;true&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;blogger-iframe-colorize blogger-comment-from-post&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;frameborder=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;0&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;height=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;275&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;comment-editor&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;name=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;comment-editor&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;scrolling=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;no&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;src=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;width=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;100%&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;data:post&lt;/span&gt;&lt;span class='err'&gt;.&lt;/span&gt;&lt;span class='na'&gt;friendConnectJs&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;data:post&lt;/span&gt;&lt;span class='err'&gt;.&lt;/span&gt;&lt;span class='na'&gt;cmtfpIframe&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;script &lt;/span&gt;&lt;span class='na'&gt;type=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;text/javascript&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
     &lt;span class='nx'&gt;BLOG_CMT_createIframe&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='s1'&gt;&amp;#39;&amp;lt;data:post.appRpcRelayPath/&amp;gt;&amp;#39;&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='s1'&gt;&amp;#39;&amp;lt;data:post.communityId/&amp;gt;&amp;#39;&lt;/span&gt;&lt;span class='p'&gt;);&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;/b:includable&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;b:includable&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;backlinkDeleteIcon&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;var=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;backlink&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;span&lt;/span&gt; &lt;span class='na'&gt;expr:class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;&amp;quot;item-control &amp;quot; + data:backlink.adminClass&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;expr:href=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:backlink.deleteUrl&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;expr:title=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:top.deleteBacklinkMsg&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;span&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;delete-comment-icon&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt; &lt;span class='nt'&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;/b:includable&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;b:includable&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;feedLinksBody&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;var=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;links&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;feed-links&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;data:feedLinksMsg/&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;b:loop&lt;/span&gt; &lt;span class='na'&gt;values=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:links&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;var=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;f&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
    &lt;span class='nt'&gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;feed-link&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;expr:href=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:f.url&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;expr:type=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:f.mimeType&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;target=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;_blank&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;data:f&lt;/span&gt;&lt;span class='err'&gt;.&lt;/span&gt;&lt;span class='na'&gt;name&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt; (&lt;span class='nt'&gt;&amp;lt;data:f&lt;/span&gt;&lt;span class='err'&gt;.&lt;/span&gt;&lt;span class='na'&gt;feedType&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;)&lt;span class='nt'&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;/b:loop&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;/b:includable&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;b:includable&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;postQuickEdit&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;var=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;post&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:post.editUrl&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;span&lt;/span&gt; &lt;span class='na'&gt;expr:class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;&amp;quot;item-control &amp;quot; + data:post.adminClass&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;expr:href=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:post.editUrl&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;expr:title=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:top.editPostMsg&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
       &lt;span class='nt'&gt;&amp;lt;span&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;quick-edit-icon&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt; &lt;span class='nt'&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;/b:includable&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;b:includable&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;comments&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;var=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;post&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;name=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;comments&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:post.allowComments&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;h3&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;comments&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
       &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:post.numComments == 1&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
         1 &lt;span class='nt'&gt;&amp;lt;data:commentLabel/&amp;gt;&lt;/span&gt;:
       &lt;span class='nt'&gt;&amp;lt;b:else/&amp;gt;&lt;/span&gt;
         &lt;span class='nt'&gt;&amp;lt;data:post&lt;/span&gt;&lt;span class='err'&gt;.&lt;/span&gt;&lt;span class='na'&gt;numComments&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt; &lt;span class='nt'&gt;&amp;lt;data:commentLabelPlural/&amp;gt;&lt;/span&gt;:
       &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;/h3&amp;gt;&lt;/span&gt;

     &lt;span class='nt'&gt;&amp;lt;ol&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;commentlist&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
       &lt;span class='nt'&gt;&amp;lt;b:loop&lt;/span&gt; &lt;span class='na'&gt;values=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:post.comments&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;var=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;comment&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
         &lt;span class='nt'&gt;&amp;lt;li&amp;gt;&lt;/span&gt;
           &lt;span class='nt'&gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;expr:name=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;&amp;quot;comment-&amp;quot; + data:comment.id&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;
           &lt;span class='nt'&gt;&amp;lt;cite&amp;gt;&lt;/span&gt;
           &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:comment.authorUrl&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
             &lt;span class='nt'&gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;expr:href=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:comment.authorUrl&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;rel=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;nofollow&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;data:comment&lt;/span&gt;&lt;span class='err'&gt;.&lt;/span&gt;&lt;span class='na'&gt;author&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
           &lt;span class='nt'&gt;&amp;lt;b:else/&amp;gt;&lt;/span&gt;
             &lt;span class='nt'&gt;&amp;lt;data:comment&lt;/span&gt;&lt;span class='err'&gt;.&lt;/span&gt;&lt;span class='na'&gt;author&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;
           &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;
           &lt;span class='nt'&gt;&amp;lt;/cite&amp;gt;&lt;/span&gt; Says:
           &lt;span class='nt'&gt;&amp;lt;small&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;commentmetadata&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;expr:href=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;&amp;quot;#comment-&amp;quot; + data:comment.id&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;title=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;comment permalink&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
               &lt;span class='nt'&gt;&amp;lt;data:comment&lt;/span&gt;&lt;span class='err'&gt;.&lt;/span&gt;&lt;span class='na'&gt;timestamp&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;
             &lt;span class='nt'&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
             &lt;span class='nt'&gt;&amp;lt;b:include&lt;/span&gt; &lt;span class='na'&gt;data=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;comment&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;name=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;commentDeleteIcon&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;
           &lt;span class='nt'&gt;&amp;lt;/small&amp;gt;&lt;/span&gt;
             &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:comment.isDeleted&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
             &lt;span class='nt'&gt;&amp;lt;span&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;deleted-comment&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;data:comment&lt;/span&gt;&lt;span class='err'&gt;.&lt;/span&gt;&lt;span class='na'&gt;body&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
           &lt;span class='nt'&gt;&amp;lt;b:else/&amp;gt;&lt;/span&gt;
             
&lt;span class='nt'&gt;&amp;lt;data:comment&lt;/span&gt;&lt;span class='err'&gt;.&lt;/span&gt;&lt;span class='na'&gt;body&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
           &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;
         &lt;span class='nt'&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
       &lt;span class='nt'&gt;&amp;lt;/b:loop&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;/ol&amp;gt;&lt;/span&gt;

     &lt;span class='nt'&gt;&amp;lt;p&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;comment-footer&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
       &lt;span class='nt'&gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;expr:href=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:post.addCommentUrl&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;expr:onclick=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:post.addCommentOnclick&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;data:postCommentMsg/&amp;gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;

   &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;backlinks-container&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;expr:id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:widget.instanceId + &amp;quot;_backlinks-container&amp;quot;&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
      &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:post.showBacklinks&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
        &lt;span class='nt'&gt;&amp;lt;b:include&lt;/span&gt; &lt;span class='na'&gt;data=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;post&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;name=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;backlinks&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;/b:includable&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;b:includable&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;main&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;var=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;top&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
 &lt;span class='c'&gt;&amp;lt;!-- posts --&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;post hfeed&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;

   &lt;span class='nt'&gt;&amp;lt;b:include&lt;/span&gt; &lt;span class='na'&gt;data=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;top&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;name=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;status-message&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;

   &lt;span class='nt'&gt;&amp;lt;b:loop&lt;/span&gt; &lt;span class='na'&gt;values=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:posts&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;var=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;post&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;b:include&lt;/span&gt; &lt;span class='na'&gt;data=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;post&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;name=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;post&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:blog.pageType == &amp;quot;item&amp;quot;&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
       &lt;span class='nt'&gt;&amp;lt;b:include&lt;/span&gt; &lt;span class='na'&gt;data=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;post&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;name=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;comments&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;/b:loop&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

 &lt;span class='c'&gt;&amp;lt;!-- navigation --&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;b:include&lt;/span&gt; &lt;span class='na'&gt;name=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;nextprev&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;

 &lt;span class='c'&gt;&amp;lt;!-- feed links --&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;b:include&lt;/span&gt; &lt;span class='na'&gt;name=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;feedLinks&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;/b:includable&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;/b:widget&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;/b:section&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;span class='c'&gt;&amp;lt;!-- end content --&amp;gt;&amp;lt;!-- spacer for skins that want sidebar and main to be the same height--&amp;gt;&lt;/span&gt;&lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;clear&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt; &lt;span class='nt'&gt;&amp;lt;/div&amp;gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;footer-wrapper&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;b:section&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;footer&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;footer&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt; &lt;span class='c'&gt;&amp;lt;!-- /.left-corner, /.right-corner, /#squeeze, /#center --&amp;gt;&lt;/span&gt;&lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;sidebar&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;sidebar-right&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;b:section&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;side&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;sidebar2&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;preferred=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;yes&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;b:widget&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;Profile1&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;locked=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;false&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;title=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;About Me&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;type=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;Profile&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;b:includable&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;main&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:title != &amp;quot;&amp;quot;&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;h2&amp;gt;&amp;lt;data:title/&amp;gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;widget-content&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:team == &amp;quot;true&amp;quot;&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt; &lt;span class='c'&gt;&amp;lt;!-- team blog profile --&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;ul&amp;gt;&lt;/span&gt;
       &lt;span class='nt'&gt;&amp;lt;b:loop&lt;/span&gt; &lt;span class='na'&gt;values=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:authors&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;var=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;i&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
         &lt;span class='nt'&gt;&amp;lt;li&amp;gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;expr:href=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:i.userUrl&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;data:i&lt;/span&gt;&lt;span class='err'&gt;.&lt;/span&gt;&lt;span class='na'&gt;display-name&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
       &lt;span class='nt'&gt;&amp;lt;/b:loop&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;/ul&amp;gt;&lt;/span&gt;

     &lt;span class='nt'&gt;&amp;lt;b:else/&amp;gt;&lt;/span&gt; &lt;span class='c'&gt;&amp;lt;!-- normal blog profile --&amp;gt;&lt;/span&gt;

     &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:photo.url != &amp;quot;&amp;quot;&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
       &lt;span class='nt'&gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;expr:href=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:userUrl&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;img&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;profile-img&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;expr:alt=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:photo.alt&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;expr:height=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:photo.height&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;expr:src=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:photo.url&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;expr:width=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:photo.width&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;

     &lt;span class='nt'&gt;&amp;lt;dl&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;profile-datablock&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
       &lt;span class='nt'&gt;&amp;lt;dt&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;profile-data&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;data:displayname/&amp;gt;&amp;lt;/dt&amp;gt;&lt;/span&gt;

       &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:showlocation == &amp;quot;true&amp;quot;&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
         &lt;span class='nt'&gt;&amp;lt;dd&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;profile-data&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;data:location/&amp;gt;&amp;lt;/dd&amp;gt;&lt;/span&gt;
       &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;

       &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:aboutme != &amp;quot;&amp;quot;&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;dd&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;profile-textblock&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;data:aboutme/&amp;gt;&amp;lt;/dd&amp;gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;/dl&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;profile-link&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;expr:href=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:userUrl&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;data:viewProfileMsg/&amp;gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;

    &lt;span class='nt'&gt;&amp;lt;b:include&lt;/span&gt; &lt;span class='na'&gt;name=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;quickedit&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;/b:includable&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;/b:widget&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;b:widget&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;HTML1&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;locked=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;false&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;title=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;My Other Internet Stuff&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;type=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;HTML&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;b:includable&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;main&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
 &lt;span class='c'&gt;&amp;lt;!-- only display title if it&amp;#39;s non-empty --&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:title != &amp;quot;&amp;quot;&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;h2&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;title&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;data:title/&amp;gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;widget-content&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;data:content/&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

 &lt;span class='nt'&gt;&amp;lt;b:include&lt;/span&gt; &lt;span class='na'&gt;name=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;quickedit&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;/b:includable&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;/b:widget&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;b:widget&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;Followers1&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;locked=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;false&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;title=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;Followers&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;type=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;Followers&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;b:includable&lt;/span&gt; &lt;span class='na'&gt;id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;main&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:title != &amp;quot;&amp;quot;&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:codeSnippet != &amp;quot;&amp;quot;&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;h2&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;title&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;data:title/&amp;gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;b:else/&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:totalFollowerCount != &amp;quot;&amp;quot;&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
       &lt;span class='nt'&gt;&amp;lt;h2&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;title&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&amp;lt;data:title/&amp;gt;&lt;/span&gt; (&lt;span class='nt'&gt;&amp;lt;data:totalFollowerCount/&amp;gt;&lt;/span&gt;)&lt;span class='nt'&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt; 
 &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;widget-content&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;expr:id=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:widget.instanceId + &amp;quot;-wrapper&amp;quot;&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:codeSnippet != &amp;quot;&amp;quot;&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
       &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;style=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;margin-right:2px;&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
         &lt;span class='nt'&gt;&amp;lt;data:codeSnippet/&amp;gt;&lt;/span&gt;
       &lt;span class='nt'&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;b:else/&amp;gt;&lt;/span&gt;
       &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:totalFollowerCount == &amp;quot;&amp;quot;&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
         &lt;span class='nt'&gt;&amp;lt;span&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;item-control following-not-admin&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
           &lt;span class='nt'&gt;&amp;lt;b&amp;gt;&amp;lt;data:failureSnippet/&amp;gt;&amp;lt;/b&amp;gt;&lt;/span&gt;
         &lt;span class='nt'&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
         &lt;span class='nt'&gt;&amp;lt;span&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;item-control blog-admin&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
           &lt;span class='nt'&gt;&amp;lt;b&amp;gt;&amp;lt;data:adminFailureSnippet/&amp;gt;&amp;lt;/b&amp;gt;&lt;/span&gt;
         &lt;span class='nt'&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
       &lt;span class='nt'&gt;&amp;lt;b:else/&amp;gt;&lt;/span&gt;
         &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:followingLinkPresent&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
           &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;follow-this profile-link item-control following-follow-this&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
             &lt;span class='nt'&gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;expr:href=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;&amp;quot;javascript:_FollowersView._openPopup(\&amp;quot;&amp;quot; + data:followUri + &amp;quot;\&amp;quot;);&amp;quot;&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
               &lt;span class='nt'&gt;&amp;lt;data:followThisMessage/&amp;gt;&lt;/span&gt;
             &lt;span class='nt'&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
           &lt;span class='nt'&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
           &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;follow-this profile-link item-control following-stop-following-this&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
             &lt;span class='nt'&gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;expr:href=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;&amp;quot;javascript:_FollowersView._openPopup(\&amp;quot;&amp;quot; + data:followUri + &amp;quot;\&amp;quot;);&amp;quot;&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
               &lt;span class='nt'&gt;&amp;lt;data:stopFollowingMessage/&amp;gt;&lt;/span&gt;
             &lt;span class='nt'&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
           &lt;span class='nt'&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
         &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;

         &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;followers-grid&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
           &lt;span class='nt'&gt;&amp;lt;b:if&lt;/span&gt; &lt;span class='na'&gt;cond=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:totalFollowerCount == 0&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
             &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;profile-link item-control following-follow-this&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
               &lt;span class='nt'&gt;&amp;lt;data:emptyFollowersMessage/&amp;gt;&lt;/span&gt;
             &lt;span class='nt'&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
           &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;
           &lt;span class='c'&gt;&amp;lt;!--&lt;/span&gt;
&lt;span class='c'&gt;           Relies on the js written out in navbar.gxp&lt;/span&gt;
&lt;span class='c'&gt;           --&amp;gt;&lt;/span&gt;
           &lt;span class='nt'&gt;&amp;lt;b:loop&lt;/span&gt; &lt;span class='na'&gt;values=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:followers&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;var=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;follower&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
             &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;follower&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
               &lt;span class='nt'&gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;expr:href=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:follower.profileUrl&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;expr:title=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:follower.displayName&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;rel=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;nofollow&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
               &lt;span class='nt'&gt;&amp;lt;img&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;follower-img&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;expr:alt=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:follower.displayName&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;expr:height=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:follower.imageHeight&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;expr:onerror=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;&amp;quot;this.onerror=null;this.src=\&amp;quot;&amp;quot; + data:anonFollowerImageUrl + &amp;quot;\&amp;quot;;&amp;quot;&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;expr:onload=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;&amp;quot;setAttributeOnload(this, \&amp;quot;src\&amp;quot;, \&amp;quot;&amp;quot; + data:follower.imageUrl + &amp;quot;\&amp;quot;)&amp;quot;&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;expr:width=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:follower.imageWidth&amp;#39;&lt;/span&gt; &lt;span class='na'&gt;src=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;http://img1.blogblog.com/img/blank.gif&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;
               &lt;span class='nt'&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
             &lt;span class='nt'&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
           &lt;span class='nt'&gt;&amp;lt;/b:loop&amp;gt;&lt;/span&gt;
           &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;clear&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;
         &lt;span class='nt'&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

         &lt;span class='nt'&gt;&amp;lt;div&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;followers-canvas profile-link&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
           &lt;span class='nt'&gt;&amp;lt;data:followersFooterMessage/&amp;gt;&lt;/span&gt;
           &lt;span class='nt'&gt;&amp;lt;span&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;item-control following-not-admin&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
             &lt;span class='nt'&gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;expr:href=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:followersUri&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
               &lt;span class='nt'&gt;&amp;lt;data:viewAllMessage/&amp;gt;&lt;/span&gt;
             &lt;span class='nt'&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
           &lt;span class='nt'&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
           &lt;span class='nt'&gt;&amp;lt;span&lt;/span&gt; &lt;span class='na'&gt;class=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;item-control blog-admin&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
             &lt;span class='nt'&gt;&amp;lt;a&lt;/span&gt; &lt;span class='na'&gt;expr:href=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;data:manageFollowersUri&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;&amp;gt;&lt;/span&gt;
               &lt;span class='nt'&gt;&amp;lt;data:manageFollowersMessage/&amp;gt;&lt;/span&gt;
             &lt;span class='nt'&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
           &lt;span class='nt'&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
         &lt;span class='nt'&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
         &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;
     &lt;span class='nt'&gt;&amp;lt;/b:if&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;b:include&lt;/span&gt; &lt;span class='na'&gt;name=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;quickedit&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&lt;/span&gt;
 &lt;span class='nt'&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;/b:includable&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;/b:widget&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;/b:section&amp;gt;&amp;lt;p&lt;/span&gt; &lt;span class='na'&gt;style=&lt;/span&gt;&lt;span class='s'&gt;&amp;#39;margin:0 0 0 20px&amp;#39;&lt;/span&gt;&lt;span class='nt'&gt;/&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  
   &lt;span class='nt'&gt;&amp;lt;/div&amp;gt;&lt;/span&gt; &lt;span class='c'&gt;&amp;lt;!-- /container --&amp;gt;&lt;/span&gt;
   &lt;span class='nt'&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

&lt;span class='nt'&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

&lt;span class='nt'&gt;&amp;lt;script&amp;gt;&lt;/span&gt;
&lt;span class='kd'&gt;function&lt;/span&gt; &lt;span class='nx'&gt;fnSelect&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nx'&gt;objId&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt;
&lt;span class='p'&gt;{&lt;/span&gt;
   &lt;span class='nx'&gt;fnDeSelect&lt;/span&gt;&lt;span class='p'&gt;();&lt;/span&gt;
   &lt;span class='k'&gt;if&lt;/span&gt; &lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nb'&gt;document&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;selection&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; 
   &lt;span class='p'&gt;{&lt;/span&gt;
      &lt;span class='kd'&gt;var&lt;/span&gt; &lt;span class='nx'&gt;range&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='nb'&gt;document&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;body&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;createTextRange&lt;/span&gt;&lt;span class='p'&gt;();&lt;/span&gt;
      &lt;span class='nx'&gt;range&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;moveToElementText&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nb'&gt;document&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;getElementById&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nx'&gt;objId&lt;/span&gt;&lt;span class='p'&gt;));&lt;/span&gt;
      &lt;span class='nx'&gt;range&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;select&lt;/span&gt;&lt;span class='p'&gt;();&lt;/span&gt;
   &lt;span class='p'&gt;}&lt;/span&gt;
   &lt;span class='k'&gt;else&lt;/span&gt; &lt;span class='k'&gt;if&lt;/span&gt; &lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nb'&gt;window&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;getSelection&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; 
   &lt;span class='p'&gt;{&lt;/span&gt;
      &lt;span class='kd'&gt;var&lt;/span&gt; &lt;span class='nx'&gt;range&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='nb'&gt;document&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;createRange&lt;/span&gt;&lt;span class='p'&gt;();&lt;/span&gt;
      &lt;span class='nx'&gt;range&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;selectNode&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nb'&gt;document&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;getElementById&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nx'&gt;objId&lt;/span&gt;&lt;span class='p'&gt;));&lt;/span&gt;
      &lt;span class='nb'&gt;window&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;getSelection&lt;/span&gt;&lt;span class='p'&gt;().&lt;/span&gt;&lt;span class='nx'&gt;addRange&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nx'&gt;range&lt;/span&gt;&lt;span class='p'&gt;);&lt;/span&gt;
   &lt;span class='p'&gt;}&lt;/span&gt;
&lt;span class='p'&gt;}&lt;/span&gt;
&lt;span class='kd'&gt;function&lt;/span&gt; &lt;span class='nx'&gt;fnDeSelect&lt;/span&gt;&lt;span class='p'&gt;()&lt;/span&gt; 
&lt;span class='p'&gt;{&lt;/span&gt;
   &lt;span class='k'&gt;if&lt;/span&gt; &lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nb'&gt;document&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;selection&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt;
             &lt;span class='nb'&gt;document&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;selection&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;empty&lt;/span&gt;&lt;span class='p'&gt;();&lt;/span&gt;
   &lt;span class='k'&gt;else&lt;/span&gt; &lt;span class='k'&gt;if&lt;/span&gt; &lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nb'&gt;window&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;getSelection&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt;
              &lt;span class='nb'&gt;window&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;getSelection&lt;/span&gt;&lt;span class='p'&gt;().&lt;/span&gt;&lt;span class='nx'&gt;removeAllRanges&lt;/span&gt;&lt;span class='p'&gt;();&lt;/span&gt;
&lt;span class='p'&gt;}&lt;/span&gt; 

&lt;span class='kd'&gt;var&lt;/span&gt; &lt;span class='nx'&gt;id&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='s2'&gt;&amp;quot;garland_template&amp;quot;&lt;/span&gt;&lt;span class='p'&gt;;&lt;/span&gt;
&lt;span class='nb'&gt;document&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;getElementById&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nx'&gt;id&lt;/span&gt;&lt;span class='p'&gt;).&lt;/span&gt;&lt;span class='nx'&gt;onclick&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='kd'&gt;function&lt;/span&gt;&lt;span class='p'&gt;()&lt;/span&gt; &lt;span class='p'&gt;{&lt;/span&gt;
  &lt;span class='nx'&gt;fnSelect&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nx'&gt;id&lt;/span&gt;&lt;span class='p'&gt;);&lt;/span&gt;
&lt;span class='p'&gt;}&lt;/span&gt;
&lt;span class='nt'&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;span class='c'&gt;&amp;lt;!-- Script by hscripts.com --&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;</content>
  </entry>
  
  <entry>
    <title>Debugging django</title>
    <link href="http://blog.paulisageek.com/2009/06/debugging-django.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2009/06/debugging-django.html" />
    <updated>2009-06-20T00:00:00-07:00</updated>
    <published>2009-06-20T00:00:00-07:00</published>
    <id>http://blog.paulisageek.com/2009/06/debugging-django</id>
    <content type="html">&lt;p&gt;Simply put&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;import pdb; pdb.set_trace()&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;into a file named &lt;code&gt;debug.py&lt;/code&gt; somewhere in your path. Then anywhere in your django app you just put&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;import debug&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;and when you run that webpage it will seem to take a really long time. Just switch to the console and you will have a python debugger open. I usually just type normal python commands &lt;code&gt;print variable&lt;/code&gt;, &lt;code&gt;dir(object)&lt;/code&gt; but it also support commands like gdb. &lt;code&gt;c&lt;/code&gt; for continue running, &lt;code&gt;n&lt;/code&gt; for next line, etc&amp;#8230;&lt;/p&gt;

&lt;p&gt;Thanks to &lt;a href='http://simonwillison.net/2008/May/22/debugging/'&gt;debugging django&lt;/a&gt; for this tip.&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>Incomplete Format</title>
    <link href="http://blog.paulisageek.com/2009/06/incomplete-format.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2009/06/incomplete-format.html" />
    <updated>2009-06-01T00:00:00-07:00</updated>
    <published>2009-06-01T00:00:00-07:00</published>
    <id>http://blog.paulisageek.com/2009/06/incomplete-format</id>
    <content type="html">&lt;p&gt;Anyone who is getting &lt;b&gt;ValueError: incomplete format&lt;/b&gt; exceptions when doing a string format in python should understand that the part inside the () is just an array lookup. You still need a format type after it.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;I have %(count) %(adj) %(noun)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;doesn&amp;#8217;t work since you didn&amp;#8217;t say they were integers and strings. You need to do&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;I have %(count)i %(adj)s %(noun)s&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;which is the same as&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;I have %i %s %s&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;with position indexed values.&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>Password Management</title>
    <link href="http://blog.paulisageek.com/2009/05/password-management.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2009/05/password-management.html" />
    <updated>2009-05-24T00:00:00-07:00</updated>
    <published>2009-05-24T00:00:00-07:00</published>
    <id>http://blog.paulisageek.com/2009/05/password-management</id>
    <content type="html">&lt;p&gt;For the past 10 years I&amp;#8217;ve been having a headache managing passwords for websites. I had about 7 levels of passwords and I could never decide which one to use on a website. And even once I decided, I would usually type them all trying to log in. If they logged my password attempts now they can go edit my Facebook profile, watch my Hulu shows, and buy stuff with my PayPal account (true story).&lt;/p&gt;

&lt;p&gt;So, I&amp;#8217;ve decided to generate a new random password per website and put all my usernames and passwords into an encrypted file on my hard drive. My process was&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='sh'&gt;&lt;span class='c'&gt;# gpg passwords.gpg&lt;/span&gt;
&lt;span class='c'&gt;# vim passwords&lt;/span&gt;
&lt;span class='c'&gt;# gpg -c passwords&lt;/span&gt;
&lt;span class='c'&gt;# rm passwords&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;This works fine, but sometimes I forget the last 2 steps and have a fully decrypted file sitting there&amp;#8230; yeah&amp;#8230; and the gpg -c would ask for my password 2 times in addition to the first gpg, so I end up typing it 3 times in total.&lt;/p&gt;

&lt;p&gt;Enter &lt;a href='http://github.com/ptarjan/gpg-encrypt/tree/master'&gt;gpg-encrypt&lt;/a&gt;. It&amp;#8217;s just a simple shell script that reads in an encrypted file, edits it, then saves it back in an encrypted format.&lt;/p&gt;

&lt;p&gt;Every time I have to register for a new website I:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Get a &lt;a href='http://goodpassword.com/'&gt;good random password&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;Run ./gpg-encrypt&lt;/li&gt;

&lt;li&gt;Add the new information. I keep my file in &lt;a href='http://www.yaml.org/'&gt;YAML&lt;/a&gt; format incase I want to read it with a program later. Example:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='yaml'&gt;&lt;span class='l-Scalar-Plain'&gt;delicious.com&lt;/span&gt; &lt;span class='p-Indicator'&gt;:&lt;/span&gt; &lt;span class='p-Indicator'&gt;{&lt;/span&gt;
    &lt;span class='nv'&gt;username&lt;/span&gt; &lt;span class='p-Indicator'&gt;:&lt;/span&gt; &lt;span class='nv'&gt;ptarjan&lt;/span&gt;&lt;span class='p-Indicator'&gt;,&lt;/span&gt;
    &lt;span class='nv'&gt;password&lt;/span&gt; &lt;span class='p-Indicator'&gt;:&lt;/span&gt; &lt;span class='nv'&gt;WqgyzN9bJ6Pm&lt;/span&gt;
&lt;span class='p-Indicator'&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Leave the editor and it goes back to being encrypted.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If I have to log in, I just do the same steps as above, but don&amp;#8217;t add anything. I can search using my editor for the domain of the site I&amp;#8217;m looking for.&lt;/p&gt;

&lt;p&gt;I backup my passwords.gpg file every time I add a new password, to another computer incase my linux box dies.&lt;/p&gt;

&lt;p&gt;So, I hope this new password management works better for me than the last system. Anyone have any better solutions to this painful problem? And don&amp;#8217;t say &lt;a href='http://ptarjan.myopenid.com'&gt;openid&lt;/a&gt;, until 80% of the sites I visit support it :)&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='sh'&gt;&lt;span class='c'&gt;#!/bin/sh&lt;/span&gt;
&lt;span class='nv'&gt;filename&lt;/span&gt;&lt;span class='o'&gt;=&lt;/span&gt;&lt;span class='s2'&gt;&amp;quot;passwords.gpg&amp;quot;&lt;/span&gt;
&lt;span class='k'&gt;if&lt;/span&gt; &lt;span class='o'&gt;[&lt;/span&gt; &lt;span class='nv'&gt;$EDITOR&lt;/span&gt; &lt;span class='o'&gt;]&lt;/span&gt;
&lt;span class='k'&gt;then&lt;/span&gt;
&lt;span class='k'&gt;    &lt;/span&gt;&lt;span class='nv'&gt;editor&lt;/span&gt;&lt;span class='o'&gt;=&lt;/span&gt;&lt;span class='nv'&gt;$EDITOR&lt;/span&gt;
&lt;span class='k'&gt;elif&lt;/span&gt; &lt;span class='o'&gt;[&lt;/span&gt; -f /usr/bin/editor &lt;span class='o'&gt;]&lt;/span&gt;
&lt;span class='k'&gt;then&lt;/span&gt;
&lt;span class='k'&gt;    &lt;/span&gt;&lt;span class='nv'&gt;editor&lt;/span&gt;&lt;span class='o'&gt;=&lt;/span&gt;/usr/bin/editor
&lt;span class='k'&gt;else&lt;/span&gt;
&lt;span class='k'&gt;    &lt;/span&gt;&lt;span class='nv'&gt;editor&lt;/span&gt;&lt;span class='o'&gt;=&lt;/span&gt;vi
&lt;span class='k'&gt;fi&lt;/span&gt;

&lt;span class='k'&gt;if&lt;/span&gt; &lt;span class='o'&gt;[&lt;/span&gt; &lt;span class='nv'&gt;$# &lt;/span&gt;&lt;span class='o'&gt;=&lt;/span&gt; 0 &lt;span class='o'&gt;]&lt;/span&gt; 
&lt;span class='k'&gt;then&lt;/span&gt;
&lt;span class='k'&gt;    &lt;/span&gt;&lt;span class='nb'&gt;echo&lt;/span&gt; &lt;span class='s2'&gt;&amp;quot;No filename specified. Using default $filename&amp;quot;&lt;/span&gt;
&lt;span class='k'&gt;elif&lt;/span&gt; &lt;span class='o'&gt;[&lt;/span&gt; &lt;span class='nv'&gt;$# &lt;/span&gt;&amp;gt; 1 &lt;span class='o'&gt;]&lt;/span&gt;
&lt;span class='k'&gt;then&lt;/span&gt;
&lt;span class='k'&gt;    &lt;/span&gt;&lt;span class='nb'&gt;echo&lt;/span&gt; &lt;span class='s2'&gt;&amp;quot;$0 [filename.gpg]&amp;quot;&lt;/span&gt;
    &lt;span class='nb'&gt;exit &lt;/span&gt;2
&lt;span class='k'&gt;fi&lt;/span&gt;

&lt;span class='k'&gt;if&lt;/span&gt; &lt;span class='o'&gt;[&lt;/span&gt; -f &lt;span class='sb'&gt;`&lt;/span&gt;which shred&lt;span class='sb'&gt;`&lt;/span&gt; &lt;span class='o'&gt;]&lt;/span&gt;
&lt;span class='k'&gt;then&lt;/span&gt;
&lt;span class='k'&gt;    &lt;/span&gt;&lt;span class='nv'&gt;rm&lt;/span&gt;&lt;span class='o'&gt;=&lt;/span&gt;shred
&lt;span class='k'&gt;else&lt;/span&gt;
&lt;span class='k'&gt;    &lt;/span&gt;&lt;span class='nv'&gt;rm&lt;/span&gt;&lt;span class='o'&gt;=&lt;/span&gt;rm
&lt;span class='k'&gt;fi&lt;/span&gt;

&lt;span class='nv'&gt;tmp&lt;/span&gt;&lt;span class='o'&gt;=&lt;/span&gt;&lt;span class='sb'&gt;`&lt;/span&gt;mktemp&lt;span class='sb'&gt;`&lt;/span&gt; &lt;span class='o'&gt;||&lt;/span&gt; &lt;span class='nb'&gt;exit &lt;/span&gt;1

&lt;span class='c'&gt;# don&amp;#39;t show typing&lt;/span&gt;
stty -echo
&lt;span class='nb'&gt;read&lt;/span&gt; -p &lt;span class='s2'&gt;&amp;quot;Password: &amp;quot;&lt;/span&gt; passw; &lt;span class='nb'&gt;echo&lt;/span&gt;
stty &lt;span class='nb'&gt;echo&lt;/span&gt;

&lt;span class='k'&gt;if&lt;/span&gt; &lt;span class='o'&gt;[&lt;/span&gt; ! -f &lt;span class='nv'&gt;$filename&lt;/span&gt; &lt;span class='o'&gt;]&lt;/span&gt;
&lt;span class='k'&gt;then &lt;/span&gt;
&lt;span class='k'&gt;    &lt;/span&gt;&lt;span class='nb'&gt;echo&lt;/span&gt; &lt;span class='s2'&gt;&amp;quot;$filename doesn&amp;#39;t exist. Starting from empty file.&amp;quot;&lt;/span&gt;
&lt;span class='k'&gt;elif&lt;/span&gt; &lt;span class='o'&gt;[&lt;/span&gt; ! -w &lt;span class='nv'&gt;$filename&lt;/span&gt; &lt;span class='o'&gt;]&lt;/span&gt;
&lt;span class='k'&gt;then&lt;/span&gt;
&lt;span class='k'&gt;    &lt;/span&gt;&lt;span class='nb'&gt;echo&lt;/span&gt; &lt;span class='s2'&gt;&amp;quot;$filename isn&amp;#39;t writable.&amp;quot;&lt;/span&gt;
    &lt;span class='nb'&gt;exit &lt;/span&gt;1
&lt;span class='k'&gt;else&lt;/span&gt;
    &lt;span class='c'&gt;# decrypt into the tmp file&lt;/span&gt;
    &lt;span class='nb'&gt;echo&lt;/span&gt; &lt;span class='s2'&gt;&amp;quot;$passw&amp;quot;&lt;/span&gt; | gpg -q -d --passphrase-fd 0 &lt;span class='nv'&gt;$filename&lt;/span&gt; &amp;gt; &lt;span class='nv'&gt;$tmp&lt;/span&gt;
    &lt;span class='k'&gt;if&lt;/span&gt; &lt;span class='o'&gt;[&lt;/span&gt; &lt;span class='nv'&gt;$?&lt;/span&gt; !&lt;span class='o'&gt;=&lt;/span&gt; 0 &lt;span class='o'&gt;]&lt;/span&gt;; &lt;span class='k'&gt;then&lt;/span&gt;
        &lt;span class='c'&gt;# if gpg didn&amp;#39;t work, exit&lt;/span&gt;
        &lt;span class='nv'&gt;$rm&lt;/span&gt; &lt;span class='nv'&gt;$tmp&lt;/span&gt;
        &lt;span class='nb'&gt;exit&lt;/span&gt; &lt;span class='nv'&gt;$?&lt;/span&gt;;
    &lt;span class='k'&gt;fi&lt;/span&gt;
&lt;span class='k'&gt;fi&lt;/span&gt;

&lt;span class='nv'&gt;$editor&lt;/span&gt; &lt;span class='nv'&gt;$tmp&lt;/span&gt;
&lt;span class='nb'&gt;echo&lt;/span&gt; &lt;span class='s2'&gt;&amp;quot;$passw&amp;quot;&lt;/span&gt; | gpg -q -c --passphrase-fd 0 --output &lt;span class='nv'&gt;$filename&lt;/span&gt; &lt;span class='nv'&gt;$tmp&lt;/span&gt;
&lt;span class='nv'&gt;$rm&lt;/span&gt; &lt;span class='nv'&gt;$tmp&lt;/span&gt;
&lt;span class='k'&gt;if&lt;/span&gt; &lt;span class='o'&gt;[&lt;/span&gt; &lt;span class='nv'&gt;$?&lt;/span&gt; !&lt;span class='o'&gt;=&lt;/span&gt; 0 &lt;span class='o'&gt;]&lt;/span&gt;; &lt;span class='k'&gt;then&lt;/span&gt;
    &lt;span class='c'&gt;# if gpg didn&amp;#39;t work, exit&lt;/span&gt;
    &lt;span class='nb'&gt;exit&lt;/span&gt; &lt;span class='nv'&gt;$?&lt;/span&gt;;
&lt;span class='k'&gt;fi&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;</content>
  </entry>
  
  <entry>
    <title>St. Maarten/Martin</title>
    <link href="http://blog.paulisageek.com/2009/05/st--maarten-martin.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2009/05/st--maarten-martin.html" />
    <updated>2009-05-10T00:00:00-07:00</updated>
    <published>2009-05-10T00:00:00-07:00</published>
    <id>http://blog.paulisageek.com/2009/05/st--maarten-martin</id>
    <content type="html">&lt;h2 id='trains_trains_trains_trains_trains_trains_planes_planes_and_an_automobile'&gt;Trains, Trains, Trains, Trains, Trains, Trains, Planes, Planes, and an Automobile&lt;/h2&gt;

&lt;p&gt;We left the day before my birthday after work. To get to the airport, we took :&lt;ol&gt;&lt;li&gt;VTA from San Jose to Mountain view&lt;/li&gt;&lt;li&gt;Express Caltrain to somewhere near the airport&lt;/li&gt;&lt;li&gt;Normal Caltrain about 2 stops to Millbrae&lt;/li&gt;&lt;li&gt;BART to some transfer station&lt;/li&gt;&lt;li&gt;Another BART to the Airport&lt;/li&gt;&lt;li&gt;SFO train to the terminal&lt;/li&gt;&lt;li&gt;Airplane to Charlette, NC&lt;/li&gt;&lt;li&gt;Airplane to Phillipsburg, St Martin&lt;/li&gt;&lt;li&gt;Rent-a-car to our hotel&lt;/li&gt;&lt;/ol&gt;&lt;/p&gt;
&lt;a href='http://www.flickr.com/photos/ptarjan/3518694499'&gt;&lt;img src='http://farm4.static.flickr.com/3330/3518694499_11b12e0aa7.jpg?v=0' /&gt;&lt;/a&gt;
&lt;p&gt;I ended up sleeping in a great rocking chair at the airport while charging my Nintendo DS.&lt;/p&gt;

&lt;p&gt;A red-eye is probably not the best way to spend a birthday, but it did the job and we were in paradise in time to enjoy a lobster dinner for my birthday.&lt;/p&gt;
&lt;a href='http://www.flickr.com/photos/ptarjan/3518765689'&gt;&lt;img src='http://farm4.static.flickr.com/3312/3518765689_18d9720c30.jpg?v=0' /&gt;&lt;/a&gt;
&lt;h2 id='a_topless_beach__europe_definitely_got_it_right'&gt;A Topless Beach - Europe definitely got it right&lt;/h2&gt;

&lt;p&gt;The second day we swam a bit in our &amp;#8220;∞ pool&amp;#8221;&lt;/p&gt;
&lt;a href='http://www.flickr.com/photos/ptarjan/3519558308'&gt;&lt;img src='http://farm4.static.flickr.com/3609/3519558308_c6b305ded4.jpg?v=0' /&gt;&lt;/a&gt;
&lt;p&gt;and then took off to Orient Beach. I was briefed by Michelle that part of it would be a nude beech. She forgot to inform to me that it was 98% old fat men, and the other 2% older fat women. Lest I say that I was disappointed and chose to not disrobe in these circumstances.&lt;/p&gt;

&lt;p&gt;In dismay we trekked to the clothed part of the beach to discover that it was &amp;#8220;Europe&amp;#8221; rules for women going topless, and indeed the eye candy was much more enjoyable. Michelle told me that etiquette dictated for me to not take any pictures, so you guys just get to imagine.&lt;/p&gt;
&lt;a href='http://www.flickr.com/photos/ptarjan/3518823441/' title='Being extra protected from the UV rays @ Orient Beach by paralax, on Flickr'&gt;&lt;img src='http://farm4.static.flickr.com/3584/3518823441_25626efd80.jpg' height='375' alt='Being extra protected from the UV rays @ Orient Beach' width='500' /&gt;&lt;/a&gt;
&lt;h2 id='up_close_and_personal_with_airplanes'&gt;Up Close and Personal with Airplanes&lt;/h2&gt;

&lt;p&gt;Heading to &lt;a href='http://en.wikipedia.org/wiki/Maho_Beach'&gt;Maho Beach&lt;/a&gt;.&lt;/p&gt;
&lt;a href='http://www.flickr.com/photos/ptarjan/3518857635/' title='Sunset beach bar by paralax, on Flickr'&gt;&lt;img src='http://farm4.static.flickr.com/3375/3518857635_b73b1c1d95.jpg' height='375' alt='Sunset beach bar' width='500' /&gt;&lt;/a&gt;
&lt;p&gt;We went to Sunset Bar, to have a nice drink and then&lt;/p&gt;
&lt;a href='http://www.flickr.com/photos/ptarjan/3518889893/' title='Extra light airplane! by paralax, on Flickr'&gt;&lt;img src='http://farm4.static.flickr.com/3541/3518889893_73069c22f1.jpg' height='500' alt='Extra light airplane!' width='375' /&gt;&lt;/a&gt;&lt;a href='http://www.flickr.com/photos/ptarjan/3519734314/' title='Trying to touch the plane by paralax, on Flickr'&gt;&lt;img src='http://farm4.static.flickr.com/3391/3519734314_51b336c846.jpg' height='500' alt='Trying to touch the plane' width='375' /&gt;&lt;/a&gt;
&lt;p&gt;we watched the planes fly a few meters over our heads. Very cool :&lt;/p&gt;
&lt;object data='http://www.flickr.com/apps/video/stewart.swf?v=71377' type='application/x-shockwave-flash' height='300' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' width='400'&gt; &lt;param name='flashvars' value='intl_lang=en-us&amp;photo_secret=a70e44c5f6&amp;photo_id=3520471621' /&gt; &lt;param name='movie' value='http://www.flickr.com/apps/video/stewart.swf?v=71377' /&gt; &lt;param name='bgcolor' value='#000000' /&gt; &lt;param name='allowFullScreen' value='true' /&gt;&lt;embed src='http://www.flickr.com/apps/video/stewart.swf?v=71377' allowfullscreen='true' type='application/x-shockwave-flash' height='300' flashvars='intl_lang=en-us&amp;photo_secret=a70e44c5f6&amp;photo_id=3520471621' bgcolor='#000000' width='400' /&gt;&lt;/object&gt;
&lt;p&gt;We got back just in time for the &amp;#8220;welcome party&amp;#8221; which was an open bar. I was drinking &amp;#8220;Wipe Me Out&amp;#8221;s and after 4, I was VERY much wiped out. We stumbled back to our place and crashed hard for the night.&lt;/p&gt;

&lt;h2 id='french_onion_soup__escargot'&gt;French Onion Soup + Escargot&lt;/h2&gt;

&lt;p&gt;Switching to the French side of the island, was drove to Margiot. ALL the road signs were in French, all the people spoke French, all the food was French. It was GREAT! The Dutch side had converted to an American style, but the French had really kept their culture. And it was magnifique! Sadly the rain followed us around the island, but it didn&amp;#8217;t stop us from having a great time.&lt;/p&gt;
&lt;a href='http://www.flickr.com/photos/ptarjan/3519810894/' title='Marigot -- French Side by paralax, on Flickr'&gt;&lt;img src='http://farm4.static.flickr.com/3359/3519810894_63d1649375.jpg' height='375' alt='Marigot -- French Side' width='500' /&gt;&lt;/a&gt;
&lt;p&gt;We had some AMAZING authentic French food on the beach and I got to practice quite a bit of my high school French. It was amusing to listen to all the people around us speaking fluent Parisian French and for me to try and join in :).&lt;/p&gt;
&lt;a href='http://www.flickr.com/photos/ptarjan/3519008507/' title='Restaurant @ Friar&amp;apos;s Bay by paralax, on Flickr'&gt;&lt;img src='http://farm4.static.flickr.com/3315/3519008507_ce902cc616.jpg' height='375' alt='Restaurant @ Friar&amp;apos;s Bay' width='500' /&gt;&lt;/a&gt;
&lt;p&gt;After our fill we headed to &amp;#8220;Happy Bay.&amp;#8221; It started to rain a bit as we started to walk up, but we looked at each other and decided to go for it. It was a 10 minute hike up and ended in a beautiful view. Turning around, it IMMEDIATELY started to pour on us forcing us to run down the hill and jump into the car. Praying that it didn&amp;#8217;t leak we sat and waited it out enough for the threadbare tires to grip us enough to get home.&lt;/p&gt;
&lt;a href='http://www.flickr.com/photos/ptarjan/3519818316/' title='Friar&amp;apos;s Bay by paralax, on Flickr'&gt;&lt;img src='http://farm4.static.flickr.com/3337/3519818316_097bfd3c36.jpg' height='500' alt='Friar&amp;apos;s Bay' width='375' /&gt;&lt;/a&gt;
&lt;h2 id='surf_and_jerk'&gt;Surf and Jerk&lt;/h2&gt;
&lt;a href='http://www.flickr.com/photos/ptarjan/3519782254/' title='Mmmmm... the most delicious Guavaberry colada! by paralax, on Flickr'&gt;&lt;img src='http://farm4.static.flickr.com/3613/3519782254_03190ff37f.jpg' height='500' alt='Mmmmm... the most delicious Guavaberry colada!' width='375' /&gt;&lt;/a&gt;
&lt;p&gt;Addicted to the great food, we headed to the beach for a french lunch, and guavaberry coladas. Then to Grand Case (the Caribbean&amp;#8217;s gourmet capital) to find &amp;#8230; what else, crepes! After putting on our extra 5 pounds we went to Pineapple Pete&amp;#8217;s for a great meal.&lt;/p&gt;
&lt;img src='http://www.pineapplepete-sxm.com/images/lobster.jpg' /&gt;
&lt;p&gt;We shared a their famous lobster thermadore and a jerk chicken sandwich (hence the corny title for this day).&lt;/p&gt;

&lt;h2 id='im_on_a_boat'&gt;I&amp;#8217;m on a Boat&lt;/h2&gt;

&lt;p&gt;We headed to the French side again this day to take a boat out to an island just off the Orient Beach. Before we stopped off at a truck to have lunch. They had a ton of authentic French food, (evan a Croque-monsieur that we had at our cooking class), but we opted to not ruin our french experience from the back of a van and got some hamburgers.&lt;/p&gt;
&lt;a href='http://www.flickr.com/photos/ptarjan/3519868440/' title='I&amp;apos;m on a boat -- SNL style! by paralax, on Flickr'&gt;&lt;img src='http://farm4.static.flickr.com/3352/3519868440_cfc0cc754f.jpg' height='500' alt='I&amp;apos;m on a boat -- SNL style!' width='375' /&gt;&lt;/a&gt;
&lt;p&gt;It was gorgeous out there and we took a plethora of pictures.&lt;/p&gt;
&lt;a href='http://www.flickr.com/photos/ptarjan/3519061575/' title='Walking on the water by paralax, on Flickr'&gt;&lt;img src='http://farm4.static.flickr.com/3601/3519061575_e5f9f67aac.jpg' height='375' alt='Walking on the water' width='500' /&gt;&lt;/a&gt;&lt;a href='http://www.flickr.com/photos/ptarjan/3519067657/' title='Falling ... over by paralax, on Flickr'&gt;&lt;img src='http://farm4.static.flickr.com/3566/3519067657_7309e2374f.jpg' height='375' alt='Falling ... over' width='500' /&gt;&lt;/a&gt;&lt;a href='http://www.flickr.com/photos/ptarjan/3519073497/' title='Lobster fest! by paralax, on Flickr'&gt;&lt;img src='http://farm4.static.flickr.com/3554/3519073497_79cb367f2e.jpg' height='375' alt='Lobster fest!' width='500' /&gt;&lt;/a&gt;
&lt;p&gt;They kept their restaurant lobsters out in the ocean and when someone ordered one they would pull in the cage and lift them out.&lt;/p&gt;

&lt;h2 id='in_search_of_crepes'&gt;In Search of Crepes&lt;/h2&gt;
&lt;a href='http://www.flickr.com/photos/ptarjan/3519152035/' title='More H2O football by paralax, on Flickr'&gt;&lt;img src='http://farm4.static.flickr.com/3582/3519152035_d8085324db.jpg' height='500' alt='More H2O football' width='375' /&gt;&lt;/a&gt;
&lt;p&gt;For our last day we went back to Orient beach and played a little football in the waves.&lt;/p&gt;
&lt;a href='http://www.flickr.com/photos/ptarjan/3519130235/' title='mmmmm... impossible à résister by paralax, on Flickr'&gt;&lt;img src='http://farm4.static.flickr.com/3559/3519130235_967d81434b.jpg' height='500' alt='mmmmm... impossible à résister' width='375' /&gt;&lt;/a&gt;
&lt;p&gt;Of course we had to find an authentic French crepe to end our great vacation.&lt;/p&gt;

&lt;p&gt;It was a wonderful birthday trip. If you want to see any other pictures, feel free to check out the &lt;a href='http://www.flickr.com/photos/ptarjan/sets/72157617961723402/'&gt;full set of pictures.&lt;/a&gt;&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>My Performance Review</title>
    <link href="http://blog.paulisageek.com/2009/03/my-performance-review.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2009/03/my-performance-review.html" />
    <updated>2009-03-05T00:00:00-08:00</updated>
    <published>2009-03-05T00:00:00-08:00</published>
    <id>http://blog.paulisageek.com/2009/03/my-performance-review</id>
    <content type="html">&lt;p&gt;So this year I&amp;#8217;ve got my focal review in the form of a Haiku: &lt;pre&gt;
Paul. Smart kid. Search monkey.
Cupcakes, cookies, good girlfriend.
When is next big win?
&lt;/pre&gt;&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>SearchMonkey Video</title>
    <link href="http://blog.paulisageek.com/2009/02/searchmonkey-video.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2009/02/searchmonkey-video.html" />
    <updated>2009-02-19T00:00:00-08:00</updated>
    <published>2009-02-19T00:00:00-08:00</published>
    <id>http://blog.paulisageek.com/2009/02/searchmonkey-video</id>
    <content type="html">&lt;p&gt;Hot on the heals of the &lt;a href='http://paulisageek.blogspot.com/2009/01/searchmonkey-song.html'&gt;SearchMonkey song&lt;/a&gt; comes the &lt;a href='http://www.youtube.com/watch?v=8mlO3rsKeZY'&gt;SearchMonkey video&lt;/a&gt;. &lt;a href='http://video.yahoo.com/watch/4548645/12180901' style='display:none'&gt;Yahoo! video link.&lt;/a&gt;&lt;/p&gt;
&lt;object rel='media:video' resource='http://www.youtube.com/v/8mlO3rsKeZY' xmlns:media='http://search.yahoo.com/searchmonkey/media/' height='324' width='425'&gt;&lt;a href='http://i2.ytimg.com/vi/8mlO3rsKeZY/default.jpg' rel='media:thumbnail' /&gt;&lt;param name='movie' value='http://www.youtube.com/v/8mlO3rsKeZY' /&gt;&lt;param name='allowFullScreen' value='true' /&gt;&lt;param name='allowscriptaccess' value='always' /&gt;&lt;embed src='http://www.youtube.com/v/8mlO3rsKeZY' allowfullscreen='true' type='application/x-shockwave-flash' allowscriptaccess='always' height='324' width='425' /&gt;&lt;/object&gt;
&lt;p&gt;Lyrics:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;SearchMonkey get information
SearchMonkey help you out
SearchMonkey store structured data
That you can&amp;#39;t live without.

You say old searching very diligent
But its output stink
Result not functional or elegant
What do SearchMonkey think?

SearchMonkey think maybe developer want to write god damn result page himself
SearchMonkey just say it out loud
SearchMonkey is crazy and proud

SearchMonkey like Yahoo!
SearchMonkey like semantic knowledge
SearchMonkey very simple app
That anyone can use:
Even Monkey like you&lt;/code&gt;&lt;/pre&gt;</content>
  </entry>
  
  <entry>
    <title>SearchMonkey Song</title>
    <link href="http://blog.paulisageek.com/2009/01/searchmonkey-song.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2009/01/searchmonkey-song.html" />
    <updated>2009-01-30T00:00:00-08:00</updated>
    <published>2009-01-30T00:00:00-08:00</published>
    <id>http://blog.paulisageek.com/2009/01/searchmonkey-song</id>
    <content type="html">&lt;p&gt;I wrote a little song for my product at work, &lt;a href='http://developer.yahoo.com/searchmonkey'&gt;SearchMonkey&lt;/a&gt; (or Search Monkey if you want to misspell it).&lt;/p&gt;

&lt;p&gt;Enjoy :) And please suggest more verses or make a video with it :)&lt;/p&gt;
&lt;a href='/files/SearchMonkey.mp3' type='audio/mpeg'&gt;SearchMonkey song&lt;/a&gt;
&lt;p&gt;Lyrics:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;SearchMonkey get information
SearchMonkey help you out
SearchMonkey store structured data
That you can&amp;#39;t live without.
 
You say old searching very diligent
But its output stink
Result not functional or elegant
What do SearchMonkey think?
 
SearchMonkey think maybe developer want to write god damn result page himself
SearchMonkey just say it out loud
SearchMonkey is crazy and proud
 
SearchMonkey like Yahoo!
SearchMonkey like semantic knowledge
SearchMonkey very simple app
That anyone can use:
Even Monkey like you&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Note: This is NOT endorsed by Yahoo! or anything like that. It is just me having a little fun :)&lt;/p&gt;
&lt;script src='http://mediaplayer.yahoo.com/js' type='text/javascript' /&gt;</content>
  </entry>
  
  <entry>
    <title>Best Cube Prank</title>
    <link href="http://blog.paulisageek.com/2009/01/best-cube-prank.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2009/01/best-cube-prank.html" />
    <updated>2009-01-09T00:00:00-08:00</updated>
    <published>2009-01-09T00:00:00-08:00</published>
    <id>http://blog.paulisageek.com/2009/01/best-cube-prank</id>
    <content type="html">&lt;a href='http://www.flickr.com/photos/ptarjan/sets/72157612299912509/'&gt;All Prank Pictures&lt;/a&gt;
&lt;p&gt;So I got back to work today, and as usual ran straight to my first meeting without seeing my cube. No one dropped any hints whatsoever so when I finally got out of my meetings and went to sit down, I walked to my beautiful corner window cube and was greeted by:&lt;/p&gt;
&lt;img src='http://farm4.static.flickr.com/3323/3181151825_751b53cb33.jpg?v=0' /&gt;
&lt;p&gt;And behind it, all my workly possessions:&lt;/p&gt;
&lt;img src='http://farm4.static.flickr.com/3473/3181987024_ae71d569c4.jpg?v=0' /&gt;
&lt;p&gt;I instantly knew it was Dave my co-worker of pranking fame. I ran over to his cube laughing and only to find it completely empty and clean&amp;#8230; I asked our boss, and he said &amp;#8220;Oh? No one told you? Dave quit Jan 1st. Sorry. His last day was spent packing himself and you up.&amp;#8221;&lt;/p&gt;

&lt;p&gt;I just stood there dumbfounded, &amp;#8216;But I had just heard from Dave.&amp;#8217; I ran back to my cube to see when the last message I got from him was, and it was Jan 2, asking me when I was coming back from vacation. &amp;#8216;Well, he could have been at home when he sent that&amp;#8217; I thought.&lt;/p&gt;

&lt;p&gt;I just sighed and thought of all the fun times we had, and started unpacking the last prank he left me. About 10 minutes in, Kevin comes walking back with a huge grin on his face and tells me that Dave actually moved to another cube closer to the group he worked with. I was so relieved and complained to Kevin about his horrible prank.&lt;/p&gt;

&lt;p&gt;Smiling and happy that Dave actually didn&amp;#8217;t quit, I went to the sink to get some water to wash my desk (I might as well since I was totally packed). I saw Dave in the hallway! I playfully hit him in the arm for yet again pulling a great prank on me. After smiling a bit, he told me that he was now working at eBay! What??? Kevin said that he just moved. He talked about looking for jobs since he was sure he was going to be laid off, and it just happened.&lt;/p&gt;

&lt;p&gt;My head started spinning and I worried that Kevin was pulling a prank on me about him moving cubes. It kinda made sense, since I inherited all of the &amp;#8216;old employee&amp;#8217; stars that we had been accumulating in our group:&lt;/p&gt;
&lt;img src='http://farm4.static.flickr.com/3090/3181985796_42ec093320.jpg?v=0' /&gt;
&lt;p&gt;I joked a bit that I will have to break into eBay to wrap his whole cube in newspaper. I asked why he was here? He said that he knew I was coming back today and he wanted to see my reaction to his cube boxing.&lt;/p&gt;

&lt;p&gt;It all made total sense. I just couldn&amp;#8217;t believe that Dave was gone.&lt;/p&gt;

&lt;p&gt;After watching me unpack a few of the things, he just started laughing. At that very moment, I knew that he was still a Yahoo, and that badge in his pocket didn&amp;#8217;t say eBay on it :)&lt;/p&gt;

&lt;p&gt;Him and Kevin were laughing so hard that I was duped 3 times. I told them &amp;#8216;I give up&amp;#8217;, and from here on in, I&amp;#8217;m checking our corporate database for all personnel issues :)&lt;/p&gt;

&lt;p&gt;Anyways, back to the cube box prank. My chair was boxed up:&lt;/p&gt;
&lt;img src='http://farm4.static.flickr.com/3259/3181156035_068c257154.jpg?v=0' /&gt;
&lt;p&gt;My monitor (still plugged in through the bottom):&lt;/p&gt;
&lt;img src='http://farm4.static.flickr.com/3385/3181988548_992e3cf0b3.jpg?v=0' /&gt;
&lt;p&gt;An my computer, which I was using the whole time on vacation, was plugged in through the back of a box:&lt;/p&gt;
&lt;img src='http://farm4.static.flickr.com/3265/3181156803_a6a224015a.jpg?v=0' /&gt;
&lt;p&gt;That box was quite hot :)&lt;/p&gt;

&lt;p&gt;So now I&amp;#8217;m moved back in, is it less or more messy now?&lt;/p&gt;
&lt;img src='http://farm4.static.flickr.com/3434/3181157369_688b0b5301.jpg?v=0' /&gt;</content>
  </entry>
  
  <entry>
    <title>Subway Card</title>
    <link href="http://blog.paulisageek.com/2008/11/subway-card.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2008/11/subway-card.html" />
    <updated>2008-11-18T00:00:00-08:00</updated>
    <published>2008-11-18T00:00:00-08:00</published>
    <id>http://blog.paulisageek.com/2008/11/subway-card</id>
    <content type="html">&lt;p&gt;As some might have noticed, Subway just came out with a new Point system. Doing some quick back-of-the-napkin math: &lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Number of Points&lt;/th&gt;&lt;th&gt;Item&lt;/th&gt;&lt;th&gt;Face Value&lt;/th&gt;&lt;th&gt;$  /point&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;1 Cookie&lt;/td&gt;&lt;td&gt;$0.49&lt;/td&gt;&lt;td&gt;$0.049&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;1 Bag of Chips&lt;/td&gt;&lt;td&gt;$0.99&lt;/td&gt;&lt;td&gt;$0.066&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;20&lt;/td&gt;&lt;td&gt;21 oz. Drink&lt;/td&gt;&lt;td&gt;$1.39&lt;/td&gt;&lt;td&gt;$0.0695&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;35&lt;/td&gt;&lt;td&gt;Mini Sub&lt;/td&gt;&lt;td&gt;$2.69&lt;/td&gt;&lt;td&gt;$0.07686&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;50&lt;/td&gt;&lt;td&gt;Regular 6&quot; Sub or Wrap&lt;/td&gt;&lt;td&gt;$3.69&lt;/td&gt;&lt;td&gt;$0.0738&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;75&lt;/td&gt;&lt;td&gt;Regular Footlong Sub or Salad&lt;/td&gt;&lt;td&gt;$5.89&lt;/td&gt;&lt;td&gt;$0.0785&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;

&lt;p&gt;I had to approximate some prices, but I just arbitrarily picked a Ham Sub since it was on all 3 of the lists (mini, 6&amp;#8221;, 12&amp;#8221;).&lt;/p&gt;

&lt;p&gt;So, even taking a cheep Ham sub, it is better to save up for the footlong. Especially if you want to go all the way and get a fancy footlong!&lt;/p&gt;

&lt;p&gt;Their old &amp;#8220;Buy 12 get 1 free&amp;#8221;, would have converted to 60 points for a Footlong, and 36 points for a 6&amp;#8221; (assuming 5 points / footlong, and 3 points / 6&amp;#8221;). So the Footlongs got a bit more expensive, but still almost comparable to the old system.&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>Gopher the Pun</title>
    <link href="http://blog.paulisageek.com/2008/11/gopher-the-pun.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2008/11/gopher-the-pun.html" />
    <updated>2008-11-17T00:00:00-08:00</updated>
    <published>2008-11-17T00:00:00-08:00</published>
    <id>http://blog.paulisageek.com/2008/11/gopher-the-pun</id>
    <content type="html">&lt;p&gt;There was a man who entered a local paper&amp;#8217;s pun contest. He sent in ten different puns, in the hope that at least one of the puns would win. Unfortunately, no pun in ten did.&lt;/p&gt;

&lt;p&gt;Reddit had a great link to a gopher server housing a ton of great jokes :&lt;/p&gt;
&lt;a href='gopher://seanm.ca/11/stuff/'&gt;gopher://seanm.ca/11/stuff&lt;/a&gt;</content>
  </entry>
  
  <entry>
    <title>Great Sentences</title>
    <link href="http://blog.paulisageek.com/2008/11/great-sentences.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2008/11/great-sentences.html" />
    <updated>2008-11-03T00:00:00-08:00</updated>
    <published>2008-11-03T00:00:00-08:00</published>
    <id>http://blog.paulisageek.com/2008/11/great-sentences</id>
    <content type="html">&lt;p&gt;I found some excellent sentences worth reposting:&lt;/p&gt;
&lt;a href='http://en.wikipedia.org/wiki/James_while_John_had_had_had_had_had_had_had_had_had_had_had_a_better_effect_on_the_teacher'&gt;James while John had had had had had had had had had had had a better effect on the teacher&lt;/a&gt;
&lt;p&gt;Which when we add some punctuation :&lt;/p&gt;

&lt;p&gt;James, while John had had &amp;#8220;had,&amp;#8221; had had &amp;#8220;had had&amp;#8221;; &amp;#8220;had had&amp;#8221; had had a better effect on the teacher.&lt;/p&gt;

&lt;p&gt;Which makes perfect sense if you read it out loud :)&lt;/p&gt;

&lt;p&gt;Also:&lt;/p&gt;
&lt;a href='http://en.wikipedia.org/wiki/Buffalo_buffalo_Buffalo_buffalo_buffalo_buffalo_Buffalo_buffalo'&gt;Buffalo buffalo Buffalo buffalo buffalo buffalo Buffalo buffalo&lt;/a&gt;
&lt;p&gt;which talks about the bison whom live in the city Buffalo pushing around other bison.&lt;/p&gt;

&lt;p&gt;and &amp;#8220;Fish fish fish fish fish&amp;#8221; = Fish(n) (whom) fish(n) fish(v), fish(v) fish(n) = Fish which are fished by fish, fish other fish.&lt;/p&gt;

&lt;p&gt;Isn&amp;#8217;t language fun?&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>Halloween Costume</title>
    <link href="http://blog.paulisageek.com/2008/11/halloween-costume.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2008/11/halloween-costume.html" />
    <updated>2008-11-02T00:00:00-07:00</updated>
    <published>2008-11-02T00:00:00-07:00</published>
    <id>http://blog.paulisageek.com/2008/11/halloween-costume</id>
    <content type="html">&lt;p&gt;My Halloween costume. A Real Live &lt;img src='http://l.yimg.com/a/i/eu/sch/smd/searchmonkey_logo147x150.gif' /&gt;&lt;/p&gt;
&lt;a href='http://www.flickr.com/photos/ptarjan/2998335384/in/set-72157608604822806/'&gt;&lt;img src='http://farm4.static.flickr.com/3182/2998335384_d96d398562.jpg' /&gt;&lt;/a&gt;&lt;a href='http://www.flickr.com/photos/ptarjan/2997498589/in/set-72157608604822806/'&gt;&lt;img src='http://farm4.static.flickr.com/3046/2997498589_0503b6bbf5.jpg' /&gt;&lt;/a&gt;&lt;a href='http://www.flickr.com/photos/ptarjan/2997419755/in/set-72157608604822806/'&gt;&lt;img src='http://farm4.static.flickr.com/3058/2997419755_831d9e37a8.jpg' /&gt;&lt;/a&gt;&lt;a href='http://www.flickr.com/photos/ptarjan/2998257176/in/set-72157608604822806/'&gt;&lt;img src='http://farm4.static.flickr.com/3142/2998257176_fc3e201313.jpg' /&gt;&lt;/a&gt;&lt;a href='http://www.flickr.com/photos/ptarjan/2998252536/in/set-72157608604822806/'&gt;&lt;img src='http://farm4.static.flickr.com/3284/2998252536_aafb1420c7.jpg' /&gt;&lt;/a&gt;&lt;a href='http://flickr.com/photos/pollita/2990150554/'&gt;&lt;img src='http://farm4.static.flickr.com/3238/2990150554_d0d75560ab.jpg?v=0' /&gt;&lt;/a&gt;
&lt;p&gt;More on my &lt;a href='http://www.flickr.com/photos/ptarjan/sets/72157608604822806/'&gt;Halloween 2008-10-31&lt;/a&gt; flickr set.&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>Python Ninja</title>
    <link href="http://blog.paulisageek.com/2008/10/python-ninja.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2008/10/python-ninja.html" />
    <updated>2008-10-27T00:00:00-07:00</updated>
    <published>2008-10-27T00:00:00-07:00</published>
    <id>http://blog.paulisageek.com/2008/10/python-ninja</id>
    <content type="html">&lt;p&gt;I&amp;#8217;ve been doing a few programming problems from &lt;a href='http://projecteuler.net'&gt;Project Euler&lt;/a&gt; and having a ton of fun. Here are a few functions that I found useful and I&amp;#8217;m sure someone else would as well.&lt;/p&gt;

&lt;h3 id='prime_iteration'&gt;Prime Iteration&lt;/h3&gt;

&lt;p&gt;If you want to go through a list of integers and also know their prime factors, you could create some functions (the names should tell you what they do):&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='python'&gt;&lt;span class='k'&gt;def&lt;/span&gt; &lt;span class='nf'&gt;primeFactor&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;n&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;primeSet&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='bp'&gt;None&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
        &lt;span class='n'&gt;ret&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='p'&gt;[]&lt;/span&gt;
        &lt;span class='k'&gt;if&lt;/span&gt; &lt;span class='n'&gt;primeSet&lt;/span&gt; &lt;span class='o'&gt;==&lt;/span&gt; &lt;span class='bp'&gt;None&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt; &lt;span class='n'&gt;primeSet&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='n'&gt;primesToN&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nb'&gt;int&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;n&lt;/span&gt; &lt;span class='o'&gt;**&lt;/span&gt; &lt;span class='mf'&gt;0.5&lt;/span&gt;&lt;span class='p'&gt;))&lt;/span&gt;
        &lt;span class='k'&gt;for&lt;/span&gt; &lt;span class='n'&gt;p&lt;/span&gt; &lt;span class='ow'&gt;in&lt;/span&gt; &lt;span class='n'&gt;primeSet&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
                &lt;span class='k'&gt;while&lt;/span&gt; &lt;span class='n'&gt;n&lt;/span&gt; &lt;span class='o'&gt;%&lt;/span&gt; &lt;span class='n'&gt;p&lt;/span&gt; &lt;span class='o'&gt;==&lt;/span&gt; &lt;span class='mi'&gt;0&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
                        &lt;span class='n'&gt;ret&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;append&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;p&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt;
                        &lt;span class='n'&gt;n&lt;/span&gt; &lt;span class='o'&gt;/=&lt;/span&gt; &lt;span class='n'&gt;p&lt;/span&gt;
        &lt;span class='k'&gt;if&lt;/span&gt; &lt;span class='n'&gt;n&lt;/span&gt; &lt;span class='o'&gt;!=&lt;/span&gt; &lt;span class='mi'&gt;1&lt;/span&gt;&lt;span class='p'&gt;:&lt;/span&gt; &lt;span class='n'&gt;ret&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;append&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;n&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt;
        &lt;span class='k'&gt;return&lt;/span&gt; &lt;span class='n'&gt;ret&lt;/span&gt;

&lt;span class='k'&gt;def&lt;/span&gt; &lt;span class='nf'&gt;primesToN&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;n&lt;/span&gt;&lt;span class='p'&gt;):&lt;/span&gt;
        &lt;span class='k'&gt;if&lt;/span&gt; &lt;span class='n'&gt;n&lt;/span&gt;&lt;span class='o'&gt;==&lt;/span&gt;&lt;span class='mi'&gt;2&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt; &lt;span class='k'&gt;return&lt;/span&gt; &lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='mi'&gt;2&lt;/span&gt;&lt;span class='p'&gt;]&lt;/span&gt;
        &lt;span class='k'&gt;elif&lt;/span&gt; &lt;span class='n'&gt;n&lt;/span&gt; &lt;span class='o'&gt;&amp;lt;&lt;/span&gt; &lt;span class='mi'&gt;2&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt; &lt;span class='k'&gt;return&lt;/span&gt; &lt;span class='p'&gt;[]&lt;/span&gt;
        &lt;span class='n'&gt;s&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='nb'&gt;range&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='mi'&gt;3&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;n&lt;/span&gt;&lt;span class='o'&gt;+&lt;/span&gt;&lt;span class='mi'&gt;1&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='mi'&gt;2&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt;
        &lt;span class='n'&gt;mroot&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='n'&gt;n&lt;/span&gt; &lt;span class='o'&gt;**&lt;/span&gt; &lt;span class='mf'&gt;0.5&lt;/span&gt;
        &lt;span class='n'&gt;half&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;n&lt;/span&gt;&lt;span class='o'&gt;+&lt;/span&gt;&lt;span class='mi'&gt;1&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='o'&gt;/&lt;/span&gt; &lt;span class='mi'&gt;2&lt;/span&gt; &lt;span class='o'&gt;-&lt;/span&gt; &lt;span class='mi'&gt;1&lt;/span&gt;
        &lt;span class='n'&gt;i&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='mi'&gt;0&lt;/span&gt;
        &lt;span class='n'&gt;m&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='mi'&gt;3&lt;/span&gt;
        &lt;span class='k'&gt;while&lt;/span&gt; &lt;span class='n'&gt;m&lt;/span&gt; &lt;span class='o'&gt;&amp;lt;=&lt;/span&gt; &lt;span class='n'&gt;mroot&lt;/span&gt;&lt;span class='p'&gt;:&lt;/span&gt;
                &lt;span class='k'&gt;if&lt;/span&gt; &lt;span class='n'&gt;s&lt;/span&gt;&lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='n'&gt;i&lt;/span&gt;&lt;span class='p'&gt;]:&lt;/span&gt;
                        &lt;span class='n'&gt;j&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;m&lt;/span&gt; &lt;span class='o'&gt;*&lt;/span&gt; &lt;span class='n'&gt;m&lt;/span&gt; &lt;span class='o'&gt;-&lt;/span&gt; &lt;span class='mi'&gt;3&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='o'&gt;/&lt;/span&gt; &lt;span class='mi'&gt;2&lt;/span&gt;
                        &lt;span class='n'&gt;s&lt;/span&gt;&lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='n'&gt;j&lt;/span&gt;&lt;span class='p'&gt;]&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='mi'&gt;0&lt;/span&gt;
                        &lt;span class='k'&gt;while&lt;/span&gt; &lt;span class='n'&gt;j&lt;/span&gt; &lt;span class='o'&gt;&amp;lt;&lt;/span&gt; &lt;span class='n'&gt;half&lt;/span&gt;&lt;span class='p'&gt;:&lt;/span&gt;
                                &lt;span class='n'&gt;s&lt;/span&gt;&lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='n'&gt;j&lt;/span&gt;&lt;span class='p'&gt;]&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='mi'&gt;0&lt;/span&gt;
                                &lt;span class='n'&gt;j&lt;/span&gt;&lt;span class='o'&gt;+&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='n'&gt;m&lt;/span&gt;
                &lt;span class='n'&gt;i&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='n'&gt;i&lt;/span&gt; &lt;span class='o'&gt;+&lt;/span&gt; &lt;span class='mi'&gt;1&lt;/span&gt;
                &lt;span class='n'&gt;m&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='mi'&gt;2&lt;/span&gt;&lt;span class='o'&gt;*&lt;/span&gt;&lt;span class='n'&gt;i&lt;/span&gt; &lt;span class='o'&gt;+&lt;/span&gt; &lt;span class='mi'&gt;3&lt;/span&gt;
        &lt;span class='k'&gt;return&lt;/span&gt; &lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='mi'&gt;2&lt;/span&gt;&lt;span class='p'&gt;]&lt;/span&gt; &lt;span class='o'&gt;+&lt;/span&gt; &lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='n'&gt;x&lt;/span&gt; &lt;span class='k'&gt;for&lt;/span&gt; &lt;span class='n'&gt;x&lt;/span&gt; &lt;span class='ow'&gt;in&lt;/span&gt; &lt;span class='n'&gt;s&lt;/span&gt; &lt;span class='k'&gt;if&lt;/span&gt; &lt;span class='n'&gt;x&lt;/span&gt;&lt;span class='p'&gt;]&lt;/span&gt;

&lt;span class='k'&gt;def&lt;/span&gt; &lt;span class='nf'&gt;primes&lt;/span&gt;&lt;span class='p'&gt;()&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
        &lt;span class='k'&gt;yield&lt;/span&gt; &lt;span class='mi'&gt;2&lt;/span&gt;
        &lt;span class='n'&gt;D&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='p'&gt;{}&lt;/span&gt;
        &lt;span class='n'&gt;q&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='mi'&gt;3&lt;/span&gt;
        &lt;span class='k'&gt;while&lt;/span&gt; &lt;span class='bp'&gt;True&lt;/span&gt;&lt;span class='p'&gt;:&lt;/span&gt;
                &lt;span class='n'&gt;p&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='n'&gt;D&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;pop&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;q&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='mi'&gt;0&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt;
                &lt;span class='k'&gt;if&lt;/span&gt; &lt;span class='n'&gt;p&lt;/span&gt;&lt;span class='p'&gt;:&lt;/span&gt;
                        &lt;span class='n'&gt;x&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='n'&gt;q&lt;/span&gt; &lt;span class='o'&gt;+&lt;/span&gt; &lt;span class='n'&gt;p&lt;/span&gt;
                        &lt;span class='k'&gt;while&lt;/span&gt; &lt;span class='n'&gt;x&lt;/span&gt; &lt;span class='ow'&gt;in&lt;/span&gt; &lt;span class='n'&gt;D&lt;/span&gt;&lt;span class='p'&gt;:&lt;/span&gt; &lt;span class='n'&gt;x&lt;/span&gt; &lt;span class='o'&gt;+=&lt;/span&gt; &lt;span class='n'&gt;p&lt;/span&gt;
                        &lt;span class='n'&gt;D&lt;/span&gt;&lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='n'&gt;x&lt;/span&gt;&lt;span class='p'&gt;]&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='n'&gt;p&lt;/span&gt;
                &lt;span class='k'&gt;else&lt;/span&gt;&lt;span class='p'&gt;:&lt;/span&gt;
                        &lt;span class='k'&gt;yield&lt;/span&gt; &lt;span class='n'&gt;q&lt;/span&gt;
                        &lt;span class='n'&gt;D&lt;/span&gt;&lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='n'&gt;q&lt;/span&gt;&lt;span class='o'&gt;*&lt;/span&gt;&lt;span class='n'&gt;q&lt;/span&gt;&lt;span class='p'&gt;]&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='mi'&gt;2&lt;/span&gt;&lt;span class='o'&gt;*&lt;/span&gt;&lt;span class='n'&gt;q&lt;/span&gt;
                &lt;span class='n'&gt;q&lt;/span&gt; &lt;span class='o'&gt;+=&lt;/span&gt; &lt;span class='mi'&gt;2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;And then you could just do this:&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='python'&gt;&lt;span class='n'&gt;primeRange&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='n'&gt;itertools&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;imap&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='k'&gt;lambda&lt;/span&gt; &lt;span class='n'&gt;x&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt; &lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nb'&gt;tuple&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;util&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;primeFactor&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;x&lt;/span&gt;&lt;span class='p'&gt;)),&lt;/span&gt; &lt;span class='n'&gt;x&lt;/span&gt;&lt;span class='p'&gt;),&lt;/span&gt; &lt;span class='nb'&gt;xrange&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='mi'&gt;2&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='mi'&gt;1000&lt;/span&gt;&lt;span class='p'&gt;))&lt;/span&gt;
&lt;span class='k'&gt;for&lt;/span&gt; &lt;span class='n'&gt;factors&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;number&lt;/span&gt; &lt;span class='ow'&gt;in&lt;/span&gt; &lt;span class='n'&gt;primeRange&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
    &lt;span class='c'&gt;# do something with the factors and number&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Now, this gets REALLY slow once you hit big numbers (like a million). So I wrote a generator that will go through all the numbers to n, generating them from primes instead of finding the primes from the number.&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='python'&gt;&lt;span class='k'&gt;for&lt;/span&gt; &lt;span class='n'&gt;factors&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;number&lt;/span&gt; &lt;span class='ow'&gt;in&lt;/span&gt; &lt;span class='n'&gt;prange&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='mi'&gt;1000&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
   &lt;span class='c'&gt;# do something with factors and number&lt;/span&gt;

&lt;span class='n'&gt;primeRange&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='n'&gt;itertools&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;imap&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='k'&gt;lambda&lt;/span&gt; &lt;span class='n'&gt;x&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt; &lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nb'&gt;tuple&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;util&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;primeFactor&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;x&lt;/span&gt;&lt;span class='p'&gt;)),&lt;/span&gt; &lt;span class='n'&gt;x&lt;/span&gt;&lt;span class='p'&gt;),&lt;/span&gt; &lt;span class='nb'&gt;xrange&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='mi'&gt;2&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='mi'&gt;10&lt;/span&gt;&lt;span class='p'&gt;))&lt;/span&gt;

&lt;span class='c'&gt;# Same thing in different order&lt;/span&gt;

&lt;span class='nb'&gt;range&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='mi'&gt;2&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='mi'&gt;1000&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='o'&gt;==&lt;/span&gt; &lt;span class='n'&gt;prange&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='mi'&gt;1000&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='c'&gt;# False&lt;/span&gt;
&lt;span class='nb'&gt;set&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt; &lt;span class='nb'&gt;range&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='mi'&gt;2&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='mi'&gt;1000&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='o'&gt;==&lt;/span&gt; &lt;span class='nb'&gt;set&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt; &lt;span class='n'&gt;prange&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='mi'&gt;1000&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='c'&gt;# True&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;And finally the prange function:&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='python'&gt;&lt;span class='k'&gt;def&lt;/span&gt; &lt;span class='nf'&gt;prange&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;n&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
        &lt;span class='sd'&gt;&amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;
&lt;span class='sd'&gt;prange(n) -&amp;gt; generator&lt;/span&gt;

&lt;span class='sd'&gt;Returns a generator for numbers from (2 to n-1) in prime base order&lt;/span&gt;
&lt;span class='sd'&gt;e.g. &lt;/span&gt;
&lt;span class='sd'&gt;[x[1] for x in prange(10)] = [2, 3, 5, 7, 4, 6, 9, 8]&lt;/span&gt;

&lt;span class='sd'&gt;ignoring order this is a complicated way to get a range&lt;/span&gt;
&lt;span class='sd'&gt;e.g.&lt;/span&gt;
&lt;span class='sd'&gt;set([x[1] for x in prange(1000)]) == set(range(2, 1000))&lt;/span&gt;

&lt;span class='sd'&gt;The first term is a tuple (primes, powers) where len(primes) == len(powers)&lt;/span&gt;
&lt;span class='sd'&gt;e.g. &lt;/span&gt;
&lt;span class='sd'&gt;[x[0] for x in prange(10)] = &lt;/span&gt;
&lt;span class='sd'&gt;[(2,), (3,), (5,), (7,), (2, 2), (2, 3), (3, 3), (2, 2, 2)]&lt;/span&gt;

&lt;span class='sd'&gt;And to make sure the sums are right.&lt;/span&gt;
&lt;span class='sd'&gt;[prod(p) for p in [x[0] for x in prange(1000)]] == [x[1] for x in prange(1000)]&lt;/span&gt;
&lt;span class='sd'&gt;        &amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;
        &lt;span class='k'&gt;for&lt;/span&gt; &lt;span class='n'&gt;count&lt;/span&gt; &lt;span class='ow'&gt;in&lt;/span&gt; &lt;span class='n'&gt;itertools&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;count&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='mi'&gt;1&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
                &lt;span class='n'&gt;done&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='bp'&gt;True&lt;/span&gt;
                &lt;span class='k'&gt;for&lt;/span&gt; &lt;span class='n'&gt;d&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;comb&lt;/span&gt; &lt;span class='ow'&gt;in&lt;/span&gt; &lt;span class='n'&gt;primeLists&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='k'&gt;lambda&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt; &lt;span class='n'&gt;util&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;primes&lt;/span&gt;&lt;span class='p'&gt;(),&lt;/span&gt; &lt;span class='n'&gt;count&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;n&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
                        &lt;span class='n'&gt;done&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='bp'&gt;False&lt;/span&gt;
                        &lt;span class='k'&gt;yield&lt;/span&gt; &lt;span class='n'&gt;comb&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;d&lt;/span&gt;
                &lt;span class='k'&gt;if&lt;/span&gt; &lt;span class='n'&gt;done&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt; &lt;span class='k'&gt;break&lt;/span&gt;

&lt;span class='k'&gt;def&lt;/span&gt; &lt;span class='nf'&gt;prod&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nb'&gt;list&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
        &lt;span class='k'&gt;return&lt;/span&gt; &lt;span class='nb'&gt;reduce&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;operator&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;mul&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='nb'&gt;list&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt;

&lt;span class='k'&gt;def&lt;/span&gt; &lt;span class='nf'&gt;pow&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;a&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;b&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
        &lt;span class='k'&gt;return&lt;/span&gt; &lt;span class='n'&gt;prod&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt; &lt;span class='p'&gt;[&lt;/span&gt; &lt;span class='n'&gt;a&lt;/span&gt;&lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='n'&gt;i&lt;/span&gt;&lt;span class='p'&gt;]&lt;/span&gt; &lt;span class='o'&gt;**&lt;/span&gt; &lt;span class='n'&gt;b&lt;/span&gt;&lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='n'&gt;i&lt;/span&gt;&lt;span class='p'&gt;]&lt;/span&gt; &lt;span class='k'&gt;for&lt;/span&gt; &lt;span class='n'&gt;i&lt;/span&gt; &lt;span class='ow'&gt;in&lt;/span&gt; &lt;span class='nb'&gt;xrange&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nb'&gt;min&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nb'&gt;len&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;a&lt;/span&gt;&lt;span class='p'&gt;),&lt;/span&gt; &lt;span class='nb'&gt;len&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;b&lt;/span&gt;&lt;span class='p'&gt;)))]&lt;/span&gt; &lt;span class='p'&gt;)&lt;/span&gt;

&lt;span class='k'&gt;def&lt;/span&gt; &lt;span class='nf'&gt;powers&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;comb&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;lim&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
        &lt;span class='k'&gt;def&lt;/span&gt; &lt;span class='nf'&gt;iterFunc&lt;/span&gt;&lt;span class='p'&gt;()&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
                &lt;span class='k'&gt;for&lt;/span&gt; &lt;span class='n'&gt;c&lt;/span&gt; &lt;span class='ow'&gt;in&lt;/span&gt; &lt;span class='n'&gt;itertools&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;count&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='mi'&gt;1&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt; &lt;span class='k'&gt;yield&lt;/span&gt; &lt;span class='n'&gt;c&lt;/span&gt;
        &lt;span class='k'&gt;return&lt;/span&gt; &lt;span class='n'&gt;walkIters&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;iterFunc&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='nb'&gt;len&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;comb&lt;/span&gt;&lt;span class='p'&gt;),&lt;/span&gt; &lt;span class='k'&gt;lambda&lt;/span&gt; &lt;span class='n'&gt;nums&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt; &lt;span class='nb'&gt;pow&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;comb&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;nums&lt;/span&gt;&lt;span class='p'&gt;),&lt;/span&gt; &lt;span class='n'&gt;lim&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt;

&lt;span class='k'&gt;def&lt;/span&gt; &lt;span class='nf'&gt;primeCombinations&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;primeFunc&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;count&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;lim&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
        &lt;span class='k'&gt;return&lt;/span&gt; &lt;span class='n'&gt;walkIters&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;primeFunc&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;count&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;prod&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;lim&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;alwaysAscending&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='bp'&gt;True&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt;

&lt;span class='k'&gt;def&lt;/span&gt; &lt;span class='nf'&gt;primeLists&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;primeFunc&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;count&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;lim&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
        &lt;span class='k'&gt;return&lt;/span&gt; &lt;span class='n'&gt;walkIters&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;primeFunc&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;count&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;prod&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;lim&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;alwaysAscending&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='bp'&gt;True&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;allowDuplicated&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='bp'&gt;True&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt;

&lt;span class='k'&gt;def&lt;/span&gt; &lt;span class='nf'&gt;walkIters&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;generator&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;count&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;evalFunc&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;lim&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;alwaysAscending&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='bp'&gt;False&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;allowDuplicated&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='bp'&gt;False&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
        &lt;span class='sd'&gt;&amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;
&lt;span class='sd'&gt;walkIters(iterFunc, count, evalFunc, lim, alwaysAscending = False) -&amp;gt; &amp;lt;generator&amp;gt;&lt;/span&gt;

&lt;span class='sd'&gt;walks an iterator returning a tuple of (evalFunc(ret), ret) for each row, where ret = (iterval0, iterval1, ...) and it is guarenteed that evalFunc(ret) &amp;lt; lim&lt;/span&gt;
&lt;span class='sd'&gt;        &amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;
        &lt;span class='n'&gt;iters&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='n'&gt;generator&lt;/span&gt;&lt;span class='p'&gt;()&lt;/span&gt; &lt;span class='k'&gt;for&lt;/span&gt; &lt;span class='n'&gt;i&lt;/span&gt; &lt;span class='ow'&gt;in&lt;/span&gt; &lt;span class='nb'&gt;xrange&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;count&lt;/span&gt;&lt;span class='p'&gt;)]&lt;/span&gt;
        &lt;span class='n'&gt;nums&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='n'&gt;i&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;next&lt;/span&gt;&lt;span class='p'&gt;()&lt;/span&gt; &lt;span class='k'&gt;for&lt;/span&gt; &lt;span class='n'&gt;i&lt;/span&gt; &lt;span class='ow'&gt;in&lt;/span&gt; &lt;span class='n'&gt;iters&lt;/span&gt;&lt;span class='p'&gt;]&lt;/span&gt;
        &lt;span class='n'&gt;pos&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='mi'&gt;0&lt;/span&gt;
        &lt;span class='k'&gt;while&lt;/span&gt; &lt;span class='n'&gt;pos&lt;/span&gt; &lt;span class='o'&gt;&amp;gt;=&lt;/span&gt; &lt;span class='mi'&gt;0&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
                &lt;span class='k'&gt;if&lt;/span&gt; &lt;span class='n'&gt;alwaysAscending&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
                        &lt;span class='k'&gt;for&lt;/span&gt; &lt;span class='n'&gt;i&lt;/span&gt; &lt;span class='ow'&gt;in&lt;/span&gt; &lt;span class='nb'&gt;xrange&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;pos&lt;/span&gt; &lt;span class='o'&gt;+&lt;/span&gt; &lt;span class='mi'&gt;1&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;count&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
                                &lt;span class='k'&gt;if&lt;/span&gt; &lt;span class='n'&gt;allowDuplicated&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
                                        &lt;span class='k'&gt;while&lt;/span&gt; &lt;span class='n'&gt;nums&lt;/span&gt;&lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='n'&gt;i&lt;/span&gt;&lt;span class='p'&gt;]&lt;/span&gt; &lt;span class='o'&gt;&amp;lt;&lt;/span&gt; &lt;span class='n'&gt;nums&lt;/span&gt;&lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='n'&gt;i&lt;/span&gt;&lt;span class='o'&gt;-&lt;/span&gt;&lt;span class='mi'&gt;1&lt;/span&gt;&lt;span class='p'&gt;]&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
                                                &lt;span class='n'&gt;nums&lt;/span&gt;&lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='n'&gt;i&lt;/span&gt;&lt;span class='p'&gt;]&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='n'&gt;iters&lt;/span&gt;&lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='n'&gt;i&lt;/span&gt;&lt;span class='p'&gt;]&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;next&lt;/span&gt;&lt;span class='p'&gt;()&lt;/span&gt;
                                &lt;span class='k'&gt;else&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
                                        &lt;span class='k'&gt;while&lt;/span&gt; &lt;span class='n'&gt;nums&lt;/span&gt;&lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='n'&gt;i&lt;/span&gt;&lt;span class='p'&gt;]&lt;/span&gt; &lt;span class='o'&gt;&amp;lt;=&lt;/span&gt; &lt;span class='n'&gt;nums&lt;/span&gt;&lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='n'&gt;i&lt;/span&gt;&lt;span class='o'&gt;-&lt;/span&gt;&lt;span class='mi'&gt;1&lt;/span&gt;&lt;span class='p'&gt;]&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
                                                &lt;span class='n'&gt;nums&lt;/span&gt;&lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='n'&gt;i&lt;/span&gt;&lt;span class='p'&gt;]&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='n'&gt;iters&lt;/span&gt;&lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='n'&gt;i&lt;/span&gt;&lt;span class='p'&gt;]&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;next&lt;/span&gt;&lt;span class='p'&gt;()&lt;/span&gt;

                &lt;span class='n'&gt;d&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='n'&gt;evalFunc&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;nums&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt;
                &lt;span class='k'&gt;if&lt;/span&gt; &lt;span class='n'&gt;d&lt;/span&gt; &lt;span class='o'&gt;&amp;lt;&lt;/span&gt; &lt;span class='n'&gt;lim&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
                        &lt;span class='k'&gt;yield&lt;/span&gt; &lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;d&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='nb'&gt;tuple&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;nums&lt;/span&gt;&lt;span class='p'&gt;))&lt;/span&gt;
                        &lt;span class='n'&gt;pos&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='n'&gt;count&lt;/span&gt; &lt;span class='o'&gt;-&lt;/span&gt;&lt;span class='mi'&gt;1&lt;/span&gt;
                        &lt;span class='n'&gt;nums&lt;/span&gt;&lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='n'&gt;pos&lt;/span&gt;&lt;span class='p'&gt;]&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='n'&gt;iters&lt;/span&gt;&lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='n'&gt;pos&lt;/span&gt;&lt;span class='p'&gt;]&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;next&lt;/span&gt;&lt;span class='p'&gt;()&lt;/span&gt;

                &lt;span class='k'&gt;else&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
                        &lt;span class='k'&gt;if&lt;/span&gt; &lt;span class='n'&gt;pos&lt;/span&gt; &lt;span class='o'&gt;==&lt;/span&gt; &lt;span class='mi'&gt;0&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt; &lt;span class='k'&gt;break&lt;/span&gt;

                        &lt;span class='n'&gt;pos&lt;/span&gt; &lt;span class='o'&gt;-=&lt;/span&gt; &lt;span class='mi'&gt;1&lt;/span&gt;
                        &lt;span class='n'&gt;nums&lt;/span&gt;&lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='n'&gt;pos&lt;/span&gt;&lt;span class='p'&gt;]&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='n'&gt;iters&lt;/span&gt;&lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='n'&gt;pos&lt;/span&gt;&lt;span class='p'&gt;]&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;next&lt;/span&gt;&lt;span class='p'&gt;()&lt;/span&gt;

                        &lt;span class='k'&gt;for&lt;/span&gt; &lt;span class='n'&gt;num&lt;/span&gt; &lt;span class='ow'&gt;in&lt;/span&gt; &lt;span class='nb'&gt;xrange&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;pos&lt;/span&gt;&lt;span class='o'&gt;+&lt;/span&gt;&lt;span class='mi'&gt;1&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;count&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
                                &lt;span class='n'&gt;iters&lt;/span&gt;&lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='n'&gt;num&lt;/span&gt;&lt;span class='p'&gt;]&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='n'&gt;generator&lt;/span&gt;&lt;span class='p'&gt;()&lt;/span&gt;
                                &lt;span class='n'&gt;nums&lt;/span&gt;&lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='n'&gt;num&lt;/span&gt;&lt;span class='p'&gt;]&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='n'&gt;iters&lt;/span&gt;&lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='n'&gt;num&lt;/span&gt;&lt;span class='p'&gt;]&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;next&lt;/span&gt;&lt;span class='p'&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Or if you need the primes in order of unique prime factors:&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='python'&gt;&lt;span class='k'&gt;def&lt;/span&gt; &lt;span class='nf'&gt;prangePrimeOrder&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;n&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
        &lt;span class='sd'&gt;&amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;
&lt;span class='sd'&gt;prange(n) -&amp;gt; generator&lt;/span&gt;

&lt;span class='sd'&gt;Note: This is about 2x slower than prange(n) so if you don&amp;#39;t care about order, use prange()&lt;/span&gt;

&lt;span class='sd'&gt;Returns a generator for numbers from (2 to n-1) in prime base order&lt;/span&gt;
&lt;span class='sd'&gt;e.g. &lt;/span&gt;
&lt;span class='sd'&gt;[x[1] for x in prange(10)] = [2, 4, 8, 3, 9, 5, 7, 6]&lt;/span&gt;

&lt;span class='sd'&gt;ignoring order this is a complicated way to get a range&lt;/span&gt;
&lt;span class='sd'&gt;e.g.&lt;/span&gt;
&lt;span class='sd'&gt;set([x[1] for x in prange(1000)]) == set(range(2, 1000))&lt;/span&gt;

&lt;span class='sd'&gt;The first term is a tuple (primes, powers) where len(primes) == len(powers)&lt;/span&gt;
&lt;span class='sd'&gt;e.g. &lt;/span&gt;
&lt;span class='sd'&gt;[x[0] for x in prange(10)] = &lt;/span&gt;
&lt;span class='sd'&gt;[((2,), (1,)), ((2,), (2,)), ((2,), (3,)), ((3,), (1,)), ((3,), (2,)), ((5,), (1,)), ((7,), (1,)), ((2, 3), (1, 1))]&lt;/span&gt;
&lt;span class='sd'&gt;which says [2^1, 2^2, 2^3, 3^1, 3^2, 5^1, 7^1, 2^1 * 3^1]&lt;/span&gt;

&lt;span class='sd'&gt;If you want it paired in the other direction&lt;/span&gt;
&lt;span class='sd'&gt;e.g. &lt;/span&gt;
&lt;span class='sd'&gt;[zip(z[0], z[1]) for z in [x[0] for x in prange(10)]] =&lt;/span&gt;
&lt;span class='sd'&gt;[[(2, 1)], [(2, 2)], [(2, 3)], [(3, 1)], [(3, 2)], [(5, 1)], [(7, 1)], [(2, 1), (3, 1)]]&lt;/span&gt;
&lt;span class='sd'&gt;        &amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;
        &lt;span class='k'&gt;for&lt;/span&gt; &lt;span class='n'&gt;count&lt;/span&gt; &lt;span class='ow'&gt;in&lt;/span&gt; &lt;span class='n'&gt;itertools&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;count&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='mi'&gt;1&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
                &lt;span class='n'&gt;done&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='bp'&gt;True&lt;/span&gt;
                &lt;span class='k'&gt;for&lt;/span&gt; &lt;span class='n'&gt;d&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;comb&lt;/span&gt; &lt;span class='ow'&gt;in&lt;/span&gt; &lt;span class='n'&gt;primeCombinations&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='k'&gt;lambda&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt; &lt;span class='n'&gt;util&lt;/span&gt;&lt;span class='o'&gt;.&lt;/span&gt;&lt;span class='n'&gt;primes&lt;/span&gt;&lt;span class='p'&gt;(),&lt;/span&gt; &lt;span class='n'&gt;count&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;n&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
                        &lt;span class='n'&gt;done&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='bp'&gt;False&lt;/span&gt;
                        &lt;span class='k'&gt;for&lt;/span&gt; &lt;span class='n'&gt;pownum&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;nums&lt;/span&gt; &lt;span class='ow'&gt;in&lt;/span&gt; &lt;span class='n'&gt;powers&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;comb&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;n&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt;
                                &lt;span class='k'&gt;yield&lt;/span&gt; &lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='n'&gt;comb&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='n'&gt;nums&lt;/span&gt;&lt;span class='p'&gt;),&lt;/span&gt; &lt;span class='n'&gt;pownum&lt;/span&gt;
                &lt;span class='k'&gt;if&lt;/span&gt; &lt;span class='n'&gt;done&lt;/span&gt; &lt;span class='p'&gt;:&lt;/span&gt; &lt;span class='k'&gt;break&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;If anyone can speed up my code, please submit any changes. And feel free to use the code however you see fit. BSD License.&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>World pictures</title>
    <link href="http://blog.paulisageek.com/2008/10/world-pictures.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2008/10/world-pictures.html" />
    <updated>2008-10-12T00:00:00-07:00</updated>
    <published>2008-10-12T00:00:00-07:00</published>
    <id>http://blog.paulisageek.com/2008/10/world-pictures</id>
    <content type="html">&lt;p&gt;So &lt;a href='http://lerdorf.com'&gt;Rasmus&lt;/a&gt; has been spending countless hours cleaning up the flight data so we can do some neat hacks. My first hack was to visualize all of the commercial airports on &lt;a href='http://maps.google.com/maps?q=http%3A%2F%2Ftravel.slowgeek.com%2Fv1%2Fairports%3Fformat%3Drss'&gt;Google Maps&lt;/a&gt;, in &lt;a href='http://paul.slowgeek.com/flights/airports.php'&gt;Yahoo Maps&lt;/a&gt; (only use a good JS browser like Safari), in &lt;a href='http://travel.slowgeek.com/v1/airports/sfo?format=rss'&gt;GeoRSS&lt;/a&gt; or in &lt;a href='http://travel.slowgeek.com/v1/airports/?format=kml'&gt;KML&lt;/a&gt; (Google Earth).&lt;/p&gt;

&lt;p&gt;The next hack will be all the planes visualized over time. I have the data working but it is too much for any visualizer so far, and keep crashing them (or grinding them to a halt). Who would think that 61 million flights is too much?&lt;/p&gt;

&lt;p&gt;After working with the flight data as a hack, I guess I&amp;#8217;m in the &amp;#8220;visualizing the earth mood&amp;#8221;. Here are some awesome pictures.&lt;/p&gt;
&lt;a href='http://www.opentopia.com/images/cams/world_sunlight_map_rectangular.jpg'&gt;
&lt;img src='http://www.opentopia.com/images/cams/world_sunlight_map_rectangular.jpg' width='450' /&gt;&lt;/a&gt;&lt;a href='http://www.opentopia.com/images/cams/world_sunlight_map_hemisphere.jpg'&gt;
&lt;img src='http://www.opentopia.com/images/cams/world_sunlight_map_hemisphere.jpg' width='450' /&gt;&lt;/a&gt;
&lt;p&gt;Edit: Updated links to new API links.&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>SearchMonkey Presentation</title>
    <link href="http://blog.paulisageek.com/2008/10/searchmonkey-presentation.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2008/10/searchmonkey-presentation.html" />
    <updated>2008-10-06T00:00:00-07:00</updated>
    <published>2008-10-06T00:00:00-07:00</published>
    <id>http://blog.paulisageek.com/2008/10/searchmonkey-presentation</id>
    <content type="html">&lt;p&gt;Here is the &lt;a href='http://www.slideshare.net/ptarjan/searchmonkey-presentation'&gt;SearchMonkey presentation&lt;/a&gt; I&amp;#8217;ve been giving at the &lt;a href='http://developer.yahoo.com/hacku/'&gt;hacku&lt;/a&gt; events.&lt;/p&gt;
&lt;div id='__ss_639474' style='width:425px;text-align:left'&gt;&lt;object height='355' style='margin:0px' width='425'&gt;&lt;param name='movie' value='http://static.slideshare.net/swf/ssplayer2.swf?doc=hacku2008-1223314842727688-8&amp;stripped_title=searchmonkey-presentation' /&gt;&lt;param name='allowFullScreen' value='true' /&gt;&lt;param name='allowScriptAccess' value='always' /&gt;&lt;embed src='http://static.slideshare.net/swf/ssplayer2.swf?doc=hacku2008-1223314842727688-8&amp;stripped_title=searchmonkey-presentation' allowfullscreen='true' type='application/x-shockwave-flash' allowscriptaccess='always' height='355' width='425' /&gt;&lt;/object&gt;&lt;/div&gt;</content>
  </entry>
  
  <entry>
    <title>Spell chequer</title>
    <link href="http://blog.paulisageek.com/2008/10/spell-chequer.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2008/10/spell-chequer.html" />
    <updated>2008-10-02T00:00:00-07:00</updated>
    <published>2008-10-02T00:00:00-07:00</published>
    <id>http://blog.paulisageek.com/2008/10/spell-chequer</id>
    <content type="html">&lt;pre&gt;&lt;code&gt;Eye halve a spelling chequer
It came with my pea sea
It plainly marques for my revue
Miss steaks eye kin knot sea.

Eye strike a key and type a word
And weight four it two say
Weather eye am wrong oar write
It shows me strait a weigh.

As swoon as a mist ache is maid
It nose bee fore two long
And eye can put the error rite
Its rare lea ever wrong.

Eye have run this poem threw it
I am shore your pleased two no
Its letter perfect awl the weigh
My chequer tolled me sew.&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;From &lt;a href='http://www.gray-area.org/Research/Ambig/'&gt;Collection of Ambiguous or Inconsistent/Incomplete Statements&lt;/a&gt;&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>Straight out of San Mateo</title>
    <link href="http://blog.paulisageek.com/2008/08/straight-out-of-san-mateo.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2008/08/straight-out-of-san-mateo.html" />
    <updated>2008-08-15T00:00:00-07:00</updated>
    <published>2008-08-15T00:00:00-07:00</published>
    <id>http://blog.paulisageek.com/2008/08/straight-out-of-san-mateo</id>
    <content type="html">&lt;p&gt;So Michelle messaged me at 6:00 that there was a Weird Al concert tonight! I quickly finished up my work (posting the death message for &lt;a href='http://builder.search.yahoo.com'&gt;Search Builder&lt;/a&gt;) as she drove up to my work.&lt;/p&gt;

&lt;p&gt;It turned out it was at the &lt;a href='http://www.sanmateocountyfair.com/'&gt;San Mateo County Fair&lt;/a&gt;. Yeah, a fair. Like with a booth where you can pay $1 to see a 1000 lbs. pig, a vegetable competition, and all the poorly maintained fair rides you can imagine.&lt;/p&gt;

&lt;p&gt;The concert turned out to be in a huge shed, and it was packed! We got really crappy seats way in the back on the floor, but with me singing all the songs really loudly, it didn&amp;#8217;t matter :) I knew everyone except for &amp;#8221;I&amp;#8217;m in love with the Skipper&amp;#8221;. The ending &amp;#8220;Albuquerque&amp;#8221; was an awesome rendition :) &amp;#8220;Do you have any lingonberry donuts?&amp;#8221;, &amp;#8220;NO! We&amp;#8217;re out of lingonberry donuts!&amp;#8221;, Do you have any Halle Berry donuts?&amp;#8221;, &amp;#8220;NO! We&amp;#8217;re out of Halle Berry donuts!&amp;#8221;.&lt;/p&gt;

&lt;p&gt;But the best part of all, was that I got a very &amp;#8216;fitting&amp;#8217; shirt for me:&lt;/p&gt;
&lt;img src='http://farm4.static.flickr.com/3076/2766653691_c9a4ea5df4.jpg' /&gt;</content>
  </entry>
  
  <entry>
    <title>Sicko</title>
    <link href="http://blog.paulisageek.com/2008/08/sicko.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2008/08/sicko.html" />
    <updated>2008-08-04T00:00:00-07:00</updated>
    <published>2008-08-04T00:00:00-07:00</published>
    <id>http://blog.paulisageek.com/2008/08/sicko</id>
    <content type="html">&lt;p&gt;So, I&amp;#8217;ve had the flu for the past few days, and Michelle had to go out to see her Dad run an Ironman. There would be no one to make me chicken noodle soup! No one to get me Giner Ale!&lt;/p&gt;

&lt;p&gt;So what does she do to compensate:&lt;/p&gt;
&lt;img src='http://farm4.static.flickr.com/3022/2732443095_96c3fd8367.jpg?v=0' /&gt;
&lt;p&gt;She lays out everything that will make me feel good and even a tea cup with suger already in it :) Thanks Michelle! You&amp;#8217;re the best!&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>All in one feed</title>
    <link href="http://blog.paulisageek.com/2008/07/all-in-one-feed.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2008/07/all-in-one-feed.html" />
    <updated>2008-07-24T00:00:00-07:00</updated>
    <published>2008-07-24T00:00:00-07:00</published>
    <id>http://blog.paulisageek.com/2008/07/all-in-one-feed</id>
    <content type="html">&lt;p&gt;Well someone beat me to my &amp;#8216;easy feed aggregator&amp;#8217; idea. And it is quite a good implementation too.&lt;/p&gt;

&lt;p&gt;Try out: &lt;a href='http://friendfeed.com/'&gt;http://friendfeed.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And check out &lt;a href='http://friendfeed.com/ptarjan'&gt;my profile&lt;/a&gt;, and subscribe to &lt;a href='http://friendfeed.com/ptarjan?format=atom'&gt;my feed&lt;/a&gt;.&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>GTA IV too much</title>
    <link href="http://blog.paulisageek.com/2008/07/gta-iv-too-much.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2008/07/gta-iv-too-much.html" />
    <updated>2008-07-17T00:00:00-07:00</updated>
    <published>2008-07-17T00:00:00-07:00</published>
    <id>http://blog.paulisageek.com/2008/07/gta-iv-too-much</id>
    <content type="html">&lt;p&gt;So, I think I&amp;#8217;ve been playing GTA IV too much.&lt;/p&gt;

&lt;p&gt;I was driving home yesterday, and I looked in my rear view mirror and saw a nice shinny car with a rounded hood and a silver finish. I quickly thought &amp;#8220;Maybe I should swing my car sideways, get out and take that car instead. Then I can call Brucie for a race.&amp;#8221; Then that little voice in my head said &amp;#8220;Paul, you&amp;#8217;re driving your Prius, which is pretty freaking nice, and the is no number for Brucie in your phone&amp;#8230; oh, and by the way, THIS IS REAL LIFE&amp;#8221;.&lt;/p&gt;

&lt;p&gt;All of that happened in about a quarter of a second, but still kinda creepy that I thought that at first. Oh well, back to GTA IV.&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>Europe 2008</title>
    <link href="http://blog.paulisageek.com/2008/07/europe-2008.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2008/07/europe-2008.html" />
    <updated>2008-07-13T00:00:00-07:00</updated>
    <published>2008-07-13T00:00:00-07:00</published>
    <id>http://blog.paulisageek.com/2008/07/europe-2008</id>
    <content type="html">&lt;p&gt;Michelle and I just got back from our European adventure and I&amp;#8217;ve been putting off doing a full fledged blog post by doing other fun things.&lt;/p&gt;

&lt;p&gt;Here are the flickr photos from the trip: &lt;a href='http://flickr.com/photos/ptarjan/sets/72157606136696465/'&gt;My Pictures&lt;/a&gt; &amp;#38; &lt;a href='http://flickr.com/photos/ptarjan/sets/72157606142319086/'&gt;Michelle's Pictures&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And the best part, a video!&lt;/p&gt;

&lt;p&gt;Inspired by the &lt;a href='http://www.youtube.com/watch?v=at_f98qOGY0'&gt;Discovery Channel  &quot;I Love The World&quot;&lt;/a&gt; (Watch this first if you haven&amp;#8217;t seen it).&lt;/p&gt;

&lt;p&gt;&lt;a href='http://www.youtube.com/watch?v=7Gb_KlpFgCk'&gt;I Love The EU - Inspired by Discovery Channel &amp;#8220;I Love The World&amp;#8221;&lt;/a&gt;&lt;/p&gt;
&lt;object height='344' width='425'&gt;&lt;param name='movie' value='http://www.youtube.com/v/7Gb_KlpFgCk&amp;hl=en&amp;fs=1&amp;ap=%2526fmt%3D18' /&gt;&lt;param name='allowFullScreen' value='true' /&gt;&lt;embed src='http://www.youtube.com/v/7Gb_KlpFgCk&amp;hl=en&amp;fs=1&amp;ap=%2526fmt%3D18' allowfullscreen='true' type='application/x-shockwave-flash' height='344' width='425' /&gt;&lt;/object&gt;
&lt;p&gt;Or Yahoo! video:&lt;/p&gt;
&lt;object height='323' width='512'&gt;&lt;param name='movie' value='http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.7.1' /&gt;&lt;param name='allowFullScreen' value='true' /&gt;&lt;param name='bgcolor' value='#000000' /&gt;&lt;param name='flashVars' value='id=8795811&amp;vid=3089442&amp;lang=en-us&amp;intl=us&amp;thumbUrl=http%3A//us.i1.yimg.com/us.yimg.com/p/i/bcst/videosearch/4094/68175732.jpeg&amp;embed=1' /&gt;&lt;embed src='http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.7.1' allowFullScreen='true' type='application/x-shockwave-flash' height='323' flashVars='id=8795811&amp;vid=3089442&amp;lang=en-us&amp;intl=us&amp;thumbUrl=http%3A//us.i1.yimg.com/us.yimg.com/p/i/bcst/videosearch/4094/68175732.jpeg&amp;embed=1' width='512' bgcolor='#000000' /&gt;&lt;/object&gt;</content>
  </entry>
  
  <entry>
    <title>The Birth of a Blog</title>
    <link href="http://blog.paulisageek.com/2008/07/the-birth-of-a-blog.html" />
    <link rel="alternate" type="text/html" href="http://blog.paulisageek.com/2008/07/the-birth-of-a-blog.html" />
    <updated>2008-07-12T00:00:00-07:00</updated>
    <published>2008-07-12T00:00:00-07:00</published>
    <id>http://blog.paulisageek.com/2008/07/the-birth-of-a-blog</id>
    <content type="html">&lt;p&gt;Every blog needs a beginning, so here we go.&lt;/p&gt;

&lt;p&gt;I started a blog that I hosted when I first moved down to California to go to Stanford, and all my friends back home loved it. As usual, I got busy and stopped caring about it, and it slowly died a sad death.&lt;/p&gt;

&lt;p&gt;Then I moved out of Stanford and into a place in Santa Clara which forced me to get internet from Comcast&amp;#8230; Yeah&amp;#8230; So I didn&amp;#8217;t have the upstream bandwidth to host my own site anymore, but luckily I got a free hosting account from Yahoo (since I work there) and moved all my content there. Except for the sad old blog which perished. I&amp;#8217;m sure it is somewhere on my home linux box, and one day I might resurrect it for fun, but for now it can languish in our memories.&lt;/p&gt;

&lt;p&gt;So, everytime I visit someone else&amp;#8217;s website I cringe at the antiquated abomination that mine has become, so here is my new begining! May it be better than the last.&lt;/p&gt;</content>
  </entry>
  
</feed>
