2 Year Anniversary for RunMyErrand!

In CategoryRoR, charlestown, entrepreneurship, kobe, programming, remy, startups, sweet briar
Bylab

Exactly 2 years ago today, the idea for RunMyErrand was born. You may have heard the story before, but it all started with a dog. A big yellow one. His name is Kobe, and 2 years later he is our CIO – "Chief Inspiration Officer".

It was a cold February evening in 2008, when we were out of dog food for Kobe, and came up with the plan for RunMyErrand. We were meeting my dear college friends at Masa in the South End – Brie, my roommate from Sweet Briar who I hadn’t seen in years, and Jen another SBC alum. I remember barely being able to contain my excitement over dinner and margaritas that night as I shared our idea with friends. They were the first to hear about RunMyErrand, and it was wonderful to have their support from the start.

I was still at IBM at the time, and I would have never guessed that two years later, this is where we would all be. A company launched, funded, with an amazing team (including advisors), behind us. My house in Charlestown sold – the one we were going to "settle down in" – with plans for a launch in the San Francisco market imminent. Not to mention a special dog food delivery partnership that solves the original problem that inspired RME! Craziness!

Reflecting back, I’m not sure I realized at the time, how fast two year would go, and how much work it would be to get to this point. I myself have learned a ton in this time, expanding my skill set beyond engineering, and finding a passion for entrepreneurship that I realize was always a part of me. I have never felt more alive.

I am so grateful to advisers, mentors, and new team members that have supported this company, and a very timely update to our team page was just pushed live yesterday featuring then entire RunMyErrand Crew, including our CIO – Kobe. A celebratory margarita will be made in the Busque house tonight – here’s to the next 2 years …

Feature Alert: Headed to _________. Need anything?

In CategoryRoR, feature alert, programming, remy, startups
Bylab

This is a major feature that has been in the works for some time.  The "Runs" feature has been part of the original RUNmyERRAND vision from the beginning and we are thrilled to finally launch it this week!  Just as Senders can post errands, Runners can now post "Runs" … its kind of a mirror image of the current site.  Runs are generated by Runners and are planned trips.  We anticipate popular runs including trips to Target, IKEA, Costco, Goodwill, etc, but a Runner is free to post a Run to wherever they would like.  It is all part of our "errand sharing" model, which maximizes Runner’s profits, minimizes Sender’s expenses, and certainly has its green benefits!

We are starting the Runs feature this week with a trial group of Runners.  We don’t want to overload the system with an influx of Runs, so there will be handful of planned Runs generated by the same individuals for now.  Its nice to have a group of Runners that are really experienced on the site, and who I can immediately turn to when launching a feature like this.  They were eager to jump on board and give it a test drive.

Right now we’ve got a Target Run, Home Depot Run, and Wholefood Run open.  Senders can make requests, include a list of items, their location for delivery, and a Runner fee.  Just the same as a regular errand, a Runner can also counteroffer this fee, and Senders can pay with cash on delivery or reimburse their Runner with credit online.  We (the Ruby Ninja) leveraged a lot of the errand model code to implement this request concept, which makes it familiar to the end user with the same robust feature set. 

Just looking at these runs, I can already think of a few things I need from these places … and that’s the beauty of it.  We all need reminders, and if we know someone is making the trip anyway, why not get in on it!

Post errands from your Blackberry? No problem!

In CategoryRoR, entrepreneurship, general tech, remy, software, startups
Bylab

It has been a whirlwind couple of weeks.  It doesn’t even feel like weeks … its feeling more like months, but everything is moving so quickly.  Not sure that makes any sense at all, but I am sure that there is probably someone out there that can relate!  Please give me a shout-out! :)  

One of things I am most excited about for RUNmyERRAND is the UI overhaul we have got up our sleeves.  We are working with a brilliant graphic designer, a self proclaimed "user advocate", named Eric Sagalyn.  Super talented and works quickly, which is important for our situation.  We got our first peak at the new design late last week and it is just so thrilling!!  Finally, my true vision for the site is going to start shining through.  As a software engineer, my expertise is in back end coding, algorithms, and feature development.  I can do the UI, I’ve learned a lot of CSS, but I certainly am not a self-proclaimed "user advocate"!  I did what I could while I was bootstrapping to get the first cut of the website launched, to prove the model, and now I can finally work with an expert to convey the magnificent beast that is in my head.  So keep an eye out for an exciting new look and feel coming soon!

