Posts arquivos para outubro, 2011

30out2011

Lean startup validation experiment phase 3

(0) comentários

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

ContaCal users

Total cost and time so far: $9,025 – 2 months and 3 weeks

  • Phase 1 (idea funnel): $1,600 – 2 weeks
    • 5 product ideas pages in unbounce: $50
    • 5 Google AdWords campaign: $1,500
    • 5 Domain registration: $50
  • Phase 2 (MVP): $3,425 – 1 week
    • crowd sourced logo: $310
    • wordpress template: $35
    • wordpress template adjustments: $80
    • startup dev MVP development: $3,000
  • Phase 3 (Launch + campaign + feedback): $4,000 – 2 months
    • Campaign: $3,000 ($1,500/month)
    • Application and layout adjustments: $1,000

Stay tuned for the next steps

  • the search for a revenue stream!!!
28out2011

Expressão Regular, trocando nome de usuário e hash tag de retorno do Twitter, por link

(0) comentários

É.. o título ficou bem extenso..

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.

As ERs são bem simples:

        	Array(
        		'/@([\w]+)/',
        		'/(#[\w]+)/'
        	),

Então, lá vai o source completo:

<?php
    header('Content-type: text/html; charset=utf-8');  

    $hash = '%23locaweb';//apenas para ficar claro oque é 

	$search = 'http://search.twitter.com/search.json?q='.$hash.'&rpp=10';
	function curl_file($url, $timeout=0){
		$ch = curl_init();
		curl_setopt( $ch, CURLOPT_URL, $url );
		//curl_setopt ($ch, CURLOPT_HEADER, 1);
		curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
		curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, $timeout );
		$content = curl_exec( $ch );
		curl_close( $ch );

		return $content;
	}

	$json = curl_file( $search );
	$data = json_decode( $json );

    $li = '<ul>'.PHP_EOL;
    foreach( $data->results AS $post ){
        $li .= "\t".'<li><img src="'.$post->profile_image_url.'" alt="'.$post->from_user.'" title="'.$post->from_user.'" /> ';

        $li .= preg_replace(
        	Array(
        		'/@([\w]+)/',
        		'/(#[\w]+)/'
        	),
        	Array(
        		'<a href="http://twitter.com/#!/$1" title="$1">@$1</a>',
        		'<a href="http://twitter.com/#!/search/$1" title="$1">$1</a>'
        	),
        	$post->text
        );

        $li .= '</li>'.PHP_EOL;
    }
    echo $li,'</ul>';

é isso ai.
Se vc usar, ou ler este post, não deixe de comentar! Me ajuda a produzir mais conteúdos relevantes e interessantes.

E aproveitando a deixa do Twitter, me siga! @tiu_uiLL

Demonstração Online

é isso ai, vlw!

28out2011

Orgulho de ter estudado nessa escola! – Kyrillos

(0) comentários

Caras!!

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.

Obrigado professoras !!!

26out2011

Menu DropDown abrindo com click, e fechando ao clicar fora

(0) comentários

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.

<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
jQuery(document).ready(function( $ ){
	var uls = $('#menu ul');
	uls.hide();

	$('#menu > li').click(function( e ){
		e.stopPropagation();
		uls.hide();
		$( this ).find('ul').show();
	});
	$('#menu ul').click(function( e ){
		e.stopPropagation();
	});
	$('body').click(function(){
		uls.hide();
	});
});
</script>
<style type="text/css">
* { list-style: none; }
html, body { height: 100%; }
body { font: 12px/12px Tahoma, sans-serif; color: #666; }
#main { min-height: 100%; }
#menu { height: 30px; }
#menu li {
	position: relative;
	float: left;
	padding: 0 10px;
	height: 30px;
	line-height: 30px;
	border: 1px solid #666;
}
#menu ul {
	position: absolute;
	top: 30px;
	left: -1px;
	border: 1px solid #666;
	background: #fff;
}
#menu li li {
	width: 200px;
	border: none;
}
</style>
</head>
<body>
<div id="main">
	<ul id="menu">
		<li>Abrir sub 1
			<ul>
				<li>Item 1</li>
				<li>Item 2</li>
				<li>Item 3</li>
				<li>Item 4</li>
			</ul>
		</li>
		<li>Abrir sub 2
			<ul>
				<li>Item 1</li>
				<li>Item 2</li>
				<li>Item 3</li>
			</ul>
		</li>
	</ul><!-- /menu -->
</div><!-- /main -->
</body>
</html>

Demonstração

é isso ai. Comente se te ajudou, ou se tiver alguma dúvida/sugestão.

