<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" gd:etag="W/&quot;C04NQH08eCp7ImA9WxBQF08.&quot;"><id>tag:blogger.com,1999:blog-1578623853015741151</id><updated>2010-01-17T03:53:11.370-06:00</updated><title>Inkitecture</title><subtitle type="html">Updates and news from the folks at Inkitecture</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://blog.inkitecture.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://blog.inkitecture.com/" /><author><name>Jay Zeschin</name><uri>http://www.blogger.com/profile/01175703045328177893</uri><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>9</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/InkitectureBlog" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="inkitectureblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;CUUHQXk7eip7ImA9WxVbFEo.&quot;"><id>tag:blogger.com,1999:blog-1578623853015741151.post-1122307265892446867</id><published>2009-03-30T22:40:00.005-05:00</published><updated>2009-03-30T23:20:30.702-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-30T23:20:30.702-05:00</app:edited><title>Giving Vim a Go</title><content type="html">So I'm in the process of trying out Vim as a Rails IDE.  I've been using Textmate (and the e text editor on Windows before it) for some time now, and while there are a lot of things I really like about both editors lately I've been running into some things that are really bugging me.  The biggest has been slowness on large projects - Textmate in particular really seems to bog down when you have a lot of files in your project.  I'm trying a few different things to help it out (&lt;a href="http://rants.ekanem.de/2008/01/09/slow-projects-loading-in-textmate/"&gt;this&lt;/a&gt; for instance) but those come with their own drawbacks.  Nothing I've found yet solves the issue of inadvertently opening a giant log file and having Textmate bring my whole system to a grinding halt.  I used Vim in college doing some systems programming, so when I decided to try out another programming editor Vim was the first one that came to mind.  It's certainly not as pretty as Textmate, but it's about as efficient as you can get once you learn the shortcuts - usability isn't always about looking pretty.  I've also used Emacs and Netbeans before and while they're both nice, Emacs is a bit more involved than I'm willing to attack right now, and Netbeans suffers from many of the same slowness problems I'm trying to get away from in Textmate.  That goes double (or triple) for Rubymine.  &lt;br /&gt;&lt;br /&gt;Since I'm on a Mac, I decided to try out MacVim, which seems to have generally positive reviews.  It's free and easy to install, and the Rails.vim plugin has been getting a lot of press lately.  I took the plunge and installed the whole shebang - &lt;a href="http://code.google.com/p/macvim/"&gt;MacVim&lt;/a&gt;, &lt;a href="http://rails.vim.tpope.net/"&gt;Rails.vim&lt;/a&gt;, &lt;a href="http://www.vim.org/scripts/script.php?script_id=69"&gt;Project.vim&lt;/a&gt;, and the &lt;a href="http://www.vim.org/scripts/script.php?script_id=1891"&gt;Vividchalk color scheme&lt;/a&gt;.  I liked what I saw a lot at first.  MacVim is easy to integrate with both the command line (the mvim command a la Textmate's mate command) and Quicksilver, Rails.vim has a lot of nice shortcuts, Project.vim has a more than adequate project view, and Vividchalk is easy on the eyes.  About the only things I'm missing are the Ruby/Rails docs from Priit Haamer's &lt;a href="http://priithaamer.com/blog/ruby-on-rails-dictionary-for-macosx"&gt;Rails Dictionary&lt;/a&gt;, the Cmd-T file finder (which had gotten unbearably slow in Textmate anyway) and the Cmd-R functionality to run a single unit test.  I'm sure all of these exist in the Vim world, but I haven't quite gotten to setting them up yet.  One of my co-workers pointed me to Spicycode's &lt;a href="http://spicycode.com/2008/11/07/bringing-vim-to-the-people.html"&gt;Bringing Vim to the People&lt;/a&gt;, which is a handy bundle of Vim plugins and configuration for Rails developers.  So that's where I'm at now - fighting with BVTTP's config.  I like that it includes a lot of the configuration for common Rails-Vim functionality (including FuzzyFinder for replacing Command-T) but there are definitely some wrinkles.  For one, I can't get :Rproject to open the current directory as a Rails project anymore, and can't for the life of me figure out why this command has just gone away.  Installing ctags support for drilling into code and docs has also been a bit of a challenge.  The bundle requires the exuberant variant of ctags (not the vanilla ctags included in OS X), and while that's readily available in MacPorts, it's also necessary to set the ctags binary path in your vimrc explicitly with a &lt;pre&gt;let Tlist_Ctags_Cmd = '/opt/local/bin/ctags'&lt;/pre&gt; lest you get strange and vague ctags usage errors like &lt;pre&gt;Taglist: Failed to generate tags&lt;/pre&gt;&lt;br /&gt;The long and short of it is that the jury's still out for me on vim.  Despite its wrinkles, Textmate is still a nice editor, and it's likely to remain my primary editor for when I'm pair programming due to Vim's &lt;a href="http://www.bemroses.net/images/curves.jpg"&gt;notoriously steep learning curve&lt;/a&gt;.  I'm going to keep at it and see what happens.  At worst, it'll give me a better appreciation for the qualities of different programming editors.  With a little luck, I'll be able to get a setup that addresses a few of my Textmate gripes without introducing too many new ones of its own.&lt;br /&gt;&lt;br /&gt;Have some editor feedback of your own, good or bad?  Hit us back in the comments.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1578623853015741151-1122307265892446867?l=blog.inkitecture.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.inkitecture.com/feeds/1122307265892446867/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1578623853015741151&amp;postID=1122307265892446867" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1578623853015741151/posts/default/1122307265892446867?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1578623853015741151/posts/default/1122307265892446867?v=2" /><link rel="alternate" type="text/html" href="http://blog.inkitecture.com/2009/03/macvim-ctags-and-bringing-vim-to-people.html" title="Giving Vim a Go" /><author><name>Jay Zeschin</name><uri>http://www.blogger.com/profile/01175703045328177893</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="09731562369923108232" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;DE8BRX8zfSp7ImA9WxVUGUg.&quot;"><id>tag:blogger.com,1999:blog-1578623853015741151.post-6233636299413543026</id><published>2009-03-24T23:38:00.003-05:00</published><updated>2009-03-24T23:54:14.185-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-24T23:54:14.185-05:00</app:edited><title>State of the blog</title><content type="html">To start out restating the obvious, this blog has been pretty dead for the last 6 months or so.  There are a variety of reasons why that's happened, but in all honesty most of them are too long or boring to explain here - suffice it to say that there have been a lot of posts started, but none have been finished.  This is not due to a lack of good material to write about.  Rather, the cycle seems to be that an interesting but overly broad post idea turns into a half-written outline, which then becomes a half-written post, which then sits in the queue for months on end waiting to be finished because the effort required to fully expound on the original topic is way more than anticipated.  While topic selection is important, topic focus is even more important.  There's a delicate balance that needs to be struck to end up with a topic that's both interesting to read and feasible to write about in a meaningful way.  What this means is that we're going to try to post more short and specific posts.  The general topics of technology, usability, design, and Inkitecture news will stay the same, but hopefully the posts will become both easier to write (for us) and easier to digest (for you).&lt;br /&gt;&lt;br /&gt;Oh, and we've also been working on some new sites.  Stay tuned, we'll post more about those shortly.  And this time I mean it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1578623853015741151-6233636299413543026?l=blog.inkitecture.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.inkitecture.com/feeds/6233636299413543026/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1578623853015741151&amp;postID=6233636299413543026" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1578623853015741151/posts/default/6233636299413543026?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1578623853015741151/posts/default/6233636299413543026?v=2" /><link rel="alternate" type="text/html" href="http://blog.inkitecture.com/2009/03/state-of-blog.html" title="State of the blog" /><author><name>Jay Zeschin</name><uri>http://www.blogger.com/profile/01175703045328177893</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="09731562369923108232" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;C08NQ3w_eSp7ImA9WxdaFUk.&quot;"><id>tag:blogger.com,1999:blog-1578623853015741151.post-4189492310856028288</id><published>2008-08-23T20:35:00.002-05:00</published><updated>2008-08-23T20:38:12.241-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-23T20:38:12.241-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="craigsmonitor" /><category scheme="http://www.blogger.com/atom/ns#" term="accolades" /><title>Craigsmonitor.com Apple Iphone Staff Pick</title><content type="html">Check It:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://drewidia.com/assets/2008/8/24/craigsmonitor_apple_boastin.png"&gt;&lt;img style="cursor: pointer; width: 320px;" src="http://drewidia.com/assets/2008/8/24/craigsmonitor_apple_boastin.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;We submitted &lt;a href="http://www.craigsmonitor.com/"&gt;Craigsmonitor&lt;/a&gt; under the advice of &lt;a href="http://twitter.com/adjwilli"&gt;Adam Williams&lt;/a&gt; after his site, &lt;a href="http://www.onlineitalianhelp.com/"&gt;Online Italian Help&lt;/a&gt; and his other language sites blew up with traffic after posting it to the Apple iPhone Webapps site. We did the same, and guess what? Staff pick.&lt;/p&gt;    &lt;p&gt;Bangin’. We couldn’t be happier.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1578623853015741151-4189492310856028288?l=blog.inkitecture.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.inkitecture.com/feeds/4189492310856028288/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1578623853015741151&amp;postID=4189492310856028288" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1578623853015741151/posts/default/4189492310856028288?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1578623853015741151/posts/default/4189492310856028288?v=2" /><link rel="alternate" type="text/html" href="http://blog.inkitecture.com/2008/08/craigsmonitorcom-apple-iphone-staff.html" title="Craigsmonitor.com Apple Iphone Staff Pick" /><author><name>Drew McKinney</name><uri>http://www.blogger.com/profile/11118885276226983523</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02284483397099265115" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;C0QHQX49cCp7ImA9WxdaEEk.&quot;"><id>tag:blogger.com,1999:blog-1578623853015741151.post-2451115932965411546</id><published>2008-08-18T01:23:00.004-05:00</published><updated>2008-08-18T01:35:30.068-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-18T01:35:30.068-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="rails" /><category scheme="http://www.blogger.com/atom/ns#" term="email" /><category scheme="http://www.blogger.com/atom/ns#" term="railscasts" /><category scheme="http://www.blogger.com/atom/ns#" term="ux" /><title>Railscasts, User Mistakes, and Embarassing E-mails</title><content type="html">While I was sitting on the airplane tonight I watched a &lt;a href="http://railscasts.com/episodes/121-non-active-record-model"&gt;Railscast episode about adding session-based edit capabilities to a comment form&lt;/a&gt;.  Put simply, it's a way to let users edit their comments for a brief period of time after they've posted them without requiring all the overhead of signing up, creating an account, etc.  At the very end of the episode, Ryan Bates mentions looking at systems that you may have in your own web apps and evaluating how well you let users deal with and correct their own mistakes (I'm paraphrasing here, but you get the idea).&lt;br /&gt;&lt;br /&gt;This really resonated with me - good user experience is something of a passion around here, so it's nice to see some love for UX, especially from the technical side of things.  I started thinking of other places this sort of scenario comes up and the case that immediately came to mind was e-mail.  I think most folks have had that moment of panic and the resulting dread after sending an email they didn't quite mean to.  Maybe it was addressed to the wrong person (as in the classic reply vs. reply-all mistake), maybe you said something you didn't mean, maybe you forget to edit the subject (or didn't include a subject), or maybe you made an embarrassing typo that you didn't notice until after you hit send.  Whatever the reason, wouldn't it be nice if you had a ten second buffer between when you hit send and when the message actually left the confines of your own computer, giving you a short window in which to cancel and correct your mistake?  For me anyway, whenever this has happened, the realization of the mistake has been immediate, so the buffer need not be very long.  From a user experience perspective, it needn't (and probably shouldn't, for that matter) be intrusive or attention-grabbing either.  Just a simple pop-under or status bar type message with a countdown until the message is released from the queue and sent on its merry way would be perfect for me.&lt;br /&gt;&lt;br /&gt;What do you folks think?  Is this potentially useful, or just another annoying affordance for people like me who tend not to read their messages as thoroughly as they should before they hit send?  Are there mail clients out there that do this already?  Please, if you're willing, sound off in the comments.  I'd be very interested to hear other perspectives on the same topic.&lt;br /&gt;&lt;br /&gt;Last but not least, mad props to Ryan Bates of &lt;a href="http://www.railscasts.com/"&gt;Railscasts&lt;/a&gt; - the screencasts he does are second to none.  They've been a great influence over the course of my maturation as a Rails developer.  Plus, they're free and there's a new one every week!  What more could you ask for?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1578623853015741151-2451115932965411546?l=blog.inkitecture.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.inkitecture.com/feeds/2451115932965411546/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1578623853015741151&amp;postID=2451115932965411546" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1578623853015741151/posts/default/2451115932965411546?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1578623853015741151/posts/default/2451115932965411546?v=2" /><link rel="alternate" type="text/html" href="http://blog.inkitecture.com/2008/08/railscasts-user-mistakes-and.html" title="Railscasts, User Mistakes, and Embarassing E-mails" /><author><name>Jay Zeschin</name><uri>http://www.blogger.com/profile/01175703045328177893</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="09731562369923108232" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;Ak8MSXk-eyp7ImA9WxdbE0Q.&quot;"><id>tag:blogger.com,1999:blog-1578623853015741151.post-5653485003326567578</id><published>2008-08-10T14:42:00.003-05:00</published><updated>2008-08-10T15:08:08.753-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-10T15:08:08.753-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="twitter" /><title>Now twittering</title><content type="html">Just a quick heads-up - Inkitecture is now on Twitter (&lt;a href="http://www.twitter.com/inkitecture"&gt;@inkitecture&lt;/a&gt;).  It's long overdue, especially considering how much time we spend working with Twitter on a regular basis.  Visit &lt;a href="http://www.twitter.com/inkitecture"&gt;http://www.twitter.com/inkitecture&lt;/a&gt; to take a look or to follow us.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1578623853015741151-5653485003326567578?l=blog.inkitecture.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.inkitecture.com/feeds/5653485003326567578/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1578623853015741151&amp;postID=5653485003326567578" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1578623853015741151/posts/default/5653485003326567578?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1578623853015741151/posts/default/5653485003326567578?v=2" /><link rel="alternate" type="text/html" href="http://blog.inkitecture.com/2008/08/now-twittering.html" title="Now twittering" /><author><name>Jay Zeschin</name><uri>http://www.blogger.com/profile/01175703045328177893</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="09731562369923108232" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;DUUER3o-fip7ImA9WxdbEEU.&quot;"><id>tag:blogger.com,1999:blog-1578623853015741151.post-3083928730956814871</id><published>2008-08-07T00:28:00.003-05:00</published><updated>2008-08-07T00:33:26.456-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-07T00:33:26.456-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="craigsmonitor" /><title>Craigsmonitor</title><content type="html">As a soon-to-be grad student, I will additionally soon-to-be broke. This means that I will be using sites like &lt;a href="http://www.craigslist.org/"&gt;Craigslist&lt;/a&gt;  a lot more. That being said, I have a problem with Craigslist.&lt;br /&gt;&lt;p&gt;My problem with Craigslist &lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;is that if you’re looking for something specific, for example “2002 Ford Escape” and you want to be competitive on the buy, you have to return to Craigslist several times each day, every day, to keep up to date. And if you're looking for something in a rural area, like Bloomington, IN, you need to return day after day to see if there were any updates. Bummer!&lt;br /&gt;&lt;/p&gt;    &lt;p&gt;This is where &lt;a href="http://www.craigsmonitor.com/"&gt;Craigsmonitor&lt;/a&gt; comes in. Aptly named, Craigsmonitor monitors Craigslist for any updates to a product you desire. If there are any updates, it will email you a list of fresh posts on an hourly, daily, twice daily or thrice daily basis.&lt;/p&gt;    &lt;p&gt;Also, no passwords or registration – you make a list and get an email. That’s it.&lt;/p&gt;Please let us know what you think about Craigsmonitor.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1578623853015741151-3083928730956814871?l=blog.inkitecture.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.inkitecture.com/feeds/3083928730956814871/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1578623853015741151&amp;postID=3083928730956814871" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1578623853015741151/posts/default/3083928730956814871?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1578623853015741151/posts/default/3083928730956814871?v=2" /><link rel="alternate" type="text/html" href="http://blog.inkitecture.com/2008/08/craigsmonitor.html" title="Craigsmonitor" /><author><name>Drew McKinney</name><uri>http://www.blogger.com/profile/11118885276226983523</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02284483397099265115" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;A0IBQnc7fSp7ImA9WxdXEEo.&quot;"><id>tag:blogger.com,1999:blog-1578623853015741151.post-5428513290673046924</id><published>2008-06-21T14:09:00.003-05:00</published><updated>2008-06-21T15:19:13.905-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-06-21T15:19:13.905-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="bagvsbin" /><category scheme="http://www.blogger.com/atom/ns#" term="news" /><title>Introducing Bag vs. Bin</title><content type="html">We have a fun announcement today - we're releasing our second app into the wild.  It's called &lt;a href="http://www.bagvsbin.com/"&gt;Bag vs. Bin&lt;/a&gt;, and you can check it out at &lt;a href="http://www.bagvsbin.com/"&gt;http://www.bagvsbin.com/&lt;/a&gt;.  &lt;br /&gt;&lt;br /&gt;I know what you're thinking (or at least I think I know what you're thinking.  I know what I'd be thinking if I were you) - what exactly is it?  That's probably best answered with a story.  All 3 of us Inkitecturers (Inkitecturites?  Inkitecturians?  Inkitects?  There we go, that's the one) have day jobs that require us to travel at least 4 days a week, every week, as long as we're not on one of those vacation things everyone keeps talking about.  We typically travel by plane, and to save time and hassle we only use carry-on bags whenever possible.  The way service standards are plummeting in the airline industry today, the fewer opportunities you give the airlines to touch your stuff and &lt;a href="http://www.jaunted.com/story/2007/7/24/122932/978/travel/US+Air+Eats+Luggage+For+Breakfast"&gt;mangle&lt;/a&gt;/&lt;a href="http://www.unclaimedbaggage.com/"&gt;lose&lt;/a&gt;/&lt;a href="http://www.tsa.gov/blog/2008/02/tsa-our-officers-public-and-theft.html"&gt;steal &lt;/a&gt;it the better off you'll be.  The problem is that even if you're trying to be a considerate flyer and get reasonably-sized bag that fits easily in the bin and doesn't monopolize the entire freaking space, it turns out that it's not that easy a task.  Every airline, aircraft, and luggage manufacturer seems to have their own standard for what fits in a bin, and of course they're all slightly different.  The &lt;a href="http://www.aa.com/aa/i18nForward.do?p=/travelInformation/baggage/carryOnAllowance.jsp"&gt;linear inches measurement&lt;/a&gt; seems to be a common one, and it's not a bad idea, but it doesn't account for the different shapes and sizes of bags, nor the often-weirdly-sized doors on the bins themselves that can make it impossible to actually get your bag *inside the bin*.  Plus, have you ever tried to measure the dimensions of your bag?  Most bags have curved surfaces, rounded corners, weird bulges, etc. that make it hard to figure out the true linear measurements.  The primary alternative, the "&lt;a href="http://query.nytimes.com/gst/fullpage.html?res=9500EEDA143BF931A35751C1A96E958260"&gt;big metal box&lt;/a&gt;" (I guess they're actually called "sizers", but I like my term better) is more foolproof, but it doesn't do you any good when you're trying to plan a trip, buy a bag, or pack.  You can check before you get on the plane, and that's great, but it's a classic instance of "too little too late".&lt;br /&gt;&lt;br /&gt;So in frustration with this whole mess, we decided there had to be a better way.  What if you could look up ahead of time whether your bag would fit on a given airline/aircraft?  It would save a lot of hassle, both time and money.  No more struggling to fit your bag overhead because you didn't know ahead of time, or buying a bag that looks great but turns out not to fit in 95% of overhead bins.  Personally, I'm a big fan of &lt;a href="http://www.seatguru.com/"&gt;SeatGuru &lt;/a&gt;for getting the inside scoop on the best seats, especially for long flights when the difference between a good seat and a mediocre one is multiplied many times.  That site provided a lot of inspiration for &lt;a href="http://www.bagvsbin.com/"&gt;Bag vs. Bin&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I guess that was a pretty long intro, so let's get down to brass tacks.  &lt;a href="http://www.bagvsbin.com/"&gt;Bag vs. Bin&lt;/a&gt; is like &lt;a href="http://www.seatguru.com/"&gt;SeatGuru&lt;/a&gt; but for your baggage instead of your butt.  You can either write or search for reports of passenger experiences carrying bags onboard different airlines and aircraft.  Search by bag/manufacturer, airline, or aircraft, and you'll see a list of reports with handy little red/yellow/green icons indicating whether the bin battle was successful or not.  You can drill down further and see comments on the experience, maybe even handy tips or notes, depending on what the writer has chosen to share.  At the same time, you can share your own experiences and make them available to other travelers who are in the same boat.  It's a community driven site, but we're hoping to turn it into *the* place to go for this sort of information.  We're starting out trying to scratch our own itch here, but the hope is that others will find it useful as well.&lt;br /&gt;&lt;br /&gt;So please, check it out - &lt;a href="http://www.bagvsbin.com/"&gt;http://www.bagvsbin.com/&lt;/a&gt;.  We'd love to hear what you think.  Feedback, questions, comments, concerns, whatever.  Feel free to comment here, use the feedback link in the header at &lt;a href="http://www.bagvsbin.com/"&gt;Bag vs. Bin&lt;/a&gt;, or shoot us an e-mail at &lt;a href="mailto:info@inkitecture.com"&gt;info@inkitecture.com&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Thanks and happy flying!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1578623853015741151-5428513290673046924?l=blog.inkitecture.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.inkitecture.com/feeds/5428513290673046924/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1578623853015741151&amp;postID=5428513290673046924" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1578623853015741151/posts/default/5428513290673046924?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1578623853015741151/posts/default/5428513290673046924?v=2" /><link rel="alternate" type="text/html" href="http://blog.inkitecture.com/2008/06/introducing-bag-vs-bin.html" title="Introducing Bag vs. Bin" /><author><name>Jay Zeschin</name><uri>http://www.blogger.com/profile/01175703045328177893</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="09731562369923108232" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;A0MAQX8_cSp7ImA9WxdTF08.&quot;"><id>tag:blogger.com,1999:blog-1578623853015741151.post-2126065600804950419</id><published>2008-05-13T09:53:00.022-05:00</published><updated>2008-05-13T20:44:00.149-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-05-13T20:44:00.149-05:00</app:edited><title>Twitter API - Working with profile images</title><content type="html">&lt;div&gt;&lt;blockquote&gt;&lt;/blockquote&gt;Twitter provides a fantastic API which has allowed many developers (Inkitecture included) to create flexible apps and bots leveraging their framework. That being said, limitations do exist with their API. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 102, 255);"&gt;The Problem: Finding Twitter Profile Images&lt;/span&gt;&lt;/span&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One of these limitations is with how Twitter handles profile images. Twitter uses Amazon's S3 storage service as a medium for storing images. This results in image URL's that look like this: &lt;/div&gt;&lt;div&gt;&lt;pre&gt;http://s3.amazonaws.com/twitter_production/profile_images/54032789/Picture_3_bigger.png&lt;/pre&gt;&lt;pre&gt;                                                          ^^^Problem here  ^^^And here&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For the developer, this means there is no easy way to guess a user's profile image URL. This information can be easily obtained through a RSS API call, but Twitter now limits these to 50/hour which effectively prohibits any Twitter-based application with a large user base.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 102, 255);"&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;The Work-Around: Leverage the User's Twitter Account&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Using the user's Twitter account to grab profile images is a security concern because you don't want to be storing user account details with any session exposure or in any persistent manner.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;The workaround in ruby is to grab the profile images right after authenticating the user. This eliminates the need for caching the user client or password in session and dumps it from memory quickly. API calls can be further reduced by storing profile image URLS in a DB table, updating them only every week or so.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here's the code. This happens right after authentication, and then the twitter_user_client is promptly dumped, just like my 10th grade prom date:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;pre&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;def self.update_debtor_images(twitter_username, twitter_user_client)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;your_debtor_balances = Balance.find_all_by_you(twitter_username)&lt;br /&gt;&lt;br /&gt;debtors_with_images = User.find_all_tweeters_in_balances(your_debtor_balances)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;#add session user to the array (update your image)&lt;/span&gt;&lt;br /&gt;u = User.find_by_name(twitter_username)&lt;br /&gt;debtors_with_images &lt;&lt; style="color: rgb(51, 102, 255);"&gt;#image replacement criteria: older than 1 week OR doesn't exist  &lt;br /&gt;a_week_ago = Time.now - 60*60*24*7 #seconds * minutes * hours * days      &lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;#okay, now go through the list of users and update if needed &lt;/span&gt; &lt;br /&gt; debtors_with_images.each do |debtor|    &lt;br /&gt;    &lt;span style="color: rgb(51, 102, 255);"&gt;#if they don't have a populated image, or the image url is a week old...&lt;/span&gt;    &lt;br /&gt;    if (!debtor.image_url || debtor.updated_at &lt; style="color: rgb(51, 102, 255);"&gt;#get image location from twitter&lt;br /&gt; begin        &lt;br /&gt;  debtor.image_url = twitter_user_client.user(debtor.name.gsub(/@/, ""), :info).profile_image_url        &lt;br /&gt;  debtor.save!      &lt;br /&gt; rescue Exception =&gt; e&lt;br /&gt;    end&lt;br /&gt;&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; end&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Questions are always welcome :D&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1578623853015741151-2126065600804950419?l=blog.inkitecture.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.inkitecture.com/feeds/2126065600804950419/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1578623853015741151&amp;postID=2126065600804950419" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1578623853015741151/posts/default/2126065600804950419?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1578623853015741151/posts/default/2126065600804950419?v=2" /><link rel="alternate" type="text/html" href="http://blog.inkitecture.com/2008/05/twitter-api-working-with-profile-images.html" title="Twitter API - Working with profile images" /><author><name>Drew McKinney</name><uri>http://www.blogger.com/profile/11118885276226983523</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02284483397099265115" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CEQGSXczcCp7ImA9WxZbE08.&quot;"><id>tag:blogger.com,1999:blog-1578623853015741151.post-62938107339542128</id><published>2008-04-16T00:04:00.000-05:00</published><updated>2008-04-16T00:05:28.988-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-04-16T00:05:28.988-05:00</app:edited><title>An introduction</title><content type="html">&lt;p&gt;We call ourselves ‘inkitecture’.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;“Pad and ink are the flesh and blood of the creative process. When ideas shake themselves loose from the subconscious and drift onto the mental radar, they flow out the fingers, through the pen, and onto paper where they take shape, grow, evolve, and thrive. Ink courses through the veins of every fresh idea, sustaining and nourishing it as it grows. The inkitecture of an idea is the way it takes shape in its most fresh, raw, malleable, and continually changing form. Ideas are grown, not created, and our name is homage to this primal and organic process.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;We exist in a symbiosis with this creative cycle. Ideas are the core of our existence; without them our lives are dull, repetitive, and purposeless. At the same time, without us to tend to them ideas will wither and slowly turn to dust.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Ideas are our passion, our way of life. Moreover, they are the drive behind our goal: to make things that are useful to people. We’re passionate about channeling our creative energies into creating things that are genuinely interesting, helpful, and useful. Everything else follows from there.”&lt;br /&gt;&lt;/p&gt;&lt;p&gt;This is our manifesto. It’s important enough to us that you’ll see it at the top of each and every post we make here, a mention which leads naturally into the topic of what exactly this thing is all about. Simply put, we’re a group of entrepreneurial, technological, and aesthetically-minded individuals looking to add something valuable and interesting to the swirling maelstrom of content that is the internet. We make no claims other than that we will do our best not to squander the investment in time you’re making to follow us. It’s an experiment; a journey, if you will (the simile is trite but it’s also apt). Stay tuned – we’ll keep you updated as we continue to roam.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;~the team:  Jay, Drew and Kunal&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1578623853015741151-62938107339542128?l=blog.inkitecture.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.inkitecture.com/feeds/62938107339542128/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1578623853015741151&amp;postID=62938107339542128" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1578623853015741151/posts/default/62938107339542128?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1578623853015741151/posts/default/62938107339542128?v=2" /><link rel="alternate" type="text/html" href="http://blog.inkitecture.com/2008/04/introduction.html" title="An introduction" /><author><name>Jay Zeschin</name><uri>http://www.blogger.com/profile/01175703045328177893</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="09731562369923108232" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry></feed>