The other great feature that I believe is going to add a ton of value, is our new Blackberry Application.  The code was merged late last night, so this is the first day it has been live.  Take a peak … all feedback is welcome!  We did a ton of testing on different simulators, but would love to hear how everything is looking on the real devices.  We tried to just make everything really simple, not graphic heavy, so that it will load fast and be useful.  Just like the iPhone you can: Login, Post an Errand, Run and Errand, Purchase Credits, and Mark Errand Complete.  All the basic, most important functionality is there.

In the words of Finding Nemo … "just keep swimming" ….

Tell a friend!

In CategoryRoR, general tech, programming, remy, software, startups
Bylab

This is a really simple code example, but what I love about it, is it shows what a pleasure Ruby is to write in!  I wanted to add a "Tell a Friend" feature to the front page.  First and foremost, it should be functional, but it also shouldn’t be another boring form wrapped in a template.  This is where the Redbox plugin really spiced things up!  I’ve used the Redbox plugin before, and what it is, is a lightbox plugin for Rails.  A usual application of lightboxing is seen when looking through an image gallery, and the main image comes front and center, while the rest of the screen gets a dark grey overlay.  Lightboxes can be used for any content, paragraphs, images, and in my case a form to be filled out.

Step 1 was to get a snappy new button designed, and I can’t take the credit for that.  In fact, I can’t take the credit for any of the fantastic graphic art on the site.  That is where the super talented graphic artist, Brian, comes in.  He sent over a spiffy new "Tell a Friend" button to be used as the anchor of the feaure.

Step 2, install the Redbox plugin and get ready to use it!  We used the link_to_redbox call for this feature, and embedded the content for the Redbox in a hidden div.  To use the image graphic as the link, you can do something like this:
     <%= link_to_redbox((image_tag "/taf.jpg"), "taf") %>

Step 3, create the form in the "taf" hidden div.  No magic here, just a simple form, and don’t forget to use all the fantastic Rails Form Helpers.

Step 4, make sure the "to" field can parse multiple entries.  You want users to be able to type in a list of email addresses, not just one, so some additional code needs to be added to the controller that is handling the form action.  This is where the Ruby syntax, especially working with the String Class is so great.  All we have to do is split the String passed in from the "to" field.  Here we are looking for all the commas, and splitting the String into an Array of email addresses, called "Tos".

         Tos = @taf.to.split(',')

From there it is a simple for loop to actually deliver the send to a friend email message to all the addresses in the "Tos" array:

          for To in Tos
       UserNotifier.deliver_taf(To, @taf.from, @taf.msg)
     end

And that’s about it!  A couple of notes …  Even though the latest version of the Redbox plugin says that it is compatible with IE, I had trouble getting it to work properly.  I tried it on IE 7.0, and the grey shadow that is suppose to cover the screen would not cover all the divs I had in the template.  For IE, I had to resort to old "if / else" trick, where if it is an IE browser, don’t do the Redbox, just go to a boring form page.  All the other users, with the right browsers, will still get to use the fancy Redbox’d form.  But if you’ve ready my blog at all, you’ll know my battles and scars with IE run deep.

Remy. Unleashed.

In CategoryRoR, general tech, programming
Bylab

It’s true, Remy has been launched in beta form at www.RUNmyERRAND.com!  The code name ‘Remy’ was made up from the acronym ‘R’un ‘M’y ‘E’rrand, which then rolled off the tounge as Remy.  So there you have it …  the cat is out of the bag.  The lab has been unleashed.  This is what I left Big Blue to work on … a social networking inspired community of Errand Senders and Errand Runners joining together to get things done!  We launched quietly on September 15th with some friends and family.  It wasn’t until a few weeks later, when we were featured in the Charlestown Patriot Bridge, that things really started cranking!  From there we had some nice organic growth, between CultureJunkie, the Bostonist, and others from the Boston blogging community. 
 

In the few weeks since the launch, the really exciting thing is that the typical response time between a Sender posting an errand, and a Runner picking up the errand is 10 minutes!  Yes … 10 minutes!!!  How great is that?!  Our vision from the very beginning was to make this a dynamic, spontaneous offering where people could post things that they needed done, while others, who have the time, are able to log on and make some money running errands for others.  Imagine you’re driving to work and a thought pops into your head … shoot … you forgot to pick up the dry cleaning again!!!  Why not have someone snag it for you, while you are busy working away, and deliver it straight to your office, so you’ll have it on your way home?  How about that bag of clothing donations that’s been sitting in your closet for weeks.  Post it online and get it out of there!  You are probably thinking an on demand, high tech service such as this has got to be expensive, right?  The average cost per errand run is $7, and we don’t take any profits from the Runners.  Check out all the errands that have been completed since the launch date … there’s some good stuff in there!

