Agile FAQs
  About   Slides   Home  

Managed Chaos
Naresh Jain's Random Thoughts on Software Development and Adventure Sports
RSS Feed
Recent Thoughts
Recent Comments

Test Driven Development Applied Workshop by Lasse Koskela at Agile India 2013

Monday, January 14th, 2013

Lasse Koskela will be presenting a workshop on ‘Test Driven Development Applied’ at Agile India 2013. He works as a coach, trainer, consultant and programmer, spending his days helping clients and colleagues at Reaktor create successful software products.

Lasse Koskela

Lasse is also the author of books ‘Practical TDD and Acceptance TDD for Java Developers’ and ‘Effective Unit Testing’.

He is one of the pioneers of the Finnish agile community and speaks frequently at international conferences. He recently spoke at Agile2012.

We interviewed Lasse recently and asked him several questions related to one of his favourite topics TDD (Test Driven Development).

What are the mindset changes required by the developer(s) and team members when adopting TDD?

That would likely depend on the developer but I’d say that most often the biggest change required in one’s mindset is to acknowledge that you don’t know everything.

The more experience a programmer has the more likely they are to think of themselves as being “good”. A little confidence can be a huge boon to productivity but too much confidence creates blind spots–we literally learn to not question our assumptions and end up repeating the same old solution even if it’s not a very good fit.

TDD, on the other hand, makes us state some of those assumptions–such as what would be a good design for this class–in such concrete terms that it’s difficult to ignore the awkwardness when the same old solution doesn’t quite fit. It doesn’t fit and you can feel it through the difficulty you’re having writing a test for that design. Sometimes, you look at your test and go, “that doesn’t make any sense–much easier would be to…” And you end up changing the design.

How does TDD help developers in improving the art of software craftsmanship?

The process of programming test-first where you begin by expressing your intent from an automated unit test’s perspective has an almost magical effect on the kind of code you write. It’s much harder to write the kind of monolithic code we’ve all come to hate so much because the process of test-code-refactor invites you to create small, composable classes with clear responsibilities.

What I’ve also found is that TDD tends to help programmers learn what object-oriented design really means. It’s not just about encapsulating your code into “classes” but it’s about putting cohesive behavior into those classes. I wouldn’t go as far as saying that TDD makes you write object-oriented code but it certainly helps. I would say, however, that the better you understand object-oriented design the more comfortable you’ll likely feel test-driving code.

TDD is often perceived as slow, how does one justify the costs and benefits of TDD?

I haven’t heard that particular comment in a while but there certainly are a lot of skeptics when it comes to TDD. I guess every significant programming technique will have some skeptics. Skepticism is not a bad thing per se. In reasonable amounts a little skepticism is a healthy thing to have. That’s why I don’t try to persuade people to believe that TDD is good for them. I might believe but that doesn’t matter much. What matters is whether they themselves have an aspiration for becoming better. If you have that aspiration, perhaps you’ll give TDD a try and see for yourself.

With that said, there has been quite a lot of research into TDD–much more than around most other agile engineering practices–and that research seems to support the notion that TDD is a viable method for developing software. Research done at IBM and Microsoft, for instance, has measured that TDD (compared to a test-last approach) reduced defect densities by 40-90% while the management estimated that it added 15-35% to the time to implement a feature. The management had also concluded that the cost was far outweighed by the time and cost savings created by the reduction of defects.

I will repeat, however, that I don’t want you to take my word for it–or the researchers’ for that matter (especially without reading the research papers yourself). Instead, I’d like people to accept the possibility that they may or may not experience those reported advantages. If they decide to give it a try, even better. If they don’t, I hope they’re giving some other new technique a try. The absolute worst outcome would be that we stagnate at the status quo and stop improving on our profession.

What will be the key take away for the workshop attendees?

For first-timers the key take away is absolutely the first-hand experience of test-driving code. For people who’ve already dipped their feet into the water, I would expect them to walk out with the realization that their style of programming test-first is just one of many–some of which they’ve seen applied in the workshop–and with a resolution to try something slightly different when they get back to work. That’s something I am hoping to take away myself, too!

Seats for Lasse’s workshop are limited so book soon to avoid disappointment:

Agile India 2013 Conference Website Viewer’s Heatmap

Saturday, January 5th, 2013

