2010 ECUG Beijing debriefing

by Joseph

On October 16th and 17th three members of The NetCircle team hitchhiked their way to Beijing to attend the 2010 Effective Cloud User Group (formerly known as Erlang China User Group) conference. The conference brought in some heavy hitters in the Chinese software community to give talks that touched on a range of topics related to effectively scaling software applications and services for large numbers of users. There were several presentations from speakers working at well-known companies like Taobao, Shanda and MochiMedia, as well as our own software wizard, Alvaro Videla.

The range of topics included technical issues with deploying WebOSs, concurrency problems, Erlang game development, distributed storage and solving the C1000K problem (the C10K problem is so yesterday) from a hardware perspective. Bob Ippolito discussed how Erlang services are deployed at MochiWeb and some of the tools they use to develop, test and deploy those services.

Here is a quick recap of all the talks that went down.

Continue reading →

Erlang at the Netcircle

by Boby

Here is a small blog post to celebrate the company presence at the ECUG Con 2010 (ECUG stands Effective Cloud User Group, former Erlang China User Group) in Beijing this week end (16th and 17th of October 2010). Our most famous coworker, Alvaro Videla, will be giving a talk about scaling web application using RabbitMQ along with fellow erlangists from China but also Bob Ippolito, CTO of MochiMedia.

Stay put for the after-con report, meanwhile I will present quickly how we are using Erlang in our projects. Erlang is a functional language with built-in support for concurrency, distribution, messaging and fault tolerance; it was developed by Ericsson to run on telecommunication systems. Its nature permits to build robust, scalable applications that we can use to power our projects.

Here is a list of the tools we are using:

* RabbitMQ: The famous messaging system helped us to remove a lot of heavy processing in the background and increase the response time of our sites. For example, signing up is now a matter of milliseconds for our users as IP logging, statistics update, cache clearing is done asynchronously. But we also use it for thumbnails generation, email notifications, error logging… We are running a simple setup with 2 servers and processing 27 millions messages per day for the moment. The current load is very low so we could easily increase the queue penetration in our system.

* Ejabberd: This is an instant messaging server using the XMPP protocol. We use it to track if the user is online or not and as a in-browser chat. We also start building a real-time notification platform on top of it; so that we could notify the user in his browser window if one of his friends is logged in or if the user receives a poke/message. The current setup is one server keeping connection with up to 300 concurrent users and we are doing capacity testing to reach 30,000 sessions.

* Riak: For one of our project, we are storing around 200 millions messages send among users. We are storing currently them on 4 servers using master-slave setup and basic partitioning. To alleviate the situation, we want to use a distributed key-value database, as in Riak. We should then be able to grow easily and store enormous amount of data without having to worry. Also over the years, we realized that denormalization and partitioning are critical in improving our SQL databases, so why not give a try to a NoSQL database; the important thing is to understand the data and how it is used. One of our colleagues, Joseph Lambert, worked several weeks on a indexing solution for Riak to accelerate items retrieval based on some criteria, which worked much better than to rely on Map/Reduce. Promising stuff until Riak Search was finally released last week with indexing, Lucene syntax and what not. Well at least we had to play with Riak internals and have a better understanding of it. The next step will be finalizing the prototype and deploy it for live testing. Exciting :)

* Tsung: I nearly forgot this one but this is also important. The overall goal for us of using Erlang is to build performant systems able to respond to the quick users growth. Still this doesn’t make so much sense if we are not able to prove it and this is where Tsung intervenes. Tsung is a load testing tool that allows to generate different kind of load like MySQL queries, HTTP requests, XMPP connections… It works with scenario that can simulate user traffic and is distributed to simulate heavy loads. We use it to stress tests our system; for example we did some experiments for our migration from MyISAM to XtraDB on our main MySQL database so that we could see what will be the real impact in production and if the migration was worth with our kind of traffic (note: it is!).

Finally we are also looking into improving our skills in Erlang to understand better how those tools are working but also at some point build our own services more business orientated in a scalable way.

Register now: Shanghai Scrum Forum – 现在注册: 上海Scrum大会

by Nils

Opportunities And Challenges Of Going Agile

With growing interest in Agile software development, more and more companies in China are facing questions and challenges implementing Scrum. At Shanghai Scrum Forum, experienced developers and managers will share tips and tricks on how to get started with Scrum, improve workflows and deliver software that makes clients happy.

Presentations will cover topics like:

- How little can we do and still call it Scrum? (Alan Atlas)
- From development Agility to business Agility with Scrum and Opportunity Engineering (Julien Mazloum)
- Product Owners: Five mistakes that make your project #fail (Nils Weisensee)
- Why Scrum Master-ing? (Xu Yi)
- Getting to Done (Vernon Stinebaker)
- Three years of Scrum at The NetCircle