For the geeks … this app is 100% Ruby on Rails based running on a cloud computing infrastructure.  Not Amazon.com … we are using GoGrid and have been really happy with them so far!  It was a blast to engineer and develop from the very beginning and we’ve got so many great features queued up, this is just the beginning!!  We have plans for a rapid expansion, so if we are not available in your community right now, check back soon!!

LAB Unleashed may turn into the RUNmyERRAND blog for a little bit of time.  Its all I eat, sleep, breathe, and think about.  There is a lot of great technology involved, so I’ll probably be writing about it from that perspective.  We are open to suggestions and feedback!  You can contact the RUNmyERRAND Crew anytime via our contact page. 

IE … yep, it still sucks

In CategoryRoR, general tech, programming, software
Bylab

Seriously … Internet Explorer just needs to go away or clean up its pathetic act.  The latest web programming issue I encountered nearly threw me over the edge.  I wanted to do some cool lightboxing on the new site, and of course Safari and Firefox handle all the javascript wonderfully!  And then there is IE … always a completely different story.  The grey background would not cover all of my divs on the screen, and was doing all kinds of funky things.  Why should I have to take out the cool lightboxing and make my Safari/Firefox users suffer?  Well, I won’t take it out, I’ll just case it out for different behavior in IE.  It just annoys me that two things on my site are now special cased for IE.  It is to be expected I suppose, as the code base and spiffy new features increase! 

By the way, I am using Craig Ambrose’s super cool inline Redbox Plugin.  Love it … but hate IE … have I mentioned that?!  Please … if you are reading this entry using Internet Explorer (especially < 7.0) right now, go directly to the Firefox website and down load a new browser here!  It will change your world … trust me!

SSH right on your iPhone!

In CategoryRoR, general tech, programming, software
Bylab

Remy is sort of launched.  A very tiny closed beta is happening as I write.  Its been about a week now, and of course I have been obsessing over the traffic hitting the production.log.  I’ve got a constant tail -f going on my desktop machine, and I get so excited when I see someone new checking things out.  Just watching the production.log is giving me great insight into the usability of the product.  I can see where people are clicking, and if they are hesitating, if they are not sure about where they are at that moment, or where to go next.  I’ve made a few tweaks here and there just by watching the traffic in this log, so it has been a huge help and a lot of fun!  What happens when I am away from my desk though?  Perhaps I am hanging at my favorite coffee house, Zume’s, where I pretty much have established a secondary office.  Well, in that case, I’ve got my trusty macbook, and iTerm to handle my tail -f.  But what if I am on the go, gallivanting around town?  This could be a big problem.  I need to be able to see my traffic at all times or my head will explode.  Enter … a new iPhone App.  Searched and downloaded from the App Store, check out TouchTerm.  A nifty little SSH client where I can tail -f to my hearts desire … and boy do I!!  Its got a nice preference pane, to tweak colors and overall look and feel.  Its even got up arrows, so you can simply scroll through your past commands.  Best part is, I get to continue to see my sites traffic in real time, from anywhere I am at that particular moment.  Brilliant!  At a measly $2.99, its the best thing I’ve ever bought for that price … except for maybe Zume’s coffee.

I have been quiet for a reason

In CategoryRoR, general tech, programming, software
Bylab

I have been busy!!  Not just busy …. swamped busy!!  The kind of busy when you work from home, and your husband expects to come home to a clean house, and a nice meal, and instead he gets you still greasy, in your pajamas, locked away in the corner room, hyped up on caffeine, with piles of hot messes surrounding you.  Its not pretty, nor healthy.  I am happy to say I am moving out of the woods and reentering the masses!

