Microsoft SQL Azure evolving nicely

Over the last few weeks I have been testing out Microsoft’s “cloud” based database service called SQL Azure and I have to say it is quite impressive so far.

Although lacking in full MS SQL server features (no reporting services available yet) it has proven to be reliable, fast and a very short learning curve for those already familiar with SQL Server. All good so far then.

There are some immediate blockers you may come across if you are going to build web-based apps and host them in Microsoft’s cloud…

1) You need Windows 7 at least, you cannot build or deploy asp.net apps using XP as it has a reliance on IIS7.

2) You need SQL 2008 R2 Management Studio to connect to your instance of SQL Azure.

As you probably know SQL Azure databases are currently limited to either 1GB or 10GB sizes but this will be increasing to 50GB as Microsoft enhance the Azure platform over the coming months. You can keep an eye on the SQL Azure Team Blog and Twitter pages to keep up with SQL Azure as it evolves….the links are…

1) http://twitter.com/SQLAzure

2) http://blogs.msdn.com/ssds/ 

There are a number of self learning labs and training courses on the SQL Azure Team blog and there is also a free web-based training course run by Microsoft UK starting Monday 10th May (webcasts will be recorded incase you miss the start). Details here … http://geekswithblogs.net/iupdateable/archive/2010/04/20/register-now-for-the-uk-windows-azure-self-paced-interactive-learning.aspx 

Microsoft have certainly got off to a good start with SQL Azure. It is very easy to set up an azure account, create a database, copy over any data to it (you can use BCP, SSIS) and then just connect to the database in the same way you would to your current on-premise SQL Server.

 There are lots of things to consider about using SQL Azure in production as it is not suitable for everyone or every application. But having made it a small jump to get started with SQL Azure it makes it easy for you to figure that out for yourself.

Here is another good blog post from another persons experience of SQL Azure… http://www.keepitsimpleandfast.com/2010/01/my-first-experiences-with-sql-azure-sql.html

Skype for Businesses: Pros & Cons

Many businesses are looking to reduce costs these days. One commonly discussed way of doing this is by reducing your phone costs by using Skype (a partially free VOIP solution). Skype has positioned itself as a free service and it is indeed free to use when one Skype user calls another Skype user. In general the quality of these Skype calls is good.

However, there are other things to consider when you are thinking about using Skype in a business. For a start it is not free to call non-Skype numbers and there are other additional costs such as charges for voicemail and for having a fixed number that other people can call you on.

I have put together some pro’s and con’s for using Skype in a business.

Pros:

  • Skype to skype calls are free (but there may be broadband or internet charges e.g. in hotels)
  • Cheaper (but not free) Skype to fixed line and mobile charges in comparison to traditional carriers.
  • Potential to connect an IP PBX to a Skype PBX gateway and onto the internet. This way existing internal company phones have the option of using skype for dialling out. e.g. dial 8 to use skype
  • Potential to use Skype over a mobile phone but requires a very good 3G network which is not widespread

Cons:

  • File transfer & messaging via Skype cannot be audited or controlled by your IT department. There is a major risk of Intellectual Property loss because Skypes traffic is not auditable. This problem should be taken very seriously and many businesses do not allow its employees to use Skype as a result.
  • Skype is a “Peer-to-Peer” technology which means a company machine can be used as a node to relay skype traffic from unknown external users. This can severely impact the performance of your company network.
  • It is likely that a full roll out of Skype to your company employees will require additional network bandwidth at your office.
  • Quality of call\video is dependent on bandwidth in hotels, airports, customer premises all of which are not guaranteed.
  • Video calls require a lot of bandwidth.
  • 3+ way video calls do not work well (in my experience).
  • Employees will require headsets e.g. €10-20 per bluetooth headset.
  • Employees will require webcams to carry out video calls.
  • There are additional costs, for example
    • €50 per employee, per year to have a skype number that other non-skype people can call you on
    • €15 per employee, per year to have voicemail
  • Business Subscription model available at €8.95 per employee, per month to cover most of skype services
  • Under the Business Subscription model a “Fair Usage Policy” exists that limits each user to total of 6 hours calls per day and no more that 50 distinct numbers per day. If these limits are reached then additional rates and connection fees apply e.g. 3c connection fee plus 16c per minute to call an Irish Mobile, 20c per minute to call UK mobile

There may be more aspects that I have not touched on but there should be enough there as a starting point. Please leave a comment if you think there are other points that should go on the lists.

Spreadsheets – Dr. Jekyll & Mr. Hyde

Jekyll & Hyde