26out2011

#BoS2011 day 3 notes

(0) comentários

Today was day 3 of Business of Software 2011, aka, #BoS2011. Checkout my notes on day 1 and day 2 if you haven’t done that yet.

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. :-P

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

You can find more at Product Principles blog: The Art of Asking

Paul Kenny (@PaulKennyOL)

Paul Kenny (@PaulKennyOL)

David Cancel

  • A customer suggests you a feature. You reply “great suggestion, will cost X”. The customer says “oh, ok. I don’t need it”. @dcancel #BoS2011
  • Average conversion rate in the us is 2% (for Elephants or iPods) via @google #bos2011 via @dcancel (via @johnprendergast)
  • @ProductPrincipl you are amazingly fast! :-) #BoS2011
  • It’s not about the data. It’s about the learning so you can make your customers happier. @dcancel at #BoS2011.
  • @dcancel presenting churn, NPS and cohort at #BoS2011.
  • Shared metrics == clear feedback loops #bos2011 via @dcancel
  • “Go do it” “Do it faster” “Do both” #jfdi @dcancel at #BoS2011
  • Optimize your business for learning, not data. #bos2011 via @dcancel
  • “Data alone is useless” – thank God someone said it. #BoS2011
  • We have an strategic plan. It’s *doing* things. #JFDI. @dcancel at #BoS2011.
  • In God we trust; for the rest bring data. @dcancel at #BoS2011.

You can find more at Product Principles blog: Creating a Data-driven Business

Dave Cancel (@dcancel)

Dave Cancel (@dcancel)

Alexis Ohanian

  • “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)

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.

Now flying back home.

See you in #BoS2012.

25out2011

#BoS2011 day 2 notes

(0) comentários

Today was day 2 of Business of Software 2011, aka, #BoS2011. Checkout my notes on day 1 if you haven’t done that yet.

Beautiful day in Boston Seaport area

Beautiful day in Boston Seaport area

Full room at #BoS2011

Full room at #BoS2011

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. :-P

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

You can find more at Product Principles blog: Engineering Your Marketing Outcomes

Patrick McKenzie (@patio11)

Patrick McKenzie (@patio11)

Laura Fitton

  • To find time for social media, find a problem you’re already solving another way and figure out how to solve it via social media. #BoS2011
  • “You don’t get a prize for getting the most followers or friends. You get a prize for growing the business.” ~@pistachio #BoS2011
  • “If you’re not blogging about your product or service you’re throwing money away” @pistachio at #BoS2011
  • Cool – the underwear gnomes cartoon. youtu.be/TBiSI6OdqvA #BoS2011
  • Get found. Convert. Measure what matters. @pistachio at #BoS2011.
  • And repeat! RT @JocaTorres: Listen. Learn. Care. Serve. @pistachio at #BoS2011.
  • Listen. Learn. Care. Serve. @pistachio at #BoS2011.
  • Don’t tweet the title. Extract useful info from the article and then tweet. @pistachio at #BoS2011.
  • We are moving from “one to many” to “any to many”. Anyone can be the root of a big message. ~@pistachio #BoS2011
  • Two word secret of social media – Be useful. @pistachio at #BoS2011

You can find more at Product Principles blog: Business of Social – What B2B and B2C Software Companies Need to Know About Social Media

Laura Fitton (@pistachio)

Laura Fitton (@pistachio)

Josh Linkner

  • RT @theospears: Brainstorming while pretending to be someone else frees you up to be creative ~@JoshLinker #BoS2011
  • RoleStorming as an option to BrainStorming. @joshlinkner at #BoS2011.
  • “Watch out for group-think. Group-think is that poisonous thinking that waters down your best ideas.” via @joshlinkner at #BoS2011
  • Mistakes are the portals to discovery ~@joshlinkner #BoS2011
  • Playing it safe is the riskier movement possible. From failure you learn. From success not so much. @joshlinkner at #BoS2011.
  • The five whys – Louis CK – hilarious youtu.be/4u2ZsoYWwJA #BoS2011
  • Because things that aren’t just can’t be. Ask “why?” to see where you can get. @joshlinkner at #BoS2011.
  • Being creative? RT @FastFedora: Why stop at standing desks? Practicing standing conferences. Join me at the back of the room. #BoS2011
  • Why? What if? Why not? – 3 qns to foster creativity #Bos2011
  • Metaphor for business shifts Symphony orchestra with conductor => Jazz where NOT taking risks is frowned upon. #BoS2011
  • Creativity is 85% learned behavior. @joshlinkner at #BoS2011.
  • Great metaphor for decline in creativity in today’s society by @joshlinkner at #BoS2011 – Lego toys. From fun to following instructions
  • I disagree that there’s a creativity crisis. Difficult times foster creativity, hence the huge startup and entrepeneurial movement. #BoS2011
  • When your head is up you notice things. @JoshLinkner at #BoS2011.
  • Josh Linkner livestreaming at #BoS2011 Encyclopedia Britannica was Google for 219 years before Google bit.ly/eQRD5g

