My lean startup validation experiment is an experiment I’m running to see if it is possible to launch a successful product (product = customer facing software system) without spending too much money and in a short period of time.
In phase 1 I had 5 product ideas and wanted to know in which should I invest.
In phase 2 I pick the idea with more interest from phase 1 and invested in creating the MVP (Minimal Viable Product), ContaCal, a calorie counter system.
My phase 3 objectives were:
website launch
online campaign (Google, Facebook, Orkut, etc.)
real users feedback!
Website launch
I officially launched ContaCal on Sep 4th sending an email to all existing users plus the people who showed some interested during phase 1.
Online campaign
I used Google and Facebook. Both generate leads, but Google generated 3 to 4 times more leads than Facebook for my specific web application. Today I’m running a $30/day campaign in AdWords ($1500/month) and I don’t increase it because ContaCal still doesn’t generate any revenue. As soon as I find a sustainable revenue source for ContaCal I’ll certainly increase this investment.
During a certain period my web site was out for maintenance and Google suspended my AdWords campaign. It took 8 days and many emails sent with one or two replies for Google to resume my campaign. This hurter my new user subscription rate.
Real users feedback
I received tons of feedback. Some asking for additional features, some with difficulties in using the system and some thank me for the system!
Based on the feedback, I used some additional development as well as adjustments to the site layout. That costed me around $1000.
Some statistics
Below you can find some statistics about new users and how this number relates to certain events.
ContaCal users
Total cost and time so far: $9,025 – 2 months and 3 weeks
mas não tinha como resumir. Somente isso, eu já tinha mostrado como buscar uma hashtag no twitter usando php, agora, apenas para ficar registrado, 2 ERs aqui, para colocar link nos usuários e nas hashtags retornadas.
Afinal é um blog pessoal ne?!
Eu não sabia, mas a minha ex professora de Português acabou de postar uma foto que a Fátima(melhor professora de matemática do mundo), plantou em homenagem a minha sala da oitava série!
Sei que não tem nada a ver com os assuntos desse blog, mas é algo que eu não pude deixar de registrar por aqui.
Afinal, Sheila (Portugues), e Fátima (Matematica) fazem parte da base que tenho de conhecimento até hoje. Se não fosse pelo ótimo ensino que recebi dessas 2, eu não conseguiria muito do que já conquistei.
O nosso conhecido DropDown, porém abrindo com um click na LI, e fechando com um click ‘fora’.
Note que esse clique fora, quer dizer clicar em tudo oque não seja o menu. Logo, o elemento que temos de cara para isso, é o body. Convém lembrar, que os eventos em javascript propagam de filho para pai.
Sendo assim, um click no menu, dispara também um click no body.
Por isso, que uso ali, o método .stopPropagation(), pois qndo eu clicar no #menu li(para abrir o sub especifico), não quero que seja disparado o click do body(que fecha os subs).
Bom, é isso, o código está simples e é auto explicativo.
Again good speakers and interesting topics, but again nothing really new for those who follow product management, agile software development and startup related feeds.
I guess the good thing of attending BoS is not exactly the content, that you can get through the net. It’s the opportunity to meet in person lots of people from the software industry and exchange experiences and opinions.
Below are some tweets and references. And again from the number of tweets it’s easy to spot the talks that brought me more new stuff.
Paul Kenny
Introverts think in order to speak. Extroverts speak to help them think. @PaulKennyOL at #BoS2011.
Introversion and extroversion are preferences, not boxes we are stuck in. @PaulKennyOL at #BoS2011
My close suggestion: is there anything we can do to help you make a decision? Inspired by @PaulKennyOL at #BoS2011
A nice close RT @GaryAres: #bos2011 For everything you have heard so far is there any reason we cannot do business?
Use the NOs in a sales closing as a learning experience and ask: do you mind telling me why? @PaulKennyOL at #BoS2011.
When you ask, wait for the answer. @PaulKennyOL at #BoS2011.
@paulkennyol A lot of businesses failed from not asking than from asking #BoS2011
There’s much more to learn from qualified no than from unqualified yes. Ask questions to work on closing that deal! @PaulKennyOL #BoS2011
Asking aids the decision making process. @PaulKennyOL at #BoS2011.
#BoS2011 @PaulKennyOL Closing is the natural progression in the conversation… Feels weird if you do not ask for a decision…
Closing is what you do for a customer and not to a customer. @PaulKennyOL at #BoS2011.
@PaulKennyOL “Sales Constipation could happen because your don’t want to hear what they have to say about your product.” #BoS2011
You can’t have delighted customers without customers in the 1st place. Techies- close your deals!! @paulkennyol #bos2011
We need to stop “unteaching” our kids on how to be entrepreneurs. @PaulKennyOL at #BoS2011.
Kids know how to close. @PaulKennyOL at #BoS2011.
We don’t like closing. @PaulKennyOL at #BoS2011 Google “Alec Baldwin ABC” to see how not to do it.
@paulkennyOL You are a founder therefore you are a salesperson #BoS2011
“Your UX tells me how much you respect me.” – @kn0thing #BoS2011
How can you make the world suck less with software? @kn0thing at #BoS2011.
Alexis Ohanian (@kn0thing)
And to end the conference, chinese grab-and-go food. My chines fortune cookie says: “You income will increase.” with that typo! It’s not saying “your income…”. It says “you income…”. I wonder what that means.
I suggested @SGBlank, @Cagan, @JurgenAppelo and Roy Singham, ThoughtWorks founder and chairman, as speakers for next year.
Again good speakers and interesting topics, but again nothing really new for those who follow product management, agile software development and startup related feeds.
I guess the good thing of attending BoS is not exactly the content, that you can get through the net. It’s the opportunity to meet in person lots of people from the software industry and exchange experiences and opinions.
One thing I noticed is that there are many people attending BoS who are from the old software model industry, the one based on licenses and on-premise installation. Good to see they are at BoS looking to understand that software is moving into hosted based subscription model.
Below are some tweets and references. And again from the number of tweets it’s easy to spot the talks that brought me more new stuff.
Patrick McKenzie
Advice from @patio11 at #BoS2011: don’t make desktop software.
RT @PaulKennyOL: A culture of testing is better than a culture of ask the boss Patrick McKenzie #BoS2011
Everyone ran your software for the first time. 30-40% second time users is common. First impressions are critical. #BoS2011
The last 5 man-years of development isn’t visible in the first 3 seconds. (So A/B test the headline.)
A/B testing often tells us things we don’t want to hear, like the design isn’t helping.
Your 100-man-years of engineering isn’t as important as wordsmithing your site’s headline copy @patio11 #bos2011
Systematic A/B testing prints money. @patio11 at #BoS2011.
Most common outcome of A/B testing: no significant change. @patio11 at #BoS2011
Did hiding extraneous settings behind “advanced” link improve conversions? Yes, by 16% #BoS2011
Simplify to improve conversion rates. Make advanced config optional. @patio11 at #BoS2011
Shorter is probably better in a web sales funnel. @patio11 at #BoS2011
“There are 30 words of Japanese that have made it into English.. 15 of them are meteorological events that can kill you” ~ @patio11 #BoS2011
@patio11 #BoS2011 Engineers see marketing as witchcraft… LOL
Math and Science always work. @patio11 at #BoS2011
Most email is spam, and most spam is sent out by zombies (malware on compromised end-user computers). Wietse expects that the zombie problem will get worse before things improve, if ever. Without a tool like postscreen(8) that keeps the zombies away, Postfix would be spending most of its resources not receiving email.
The main challenge for postscreen(8) is to make an is-it-a-zombie decision based on a single measurement. This is necessary because many zombies try to fly under the radar and avoid spamming the same site repeatedly. Once postscreen(8) decides that a client is not-a-zombie, it whitelists the client temporarily to avoid further delays for legitimate mail.
Zombies have challenges too: they have only a limited amount of time to deliver spam before their IP address becomes blacklisted. To speed up spam deliveries, zombies make compromises in their SMTP protocol implementation. For example, they speak before their turn, or they ignore responses from SMTP servers and continue sending mail even when the server tells them to go away.
postscreen(8) uses a variety of measurements to recognize zombies. First, postscreen(8) determines if the remote SMTP client IP address is blacklisted. Second, postscreen(8) looks for protocol compromises that are made to speed up delivery. These are good indicators for making is-it-a-zombie decisions based on single measurements.
postscreen(8) does not inspect message content. Message content can vary from one delivery to the next, especially with clients that (also) send legitimate email. Content is not a good indicator for making is-it-a-zombie decisions based on single measurements, and that is the problem that postscreen(8) is focused on.
Today was day 1 of Business of Software 2011, aka, #BoS2011. This is my first time in this conference suggested to me by Dov Bigio (@dovb).
Good speakers and interesting topics, although nothing really new for those who follow product management, agile software development and startup related feeds.
Below are some tweets and references. From the number of tweets it’s easy to spot the talks that brought me something new.
Clayton Christensen
Look at Netflix and Quikster through a “job to be done” perspective.
Wise words to financiers – best way to measure profitabilty is not by ratios, but by tonnes of money on bottom line.
Do not need traditional marketing – need to understand the “job” completely to create pull rather than push.
You need to invest when you don’t need the results of the investment. Innovation is a long term investment.
When you aggregate feedback, you wind up with “one size fits none” products.
“The customer rarely buys what the company thinks it is selling them” – Peter Drucker quoted by Prof. Christensen
The unit of analysis is job, not customer. It’s not what cust. thinks he needs, it’s what job needs to be done.
@ClayChristensen explained that the customer is the wrong unit of analysis. It’s the job the customer needs to get done.
Christensen on competing: Pick a fight where the giant is motivated to flee rather than to fight you.
If you make something affordable and simple, the market will be much larger than your competitors.
Disruptive innovations have different measures of performance. (We tend to forget that).
When competing against non-consumption, you just have to be better than nothing.
Extension of the Innovators Dilemma – If we could build a company that would disrupt our company. How would we do it?
Focusing on profitable customers can blind you as to long term market changes @ClayChristensen’s Innovator’s Dilemma.
On sustaining innovation: “If you do everything we teach B.School, you’ll fail in the long term”
Most of these tips is useful for many application, but I’ll keep focus on Zabbix.
Use a Dedicated Server
Database is the main bottleneck from Zabbix. Try to use a Dedicated Server for MySQL and make sure that server has great resources (CPU, memory and fast disks).
This is the specs for an environment with 3000 values per second:
Dell PowerEdge R610
CPU: Intel Xeon L5520 2.27GHz (16 cores)
Memory: 24GB RAM
Disks: 6x SAS 10k with RAID10 by hardware
Create one file per table
innodb_file_per_table=1
By default, InnoDB creates all tables inside an unique datafile. With this option the new tables will have your own datafile. So after the change, You’ll need recreate the tables.
It opens some possibilities like put your tables in different filesystems and makes backup with more consistency.
Tristan – cPanel Staff – http://forums.cpanel.net/f43/innodb_file_per_table-converting-per-table-data-innodb-167942.html Issue with shared InnoDB /var/lib/mysql/ibdata1 storage
InnoDB tables currently store data and indexes into a shared tablespace (/var/lib/mysql/ibdata1). Due to the shared tablespace, data corruption for one InnoDB table can result in MySQL failing to start up on the entire machine. Repairing InnoDB corruption can be extremely difficult to perform and can result in data loss for tables that were not corrupted originally during that repair process.
Use partitioning tables and disable the Housekeeper
Housekeeper reduces the MySQL performance (see History Tables – Housekeeper). So a simple alternative is use the Partitioning native resource from MySQL.
Primeiro que concordo com Jared sobre a redundância da palavra should e como o resultado dos testes ficam mais claros quando rodamos no formato de documentação.
Abaixo dois exemplos (extraídos do post de Jared).
O primeiro usa should:
$ rspec spec/controllers/posts_controller_spec.rb --format documentation
PostsController
#new
when not logged in
should redirect to the sign in page
should display a message to sign in
Agora eliminando o should e usando o verbo na terceira pessoa:
$ rspec spec/controllers/posts_controller_spec.rb --format documentation
PostsController
#new
when not logged in
redirects to the sign in page
displays a message to sign in
A segunda razão é a questão gramatical e do sentido dos testes.
O verbo modal should, entre outros significados, pode ser considerado uma obrigação, mas é uma obrigação gentil, cuidadosa, sem muita firmeza.
When not logged in, should redirect to the sign in page.
Quando não logado, deveria redirecionar para a página de login.
Deveria ou deve? Para o teste passar tem que redirecionar para a página de login. Se não redirecionar, o teste falhará. Nessa caso, gramaticalmente, não é melhor usar o verbo modal must, que expressa uma obrigação impreterível?
Então, para ficar simples, uso o verbo na terceira pessoa, evito verbos modais repetitivos e deixo explícito o que o teste está assegurando.
When not logged in, redirects to the sign in page.
Quando não logado, redireciona para a tela de login.