Tuesday, April 23, 2013

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.

Friday, April 12, 2013

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.

Tuesday, April 9, 2013

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.

Friday, April 5, 2013

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: https://github.com/lokijota/azureftp-for-sharepoint . 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.

Wednesday, April 3, 2013

BizTalk 2013 RTM and Azure IaaS Support

A few days ago I attended the Oporto BizTalk Innovation Day with my colleagues Pedro Vala and Tiago Oliveira. Steef-Jan’s session on cloud based adapters was interesting (although part of it was available as an extension to BizTalk Server 2010), and Tord Nordahl’s session on “Proactivity in BizTalk”, which was really focused on the “IT Pro” point of view, was also very interesting. I don’t think I’ve ever met a BizTalk Admin ever before, with many projects done. Another IT-focused talk was done by Saravana, on BizTalk360, and the product – now in version 6.0, is absolutely impressive. With a friendly pricing model (even for local standards), we’ll recommend it on all future and present customers. Check it out!

Akshat Sharma from the product team did a keynote and answered some questioins, where my highlight was when he said that BizTalk 2013 will be on Azure Iaas when IaaS goes live/GA.

Also at this event the local MS people announced the RTM of BizTalk Server 2013, which has already been extensively covered elsewhere (here or here or this post by Saravana is also interesting). My personal highlights are for the now-native Azure Service Bus integration, the new SharePoint adapter using the client object model (I’ve spent hours troubleshooting installation problems with the previous one), and the including (at least!) of the ESB Toolkit in the base install/config. The REST support also gets an honorable mention :).

Tuesday, April 2, 2013

I’ll Build 2013 :)

Just did the early-bird registration at Build 2013, this year in San Francisco, who’s recognizable bridge was the inspiration for the one we have in Lisboa. I’ll be attending with Raúl, a friend and long-time colleague, and looking forward for everything regarding Windows Azure (obviously), Office 365 (which we’ve been using for over a year now), and Windows development.

The first time I went to PDC (in 2005, I think), with several other local “community influencers” at the time, it was one of the most interesting experiences I’ve had from a technological point of view. Really looking forward to return to its “successor”. :)

Transitioning Dev Environments Azure IaaS

The internal policy at Create It is to use Virtual Machines to do all the coding, with different environments for Web development, BizTalk, SharePoint, etc. My personal dev-pc is still a 8Gb/Core i7 Sony Vaio, but I’ve been using it less and less, replaced by a slim Asus Ux31 Ultrabook which weighs much less and has much better autonomy. At only 4Gb/Core i5, however, I can’t really run VM’s on it. A few weeks back I decided to evaluate both Azure VM’s and TFS Service for a new project we started, but from the point of view of development itself and not “just” hosting a solution.

This is a web ecommerce web site for one of a widely known quality brand in Portugal, which will be hosted with Azure Sites or IaaS, and uses the Service Bus to integrate with internal systems (SAP). First I created a small VM, installed SQL express and visual studio 2012, and worked remotely via Remove Desktop. Things were acceptable, but RAM was almost always maxed-out, so I changed to a Medium VM with 3.5Gb. One cool detail is that you don’t have to reformat your VM to make this change, just change the configuration in the Azure Portal (the benefits of virtualization), and change is immediate.

After three weeks, the experience has been great, and not having to depend on hardware but relying on a “thin client” model is a great freedom, and I don’t have to worry about the latency of my external USB3 disks. Graphical fidelity and UI responsiveness is obviously not the best, but I don’t feel latency when typing or debugging.

One problem I have is that sometimes I am unable to remote desktop to the VM using the saved rdp file, and have to do it again via the azure portal, but when I connect, the VM hasn’t been restarted. Didn’t spend the time to diagnose the issue yet, it just happened a couple of times. Anyway, it’s a great experience, very convenient

As to TFS Service, I just want need it to go GA with public pricing FAST, because I’ll move all our projects there and discontinue our internal TFS. Everything we’ve tried has worked fine, check-in/check-out is quick, issue management is great. We still use Final Builder internally to orchestrate the builds, with its outstanding graphical build-configuration tool, but this might change.

The next challenge I’ll look into is having more people using the dev VM, or copy&replicate this VM for other devs to use. We also installed redundant ISP connections to get ready for this change in the short term.