I’m pretty happy to see the kind of response we’ve got world-wide for the Agile India 2013 Conference. Following is a graph which shows you the viewer’s from different parts of the world interested in Agile India 2013 Conference.

World Wide Agile India 2013 Website Viewers

And from India:

Indian Visitors for Agile India 2013

Agile India 2013 Registration Trend Compared to Agile India 2012

Saturday, December 8th, 2012

Even though we have 3 more months for the Agile India 2013 conference, the registrations this time has been crazy. But how crazy is really the registration compared to Agile India 2012 Conference?

So I pulled out the stats and looked at the trend graph of what it look for 2012 vs. 2013.

Following is the comparison:

Agile India 2013 Registration Trends

Yes, as you can see, we are off to a flying start (registration openned almost 3 weeks ahead) and  the Agile India 2013 conference is almost 2 weeks later compared to Agile India 2012 conference.

Agile India 2013 – Attendees Profile (as of Dec 7th)

Friday, December 7th, 2012

Over 558 delegates have registered for the Agile India 2013 Conference so far.

We’re happy to announce that we’ve participants from over 56 companies participating in the conference:

Aconex India Pvt Ltd Alcatel Lucent India Alliance Global Services India Pvt. Ltd.
Allscripts India Pvt. Ltd Aricent Technologies BNP Paribas India Solutions
Cisco/NDS Cognizant Technology Solutions CSC
Dell India R&D Centre Direction Software Solution Dual Nations Software Services LLC
eGain Communications Pvt. Ltd. Enteleki Technology Solutions Envestnet, India
Equal Experts Ericsson Exelplus
Exilesoft (Pvt) Ltd GembaTech HCL Technologies
Huawei Technologies IIIT Bangalore Independent Consultant
InMobi InRhythm Inteamo
Intergraph Consulting Pvt. Ltd. John Deere India Pvt Ltd MailOnline
Monsanto India IT MSCI Multunus Software
OneShield Inc Ostrya Labs Pitney Bowes Software Rotary International Infotech Pvt. Ltd. S.I. Systems
Sabre Holdings Sabre Travel Technologies SAP Labs India Pvt. Ltd.
Schneider Electric India Shop Smart Inc/ Societe Generale
Software Artisan SSN College of Engineering
Symphony Teleca Corporation Synerzip Softech Inida Pvt. Ltd. Tata Consultancy Services
TenXperts Technologies Thomson Reuters ThoughtWorks Technologies India Pvt. Ltd.
Yahoo India Pvt Ltd Yellowtail Software

And they play the following 70 distinct roles:

Agile & IT Process Consultant Agile and Lean Coach Agile Coach
Agile Coach/Scrum Master Agile Head Coach Agile Project Manager
Architect Assistant manager – quality Assistant Professor
CEO Co-Founder and CEO Code Junkie
Code Monkey Consultant Delivery Manager
Development Manager Director Director-Quality
Director, Wireless Division Engineer 2 Engineering – Director
Engineering Lead Engineering Manager EVP & CTO
Executive Manager General Manager General Manager – Quality
Group Manager Group Project Manager Head of Engineering
Head of Project Management Lead – Development and Testing Lead Executive Quality
Manager Manual QA Engineer Operations Manager
Product Owner Product Owner/Technical Lead Program Manager
Project Manager Project Quality Manager Projects Manager
Release Manager Senior Agile Project Manager Senior Consultant
Senior Director Senior Engineer – QA senior executive – quality
Senior Manager Senior Manager – Consulting Senior Manager-Technical Group head
Senior Manager, Agile Coach Senior Project Manager Senior Software Engineer
Software Architect Software Artisan Software Developer (Embedded System)
SR ASSOCIATE Sr Engineer Sr. Manager
Sr. Manager – Projects Sr. Project Manager Sr. Quality Manager
Sr. Software Engineer1 Sr. Vice President Team Lead
Technical Architect Technical Leader / Scrum Master Technologist
VP Solutions

Interview Summary with Agile India 2013 Conference Workshop Speakers

Thursday, December 6th, 2012