Its been a couple of months now, and I have made a ton of progress on Remy.  Thinking about getting a beta launched soon.  A few days ago my IT guy convinced me I needed to deploy in a different server environment.  The one I have been using for development has become more and more troublesome as they are adding more and more users to it.  The server crashed twice this week, and the hosting company said they had to reboot the machine due to load.  Not my app’s load … just the sheer number of people they have hosted on this server.  Not going to work for me.  Instead my IT guy did some research and we are trying a new environment called Go Grid.  I’ll let him blog about the details, mostly because it is not my area of expertise (see my entry "not a computer girl").  Anyway, it has been quite the process to get everything moved over to the new server environment.  One major issue we hit was the installation of all the right gems.  In the old environment, it was a hosting company that only dealt with Rails apps, so they had hundreds of gems installed for everyone to use. Starting from a scratch environment, we had to go through and figure out which ones I needed … mostly via trial and error.  The problem that took the most time was a strange issue I was hitting with the file_column plugin.  After the deployment on the new server, I could only get gif files to upload.  If I put in a jpeg or a png, it would error out with "Invalid Image".  I searched and searched everywhere on the internet and found maybe 2 other people having this problem … with no way to fix it.  What a pain!!!  Finally we tracked it down, and I am logging it here for the next person that comes along and is frustrated by it.  It turns out, we needed to install some extra libraries used by ImageMagick, specifically libjpeg-devel and PNG.  Here is a great step by step write up about installing RMagick for use with the file_column plugin. 

Now that we are *finally* all moved over to the new server environment, my IT guy is putting the last few things in place for clustering and load balancing.  It should be a pretty solid, pretty fast, and generally pretty set up!!!  All of this in preparation for the first beta release.  Phew … this has been the fastest two months.  Ever.

Why does my site look different in IE? Ruby saves the day (once again)!

In CategoryRoR, general tech, programming
Bylab

For anyone who has ever done any sort of web development, there comes a point where you need to make sure what you are building works the same across all browser types and versions … or at least the major ones.  If you’ve ever spent any time tweaking your code and fighting with the different browser types, you know that Microsoft has done its best to annoy the shit out of you once again with Internet Explorer.  Because it does not adhere to web standards, it always seems to cause trouble when compared to Firefox or Safari.  The spacing is a bit different, and what really bit me this time was a freakish bug in which a background image url will disappear when scrolling, or in my case, I was hiding a DIV and then making it appear with a javascript toggle.  [SIDE NOTE: The scriptaculous javascript classes for Ruby are FANTABULOUS!  So much fun to code and instant gratification because you can see spiffy results super fast!]  I found some great information on common IE css bugs and some possible fixes for them.  In my scenario, I had to change my code for IE, to accommodate the browser’s inadequacies.  I started looking at javascript browser sniffers, but then realized that Ruby on Rails provides a quick and easy way to get the information I needed for a browser check.  The request.user_agent object, contains information on the client’s browser type, version, and even operating system type! 

<%= request.user_agent %>  #=> Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.1) Gecko/2008070206 Firefox/3.0.1

So, if I need to adjust my code for IE, all I have to do is check for "MSIE" as part of the string:

<% if !(request.user_agent.include? "MSIE") %>
 … regular code here …
<% else %>
…. stupid IE code here ….
<% end %>

I didn’t want to compromise the design of my site, by changing the code across all browsers.  I wanted to keep my hidden DIV with the fancy pants javascript toggle for all the user’s who aren’t stuck on IE.  Now, the IE users will get the DIV displayed immediately, while all other browsers will have a cleaner user experience, with the hidden DIV, only appearing when they want it to. 

Thank goodness for Ruby, in making this browser check so easy!! The other solutions I found required a nice chunk of javascript with a technique called browser sniffing.  The other way to do it, is by checking what objects or features are implemented by the browser that is hitting the site.  There is a good write up for determining browser type using object detection, with a chart that shows what objects/features set the different browsers apart.  OR …. you can make a simple Ruby call to the request.user_agent object …. SO EASY!!!!  This is the kind of thing that makes coding with Ruby on Rails such a pleasurable experience!!!

RoR: Select & Collect, all in one breath

In CategoryRoR, programming
Bylab

I found some fantastic syntax today.  I wanted to add a simple select box to my view, and I wanted the box to be filled in from a database table.  I also wanted the list sorted by name.  In the past, I have done something like this in my view:

<select name="obj[thing_id]">
   <% @things.each do |thing| %>
       <option value="<%= thing.id %>">
         <%= thing.name %>
       </option>
   <% end %>
  </select>

That required a @things = Thing.find(:all, :o rder => ‘name’), in the controller for the view action.  Today, I came across this one-liner, that handles everything in the view (nothing additional needed in the controller), in one fell swoop:

<%= select(:obj, :thing_id, Thing.find(:all, :o rder => ‘name’).collect { |p| [p.name, p.id] }, {:include_blank => false}) %>

p.id is used as the option value, and p.name is used as the text to display in the box. 

This is and other tips and tricks can be found in this elaborate cheatsheet.  A nice one to bookmark for future reference!

Theme Provided By: Warcraft Wordpress Theme - Commercial Space