Web Info & Tutorials

June 30th, 2010

THE DEATH OF THE PIXEL AS WE KNOW IT; THE NEW DPI WEB

The Web utilised to be so simple. Browser letter goes to server, where you do whatever work, and convey whatever HTML. Then we got Ajax and eventually scheme apps could hit whatever colour of UI responsiveness. Now we hit richer HTML5 technologies to modify expectations of our users erst again.

The Web is effort whatever newborn DPI love, and the newborn iPhone 4 pass personifies this fact. The newborn pass is strange for the consumer, and an possibleness for the organisation informed to physique genuinely bonny scheme sites. There is a bounteous difference:

However, how do we as developers care with this newborn world?

Aral Balkan has a pleasant locate that goes into discourse on the newborn possibleness and shares samples and ideas.

As with so whatever things on the Web, whatever of this has been intellection of a loooong instance ago. Dave Hyatt wrote most this back in 2006.

Walt poet locate unitedly a guide to the retina pass and using CSS3 media queries:

CSS:

<link rel=“stylesheet”
    type=“text/css”
    href=“/css/retina.css”
    media=“only concealment and (-webkit-min-device-pixel-ratio: 2)”
/>
 

Aral explains that “in the Retina-specific CSS, he loads in 32×32 icons as scenery images and specifies their dimensions in CSS pixels as 16×16 using the background-size CSS property.”

It is engrossing to wager a figure element ratio utilised kinda than specifying a DPI itself.

What added crapper be finished to support folks in this newborn world?

Aral talks most how the application could natively support via convention:

I’d aforementioned to declare that browsers take the aforementioned denotive gathering that Cocoa Touch uses to encounter and alluviation high-DPI versions of ikon and recording assets. That is, if I embed an ikon using the mass code…

HTML:

<img src=“flower.jpg” alt=“A bonny rose”/>
 

… it should alluviation in flower.jpg when the device-pixel-ratio is 1 but it should endeavor to encounter an ikon titled flower@2x.jpg at the aforementioned qualifying line if device-pixel-ratio is 2 (and so on, for higher pixel-ratios), dropping backwards to the example realistic if it can’t encounter a high-resolution version.

(And the aforementioned gathering could be utilised to alluviation recording assets.)

Maybe there are computer lateral techniques that could be locate in locate to automatically help up the most optimized ikon for a presented DPI. This would kibosh a clump of 404s, but requires more impact on the conception of the computer monkey.

This is beatific programme for SVG and libraries aforementioned Raphael, who are substantially suited for scaling. When activity with an iPhone 4 it was awful how apace you detected the bitmaps that were likewise baritone res… they follow discover aforementioned a painful thumb. Expectations hit changed.

What added crapper we do?

June 30th, 2010

JQUERY.FN.WEBKITTRANSFORM: BANANAS ON THE SKEW-WHIFF

Franz Enzenhofer has created a pleasant newborn webkitTransform plugin that helps you control transforms and state.

Franz tells us more:

With jQuery.css you can’t easily modify the webkitTransform CSS because webkitTransform is not your cipher CSS.

If in digit travel you add .css('-webkit-transform', "rotate(20deg)") and in the incoming travel .css('-webkit-transform', "scale(2.0)") the circumvolve continuance gets reset, as you hit rewritten the rank -webkit-transform CSS value.

You could ingest the WebKitCSSMatrix javascript element, but it’s currently buggy, not consistently implemented and a discompose to use.

Additionally you can’t meet regain the ‘-webkit-transform’ css with .css(’-webkit-transform’) as this meet gives a matrix code.

Our content with webkitTransform() was to mend this problem. With it, every surroundings you distribute webkit-transform css with crapper be altered in a ultimate way, without resetting every another -webkit-transform values.

June 30th, 2010

HTML5 VIDEO; YOUTUBE PERSPECTIVE

The YouTube API journal put their saucer of analyse on HTML5 video on the table. I would fuck to undergo ground they change same this was the correct time, and what their seek is. I encounter myself ofttimes potty with the Google strategy. On digit assistance they are doing awful things for the Open Web (Chrome, tools, Steve Souders and Web action work), but on the another we wager an encounter with Adobe and Flash (a someone to Apple).

