Building a startup: branding and community (september – november 2012)

When you build a startup, you define a product. Once the first iterations are done, you make it functional and verify some of your assumptions. Then you obtain a kind of  “first version”, a state that statisfy you enough to think “I would  buy it”. You could apply the same for your “pitch”, the way you introduce your product to people interested in what you do. Then you observe that things could be sexier, more engaging. When this feeling arises, this is time for branding: putting a logo on your company, dress your punchlines with a beautiful design, define your mantra and build partnerships that will rely your values.

Identity and website

We didn’t have the required skills to make an appealing logo and design properly our website. So we decided to hire someone good at this to make the job for us. After watching tons of portfolio from folyo.me, we selected the designers we prefered and contact them. We learnt the hard way that good designers are quite booked and required to be hired early. After a lot of researches and emails, we finally conclude to an agreement with Paykhan a Freelance designer.

He built the website with 4 iterations. The first one was a little bit messy but gave us a lot of ideas to explore. The second one was better structured but look a little bit sad. The third one was almost good and the fourth one consisted of adding small improvements to make things more beautiful. We grabbed feedbacks from different people we know to help us taking decisions. Finally, we integrated the result. Now, we can say that it does the job. Displaying our logo on all our materials and on our public accounts (github, twitter…) gives us credibility and the conversion rate of our website is really high: almost 50% of our visitors suscribed to Cozy Cloud.

cozy-logo

Community

Our product get ready for technical people who would like to self-host their Cozy Cloud. At the same time we decided to start our interns hiring campain. So we advertized softly to French students about what we do and  get in touch with the French free software community.

Because Cozy Cloud is a platform on which people can build their own application, we worked on providing all necessary materials about where to start to build on : starting template, Getting Started Guide, and a little tool to make deployment easy.

That led us to three recruitments and a first contributor who built two Cozy apps for his own needs (bookmark and feed manager). By the way we are going to hire one our interns of from the last session for a one year contract.

cozy_apps

Partners

Aside from that we built partnerships: we are getting closer to GnuSide a company that work on a similar project as Cozy Cloud, called FirstBrick, but more oriented on the hardware aspects. The FING, an organization that analyzes impacts of new technologies on our day-life will probably hire us to help them. They have a project called “Mes Infos” that could be compared to the MiData project. They want to make experimentations around personal data, so our personal cloud solutions could fit well with their project.

mes_infos

Communication

We sponsorized one event, JDLL, and held a stand there where we met a lot of new people and grabbed again a lot of feedbacks. We also made some contacts to sponsorize other events (JS community). Aside of that, we prepared the first series of blog posts that will define our mantra and that will serve us as references for all our communication materials.

cozy

Conclusion

Communicating about the product is mandatory for adoption. It takes a lot of time and should be thought since day one. What I learned too is that communication starts with yourself: giving a face to what you are building strenghten your motivation and make your ideas clearer. By the way, it made official the first steps of our mission: make the web a better place.

Newebe version 0.6.0 released

Newebe new version is out ! Newebe is a social network where each user is independant, this provides several advantages such as data ownership, speed, ad-free… In a few words, we can say that using newebe is as good as talking around a campfire.

campfire

This version, the 0.6.0,  aims to fill a hole noticed on every social network : open file publishing. None of the major ones propose to share his open files with his contacts. Fortunately, now you can do it with newebe !

Of course it comes with a whole new set of features :

  • Contact tagging (contact lists)
  • Full-text search for your microposts
  • Python packaging, made by Majerti during PyconFR Hackaton
  • Config file refactoring, made by Majerti during PyconFR Hackaton
  • Public profile page (proof of concept)
  • Fabric installation script
  • Debian package

This upgrade requires to re-setup newebe from scratch (just keep your CouchDB installation), detailed instructions here.

Quick install (Debian) :

From your local machine :

apt-get install python python-setuptools python-pip
pip install fabric fabtools
wget https://raw.github.com/gelnior/newebe/master/deploy/fabfile.py --no-check-certificate
fab setup -H myrootuser@myhosturlorip

Or directly on your remote box (debian testing at least) :

wget https://github.com/downloads/gelnior/newebe/newebe-server_0.6.0-1_all.deb --no-check-certificate
sudo dpkg -i newebe-server_0.6.0-1_all.deb
sudo apt-get install -f

What’s next ?

Here is the roadmap for the next release :

  • front-end refactoring
  • desing improvements
  • UX improvements

Thanks to everyone who contributed to Newebe during the past 6 months !

See you soon on Newebe!

Photo from Jack Zalium

request-json : simple HTTP client for Node.js to deal with JSON APIs

Most of the web APIs furnishes data formatted with JSON. Even some databases, like CouchDB, propose to manage data through HTTP requests that carry JSON data.

With Node.js, to write an HTTP client that queries these JSON API, there is the famous request library. This one is able to do a lot of stuff but requires a configuration each time you use it with JSON APIs. For instance, if you send a GET request to an URI, you will have to parse returned body or to specify a JSON option. That could be annoying if you do it frequently.

To avoid that I wrote a simple library that extend request and will make your life easier when dealing with JSON API. It is called request-json and is really more straightforward.

Here are some examples, written with coffeescript, it works with Javascript too.

data = title: 'my title', content: 'my content'

# with request
request.post uri: 'http://localhost:8888/posts', json: data, (error, response, body) ->
    console.log response.statusCode

# with request-json
client = new Client 'http://localhost:8888/'
client.post 'posts/', data, (err, res, body) ->
    console.log response.statusCode

# with request
request.get uri: 'http://localhost:8888/posts', json: true, (error, response, body) ->
    console.log body[0].title

# with request-json
client.get 'posts/', (err, res, body) ->
    console.log body[0].title

request-json brings additional features:

  • keep your base path, dont rewrite it every time.
  • send and save files easily (that’s properly done via streams)
  • add a basic authentication to each of your requests.