Sam Odio, founder

Now: Freshplum. Then: Divvyshot, sold to Facebook.

Buy me a beer!

October 31 2012

Filed under: freshplum   helium   home  

Image credit: SteFou!

This is a demo of how easy it is to use Helium to accept payments online. First I just had to add one line to the header of every page:

<script src="https://s3.amazonaws.com/he3/helium.js" id="Helium" data-key="zhhq7yg4eg8uy8kq8"></script>

Then I just add a few attributes to the element I want visitors to click:

<a href="http://he2.co/AM0M0N1S7I4" target="_blank" class="helium-buy-now" data-sku="1">Buy Now</a>

And this is what it looks like: Buy Now.

Sam Odio on the web: Crunchbase | Angellist | Linked In | Quora | Google+ | Github

Please stop spamming me, Twitter

June 12 2012

Filed under: home   rant  

When I first used Twitter they had a simple "Notification" settings page with three checkboxes on it:


I chose not to receive any emails, so all three checkboxes were unchecked. They didn't send me anything. Those days were great. However over time their notification page changed. The first change wasn't a big deal. They added "Auto Nudge" and it was off by default:


In a more recent update to their notifications page Twitter went even further and split apart the email updates preference. While before there was only one preference, titled "I want the inside scoop -- please send ... more

Django's default tests fail

May 16 2012

Filed under: Django   home  

This bug has caught me a few times so I figure I'll share it. The default tests fail with errors like:

AssertionError: False is not True : Couldn't find 'Message 1' in response
...
KeyError: 'user'

These two failures occurred when I added the authentication and messages middleware but not their template context processors. In settings.py I needed something like:

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
)

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.contrib.auth.context_processors.auth',
    'django.contrib.messages.context_processors.messages',

)

Hopefully this helps someone ... more

Winter 2012 YCombinator Batch

March 27 2012

Filed under: home   Startups   YCombinator  

The first time I went through YCombinator, it was in a batch of 14 companies. The most recent batch 59 demoed (39 publicly). They've outgrown the YCombinator demo space and have moved to an auditorium in Mountain View's Computer History Museum - with a seating capacity of 380.

I was lucky enough to attend YCombinator's Alumni Demo Day last night (where the startups do a practice run-through of their pitches). Here's a quick summary of the public companies with my thoughts:

AnyPerk: Discounts as an employee benefit. Founders have all been part of previous compnaies that have ... more

Touch-screen bus

January 08 2012

Filed under: hacking   home  

When I was 17 my brother asked me to build a touch-screen interface for a bus he had recently purchased. The screen was to serve as the dashboard, controlling the turn signals & headlights, starting the engine, opening the door, etc.

To complete this project I used a rabbit embedded microcontroller similar to the SBC BL4S200. You can get one for as little as $250 today. A budget computer connected to the touch screen via USB & VGA and communicated with the microcontroller via a serial port. I then reverse-engineered the relays on the bus to determine their function (ie, power the ... more

sam.odio.com has a new blog.

August 11 2011

Filed under: home  

Since moving off Blogger (here's why) and loosing all of my blog's comments my blog has fallen into a bit of disuse. Now that I'm freshly unemployed (at least, that's how my Dad calls it) I aim to change that.

Action items:

  1. Create an open source lightweight django blog.
  2. Crowd-source a blog design using crowdspring.
  3. Realize that crowd-sourcing is a failure, convince Michael to donate his time and patience to fix it.
  4. Port all old blog posts to new platform.
  5. Port all comments (which have recently disappeared) to new platform.
  6. Make myself a Margarita and relax ... more