<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Codurance</title>
    <link href="/atom.xml" rel="self"/>
    <link href=""/>
    <updated>2017-01-20T15:20:18+00:00</updated>
    <id>https://codurance.com</id>
    <author>
        <name>Codurance</name>
        <email>hello@codurance.com</email>
    </author>
    <rights>Copyright (c) Codurance</rights>
    
    <entry>
        <id>/2017/01/16/hierarchy-of-opinion/</id>
        <title>Hierarchy of opinion</title>
        <link href="https://codurance.com/2017/01/16/hierarchy-of-opinion/"/>
        <published>2017-01-16T16:00:00+00:00</published>
        
        <summary type="html">&lt;p&gt;The word opinion has two distinct meanings according to the &lt;a href=&quot;https://en.oxforddictionaries.com/definition/opinion&quot;&gt;Oxford Dictionary&lt;/a&gt;:&lt;/p&gt;

</summary>
        
    </entry>
    
    <entry>
        <id>/2016/12/21/how-to-use-npm-link/</id>
        <title>How to use 'npm link' to develop sharable components</title>
        <link href="https://codurance.com/2016/12/21/how-to-use-npm-link/"/>
        <published>2016-12-21T00:20:00+00:00</published>
        
        <summary type="html">&lt;p&gt;If you are working on a &lt;strong&gt;node&lt;/strong&gt; project there may come a point where your app has a dependency on another custom module
you have created.&lt;/p&gt;

</summary>
        
    </entry>
    
    <entry>
        <id>/2016/12/20/how-applying-theory-of-constraints-helped-us-optimise-our-code/</id>
        <title>How Applying Theory of Constraints Helped us Optimise our Code</title>
        <link href="https://codurance.com/2016/12/20/how-applying-theory-of-constraints-helped-us-optimise-our-code/"/>
        <published>2016-12-20T00:20:00+00:00</published>
        
        <summary type="html">&lt;p&gt;My team have been working on improving the performance our API, and identified a database call as the cause of some problems.&lt;/p&gt;

</summary>
        
    </entry>
    
    <entry>
        <id>/2016/10/16/setting-up-scala-on-android/</id>
        <title>Setting up Scala on Android</title>
        <link href="https://codurance.com/2016/10/16/setting-up-scala-on-android/"/>
        <published>2016-10-16T00:20:00+00:00</published>
        
        <summary type="html">&lt;p&gt;Scala can be used to build Android applications, as an alternative to Java or Kotlin. Unlike them, setting up an Android project in Scala with SBT is not straightforward, and can give us some headaches to get it right. To show how this can be done, we are going to create new project template using the Android SDK Plugin for SBT.&lt;/p&gt;

</summary>
        
    </entry>
    
    <entry>
        <id>/2016/10/11/approaching-tdd-outside-android-iii/</id>
        <title>Approaching Outside-in TDD on Android III</title>
        <link href="https://codurance.com/2016/10/11/approaching-tdd-outside-android-iii/"/>
        <published>2016-10-11T00:00:00+00:00</published>
        
        <summary type="html">&lt;p&gt;&lt;a href=&quot;/2016/09/29/approaching-tdd-outside-android-ii/&quot;&gt;In the previous post&lt;/a&gt;, we wrote the acceptance test as a first step and started creating the classes on the entry points of our system. In this post, we will finish implementing the system, and will summarize what we have learnt during the process.&lt;/p&gt;

</summary>
        
    </entry>
    
    <entry>
        <id>/agile/2016/10/10/visualise-interruptions-with-a-lego-wall/</id>
        <title>Visualise interruptions on a LEGO Wall</title>
        <link href="https://codurance.com/agile/2016/10/10/visualise-interruptions-with-a-lego-wall/"/>
        <published>2016-10-10T07:00:00+00:00</published>
        
        <summary type="html">&lt;p&gt;As part of the &lt;a href=&quot;https://codurance.com/careers/&quot;&gt;apprentice-craftsmen Programme&lt;/a&gt; at Codurance, I had the privilege to attend the &lt;a href=&quot;https://skillsmatter.com/courses/152-martine-devos-scrum-product-owner&quot;&gt;Certified Scrum Product Owner course&lt;/a&gt; at Skills Matter.