Over the years I have come across companies who end up with a huge reliance on spreadsheets to manage critical functions of their business. Unfortunately spreadsheets were never intended as a replacement for properly designed database systems yet it doesn’t stop people trying. It is common to see spreadsheets being used in the budgeting & forecasting process as well as time recording, invoicing, resource & capacity management and so on.

It is understandable that this happens, it is very easy to start a new spreadsheet and in no time at all someone has what looks like a good system. It is a quick fix but people love it because it solves an immediate need. Very quickly a department or team come to rely on the spreadsheet and overtime more people add new functionality to it because it is so easy to do.

Then it starts to get ugly. Within no time at all there are multiple “versions” of the spreadsheet but no control, no security, no support, no documentation and no change control. Worse still there are often individual spreadsheets per week, per client, per team and suddenly all the information the business needs is spun across hundreds of spreadsheets. It only when someone starts to look for a report that trends the information over time or filter it for a particular project that people realise that they just can’t do it. 

Inevitably the whole “system” has grown into a monster, too large for anyone to understand it or maintain it. Comprehensive reporting (or Business Intelligence), if even possible, is very difficult to do due to the multiple versions, different structures and inconsistencies between spreadsheets.

Another major issue with using spreadsheets this way is the significant reliability problem. Research studies (Stephen G. Powell, Kenneth R. Baker, Barry Lawson (2007-12-01)) estimate that 94% of spreadsheets deployed in the field contain errors. I have seen spreadsheet “systems” that were used to determine weekly payroll commissions and bonuses which were far from accurate. Sometimes an employees bonus had another nice unexpected bonus on top of it. But it was impossible to diagnose the system issue when it involves hundreds of spreadsheets all with their own formulae and equations. Worse still, the employee who was the spreadsheet wizard and had originally built all the spreadsheets had since left the company.

It is important that we understand when to use spreadsheets but more importantly when to stop using them before you hit the problems outlined above. Spreadsheets are great for end-user data analysis and to an extent for prototyping new systems. But just keep an eye out for the tell tale signs that you are beginning to see the start of the spreadsheet monster. It is possible to replace spreadsheets with a proper database system and it is something I would strongly recommend.

App_Offline.htm

There is a handy way of taking an asp.net 2.0 application offline immediately. It is not that well known but all you have to do is place a app_offline.htm file in the root directory of your web application. Thanks to Scott Guthrie blog for the info…

Placing the app_offline.htm into the root directory will shut-down the application, unload the application domain from the server, and stop processing any new incoming requests for that application.  ASP.NET will also then respond to all requests for dynamic pages in the application by sending back the content of the app_offline.htm file (for example: you might want to have a “site under construction” or “down for maintenance” message).

This provides a convenient way to take down your application while you are making big changes or copying in lots of new page functionality (and you want to avoid the annoying problem of people hitting and activating your site in the middle of a content update).  It can also be a useful way to immediately unlock and unload a SQL Express or Access database whose .mdf or .mdb data files are residing in the /app_data directory.

Once you remove the app_offline.htm file, the next request into the application will cause ASP.NET to load the application and app-domain again, and life will continue along as normal.

It is also useful to know that the app_offline.htm file is also used when you publish a web app to an IIS webserver. Visual Studio takes care of placing an app_offline.htm file into the root directory and removes it after the publishing has completed.  By default the following text is displayed from the htm file..

“This application is currently offline. To enable the application, remove the app_offline.htm file from the application root directory”.

Visual Studio uses an app_offline.htm file that is stored in [User Document/Settings  Path]\Application_Data\Microsoft\VisualStudio\8.0\ so if you want to customise the message that is displayed during a Visual Studio project build & deploy then just customise the file in any way you want.

The importance of data backups

“Our business has been devastated because we haven’t been able to operate for 2 days. Our hosting company had some sort of server problem and our company website is down. To all our clients it looks like we have gone out of business. Worse still we recently placed some new ads with a big emphasis on directing people to our website for more information.”

The above comment is a real quote from a business owner who’s business clearly relied on IT to function. What was even more worrying was a further comment from the business owner in response to being prompted to review their approach to data backups…

“I’m not sure what you mean by ‘reviewing data backups’.”

Any company using IT should ensure they have plans in place and precautions taken so they can recover from events such as server failures, lost\stolen laptops or data, fire, flooding and any other of the many unfortunate things that can happen.

