There is a fairly accepted rule that 1% of a site’s users will create content, 10% will interact with it while 100% consumes the content. That means that 90% of your users will probably be logged out. Consuming users can’t upgrade to Interacting users without having to create a profile. Registering has become far easier with the introduction of OpenID and OAuth connections offered by Twitter and Facebook, but it still is a big step.
At Mobypicture we are experimenting with ways where people leave a comment first and are then guided through the login or registration process, placing the comment afterwards. This way Consuming users can say what they want to say, before getting distracted by login screens.
Fred Wilson, VC and principal of Union Square Ventures, goes a step further and proposes more interaction for logged out users by giving them “phantom profiles“, storing activity against their cookies and building user profiles on logged out users. Read the rest of ‘Don't forget your logged out users’ »
I’m reading a lot about Continuous Integration and Test-Driven Development lately, to work out the best ways to develop code as agile and with as much flexibility for deployment as possible. I wrote a small post earlier on Continuous Integration in PHP about how to build a CI server with Jenkins. In this post I would like to go deeper into the Why of Continuous Integration and Test-Driven Development.
In the early stage of Sugababes.nl we worked live on our production codebase, changing and testing things while users were visiting the website. That provided a lot of trouble and was soon discarded. Ever since we (my team at Sugababes first and Mobypicture later) work from SVN on development environments, commit code, try to test it in a staging environment, but most of the time we just deploy. That is, export parts of the codebase to our live environment. That is not an ideal situation and proves to be very catchy for bugs that could have been prevented. Read the rest of ‘Things I learned about Deployment, Test Driven Development and Continuous Integration’ »
Backtype has built a powerful system to analyze realtime social data. They help you with insights about your social influence on Twitter and YCombinator’s Hacker News by analyzing tweets.The following graph shows the (not so impressive) stats for my blog:
Because Backtype is processing all tweets for URLs to calculate your influence, they have to process a massive amount of data from the Twitter Firehose. The Firehose can go as fast as 7000 tweets per minute during New Years Eve in Tokyo. That’s a massive 117 tweets per second!
The big problem with realtime is that you can not or not easily process it in batches, because the data keeps coming. When you batch this amount of data you have to be able to process the data faster than realtime or create an always growing backlog. During the World Cup finals last year when The Netherlands was playing against Spain, we (Mobypicture’s MobyNow) had a small flaw in our code processing the tweets with #ned and #wk2010. During roughly 90 minutes we had built a backlog of 18 hours worth of processing. Because people kept using #ned and #wk2010 it was almost impossible to remove the backlog, we had to go many times faster than realtime to remove it. While displaying realtime tweets you don’t want to be more then a couple of seconds behind. With batched processing this process of removing the backlog is a fight you are fighting every time you process a batch.
Backlog also recognized that batched processing wasn’t the way to go for their analytics. So they recently developed a new system for doing realtime processing called Storm to replace their old system of queues and workers: Read the rest of ‘Storm: The Hadoop of Realtime Processing’ »
Yesterday was the last MobileMonday Amsterdam, an inspiring bi-monthly event with great speakers and inspiring visitors. I had a lengthy talk with Martijn Rijntjes about entrepreneurship and he introduced me to something I had never heard of: The Lifestyle Entrepreneur.
Startups are the things all the cool kids do, Martijn told me, but he never felt it was the right fit for him. Martijn likes to travel and see the world, not work his ass off, give up his social life, all in favor of his internet startup. He almost felt guilty he had not the same dreams and goals a lot of his friends have. Until he read an article by Corbett Barr about Startup vs Lifestyle Business.
A startup business has the primary responsibility to grow as big and successful as possible, whatever the impact on the lives of the entrepreneurs. Founders of a startup are competing for success, fame and glory, although some of them, including me, are also in it because they really like the process. After hitting the jackpot, a lot of them jump back into the startup life to repeat their success. Once your lucky twice your good, Sarah Lacy wrote and I believe in this statement. Running a startup is a lifestyle. Read the rest of ‘Introducing the lifestyle entrepreneur’ »
When you need to display an unknown amount of text in a constrained space you may need to somehow hide text that doesn’t fit. One way is to use overflow:hidden to quite brutally hide it. Doing this works, and it works cross-browser, but it can be difficult for the user to realise that text has been hidden since there is no visual indication of it. A property from CSS3 that can help improve the situation is text-overflow.
via Clipping text with CSS3 text-overflow by 456 Berea Street
text-overflow is actually a pretty awesome CSS3 property. It does exactly what we try to do in programming languages all the time when we have titles that can be too long for their space and you need to add ‘…’ after an x amount of characters. But text-overflow does it in CSS. It works in Safari, Chrome, Opera, and even in Internet Explorer 7+, but it doesn’t work in Firefox until Firefox 6. (Firefox 6? Yes, Firefox 6 will be released somewhere in August). No worries, Firefox 6- will respect the overflow: hidden property and will just hide the rest of the text. Read the rest of ‘Clipping text with '…' using CSS3 text-overflow’ »
It is an extremely cheesy title of course, but Oprah is a fantastic brand we can all learn a lot from. The tips are not very different from the tips we would give to companies for a better business strategy. From diving into different verticals to transparent communication and caring about your customers (fans).
After 25 years her last show aired with 18 million viewers. A long line of celebrities came to say goodbye in her last episodes. Few other personalities have ever received such fanfare for an exit, which got Inc. thinking: how do you build a brand like Oprah?
Read the rest of ‘7 tips businesses can learn from Oprah’ »
Very interesting read on the Monitis Blog about picking the right NoSQL tool. They dive into what it is, what’s possibly wrong with RDBMS, describe the different categories of NoSQL and the pros and cons of the different types.
Most people just see one big pile of NoSQL databases, while there are quite some differences. You couldn’t use a Key-Value store when you need a Graph database for example, while Relational database systems are all quite compatible.
Montis describes the following categories:
1. Key-values Stores
The main idea here is using a hash table where there is a unique key and a pointer to a particular item of data. The Key/value model is the simplest and easiest to implement. But it is inefficient when you are only interested in querying or updating part of a value, among other disadvantages.
Examples: Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB, Amazon SimpleDB, Riak Read the rest of ‘The four categories of NoSQL databases’ »
Did you know that session_start() is a blocking call in PHP? I didn’t and it has some importance to know:
Now I didn’t know it but is seems that php’s session handling is blocking on a per request basis. Kinda makes sense if you think about it, that if two requests simultaneously try and change a session variable then you would get constancy issues. So php handles this by making session_start a blocking action and will wait for any other request to either finish or close the session using session_write_close.
So if you have a web application or website with a lot of concurrent calls for the same user having the same session, you could run into trouble. On of the easiest fixes is to only start your session when you need it and close it as soon as possible if you are done with the session.
I never thought about session_start() being blocking and I guess neither did you, but it could have serious performance implications when you are for example serving images built by PHP. Something to consider in your next project!
via session_start blocking in php | Tomrawciffe.co.uk