1. How do you sustain growth over time with a steady stream of new disruptive businesses? Attend Mary and Tom Poppendieck’s full day workshop on The Fastest Learner Wins (Special Interview –

2. Can good architecture just emerge miraculously from a succession of iterations? Attend Kevlin Henney’s half-day workshop on Architecture with Agility (Special Interview –

3. What can cognitive science teach us about becoming better thinkers, better problem-solvers, and better influencers? Attend Linda Rising’s full day workshop on Problem-Solving and Decision-Making in Software Development (Special Interview –

4. Can organizations really benefit by using Kanban over the first generation Agile methods like Scrum & XP? Attend Masa K Maeda’s full day workshop on Kanban Primer (Special Interview –

5. How to over come some of the key challenges faced by teams when adopting Continuous Delivery? Attend Jez Humble’s full day workshop on Continuous Delivery (Special Interview –

6. What practical technical practices does an organization need to sustain and succeed with agile development? Attend Venkat Subramaniam’s two-day in-depth workshop on Honing Technical Practices To Realize Sustainable Agility (Special Interview –

7. Why Agile Enterprises need to break down the silos in their organization? Attend Prof. David West’s full day workshop on The Agile Enterprise (Special Interview –

8. Are there real advantages/benefits of using agile games as opposed to traditional methods like meetings? Attend Laurent Bossavit’s full day workshop on Playing Games for Fun and (Business) Profit (Special Interview –

Continuous Delivery Workshop by Jez Humble @ Agile India 2013

Wednesday, December 5th, 2012

Jez Humble (@JezHumble) is a Principal Consultant with ThoughtWorks, and co-author of Jolt Award winning book Continuous Delivery ( He got into IT in 2000, just in time for the dot-com bust. Since then he has worked as a developer, system administrator, trainer, consultant,  manager, and speaker. He has worked with a variety of platforms and technologies, consulting for non-profits, telecoms, financial services, and online retail companies.

Jez Humble

His focus is on helping organisations deliver valuable, high-quality software frequently and reliably through implementing effective engineering practices in the field of Agile delivery.

Continuous Delivery

He will be running a one day workshop at Agile India 2013.  This week we spent some time with Jez and chatted to him about continuous delivery, a topic he is very passionate about.

1. How does continuous delivery improve collaboration between developers, testers, and operations?

Continuous delivery improves collaboration between everybody involved in software delivery by requiring it. It’s impossible to achieve high quality systems without developers and testers physically working together, and without developers being accountable for how the systems they build perform in real life. When testers work in silos physically separated from developers, quality always gets worse. When operations work in silos and don’t collaborate with developers, deployment is always going to be a high-risk, painful activity.

2. How do you sell the benefits of continuous delivery to clients who have infrequent releases?

The HP LaserJet firmware team just brought out a book that describes how they implemented continuous delivery: “A Practical Approach to Large-Scale Agile Development“. Obviously you don’t ship new firmware that often, but implementing continuous delivery provided enormous benefits for them. They measured team activity over the three years it took them to implement continuous delivery and found it reduced development costs by 40% and increased the amount of time the teams were spending on feature development (as opposed to non-value-add activities such as integration and manual testing) by a factor of 5. They implemented continuous integration and extensive test automation – they have 30,000 automated functional tests that run in virtual and emulated environments on logic boards – and if somebody checks in a change to version control that breaks the tests, the change gets automatically reverted straight back out of version control. The most important benefits of continuous delivery are second order – giving developers fast feedback so they can take responsibility for their actions, so they get rewarded for delivering work that is integrated, tested and production-ready, rather than “dev complete”. That forces teams to architect their systems with automated testing and deployment in mind, and to perform those activities frequently from early on. If you’re doing it right, you completely remove the integration and testing phase – your software is in a deployable state from day 1 of the build phase, which means releases are low risk, you can get feedback much more quickly and avoid working on features that aren’t valuable to your customers, and you can measure your progress and identify risks in a transparent way.

3. What are some of the challenges teams face when adopting continuous delivery?

The main challenges to adopting continuous delivery are organizational and architectural, and these two problems are tightly coupled (which is what Conway’s Law tells us). It’s usually best to start with continuous integration, which means every developer is checking in to trunk at least once a day, we build and test the complete, integrated system every time a change is made to version control, and if there is a problem everybody pays attention and we prioritize fixing it straight away. Doing everything in that one sentence is still a tall order for most organizations. Often there aren’t enough automated tests, the ones that exist are flaky, they’re expensive to create and maintain, and nobody cares much if they fail. Production-like integration environments are often expensive to provision and hard to get access to. Developers don’t work on trunk because it slows down the rate at which they can declare their crappy, buggy, undeployable code “dev complete”. It’s hard to retrofit automation to systems that aren’t designed for it, and it’s hard to retrofit CD into silo-based organizations. So adoption is usually impossible unless management is bought in and at least some of the engineers are willing to change the way they work. It’s always the organizational issues that kill you in the end.

4. What is the take away for the attendees of the workshop?

The low-down on how to implement continuous delivery in real life, even in large, distributed organizations. I cover everything from continuous integration to patterns for low-risk releases, with material on automated infrastructure management, managing databases, and how to create maintainable suites of automated acceptance tests. I also discuss organizational issues and the value proposition so practitioners are equipped to talk to their management. That’s a lot of ground to cover so there’s no hands-on coding, but the advantage is that it’s at a high enough level that anybody can benefit – developers, infrastructure people, dbas, managers, testers. One of the benefits is that just by getting all those different roles into one room, we can get an appreciation for the problems we each face, which usually leads to some interesting discussions.

Like all other workshops, this workshop has limited seats. Book soon to avoid disappointment:

Past Talks:

Kanban Primer Workshop by Masa Maeda @ Agile India 2013 Conference

Wednesday, December 5th, 2012

At Agile India 2013, we are offering 14 workshops, all under one roof from 16th February to 2nd March. This is a unique opportunity to learn from experts all over the world, don’t miss out! One of the workshops we will be running is titled ‘Kanban Primer’, by Masa K. Maeda.

Masa is the creator of Lean Value Innovation, he is an internationally recognized expert on Lean and Agile Project Management, Kanban and Scrum. He started Valueinnova in the Silicon Valley California in 2008.

He has spoken at several conferences including Lean Kanban and Agile India 2012. He was one of the favorite speakers at Agile India 2012 based on the feedback we received.

Masa Maeda

We stole some of Masa’s precious time and quizzed him about Kanban and its benefits.

1. What are key benefits of Kanban over the first generation agile methodologies like Scrum?

Kanban is a fabulous practice that is equally applicable to technical teams and to management and leadership teams. The biggest benefit of Kanban is that it brings an amazingly effective way to improve process and to generate a culture of continuous improvement with very minimal effort. It is also fun to do. It accomplishes this by being highly adaptive and improving value flow over existing processes. This is great news because it means Kanban is equally applicable to organizations doing Waterfall, Scrum, XP, or other. Yes, this means it also helps improve value generation and delivery over other agile methodologies. It also means it can be applied beyond IT and software development. Some people think Kanban is only good for IT work but that isn’t actually so. We have applied it very successfully to Software Development, Admin, HHRR, Healthcare, Education, Telecommunications, etc.

2. Is it possible to introduce Kanban into an an organization this is already practicing Scrum/XP?

Definitely yes. Kanban is compatible with other methodologies. It actually helps improve the performance of Scrum and XP teams. Kanban has been proven to actually make it easer for agile adoption to spread more easily and more quickly. One example of how it helps improve Scrum is by improving the flow of Stories and also by bringing an effective way to handle urgent tasks. For XP teams it allows to better visualize the work to do and being done, aligning better the dev-test activities as well as the UAT. In both cases it increases customer satisfaction because value delivery improves over time.

3. Who is the workshop intended for?

It is equally good for executives, managers, and team members. Executives benefit using Kanban, for example, to manage their business and customer portfolios, and by reducing time-to-market. Managers benefit because Kanban gives them visibility and predictability over projects; and by reducing delivery time through continuous improvement. Team members benefit because it increases autonomy, effectiveness, and quality. It is important to understand that Kanban is not a technical practice but rather a discipline to improve what we currently do, be it technical or managerial.

4. What is the key take away for the attendees?

 This workshop will allow them to get enough knowledge to get started with Kanban. They will have the bases of its system and the method itself. This means they will be able to figure out how to create an effective Kanban board, generate the key elements to have high visualization, to do root-cause analysis and to effectively increase value flow. The workshop is highly interactive through lots of team exercises. It will be a fun day. Our training typically gets the highest scores during evaluations because of its format and because of the amount of knowledge and understanding acquired by the attendees.

Past talks:

Lean Value Innovation – Agile India 2012

Seats are limited for this workshop, book soon to avoid disappointment:

Architecture with Agility Workshop by Kevlin Henney @ Agile India 2013 Conference

Wednesday, December 5th, 2012

Kevlin Henney is an author, presenter, and consultant on software development. He has written on the subject of computer programming and development practice for many magazines and sites, including Better Software, The Register, C/C++ Users Journal, JavaSpektrum, C++ Report, Java Report, EXE, and Overload. He is a member of the IEEE Software Advisory Board. Henney is also coauthor of books on patterns and editor of ’97 Things Every Programmer Should Know’.

Kevlin's Books

Henney has given keynote addresses at a number of conferences, including ACCU, DevWeek, Embedded Systems Club, GeeCON, GOTO, JAOO, Jfokus, NLUUG, OOP, PHPNW, SDC, Software Architect, and XP Day.

We are really excited to have Kevlin present his workshop on ‘Architecture with Agility’ at Agile India 2013.

Kevlin Henney

This week we interviewed Kevlin and got some more information about his workshop.

1. Agile practices talk about emergent design and iterative production, how does architecture fit into this model? Is agile architecture emergent?

Process influences and is influenced by what you build and what you can build is influenced by process. Software architecture can best be considered the set of significant design decisions, where significance relates to cost and difficulty of change. Agile projects that do not consider their architecture are not likely to remain agile for long. If an agile project focuses on delivering functionality at the expense of a design that supports incremental development, it will find itself struggling to deliver functionality.

Of course, what constitutes a significant design decision is not obvious up front, so establishing an architecture is necessarily a dynamic that flows through the whole development rather than a fixed activity locked into an early phase of development. Architecture embodies knowledge, knowledge is acquired by learning and learning takes time; a development process structures this time.

2. What are some of the misconceptions about agile architecture?

The most obvious misconception is that a good architecture will just happen and emerge miraculously from a succession of iterations, without focused responsibility and effort. Agile architecture requires guidance and nurturing, shaping a system through a succession of changes, each considered to be an experiment against a hypothesis, each considered to be open to review and change.

3. What is the key take away for the attendees from the workshop?

An architecture will constrain or enable the process of development. If you want to be agile, want to make changes frequently and sustainably, want to deliver and get feedback more often, then you need an architecture that supports rather than frustrates such a process. And, like most things in life, if you want good architecture, you have to care about it.

Past talks by Kevlin:

Kevlin’s workshop has limited seats so go ahead and book at before it is too late!

The Agile Enterprise Workshop by David West @ Agile India 2013 Conference

Thursday, November 29th, 2012

David West has been a software professional for forty years, most recently as a consultant/coach in Agile, Design, and Enterprise-IT Integration. He is the author of Object Thinking (Microsoft Press Professional) and has been a speaker at numerous conferences including SPLASH (new OOPSLA), Onward!, Agile, and various PLoPs. He has graduate degrees in Computer Science, Cultural Anthropology, and Cognitive Science along with an undergraduate education in Asian Philosophy.

Object Thinking

He believes in people, not technology or methodology. He has a wealth of experience in achieving systemic change and IT-Enterprise integration while significantly, reducing IT costs.

We are very privileged to present David’s workshop on ‘The Agile Enterprise‘ at Agile India 2013. His many years of experience will no doubt add immense value to the conference.

David West

We asked David some questions about his workshop. A key focus of the workshop will be about breaking down the silos that exist between IT and business.

Why is it important to break down silos that often exist between IT and business?

There are two important reasons. The first arises from the four agile values (originally XP values) – two of which, Communication and Feedback – mandate the free flow of information “in real time.” By real time, I mean the time frame in which the work is being done. There is nothing more frustrating than having to wait for a question and answer to go through channels, when a direct communication could resolve the issue and allow you to proceed with your work. If you look at all the agile practices, most of them are intended to enhance communications among the Whole Team.

The second reason is not as easy to see. We have known since the 1960s of the problem of “necessary interpretation.” An example: The business person articulates some needs and expectations – requirements – to the systems analyst. This is done using some kind of ‘formal’ model. The model cannot contain all of the understanding of the business person, tacit knowledge is omitted, for example. The system analyst must interpret the model, using her own mental language and translate the requirements into specifications, again omitting much of what she knows from her formal model. The programmer must, yet again interpret the specifications and translate into their mental language (which is a function of the particular programming language used) and write their code. This chain of interpretation and translation consistently generates software that bears only a partial resemblance to what was expected. The more links in the chain – the more silos you pass through – the greater the divergence.

In your experience, what makes it really hard to break down these silos?

Business, and to an even greater degree Software Engineering, are grounded in a philosophy of “scientific management.” This is a cultural phenomenon which means we are not even aware, usually, of why we do things the way we do. Scientific management principles focus on formality, constraint, and control. In communications this takes the form of establishing formal communication channels, defined formats for communication (formal models like UML), and limits on how many people any individual should manage and therefore communicate with. Add a strict hierarchy, and you get lots of silos. This is justified with arguments like, “you cannot have everyone talk to the CEO, she would not have the time to read and respond.” This entire culture of scientific management extends beyond the IT shop and the business and makes it extremely hard to change – even with awareness.

What will be the key take away for the workshop attendees?

Participants will leave with a simple and extremely powerful model of the enterprise; useful for integrating IT efforts with business objectives, mapping agile practices to the satisfaction of business needs – all while providing a foundation for leveraging IT to support an agile and innovative organization.

If you’re thinking of registering for this workshop, do remember that seats are limited. Book soon to avoid disappointment.

Playing Games for Fun and (Business) Profit workshop by Laurent Bossavit @ Agile India 2013 Conference

Tuesday, November 27th, 2012

At Agile India 2013, in addition to the main conference, we will be hosting fourteen exclusive workshops, all by well known, expert agilists. This is an unique opportunity to learn from experts around the world.

Recently we interviewed Laurent Bossavit to get some insight into his rather different workshop – ‘Playing games for fun and profit‘.

Laurent Bossavit
Picture by Bam Thomas

Laurent Bossavit started of his career as a developer and was an “early adopter” of Agile. He was the recipient of the 2006 Gordon Pask award for contributions to Agile practice. Laurent is one of the people who has invested a lot in bringing agile to a wider know audience. He also wrote the book ‘The Leprechauns of Software Engineering‘.

The Leprechauns of Software Engineering

He now heads Institut Agile, a privately funded, independent entity whose missions include growing the Agile business ecosystem, creating stronger links between the business and research communities interested in Agile approaches, and providing stronger empirical evidence on the benefits and limitations of Agile practices.

During the interview, we asked the following questions to Laurent:

What triggered your interest in agile games?

Games, interactive workshops and project simulations have been part of the Agile thinking and teaching toolkit from the very beginning. My first experience was using the ExtremeHour format back in 2000, to teach a team, I had recently joined, the basics of Extreme Programming. I’ve never stopped using them since, in my training classes and in retrospectives for instance.

Some of the core Agile practices, such as “Planning Poker“, also take the form of games. However, more recently a number of Agile folks have started seeing and using Agile games not just as teaching or coaching tools, but also as an integral part of the way teams can work together. For instance, they can be used to bring about better understanding and collaboration between Product Owners and developers on a team.

These more recent developments reinforced my interest and made me look at our use of games in a new light.

What are the advantages/benefits of using agile games as opposed to traditional methods like meetings?

Suppose you’re interested in getting a group’s best ideas on an important decision, such as which features to include or leave out of the next release of a software product or system. It’s often a lot of hard work convening and running a meeting for this kind of result: someone has to put a lot of effort into running the meeting, making sure everybody contributes their knowledge but nobody “takes over” the meeting, and so on. Even when meetings are run efficiently, people rarely like them – and so, sometimes, participants end up sabotaging them.

With a “serious game” approach you don’t need to run things: you explain the rules and the objectives, stand back, and let the process unfold. If the game is well-designed, not only will you reach the intended outcome – a set of decisions – you will also have fully engaged participants who all contribute to the extent that they have creative ideas, and on top of that have fun and want to do it again!

What is the take away for the attendees from the workshop?

This is a completely hands-on experience; we’ll play a number of games, and during the debriefs we’ll discuss why and how they work in business settings. The idea is to come away with games that you can use immediately on getting back to work from the conference.

Attending the workshop is a great way to get a first introduction to Agile games for people who are new to the topic, and maybe to discover some new games for people who are already experienced. There will be something for everyone!

If you’re thinking of registering for this workshop, do remember that seats are limited. Book soon to avoid disappointment.

    Licensed under
Creative Commons License