Shanghai Scrum Forum is free and open to everyone interested in Agile software development. Register now by sending an email with your name, company and position to forum_registration@scrumshanghai.com – deadline for registrations is October 10th.
For more information, please check our website at www.scrumshanghai.com.

Date: Sunday, October 17
Location:
The NetCircle
Loft C 7-14, E-Warehouse Creative Center
751 Yi Chang Lu (Putuo district)
Contact:
Samuel Pierquin (sam@thenetcircle.com, +86-21-51752778)
Julien Mazloum (julien.mazloum@outsofting.com, +86-10-87748156)

This event is sponsored by OutSofting, The NetCircle and the ScrumAlliance.

Presentation Schedule

- 10am Introduction, 10 minutes
- 10:15am Keynote with Alan Atlas, 45 minutes + Q&A
- 11:30am Presentations (3 presentations in parallel, each going 30 minutes)
- 12:15pm Lunch
- 1:15pm Presentations (3 presentations in parallel, each going 30 minutes)
- 2:00pm Presentations (3 presentations in parallel, each going 30 minutes)
- 3:00pm-5:30 Open Space
- 5:45pm Closing Speech (10 minutes)

走向敏捷的机遇和挑战

随着对敏捷软件开发有兴趣的人越来越多,更多在中国的公司将面临实施Scrum的问题和挑战。在上海Scrum大会中,有经验的开发者和管理者将会分享开展Scrum、改进工作流程和交付客户满意软件的技巧和诀窍。

演讲主题包含:

- How little can we do and still call it Scrum? (Alan Atlas)
- From development Agility to business Agility with Scrum and Opportunity Engineering (Julien Mazloum)
- Product Owners: Five mistakes that make your project #fail (Nils Weisensee)
- Why Scrum Master-ing? (Xu Yi)
- Getting to Done (Vernon Stinebaker)
- Three years of Scrum at The NetCircle

上海Scrum大会将免费对所有对敏捷软件开发有兴趣的人开放。现在就将你的名字、公司和职位发送email到forum_registration@scrumshanghai.com!注册截止日期是10月10日!更多信息,请参见我们的网站www.scrumshanghai.com。.

日期: 10月17日(周日)
地点:
The NetCircle
普陀区宜昌路751号
Loft C 7-14, E-Warehouse Creative Center
联系人:
Samuel Pierquin (sam@thenetcircle.com, +86-21-51752778)
Julien Mazloum (julien.mazloum@outsofting.com, +86-10-87748156)

此次活动由 OutSoftingThe NetCircleScrumAlliance 赞助。

演讲日程安排

- 10:00am 开场, 10分钟
- 10:15am 主题演讲, 45分钟+ Q&A
- 11:30am 分场演讲(3个并行演讲,每个30分钟)
- 12:15pm Lunch
- 1:15pm 分场演讲(3个并行演讲,每个30分钟)
- 2:00pm 分场演讲(3个并行演讲,每个30分钟)
- 3:00pm-5:30 开放空间讨论
- 5:45pm 结束语(10分钟)

Posted in Events, Scrum 0

About a Scrum Master

by Thomas

Having a good understanding of a job’s definition is essential for good execution. This is especially true for the role of the scrum master in the scrum framework. The scrum master has a special role in the scrum team and thus it is a very interesting and challenging one. Although scrum defines the role of the scrum master, it still leaves many questions open about that mystery role.

1 Different Scrum Master Styles

Out of experience, and also from discussions that we had with other scrum team members, we found out that many teams understand the role of the scrum master in several different ways. Interestingly enough, some understandings are even in contradiction with each other, especially when it comes to the question about who is the leader of the team. There even might not be a leader of the team at all. In the following sections I will introduce three scrum master styles.

1.1 Facilitator

As a facilitator, the scrum master helps the team to make decisions and ensures team communication. The SM should be a mirror to the team. This means that the scrum master will point out problems, but not solve them. This is the task of the whole team. The scrum master neither makes decisions nor dominates team communication. However, the scrum master is allowed to step up, after the team asked them to take action.

The scrum master is not the leader of the team, hence in the same position like the other team members. The tasks of the scrum master include to remove any impediments from the team, making sure that the team can focus on development and on delivering the product. The scrum master should teach scrum to the scrum team, making sure all involved persons are understanding the rules.

1.2 Manager

In some teams the scrum master is also the manager of the team members. This can lead to several difficulties. The scrum master will probably dominate the team in both communication and making decisions. No matter whether being dominant on purpose or just by being the manager, it might cause the team members to feel less and less responsible for the whole project. The manager then would have command and control. However, this is in contradiction to the team-centric scrum philosophy.

1.3 Servant Leader

Instead of being a controlling person, the scrum master is a servant leader to the team. In this role, the SM leads the team, but in a different way than a manager. Servant leadership is about being patient, respectful and selfless towards team members. A servant leader would point out things that are not working, without taking responsibility away from the team. Furthermore, a servant leader stays in the background and supports team communication and team decisions.

