Windows Azure… One Year After
We have been using Windows Azure for almost a year, hosting our portal (Hoteles.com.co), and the results have been quite good in general. Compared to the rest of PaaS offerings in the market, this is a great solution if your expertise is around the Microsoft stack – specially .NET and SQL Server.
For v2 we are planning to leverage more of the Azure platform, specially the Azure Storage. We will be servicing Hotel images directly from here. This could enhance the already good response times we have right now. Activating the CDN for this would bring some additional benefits as well.
The other good experience (should I say, the most important for us??
) have been around the costs. After some changes, like moving out the Content Admin application from Azure to my regular Hosting provider, we are now paying an average of 60 USD per month. Not bad for a reliable and fast platform like this with access to data in SQL Server.
However, Azure is a new platform, and although it provides a good set of basic services, the portal still lacks of some important services, some available in some other PaaS offers (like AWS), such as:
- It stills lacks an out-of-the-box UI in the Azure portal that enable Admins to monitor the load of the instances (in term of CPU, RAM, Disk Access, etc) – pretty much the functionality offered by really good tools like Azure Diagnostic Manager by Cerebrata. Why is this important? Well, because either you or the platform need to make decisions base on the load. Should we allocate another instance to accommodate an increase in traffic? — this is the base of the elasticity paradigm. The Azure portal should bring some support to define such rules. The capability to define the number of instances per day of the week (i.e. what if the solution expects more traffic during the weekend..)
- In addition, there is a lack of traffic statistics reporting in the Azure Portal. We are currently handling this through Google Analytics – but it would be great to have this integrated in the Azure portal.
- It would be valuable to have access to some “Event Log” window from the Azure Portal with diagnostic information. Sometimes your application has problem and does not start but you cannot get the error info – it is like flying blind.
The good thing is that Azure is really strategic for Microsoft, and I expect to see this functionality shortly as part of the service.
Hoteles.com.co is unveiled!
Finally, after almost many months of continuous work between myself, and two friends (Thomas and Brian), Hoteles.com.co (aka “The H-Initiative”) was published the past 25th of April.
The amount of foreign travelers visiting Colombia has incremented during the past years due to a better perception in terms of security. The idea with Hoteles.com.co was to create a catalog of the best hotels, hostels and B&Bs in Colombia. This catalog is fully bi-lingual and constantly updated. Maps are also keys to the design of the site, and a good portion of the hotels in our database have accurate locations thanks to Google Maps.
From the technical side, the site is fully optimized for speed, using the new ASP.NET MVC model, and is basically the first solution in Colombia taking advantage of the new Windows Azure platform for cloud computing.
Please check it out and let me know your thoughts!
Dissecting Azure Clouds
What are the challenges in porting your existing ASP.NET/SQL Server applications to Azure?
If you plan to use SQL Azure then migrate your DB to Azure first. Below you will find some tips to perform this process. Yes, you will find lots of things that do not work on SQL Azure. The good thing is that moving the ASP.NET will be way easier… Once completed, then connect your local application to the DB instance in SQL Azure. This way you debug your application and find additional problems. Remember that you could get the connection string through the SQL Azure portal. Test your app. Does everything work? Then move your ASP.NET app to Azure and publish it. Congratulations, you are now connected to the Cloud!
Here are few points I found migrating my ASP.NET MVC app:
- There is no support for Session Affinity (Azure is Stateless) – I’m aware that Azure load balancing doesn’t support Session Affinity – hence the existing web application should be changed if it has session affinity.
- If you get this error debugging your app in Azure: "Windows Azure Tools: Failed to initialize the Development Storage service. Unable to start Development Storage. Failed to start Development Storage: the SQL Server instance ‘localhost\SQLExpress’ could not be found. Please configure the SQL Server instance for Development Storage using the ‘DSInit’ utility in the Windows Azure SDK."
It is because the Dev Store is pointing to a named instance of SQLExpress and if you are using SQL Server like me, then you would need to do like what the error message said.
Go to where the devstore is installed i.e.
C:\Program Files\Windows Azure SDK\v1.0\bin\devstore
and type
dsinit /sqlinstance:.
Take note of the "." which indicates your current default unnamed SQL Server instance.
You will then be prompted with a screen that informs you that the installation is successful and the development storage is ready for use.
You can now start the Development Storage service. - If you get a lovely 403 – Forbidden: Access is denied. You do not have permission to view this directory or page using the credentials that you supplied. It’s because you hit the directory instead of a page. Check this page out to see how to set a default document in the web.config (web role’s don’t automatically load a default.aspx like you might expect – you have to set it): http://blogs.msdn.com/rakkimk/archive/2007/05/25/iis7-how-to-configure-the-default-document-of-the-website-in-its-web-config.aspx
- If your ASP.NET app is based on MVC, ensure that the System.Web.MVC assembly is included in the service package that you deploy to Windows Azure. To do this, for a Visual C# project, expand the References node in Solution Explorer for the MVCAzureStore project, right-click the System.WebMVC assembly and select Properties. Make sure the Copy Local option is set to True.
Here there are some tips for moving your DB to SQL Azure:
- SQL Azure Database exposes a Tabular Data Stream (TDS) endpoint to databases that are hosted in the cloud. TDS is the same network protocol that on premise SQL Server uses, therefore, a desktop client application can connect to SQL Azure Database in the same way it connects to an on-premise SQL Server instance.
- You won’t be able to connect to your remote SQL Azure DB using SQL Server Management Studio (SSMS) 2008. I guess this will be supported in R2. Currently you can only connect using a “Script Window” to an specific DB. There is no support to “USE <DB>” though.
- Remember that SQL Azure only support a subset of the services provided by your on-premise SQL Servers (check out this list of supported SQL commands, or Unsupported Transact-SQL Statements (SQL Azure Database) – MSDN).
- There is no GUI-based admin tool, so you will need to create everything (Users, Logins, DB, Tables) using SQL commands and scripts. There is a couple of community provided GUI tools to enable basic operations on your DBs. Check SQL Azure Manager
- If you want to migrate one DB from SQL Server 2008 to SQL Azure, and you expect to find some “Attach DB” or “Restore Backup”…forget it, you will need to use your good-old Bulk Copy/BCP, INSERT scripts or SS Integration Services (SSIS). If you want to give SSIS a try this could help you. Some other handy tools:
- I just found a plug-in called SQL Azure Data Sync Tool for SQL Server, but I have not tried it.
- SQL Server Migration Wizard http://www.azuresupport.com/2009/12/sql-azure-introduction/2/ . I ended up generating INSERT scripts using this tool.
- Be aware of some deprecated features while moving your DB structure and data using SQL scripts:
- ‘ANSI_NULLS’ is not a recognized SET option.
- Deprecated feature ‘SET ANSI_PADDING OFF’ is not supported in this version of SQL Server.
- Deprecated feature ‘More than two-part column name’ is not supported in this version of SQL Server. This a significant change if your using Schemas.
- Deprecated feature ‘Data types: text ntext or image’ is not supported in this version of SQL Server.
- Deprecated feature ‘Table hint without WITH’ is not supported in this version of SQL Server.
- A full list id found at Deprecated Database Engine Features in SQL Server 2008 – MSDN.
See you up there!
Live to tell about it!
Thanks god is Friday! Time to breath some fresh air, go out and do some hike.
Want to see my last known position? Check this out:
http://share.findmespot.com/shared/faces/viewspots.jsp?glId=0fsO8qVuo7rat0EBdioLWddeqUvKpLeMk
See you out there!
Off Topic:
- Should I use an ORM tool like SubSonic, nHibernate, or .netTiers? Which one of these have the best performance? I am current using bare DataReaders (which are lighting-fast), but I am sick of updating the DAL components with every change in the DB. Should I stay or move? Now or never..
- Remember the performance benefits of using SPs vs Inline-SQL? Well, since SQL 2K both methods have pretty much the same performance! Both are compiled by the DB engine. Did you know that?? Check this.
- Building a quick-n-dirty Web app to CRUD the data of the H Initiative. Playing with GuidViews, DetailViews and SqlDataSource controls, knowing their pros/limitations.
- I finally got my Windows Azure and SQL Azure test accounts. Time to current iteration the H Initiative in the clouds.
The Heat is On
I am suffering with the overheating issues of my new DELL Latitude E6400 (some Inspiron models included too). I love this machine, but this problem is getting me crazy. At least I am not the only one with the issue, and hopefully DELL will release a BIOS soon update to handle it, which looks more like a hardware design flaw. Many people with different OSs are experiencing it (XP, Vista, 7, Linux, you name it).
Some other references:
http://pchardwareblips.dailyradar.com/story/dell-facing-massive-e6400-and-e6500-overheating-and/
http://forum.notebookreview.com/showthread.php?s=b57bed765e7e7630314c81c21f70b573&t=348221&page=2
This is really embarrassing for DELL and a kick in the nuts for their loyal customers.
One guy wrote an extensive study to reproduce and analyze the cause of the slowdown, then he published it in the DELL forums and was censored by the DELL guys!!
During my research I found this amazing tool to analyze and identify the cause of slow response in your machine. If you do it right you could pinpoint the misbehave driver, disable it or just get an update. The name of this tool is DPC Latency Checker . Check it out.
Off topic: finally after many weeks I got my Windows Azure/SQL Azure invitations. Look like the H Initiative is going to have a new home in the clouds..
Introducción a SCRUM
[Beware! Spanish Ahead]
Hace un tiempo empecé a leer sobre SCRUM y como esta “metodología” podía manejar algunos de los innumerables problemas que aquejan los proyectos de desarrollo de software. Lo más interesante que encontré sobre SCRUM es que está orientado completamente a los resultados: “software funcionando que implemente lo que el cliente quiere”, además que reconoce y deja de luchar contra la marea en ciertas circunstancias de los proyectos, por ejemplo:
- Estimados certeros son imposibles
- Es utópico pensar que se pueden especificar todos los elementos del comportamiento de una solución en un documento. La mejor especificación es una aplicación funcionando.
- En la mayoría de los casos el cliente no sabe exactamente lo que quiere, y eso es natural, porque no lo ha visto antes funcionando.
- Lo único constante son los cambios
- El gerente de proyecto no sirve de mucho porque no tiene el control de la ejecución del proyecto. Los únicos que la tiene son los desarrolladores.
Decidí ir mas allá y obtuve mi certificación CSM con Boris Gogler. Luego decidi poner en una presentación en español un resumen de los aspectos principales de SCRUM. Desafortunadamente SCRUM aun no es muy popular en Latinoamérica.
Intro to Vagabonding or “Taking Back your Life”
Have you ever watched a National Geographic documentary or read a book about some gringo-loco spending months in the middle of a lost tribe in Africa, or simply walking from Turkey to Tibet? Did you ever wonder how this people do that? Are they millionaires?, do they simply receive a juicy paycheck every month with no need to work, and plenty of time for planning the next cool adventure? While the rest of humanity, at least the ones lucky enough to have a decent job, are trapped in a cubicle, in an endless 9-to-5 loop of complete frustration and boredom, counting the days for the next paycheck, and saving every penny to “escape” during a 15-days break to some crowded and overpriced beach resort…well, only if the boss is kind enough to approve the leave…
I must confess that I love to spend hours in front of my laptop in the office and I am very fortunate to love my job, but I do not want to become another corporate drone. I do not want to climb the corporate ladder, because I have not seen anyone on the top truly enjoying his life, without being a slave of his ego, power, bonus and always watching his back. In the other hand, I am not planning to giving up everything, growing dreadlocks, becoming vegetarian, and visiting 100 countries during years, with no destinations or schedule. No, that’s not my plan, at least not in this life,.. The idea is to be able to take an extended break of some months from work, and dedicate this time on whatever I want, in search of true happiness (travelling, family, volunteering, self-studying, etc.), without ruining my finances, career or family. This is not an extended vacation period, after this time, in some way you are a different person, either because you spend part of this time volunteering, or because you have new skills to bring back to your workplace or because simply you have a different perspective of the world as result of a trip. In Generation X, Douglas Coupland illustrates how some people do this on a regular basis, calling this kind of work as an “anti-sabbatical”—a job approached “with the only purpose of staying for a limited period of time (often a year)… to raise enough funds to partake in another, more personally meaningful activity”
The message is very clear: “Do not wait for your retirement, plan for the future but enjoy your life now!” This is not about being irresponsible, this is about taking back your life and defining its path based on your own decisions, not your boss’ or your bank’s.
By Travelling around the world you start to meet people who took this path with different motivations and backgrounds. In most of the cases they are coming from first world countries, in Latin America for example, people do not have this option on their minds. You could argue economic reasons, but I am tempted to think that this is not the only one, there are some other causes like: fear, cultural aspects, and insecurity. Newer generations constitute a big part of the work force in these countries; They got trained in the “race-rat” way of living by their parents, who taught them to work-hard for 30 or 40 years so they can retire and start “enjoying life” , and by a society who defines success by the amount of material goods you own. For this herd of people, having the first car or apartment are well defined milestones on their careers. As they start to climb in the ladder, get better salaries and bonuses, they simply start to spend more – “the more to earn the more you spend”, so the only way to cope with your expenses and credit card bills is simply getting a higher position in the organization (basically: “you want a bigger cheese, don’t you? then start moving faster that wheel”), working harder and adding more frustration. It is very clear that this situation is not sustainable. As I already stated, I love working hard, but you need a clear reason for doing it, and working for your bank is not a very smart one let me tell you.
Is it possible to get out of this non-sense race? Yes, it is possible. I know, because I did it.
The following tips are based on my personal experience. Books like Rolf Potts’ Vagabonding and Tim Ferris’ The 4-Hour Work Week helped me a lot on structuring it in my case:
1. Declare your independence: This is the most difficult part and where unfortunately only a few brave ones succeed. Paralysis by analysis is a common disease in this phase. The question of how and when to start this process is not really a question at all. Vagabonding starts now. Even if the practical reality of travel is still months or years away, vagabonding begins the moment you stop making excuses, start saving money, and begin looking at maps with the narcotic tingle of possibility.
2. Define an escape plan: The second thing to do is make an assessment of your financial situation. How much is your total debt? How much money do you really have? If you decide to take this path you will be working every day for your liberation, you will make work serve your interests. Forget about that new faster car, cool phone or exclusive apartment. Reduce your expenses to the minimum and define from now a serious savings plan. How long do you want to take off? 6-months, a year? Your escape budget will be defined according to this. Include in that budget all the money you need to clear your debt.
3. Independence Day has come: The day you are finally debt free – that day you will walk in your office feeling more important than the CEO. From that day, you don’t give a shit about anything. From that same day, all your fears disappear. You are a free man.
4. Be free but not Stupid: you need to define how you are going to leave the cubicle. Unless you are changing positions you would need to come back in the future. Ask your HR department about the company’s sabbatical or unpaid leave policy. If that policy does not exist (as in most companies in Latin America!), the HR lady does not have a clue, or simply you do not want to come back, you can make strategic use of a personal-freedom technique, popularly known as “quitting”. Yes, quit, but do it as a gentleman, this is a small world and you never know.. But, even leaving your job in a more permanent manner need not to be a negative act. You should be even proud of that “hole” in your resume. Enthusiastically include all your positive experiences acquired during this mini-retirement period. Your next employer will be interested and impressed (and a little bit envious). In my case I have so much time to sit down and learn about many software development technologies, methodologies, and I even got an important certification on my industry. If you are going to quit, I-Resign is a valuable resource with advices and templates for diplomatically doing it.
5. Ready, set, go!: ok, today is your last day in the office, from now on you are the only responsible for defining your career path, not your boss, you know exactly where do you want to go, and only you will define your daily agenda. Get your last paycheck, say goodbye, leave the building and do not look back.
6. I am free, now what? from my personal experience I got to tell you that having a clear plan from the beginning of your time-off is very important. Without that, you will be simply loosing your time and savings, going back latter to the marketplace with no extra value and new debts. Define a plan and focus your efforts: a common mistake is getting involved in dozens of different activities because you have plenty of time.
My personal experience: in October 2008 I decided along with my wife to take a break after the upcoming born of Martin, our 1st child. In May 2009, in the middle of the worldwide economic crisis I quitted from my successful position as senior consultant for one of the biggest corporations in the World, to leave the middle-east and come back to my country for a while. Either too brave or very stupid. Fortunately, destiny did not let us down, I have enjoyed so much my time with my wife, home, our baby, and in the mean time I have learned so many things, traveled for weeks, read many books and I got ready to go back in the corporate train with new ideas and more energy. I am happy and I do not regret what I did for a nanosecond.
Have you ever planned to take a break? How was it? Please leave your comments, experiences, advices and other rants.
Amazing: No “Generate SQL scripts” from ERD model in Visio 2007
After spending a couple of hours designing an ERD model for the H initiative I realized that there is no Generate SQL Script in Visio 2007.. later I confirmed it here… lovely, but in some way I am used to this “incomplete functionality” in MS products.. So using MS Visio for DB modeling is pretty much useless…unless you need a cute diagram to be included in your design docs….also useless.
Upgrading Win7 from RC to RTM…
A pain in the nuts so far, but with some hacking included at least I won’t have to do a fresh upgrade. Wasting two full days reinstalling a machine is no longer fun..
Update (10/12): I wish I had reinstalled my machine from scratch with the RTM version…. the upgrade process (I followed this) became painfully slow…you won’t believe this, but it basically took almost 3 full days in one part of the process, and then it miserably failed!! leaving my laptop with a lovely “BOOTMGR is missing” error when it tries to boot… so I had to rebuild my machine anyway… sorry, no weekend for you Jose. I had to work on my Mac instead during these days (oh yes, I have one, and I love it, especially for organizing my photos with Aperture).
Intro to the Microsoft Azure Platform
Do you want to read an informative and hilarious review of the new Microsoft Azure platform? Check this out: http://www.theregister.co.uk/2008/11/03/dziuba_azure/ Lovely, and quite useful if you do not have time to read long boring analysis, or blog postings focusing only on the cool geeky part instead of the practical side of this technology.