You can find more at Product Principles blog: Unleashing Creativity

Josh Linkner (@JoshLinkner)

Josh Linkner (@JoshLinkner)

Checkout this funny video about asking why. I purposely set the video to start at 6m20s so you can jump directly to the why joke:

Rory Sutherland

  • The “IBM at terminal 5″ video presented by Rory Sutherland at #BoS2011: http://www.youtube.com/watch?v=_F1NVxmsa9I
  • “All models are wrong, but some of them are useful.” #bos2011
  • R. Sutherland “In most cases we act and then just post-rationalize our decisions” #BoS2011
  • Rory Sutherland (wonderful speaker): “If your restaurant has the slight smell of sewage around it–don’t try to improve the food.” #bos2011
  • “Absorbing information contradicting our prejudices registers in the same part of the brain where we feel pain” via @rorysutherland #BoS2011
  • RT @dharmesh @rorysutherland “people aren’t aware of their own heuristics. They will derive to rationalize they’re maximizers. ” #BoS2011
  • Rory Sutherland explains the importance of communicating with the “lizard’s brain” at #BoS2011
  • Videoconferencing shd have been positioned differently. instead of poor man’s airplane it she have been “rich man’s telephone call” #Bos2011
  • Don’t end up as the cheap inferior substitute for something else. #BoS2011
  • Our perception of everything (including value), is “relativistic” (sic) and contextual. #Bos2011 Rory Sutherland
  • R. Sutherland “people aren’t aware of their own heuristics.” #BoS2011 they will derive to rationalize they’re maximizers
  • Problem with market research: people don’t behave as usual in a market research. #BoS2011
  • The default option is “do nothing”. Rory Sutherland at #BoS2011.
  • People look for things that satisfices than maximizes. If not, why people go to McDonalds? Rory Sutherland at #BoS2011.
  • The here and now really matters to our lizard brains. Rory Sutherland at #BoS2011.
  • Praxeology – Austrian term for human behavior and decision-making. @RorySutherland at #BoS2011
  • Break tasks into sub tasks to increase probability of completion. #chunking explained by Rory Sutherland at #BoS2011.
  • “What’s bad about waiting for a train isn’t waiting. It’s uncertainty.” #BoS2011
  • “Creativity is policed by rationality, but rationality goes unpoliced.” Rory Sutherland is a trip. #BoS2011
  • If you think creativity is expensive, you should try logic. #BoS2011

You can find more at Product Principles blog: Praxeology – Lessons from a Lost Science

Rory Sutherland (@RorySutherland)

Rory Sutherland (@RorySutherland)

Checkout the IBM’s Wimbledon Lotus T5 campaign presented by Rory at the end of his talk:

Lightning Talks

  • Lightning Talks really exceptional. Well done @coreyreid @kjtreier @justingoeres @patrickfoley @tylerrooney #BoS2011
  • Congrats @JustinGoeres! “@JocaTorres: Justin Goeres won the Lightning Talk contest at #BoS2011.

Justin Goeres (@JustinGoeres)

Justin Goeres (@JustinGoeres)

Michael McDerment

  • “I think you should be developing benefits, not features.” @mikemcderment at #BoS2011.
  • Pristine code without customers is a pyrrhic victory. @MikeMcDerment #BoS2011 #prodmgmt
  • Name tiers based on customer type? (funny/cute names vs descriptive) Lost a million dollars. Clever names won. @mikemcderment #BoS2011
  • Video convert 20% LESS than screenshots as demo tools. @mikemcderment at #BoS2011.
  • Slide after slid of exponential product growth curves. Lesson: launch early. #BoS2011
  • I guess you meant 2004? RT @dharmesh: Freshbooks has grown to over 3.5 million users since starting in 2044. #BoS2011

You can find more at Product Principles blog: A Litany of Product Management Mistakes at FreshBooks

Michael McDerment (@MikeMcDerment)

Michael McDerment (@MikeMcDerment)

Peldi interviews John Nese from Soda Pop Stop

First, you need to watch this video:

Obsessives: Soda Pop from CHOW.com on Vimeo.

  • If you quit, you defeat yourself! John Nese #BoS2011
  • It’s very easy to make decisions when you are broke. John Nese at #BoS2011.
  • John Neese – a man who loves what he does is inspiring at #bos2011 – please support sodapopstop.com
  • John Nese is a fantastic example of gentle competition and democratization of decision on products (resisting statu quo) #BoS2011 #hatsoff
  • I’m sitting at a software conference listening to John Nese talking about craft sodas sodapopstop.com @bosconference #BoS2011 #awesome
  • RT @admarsenal #bos2011 @Balsmiq to John Nese at sodapopstop.com. Question: What kind of metrics do you collect? Answer: What kind of what?
  • Peldi: “You’re the CEO”, John Nese: “So, that’s just three letters!” #BoS2011
  • We should not be creating jobs. We should be creating wealth. John Nese at #BoS2011.
  • +1 RT @AriH: Conversation with the guy from the Soda Pop Shop is putting a smile on my face. #BoS2011
  • John Nees thinks people need to pay their dues – no starting at the top, you need to understand it through experience at all levels #BoS2011
  • Don’t be afraid to fail cos you are going to do well – John Nese @ SodaPopStop #bos2011
  • John Nese summarizes Cincinnatus bit.ly/vXbUSY “You have to do what you have to do” #BoS2011
  • I never work. I go there everyday and play! John Nese at #BoS2011
  • RT @mitmads Thanks John Nese for your advice “You own your shelf space” #BoS2011
  • I love the contagious enthusiasm of this guy when he talks about artisanal soda pops. Great to see people who love life. #bos2011
  • RT @MichaelNozbe Fantastic testimonial by John Nese of SodaPopStop. Amazing story :-) #BoS2011 instagr.am/p/RchP8/
  • The biz world needs more people like John Nees. #BoS2011

You can find more at Product Principles blog: An Interview with John Nese

Peldi and John Nese

Peldi and John Nese

25out2011

Postfix Postscreen Howto

por em Sem categoria
(0) comentários

The basic idea behind postscreen(8)

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.

http://www.postfix.org/POSTSCREEN_README.html

 

 

 

Permalink | Leave a comment  »

25out2011

#BoS2011 day 1 notes

(0) comentários

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. :-P

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”

You can find more at Product Principles blog: Highlights: Clay Christensen at Business of Software 2011

Clayton Christensen (@ClayChristensen)

Clayton Christensen (@ClayChristensen)

Jason Cohen

  • @asmartbear talks about honesty in business at #BoS2011. Does honesty makes more money for businesses? Short answer: yes!
  • Great talk on genuine honesty by @asmartbear #BoS2011
  • In a biz interaction, ask yourself, “why did you lie?” Is small immediate benefit offset by larger loss of trust. #BoS2011

You can find more at Product Principles blog: Naked Business – How Honesty Makes Money

Jason Cohen (@asmartbear)

Jason Cohen (@asmartbear)

Honesty

Honesty

Alex Osterwalder

  • Having fun filling out a business model canvas at Alex Osterwalder’s talk at #BoS2011
  • The right business model is the difference between success and #failure. #bos2011
  • Explore and create new business models. You may design one that suits your business better- Alex Osterwalder #bos2011

Alex Osterwalder (@business_design)

Alex Osterwalder (@business_design)

Business Model Canvas

Business Model Canvas

Dharmesh Shah

  • #BoS2011 is an interesting conference for companies willing to make the move from license model to the online subscription model.
  • I have never ever met a successful software company where the early team didn’t work their asses off. Not once.
  • “We are not a family. We are a team.” From Netflix culture.
  • New price model: “cheapium”!
  • You need humans to sell when product is complex, market is new or price is somewhat high.
  • That’s the future of software business model: RT @MarkDalgarno If you’re not on a subscription model now, get on it!
  • CHI – Customer Happiness Index – is better than churn because it measures customer’s success.
  • Negative churn rates = more upgrades than cancelation.
  • Types of churn: customer, revenue, discretionary and involuntary.

You can find more at Product Principles blog: Building Bad-ass Software Businesses

Dharmesh Shah (@dharmesh)

Dharmesh Shah (@dharmesh)

Jeff Lawson

  • @jeffiel just lightly touched the consumer SaaS biz model topic. Basicaly: ads. #BoS2011.
  • I wonder if someone will talk about software for consumers, specially pricing for consumer SaaS. #BoS2011
  • The 3 “mating calls” of SaaS companies: “(1) tour, (2) pricing, (3) sign up and get going” #BoS2011