As a team lead in this definition, the scrum master ensures proper programming standards and also helps the product owner to prioritize the backlog. Other than this, the scrum master should be a facilitator here as well, like described above.

2 Behaviour during Meetings

It is part of the scrum master’s role to schedule team meetings, as well as to open and to close them. Both team and scrum master can easily misunderstand this, because in typical cases the scheduler of the meeting is also the “owner” of the meeting. However, this is different for team meetings in scrum.

During team meetings, the team is the owner of the meeting. The team will discuss, make decisions and come to solutions. The scrum master just helps the team to schedule the meeting, make required preparations and so on. But that role should not be understood as the owner of the meeting.

Of course, the scrum master should participate in discussions during these meeting. That person belongs to the team as well, like all other team members. But the SM should make it clear that the role in the meeting is a team member, not a leader.

We encourage our scrum masters to stay vocally in the background to avoid dominating the meeting. The other team members should be encouraged to discuss and decide, and should also understand the idea of the scrum master being a facilitator, not as the one who decides on problems. In case several solutions exist for a certain problem, we encourage the team to vote for their favourite solution.

3 Conclusions

The opinions about what a scrum master should be and should not be are very different. The manager position and the facilitator position do not have anything in common, whereas the servant leader is a role in between.

Scrum is all about the team. The team makes decisions about solutions and is in charge for implementing them. This makes each team member aware of the product and responsible for the whole team’s delivery (and not only the part a team member was working on).

With too much domination, the scrum master can easily prevent the team from working as a team. A scrum master should keep in mind that the task is to help the team to implement the backlog, and not to dominate the team.

Posted in Scrum 4

Web fonts – a brief introduction

by Olaf

When it comes to web design, most people assume that this discipline is all about neat graphics and pixel-pushing, but they truly forget that more then 90% of the information on the web is written language and thus Typography. One problem we web designers faced for the last decade, is that we only can refer to a handful of web save fonts (fonts pre-installed on our OS) such as: Arial, Helvetica, Times New Roman, Times, Courier New and Courier – plus a few more options that work cross-platform. In short, we have been limited in our creative impulse to provide the end-user with nicer looking fonts for far too long.

Back in 1998, when The CSS2 specification was released, the CSS rule @font-face was introduced to make it easier for us to use none web save fonts. The browser would simply download the font from the server – if its not installed on the clients computer – and embed it on the website. This was removed in the CSS2.1 specification because it literally enabled illegal downloading of licensed fonts, which of course is not in the very best of interest of the font creators.

Microsoft started supporting font embedding through the proprietary Embedded OpenType (.eot) standard since version 4.0, as an attempt to protect licensed fonts from illegal downloading. However Internet Explorer only supports  .eot file format for embedding fonts which again gives us web designers more work to take care of. If you want your none web save font to be displayed on IE browsers, then you will need to convert it first to an .eot file format. *sigh

Generally speaking: Modern browsers support @font-face embedding and this is clearly on the rise! Tho I will mention shortly the methods we web designers still use as work-around until @font-face is widely implemented:

  1. Font fallback – a common practice, simply choose a ‘look-a-like’ font
  2. Image replacement – overlaying your text with an image containing the text content in the font of your choice.
  3. sIFR (Scalable Inman Flash Replacement) – is a flash based alternative. tho its slow and you need to have flash and javascript enabled.
  4. Cufon – uses vml for ie browser and html5 canvas for modern browsers. Tho it embeds the fonts, thus violates the copyrights.

These methods are all still in use and well know techniques and yet just alternatives! But lets move on, I want to show you how the CSS declaration of the @font-face looks like:

@font-face {
  font-family: "Your typefacename";
  src: url("type/filename.eot"); //IE
  src: local("☺"), //IE hack not to choke and die
  url("type/filename.woff") format("woff"),
  url("type/filename.otf") format("opentype"),
  url("type/filename.svg#filename") format("svg");
}

Maybe you are wondering why this code looks a little bulky, eh ? Well its because we want to cover all browsers to display our acquired font and to avoid gaps! And as you remember from above, IE for example only supports .eot (this will change with IE9). All other modern browsers support the use of .ttf (trueType font) and .oft(openType font) file format, as well the .svg (Scalable Vector Graphics) and .woff (Web Open Font Format).

Conclusion

I really think that the future belongs to @font-face, its plain, simple & pure CSS code, plus we are not dependent on javascript or flash, which keeps the implementation time in check and saves us from other headaches.

Posted in Design 0

Our Philosophy

The only place where success comes before work is in the dictionary.

TheNetcircle In Pictures

IMG_8263IMG_8179IMG_8235IMG_8245IMG_8250IMG_8251

Latest Tweets

Join Our Team

Categories