During the two-day course, I learnt many techniques to deliver value efficiently, and I am going to share a less widely known tool to help teams visualise interruptions.&lt;/p&gt;




&lt;p&gt;Keeping track of interruptions helps teams improve their productivity during inspect and adapt activities such as daily meetings and retrospectives. In order to turn impediments into opportunities, both development team and stakeholders should collaborate, support and trust each other. These concepts are at the foundation of “shared responsibility”: everybody is responsible for the success of the business.&lt;/p&gt;




&lt;p&gt;Sharing opinions about what is decelerating the team performance is easy in the best-case scenario where we know that no one will assign blame. However, the culture of fear is still widespread in most organisations and people are afraid of being blamed. When people stop sharing their concerns, they lose motivation and start to leave it to the Scrum Master and the Product Owner to fix their problems.&lt;/p&gt;




&lt;p&gt;Team members' concerns turn into frustrations and become internalised. Impediments become even harder to identify when people are afraid to speak up in front of stakeholders.&lt;/p&gt;




&lt;h2&gt;The LEGO Wall&lt;/h2&gt;




&lt;p&gt;&lt;/p&gt;




&lt;p&gt;&lt;img src=&quot;/assets/img/custom/blog/2016-10-10-visualise-interruptions-with-a-LEGO-wall/lego-wall-overview.jpg&quot;&quot;&quot;  alt=&quot;&quot; title=&quot;&quot; class=&quot;img img-center img-responsive style-screengrab&quot;&gt;&lt;/p&gt;




&lt;p&gt;The LEGO Wall has been conceived to reduce the fear factor when identifying impediments. It is an artifact to keep interruptions visible while ensuring anonymity.&lt;/p&gt;




&lt;p&gt;The whole Scrum Team (Product Owner included!) is involved and the Scrum Master facilitates the LEGO Wall Setup Session, explaining the importance of tracking interruptions. The LEGO Wall gives voice to the team’s frustrations. By collecting and displaying real data, it creates the conditions to discuss the interruptions. At a glance, the team is able understand:&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;How much time they spend working on delivering the value agreed during the Sprint Planning&lt;/li&gt;
&lt;li&gt;How much time they spend working on unplanned activities&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt; The core part of the Setup Session is to build a collective understanding of the type of interruptions the team has to deal with. The teammates share their experience and at the end of the discussion they decide to keep track of top categories of interruptions – keeping them to a maximum of five. After that, they can assign a brick colour to each of them.&lt;/p&gt;




&lt;p&gt;In the example shown in the pictures the team identified 4 categories:&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;Production Support: &lt;label style=&quot;color: #10D11A&quot;&gt; GREEN &lt;/label&gt;&lt;/li&gt;
&lt;li&gt;Release Support: &lt;label style=&quot;color: #FFC707&quot;&gt; YELLOW &lt;/label&gt;&lt;/li&gt;
&lt;li&gt;Business as Usual: &lt;label style=&quot;color: #FF060E&quot;&gt; RED &lt;/label&gt;&lt;/li&gt;
&lt;li&gt;Help the PO: &lt;label style=&quot;color: #2065FF&quot;&gt; BLUE &lt;/label&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;“Business as Usual (BAU)” is the time spent on the ceremonies and the artifacts associated with the development process. These include: meetings, creating reports, writing documents, etc.&lt;/p&gt;




&lt;p&gt;The category “Help the PO” encompasses the activities that the development team is asked to do to help the Product Owner prioritise stories (backlog refinement sessions). In fact, these activities should be considered part of the work, but often the development team perceives these activities as interruptions. Work is not only about coding, UX design or testing; it also involves collaboration with the PO, as these activities are also essential to delivering value.&lt;/p&gt;




&lt;h2&gt;Materials and preparation&lt;/h2&gt;




&lt;p&gt;&lt;/p&gt;




