Digital Notepad

Internet, Mobility and Serious Geekery

Quick checklist to railsify Ubuntu Desktop the kosher way

February23

Just a short rundown on how to use Ubuntu 8.1 Desktop as the main development machine.

  1. apt-get autoremove
  2. Click ‘install VMware Tools’ in menu.
  3. Copy Tools in personal working directory and tar xvfz.
  4. Enter directory and start sudo ./vmware-install.pl
  5. sudo apt-get install build-essential zlib1g-dev libssl-dev libpq-dev apache2-mpm-prefork apache2-prefork-dev libreadline5-dev git-core pgadmin3 postgresql
  6. wget the latest ruby: http://www.rubyenterpriseedition.com/download.html
  7. sudo ln -s /opt/ruby-enterprise-1.8.6-20090201/ /opt/ruby-enterprise
  8. sudo ln -s /opt/ruby-enterprise/bin/gem /usr/bin/gem
  9. sudo ln -s /opt/ruby-enterprise/bin/ruby /usr/bin/ruby
  10. sudo ln -s /opt/ruby-enterprise/bin/rake /usr/bin/rake
  11. sudo ln -s /opt/ruby-enterprise/bin/irb /usr/bin/irb
  12. sudo ln -s /opt/ruby-enterprise/bin/rails /usr/bin/rails
  13. sudo /opt/ruby-enterprise-1.8.6-20090201/bin/passenger-install-apache2-module
  14. And now follow this post: Mac OS X – ideal development platform – VMware, Ruby on Rails & Ubuntu
posted under Tech | No Comments »

GeoKit on Rails – excellent plugin with a twist

February6

Just a quicky, with the release of 1.2.1 of the geokit rails plugin there seems to be a regression, concerning the mappable.rb / acts_as_mappable mixin.

