Before joining Microsoft I had started my own company to market a software as a service offering to the specialty trade contractor segment of the construction industry. Our service was called JIM (Job Intelligence Manager) and was a mobile project management application that enabled contractors to report their timesheets, job progress and location using their cell phones (primarily Nextel handsets running Java). An (asp.net) website provided the owners and managers of these contracting businesses with a centralized mechanism to collect timesheets, track their workforce in the field and perform some simple business intelligence type reporting against the data. Due to the unique business requirements of this segment, our mobile component was built using J2ME (Java Mobile Edition) while the backend was built using ASP.Net, ADO.Net and SQL Server 2000.
When I joined Microsoft I was approached by a co-worker, whose name is Ed about trying to leverage my mobile development experience and interests to develop a project and possible demo that would let me get up to speed on most of the SQL Server technologies Microsoft offers. Ed is responsible for SQL Server's spatial strategy. As an aside, the list of offerings is quite impressive when you think about it: it includes SQL Server Compact, Sync Framework, SQL Server 2008 spatial data types, ADO.Net, LINQ, EDM and more. In any case, that is how the idea for WiE came about, as a way for me to leverage my interests in mobile and location based services to learn more about SQL Server technologies. Since then we've also added SQL Server Data Services to the mix.
So what the heck is a WiE?
Well WiE stands for "Where Is Ed?"
When it is completed, WiE will be a location-based social networking type application that enables WiE Community Members to be notified when their friends are "nearby". Additionally, WiE will let each member define a list of fixed points of interest, for example their favorite steak restaurant and will notify the member of friends that near or leave those points of interests.
The system will be made up of several components:
- WiE Mobile Client: a Windows Mobile 6.1 application.
- WiE Cloud Storage: a SQL Server Data Service (SSDS) set of containers to collect the data from all the handsets.
- WiE Viewer Application: a web delivered rich UI application built with the Virtual Earth SDK that allows members to view and manage their WiE social-network.
- WiE Subscription and Notification Engine: a SQL Server 2008 instance responsible for implementing "proximity" rules engine leveraging SQL Server 2008's spatial data support.
Longer term we would like to see WiE become a set of extensible and reusable building blocks for folks interested in building location-aware mobile data applications atop of SQL Server technologies. I could easily see folks building location-based time tracking, location-based advertising and location-based photo sharing as potential add-ons or new applications built atop of WiE.
Over the next few weeks, as the development progresses, I will post a series of blog articles that walk through the implementation of WiE. This way you will be able to share in the trials and tribulations and provide feedback as the application progresses.
Next week's article will focus on the mobile client portion of the system, as it is the closest to completion. The mobile client is responsible for collecting GPS data from the handset, storing it in a SQL Server Compact database using ADO.Net. We will then look at synchronization from SQL Compact to SQL Server Data Services.
Have a great week,