Agile Portugal Session – Don’t Blindly Follow

I did a session on Agile Portugal 2015 titled Don’t Blindly Follow. It’s based on a post by Mike Cohn that left me wondering why so many teams I know adopt something (eg: Scrum, Kanban) and stick to it without questioning if it’s really fit for them.

Super kudos to the team that organized the conference. It’s been growing fast for the last couple of years and it reached more than 300 attendees. Very excited for next year.

How to be in a popular rock band, have a full-time job and stay sane

I’ve written a post about having a great career while playing in a band. What I’ve learned about leadership, autonomy and working remotely.

Hope you like it. If you have simliar stories, I’d love to hear from you.

Tech Meetups in Lisbon for next couple of weeks

There’s so much happening on the tech scene in Lisbon right now. One of the things I’m more proud of while working on the community side of Rupeal is knowing we’ve helped developers get great content.

I was squeezing some of the next meetups in my calendar and realized this could be interesting to you as well.

Hopefully this list will be more and more interesting each month.

Feb 18 Lisbon Conversion Stack
Feb 19 XPlat (Cross Platform Microsoft) w/ Josh Holmes
Feb 19 require(‘lx’) – JS, Node
Feb 19 phplx February Meetup
Feb 19 Xamarin Experience
Feb 20 IoT at Microsoft
Feb 21 Women in Tech weekly meetup
Feb 24 Scala – “The Play Framework at Codacy” & “Challenges of moving a Java team to Scala”
Feb 26 Productized Talks

You can also checkout Kwan, we’ll try to keep it up to date with new meetups as we know about them.

Life for the past year

Talking about code while having delicious Belgium beers. This is Rupeal. Picture (C) 2013 Rupeal

It’s been way too long since I’ve written something here. Life’s been full of changes and new challenges for the last couple of years and writing has gone way down on my list of priorities. Enjoying a holiday, I decided today is a good day for a status.

Change #1 – Welcome Lucas, the new family member

Lucas Santa-Clara Fiel was born. Being a dad is the ultimate experience and my kid has thought me so much about me and life in general. The scary thing is, this is only the beginning. What awaits for the upcoming years is a secret only time will tell, but let me tell you, I’m loving every nanosecond of it.

Change #2 – Goodbye Fullsix, Hello Rupeal / SWAT

After 5 and a half years at Fullsix Group Portugal, I’ve joined RUPEAL as Chief Technology Officer. I’ve been a close follower of the company since it began and many of the people there were my colleagues in college. The time at Fullsix was amazing and I can’t thank enough for the people I’ve worked with along the years.

Rupeal’s culture is very different from the typical IT companies in Portugal, and this is even more noticeable in the SWAT team. Everyone knows all salaries and everyone has a say on promotions, hirings and overall team strategic direction. Adding to the CTO role, I’m also managing this team and everyday I’m learning something new. SWAT are a Rupeal team focused on creating awesome web products, from UX to Engineering, mostly focused on Ruby on Rails. More on this later (I was a Microsoft guy, remember?). We only use Scrum and our main source of clients and projects is word of mouth, which is a very good sign for me that this team, basically, rocks!

Change #3 – Welcome Rails and Apple

Most of my career has been around Microsoft technologies – ASP.NET, SQL Server, Azure and Silverlight. I’ve been a regular speaker at Microsoft events and, most of the times, a big fan of their products. My new team is focused in Ruby on Rails and everyone uses a Mac (including me, and I’m in love with the 13″ Air). By joining SWAT I had two choices – learn these platforms or try to push MS ones. The choice was obvious and learning Rails and working on a Mac have greatly opened my horizons on some things. I’ve not stopped using Microsoft. I’ve just added some new ones. We do some work on the Microsoft stack (ASP.NET, Web API, SQL Server, Azure) and our latest experiences were great. Microsoft is in the right direction for web development and, IMHO, is now better than Amazon for PaaS in the Cloud. But my time on Rails was very important to really understand where the new concepts in MS stack come from: migrations, continuous deployments, etc…. This is not just coding, this is a whole new mindset. Most of my time, however, is spent on Salesforce, Excel and management stuff.

See you really soon. In the meantime, check Rupeal’s new website and the really cool video below.

Umbraco v5 is dead and why I think it was a good decision

If you are into .NET web development, you’ve probably heard and tried Umbraco, the leading open-source content management system for the Microsoft stack. For the past few years, Umbraco has turned into a solid, simple and powerful solution, powering around 100.000 websites around the globe. Yet, if you’ve missed the news, the awesome new version of Umbraco was killed after RTM.

Back in 2008, me and the heavy-metal-guitar-player Marco (previous software architect) had the task of choosing a new CMS to be used at Fullsix Group Portugal. We are a group of digital marketing agencies with some of the biggest Portuguese clients and our custom-built CMS was far from serving our needs at the time. After some research and small pilot projects, we decided on Umbraco. And what a good decision it turned out to be!

At the time, Umbraco was still in version 3. The main selling points were:

  1. Simplicity (for developers and end-users)
  2. Zero-frontend, meaning we had full control of HTML
  3. Extensibility
  4. Open-source

While far from perfect, we did a couple of projects on v3 and were happy with the results. By this time, version 4 was released and we were spreading the word among the teams and more and more people were being introduced to Umbraco. At some point, version 4 had a big change, with a whole new data schema and Razor support. Development was even easier than before. Cool, don’t you think?