Putting this up front in my model helped a lot to avoid NameError: undefined local variable or method `acts_as_mappable’ :

require ‘vendor/plugins/geokit-rails/init.rb’

Maybe it’s just me, but at least now it works. I’ll ask Andre Lewis about this.

Update: Andre just twittered me that adding config.gem “andre-geokit”, :lib=>’geokit’, :source => ‘http://gems.github.com’ to /config/environment.rb does the trick as well. On to remove cruft from models!

posted under Tech | 1 Comment »

Mac OS X – ideal development platform – VMware, Ruby on Rails & Ubuntu

December28

Mac as the ideal development platform? Maybe for the iPhone I hear you mumble. Until I found this nice, clean and extremely flexible solution I wholeheartedly agreed. The basic scheme goes like this:

As foundation I am now running a clean, basically stock OS X. On top of this I am running a bunch of VMware Fusion Virtual machines, ranging from OS X, Ubuntu down to Windows XP ;-). Basically I am running all the development environment in Ubuntu and doing all the research and editing on OS X natively.

To achieve this I have a Ubuntu Server 8.10 with PostgreSQL, Apache 2 prefork, Ruby Enterprise Edition and Rails 2.2.2 installed. This Linux VM shares my Mac OS X Project folder via VMware HGFS mount directly in /var/www/projectname. This setup enables me to work with Textmate and save/copy/mess around locally on my Mac OS X host system (10.5.6) and immediately have the changes reflected in the Ubuntu machine. So the basic workflow is the same than before with having RoR etc. installed locally on my OS X. Hope I made myself clear!?

Here is how to get there (you may have to adjust the version numbers and replace cabchap&tom with the required domain/user):

  1. Install Ubuntu Intrepid Ibex Server CD, using F4 – minimal system, then press “Install” and later select “Basic Ubuntu Server”, “SSH Server” and “PostgreSQL Server”.
  2. sudo apt-get update -o Acquire::http::No-Cache=True
  3. sudo apt-get dist-upgrade
  4. sudo apt-get install build-essential zlib1g-dev libssl-dev libpq-dev apache2-mpm-prefork apache2-prefork-dev libreadline5-dev git-core
  5. wget http://rubyforge.org/frs/download.php/48623/ruby-enterprise-1.8.6-20081215.tar.gz
  6. tar xvfz ruby-enterprise-1.8.6-20081215.tar.gz
  7. cd ruby-enterprise-1.8.6-20081215/
  8. sudo ./installer
  9. sudo ln -s /opt/ruby-enterprise-1.8.6-20081215/ /opt/ruby-enterprise
  10. sudo ln -s /opt/ruby-enterprise/bin/gem /usr/bin/gem
  11. sudo ln -s /opt/ruby-enterprise/bin/ruby /usr/bin/ruby
  12. sudo ln -s /opt/ruby-enterprise/bin/rake /usr/bin/rake
  13. sudo ln -s /opt/ruby-enterprise/bin/irb /usr/bin/irb
  14. sudo ln -s /opt/ruby-enterprise/bin/rails /usr/bin/rails
  15. sudo /opt/ruby-enterprise-1.8.6-20081215/bin/passenger-install-apache2-module
  16. sudo vi /etc/apache2/httpd.conf [and enter the following:]
    # General stuff
    ServerSignature Off
    LogLevel warn
     
    # Set Rails mode
    RailsEnv development
     
    # Lock down GIT files
    <Files ~ “^.git”>
        Order allow,deny
        Deny from all
    </Files>
     
    # Prepare for Rails
    LoadModule passenger_module /opt/ruby-enterprise-1.8.6-20081215/lib/ruby/gems/1.8/gems/passenger-2.0.6/ext/apache2/mod_passenger.so
    PassengerRoot /opt/ruby-enterprise-1.8.6-20081215/lib/ruby/gems/1.8/gems/passenger-2.0.6
    PassengerRuby /opt/ruby-enterprise-1.8.6-20081215/bin/ruby
  17. cd /etc/apache2/sites-available/
  18. cp default default.orig
  19. sudo vi /etc/apache2/sites-available/default [fill only with:]
    <VirtualHost *>
      ServerName dev.cabchap.com
      ServerAdmin devmaster@cabchap.com
      DocumentRoot /var/www/cabchap/public
      ErrorLog /var/log/apache2/error.log
      CustomLog /var/log/apache2/access.log combined
    </VirtualHost>
  20. cd /var/www
  21. sudo mkdir cabchap
  22. sudo chown tom cabchap
  23. rails -d postgresql cabchap
  24. sudo -u postgres createuser cabchap [answer yes to superuser]
  25. sudo vi /etc/postgresql/8.3/main/pg_hba.conf
     host all all 192.168.0.0/16 md5
    Replace:
    local all all ident sameuser
    with this line:
    local all all md5
  26. sudo vi /etc/postgresql/8.3/main/postgresql.conf
    listen_addresses=’*’
  27. sudo /etc/init.d/postgresql-8.3 restart
  28. sudo /etc/init.d/apache2 restart
  29. Finally configure the VMware shared folder in VMware settings for the relevant machine:
  30. Name: cabchap (this name is mounted in fstab)
  31. Folder: dev (in Projects/Something/dev)
  32. In etc/fstab enter
     .host:/ /var/www vmhgfs defaults,ttl=5,uid=tom,gid=tom 0 0

Let me know if this interesting for someone out there. If it is, I will invest more time in clarifying these quick draft notes. May this be helpful.

posted under Tech | 2 Comments »

[Start-up Braindump] – Branding on the Cheap – Part 1

December17

Branding is so full of meaning that it’s quite hard to grasp the main concept. Basically branding is about matching all facets of your product (and surrounding services) to the needs of your customers. Start-up branding is closely related to positioning, in that it is about researching what makes your most relevant customers buy and recommend your product/service (for simplicity sake let’s talk about products here) and adjusting it appropriately.

It is a lot more than fancy graphics or the packaging of the product. It is everything from the relevant minimal feature set, to timing when to enter the market to colors, typography and logo.

Before I delve into the gory details, I will simply describe how I go on about it. By no means is this the relevant source for state-of-the-art branding/development but it is, by now, a honed process to get to reasonable results quite cheap and fast. And this is what matters in a cash-strapped start-up!

I consider this a side-project; at least in terms of continous attention. It is quite important, probably as important as product development (at least for B2C-products) – but branding is nothing that I am able to rush. If I am writing software for 16 hours a day instead of 8, I will get significantly further during that day. While thinking about a claim, naming or a smart graphical representation (aka logo) it is impossible for me to ‘push’ my thoughts. Depending on work-load, I set aside one or two days per week on average, which means maybe spending one full day on creating meaningful naming patterns for a product, but over the rest of the week, revisiting and reconsidering for a few minutes daily.

Right a the beginning of a project, while doing initial feasibility research and talking to all the stakeholders, my branding process begins. In an iterative process, I am considering what problem the product may solve exactly. Then, by thinking about related problems in my domain I reconsider if it makes sense to broaden or narrow down the scope of my research. It’s absolutely vital to repeatedly narrow and widen the scope until all related areas haven been well thought through. A wrong focus here is very expensive (at least in terms of ressources) later on.

After having the best scope nailed down, you are able to answer the most encompassing branding question: “What is the character, the basic feeling, the overarching solution my product stands for?”.
BMW identified “Freude am Fahren”/”The Ultimate Driving Machine” as their core value proposition. This doesn’t sound like much but from this condensed statement flows everything else -> a sportive color-palette, aggressive car styling, matching typography and such.

With CabChap things evolved like this:

  1. Finding and refining the scope of the product (online market for on-demand transport). So it’s not just the demand-side of human transport or the offer-side, it’s not scheduled traffic like busses or trains. This will be refined along the way.
  2. Deciding/making-up on a customer base. CabChap will most probably have 40+ year old, non technical cab drivers and on the other hand techno-freaks that wear a suite and are well versed with their iPhone/Blackberry.
  3. What kind of characteristics are ideally suited for this product and these customers? I don’t know, but my guess is, that these two groups prefer most likely a friendly and competent site. So the feeling I would like to communicate is friendliness/chap”iness” and competence/cleanliness.
  4. The results can be found in the name (CabChap); Cab, besides being an alliteration and easy to remember, communicates ideally the concept of on-demand traffic for everybody. So, by just hearing the name you may guess it has to do something with human transport. And this is already quite an achievement if you don’t plan to spend millions on building a brand like Coca-Cola or the like.
  5. Secondly the logo carries cleanliness and – hopefully – competence. At first I opted for a serif-font to communicate british/old-style but figured later that this is no ideal fit. And, actually as an afterthought, I happend to stumble on the ‘ab’ part in ‘Cab’, which lends itself nicely to a graphical mark for icons, logos etc.
  6. From there finding fitting colors (black, white, orange), derived from BlackCab, the orange Cab-Sign and matching styles in webdesign (simply, typo-based, little and concise content with lots of white-space) is just a small step.
  7. If the end-result will fit together isn’t so clear yet, but with another iterative honing process I will get there eventually.

Now, I am tired. More thoughts on this later.

posted under Startup | No Comments »

[Startup-Braindump] – Priming / The Idea

December7

Marcus, a real London black-cab driver, taught me quite a bit about the trade during hikes in the mountains surrounding Freiburg. One of the themes that connects all my startups was obvious again: on-demand transport, namely cabs in London, lacks transparency. Another problem are brokers in the market that are overpaid and imho underdeliver. With this hypothesis I started surfing around and reading through all the relevant cab-sites. The next few days I talked a lot to cab drivers in Freiburg and drove around with them to get a first-hand feel for the trade, at least in Germany.

This helped a lot in 1. really verifying there is a pain point and 2. understanding the big picture of the synthesized solution. For statistics and an overview, I checked out the main organizations on the net and by calling a few relevant people.

In discussing the problem and the proposed solution with Mathias, my business partner, and with friends and family I basically honed the story and filled in holes in my reasoning. Don’t rely to much on positive feedback here, though: A lack of enthusiasm with your friends may simply arise from not being into startups like you are. Or, conversely, enthusiastic reactions won’t help you in the future if you don’t have a clear view of all the potential problems. Basically I am only looking for real, factual show stoppers here, nothing more, nothing less.

So, iteratively refining the problem and continually thinking about how to solve it will continue to be an important thread in the next months! This will not be done any time soon; maybe its just me, but I keep discovering new aspects of the problem and the solution the more I talk or really hands-on experience the problem. E.g. while exploring the possible solutions it became obvious that the market for on-demand transport is lacking a decent payment method. So it may be naturally to offer this adjacent solution together with the core product. But this is another discussion (See Episode 65 – Upselling :-) )

posted under Startup | No Comments »
« Older EntriesNewer Entries »