Man, I am torn. The pragmatist totally gets it. But the man who realizes that it was the Web openness that allowed the likes of Google become from null to the worker that it is today in a decade, gets confused.

If you are a Flash follower you wager this as “see! Flash is here to stay!” As someone who wants to wager the Web standards intend meliorate fast, we wager whatever of the strength (fact that we hit frequence and video, and the WebM codec) and features that we requirement to intend in:

Robust recording streaming

Closely attendant to the requirement for a accepted info is the requirement for an trenchant and sure effectuation of delivering the recording to the browser. Simply pointing the covering at a come is not beatific enough, as that doesn’t earmark users to easily intend to the conception of the recording they want. As we’ve been expanding into bringing full-length movies and springy events, it also becomes essential to hit dustlike curb over buffering and impulsive calibre control. Flash Player addresses these needs by letting applications curb the downloading and playback of recording via Actionscript in union with either prescript or the RTMP recording moving protocol. The HTML5 accepted itself does not come recording moving protocols, but a sort of vendors and organizations are employed to meliorate the undergo of delivering recording over HTTP. We are first to advance to these efforts and wish to wager a azygos accepted emerge.

Content Protection

YouTube doesn’t possess the videos that you check - they’re owned by their individual creators, who curb how those videos are diffuse finished YouTube. For YouTube Rentals, recording owners order us to ingest bonded moving technology, much as the Flash Platform’s RTMPE protocol, to bonded their videos are not redistributed. Without noesis protection, we would not be healthy to substance videos same this.

Encapsulation + Embedding

Flash Player’s knowledge to consortium covering cipher and resources into a secure, economical collection has been device in allowing YouTube videos to be embedded in another scheme sites. Web place owners requirement to bonded that embedded noesis is not healthy to admittance clannish individual aggregation on the containing page, and we requirement to bonded that our recording contestant system travels with the recording (for features same captions, annotations, and advertising). While HTML5 adds sandboxing and message-passing functionality, Flash is the exclusive execution most scheme sites earmark for embedded noesis from another sites.

Fullscreen Video

HD recording begs to be watched in flooded screen, but that has not historically been doable with clean HTML. While most browsers hit a fullscreen mode, they do not earmark javascript to make it, nor do they earmark a diminutive conception of the tender (such as a recording player) to modify the screen. Flash Player provides robust, bonded controls for sanctioning hardware-accelerated fullscreen displays. While WebKit has fresh condemned whatever steps nervy on fullscreen support, it’s not still decent for recording practice (particularly the knowledge to move displaying noesis on crowning of the video).

Camera and Microphone access

Video is not meet a one-way medium. Every day, thousands of users achievement videos direct to YouTube from within their covering using webcams, which would not be doable without Flash technology. Camera admittance is also necessary for features same recording chitchat and springy medium - extremely essential on ambulatory phones which practically every hit a built-in camera. Flash Player has provided flush camera and mike admittance for individual eld now, patch HTML5 is meet effort started.

Time to diarthrosis downbound and have enthusiastic newborn recording features in the browsers!

June 30th, 2010

IE9 GETS A WEB TIMING API TO MEASURE PERFORMANCE

Web place action is a rattling essential topic. We should not permit our modify users move for our sites and optimizing them for alluviation instance and action crapper spend us thousands of dollars in traffic. There is a aggregation of enthusiastic noesis discover there on action (spearheaded by Yahoo a some eld back). When it comes to investigating the action after the tender has unexploded though there is a aggregation of things you crapper do criminal as you requirement to effort things with timers and wish null additional event to your effort organisation interferes with your results.

The IE9 aggroup wants to attain it easier for developers and additional a newborn Web Timing API in the browser. Web Timing is a W3C employed plan and the API implemented the NavigationTiming conception of the description in window.msPerformance.timing and offers you a some sets of aggregation without having to grapple your possess solution:

JAVASCRIPT:

interface MSPerformanceTiming{
     readonly concept unsigned longlong navigationStart;
     readonly concept unsigned longlong fetchStart;
     readonly concept unsigned longlong unloadStart;
     readonly concept unsigned longlong unloadEnd;
     readonly concept unsigned longlong domainLookupStart;
     readonly concept unsigned longlong domainLookupEnd;
     readonly concept unsigned longlong connectStart;
     readonly concept unsigned longlong connectEnd;
     readonly concept unsigned longlong requestStart;
     readonly concept unsigned longlong requestEnd;
     readonly concept unsigned longlong responseStart;
     readonly concept unsigned longlong responseEnd;
     readonly concept unsigned longlong domLoading;
     readonly concept unsigned longlong domInteractive;
     readonly concept unsigned longlong domContentLoaded;
     readonly concept unsigned longlong domComplete;
     readonly concept unsigned longlong loadStart;
     readonly concept unsigned longlong loadEnd;
     readonly concept unsigned longlong firstPaint;
     readonly concept unsigned longlong fullyLoaded;
}

You hit modify more granular curb in timingMeasures

JAVASCRIPT:

interface MSPerformanceTimingMeasures{
     readonly concept unsigned longlong navigation;
     readonly concept unsigned longlong fetch;
     readonly concept unsigned longlong unload;
     readonly concept unsigned longlong domainLookup;
     readonly concept unsigned longlong connect;
     readonly concept unsigned longlong request;
     readonly concept unsigned longlong response;
     readonly concept unsigned longlong domLoading;
     readonly concept unsigned longlong domInteractive;
     readonly concept unsigned longlong domContentLoaded;
     readonly concept unsigned longlong domComplete;
     readonly concept unsigned longlong load;
     readonly concept unsigned longlong firstPaint;
     readonly concept unsigned longlong fullyLoaded;
}

Read the example place on MSDN and check discover the demonstrate on IE Test Drive

June 29th, 2010

CHROMEKIT: SOME FOLK LOVE PUTTING WINDOWS IN BROWSERS

The awing Guillermo Rauch and Nathan White hit condemned digit of the Web cipher katas and played with it. Before the Web we had [wW]indows. Maybe that is ground developers are stabbing to compel windows within the Web page, mainly to wager if it crapper be done. We had the enthusiastic Emil and Erik antiquity desktops on the Web before we were in Web nappies. Now we hit Ext Desktop, and some more.

The stylish recreation from Guillermo and Nathan is ChromeKit, which gives you windows that countenance same Google Chrome.

The digit draw to the cipher kata this instance around, is their ingest of CSS3 morality to show soured skewing windows as they are tiled together.

June 28th, 2010

IE9: BIG LEAP FORWARD, AND HOW WE CAN HELP THE MICROSOFT INERTIA

Microsoft continues to affect with its developer advertisement releases for IE9. They went from a slow in both action and Web standards, to regrouping and doing whatever strange impact in both regards.

The worthy FTO has detailed the move nervy with CSS (in between watching his land aggroup do substantially in the World Cup. Not that I am friggin distrustful ;)

The seafaring of naif on the CSS compat tables is strange programme for the Web:

More on IE9 and CSS from PPK:

IE9 promises to be an superior browser. Its CSS hold is today at par with that of the another browsers — though apiece application ease has its limited areas where it performs less. But we cannot in beatific establishment feature that IE is behindhand the others some more.

There are exclusive a rattling some declarations in my effort that IE9 does not support. CSS columns, gradients, text-shadow, resize, and text-stroke are the exclusive ones, and the latter digit are WebKit-only.

Even meliorate news: Microsoft’s filters seem to hit meet disappeared from IE9. It supports connatural opacity; no more filters required. Also, the gradient separate is gone, leaving IE (temporarily?) not activity it.

Another metallic song that got dropped is cursor: hand, the MS copyrighted deciding to cursor: pointer. That’s not rattling essential in training (IE6 already based both syntaxes), but it’s a coercive symbolisation of the changes that the IE aggroup has wrought.

With so such excellence around I was nearly pleased when I institute digit azygos bug: IE9 doesn’t appendage white-space: pre-line right. This fault module be fixed, though. It’s typically a secondary saucer that crops up in a beta and is distant from the test product.

And, it isn’t meet CSS that is motion green. Kangax does a fantastic employ at hunting at JScript and the DOM. Not exclusive does he show the good, but also the areas that ease requirement transformation such as:

Unfortunately, the whole patron objects stock ease looks rattling kindred to the digit from IE8. Host objects don’t acquire from Object.prototype, don’t inform comely typeof, and don’t modify hit base properties same “length” or “prototype”, which every duty objects staleness have.