You can find more at Product Principles blog: Pricing that Hot Saas

Jeff Lawson (@jeffiel)

Jeff Lawson (@jeffiel)

Tobias Lütke

  • Don’t start a company with the purpose of making money. @tobi at #BoS2011.
  • Agree 100% RT @stephenmedawar: Success doesn’t make you right – @tobi #bos2011
  • Our responsibility is to build companies that don’t embarrass us in 100yrs time. #bos2011

Tobias Lütke (@tobi)

Tobias Lütke (@tobi)

24out2011

MySQL performance tips for Zabbix

(0) comentários

Most of these tips is useful for many application, but I’ll keep focus on Zabbix.

  1. 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

  2. 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.

    Peter Zaitsevhttp://www.mysqlperformanceblog.com/2007/11/01/innodb-performance-optimization-basics/
    innodb_file_per_table – If you do not have too many tables use this option, so you will not have uncontrolled innodb main tablespace growth which you can’t reclaim.

    Tristan – cPanel Staffhttp://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.

    Some discussions about this:
    http://dom.as/2009/05/21/innodb-tablespace/
    http://code.openark.org/blog/mysql/reasons-to-use-innodb_file_per_table

    Personally I lost all my data because the ibdata file crashed (all data inside one file).

    Ref.: http://dev.mysql.com/doc/refman/5.5/en/innodb-multiple-tablespaces.html

  3. Percona vs Community Edition

    Percona Server is a modified version from MySQL Community Edition.

    Some benchmarks show us about Percona performance advantages:
    http://www.percona.com/software/percona-server/benchmarks/

  4. 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.

    In this blog there is another article about it: Partitioning Tables

  5. Use tmpfs filesystem for Temporary Files

    Using memory instead of local disks will allow a much faster creation of temporary tables on MySQL.

    First, create the mountpoint:

    mkdir /tmp/mysqltmp

    Add this line in your /etc/fstab:

    tmpfs /tmp/mysqltmp tmpfs rw,uid=mysql,gid=mysql,size=1G,nr_inodes=10k,mode=0700 0 0

    Make sure to adjust the size parameter. For reference, use 08~10% from physical memory.

    Finally, you need to define this path in /etc/my.cnf and restart MySQL:

    tmpdir = /tmp/mysqltmp

  6. Set your Buffer Pool properly

    This is one of most important parameters in /etc/my.cnf. It defines how much memory InnoDB can use.

    I recommend something like 70~80% from physical memory:

    innodb_buffer_pool_size=14G

    Ref.: http://www.mysqlperformanceblog.com/2007/11/03/choosing-innodb_buffer_pool_size/

It’s the /etc/my.cnf sample for a server with 24GB RAM:

[mysqld]
# paths
datadir                         = /var/lib/mysql/data
tmpdir                          = /tmp/mysqltmp

# network
connect_timeout                 = 60
wait_timeout                    = 28800
max_connections                 = 2048
max_allowed_packet              = 64M
max_connect_errors              = 1000

# limits
tmp_table_size                  = 512M
max_heap_table_size             = 256M
table_cache                     = 512

# logs
log_error                       = /var/log/mysql/mysql-error.log
slow_query_log_file             = /var/log/mysql/mysql-slow.log
slow_query_log                  = 1
long_query_time                 = 20

# innodb
innodb_data_home_dir            = /var/lib/mysql/data
innodb_data_file_path           = ibdata1:128M;ibdata2:128M:autoextend:max:4096M
innodb_file_per_table           = 1
innodb_status_file              = 1
innodb_additional_mem_pool_size = 128M
innodb_buffer_pool_size         = 14G
innodb_flush_method             = O_DIRECT
innodb_io_capacity              = 2000
innodb_flush_log_at_trx_commit  = 2
innodb_support_xa               = 0
innodb_log_file_size            = 512M
innodb_log_buffer_size          = 128M

# experimental
innodb_stats_update_need_lock   = 0

# other stuff
event_scheduler                 = 1
query_cache_type                = 0

If you need, there are some references about MySQL parameters:
http://dev.mysql.com/doc/refman/5.5/en/innodb-parameters.html
http://www.mysqlperformanceblog.com/

23out2011

Porque não gosto de usar “should” nos testes de RSpec

(0) comentários

Desde que li o post RSpec Best Practices de Jared Carroll (post o qual David Chelimsky prefere citar como Good Guidelines) eu prefiro não mais utilizar o termo should para todos os exemplos (testes) de RSpec.

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.


Switch to our mobile site