&lt;p&gt;&lt;img src=&quot;/assets/img/custom/blog/2016-10-10-visualise-interruptions-with-a-LEGO-wall/lego-wall-materials.jpg&quot;  alt=&quot;&quot; title=&quot;&quot; class=&quot;img img-center img-responsive style-screengrab&quot;&gt;&lt;/p&gt;




&lt;p&gt;You can build a LEGO Wall with as many &lt;strong&gt;base plates&lt;/strong&gt; as you need, in order to display:&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;The days of the Sprint (2 boards are enough to keep track of a 2-week Sprint)&lt;/li&gt;
&lt;li&gt;As many rows as team members (4 developers as shown in the photos)&lt;/li&gt;
&lt;li&gt;A legend of the colours used (4 colours + white)&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;You will need &lt;strong&gt;colourful LEGO bricks&lt;/strong&gt; to display interruptions and &lt;strong&gt;LEGO figures&lt;/strong&gt; to represent an anonymous team member.&lt;/p&gt;




&lt;p&gt;From the pictures, you can see that the team decided to use LEGO figures to represent themselves. This is because this activity should be pleasurable as well as useful. In fact, I recommend creating your own figure as if you are playing a tabletop game. Thanks to the modularity of LEGO and the figures from movies and comics, you can be whoever you want and change your character as many times as you like, so that you can keep your anonymity.&lt;/p&gt;




&lt;p&gt;Lego is an excellent tool to visualise interruptions because:&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;Thanks to its modularity, it is easy to split a working day in 16 1x1 blocks. A 1x1 block corresponds to 30 minutes of activity&lt;/li&gt;
&lt;li&gt;Maintaining the LEGO Wall is an effortless activity&lt;/li&gt;
&lt;li&gt;It is easy to get the whole team involved because LEGO bricks are beautiful and fun to play with&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;How to use it&lt;/h2&gt;




&lt;p&gt;&lt;/p&gt;




&lt;p&gt;&lt;img src=&quot;/assets/img/custom/blog/2016-10-10-visualise-interruptions-with-a-LEGO-wall/lego-wall.jpg&quot;&quot;&quot;  alt=&quot;&quot; title=&quot;&quot; class=&quot;img img-center img-responsive style-screengrab&quot;&gt;&lt;/p&gt;




&lt;p&gt;I suggest you hang the LEGO Wall in a place that would be highly visible to the team and stakeholders. We want to trigger discussions in front of it. The LEGO Wall displays real and meaningful data that can be extremely useful during retrospectives. The more colourful the LEGO Wall gets the more margin of improvements the team and the organisation can work on to deliver more value.&lt;/p&gt;




&lt;p&gt;Since the LEGO Wall is not a micro-management tool, at the end of every day, each team member should update it exclusively with bricks assigned to each category of impediment. The white bricks should be added only at the end of the Sprint. They have the function of highlighting the time spent to achieve the Sprint goal so that it’s easy to compare how much time the team has spent working and how much time has been spent on interruptions.&lt;/p&gt;




&lt;h2&gt;The power of the LEGO Wall during retrospectives&lt;/h2&gt;




&lt;p&gt;&lt;/p&gt;




&lt;p&gt;&lt;img src=&quot;/assets/img/custom/blog/2016-10-10-visualise-interruptions-with-a-LEGO-wall/lego-wall-retrospective.jpg&quot;&quot;&quot;  alt=&quot;&quot; title=&quot;&quot; class=&quot;img img-center img-responsive style-screengrab&quot;&gt;&lt;/p&gt;




&lt;p&gt;The LEGO Wall is a collector for meaningful data that shows how the Sprint went. If the LEGO Wall shows that the team has spent more time on fixing bugs then delivering new value, then they may need to put more focus on quality. Thanks to this effortless way of gathering data the team can set up discussions with stakeholders and, together, find ways to reduce impediments and improve team capacity. Production and release support interruptions are an opportunity to invest in better delivery practices.&lt;/p&gt;




&lt;p&gt;BAU interruptions can be reduced by asking a couple of questions:&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;Why was the meeting or the deliverable necessary?&lt;/li&gt;
&lt;li&gt;Does the Sprint goal have any business value (or are we just following a process)?&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;If the answer to the second question is YES then it means that it’s not an interruption but it’s work that should be prioritised.&lt;/p&gt;




