ITARC15 Architecting a Large Software Project – Lessons Learned

This morning I presented my “Lessons Learned” workshop at ITARC 2015 in Stockholm, Sweden. This session had previously been presented at Netponto, and was improved with more content targeted at software architects and also updated with more current information. The goal of the workshop (3,5 hours!) is to share experiences and discuss approaches in developing complex software projects. I had great feedback from the participants, and provocative and relevant questions.

One issue that did come up is the definition of “Large”: this was a large project for Portugal’s standards, plus it was complex and took a long time until release. But for local Swedish standards, it wasn’t that “large” Smile. Even so, the contents are general enough to be interesting, or so I was told. Also it was interesting to learn about some cultural differences between Portugal and Sweden – and those were much less than would be expected.

Great session, loved doing it. Here’s the slidedeck, for those interested.

«Architecting a Large Software Project – Lessons Learned» @ Netponto 50th Meeting – Lisboa 22/Nov

Two weeks ago I presented a session at the 50th meeting of the Lisbon Netponto Group, the largest community of .Net development in Lisboa. This two-hour session, which was filled with real examples, described the lessons learned in a 3-year project I was involved in as a Software Architect, and which had its first release this last summer and has seen early success in the customer organization. The compilation of lessons include the feedback of the developers in the team, and was a huge learning experience.

The slides include architecture aspects, technical aspects, as well as negotiation and functional hints. It’s not meant to be an absolute best-practices architecture guide, it’s only the result of this very specific project.

You can check/download the deck here.

Special thanks to NetPonto for the invitation, and to the audience for the participation and great feeedback in this LONG session :).

Microsoft Developer TechRefresh 2014 – Lisboa

Last week (June 18) I presented two sessions at the 2nd edition of the TechRefresh event in Lisbon. The first session (“Azure WebSites: 9 new things”) was an update of the Azure Bootcamp session I did last march, now focusing on the new[est] features on Azure WebSites. A demo-heavy session to a full room, it included:

  1. Backup and Restore (and a bit of Visual Studio Online “Monaco”)
  2. AlwaysOn
    Technorati Tags: ,,

  3. WebJobs (the SDk was updated the day before, had no time to update the demos, but the demo still worked)
  4. Traffic Manager – a new demo, it included creating sites in two data centers and then checking which gets hit from different world regions (using;
  5. Diagnostics, Monitoring and Alerts
  6. Remote Debugging
  7. Staged Publishing – showed the new and amazingly flexible “deployment slots”
  8. Realtime with SignalR+WebSockets
  9. Realtime and auto-scaling with SignalR and a ServiceBus backend

Right after this session, I was on the “Architecture Snacks” panel with Luis Calado, José António Silva and Virgílio Esteves. Each of us presented real-life architecture challenges with Windows Azure solutions (mine were both related to hybrid scenarios), and discussed possible solutions and approaches with the other panelists and audience. Good session with interesting feedback

Microsoft WebCamp 20.05.2014–Databinding with KnockoutJS

Earlier this week I did a presentation at Microsoft WebCamp 2014, a 3-track event focused on Microsoft web technologies, open source web libraries, and design/communication trends and tendencies. The session as a level ~250-300 session on KnockoutJS, Steven Sanderson’s et al. data-binding Javascript framework.

Earlier, my colleague and friend André “SharePoint God” Vala did a session on AngularJS, so we got to share information on two libraries with very different levels of abstraction for web development. Had about 70-80 people in the room, in what was session with more code samples I’ve done for some time now.

You can download the slides here or check them on Slideshare, and the code samples are here.

Global Windows Azure Bootcamp 2014 – Lisboa

The Global Windows Azure Bootcamp this year will include Lisbon. Next saturday, at Microsoft in Lisbon, starting at 09:00, a bunch of great speakers will present on Azure topics. My session will be an evolved version of the last session I did at last year’s Microsoft Developer TechRefresh, on Windows Azure Web Sites. I expect to do a demo-filled session with (hopefully) something new to show you.

Registration here.


ps: a few months back I participated with “Equipa 23” on BPI’s Appyday hackaton. 24 hours of coding of a mobile app at a great venue. We went with a PhoneGap+Telerik Kendo UI Mobile powered solution, with Azure Mobile Services as a backend, which proved itself to be almost perfect for the app. All the regular features were great (database, custom api, git), but the social integration (besides authentication, that is) and features such as image upload + transformation were more lacking. A topic for another post.

Microsoft Developer TechRefresh (Lisboa 2013.09.24)–“Power your Website with Windows Azure”

Last tuesday I presented a session at another local Microsoft event, this time focused on Azure Websites and the new features announced at Build 2013 (which I attended) and since then.

The session was mostly demo-based, and included the “traditional” WebMatrix/WordPress demo, but with the added value of demoing a content migration from another blog engine. After this I did a continuous integration, test and automated deployment demo. Didn’t have the time to show custom deployment scripts, but it was the star of the show, in my opinion. It’s easy to get it working and covers a large percentage of Webdev use cases. The following demo was simply showing how to associate a custom domain to a web site, and what is possible in terms of SSL (both kinds, SNI&IP).

The next demo was related to a request and the need to clarify that you can host wcf web services in an Azure WebSite, and for this demo I also showed , especially helpful for diagnostics and operations.

I ended the session talking about architecture, scaling, service tiers and pricing, and a Q&A. There were several questions, perhaps the most relevant being about Azure Web Sites vs Azure Web Roles. The stronger scaling possibilities, and running setup scripts, are strong arguments for Web Roles, the simplicity and more focused web offering, for Web Sites. This would be my choice, in general.

Another interesting event, with good session feedback.

AzureConf2013 Today!

AzureConf, and online free event on Windows Azure, will be held today, a few hours from now. More information at the events website here. I am especially looking forward to the IaaS, Mobile and Media Services sessions, where we have some customer scenarios ongoing.

Also interesting and related to something I have in hands at the moment is Nuno Godinho’s post “Lessons Learned: Taking the best out of Windows Azure Virtual Machines”. Interesting feedback from using IaaS. SharePoint Server has been implemented everywhere in the last few years. Azure IaaS is especially interesting for these scenarios.

Software Estimation –A Step Closer To The Silver Bullet – Microsoft Lisboa 2013.04.13 (Updated)

Tomorrow I’ll be redoing my Software Estimation presentation at SharePoint’s Community. This presentation started with an invitation to present on this topic from one of our customers, and evolved into a general presentation on Software Estimation and the techniques Create It uses. I delivered it last year at Netponto, this year is SharePoint’s Community turn with an updated version :).