Kangax is doing a aggregation of beatific here. The more tests and call outs on what IE needs to do to be standards willing the better. With the newborn evaluate of advancement from the IE team, it isn’t same the older life where you intellection you were conversation to unheeding ears. Microsoft is listening, and modify meliorate than that, they are doing. Now is the instance to provide them as such content as we can.

What would you same to see?

June 28th, 2010

MADE IN CSS; IOS ICONS AND MORE

Do you savor the “looks at me physique something modify in clean CSS”-meme? It is kinda fun. On the digit assistance is shows what awful things grouping crapper build, and on the other…. it reminds us that we requirement whatever tools to support attain chronicle easier. At small the papers is here, and tools crapper become later.

Louis Harboe has followed up his acquire of an iPhone 4 with iOS 4 icons prefabricated with CSS. Now exclusive do we intend to wager his work, but he talks most the broad take ideas behindhand the implementation:

In the contacts icon, I utilised 5 assorted shapes for the silhouette icon. The nous is a rectangle with amygdaliform corners, followed by added rectangle for the cervix and a unshapely semi-circle for the body. In visit to intend the flex of the shoulders to the neck, I settled digit circles on crowning of the shapes.

The defy picture has individual rays of reddened actuation from behindhand the sun. Each digit of these rays is actually a daylong rectangle with a position that fades to straight on either end. I utilised -webkit-transform:rotate to circumvolve apiece rectangle to a assorted angle. The aforementioned gist was utilised for the iTunes icon.

To intend the darken picture on the iDisk icon, I utilised digit circles bedded on crowning of apiece other, above a amygdaliform rectangle. The large lot has a position that cuts soured meet before the rectangle.

Take a flooded warning much as calendar:

CSS:

.calendar {
        background: #9B2424;
}

.calendar .header {
        -webkit-border-top-left-radius: 30px;
        -webkit-border-top-right-radius: 30px;
        background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#EEC4C4), to(#521B1C), color-stop(.92,#da3434),color-stop(.1,#ef9fa5));
        height: 50px;
        width: 176px;
        -webkit-box-shadow: inset 0px 2px 1px rgba(255, 255, 255, 0.4);
}

.calendar p.weekday {
        color: #fff;
        font-weight: bold;
        text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.7);
        width: 176px;
        line-height: 50px;
        font-size: 25px;
        text-align: center;
}

.calendar p.daynumber {
        color: #000;
        font-weight: bold;
        text-shadow: 0px 1px 0px #fff;
        width: 176px;
        line-height: 126px;
        font-size: 130px;
        text-align: center;
}

.calendar .paper {
        -webkit-border-bottom-left-radius: 30px;
        -webkit-border-bottom-right-radius: 30px;
        background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#7A7A7A), to(#EDEDED), color-stop(.05,#BFBFBF),color-stop(.2,#E3E3E3));
        height: 126px;
        width: 176px;
}
 

Awesome. One pleasant abstract most this move is that it crapper scale. iPhone 4 users are already conversation most how glaring it is when apps hit baritone res assets. Even the Facebook applications…. the book looks great, but the picture is blocky.

Also, whatever added pleasant CSS position examples were put on display.

June 25th, 2010

HOW CUSTOM EVENTS WILL SAVE US ALL


I am a bounteous follower of both saint Dupont, and custom events.

In his show he goes finished whatever rattling pleasant ingest cases. Some are interbreed selection (e.g. the fact that you crapper organisation test, or debug, or … so much easier) and whatever are limited much as:

Scripty2 aliveness heartbeat

JAVASCRIPT:

// ready the trice going
setTimeout(function() {
  document.fire(“effect:heartbeat”);
}, 0);

// center in
document.observe(“effect:heartbeat”, advanceEffectByOneFrame);

// allows for pleasant debugging
document.observe(“keydown”, function(event) {
  if (event.keyCode === Event.KEY_RIGHT) {
    document.fire(“effect:heartbeat”);
  }
});
 

Another pleasant warning is how you crapper move using the newborn and modify EventSource patch retrofitting the functionality for browsers who don’t compel the newborn standard:

JAVASCRIPT:

// newborn browsers
var eventSource = $(‘event_source’);
eventSource.observe(’server-sent-event-name’, function(event) {
  document.fire(‘data:received’, event.data);
});

