Copyright (C) 2007-2010 Nolan Eakins

Bitter is licensed and distributed under the MIT software license which can be found in the “MIT-LICENSE” file alongside the source code.


Bitter is a simple microblogger. It only allows small posts, called Bits, which can be created over the web or as a text message.


Here’s a brief list of Bitter’s features:

Getting Started

The Source

Full access to Bitter’s complete source code history is available using Git.

Just run the following to get the code:

git clone

And you’ll find everything in the new “bitter” directory.

You can also browse the code online by visiting Bitter’s Repository.

Basic Setup

Bitter is just like a typical Rails application. To get going, at your shell do:

git submodule update --init
$EDITOR config/database.yml           # setup your database
rake db:migrate
rake spec

And point your browser at http://localhost:3000/ for a quick test. You can now setup Mongrel or Passenger up to serve your Bitter.

You will also need to register a user account to be able to login and bit your heart out.

TextMarks provides a free SMS text message publishing service. They provide a keyword to namespace your text messages, and a very simple API to send and receive text messages. Bitter allows text messages to be sent and received via a keyword at TextMarks. You will need an API key and some other information to enable TextMarks.

The TextMark config is located in “BITTER_ROOT/config/initializers/text_marks.rb”. You just need to fill in each value to something like:

module TextMarks
  Config = {
    'enabled' => true,
    'apik' => 'your api key',
    'auth_user' => 'your cell phone #',
    'auth_pass' => 0000,
    'tm' => 'your textmark',
    'recv_key' => 'the shared secret allowing TM to post'

Once that is setup, all you should need to do is send a text message to your TextMark. It’ll churn around for a bit and should get posted directly to Bitter if the phone number matches a registered user.

Live Bitters

Help and Support

You’re not guarenteed any kind of support, but if you need help you can try dropping an email to support at semanticgap dot com. You should receive an answer.