&lt;h2&gt;Conclusion&lt;/h2&gt;




&lt;p&gt;The LEGO Wall is a powerful tool to get an idea on how much time the team can spend on working to deliver new value instead of working on problems inherited from previous Sprints.&lt;/p&gt;




&lt;p&gt;However, this is not a step-by-step recipe because this tool can be used in several ways according to the following variables:&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;How experienced the team is&lt;/li&gt;
&lt;li&gt;The type of interruptions&lt;/li&gt;
&lt;li&gt;The environment&lt;/li&gt;
&lt;li&gt;How the company is organised&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;I suggest staying focused on the principles and importance of this activity (honesty, transparency, courage, inspect and adapt). Don't be afraid of experimenting and changing this to suit your needs. If you start looking at things from another perspective, you might realise that impediments and interruptions are actually opportunities for improvement.&lt;/p&gt;




&lt;hr /&gt;




&lt;p&gt;I’ll be happy to hear about your stories and know how you set your LEGO Wall.
Which kind of impediments your team has to face?
What is dragging your performance down at the moment? Feel free to &lt;a href=&quot;http://twitter.com/GiuliaMantuano&quot;&gt;contact me&lt;/a&gt; and send me your pictures! I hope to see walls different from mine so that I can collect them and make them become a source of inspiration for the community. Cheers!&lt;/p&gt;

</summary>
        
    </entry>
    
    <entry>
        <id>/2016/10/06/database-testing-with-tsqlt/</id>
        <title>Database Testing With tSQLt</title>
        <link href="https://codurance.com/2016/10/06/database-testing-with-tsqlt/"/>
        <published>2016-10-06T10:20:00+00:00</published>
        
        <summary type="html">&lt;p&gt;Evolutionary Database Development, as coined in Martin Fowler’s book Refactoring Databases, is a concept whereby the design of the database is not done upfront, but instead is done in a way that evolves as the software that is relying on the data store does.
In order to have flexibility and to allow changes in the database to be made safely; you need to have a test suite to run and check for regressions. In this post we will have a look at a testing framework for Microsoft SQL Server databases.&lt;/p&gt;




&lt;h2&gt;Environment&lt;/h2&gt;




&lt;h3&gt;Installing MS SQL Server&lt;/h3&gt;




&lt;p&gt;Get started installing &lt;a href=&quot;http://www.hanselman.com/blog/DownloadSQLServerExpress.aspx&quot;&gt;SQL Server Express&lt;/a&gt;
.
SQL Server Express is a free lightweight version of Microsoft’s SQL Server database.&lt;/p&gt;




&lt;h3&gt;Installing MSSQL Server Manager&lt;/h3&gt;




&lt;p&gt;SQL Server Management studio provides us with a powerful user interface to access, manage and configure our MS SQL database server.
If you don’t already have it, &lt;a href=&quot;https://msdn.microsoft.com/en-us/library/mt238290.aspx&quot;&gt;install it&lt;/a&gt;. Please note this will take some time.&lt;/p&gt;




&lt;h3&gt;Downloading tSQLt&lt;/h3&gt;




&lt;p&gt;We are going to use the &lt;a href=&quot;http://tsqlt.org/&quot;&gt;tSQLt&lt;/a&gt; unit testing framework to test our Microsoft SQL Server database.
We first need to get the &lt;a href=&quot;http://tsqlt.org/downloads/&quot;&gt;download&lt;/a&gt; from the official website.&lt;/p&gt;




&lt;p&gt;The tSQLt &lt;a href=&quot;https://github.com/tSQLt-org/tSQLt&quot;&gt;open source&lt;/a&gt; framework allows us to run our tests within transactions which makes our tests independant and takes care of cleaning up after it runs. The framework also gives us the ability to isolate our tests through fake tables and stored procedure (SP) spies.&lt;/p&gt;




&lt;h2&gt;Running the test sample&lt;/h2&gt;