There’s more information about the event here.

Update: you can find the slides here. The video of the previous delivery of the session at Netponto is here (note: contents in Portuguese). As to the session on Saturday, the topic always raises lots of interest and conversations, and this was no exception. I n my view, this topic should be studied in CompSci courses.

eCommerce Solutions on Windows Azure – Microsoft Lisboa 2013.04.10 (update)

I’ll be presenting with Raúl Ribeiro tomorrow at the Window Azure Spring Summit at Microsoft in Lisboa. The event will include several sessions focused on the Azure support for Media, eCommerce and e-Learning solutions. My session will be focused on the different eCommerce projects we have done or are developing at the moment, and the mapping of challenges into Azure components.

The registration site (in portuguese) is here. I’ll upload the slides to Slideshare after the event.

Update: the event was great. Not a long session, but the people were interested and had very good feedback. Sharing real experiences always makes a difference. Here’s the deck.

Azure FTP For SharePoint @ GitHub

After a couple of failed starts, I finally decided to start this project. The idea came to me when the first version of the Relay was launched in the Azure Service Bus, when it was still called “BizTalk Services”, but only now do I have the time to work on it.

The idea is the following: very often I have problems connecting to my company’s VPN  and Intranet, either because of firewalls in the sites I’m working at or other connectivity problems, making me have to use email to ask people to send or upload documents. The Azure Service Bus offers a great way to work around this problem. The first concept was thus to develop some kind of Windows App that could connect to a SharePoint intranet behind a firewall via the Service Bus and browse its contents, but I decided to develop a command line client instead, supporting FTP-like commands.

This approach not only offers the potential for scripting, but allows for a convenient “structure-transparent” navigation: SharePoint has several hierarchy/structure concepts (web applications, site collections, sites & sub-sites, document libraries, folders within document libraries, document sets, to name some). I wanted the navigation in this space to be fully abstracted. For example, a command like “ls” would list all these structure elements as if being the same – a “folder”, and documents as… well, documents. In a command like “cd folderName”, folderName could also correspond to any of the above structural elements. Someone using the client tool would not have to worry about which.

The current architecture is the following:

  • A command-line client that the user starts and uses just like FTP, supporting commands such as open (authenticate and connect to a SharPpoint), get (get a file), cd (change folder), ls/dir (list contents) and close (close connection).
  • A windows service exposing a set of operations via the service bus. The operations map with each of the commands enumerated above. The option for a Windows Service was based on convenience: they can be easily installed and don’t depend on IIS [1]. On the other hand, the service can be running anywhere in a customer site, and it’ll work as long as it can reach SharePoint. It can even be running in a DMZ, with more controlled connectivity. The interaction with SharePoint will be done using ClientOM.

One important note regarding the above is that the service operations will be stateless (I will probably have to setup some kind of cache/pool on the service side for perf reasons), but the client will have to keep state, such as the current base site, credentials, and “folder”.

In terms of the technology stack, this is what I envision at the moment:

  • .Net 4.5/x64/VS2012
  • Windows Azure Service Bus
  • WCF 4.5
  • Irony for language parsing on the client app
  • Wix Toolset for generating setups (install projects are missing from VS2012…)
  • Log4net 1.2.11

As of today, and note this is all very early, the status is:

  • Visual Studio project structure is created
  • Wix installer project generates an msi installer for the windows server
  • Logging is integrated and configured in the server
  • Windows Service code includes draft contracts of the operations to support, and these are already exposed via HTTP [but not in the service bus yet]
  • SharePoint Library Manager code contains some early sample code to authenticate with the product
  • The client app is still empty, but the Spike.Irony project contains a first version of the grammar of commands and a command input loop, which I’ll migrate to the client when I’m happy with it

All this said, I’ll be posting relevant notes about AzureFtpForSharePoint here, and the code itself is publicly available on GitHub: . I have also enlisted the collaboration of some colleagues to help out in the development (especially on the SharePoint side), but feel free to drop me a line or try it out if you are interested.


[1] Having experience of using the pre-BizTalk Server 2013 adapter for SharePoint, which requires an installation on the IIS of the SharePoint Servers, I know this can be a setup/configuration headache.

Microsoft Azure, Software Architecture, Systems Integration, Azure WebSites