March 2009 - Posts
So here is a little update on my previous post regarding Microsoft’s Mesh Product. It seems that at some point during the uninstall of the product from my desktop it created a “%Destkop%\Live Mesh\Conflicts[0000]” folder and inside includes ALL of the documents (and all of the versions of each document) that Mesh decided to clobber.
Now it really has me thinking. Did the Mesh tool actually keep track of these differences? Why didn't it warn me about conflicts during day to day operation? I don't recall any place in any Mesh related UI which allowed me to view and resolve these issues.
I think for now, I’m still going to stick with the USB Pen drive + Good Sync.
Current thought process
I have been spending some time with the Velocity and ASP.NET 4.0 Cache Extensibility teams at Microsoft working with them to formalize some up and coming releases. One common thread that I just can't help but notice is the fact that the average developer simply should NOT care about the specifics around Caching. For example, when/how to lock, dependencies, static's, how to create a cache/regions, get a cache, expire vs. eviction, etc..
They should only care about this "Cache" thing, that I can Get and Put data in and out of.
Types of Data
As you begin a deep dive into Caching you soon see that there are a few ways to slice and dice the caching world. The most simplistic method is to do division by the type of data you are working with. Here is a snippet from the Microsoft Velocity Documentation regarding types of data.
| Understanding the various types of data helps define the degrees of caching that are possible using "Velocity." As seen in the following table, there are three types of data that are appropriate for distributed caching: reference, activity, and resource. (Source) | Data Type | Access Pattern | | Reference | Shared read | | Activity | Exclusive write | | Resource | Shared, concurrently read and written into, accessed by a large number of transactions | |
For example:
Reference data could be Amazon's Book Catalog.
Activity data could be the User's Shopping Cart - secure, tied to that user's session
Resource data could be the Stock available for each Catalog item
Design Patterns
From an API perspective we should consider actual developer usage based on common design patterns. I would love to see a ReferenceDataCache, ActivityCache and a ResourceCache in the API. Each specific type of Cache wrapper should just take care of the internal details for me and guide me on usage. The Architectural roles in the organization can config/tweak specific cache details based on these common patterns and tied to the specific needs.
For example I want to create a AmazonBookCache which is a ReferenceCache and never worry about locking items (since its shared read, there is no need to lock anything). I also want it super-optimized for reads across the cache cluster.
I could create a ShoppingCartCache which is a ActivityCache<T>. In this type of cache, all of the methods would require the additional parameter (T) to indicate the specific User key - long, guid, or whatever your application uses to represent that specific user the activity is based on. Locking would be important so expose the relevant concurrency based Get/Put methods only – that is, remove Put() methods that do not include version information parameters.
Closing Thoughts
I understand the basic need of getting a core API working correctly and obviously it would be in Microsoft’s best interest in getting that done as soon as possible. With that said, for this API to be of any use, there is a need for a consistent set of wrappers based on common patterns which we all can rely on.
Caching is one of those seemingly easy things to put in place but in reality if it is not done correctly could have very drastic –negative- implications on the application.
Via Bertrand Le Roy
I mostly just wanted to bookmark/echo a post from Bertrand here.
Internet Explorer 8 is a unique release in the history of Internet Explorer in more than one way, but the decision to make standards mode the default means that authors of existing sites are impacted by it, if only to set the compatibility mode to IE7…
Read more and download links are on Bertrand’s Post here.
I have been using Live Mesh ever since it’s initial release, even on my WiMo device. Today I opened up a Word Document – that I update daily – and just noticed that it has been reverted to a copy that is about 1 week old. This is not the first time that this has happened. And of course I was using Mesh as my only backup.
It seems that Mesh cant handle a simple thing like versioning of documents correctly. Unacceptable.
Its time to revert back to using my USB Pen drive for shared documents, and GoodSync to back it up.
As you can suspect this is very disappointing for me. I think for my Music I will leave them in Mesh since that really wont matter.
Either way, it would seem that Microsoft has a bit of work to do in order to aggregate all of their online/cloud services together under one bucket (Azure?).
- MyPhone – which seemingly is not integrated with the standard live services. Why one would want two separate calendars for the same data is beyond me.
- Mesh
- SkyDrive
- Live (mail/calendar/etc.)
Live.Mesh.UnInstall();
As per request from Steve Ballmer, to all MVP’s for the past two years, I have been attempting to switch my life over to Microsoft’s Live Search (and services). The breadth and depth of what Live has to offer is rapidly increasing and I'm really starting to recognize the value in the vision coming out of the Live team. Take for example their mapping service - IMHO Live.com maps are superior in usability and quality over any other free Map provider.
This post is not intended to get you to switch, but more to voice my opinion about the biggest lacking feature to come from Live Search.... Proximity Searching
I can honestly say that 99% of the time when searching for a person, business, etc.. I leverage Google's "near:XXX" search syntax. This would probably constitute over 80% of my non-technical related queries - a significant amount per day.
For example:
Google:
Restaurant near:v5l 4h4 (lists all restaurants, near my house - even a map)
vs
Live:
Restaurant loc:v5l 4h4 (Empty search results!)
After consulting the search.live.com documentation I find:
|
loc: or location: |
Returns webpages from a specific country or region. Specify the country or region code directly after the loc: keyword. To focus on two or more languages, use a logical OR to group the languages. |
To see webpages about sculpture from the U.S. or Great Britain, type sculpture (loc:US OR loc:GB). For a list of language codes that you can use with Live Search, see Country, region, and language codes. |
As you can quickly determine on your own, having it based at the Country/Region/Language is very inadequate, not to mention having to memorize the specific Country/Region/Language code of the given location you need to search for. Ouch!
So my previous example I would be limited to:
Restaurant loc:CA (lists all restaurants, in Canada)
--Extremely inadequate for any sort of proximity searching that matters.
My hope is that this is on the near-term road map for the team. If so, I would never need to feed the Google marketing engine again (and yes, that IS a good thing!).
This came in last night, as per the -expected Mix09 release-
Appears that a restart is required.
--------------------------------
Microsoft |
| March 19, 2009 5:40:48 PM |
|
Rob Chartier |
Hi Everyone!
Internet Explorer 8 has now been released! To download, please click here.
Before installing, please read the Release Notes and more information about features and developer docs can be found in the IE8 Readiness Toolkit.
IE8 Beta Feedback:
Thank you for all the bug reports you have submitted. All Postponed bugs are now active for consideration in the next version of Internet Explorer. We resolved and closed all other bugs submitted since IE8 Beta 1.
Filing Bugs for IE8 RTW:
We are looking for new IE8 bugs and bugs that have regressed (meaning the bug was previously fixed and now occurs in IE8 RTW). Please only reactivate issues that were resolved as Fixed and reproduce in IE8 RTW. We will automatically resolve any other bug that is reactivated. Please see below for more information on re-activating your bugs.
The Internet Explorer 8 Feedback website on Microsoft Connect will remain open and we will not delete any of your previously submitted bugs.
In the next couple of months, we will introduce a new type of feedback form designed specifically to handle improvements for the next version of Internet Explorer. Please stay tuned for more information.
Please see the Technical Beta homepage on Microsoft Connect for more information.
Best Regards,
The IE Team.
I have been working my way through the CTP2 bits of Microsoft's new Distributed Caching Architecture called Velocity and found myself still wondering about a few items. At the recent ASPInsiders and Microsoft MVP Conference I had the chance to meet a few people on the team and get their contact information so I decided to drop them a line. The following is a short Q&A session that ensued.
Release Schedule:
Q: Will we be seeing CTP3 at Mix09?
A: We are, but then we decided to delay by 2 weeks to take in the .Net API recommendations. Our APIs are going to change slightly (e.g. class names have to be prefixed with "Cache" and we are moving the Region parameter to the end to allow overloading). We want to take this in now as opposed to later since that would mean Changing API at RTM time.
Q: During the MVP Summit you (or someone) mentioned "Late 2009" for the V1. release. Will there be a GoLive! date prior? Any chance you can get more specific on the date?
A: Middle of 2009. (some NDA details removed)
API Specific:
Q: I really like the way in which you break down the data type access patterns (Reference, Activity, Resource). I wonder if we could leverage that in the Caching Engine itself? I can see specifying an enum on CacheCreate/CacheLoad which would return a specific (and optimized) cache specific to the type of data. For example do we care about locking on Reference data?
A: That is interesting thought - will think about this more.
Q: Generics! We are using Object for the Value (add/put/get/etc..) why not use Generic functions?
A: Yes post V1 :) Particularly once we want to support Linq Queries on the cache, we need typing.. So definitely in the works.. Also, this can help using the DataContract Serializer which is faster than the NetDataContractSerializer..
Response Q: Generics. Post v1 - that's actually very disappointing! I had really hoped that it would be for release. I wonder if there is anything I'm missing? Is there a longer process (greater review) when using generics - internally? Or is it just a matter of dev time to do the work? Compatibility reasons...?
Response A: Test work really..
Overall:
Q: Will there forever be a dependency on PowerShell for installation? What about nodes where you would NOT want to admin the cluster, and just deploy the cache runtime...?
A: We don't depend on PowerShell for installation, just for monitoring and start/stop etc. You have a good ask that why should. We bother installing PowerShell on all the nodes. We haven't really thought about this issue. I will have a chat with folks about this.
Q: Remote/Automatic deployment is an interesting scenario.
A: Yes - it is there in CTP3
Q: I have found little documentation regarding using the cache in embedded scenarios. Anything planned for CTP3?
A: Nope - embedded is not in plan for V1 right now. The only closest thing is the local cache.
Q: During some of your presentations you mention a pretty key number (was it 2k or 20k?) for the data value size. Any chance you can shed some light on it? Why is it so important? Does it impact performance?
A: Nothing - just we ran numbers with different sizes 2k, 4k, 20k to see the effects. What we are seeing is that 6k is the breakeven point where we start getting throttled by the network more than the CPU. Below 6k, we get throttled by the CPU.
Q: Can you confirm: That when using a LocalCache the object is not actually serialized? Is it actually pushed over to a separate service in these cases? For example IIS, with LocalCache for Session info. Do the objects themselves live as objects or as serialized data?
A: The object is just kept in the local cache, but also copied over to the service. You cannot have a local cache without a Cache service tier.
Q: Is it safe to assume that you are using XML Serialization in all cases?
A: Yes - binary
I had to perform some minor NDA screening to get this out the door but I hope to have more details in the near future.
If you are looking for the PowerShell Quick Reference Guide for the CTP2 Build of Velocity look no further. Download the PDF here:
http://weblogs.asp.net/blogs/rchartier/Velocity-PowerShell-QuickReference-CTP2.zip
Errors or omissions can be reported via comments below.
So this year during the MVP Summit the crowd was ask to participate in the next "internal" video for Microsofts "Im a PC" Ad Campaign. They had the entire room of over 1000 MVP's from all over the world chant "I'm a PC" and "I Love Windows 7".
Here is a 30 second capture of the video
My stunning debut is right around the 24 second time mark, 3rd row on the right. If you notice, its actuall Steve Ballmer doing the yelling in the background...
More Posts