Web Professional Trends for 2013 – “Web Development” Interview with Chris Wilson, Developer Advocate at Google
In this twelve minute interview Chris Wilson, Developer Advocate at Google, we learn about Chris’s perspective on the topic of Web Professional Trends for 2013 as it relates to Web Development trends, Web standards and the Open Web.
[display_podcast]
Specifically we learn:
•About the benefits and current trends of Encapsulation and Reuse
•The component model for the Web (also known as Web Components)
•Chris’s thoughts on a focus for developing for the user and how tools have made life much easier the for the Web developer
•Now is a great time to be a Web Professional
•Access to real world to the Web platform (audio and video inputs)
•Advice for aspiring Web developers and those that teach
•About Chris’s personal interest in audio and the Web audio API and his exciting efforts to support open standards for the WebRTC, (Web Real-Time Communication) an API definition that is being supported by Chris and others the World Wide Web Consortium (W3C) to enable browser to browser applications for voice calling, video chat and P2P file sharing without plugins.
More about Encapsulation
According to Wikipedia, in programming language, encapsulation is used to refer to one of two related but distinct notions, and sometimes to the combination thereof:
A language mechanism for restricting access to some of the object’s components.
A language construct that facilitates the bundling of data with the methods (or other functions) operating on that data.
Some programming language researchers and academics use the first meaning alone or in combination with the second as a distinguishing feature of object oriented programming, while other programming languages which provide lexical closures view encapsulation as a feature of the language orthogonal to object orientation.
The second definition is motivated by the fact that in many OOP languages hiding of components is not automatic or can be overridden; thus, information hiding is defined as a separate notion by those who prefer the second definition.
As information hiding mechanism
Under this definition, encapsulation means that the internal representation of an object is generally hidden from view outside of the object’s definition. Typically, only the object’s own methods can directly inspect or manipulate its fields. Some languages like Smalltalk and Ruby only allow access via object methods, but most others (e.g. C++, C# or Java) offer the programmer a degree of control over what is hidden, typically via keywords like public and private.[4] It should be noted that the ISO C++ standard refers to private and public as “access specifiers” and that they do not “hide any information”. Information hiding is accomplished by furnishing a compiled version of the source code that is interfaced via a header file.
Hiding the internals of the object protects its integrity by preventing users from setting the internal data of the component into an invalid or inconsistent state. A benefit of encapsulation is that it can reduce system complexity, and thus increases robustness, by allowing the developer to limit the interdependencies between software components.
More about Web Components
According to the W3c, the component model for the Web (also known as Web Components) consists of four pieces designed to be used together to let web application authors define widgets with a level of visual richness not possible with CSS alone, and ease of composition and reuse not possible with script libraries today.
These pieces are:
templates, which define chunks of markup that are inert but can be activated for use later;
decorators, which apply templates to let CSS affect rich visual and behavioral changes to documents;
custom elements, which let authors define their own elements, including new presentation and API, that can be used in HTML documents; and
shadow DOM which defines how presentation and behavior of decorators and custom elements fit together in the DOM tree.
Both decorators and custom elements are called components. For additional information visit http://dvcs.w3.org/hg/webcomponents/raw-file/tip/explainer/index.html
More about WebRTC
According to WebRTC.org, the WebRTC (Web Real-Time Communication) is an API definition being drafted by the World Wide Web Consortium (W3C) to enable browser to browser applications for voice calling, video chat and P2P file sharing without plugins.
History
According to Wikipedia, a project known as WebRTC, for browser based realtime communication, was open sourced by Google . This has been followed by on going work to standardise the relevant protocols in the IETF and browser APIs in the W3C
The Web Real-Time Communications Working Group expects this specification to evolve significantly based on:
The outcomes of ongoing exchanges in the companion RTCWEB group at IETF to define the set of protocols that, together with this document, will enable real-time communications in Web browsers.
Privacy issues that arise when exposing local capabilities and local streams.
Technical discussions within the group, on implementing data channels in particular.
Experience gained through early experimentations.
Feedback received from other groups and individuals.
Design
As of March 2012 the IETF WebRTC Codec and Media Processing Requirements draft[9] requires implementations to provide PCMA/PCMU (RFC 3551), Telephone Event as DTMF (RFC 4733), and Opus (RFC 6716), along with a number of video codec minimum capabilities. The Peerconnection, Data channels and a media capture browser APIs are detailed in the W3C.
Web Audio API
According to the w3c, Web Audio API specification describes a high-level JavaScript API for processing and synthesizing audio in web applications. The primary paradigm is of an audio routing graph, where a number of AudioNode objects are connected together to define the overall audio rendering. The actual processing will primarily take place in the underlying implementation (typically optimized Assembly / C / C++ code), but direct JavaScript processing and synthesis is also supported.
The introductory section covers the motivation behind this specification.
This API is designed to be used in conjunction with other APIs and elements on the web platform, notably: XMLHttpRequest (using the responseType and response attributes). For games and interactive applications, it is anticipated to be used with the canvas 2D and WebGL 3D graphics APIs.
For additional information visit https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html
More about Chris Wilson
Chris Wilson, is a Developer Advocate at Google, Chris is a Web browser guy since 1993. Chris grew up in the Chicago, Il area.
Chris spent 15 years at Microsoft Co-wrote NCSA Mosaic for Windows, wrote IE’s original CSS implementation, worked on lots of standards. Chris Wilson was the group program manager for Internet Explorer Platform and Security at Microsoft. He began working on web browsers in 1993 when he co-authored the first Windows versions of NCSA Mosaic, the first mass-market WWW browser. This was also when he inflicted overlapping tags on the world. After leaving NCSA in 1994 and spending a year working on the web browser for SPRY, Inc., he joined Microsoft’s Internet Explorer team as a developer in 1995.
In the course of five years on the IE team, Chris has participated in many standards working groups, in particular helping develop standards for Cascading Style Sheets, HTML, the Document Object Model and XSL through the W3C working groups. He also developed the first implementations of CSS in Internet Explorer. Beginning in 2001, he spent a few years working on the Avalon project, but rejoined the IE team a year and a half ago to lead the IE Platform and Security team.
Chris resides in Seattle. In his free time, he enjoys photography and hiking with his wife and daughter, and scuba diving in the chilly waters of Puget Sound as a PADI Divemaster. With any free money, he replaces the cameras he’s destroyed by taking them underwater for dive photography.
Lastly, according to Chris, he builds cool stuff, and even more importantly, help other people build cool stuff and help Chrome build the right platform for people to build cool stuff on.
A special shout out to Chris, a super nice and gracious guy for taking the time to talk with us!