&lt;p&gt;Once you have SQL Server Express up and running, and MSSQL Management Studio installed, open the latter and connect to your server.&lt;/p&gt;




&lt;p&gt;&lt;/p&gt;




&lt;p&gt;&lt;img src=&quot;/assets/img/custom/blog/db-testing/db-testing-1.png&quot;  alt=&quot;&quot; title=&quot;&quot; class=&quot;img img-center img-responsive style-screengrab&quot;&gt;&lt;/p&gt;




&lt;p&gt;The tSQLt team provides a quick start example database and a set of tests to help developers get started quickly on how the framework works.
Let’s try the example together.
First unzip the tSQLt folder you downloaded, and make sure that CLRs are enabled on your development server. Enabling &lt;a href=&quot;https://msdn.microsoft.com/en-us/library/ms131048.aspx&quot;&gt;CLR integration&lt;/a&gt; allows us to run managed code, such as C#, on our SQL Server database.&lt;/p&gt;




&lt;p&gt;&lt;/p&gt;




&lt;p&gt;&lt;img src=&quot;/assets/img/custom/blog/db-testing/db-testing-2.png&quot;  alt=&quot;&quot; title=&quot;&quot; class=&quot;img img-center img-responsive style-screengrab&quot;&gt;&lt;/p&gt;




&lt;p&gt;Open the Example.sql file that you will find within the unzipped folder, and execute it in your database server. This will create a test database named &lt;code&gt;tSQLt_Example&lt;/code&gt;.&lt;/p&gt;




&lt;p&gt;Once your database is created, open a new query window on that DB and run the following command:
&lt;code&gt;EXEC tSQLt.RunAll&lt;/code&gt;
This is a command to run all the tests. You should see a failing test in the result screen:&lt;/p&gt;




&lt;p&gt;&lt;/p&gt;




&lt;p&gt;&lt;img src=&quot;/assets/img/custom/blog/db-testing/db-testing-3.png&quot;  alt=&quot;&quot; title=&quot;&quot; class=&quot;img img-center img-responsive style-screengrab&quot;&gt;&lt;/p&gt;




&lt;p&gt;Test case &lt;code&gt;number 11&lt;/code&gt;, named &quot;test ready for experimentation if 2 particles&quot;, is failing. Let’s open the file and see what’s wrong with it; we will need to navigate to the &lt;code&gt;stored procedures&lt;/code&gt; folder to find the test.&lt;/p&gt;




&lt;p&gt;&lt;/p&gt;




&lt;p&gt;&lt;img src=&quot;/assets/img/custom/blog/db-testing/db-testing-4.png&quot;  alt=&quot;&quot; title=&quot;&quot; class=&quot;img img-center img-responsive style-screengrab&quot;&gt;&lt;/p&gt;




&lt;p&gt;&lt;/p&gt;




&lt;p&gt;&lt;img src=&quot;/assets/img/custom/blog/db-testing/db-testing-5.png&quot;  alt=&quot;&quot; title=&quot;&quot; class=&quot;img img-center img-responsive style-screengrab&quot;&gt;&lt;/p&gt;




&lt;p&gt;The failing test is calling the &lt;code&gt;IsExperimentReady&lt;/code&gt;  function and checks that it returns 1 when the particle table has two particles.
Looking at the function, it seems that it is not counting the number of rows in the &lt;code&gt;Particle&lt;/code&gt; table, and it is not doing the right checks.&lt;/p&gt;




&lt;p&gt;&lt;/p&gt;




&lt;p&gt;&lt;img src=&quot;/assets/img/custom/blog/db-testing/db-testing-6.png&quot;  alt=&quot;&quot; title=&quot;&quot; class=&quot;img img-center img-responsive style-screengrab&quot;&gt;&lt;/p&gt;




&lt;p&gt;Once we’ve solved the issue, we can run the tests again and see that they are all passing now.&lt;/p&gt;




&lt;h3&gt;What is this test doing and how is the fake table working?&lt;/h3&gt;




