<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-5964520279678788379</id><updated>2009-12-09T16:34:03.701-06:00</updated><title type='text'>an internet luddite</title><subtitle type='html'>the opinions of the world's only web programming internet luddite</subtitle><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5964520279678788379/posts/default'/><link rel='alternate' type='text/html' href='http://blog.tannerburson.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.tannerburson.com/atom.xml'/><author><name>Tanner Burson</name><uri>http://www.blogger.com/profile/12061355692997930959</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5964520279678788379.post-6469950233327909110</id><published>2009-06-26T19:39:00.004-05:00</published><updated>2009-06-26T20:08:43.365-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASE'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Android scripting for fun and profit</title><summary type='text'>Okay the last part isn't exactly likely given that you can't directly package a script application as an APK. I doubt you'll be making much "profit" from it anytime soon.  Regardless, ASE support is a great boon to hackers, and allows for a whole new level of customization of your phone.I decided to organize and prune my book collection the other day, and remembered reading a brief tutorial on </summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5964520279678788379/6469950233327909110/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5964520279678788379&amp;postID=6469950233327909110' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5964520279678788379/posts/default/6469950233327909110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5964520279678788379/posts/default/6469950233327909110'/><link rel='alternate' type='text/html' href='http://blog.tannerburson.com/2009/06/android-scripting-for-fun-and-profit.html' title='Android scripting for fun and profit'/><author><name>Tanner Burson</name><uri>http://www.blogger.com/profile/12061355692997930959</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10212842767382010797'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5964520279678788379.post-1069122393676406304</id><published>2009-05-18T15:37:00.003-05:00</published><updated>2009-05-18T15:48:10.900-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rack'/><category scheme='http://www.blogger.com/atom/ns#' term='sinatra'/><category scheme='http://www.blogger.com/atom/ns#' term='tests'/><title type='text'>Migrating from Sinatra::Test to Rack::Test</title><summary type='text'>After seeing the release of Sinatra 0.9.2 mention (again) that Sinatra::Test would vanish by 1.0, I decided to get with it and move to Rack::Test.  It was really pretty painless and my tests were forced to become a bit more explicit (still not convinced I really LIKE this).  Since I found a few bits of fun along the way I thought I'd share.I use Test::Spec so some of this may not apply, or may </summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5964520279678788379/1069122393676406304/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5964520279678788379&amp;postID=1069122393676406304' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5964520279678788379/posts/default/1069122393676406304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5964520279678788379/posts/default/1069122393676406304'/><link rel='alternate' type='text/html' href='http://blog.tannerburson.com/2009/05/migrating-from-sinatratest-to-racktest.html' title='Migrating from Sinatra::Test to Rack::Test'/><author><name>Tanner Burson</name><uri>http://www.blogger.com/profile/12061355692997930959</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10212842767382010797'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5964520279678788379.post-872651727339272987</id><published>2009-05-13T15:24:00.003-05:00</published><updated>2009-05-13T15:31:35.240-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='but why? sinatra is cool'/><title type='text'>Pushing an entire Sinatra app into a Rackup file</title><summary type='text'>The title pretty much says it all.  This is a pretty pointless thought experiment inspired by this post by the guys at devver.  They came up with a simple way to put both a sinatra application AND it's tests into a single file.  Nothing TOO crazy, but definitely cool.Not satisfied with simple and effective, I went to complete overkill.  I put together a way to not only embed a sinatra app and </summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5964520279678788379/872651727339272987/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5964520279678788379&amp;postID=872651727339272987' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5964520279678788379/posts/default/872651727339272987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5964520279678788379/posts/default/872651727339272987'/><link rel='alternate' type='text/html' href='http://blog.tannerburson.com/2009/05/pushing-entire-sinatra-app-into-rackup.html' title='Pushing an entire Sinatra app into a Rackup file'/><author><name>Tanner Burson</name><uri>http://www.blogger.com/profile/12061355692997930959</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10212842767382010797'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5964520279678788379.post-2109625874534379747</id><published>2009-01-31T22:26:00.004-06:00</published><updated>2009-01-31T23:05:30.896-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='sinatra'/><title type='text'>Extracting subdomains in Sinatra</title><summary type='text'>As part of my continuing education in Sinatra, I decided to learn how Sinatra handles subdomains.  It turns out that neither Rack, nor Sinatra seem to have any native subdomain handling code.  So I took a quick stab at it.  The easiest method I could come up with was simply to re-open the Rack::Request class and add a subdomain method.  The method implementation is adapted from Rails, except with</summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5964520279678788379/2109625874534379747/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5964520279678788379&amp;postID=2109625874534379747' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5964520279678788379/posts/default/2109625874534379747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5964520279678788379/posts/default/2109625874534379747'/><link rel='alternate' type='text/html' href='http://blog.tannerburson.com/2009/01/extracting-subdomains-in-sinatra.html' title='Extracting subdomains in Sinatra'/><author><name>Tanner Burson</name><uri>http://www.blogger.com/profile/12061355692997930959</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10212842767382010797'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5964520279678788379.post-3941969241520270126</id><published>2009-01-20T16:00:00.001-06:00</published><updated>2009-01-31T22:52:42.835-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='sinatra'/><title type='text'>Multiple Sinatra .90 applications in one process</title><summary type='text'>I recently started work on a new application based on the current Sinatra edge code.  I'm not new to Ruby, but I'm definitely new to Sinatra. So I thought I'd start a small series of posts based on the things I find either interesting, or difficult.  Today's post probably falls into both categories.One of the things that drew me to Sinatra was the absolute simplicity in it's approach to web apps.</summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5964520279678788379/3941969241520270126/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5964520279678788379&amp;postID=3941969241520270126' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5964520279678788379/posts/default/3941969241520270126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5964520279678788379/posts/default/3941969241520270126'/><link rel='alternate' type='text/html' href='http://blog.tannerburson.com/2009/01/multiple-sinatra-90-applications-in-one.html' title='Multiple Sinatra .90 applications in one process'/><author><name>Tanner Burson</name><uri>http://www.blogger.com/profile/12061355692997930959</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10212842767382010797'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5964520279678788379.post-4848256825116417804</id><published>2008-11-24T14:11:00.012-06:00</published><updated>2008-11-24T14:57:56.481-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='a sudden outbreak of common sense'/><title type='text'>on wearing mental blinders</title><summary type='text'>Today I read something very annoying.  I'd read of this "problem" before, but for some reason it's rampant stupidity never really struck a chord with me.  I read a blog post/article/something involving a group of people trying to design a system to handle the transfer of your digital data in the event that you unexpectedly get hit by that bus everyone always talks about.My first thought was that </summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5964520279678788379/4848256825116417804/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5964520279678788379&amp;postID=4848256825116417804' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5964520279678788379/posts/default/4848256825116417804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5964520279678788379/posts/default/4848256825116417804'/><link rel='alternate' type='text/html' href='http://blog.tannerburson.com/2008/11/on-wearing-mental-blinders.html' title='on wearing mental blinders'/><author><name>Tanner Burson</name><uri>http://www.blogger.com/profile/12061355692997930959</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10212842767382010797'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5964520279678788379.post-5152853950788285698</id><published>2008-10-16T16:45:00.000-05:00</published><updated>2008-10-16T16:48:21.118-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='user hostile'/><category scheme='http://www.blogger.com/atom/ns#' term='soap box'/><category scheme='http://www.blogger.com/atom/ns#' term='data formats'/><category scheme='http://www.blogger.com/atom/ns#' term='data rules'/><title type='text'>it's all about the data, stupid.</title><summary type='text'>On an average day I'll touch three different operating systems, and a pile of applications on each one, and I've come to an important realization for me as a programmer: operating systems, and most applications, suck.  Tying your business to any one of them undermines your business from the start (but is often a necessary evil).  Most applications don't respect your data, and actively work to </summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5964520279678788379/5152853950788285698/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5964520279678788379&amp;postID=5152853950788285698' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5964520279678788379/posts/default/5152853950788285698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5964520279678788379/posts/default/5152853950788285698'/><link rel='alternate' type='text/html' href='http://blog.tannerburson.com/2008/10/its-all-about-data-stupid.html' title='it&apos;s all about the data, stupid.'/><author><name>Tanner Burson</name><uri>http://www.blogger.com/profile/12061355692997930959</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10212842767382010797'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5964520279678788379.post-1795917974090012266</id><published>2008-10-12T21:03:00.012-05:00</published><updated>2008-10-13T10:51:29.632-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shameless self-promotion'/><category scheme='http://www.blogger.com/atom/ns#' term='change of heart'/><category scheme='http://www.blogger.com/atom/ns#' term='fail'/><title type='text'>on shameless self-promotion in a time of social networks</title><summary type='text'>I can't go a single day without hearing (or overhearing) a conversation from a friend or acquaintance discussing one social network or another.  I usually roll my eyes, or ignore these conversations.  As an internet luddite, I try to avoid these time sucking privacy invasive services.  But today I did something, something so contrary to my years of preaching that I felt it necessary to explain my</summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5964520279678788379/1795917974090012266/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5964520279678788379&amp;postID=1795917974090012266' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5964520279678788379/posts/default/1795917974090012266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5964520279678788379/posts/default/1795917974090012266'/><link rel='alternate' type='text/html' href='http://blog.tannerburson.com/2008/10/on-shameless-self-promotion-in-time-of.html' title='on shameless self-promotion in a time of social networks'/><author><name>Tanner Burson</name><uri>http://www.blogger.com/profile/12061355692997930959</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10212842767382010797'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5964520279678788379.post-6094260750549752103</id><published>2008-09-15T16:13:00.000-05:00</published><updated>2008-09-15T16:16:32.735-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='productivity'/><category scheme='http://www.blogger.com/atom/ns#' term='i&apos;m an addict'/><title type='text'>on blinking lights and wasting time</title><summary type='text'>or how I learned to quit being interrupted and regain my productivityHello, my name is Tanner, and I'm addicted to blinking lights.  The addiction costs me hours of my life every week, and it's time to quit.  From the minute I wake up to my screeching blinking alarm clock, until I turn off the TV, put down the phone, and go to sleep I'm blasted by little blinking lights. In every part of our life</summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5964520279678788379/6094260750549752103/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5964520279678788379&amp;postID=6094260750549752103' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5964520279678788379/posts/default/6094260750549752103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5964520279678788379/posts/default/6094260750549752103'/><link rel='alternate' type='text/html' href='http://blog.tannerburson.com/2008/08/on-blinking-lights-and-wasting-time.html' title='on blinking lights and wasting time'/><author><name>Tanner Burson</name><uri>http://www.blogger.com/profile/12061355692997930959</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10212842767382010797'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5964520279678788379.post-1005503632538608449</id><published>2008-07-27T22:16:00.000-05:00</published><updated>2008-07-28T11:10:28.698-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='don&apos;t make me think'/><category scheme='http://www.blogger.com/atom/ns#' term='laziness'/><title type='text'>on fire and forget online services</title><summary type='text'>I'd intended this post to be a yet another glorious rant against twitter, but as I was gathering my thoughts on how I wanted to put it together I realized the issues I had with twitter are found in plenty of non-twitter sites.  The problem really starts with my uncontrollable laziness.  If a site requires me to continually visit it, just to stay on top of the goings on of the service, then I'll </summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5964520279678788379/1005503632538608449/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5964520279678788379&amp;postID=1005503632538608449' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5964520279678788379/posts/default/1005503632538608449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5964520279678788379/posts/default/1005503632538608449'/><link rel='alternate' type='text/html' href='http://blog.tannerburson.com/2008/07/on-fire-and-forget-online-services.html' title='on fire and forget online services'/><author><name>Tanner Burson</name><uri>http://www.blogger.com/profile/12061355692997930959</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10212842767382010797'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5964520279678788379.post-4084129059483284435</id><published>2008-07-17T11:07:00.005-05:00</published><updated>2008-07-17T11:35:08.835-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fail'/><title type='text'>on subtle failure</title><summary type='text'>While reading through the top links on proggit, I ran into a project I'd seen a long while ago and promised myself I'd keep track of.  I didn't.  But this story isn't about me and my need for a simple bookmarking/reminder service, and the ways in which such a thing could change how I keep track of interesting things on the web.  That story will come later.  No this story is about  the clutter </summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5964520279678788379/4084129059483284435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5964520279678788379&amp;postID=4084129059483284435' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5964520279678788379/posts/default/4084129059483284435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5964520279678788379/posts/default/4084129059483284435'/><link rel='alternate' type='text/html' href='http://blog.tannerburson.com/2008/07/on-subtle-failure.html' title='on subtle failure'/><author><name>Tanner Burson</name><uri>http://www.blogger.com/profile/12061355692997930959</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10212842767382010797'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5964520279678788379.post-4726709879335228918</id><published>2008-07-07T20:20:00.009-05:00</published><updated>2008-07-08T11:04:41.080-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='myself and i'/><category scheme='http://www.blogger.com/atom/ns#' term='me'/><title type='text'>on being an internet luddite</title><summary type='text'>Welcome to the blog of the world's only web programming Internet Luddite (as far as I know). Why would any sane individual who makes a living working on and with the Internet describe themselves as a Luddite? It's simple. Despite (or possibly because of) being one of the most technically capable people in my social circle, I'm often the last to adopt the newest online service and in some cases </summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5964520279678788379/4726709879335228918/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5964520279678788379&amp;postID=4726709879335228918' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5964520279678788379/posts/default/4726709879335228918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5964520279678788379/posts/default/4726709879335228918'/><link rel='alternate' type='text/html' href='http://blog.tannerburson.com/2008/07/on-being-internet-luddite.html' title='on being an internet luddite'/><author><name>Tanner Burson</name><uri>http://www.blogger.com/profile/12061355692997930959</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10212842767382010797'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>