Fast forward to v5 and more than one year of following the development of the platform. By now we deployed more than 100 websites on Umbraco 4, we have a team of around 20 developers loving the platform, clients are happy, marketers are happy and everyone is eagerly awaiting the new version. We created the Portuguese Umbraco community, presented it at several industry events (like this one and this one) and watched other agencies adopting Umbraco in a hurry.

The changes introduced in v5 were, in a single word, astonishing. A new data layer, custom trees,, an MVC frontend, a new plugin architecture… WOW! More about this here. What could go wrong? Apparently many things. If you read the above post, Paul Sterling from Umbraco states that “v5 has become an overly complex system that has turned into the very monster Umbraco was originally created as a reaction against”. And he goes deeper into “It was difficult to use, had performance issues, and was generally not an improvement over v4. The vast majority of Umbraco community members were continuing to develop and release using v4.”.

I fully agree with Paul’s comments. What was initially a simple yet powerful product turned into a complex, unstable, slow and unfinished one. Remember the top feature that made me choose it in the first place: simplicity. That was key for Umbraco. That was lost in v5. By putting all focus on v5, we started having issues in v4 as well. Mostly, performance and caching issues. v4 became less stable that before. Which means there’s not a rock-solid Umbraco version at the time of this writing. Hopefully 4.8.0 is out at any time now and most issues will be fixed. And there’s my main source of happiness for killing v5: get the team together, fix what became broken in v4 and bring the best of v5 into it. It has a history of excellence in previous minor versions, so it has a good codebase. And did I tell you the Umbraco team is really smart? They are. They’ll know what to do and how to do it. After all, it’s hands-down the best open source CMS for .NET.

On top of this, Windows Azure, the cloud platform from Microsoft, whose website is actually built on Umbraco, was not supported in v5. How can you release a major version and drop support for one of the things you were good at? This one I don’t get.

Honestly, I think v5 architecture was a very good one. It was the implementation that turned out wrong. Still, I believe the team did an amazing job and, in the end, were humble and smart enough to kill it before adoption started growing.

Finally ,when chosing a CMS, I don’t care if uses MVC, WebForms or whatever. I care about developer and user experience, extensibility, stability, performance and features. For me, WebForms and Umbraco 4 are enough. (We do use other CMS – Kentico – for the larger projects, but I’ll keep it out of scope here). So, bring the best of v5 into v4 and I’m sure Umbraco will be on the right track again really soon. We’ll be eagerly waiting the improvements.

PS: Can we ask for native Windows Azure support, please?

Useful tools for SQL Azure deployment and backup

I was a guest speaker yesterday at Microsoft during a Windows Azure training. We’ve been doing some medium-scale work in Azure and I was there, together with create|it’s CTO João Pedro Martins, to talk about our real world experiences with Windows Azure.

One of the topics was SQL deployment and backups. Although Microsoft has worked hard to ensure that SQL Azure is the closest possible to SQL Server, there’s a couple of things you should be aware of. There’s a good comparison chart at I won’t discuss the differences. Instead, I’ll just share some tools and practices we’ve been using, specifically for deployment and backups.


For most of our on-premises database sync work we use RedGate tools, mostly SQL Compare and SQL Data Compare. We’ve had good experiences with these tools on SQL Azure, but for BIG databases, they may not be the best solution. There’s a good description of some problems you may encounter at SQL Azure Connection Management. Mostly, for BIG databases, we’ve experienced more than once connection timeouts.


An excellent set of tools for large database deployment is SQL Azure Migration Wizard, which is free and open-source, hosted at codeplex. Inside the downloads area of the project, you’ll find SQLAzureMWBatchBackup and SQLAzureMWBatchUpload, which are command line tools and can automate your SQL deployments. Read the documentation of these projects for all the details.


You’re using “the cloud” and you should not worry about backups, right? Wrong! Although Microsoft ensures that your data is not lost, Microsoft can’t protect you from the most common source of data loss: human error.

Sometimes we have weekly or more deployments of a website hosted on Azure. Even if don’t have this process automated, are you really going to remember backing up your SQL Azure database before deployment? Every time? Every single time?


We’ve been using the SQL Azure Backup tool from RedGate and loving it. It has been discontinued as RedGate now provides a service for this (RedGate Cloud Services). However, the things I love about SQL Azure Backup are:

  1. It’s free Sorriso
  2. It has both a GUI and a command-line, which means YOU CAN AUTOMATE YOUR SQL DEPLOYMENTS


Our current set-up is, for each project, we host at one  of our on-premise servers, a batch file that calls the command line version of SQL Azure Backup once a day. We’ve been using this for quite some time now and never had a problem.

This creates a bacpac file (a very compressed and human readable format) with all data and schema from your database and stores it in your Azure Storage account. Given the cheap price of storage, don’t worry about keeping backups in there.

DAC exports are not transactionally consistent, so if you want to ensure this, you can use the /CreateCopy switch of SQL Azure Backup. This creates a transactionally consistent copy of you database and uses that database for the bacpac generation.

Just a quick note: SQL Azure Backup calls an Azure service called SQL DAC Import/Export, so this is an async process. Your backup may not be performed immediately, but we’ve noticed that it never exceed the 1 minute mark. SQL Azure Backup polls the DAC service, so it only terminates once the backup is complete.