&lt;p&gt;Tests in the tSQLt framework are run within transactions. The function we are testing relies on the &lt;code&gt;Particle&lt;/code&gt; table to determine whether the system is ready for experimentation. Looking at our test here, we can see that we are creating a fake table of the &lt;code&gt;Accelerator.Particle&lt;/code&gt; in which we will insert two rows.&lt;/p&gt;




&lt;p&gt;If we have closer at look at the &lt;code&gt;tSQLt.FakeTable&lt;/code&gt; stored procedure, we can see that it is renaming the original table we are faking, and copying its structure into a new table of the original name without applying any of the constraints.
Then we run the test by calling the function under test, knowing that it should use the table we just faked.
After the test has run wrapped inside the transaction, this transaction is rolled back. This will revert all the changes made to the mocked table.
The test results that were stored in temporary fields are then saved in a test result table.&lt;/p&gt;




&lt;p&gt;&lt;/p&gt;




&lt;p&gt;&lt;img src=&quot;/assets/img/custom/blog/db-testing/TestingWithFakeTables.png&quot;  alt=&quot;&quot; title=&quot;&quot; class=&quot;img img-center img-responsive style-screengrab&quot;&gt;&lt;/p&gt;




&lt;p&gt;In this first blog post we learned about database testing, and how the tSQLt testing framework works. In the next post, we will go beyond the quick start example and see how to approach legacy transact-SQL, implementing tests into an existing database.&lt;/p&gt;

</summary>
        
    </entry>
    
    <entry>
        <id>/2016/10/03/what-i-wish-i-knew-earlier/</id>
        <title>What I wish I knew when I started as a software developer</title>
        <link href="https://codurance.com/2016/10/03/what-i-wish-i-knew-earlier/"/>
        <published>2016-10-03T10:10:00+00:00</published>
        
        <summary type="html">&lt;p&gt;Having worked in the software engineering field for 6 years, I sometimes pause and consider how much I have learned since I started my career. One thing that strikes me is how many things I would want to tell just-out-of-college me if I had the occasion.&lt;/p&gt;

</summary>
        
    </entry>
    
    <entry>
        <id>/2016/10/03/when-a-good-architecture-helps-you-in-your-ui-design-iterations/</id>
        <title>When a good architecture helps you in your UI design iterations</title>
        <link href="https://codurance.com/2016/10/03/when-a-good-architecture-helps-you-in-your-ui-design-iterations/"/>
        <published>2016-10-03T10:00:00+00:00</published>
        
        <summary type="html">&lt;p&gt;I’m currently working on an internal app for Codurance, which started as a pet project while I was working with my previous client. I started the project with one simple goal: to make it work. After six or seven months of trying to put it all together in my spare time, I ended up with a skeleton of a working app. However, I wasn't entirely satisfied with my work. Even though I had been test-driving all the code and all my ViewControllers were as light as I could imagine, I thought it wasn't enough.
So I decided to carry out a big refactoring and apply the VIPER architectural pattern.&lt;/p&gt;

</summary>
        
    </entry>
    
    <entry>
        <id>/2016/09/29/approaching-tdd-outside-android-ii/</id>
        <title>Approaching Outside-in TDD on Android II</title>
        <link href="https://codurance.com/2016/09/29/approaching-tdd-outside-android-ii/"/>
        <published>2016-09-29T00:00:00+00:00</published>
        
        <summary type="html">&lt;p&gt;In the &lt;a href=&quot;/2016/09/28/approaching-tdd-outside-android&quot;&gt;previous post&lt;/a&gt;, we introduced the Bank kata. We explained how we are going to implement it in Android, reviewed the different kinds of tests that we use in Outside-in and transformed a user story into a bunch of acceptance criteria.&lt;/p&gt;

</summary>
        
    </entry>
    
    <entry>
        <id>/2016/09/28/approaching-tdd-outside-android/</id>
        <title>Approaching Outside-in TDD on Android I</title>
        <link href="https://codurance.com/2016/09/28/approaching-tdd-outside-android/"/>
        <published>2016-09-28T00:00:00+00:00</published>
        
        <summary type="html">&lt;p&gt;&lt;a href=&quot;http://martinfowler.com/articles/mocksArentStubs.html#DrivingTdd&quot;&gt;Outside-in Test-Driven Development (TDD)&lt;/a&gt; can be a challenge to implement. In this 3-part post series, &lt;a href=&quot;https://twitter.com/panavtec&quot;&gt;Christian&lt;/a&gt; and I would like to share our experiences applying it to Android development and offer some practical tips for doing so yourself. In this first post of the series we will introduce the necessary concepts and present our broad approach to the problem.&lt;/p&gt;