And don’t assume this won’t happen to you. Bank of Ireland, Bord Gais and the HSE are just some of the high-profile cases where data was lost via stolen laptops. I also know of a Dublin based IT company who’s premises fully burnt down as a result of a fire in an adjoining building that was caused by a phone charger shorting out. These things happen all the time! Luckily the IT company mentioned had good disaster recovery plans in place and were not overly effected, their business recovered quickly and continues to function.

Even the big companies are not immune to IT failures but it a huge embarrassment when their disaster recovery plans fail. Danger, a subsidiary of Microsoft, lost a lot of customer data recently…and couldn’t get it back. It is amazing that they did not have effective data backups. They had to post the following apology which is scant consolation for business and personal users affected.

Regrettably, we must inform you that personal information stored on your device — such as contacts, calendar entries, to-do lists or photos — almost certainly has been lost as a result of a server failure at Microsoft/Danger. Our teams continue to work around-the-clock in hopes of discovering some way to recover this information. However, the likelihood of a successful outcome is extremely low.

Another high-profile case happened just last month. A US cloud storage supplier,SwissDisk, suffered a catastrophic hardware failure resulting in users being unable to access their data. They too had no effective data backups and had to post another embarrassing and damaging statement…

Attention SwissDisk users: We regret to inform you that due to an unplanned and unforeseen catastrophic hardware failure caused by multiple simultaneous events the engineering staff was unable to restore the SwissDisk file server to it’s previous status. We are very sorry for the interruption in service.

dilbert on disaster recoveryBusiness owners are always told to engage the services of accountants and legal experts. But those relying on IT must consider the impact of a disaster event on their business and I suggest you talk to someone who can give you the advice needed with particular emphasis on disaster recovery and data backups. It is a lot easier to recover when you have the right plans in place. The New York Times posted a good brief overview of disaster recovery last month for those looking for a starting point…the article is here.

The Balloonboy story on Twitter

Twitter was taken over by the “ballonboy” story this evening, so much so that twitter crashed a number of times. The story was about a young boy who apparently climbed into a large homemade balloon which subsequently broke free from its tether. The balloon had been seen drifting thousands of feet in the air, travelling at up to 25mph.

It eventually landed but it was discovered the boy was not inside. As of this point in time the story is still developing and the boy is still missing.

The power of social media and twitter in particular is again something to admire. Literally thousands of “tweets” per second were pouring into twitter. Many were from people just following the story but some people posted up very useful links. For example, one person posted a link to a live audio feed of the Colorado State Patrol where you can listen to live updates of the search for the missing boy between the various police units.

Some sample tweets….

Balloonboy story on twitter

Balloonboy story on twitter

This is what “Web 2.0″ is all about and it will be interesting to see how this progresses over the coming months and years both from a personal and business point of view. Do not get left behind!

SWAS – Software with a service?

Saas Hype

Saas Hype

Saas (Software as a service) is a growing market. Check the wikipedia definition of Saas if you are unsure of what it is.

However, I think it is missing an important aspect that prospective customers will need. And that is a level of service and consultancy that most customers will want but seems lacking with a lot of recent Saas offerings. It is all very well building an online application (a web app), hosting it somewhere on the web and offering the typical 3 tiered pricing of “Free”, “Standard”, “Enterprise” editions of your web app. But what about offering a complete consultancy and expertise with it, after all the web app is just a piece of software!

How about offering an initial consultancy to figure what the customer wants, how best your web app can solve their needs, full training, ongoing customisations and close support. So how long before we see “SWAS” – Software WITH a Service?

I don’t see a future for many of the adhoc Saas apps that don’t have a complete business behind them or don’t at least plan to offer more that just a web app. Saas is currently too much about technology, too much about the perception of making easy money, too much about marketing buzz.

Social Media: U2 opening night

U2 opened their 360 Tour in Barcelona just 30 minutes ago (as I write this it is 21:30 on June 30th). You will probably see it in the news tomorrow or read it in the paper in the morning. But why wait?

If you don’t appreciate the power of social media just check out what I could easily access between 21.00 and 21.15 this evening, just minutes after the concert started.

Videos

I found a link on twitter to the first video 6 minutes after the show opened. It was taken from a mobile phone and sound quality while not the best gives you a good sense of the occasion.

u2 video

u2 video

 

Real Time Pictures

There is a constant stream of new photos being uploaded on twitcaps.com

u2 on twitcaps

u2 on twitcaps

 

Real Time Chat (from twitter)

Here are just some samples from twitter from people at the concert and following it themselves on twitter.

u2 on twitter

u2 on twitter

This is amazing stuff. People are closer than ever before, information is real time and to think I remember the very first day I used the “internet” in college back in 1996.

