May 2008 - Posts
Before you start reading this post, please notice that everything I write is my own opinion and is NOT related to me being an MS employee, nor I used any contact that is not public. Enjoy.
|As we say in the holly land "the writing was on the wall". It was only a meter of time before Google will announce its own could services and application environment named Google App Engine. || |
it is no secrete both Google and Microsoft are in a race to complete the amazing computer data-centers infrastructure in order to enable simple safe hosting of YOUR applications. Google, Amazon, Microsoft, and other large web presence companies have a Gazilion (that translate to a lot of data centers around the world with 10 of thousands of computers). For example, Amazon Web Services such as Amazon S3 storage service, Facebook has an application SDK enabling over 27K applications today. Google has a lot of services and APIs. And what about Microsoft, well Microsoft also have lots of services, probably more than any other company out there. By far Microsoft Live services is the most comprehensive web services offering by one company, and when you tie in other Microsoft assets like Live Messenger, and over 400M registered active Live ID users, you get a really valuable services that can enhance your app and even more important retain and acquire new users and it is all for free (up to a point).
But, before you can start using web services you need to build your application. And after you created your web app, you need to deploy it. And deployment can become an issue as you need to deploy on physical machine, either you but them, or more probably you choose a web hoster. The Web Hoster is responsible to host your app on web server and usually give you database and runtime for your app. And the big questions is what about scale and performance.
in Facebook, you can write application just for Facebook. Which is limited to Fackbook runtime. However, still, you can write cool apps and add-in, one of them is Microsoft Live Messenger plug-in for Facebook - where you can add Live Messenger capabilities to your facebook app or page.
Recently Google presented a Beta program for Google App Engine. "Google App Engine lets you run your web applications on Google's infrastructure. App Engine applications are easy to build, easy to maintain, and easy to scale as your traffic and data storage needs grow. With App Engine, there are no servers to maintain: You just upload your application, and it's ready to serve your users."
Sounds cool and fun right? Well, the answer is yes BUT. There is a big BUT build in to this offering. You have to code only in Python, and as great as python is, it is not the easiest programming Lnag out there to use - any I am rusty on using Python, which mean I need to do some reading tonight. Your database is bound to be represented only in objects, and unlike other ORM vendors, this implementation (which is easy as it can get) makes it hard on dev to drive complex SQL statements because ANY SQL you write is bound to a real object you created and used in your application. But these are relatively small obstacles on the way of Google to become one of the biggest virtual web application hoster in the world. And I am sure Google will bring in the Ad engine to tie in the $$$.
Where are Microsoft application hosting capabilities? All I can say these are exciting times. . .
See Google Web Engine in action.
Feel free to comments and start a discussion around these topics:
What do you think about Google Web Engine?
And how does Client Vs Web fits in?
(It took me about 2.5 hours to write this post)
It is time to for Moonlight!!! Monnlight is an open source implementation of Microsoft Silverlight for Unix systems, is now available in both Silverlight v1 and Silverlight 2 builds.
While Silverlight still has some long way to become widely adapted as Adobe’s Flash, it is Microsoft's main web browser plug-in that is driving a change to the way we write Web Rich Media Applications today.
| || |
Moonlight is not a Microsoft project, but Microsoft has been working together with Mono, an open source project sponsored by Novell, to develop and run .Net client and server applications on Linux, Solaris, Mac OS X, Windows, and Unix, to make a Linux version of Silverlight happen.
The Moonlight project is more than "just" running SL on a Mac or a Linux machine. Microsoft is taking these steps no just to increase the adoption of the SL browser plug-in. Microsoft is taking these steps to becoming more open and embracing a more open attitude towards the "rest of the world". Take a look at the last announcements about Live Mesh and the over all Windows Live platform to understand that Microsoft is changing. . . and we in Microsoft understands that the days of a single application for a single machine are long gone and realizing that fact and changing the way we address our future development is an important aspect of the new Live attitude. And it is not just Microsoft, Recent announcements by Google, Yahoo, MySpace, and Facebook also indicate a general trend toward opening up the software world.
Welcome to a new world.
Almost forget! There is a Open Source contest Amir Shevat is running and the prize is Free ride to PDC08!
I want to thank Goksin Bakir for this blog insight
And Rohan Thomas for his original blog post
Pop quiz. how can tell me what is the difference between List<T> and Collection<T>? And even more important question "Which is the preferred implementation of a generic list these days?"
from a quick look at the classes one can see that Collection<T> is some sort of a customizable wrapper for List<T>... Collection<T> gives more for use as a base class where you can hook the "standard collections" like Insert, Remove, Clear, Set and such. . . This will give you the option to customize these methods according to your needs. Internally, it's Items property is backed by a List<T>.
where List<T> is a read-to-declare-and-use dynamic array of T's, it is represents a collection of objects that can be individually accessed by index. While Collection<T> defines methods to manipulate generic collections.
According to FxCop, List<T> should only be used as an implementation detail, and never be exposed in an API, since you can't easily extend List<T> after the fact. While List<T> isn't sealed, it has absolutely no extensibility points.
Personally, while I never publicly expose properties or methods of type List<T>, I often declare them as IList<T> and implement them using List<T>. This provide the best of both worlds.
When creating your own "collection" class:
- Base class for your custom collection classes Should be Collection<T>
- For internal implementation (private fields and local variables) use - List<T>
- External interface (public properties, methods, and collections) use - IList<T>, ICollection<T> and a good practice will be to use IEnumerable<T>
But let's not forget the other collections type and I certainly do not want to limit to just choosing between Collection<T> and List<T>... remember to consider Dictionary<TKey, TValue> or KeyedCollection<TKey, TItem>, or HashSet<T> if you're collecting things with identity where duplicates shouldn't be allowed, or where fast lookup by key is required or will perform a lot better than linearly searching a list.
Any Feedback or ideas?
(It took me about 35 min to write this post.)
אני בביקור קצר במטה של מיקרוסופט, ותראו מה קלטה המצלמה באחד מהמשרדים.
אז קצת באיחור מצידי, אבל שימו לב לכך שאירוע טק-אד ישראל עומד ביחד עם האירועים הגדולים בעולם.
כבוד למגזר :)
חוץ מזה היה ביקור קצר אבל ממש מעניין. . .
One might ask what is the connection between Microsoft's Photosynth and the popular TV series - CSI (Crime Scene Investigation), Well just read this post and find why you need to be in PDC 08.
PDC 08 is due in few months (October 27-30, 2008) and as I wrote in a former post, if you are a developer, it is the one place for you to be.
This is the second post on a series of PDC 08 Preview posts. Previous post:
|This time we are going to talk about Photosynth. If anyone doesn't already knows what is Photosynth or Seadragon, please take a look at this video. You can also play with this technology yourself. || |
Well you may say, this is not new. So what is the deal with PDC08 - which all about new stuff and the future? Ah, for PDC we are planning to show some amazing new features associated with Photosynth. Most of them are related to Web 2.0, sharing and combining Photosynth collections. Really exciting stuff. . .
But for the time, you way want to check the next episode of CSI in which the good guys solve a case by reconstituting the crime scene using Photosynth.
My advice for you, start collecting picture for future synth ;)
blog post statistics: write time 25 min