| 22/02/12 11:27 | Your Next Desktop Could be a PhoneHenri Sivonen: This getting interesting: Using an Android phone as an Ubuntu desktop when docked Definitely Want. Especially love the idea of sending and receiving texts from my desktop. Would prefer a dock the size of a mac mini with a hard drive, USB and ethernet ports. | |||||||||||||||||||||||||||
| 20/02/12 23:13 | MulliganDan Webb: I’m in charge of undoing twitters hashbang URLs +1 | |||||||||||||||||||||||||||
| 20/02/12 20:00 | No Iran War Please | |||||||||||||||||||||||||||
| 20/02/12 18:31 | Google Bypassing User Privacy SettingsWhen the IE team heard that Google had bypassed user privacy settings on Safari, we asked ourselves a simple question: is Google circumventing the privacy preferences of Internet Explorer users too? We’ve discovered the answer is yes: Google is employing similar methods to get around the default privacy protections in IE and track IE users with cookies. Below we spell out in more detail what we’ve discovered, as well as recommendations to IE users on how to protect their privacy from Google with the use of IE9's Tracking Protection feature. We’ve also contacted Google and asked them to commit to honoring P3P privacy settings for users of all browsers. We’ve found that Google bypasses the P3P Privacy Protection feature in IE. The result is similar to the recent reports of Google’s circumvention of privacy protections in Apple’s Safari Web browser, even though the actual bypass mechanism Google uses is different. Internet Explorer 9 has an additional privacy feature called Tracking Protection which is not susceptible to this type of bypass. Microsoft recommends that customers who want to protect themselves from Google’s bypass of P3P Privacy Protection use Internet Explorer 9 and click here to add a Tracking Protection List. Customers can find additional lists and information on this page. Background: Google Bypassing Apple’s Privacy SettingsA recent front page Wall Street Journal article described how Google “bypassed Apple browser settings for guarding privacy.” The editor and CEO of Business Insider, a business news and analysis site, summarized the situation:
Third-party cookies are a common mechanism used to track what people do online. Safari protects its users from being tracked this way by a default user setting that blocks third-party cookies. Here’s Business Insider’s summary:
Google’s approach to third-party cookies seems to have the side effect of Safari believing they are first-party cookies. What Happens in IEBy default, IE blocks third-party cookies unless the site presents a P3P Compact Policy Statement indicating how the site will use the cookie and that the site’s use does not include tracking the user. Google’s P3P policy causes Internet Explorer to accept Google’s cookies even though the policy does not state Google’s intent. P3P, an official recommendation of the W3C Web standards body, is a Web technology that all browsers and sites can support. Sites use P3P to describe how they intend to use cookies and user information. By supporting P3P, browsers can block or allow cookies to honor user privacy preferences with respect to the site’s stated intentions. It’s worth noting that users cannot easily access P3P policies. Web sites send these policies directly to Web browsers using HTTP headers. The only people who see P3P descriptions are technically skilled and use special tools, like the Cookie inspector in the Fiddler tool. For example, here is the P3P Compact Policy (CP) statement from Microsoft.com:
Each token (e.g. ALL, IND) has a specific meaning for a P3P-compliant Web browser. For example, ‘SAMo’ indicates that ‘We [the site] share information with Legal entities following our practices,’ and ‘TAI’ indicates ‘Information may be used to tailor or modify content or design of the site where the information is used only for a single visit to the site and not used for any kind of future customization.’ The details of privacy are complex, and the P3P standard is complex as well. You can read more about P3P here. Technically, Google utilizes a nuance in the P3P specification that has the effect of bypassing user preferences about cookies. The P3P specification (in an attempt to leave room for future advances in privacy policies) states that browsers should ignore any undefined policies they encounter. Google sends a P3P policy that fails to inform the browser about Google’s use of cookies and user information. Google’s P3P policy is actually a statement that it is not a P3P policy. It’s intended for humans to read even though P3P policies are designed for browsers to “read”:
P3P-compliant browsers interpret Google’s policy as indicating that the cookie will not be used for any tracking purpose or any purpose at all. By sending this text, Google bypasses the cookie protection and enables its third-party cookies to be allowed rather than blocked. The P3P specification (“4.2 Compact Policy Vocabulary”) calls for IE’s implemented behavior when handling unknown tokens: “If an unrecognized token appears in a compact policy, the compact policy has the same semantics as if that token was not present.” Similarly, it’s worth noting section “3.2 Policies” from the P3P specification:
P3P is designed to support sites that convey their privacy intentions. Google’s use of P3P does not convey those intentions in a manner consistent with the technology. Because of the issues noted above, and the ongoing development of new mechanisms to track users that do not involve cookies, our focus is on the new Tracking Protection technology. Next StepsAfter investigating what Google sends to IE, we confirmed what we describe above. We have made a Tracking Protection List available that IE9 users can add by clicking here as a protection in the event that Google continues this practice. Customers can find additional lists and information on this page. The premise of Tracking Protection in IE9 is that tracking servers never have the opportunity to use cookies or any other mechanism to track the user if the user never sends anything to a tracking server. This logic underlies why Tracking Protection blocks network requests entirely. This new technology approach is currently undergoing the standardization process at the W3C. This blog post has additional information about IE’s cookie controls, and shows how you can block all cookies from a given site (e.g. *.google.com) regardless of whether they are first- or third-party. This method of blocking cookies would not be subject to the methods Google used. We recommend that users not yet running IE9 take steps described in this post. Given this real-world behavior, we are investigating what additional changes to make to our products. The P3P specification says that browsers should ignore unknown tokens. Privacy advocates involved in the original specification have recently suggested that IE ignore the specification and block cookies with unrecognized tokens. We are actively investigating that course of action. ―Dean Hachamovitch, Corporate Vice President, Internet Explorer | |||||||||||||||||||||||||||
| 19/02/12 19:09 | OpenID upgradesAs a part of my server move, I’ve upgraded my consumer logic to Python openid-2.2.5 and provider from phpMyID to SimpleId 0.8.1. In theory, I should now support OpenID 2.0. The one small API change I noted in this process is in the consumer. | |||||||||||||||||||||||||||
| 18/02/12 16:20 | WunderWikiI added a simple wiki as a demo for WunderBar. It demonstrates shelling out to handing multiple URIs, handing get/post, dealing with both unescaped text and markup, shelling out to commands, AJAX, CSS, jQuery. The demo relies on git and rDiscount to do the version control and markup processing. It also doesn’t have all the features that you would expect from a wiki, such as conflict detection and resolution. | |||||||||||||||||||||||||||
| 17/02/12 20:22 | Sub-pixel Rendering and the CSS Object ModelWith Windows 8, you have an unprecedented choice of devices for browsing the Web, from large desktop screens to small slates. In order to accommodate this range of devices, the browser must be able to scale and layout the Web at many different screen sizes and dimensions. We've previously blogged about some of the features in IE that support these scenarios. Sub-pixel positioning (of text and layout) is one of the core platform technologies which enable Web pages to look beautiful and consistent at any scale. In this post, we describe changes made in IE10 to better support sub-pixel positioning through the CSS-OM. Web developers can build beautiful layouts through a variety of platform technologies. Generally, developers use CSS style sheets to describe the layout a Web site. In some scenarios, Web developers also depend on JavaScript code to measure, align, or position elements of a Web page with Measuring and aligning layout elements using the CSS-OM APIs can be problematic because of the way that those APIs round or truncate sub-pixel positioned values to whole-pixel numbers. A Quick Note about Pixel-perfect LayoutsIn general, pixel-perfect layouts on the Web tend to conflict with the goals of enabling accessible, compatible, and adaptable content, and consequently are not a best practice. The following collage illustrates some of the bugs that can occur when the Web designer attempts to create a pixel-perfect design but unexpected Web platform differences cause their designs to go awry.
When using the CSS-OM to dynamically generate a layout, Web developers should allow for a few pixels of potential error. Better yet, IE10 provides several new layout options that developers can use to better achieve many of these desired layouts without requiring pixel-perfect alignment using the CSS-OM. An IllustrationTo illustrate how the CSS-OM APIs may cause subtle positioning problems, consider a simple example. Sub-pixel positioning allows four boxes to be evenly distributed inside of the container, despite the container's size not being evenly divisible by four. Consider the following HTML markup fragment: <footer> <div>content 1</div><div>content 2</div><div>content 3</div><div>content 4</div> </footer> with this partial CSS markup: footer { width: 554px; border: 1px solid black; text-align: center; } footer div { display: inline-block; width: 25%; } footer div:nth-child(even) { background-color: Red; } footer div:nth-child(odd) { background-color: Orange; } Now, let’s add a function that runs on load and reports the widths of these items: onload = function () { var footerBoxes = document.querySelectorAll("footer div"); var s = ""; var totalSize = 0; for (var i = 0; i < footerBoxes.length; i++) { // Reporting var offsetWidth = footerBoxes[i].offsetWidth; s += "content " + (i + 1) + " offsetWidth = " + offsetWidth + "px" + "<br />"; totalSize += offsetWidth; } s += "Total <i>calculated</i> offsetWidth = " + totalSize + "px" + "<br />"; s += "Container width = " + document.querySelector("footer").clientWidth + "px" + "<br />"; document.querySelector("#message").innerHTML = s; } The result of running this markup and code in IE9 is something like this:
Note that summing the values returned by the CSS-OM API The results in other browsers show a similar discrepancy, though sometimes the total is less than the actual and sometimes greater. When the rounding/truncation leads to a sum total that overflows the container size (as illustrated), content will start to wrap or cause unwanted scroll-bars to appear. Additionally, many containers are sized according to the text and the font used to render the text, and those font metrics may be different across browsers or alternate fonts may be selected if the requested font isn't available. The New browser features continue to demonstrate the shortfall of limiting CSS-OM properties to whole-value pixels. For example, features like SVG and CSS 2D/ 3D Transforms allow an element's dimensions to easily fall between pixels. Addressing the ProblemRecognizing this limitation (in part), the W3C CSS-OM View spec describes the coordinates returned via the In IE10 we've updated the Updating our example above to report the
Taking Sub-pixel Values EverywhereIn addition to
To continue our commitment to compatibility with legacy Web pages (pages which may not be prepared to handle sub-pixel values from the CSS-OM in general), IE10 continues to reports whole-value pixel units by default for the other CSS-OM properties. These APIs are:
However, if necessary, IE10 now allows Web developers to enable sub-pixel positioned values from the above-listed CSS-OM properties as well. Use of this special feature requires that the site run in IE10 Standards mode and opt-in by setting the following property on the document object: document.msCSSOMElementFloatMetrics = true; When enabled by setting Going back to our example and setting
Note the fractional values returned by SummaryIt is sometimes helpful (and, in rare cases, necessary) to be able to use the CSS-OM properties for pixel-perfect layout calculation. When using the CSS-OM, be aware of the whole-pixel-reporting characteristics of those APIs. When designing layouts either with CSS or the CSS-OM APIs, be sure to accommodate a few pixels of tolerance in order to ensure a more robust site across multiple browsers and/or devices. —Travis Leithead, Program Manager, Internet Explorer Editor's note: Updated to correct a few typographic errors. | |||||||||||||||||||||||||||
| 17/02/12 20:00 | Square Pictures | |||||||||||||||||||||||||||
| 17/02/12 20:00 | Brick Wall | |||||||||||||||||||||||||||
| 15/02/12 15:43 | Twelve Steps | |||||||||||||||||||||||||||
| 14/02/12 16:57 | HTML5 Love is in the Air!To help celebrate Valentine’s Day, we’re pleased to offer another new HTML5 experience that makes the most of your PC hardware and touch on Windows 8. Check out Love is in the Air and feel the warm embrace of hardware accelerated HTML5. This experience brings together hardware-accelerated HTML5 canvas, SVG, CSS transforms & transitions, WOFF, audio, and more. On Windows Developer Preview with support for multi-touch in IE10, you can reach out and swipe to reveal a special message of love -or just use your mouse. If you think your browser can keep up, turn up the volume to 1000 floating hearts. Using another browser and not feeling the love? Try it with IE9 (or IE10) using the hardware acceleration built into the browser.
Demos like this are best when shared, so we made it easy for you to experience Love is in the Air and send a special message to your friends. From the entire IE team, we want to share the love for HTML5 and wish you a Happy Valentine’s Day. —Rob Mauceri, Group Program Manager, Internet Explorer | |||||||||||||||||||||||||||
| 14/02/12 16:00 | IE 9.0.5 Available via Windows UpdateThe February 2012 Cumulative Security Update for Internet Explorer is now available via Windows Update. This security update resolves 5 privately reported vulnerabilities in Internet Explorer. The most severe vulnerabilities could allow remote code execution if a user visits a specially crafted Web page using Internet Explorer. An attacker who successfully exploited any of these vulnerabilities could gain the same user rights as the local user. Users whose accounts are configured to have fewer user rights on the system could be less affected than users who operate with administrative user rights. This security update is rated Critical for Internet Explorer Windows Clients, except IE6 client, where it is rated Moderate; and Moderate for Internet Explorer on Windows servers, except IE6, where it is not rated. For more information, see the full bulletin. Most customers have enabled automatic updating and do not need to take any action. We recommend that customers, who have not enabled automatic updating, enable it (Start Menu, type “Windows Update”). We recommend that administrators, enterprise installations, and end users who want to install this security update manually, apply the update immediately using update management software or by checking for updates using the Microsoft Update service. —Ceri Gallacher, Program Manager, Internet Explorer | |||||||||||||||||||||||||||
| 13/02/12 20:00 | LifeSaver 2.0 | |||||||||||||||||||||||||||
| 13/02/12 18:06 | On The Move...Intertwingly.net is moving to DreamHost. I’m sure that every one of my scripts has hard coded paths or depend on the server being in EST/EDT or will otherwise break for unanticipated (but in retrospect entirely obvious) reasons. I don’t believe that I will lose any email in the process, but you never know. My | |||||||||||||||||||||||||||
| 12/02/12 20:00 | Illuminate Yaletown | |||||||||||||||||||||||||||
| 12/02/12 20:00 | Now With Schema.org Markup | |||||||||||||||||||||||||||
| 12/02/12 20:00 | Safe Unlocking | |||||||||||||||||||||||||||
| 10/02/12 00:08 | CORS for XHR in IE10The fourth platform of IE10 simplifies building cross-site scenarios that work consistently across browsers by supporting Cross-Origin Resource Sharing (CORS) for XMLHttpRequest (XHR). CORS for XHR makes sharing data across sites simple and flexible. In the most basic scenario CORS enables creating data sources accessible from any site, and with a few small tweaks you can choose to constrain allowed sites, support data modification, and even allow authentication. Most importantly CORS keeps existing sites secure by requiring server participation. Simple Cross-Origin XHRLet’s look at how a cross-origin XHR request compares to a same-origin request. From script, the only difference is the URL passed to the open method. For example, say we’re working on a script that fetches a list of photo albums. Traditional XHR
Now we want to access the list of albums from another origin. The other origin can be a completely different domain or a different host with the same base domain. Either way, just pointing at the full URL from another site is enough to get the browser to automatically send a CORS request. CORS-Enabled XHR
Sites can provide fallback for older browsers by wrapping this in feature detection. Checking for “ CORS-Enabled XHR with Feature Detection
At this point our client code makes a CORS request directly to "http://photos.contoso.com", but the request fails to return any data. The failure occurs because the server isn’t participating yet. Taking a quick look at the developer tools gives us an idea what went wrong.
Here we can see the server needs to send an “ Simple CORS Request Headers
Using this information the server can choose to limit access to any set of sites. If the server always adds an “ Simple CORS Response Headers
With the above updates in place, our “ Cross-Origin XHR with PreflightThe “simple” CORS requests discussed so far are great for basic, read-only scenarios, like downloading a photo album. Taking the next step by modifying data across sites requires a bit more work on the server. For example, say we’re adding code in the client to create a new album.
Running this as-is doesn’t work. Examining the network traffic reveals a request is sent, but not the one we expected.
What the browser actually sent is known as a preflight request. Preflight requests are sent before requests that may result in data modification on the server. Such requests are identified by the presence of non-simple properties as defined in the CORS specification. These properties range from certain HTTP methods like “ Preflight Request
Getting the browser to send the actual request requires some changes on the server. Once again we can take a look at the developer tools for more information.
The first step is to make the server recognize the “ Preflight Response
Once preflight is out of the way and approved the actual request takes place. Actual Request
Adding the album is technically complete at this point, but our client code won’t know that unless the server responds correctly. Specifically the server must still include “ Actual Response
With that the client can add a new album cross-origin and recognize whether or not the action completed successfully. Next StepsPairing CORS with other new platform features enables interesting scenarios. One example is the Cross-Site Upload Test Drive which tracks cross-origin file uploads using CORS, XHR, FileAPI, and progress events. —Tony Ross, Program Manager, Internet Explorer | |||||||||||||||||||||||||||
| 09/02/12 20:00 | On Boats | |||||||||||||||||||||||||||
| 09/02/12 12:57 | DominoesAlex Russell: @glazou being entirely reasonable in the face of vendor-driven CRAZY (implementing other people’s prefixes): glazman.org/weblog/dotclea… Via @phae. Alex, I think you need to move up the food chain a little. The root-cause is vendor-driven advocacy directed at content producers which encourages them to produce compelling content using experimental features. Everything else is consequences. If you believe that those consequences are CRAZY, then you must conclude that the root-cause is CRAZY. | |||||||||||||||||||||||||||
| 09/02/12 10:56 | Save The Open Web: A Call To Action | |||||||||||||||||||||||||||
| 07/02/12 22:33 | High performance HTML5 content in Metro-style AppsMetro style apps in Windows 8 have all the performance benefits of IE10 when showing Web content. In Metro style apps, Web content is always JIT compiled and hardware-accelerated. Other platforms do not provide the same level of performance in apps. For example, Cocoa apps on iOS offer significantly worse JavaScript performance (via the UIWebView control) than the same content running in Safari. These Cocoa apps do not enjoy JIT compilation, and these apps cannot show and use Web content the same way the browser on the system can:
Why is this important?Many applications embed HTML to provide a richer and always up to date experience for consumers. For example, the developer of a restaurant guide app might want to include a live map showing the locations of the list of restaurants the user is choosing from. If you write an app on iOS, common actions like panning and zooming the map will run twice as slow in an app compared with Safari. Anyone writing a Metro style app for Windows 8 can easily include Web content in their app. In an HTML or XAML app, just include an <iframe> element or a WebView control to get the full benefit of IE 10 performance. To see a sample HTML app that demonstrates this, check out the “Building Your First Metro Style App Using Javascript” hands-on lab at http://www.buildwindows.com/Labs.
With Metro style apps, it’s easy to integrate many existing Web services seamlessly into your app. It’s also possible to build new services for your app that let you deliver dynamic HTML content without having to update your application. When you include Web content in your Metro style app, your app gets all the performance benefits of IE10 automatically without any additional or special work. JavaScript code continues to run fast with JIT compilation, and your app will automatically use GPU to accelerate HTML graphics. —Andy Zeigler, Senior Program Manager, Internet Explorer | |||||||||||||||||||||||||||
| 05/02/12 20:00 | Fog and Public Service | |||||||||||||||||||||||||||
| 04/02/12 21:54 | Default to IncognitoPatch for 108c108 < Exec=/opt/google/chrome/google-chrome %U --- > Exec=/opt/google/chrome/google-chrome %U --incognito 114c114 < X-Ayatana-Desktop-Shortcuts=NewWindow;NewIncognito --- > X-Ayatana-Desktop-Shortcuts=NewIncognito;NewWindow | |||||||||||||||||||||||||||
| 03/02/12 20:00 | An Office | |||||||||||||||||||||||||||
| 02/02/12 18:32 | Inside the CSS WG: A New Reality Series | |||||||||||||||||||||||||||
| 02/02/12 18:07 | CSS3 3D Transforms in IE10CSS3 features make it easier to build rich and immersive Web experiences. A recent post described how Web developers add personality to their sites with CSS3 Transitions and Animations. CSS3 3D Transforms add another dimension (literally) for developers to enhance their sites. For example, the Windows 8 Metro style Start page uses subtle 3D transforms to highlight pressed tiles, as shown below.
Adding a 3rd Dimension to CSS TransformsLike CSS3 2D Transforms, 3D Transforms provides functions and values for the CSS
A new CSS3 3D Transforms also adds a few new CSS properties. In addition to the Note: The markup examples in this post all use unprefixed properties as defined in the W3C standard. However, at this time all browsers that implement these features do so with vendor-specific prefixes. Please remember to add your browser’s prefix to the example markup when experimenting. PerspectiveThe In the examples below is the original, untransformed element and is the transformed element
A shortcut for adding the perspective transform to several elements is to use the
The
Below, you can see that shifting the perspective origin to the left makes the content to the right of the original perspective origin appear farther away.
backface-visibilityThe CSS markup:
HTML markup for one card:
Creating six cards as defined above and giving each a
What’s happening in this example is that when there’s no rotation, you see the second 3D Transforms with Animations and TransitionsBest of all, you can even use 3D transforms in conjunction with CSS transitions and
animations. If you are using IE10 or another browser that supports CSS3 Animations of CSS3 3D
Transforms, try this example of scrolling
text, built by animating the This is the CSS markup that achieves the effect shown in screen shots below.
Try It TodayTry this out in IE10 on the Windows Developer Preview. The test drive demo Hands On: 3D Transforms can help visualize the possibilities that CSS 3D Transforms enables. We’d love to see your creations! —Jennifer Yu, Program Manager, Internet Explorer Graphics | |||||||||||||||||||||||||||
| 02/02/12 13:42 | WunderbarClearly if you want to develop a real web application, you need a router, a templating language, ability to separate out your model, view, and controller, scalability, and much more. However, at times this is both too much, and yet not enough. I find that I write a lot of scripts that do report generation, execution of shell commands, and the like, and in many cases would like to present a richer output than plain text: things like tables, fonts, and most importantly hypertext links. I’ve been extracting some of the common logic from these scripts out into a library, and recently have started refactoring that library. | |||||||||||||||||||||||||||
| 31/01/12 20:00 | Channel Choices | |||||||||||||||||||||||||||
| 31/01/12 17:12 | Web Sites and a Plug-in Free WebThe transition to a plug-in free Web is happening today. Any site that uses plug-ins needs to understand what their customers experience when browsing plug-in free. Lots of Web browsing today happens on devices that simply don’t support plug-ins. Even browsers that do support plug-ins offer many ways to run plug-in free. Metro style IE runs plug-in free to improve battery life as well as security, reliability, and privacy for consumers. Previously, we wrote about how we use IE’s Compatibility View List to make sure sites that have a plug-in free experience for other browsers provide that same experience to IE10 users. This post describes a way for sites that continue to rely on plug-ins to provide consumers browsing with Metro style IE the best possible experience. Developers with sites that need plug-ins can use an HTTP header or HTTP Header
META Tag
Metro style IE10 detects these flags, and provides the consumer a one-touch option to switch to IE10 on the desktop:
In addition to respecting these This mechanism provides a short-term mitigation. The desktop browsing experience and most plug-ins were not designed for smaller screens, battery constraints, and no mouse. Providing an easy way to the Windows desktop is the last resort when no comparable plug-in free fallback content exists. A plug-in free Web benefits consumers and developers and we all take part in the transition. IE10 makes it easy to provide the best possible experience while you migrate your site. —John Hrvatin, Program Manager Lead, Internet Explorer | |||||||||||||||||||||||||||
| 28/01/12 20:00 | Cloudy | |||||||||||||||||||||||||||
| 28/01/12 20:00 | Street | |||||||||||||||||||||||||||
| 27/01/12 21:38 | Creating Files through BlobBuilderAs Web sites transition more and more into Web applications, working with files in meaningful ways is becoming increasingly important. Starting with Platform Preview 2, IE10 includes support for the File API, enabling developers to read and slice files on the client. Platform Preview 4 adds support for BlobBuilder, a way for developers to create new files. IE10 also has two new methods that allow the user to save blobs to their computer, enabling great end-to-end experiences when working with client-resident data. Over on the IE Test Drive, we have a fun piano demo showing off BlobBuilder and File API capabilities. When you press notes on the piano, the site constructs two files: an mp3 music file and an SVG file of the musical score. You can see how the size of both files change each time you press a note. Press the play button to listen to your song, or download either the music file or the SVG score file by pressing the links just above the piano keys. In the rest of this blog post I’ll go through how the demo works, focusing on the capabilities of BlobBuilder and File API.
BlobBuilder CapabilitiesBlobBuilder, like the name implies, is a way to build blobs on the client. The main method to do this is
The piano demo creates the mp3 file by appending blobs together, using one blob for each note. The demo creates the SVG file of the musical score by appending text that contains the SVG source.
One thing to note about the
In all browsers, blob1 will contain the text “ Getting Blobs via XHRThe File API makes it easy to access files selected by the user, something I demonstrated in the Magnetic Poetry demo. This is great when you want to incorporate the users own data into your site. However, in the piano demo, I needed the note files to be built into the demo. When you want to work with blobs but you want to supply the data, you can use XHR. New to IE10 is the XHR
One thing you may notice is that the demo only makes a single XHR request. It only downloads
one file which contains all the notes used in the demo. However, when you press a key in the demo, only a single note
plays and the site appends only a single note to the mp3 file. To make that work, after downloading the file containing
all the notes, the site slices the file using the File API Creating the Music FileOnce I have a blob for each note in the demo, creating the mp3 file is easy. Each time you press a key I call:
In order to update the file size, I get the blob and then get the file size.
Lastly because I know that the BlobBuilder object was cleared out when I called
Creating the SVG FileEach time you press a key in the demo, you see a note added to the musical score. The musical score is drawn by a single SVG element contained within a div with an id of “scoreContainer.” Each time you press a key, script runs which adds a note to the SVG element and then the SVG file is created by appending the source:
In this case, I don’t refill the svgBlobBuilder because I want to start with a clean slate the next time the user presses a key. Saving Files to DiskThe last part of the demo is saving the files to disk. When you press the “Music File” and “Musical Score File” links on top of the piano keys you will be able to save the file though an experience that feels just like downloading a file:
Note that the notification bar is not available in the Platform Previews. Instead, a save dialog is presented. Each link calls either
Calling Creating the Piano demo was a fun experience and I’m excited to see how you will use BlobBuilder. Let us know what you think! —Sharon Newman, Program Manager, Internet Explorer | |||||||||||||||||||||||||||
| 26/01/12 00:51 | Debugging IndexedDB ApplicationsIndexedDB is a W3C Working Draft that enables JavaScript developers to store, search, and retrieve data on the user's local client, even when Internet connectivity is disabled. This blog post describes IDBExplorer, a tool we use internally to debug IndexedDB applications. IDBExplorer lets you view database schemas, object store content, and index details. Exploring the tool with an example IndexedDB AppTo illustrate, I created an application that tracks my New Year’s resolutions using IndexedDB. It stores and accesses my resolutions locally (on the system browsing the Web page) and lets me add or edit them. The “Done That!” button removes the selected resolution from the list and removes its internal representation from the database.
IndexedDB defines a database as a container of information. Each database contains object stores, which are repositories for JavaScript objects. Each object contains attributes which can be queried using the API. If you're familiar with relational databases, object stores can be equated to tables and each JavaScript object in an object store represents a record. However, the objects stored in an IndexedDB object store are treated as opaque entities. In addition, these objects do not have to contain the same properties. If a JavaScript object is analogous to a relational database record, then the properties of that object can be thought of as columns (or fields) in a table. As a result, IndexedDB allows you to define indexes that identify object properties that can be used to search the records in an object store. Thus, indexes allow you to traverse and search IndexedDB data using the attribute values on a JavaScript object. IndexedDB allows each Domain to have multiple databases. This example uses one database: “NewYear.” The app stores my resolutions in an object store named “Resolutions” inside the NewYear database. Each resolution is a JavaScript object with the following attributes:
Notice that not all attributes are visible from the application’s UI. In some cases, they are only internally used (e.g.
Here’s how the IDBExplorer tool displays the contents of the “Resolutions” object store:
The “Resolutions” object store also contains an index on the The tool uses a tree hierarchy to illustrate these relationships:
The IDBExplorer tool shows there are five resolutions in my database (two high priority tasks, two medium priorities, and one low priority). Using the application, I can add a new resolution:
The app retrieves the values for
You can update a resolution by selecting it in the “WorkOn” screen and choosing “Edit.” After making any changes, selecting the “Update” button will commit the changes and update the values in the “Resolutions” object store.
Using IDBExplorer in your ApplicationsYou can include the IDBExplorer tool in your Metro style app or Web site. However, we recommend you not deploy the tool with your app. To add the tool to your site, copy and unzip the content of the IDBExplorer package into your site. Your application will need to link to the IDBExplorer.html file contained inside the IDBExplorer folder using either an iframe element or a new window. In our example, we decided to host IDBExplorer inside an iframe element. . However, for normal development we recommend hosting this URI inside a new window. This will allow you to have a side-by-side experience when debugging your database and application without affecting your site's user interface. When hosting IDBExplorer, you need to pass the database name using the query string. In this example, this was done using the src attribute of the iframe element:
When planning to host this functionality in a Metro style app, remember that Metro-style apps run fullscreen. As a result, you should navigate to this URL, rather than opening a new window (you will need to add a Back button to the IDBExplorer.html file in order to be able to return to your application). Alternatively, you can add an iframe element and display the tool in it. Enjoy the tool and let us know what you think! —Israel Hilerio, Ph.D., Principal Program Manager, Internet Explorer | |||||||||||||||||||||||||||
| 25/01/12 20:00 | Chinese Workers’ Problems | |||||||||||||||||||||||||||
| 25/01/12 20:00 | Size Still Matters | |||||||||||||||||||||||||||
| 24/01/12 06:53 | This Week in PrivacyIn the last ten years Microsoft has invested heavily in user privacy. Just like security, privacy considerations are baked into every Microsoft product. It is almost a year since the World Wide Web Consortium (W3C), an international community that develops open standards to ensure the long-term growth of the Web, accepted and published Microsoft’s member submission for an Internet Standard to help protect consumer privacy. Last September I described how the W3C had announced the creation of a Tracking Protection Working Group that would bring together a broad set of stakeholders from across the industry to work on standards for “Do Not Track” technology and the group has been hard at work since then. This week there are three important events related to online privacy:
These forums bring together opinion leaders and stakeholders from academia, industry, and government to discuss information technology, privacy, and data protection. W3C’s Third Face-to-face Meeting of the Tracking Protection Working GroupThe W3C Tracking Protection working group is chartered to produce three deliverables:
Tracking Selection Lists are designed to complement the DNT signal, which will take some time to be effective. Inevitably, not all sites will respect the DNT user preference and Tracking Selection Lists will provide consumers an additional control to avoid being tracked by those sites. When a Tracking Selection List is enabled, the browser will avoid contacting the listed sites. You can read more about IE9’s Tracking Protection from previous blog posts. Computers, Privacy and Data Protection ConferenceI am looking forward to participating in the Tracking Protection Workshop at the CPDP Conference tomorrow afternoon. Simon Davies, a Research Fellow at LSE and Director of Privacy International, and Alexander Hanff, who heads up Privacy International’s Digital Privacy portfolio, host a panel exploring the dynamics of Tracking Protection Lists. This should be an engaging session and I’m keen to listen to the questions and comments from all involved. What’s Next?The W3C working group has an aggressive timetable to make progress in the coming months, to tease out the consensus from the different groups involved, and to move the specification documents through the W3C process. You can follow the progress through the group’s mailing list archive. I plan to provide further updates on IEBlog. The minutes from this week’s meeting will be published on the group’s home page. —Adrian Bateman, Program Manager, Internet Explorer | |||||||||||||||||||||||||||
| 23/01/12 15:21 | Port ForwardingProblem: I’m not always at the machine that is VPN’ed into work. Solution: place the following into #!/bin/sh # # redirect Sametime's port 1533 to messaging.ibm.com # echo 1 > /proc/sys/net/ipv4/ip_forward # turns on forwarding iptables -F -t nat # Flush existing translation tables iptables -t nat -A PREROUTING -p tcp --dport 1533 -j DNAT --to 9.17.136.77:1533 iptables -t nat -A POSTROUTING -j MASQUERADE | |||||||||||||||||||||||||||
| 20/01/12 20:34 | IE10 Compat InspectorCompat Inspector is now available for IE10. Use Compat Inspector to quickly identify if Internet Explorer platform changes affect your site. Whether you're preparing for IE10 or still updating for IE9, run Compat Inspector on any page experiencing problems. Then watch for messages explaining potential issues and steps you can take to resolve them.
About Compat InspectorCompat Inspector is a JavaScript-based testing tool that analyzes your site while it runs. Compat Inspector reports patterns of interaction which cause issues in recent modes. This allows you to identify problems quickly without memorizing a bunch of documentation or searching through the entirety of your site's code. We developed Compat Inspector during the course of IE9 to speed up the process of recognizing common issues across different sites and have now updated it for IE10. Along the way, many members of the IE team contributed to the set of test cases that make up the rules in Compat Inspector. Compat Inspector is designed to help sites migrating to IE9 or IE10 mode—not those running in legacy modes. You can test sites that run in legacy modes by selecting a more recent mode via the F12 developer tools. Just press F12 to open the tools, click on "Document Mode" in the menu bar, then select "Standards". You may need to refer to more detailed documentation such as the IE9 Compatibility Cookbook or the IE10 Developer Guide for some issues. The best pattern is to use Compat Inspector first, then fall back to the documentation if nothing is found. Using Compat InspectorRun Compat Inspector by adding the following script before all other scripts on each page you want to test (the need to run before other scripts means Compat Inspector can't be used as a bookmarklet):
This will place a status widget in the upper right hand corner of the page. Click the widget to get more information.
You can streamline this process by using Fiddler to automatically inject Compat Inspector on pages you visit. Just add this snippet to your Fiddler Script to get up and running. This configuration also automatically inspects all sub-frames in a page. Once the snippet is in place you can toggle Compat Inspector on and off from Fiddler's "Rules" menu.
Go hands-on to get a feel for the improvements using the Compat Inspector Test Drive. Then visit the Compat Inspector User Guide to learn more about how to test your own sites. —Tony Ross, Program Manager, Internet Explorer | |||||||||||||||||||||||||||
| 20/01/12 17:30 | AWDwR updated for Rails 3.2David Heinemeier Hansson: there’s a brand new 3.2-compatible version of Agile Web Development with Rails. This time, the release of Rails 3.2 and the release of the eBook were coordinated. | |||||||||||||||||||||||||||
| 18/01/12 17:27 | Under the Covers: Let It Snow…With one of those rare Seattle snowstorms underway today, I feel this is a great time to publish this description of our Holiday 2011 Test Drive demo “Let It Snow.” —Editor When a browser effectively uses the underlying hardware, the possibilities are limitless. Over the holidays we released a demo that helps showcase the advantages of a fully hardware-accelerated, touch first browsing experience with Internet Explorer 10. This post takes a closer look at how the Let It Snow demo was created. The patterns in this demo are typical of the HTML5 experiences emerging across the Web today and early Metro Style Apps. We’ll take a look from a functional point of view, rather than visual. As low power mobile devices and touch first user experiences become mainstream, customer expectations around browser performance are quickly expanding. Browser performance now includes how smoothly the Web site moves under your finger, how quickly the Web site responds to touch interactions, and how efficiently the browser consumes battery. With Internet Explorer 10 and Windows 8 we set out to build the world’s fastest browser for real world scenarios. Building Let It Snow
We’re excited about the fast and fluid interactive experiences that can be achieved in Internet Explorer 10 and Windows 8 with a fully hardware-accelerated and touch enabled HTML5 platform. There’s no better way to experience these benefits than first hand through the Windows 8 Developer Preview. —Bogdan Brinza, Program Manager, Internet Explorer | |||||||||||||||||||||||||||
| 18/01/12 09:16 | SOPA/PIPA Blackout Supporter! | |||||||||||||||||||||||||||
| 17/01/12 18:21 | Staying Safe Online in the New YearThe bad guys didn’t take a holiday vacation: Internet Explorer’s SmartScreen service blocked nearly 2 million malware downloads per day on average from mid-December through New Year’s. December 25 saw a 30% spike in malware blocks— successfully preventing users from being tricked into giving their PCs an unwanted “present.” January is a great time to resolve to stay safer online. Microsoft works around the clock, year-round, to help. By following a few simple best practices, including opting into Automatic Updates and Internet Explorer’s SmartScreen Filter, you can help keep your computer secure on the Web. New PC owners will be happy to hear that Windows 7 users are 5 times less likely to be infected with malware than users running Windows XP. To improve your defenses even more, Windows 7 and Windows Vista users should be sure to upgrade to IE9, our safest and most secure browser. Later this month, we’ll help keep more customers safe by beginning simpler, seamless automatic upgrade process for customers who aren’t running the latest, most secure versions of IE for their operating system. Of course, no matter what OS and browser you use, you should ensure that you install updates as they become available – including updates for browser extensions, a common source of vulnerability. If you got a new phone or tablet over the holiday, be extra careful where you get your apps—the bad guys have noted these fresh new targets and are reacting accordingly. This month marks the tenth anniversary of Bill Gates’ Trustworthy Computing memo, and delivering trustworthy browsing is more important than ever, as the ecosystem grows to encompass phones, tablets, and other form factors and the bad guys attempt even more clever attacks. We’re excited to be working with the rest of the Windows team on cutting-edge security improvements in IE10 and Windows 8, and we’ll be describing our new defenses in a series of posts over the next two months. —Eric Lawrence, IE Security | |||||||||||||||||||||||||||
| 17/01/12 15:36 | The President’s challengeNat Torkington: Don’t wait for the time machine, because we’re never going to invent something that returns you to 1965 when copying was hard and you could treat the customer’s convenience with contempt. | |||||||||||||||||||||||||||
| 17/01/12 00:52 | Introducing Seven More IEBlogsToday we introduce seven new language versions of IEBlog—French, German, Portuguese (Brazil), Korean, Japanese, Chinese (PRC), and Russian. Links to these appear in the new “Languages” block at the top of the right column. We plan to publish translated versions five to ten days after their appearance on the English language IEBlog. We’ve worked hard to localize most of the language elements on the page and in the posts themselves. Text within images will remain in English though we translate captions and image alt text. Markup and code samples will also remain in English. Occasionally, we’ll mistakenly translate an HTML, CSS, or JavaScript keyword; please forgive us. The links along the top and bottom of the page which link to English-language pages remain in English. One of the more fun programming tasks in localizing IEBlog was to correctly translate and reformat the dates and times of the posts and comments. We decided to go one step further and translate the time (which was previously always displayed in US Pacific Time) to the time zone of the viewer. We also made this change to the English language version. If you’re a speaker of one of these languages, we hope you’ll enjoy the new versions of IEBlog. —Marcia Coelho da Costa, Senior International Project Manager, | |||||||||||||||||||||||||||
| 11/01/12 17:18 | Controlling Selection with CSS user-selectIE10 Platform Preview 4 includes support for a new CSS property,
Consider a typical news Web site. Most pages will include a news article, the contents
of which the user needs to be able to select because they read by selecting text
or because they want to share the content. Also on the news Web page there are some
menus and links to other parts of the site. Users likely don’t need to select these
items. Using The IE Test Drive site includes an example that does this.
Setting
A developer can turn off text selection by setting
Play around with the examples on the IE Test Drive site and let us know what you think. —Sharon Newman, Program Manager, Internet Explorer | |||||||||||||||||||||||||||
| 09/01/12 20:39 | Web With Molly: Core HTML and CSS for the Open Web | |||||||||||||||||||||||||||
| 09/01/12 17:39 | CSS Corner: Using the Whole FontWith cross-browser support for both the
CSS3 One remaining limitation prevents Web designers from using the entire font: the inability to access the large variety of optional OpenType® features built into many fonts. These features define glyph substitution and positioning options to support fundamental typographical features such as kerning, superscript and subscript, contextual letterforms such as ligatures, numeral styles, access to alternate East Asian glyphs as well as ornamental swashes. For instance, an OpenType “stylistic set” built into Gabriola allows this text:
…to render as:
Recent updates to the CSS3 Fonts module include a new set of properties to expose these OpenType features within CSS. These properties can be grouped in two broad categories:
CSS Property: font-feature-settingsPreview 4 of IE10 includes support for the font-feature-settings property. Our earlier Gabriola example could thus be written:
The The OpenType feature registry defines the list of possible tags (also documented here and standardized by ISO). Here a few of the most popular:
For a good illustrated introduction to these features and many others, we recommend the Layout Features section of the FontFont OpenType User Guide. The more common features are on/off switches. Feature values of off or zero turn the feature off; a value of on or any positive integer activates it. For some features, an integer value gives access to several options. This is usually the case for swashes (‘swsh’). If no value is specified for the feature, a value of 1 is assumed. All the following declarations are thus equivalent for the purpose of our Gabriola example:
Finding Out Supported Features for a FontDesign tools such as Adobe InDesign or Illustrator expose OpenType features through user-friendly menus and dialogs, word processors such as Word support them through their font selection dialog and font vendors often document which features their products support. A future post will discuss using the browser to detect font features. With more browser access to OpenType features we expect font hosting services to do more to advertise and document their use as well. Browser SupportThe font-feature-settings property is currently supported by Firefox 4+ and Internet Explorer 10, beginning with Preview 4. Note that because Firefox and IE implemented different versions of the draft the value syntax they accept is different. For example, enabling kerning in both browsers requires the following:
More information about –moz-font-feature-settings see -moz-font-feature-settings. As CSS3 Fonts moves along the standardization track we expect more browsers to add support for font-feature-setttings as well as the more author-friendly font-variant properties and values defined in the module. Also note that the property applies to all font families, whether Web fonts downloaded through @font-face rules or local fonts referenced by name. DemosOur IE Test Drive site includes advanced OpenType feature demos from Monotype Imaging, FontFont and The Font Bureau. They demonstrate the variety of typographic designs available in modern fonts. You don’t need any special fonts to try this. Windows 7 includes a number of OpenType-enabled fonts including Calibri, Cambria, Consolas, Gabriola, and Palatino Linotype. In the Windows 8 Developer Preview, we added OpenType features to Segoe UI and the Web-safe fonts Arial, Verdana, Georgia, Times New Roman, Comic Sans and Trebuchet. We are excited to give Web authors access to all the OpenType features built in Web fonts and look forward to an even broader range of typographic design on the Web. —Sylvain Galineau, Program Manager, Internet Explorer | |||||||||||||||||||||||||||
| 04/01/12 20:10 | Bootstrapping Debian UnstableIt turns out that the following is all it takes to install Debian Unstable in a chroot jail under Ubuntu, and then to log into that jail as root: apt-get install debootstrap schroot mkdir /tmp/unstable debootstrap unstable /tmp/unstable chroot /tmp/unstable | |||||||||||||||||||||||||||
| 31/12/11 10:21 | Happy New Year 2012 | |||||||||||||||||||||||||||