// older browsers
new Ajax.Request(‘/legacy/polling’, {
  onComplete: function(request) {
    document.fire(‘data:received’, request.responseJSON);
  }
});

// individual entireness for both
$(document).observe(‘data:received’, function(event) {
  doStuff(event.memo);
});
 

And, there are some more enthusiastic examples in the slides.

How hit you been using bespoken events?

June 24th, 2010

EXTENSIONFM: A CASE STUDY ON A SEXY APP, TURN EXTENSION

Editor’s note: Dan Kantor is the CEO behindhand the awing ExtensionFM project. It rattling pushes the boundaries on what the Web crapper do, so I asked Dan to wage us a mini housing conceive on the project. What follows is his text on the matter. Thanks for attractive the instance Dan!

Dion recently posted most the territory to a more client-centric web. The locate impact bag with me as the originator of a web-based covering that is as much ‘app-like’ as it is ‘web-like’. The prospect of the web, and HTML5 in particular, is that we module eventually accomplish the write-once, run-anywhere imagine we hit every been in wager of that neither Java nor Flash could full deliver. Dion poses this discourse (and answer) towards the modify of the locate – ‘As a developer, do you poverty to opening experiences between unbelievably multifarious platforms much as Web, iPhone, Android, WinPho 7, RIM, Kindle SDK, [insert some others!]? No.’. I don’t conceive some developers would debate with Dion’s answer. The actual discourse is – ‘Are we there yet?’

My consort is nonindustrial a client-centric web-based penalization contestant that cuts no corners in its endeavor to look, wager and separate aforementioned a autochthonous application. We threw proportional improvement discover the door, pushed the tone to the HTML5 metal and created something that most grouping would be hard-pressed to conceive is not a autochthonous covering if they didn’t already wager it streaming exclusive the browser. However, there is a catch. Our covering exclusive runs exclusive Chrome. This was of instruction by design. We shapely it as a Chrome extension. We didn’t opt to do this because we desired to limit it to Chrome. We did this because a super conception of the functionality of our covering needs the contestant APIs and permissions an spreading gives you. A pleasant side-effect of that is we undergo 100% of our users are using an HTML5 confident browser. Chrome extensions are 100% HTML(5), CSS(3) and Javascript. Extensions wage contestant Javascript APIs that wage you admittance to functionality that you otherwise would not hit streaming as a website much as removing section restrictions on cross-domain xhr and requiring authorisation to pass screen notifications. Of the thousands of lines of cipher in our extension, exclusive 5% of it is Chrome specific. In theory, this should attain porting to another browsers and OS’s easy. Let’s wager what it looks aforementioned in practice.

A some months ago, we definite to wager what our covering would countenance aforementioned on the iPad. After meet quaternary hours, we had a employed image of our penalization contestant that looked and change autochthonous but more importantly looked and change meet aforementioned our Chrome extension. This was doable because Chrome and Safari care the aforementioned performance engine – Webkit. Mobile Safari has already implemented some of the HTML5 features we necessary much as HTML5 Audio, Web Database and Local Storage and some of the CSS3 features we necessary much as Background Gradients, Rounded Corners and Box-Shadows. We were healthy to re-use most of our Javascript cipher and since we utilised a aggregation of CSS in locate of images, we were healthy to resize elements with ease. But a image is meet a prototype. Could our web-application actually be a viable transport creation on the iPad?

At this point, the respond is no. Mobile Safari has digit quirks that earnestly restrict its knowledge to behave as a scheme platform. The prototypal is it’s demand of immobile positioning. If there was digit feature that circumscribed autochthonous applications vs. scheme applications it would be that autochthonous applications nearly ever inclose noesis with a crowning and lowermost place of buttons or displays. Think most iPhone apps. Almost every digit of them (minus games) has a guidance place on crowning and a program of buttons on the bottom. To vantage this soured as a web-application, you requirement immobile positioning. Unfortunately, Mobile Safari (as substantially as Android’s browser) do not wage this feature. There are some hacks to emulate it though. Apple has modify matured a Javascript/CSS hold to intend around this themselves. For our iPad web-app, we utilised a accumulation titled TouchScroll that uses Javascript and CSS animations to emulate scrolling. Overall, the demand of immobile orientating is not a game-ender, as hacks are available, but it trusty adds a place of complexness to antiquity a client-centric web-app that module attain some developers’ lives more difficult. The incoming quirk haw meet be a game-ender. Mobile Safari on the iPhone and iPad has an galling knowledge to change windows erst you unstoppered up a few. So feature you hit a some windows unstoppered including our penalization player. The penalization contestant is not the astir pane however. When you utter backwards on it to attain it active, it refreshes. I’m not trusty ground this happens though my surmisal is it has something to do with module management. Either way, most apps (especially penalization or recording ones) cannot be condemned earnestly if the covering is constantly refreshing. Sure, in theory applications could reassert their land between refreshes. But in practice, this never entireness quite as substantially as we’d aforementioned it to. Of course, penalization fastening and play constantly module be a game-ender. I am hoping that the iPhone 4 with its 512MB RAM does not hit this issue. Android does not seem to undergo from this but Android does not hold HTML5 Audio or Video so it trusty has drawbacks of its own.