</summary>
        
    </entry>
    
    <entry>
        <id>/2016/09/27/codurance-barcelona/</id>
        <title>Codurance Barcelona</title>
        <link href="https://codurance.com/2016/09/27/codurance-barcelona/"/>
        <published>2016-09-27T10:10:00+00:00</published>
        
        <summary type="html">&lt;p&gt;We are very happy to announce that we have opened a new office in Barcelona.&lt;/p&gt;

</summary>
        
    </entry>
    
    <entry>
        <id>/2016/09/20/server-side-swift/</id>
        <title>Server side Swift</title>
        <link href="https://codurance.com/2016/09/20/server-side-swift/"/>
        <published>2016-09-20T10:00:00+00:00</published>
        
        <summary type="html">&lt;p&gt;In December 2015 Apple open-sourced Swift, which has been a real success. Many developers are contributing, not only via pull requests directly into the &lt;a href=&quot;https://github.com/apple/swift&quot;&gt;source code&lt;/a&gt;, but also by helping to define the shape of the language in the &lt;a href=&quot;https://github.com/apple/swift-evolution/tree/master/proposals&quot;&gt;swift-evolution repository&lt;/a&gt;.
One of the things that came with Swift was server-side development. There's a new version of Swift developed for Linux with a toolset that includes a package manager, the LLDB debugger, and the REPL. This opens a whole set of new possibilities for a lot of companies, such as IBM who are currently making a huge investment in its framework &lt;a href=&quot;https://github.com/IBM-Swift/Kitura&quot;&gt;Kitura&lt;/a&gt;.&lt;/p&gt;

</summary>
        
    </entry>
    
    <entry>
        <id>/agile/2016/08/24/chinese-whispers-on-scrum-roles/</id>
        <title>Chinese whispers on Scrum roles</title>
        <link href="https://codurance.com/agile/2016/08/24/chinese-whispers-on-scrum-roles/"/>
        <published>2016-08-24T10:00:00+00:00</published>
        
        <summary type="html">&lt;p&gt;Few days ago, I attended the &lt;a href=&quot;https://skillsmatter.com/courses/151-martine-devos-scrum-master&quot;&gt;2-day Martine Devos' Certified Scrum Master, Estimation &amp;amp; Planning Class&lt;/a&gt; at &lt;a href=&quot;https://skillsmatter.com/&quot;&gt;Skills Matter&lt;/a&gt;. I had the privilege of meeting and learning from &lt;a href=&quot;https://www.scrumalliance.org/community/profile/mdevos&quot;&gt;Martine Devos&lt;/a&gt;, one of the best Scrum trainer in Europe. This also gave me the opportunity to discuss many aspects of the Scrum process.&lt;/p&gt;

</summary>
        
    </entry>
    
    <entry>
        <id>/2016/08/24/the-java-synchronisers/</id>
        <title>The Java Synchronisers</title>
        <link href="https://codurance.com/2016/08/24/the-java-synchronisers/"/>
        <published>2016-08-24T10:00:00+00:00</published>
        
        <summary type="html">&lt;p&gt;Threads communication happens primarily by sharing access to fields and objects. Although extremely efficient, this form of communication is prone to errors such as &lt;a href=&quot;https://docs.oracle.com/javase/tutorial/essential/concurrency/interfere.html&quot;&gt;thread interference&lt;/a&gt; and &lt;a href=&quot;https://docs.oracle.com/javase/tutorial/essential/concurrency/memconsist.html&quot;&gt;memory consistency&lt;/a&gt;. Synchronization is a tool that helps to prevent such errors.&lt;/p&gt;

</summary>
        
    </entry>
    
</feed>