Building Web Apps: Part 1. Where to start?

dilbert on databases

dilbert on databases (c) Scott Adams, Inc./Dist. UFS

Part of what I do for a living is building information systems. These systems, generally web based applications, solve business needs such as time recording, billing, forecasting, expense management and so on.

I thought it might be useful to give some pointers on how you can start learning exactly how to build a web application. I’ll provide an approach on where to start, what good learning resources there are and will show sample code along the way.

Obviously there are a lot of different technologies you can use to build web applications. I use Microsoft technologies such as ASP.Net and SQL Server (a database server).

Don’t get too bogged down just yet on the specifics. I am going to start at the beginning, the core of any web application…the database and in particular SQL (the code that is used to talk to a database).

What is a database?

The database is the most important part of a system. If you understand databases and sql you are well on your way to building a web app. This is where all the data is stored. You need to be good at dealing with the data, know how to use it correctly and ensure that the database is designed correctly (very important). If you don’t then you may as well be a Formula 1 mechanic who doesn’t understand engines. No matter how flashy and aero-dymanic the cars bodywork is it just isn’t going to perform or win any races.

Databases are everywhere. So, for example, when you use your online banking all the transactions you see on the screen were retrieved from a database and displayed on screen. You can use SQL to retrieve that data and also to update any changes to that data back into the database.

Here is a very simple SQL statement that would retrieve your transations in your online banking.

Select TransactionDate, Description, Amount
from Transactions
where CustomerID=340

As you can see SQL can be very simple and easy to read. The above statement is asking the database to retrieve data from a table called “Transactions” related to a CustomerID of 340. A table is a bit like a single spreadsheet where all the data is stored in rows with each column representing a piece of data. In this case the spreadsheet would have 3 columns, one for TransactionDate, one for Description, and one for Amount. Now, please be aware that some database people will get upset by comparing a table to a spreadsheet. It is a purist thing but to help you get some analogy into your head it is a good comparison for starters. 

It goes without saying that the above is a very simple example and there are lots of very long books written about just partial aspects of databases. But don’t worry, you are just starting out and you can learn more as you gain experience.

So, what are your next steps?

  • Read about what a database is (search google for “What is a database?”)
  • A good SQL book (one I used in college) is LAN Times Guide to SQL. This is a good place to start.
  • Check out these useful resources from Michael Lang (lecturer in NUI, Galway)
  • Start learning SQL, W3Schools has an online tutorial and demowhere you write SQL.
  • There are other beginner books on Amazon such as Databases Demystified

In a future post I will cover more on databases and SQL. Just remember that databases and SQL are absolutely core to building systems. You need build up your skills in this area first.

Cloud Computing Sceptic

cloud computing - ?

I just finished reading a new book on Cloud Computing called “Cloud Application Architectures: Building Applications and Infrastructure in the Cloud” by George Reece. If you are looking for a concise overview of cloud computing and the Amazon Cloud Infrastructure (EC2, S3 etc) then it is worth a read. It leans towards the technical side more than just being an executive summary.

I am sceptical about cloud computing becoming as prevalent as the marketing buzz says.

What is the core selling point? The “cloud” can provide massive scalability in terms of computing power. But this is only applicable for those very few companies who need to scale very quickly on an ongoing basis or perhaps just periodically, just like Amazon does.

Amazon has massive traffic coming to their sites and has huge peaks around holiday seasons. They need to be able to scale quickly. They don’t want to invest hugely in IT just so they can accommodate the peak demand. This would leave underutilised computing capacity during the non-peaks. Have they now just come up with a great way of selling their spare capacity and profiting on providing additional capacity beyond that? Remember that Amazon were the leaders in cloud computing before other vendors followed them.

Most companies don’t need this scalability. In fact it would be easier, and cheaper (currently), to use a managed hosted server rather than the cloud options from Amazon.

The “cloud” is also very unreliable. If you set up some virtual servers on Amazons cloud infrastructure you have to plan for these to fail, they absolutely will fail and more often than a physical server in your data centre. Now you have a whole new learning curve.

My list of major concerns for Cloud Computing:

  • More Expensive
  • Less Reliable (this can be mitigated but there is a large learning curve, do you need another layer of complexity in maintaining and developing systems?)
  • Security is a major issue that needs to be planned for
  • Little or no portability between the different cloud vendors (lack of standards)
  • Licencing issues. Not all software vendors have licencing options for scenarios where you are using their software in the cloud (per hour licencing versus per server licencing)

Lets see how cloud computing evolves…