The first couple of paragraphs says a lot. First we have the "look at the companies supporting it":
It’s Bill Hill here again, still fighting the good fight to make typography on the Web as good as we’re used to seeing in print. We made significant progress this week, when one of the USA’s most prestigious font companies announced its support for the Embedded OpenType format for font embedding on the Web, and launched a new website to promote other browsers to support it in addition to Internet Explorer (which has had EOT support built-in since 1996).
And then the fear about font linking ;)
At the same time, Ascender Corporation and its collaborators in the typographic community also warned of the legal dangers of using the Font Linking mechanism currently supported by other browsers.
So, EOT is "in front of the W3C". What are your thoughts?
Microsoft has come out with a road map for the Ajax side of ASP.NET, which has been simplified to be just: Framework and tools in one versioned package; Ajax components will be released separately on Codeplex.
There is a bold goal at the beginning of the document (why is the doc a PDF/.doc and not just HTML!!!):
Make ASP.NET Ajax the first-class choice for all Web 2.0 developers
They are going to be catching up with richer CSS selection and DOM manipulation:
I saw this on the same day as some Adobe folks showed me an old thread that showed MLB.tv sneaking a context menu saying "About Silverlight" into the Flash version ;)
What is new in the latest beta? Danny Thorpe is looking forward to digging into the "new support for cross-domain connections using sockets, sibling to Silverlight’s existing cross-domain HTTP request."
Full Feature List
Animation
Support for animating custom data points
Object Animation support (animating structs)
Deep Zoom
New XML-based file format
MultiScaleTileSource to wire up your own images and get the Deep Zoom experience
Better notifications when sub-images enter the view
Controls
Customize the look and feel of controls using Visual State Manager. Interactive control templates were never so easy.
Some base controls are now part of the core platform, rather than packaged into apps. Say hello to smaller app sizes.
Calendar now supports multi-selection and blackout dates
New TabControl
Control properties changes (Background, Tooltip, FontFamily, FontSize…)
DataGrid improvements: auto size, reorder, sort, performance and more
TextBox
IME Level 3 input support
Text wrapping and multiline selection highlighting in textbox
Scrolling and clipboard support
Document level navigation keys
Improvements in error handling, reporting
Parser and Property system
DependencyProperty.Register/RegisterAttached now supports PropertyMetadata
New DependencyObject.ClearValue
Visual tree helper
Data-binding
Per binding level validation
Support for element syntax for binding markup extensions
Support for limited keyboard input in Full Screen mode (arrow, tab, enter, home, end, pageup/pagedown, space). I've seen more than a few requests for this on the forums.
Managed APIs for Inking and stylus input
Networking and Data
Cross Domain support in Sockets
Cross Domain security enhancements
HttpWebRequest and WebClient callable from background threads
Upload support in WebClient
Isolated Storage: default size increased to 1MB and new ability to change quota with user consent. Also a new management UI.
Duplex communications ("push" from server to Silverlight client with no need to "poll" for data)
LINQ -to- JSON serialization
Significantly improved SOAP interop
"Add New Item" template in Visual Studio for "Silverlight-enabled WCF Service"
ADO.NET Data Services support
UIAutomation and Accessibility support in the platform
Media
Platform support for Adaptive Streaming (also referred to by people as multi bitrate), the ability for Silverlight to switch between media depending on network and CPU conditions
Content protection with PlayReady DRM and Windows DRM
Basic server-side playlist (SSPL) support
Localization
Changes to localized application model. You now create one xap per locale, instead of one monolithic multilingual app
Expanded localization languages of runtime and SDK
Japanese SDK Installer and documentation (July 10)
Several changes to make API and behavior more compatible with WPF
Tools
Beta 1 projects will be automatically ported to Beta 2
Remote debugging for VB on the Mac
CLR
A new developer-oriented runtime package with debugging binaries, localized strings, docs etc.
Support for OS fallback logic for resources
CurrentCulture and CurrentUICulture isolation to AppDomain level
DLR
Performance improvements
Various new DLR and IronPython 2.0 Beta 2 language features
Hedger Wang has been scanning a lot of Chinese blogs lately for solutions to IE6 and memory leak issues. One of the things he stumbled upon is a pretty nifty way of nulling the objects to stop memory leaks by using the try ... finally construct. So instead of this solution which leaks memory:
Testing your sites on different versions of Internet Explorer has always been notoriously difficult mainly due to the fact that Microsoft prevents you from running to different versions of the browser in Windows. Sure there have been solutions to get around this limitation but in my experience, they've always caused unexpected results and instability for the operating system or required you to run a VM. Not ideal.
Jean-Fabrice RABAUTE, the man behind the IE debugger DebugBar, has come up with a nice solution he's called IETester. This free tool allows you to have the rendering and javascript engines of IE8 beta 1, IE7 IE 6 and IE5.5 on Vista and XP, as well as the installed IE in the same process.
This is an interesting one. If you go to learn about ASP.Net Ajax at the Microsoft site itself you not only see info about the product, including this:
ASP.NET AJAX is a free framework for quickly creating efficient and interactive Web applications that work across all popular browsers.
ASP.NET AJAX is built-into ASP.NET 3.5. It is also available as a separate download for ASP.NET 2.0.
But, you may get a full screen modal popup that tells you how much better Silverlight is than anything the Open Web has to offer ;) NOTE: Some people see this, and others do not.
I don't see this when I go to Adobe Spry. There is no "FLEX FLEX FLEX" message.
Modern Web 2.0 applications, such as GMail, Live Maps, Facebook and many others, use a combination of Dynamic HTML, JavaScript and other Web browser technologies commonly referred as AJAX to push page generation and content manipulation to the client web browser. This approach improves the responsiveness of these network-bound applications, but the shift of application execution from a back-end server to the client also often dramatically increases the amount of code that must first be downloaded to the browser. This creates an unfortunate Catch-22: to create responsive distributed Web 2.0 applications developers move code to the client, but for an application to be responsive, the code must first be transferred there, which takes time. In this paper, we present DOLOTO, a system that analyzes application workloads and automatically performs code splitting of existing large Web 2.0 applications. After being processed by DOLOTO, an application will initially transfer only the portion of code necessary for application initialization. The rest of the application’s code is replaced by short stubs—their actual function code is transfered lazily in the background or, at the latest, on-demand on first execution. Since code download is interleaved with application execution, users can start interacting with the Web application much sooner, without waiting for the code that implements extra, unused features. To demonstrate the effectiveness of DOLOTO in practice, we have performed experiments on five large widely-used Web 2.0 applications. DOLOTO reduces the size of initial application code download by hundreds of kilobytes or as much as 50% of the original download size. The time to download and begin interacting with large applications is reduced by 20-40% depending on the application and wide-area network conditions.
They take examples with varying degrees of download-i-ness and show how their system can or can't help:
As we play with the techniques for getting the best performance, it does feel like we need an abstraction that handles dependencies, loads only what is TRULY needed right away in onload, and loads other payloads as required / later.
John Lam has posted about a new release, DSL: Dynamic Silverlight. I can't believe that Microsoft is going to take the DSL TLA ;)
Our team is happy to announce Dynamic Silverlight (DSL), which integrates our DLR dynamic languages with Silverlight. It requires Silverlight 2, which includes the cross-platform CLR and a set of libraries for rich graphics, media and web programming. It is packaged as a Silverlight extension, which means that it is downloaded in addition to Silverlight on an as-needed basis.
DSL has a runtime and an SDK component. The runtime consists of two assemblies: Microsoft.Scripting.dll, and Microsoft.Scripting.Silverlight.dll. You'll also need the language assemblies, which are IronRuby.dll and IronRuby.Libraries.dll for Ruby and IronPython.dll and IronPython.Modules.dll for Python. The runtime component is a small additional download. Today, the IronRuby Silverlight runtime is just a 712KB download, which takes less than 5 seconds to download over modern broadband.
Now you can get Ruby in your browser:
John also talked about Chiron, a mini Web server that lets you develop against a local file system with ease. We will find out more, and get access to the bits, on Friday when John gives his MIX talk.
The intersection is where Kevin answers about Silverlight going offline:
Well, what about an offline Silverlight capability? Would that do it?
In order to do it well, your heart has to be in it. And if you look at what we're doing right now with our technologies like Flash and AIR, we're making sure they work reliably across operating systems. So that means Mac and Windows, but also Linux. We're releasing Flash Player now simultaneous for Mac and Windows. It took us a while to get their and now we're doing that, and it's the same core code.
If you look at what Microsoft is doing with Silverlight, they're not actually building the Linux version off the same code base. It's a new code base, which is unlikely to be compatible with the other code bases because it's just not built the same way. So there'll be different idiosyncrasies and we know that will be a problem. So we're really taking a passionate approach to reliability across OSes. And you really have to have that as the core essence of what you're doing or it won't really work that well.
Microsoft says it is coming:
Microsoft does not currently have specific plans to bring offline capabilities to Silverlight, but it's something it will eventually do, said John Case, general manager in Microsoft's developer division.
"It's something that we will want to do," Case said in an interview on Monday. "Eventually, customers will expect us to do it."
Darryl has a lot more meat in his article which asks:
As far as AIR deployment, why not just put it in Flash?
But isn't the Flash Player only about a 500K download? Couldn't you just up that a little, as you said bandwidth is increasing?
When are you planning to, or are you in fact planning to, open-source Flash?
So you said Tamarin was a first step. Does that mean you're going to do a second, third, fourth step and so on until Flash is fully open source?
I've watched this ongoing competition between Adobe and Microsoft. What do you think they need to do if they want to one-up AIR?
Well, what about an offline Silverlight capability? Would that do it?
So how do you address the criticisms about security with AIR?
You mentioned support for Linux with AIR. Can you expand on the importance of Linux for you guys and where you're headed with it?
Who is better at designer/developer workflow, Microsoft or Adobe? Do you concede that to them?
What's the status of the Adobe relationship with Google about Google Gears?
We are waiting for the big news at MIX, mainly revolving around IE 8. We have heard some reports from people who have IE 8 beta that the bugger is a bit of a disappointment, and that it hasn't moved on too much from IE 7, but lets wait and see before passing judgement.
Today though, Dare Obasanjo posted a slew of Windows Live news on several APIs.
The big meta message is the fact that "Microsoft Standardizes on AtomPub". Now I feel like it is time for me to open a pub in the valley and one in Seattle called "The AtomPub" ;)
The Messenger Library is written in C# and compiled into JavaScript using Script#. Messenger Library applications can be written in either C# (with Script#) or JavaScript. Messenger Library applications can be built using ASP.NET and ASP.NET Ajax, or they can be built independently of the .NET framework.
Paolo Severini, a Microsoft employee in Dublin, has build a JavaScript Memory Leak Detector that detects leaks with knowledge of the difference between IE 6 and IE 7.
How does it work?
Like any IE Band, the JavaScript Memory Leak Detector is a COM in-process DLL loaded in the Internet Explorer process. The fact of living inside the IE process allows it to easily intercept some of the API calls made by the IE code. In this case, we are interested in intercepting every call that creates a Jscript engine.
The Jscript engine is a COM object, and it is instantiated by Trident (mshtml.dll) with a call to CoCreateInstance(). Therefore, the first operation made by the tool will be to intercept the calls to CoCreateInstance made by the mshtml module. There are a few ways to implement this API hooking; in this case the simple technique of overwriting the module Import Table in memory works perfectly. (See Robbins' "Debugging Applications" for more details).
At this point we can substitute our own Jscript engine in place of the real engine. By implementing all the ActiveScript interfaces exposed by a Jscript engine and delegating all the calls to an instance of the real Jscript engine, the tool can transparently intercept all the interactions between Trident and Javascript and still have Internet Explorer to run correctly.
Now, a Jscript engine by itself has no notions of Internet Explorer and its DOM objects. It is IE that registers the root (window) object to the engine and loads into the engine all the scripts contained or loaded by a HTML document. Since we are intercepting all the calls to Jscript, we can thus have a reference to all the DOM objects that are passed to or used by a Javascript function.
The technique to do this is a bit tricky. A DOM object is passed to (and accessed by) Jscript through an IDispatch interface; so for each new object that we meet we create a fake COM object that works as interceptor (or wrapper), exposing IDispatch and delegating the calls to the real (contained) IDispatch object.
Every time a method or property is called to a DOM element by JavaScript, the call is actually made to our wrapper and then delegated to the real object. The wrapper can analyse the method in/out parameters and return value, looking for other IDispatch pointers that represent new DOM objects. If it finds a new IDispatch pointer not yet met, we know that this object will now be visible to the JavaScript code, and we need to build another wrapper and pass it to JavaScript in its place. In the end, every JavaScript function will access DOM objects only through these wrappers and the tool will have complete control over the script execution.
I'm happy to see that Ajax.NET Professional is used about 13.3% when using .NET related web applications. Starting with my first post Using a HttpHandler and Attributes to call C# methods in JavaScript in February 2005 the AJAX hype started around the world. Two months later I renamed the project to Ajax.NET and added nearly all features that are the most used until today. In May 2005 Windows Mobile support has been added and Ajax.NET was the only .NET framework that was able to run AJAX requests on mobile devices. In the end of 2005 I was invited to the PDC 05 in Los Angeles where I could meet Brian Goldfarb and Jonathan Hawkins to see how Microsoft is working on AJAX in ASP.NET (Atlas). I meet some other .NET developers and had great ideas on how AJAX will change web applications. In October I published a new product called Ajax.NET Professional which was doing the same but contains several other security features. Because of a change in the JavaScript source I changed the name from Ajax.NET.
Now
Today I have my eyes on new technologies that will change client application development (web applications). To see any feedback of my MVP award for 2008 I'd like to concentrate more on those topics. I'm still using AJAX in nearly all my web applications, but the future will bring more important features.
Some of the users of the library are talking about stepping up to the plate to try to continue Ajax.NET itself, so we will see.