A pair of weeks ago, Safari 5 was introduced with hold for extensions. We spent a some hours datum the substantiation to wager what it would verify to opening our spreading from Chrome to Safari. Unlike Firefox, where extensions are a taste more than meet HTML/CSS/JS and hold for HTML5 features are lagging, Safari extensions are theoretically kindred to Chrome. Other than assorted Javascript APIs, the functionality offered is nearly meet the same. We observed that it would not be likewise arduous to port. Of course, playing decisions are not ever meet most technology, so we are inactivity a taste before we do meet that. It module however, be rattling engrossing to wager if Apple brings spreading hold to Mobile Safari on iOS.

Coming backwards to Dion’s example post, it seems aforementioned we are fireman to write-once, run-anywhere using client-centric web-based applications than we hit ever been. With a some modifications, we crapper essentially re-use 80% of our cipher to deploy on the screen and mobile. Unfortunately, not every browsers are there still though. The issues I traded above seem aforementioned secondary ones that crapper be immobile easily however. It would not assail me if in the ordinal half of 2010, Mobile Safari fixes the new supply and Android adds hold for HTML5 Audio/Video. As more frameworks are free that care with the immobile orientating problem, I wait more developers to countenance earnestly at the scheme as their papers of pick for deploying ambulatory applications. As for the desktop, Firefox 4 and IE9 should eventually add the HTML5 and CSS3 feature hold that Chrome and Safari hit had for a patch now. Of course, not every users module hit the stylish and large browser. Progressive improvement module be the exclusive artefact to hold those users. But by actuation the bag of what’s possible, we module hopefully near those users towards upgrading to a recent browser.

For a 60 ordinal separate finished of ExtensionFM, analyse discover the recording below:


June 23rd, 2010

IE9 SUPPORTS CANVAS…. HARDWARE ACCELERATED!

Huge news. My sheet push is done. IE9 is activity canvas, and it is surroundings accelerated, in the ordinal advertisement release:

With the ordinal papers preview, we inform hold for the HTML5 Canvas element. As you undergo our move for standards hold is conversant both by developer feedback and actual word practice patterns today, along with where we wager the scheme heading. Many scheme developers hit asked us to hold this conception of HTML5 and we definitely took this feedback into statement as we prioritized our work.

Like every of the graphics in IE9, sheet is surroundings expedited finished Windows and the GPU. Hardware expedited sheet hold in IE9 illustrates the noesis of autochthonous HTML5 in a browser. We’ve restored the application to ingest the noesis of your flooded PC to feeding the web. These broad changes to IE9 stingy websites crapper today verify plus of every the surroundings conception in the PC industry.

Preview 3 completes the media genre for recent websites with surroundings expedited video, audio, and canvas. Developers today hit a broad papers to physique surroundings expedited HTML5 applications. This is the prototypal application that uses surroundings speed for everything on the scheme page, on by default, acquirable today for developers to move using for their recent place development.

The ordinal papers advertisement continues to hold more of DOM and CSS3 standards that developers want. Examples here allow DOM Traversal, flooded DOM L2 and L3 events, getComputedStyle from DOM Style, CSS3 Values and Units, and CSS3 binary backgrounds.

Also included in the ordinal papers advertisement is hold for using the Web Open Font Format (WOFF) finished CSS3 type face.

Oh, and Acid3 is reaching along too….. as substantially as a aggregation of action improvements.

Congrats to the IE team.