Next Generation HTML5 and Javascript
Next Generation HTML5 and Javascript
Next Generation
HTML5 and JavaScript eMag Issue 25 - March 2015
FOLLOW US CONTACT US
GENERAL FEEDBACK [email protected]
ADVERTISING [email protected]
EDITORIAL [email protected]
facebook.com @InfoQ google.com linkedin.com
/InfoQ /+InfoQ company/infoq
NEW YORK
Jun 8-12, 2015
Conference for Professional Software Developers
qconnewyork.com
• Fraud Detection and Hack Prevention - • Optimizing Yourself - Maximizing your im-
Businesses are built around trust in systems pact as an engineer, as a leader, and as a per-
and data. Securing systems and fighting fraud son
throughout the data in them.
DAVID isCode
InfoQ’s HTML5/JavaScript Lead Editor. He is the founder of Heavy
and Principal Software Developer at the University of Illinois.
IFFLAND He tweets at @daveiffland.
David Haney is the core-team engineering manager at Stack Exchange, creator of question
and answer websites such as Stack Overflow and Server Fault. He spends his days supporting
developers by solving problems and improving processes. He was previously a lead developer
on Fanatics’ e-commerce platform, which hosts over 10,000 websites including the NFL Shop
(official online shop of the NFL) and NBAStore.com (the official NBA store). David is the creator of
Dache, an open-source distributed-caching framework. His spare time is spent drinking beer and
participating in community user groups and programming events, often simultaneously.
Frameworks jQuery
One of the biggest ways JavaScript has changed jQuery was created in 2006 by John Resig. It provides
since its inception is in its use. Gone are the days a rich set of tools that abstract and simplify cryptic
of awkward document.GetElementById calls and and rigid JavaScript commands and methods. The
cumbersome XmlHttpRequest objects. Instead, easiest way to demonstrate this is by example of an
helpful libraries have abstracted much of the root AJAX request made with vanilla JavaScript: (Code 1)
functionality, making JavaScript more accessible And here is the same AJAX request made with
jQuery (Code 2).
001 function loadXMLDoc() {
002 var xmlhttp;
003
004 if (window.XMLHttpRequest) {
005 // code for IE7+, Firefox, Chrome, Opera, Safari
006 xmlhttp = new XMLHttpRequest();
007 } else {
008 // code for IE6, IE5
009 xmlhttp = new ActiveXObject(“Microsoft.XMLHTTP”);
010 }
011
012 xmlhttp.onreadystatechange = function() {
013 if (xmlhttp.readyState == 4 ) {
014 if(xmlhttp.status == 200){
015 alert(“success”);
016 }
017 else if(xmlhttp.status == 400) {
018 alert(“error 400”)
019 }
020 else {
021 alert(“something broke”)
022 }
023 }
024 }
025
026 xmlhttp.open(“GET”, “test.html”, true);
027 xmlhttp.send();
028 }
001 $.ajax({
002 url: “test.html”,
003 statusCode: {
004 200: function() {
005 alert(“success”);
006 },
007 400: function() {
008 alert(“error 400”);
009 }
010 },
011 error: function() {
012 alert(“something broke”);
013 }
014 });
Code 2
and new JavaScript developers alike. A Sublime Text JavaScript debugger and integrated unit testing with
license costs US$70 at the time of writing. (Image 2) popular frameworks such as the Karma test runner,
JSDriver, and even Mocha for Node.js.
WebStorm One of the nicest features of WebStorm is the
WebStorm was created by the JetBrains team as a LiveEdit functionality. By installing a plugin into
smart IDE focused on HTML, CSS, and JavaScript. It both Chrome and WebStorm, a developer can make
costs US$49, plus another US$29 for upgrades each source-code changes that are instantly reflected in
year beyond the first (for individuals). WebStorm the browser. Developers can also configure LiveEdit
is widely considered the de facto standard for to highlight the changes that are made in the browser
seasoned JavaScript professionals, and for good window, making both debugging and coding highly
reason. The built-in code-completion and inspection productive.
tools are second to none. WebStorm also offers a rich
Overall, WebStorm is the IDE to pick if JavaScript Just change the CSS values. Alternatively, you can
is your full-time job. (Image 3) download and apply one of many themes created
for Atom. This allows Atom the flexibility to become
Brackets anything that you’d like it to be. Atom is an excellent
Brackets is an open-source, free IDE built with a focus tool for new JavaScript developers and enthusiast
on visual tools. Brackets offers a live editing feature hackers alike. (Image 5)
similar to WebStorm that lets you instantly see the
results of code changes in a browser window. It also Build tools and automation
supports side-by-side editing, which allows you to The modern JavaScript project tends to be fairly
work on the code and see the results simultaneously complex, with many moving parts. This is not
without the need for tabbing between applications due to inefficiencies in the language or tools; it
or pop-up windows. One of the most interesting is a direct result of the rich, vibrant, and complex
features of Brackets is called Extract. It analyzes web applications that are being built today. When
Photoshop (PSD) files in order to retrieve font, working on a large project, there will be many
color, and measurement information. This feature repetitive processes that you must do whenever
makes Brackets an excellent choice for JavaScript you want to check in your code or build out to
developers who also do design work. (Image 4) production. These could be things like bundling,
minification, compilation of LESS or SASS CSS files,
Atom and even running tests. Doing this work manually is
Atom is an open-source, free rich text editor created frustrating and inefficient. It’s better to automate the
by GitHub. It is very approachable and easy to use; work via a build tool that supports tasks.
you can install and run it without ever touching
a configuration file and it just works. The most Bundling and minification
interesting part of Atom is its ability to customize all Most of the JavaScript and CSS that you write will
of its aspects (GitHub calls it “hackable”). Atom is built be shared across a few web pages. As a result, you
upon a web core, enabling you to customize its look will likely place them in .js and .css files, and then
and feel with standard HTML, CSS, and JavaScript. reference those files on your web page. This will
Want a different background and text color in Atom? cause the visitor’s browser to make an HTTP request
to retrieve each of these files (or at least verify that a panoramic photo together at the seams in order to
they haven’t changed) in order to fully render your create a single, contiguous photo. By bundling our
web app. JavaScript and CSS files, we eliminate much of the
HTTP requests are expensive. On top of the HTTP request overhead.
payload size, you also pay the costs of network
latency, headers, and cookies. Bundling and Minification
minification tools are designed to reduce or eliminate Another way that a JavaScript developer can improve
these costs entirely. performance is by minifying their newly bundled
code. Minification reduces JavaScript and CSS to
Bundling their smallest possible forms while maintaining full
One of the simplest things that a developer can do functionality. For JavaScript, this means renaming
to improve the performance of their web code is to variables to nonsensical single-character tokens,
bundle it. Bundling is the process of stitching multiple and removing all white space and formatting. For
JavaScript or CSS files into a single JavaScript or CSS CSS, which relies on the names of variables, this
file. This is just like stitching the individual pieces of typically means only removing formatting and white
Code 3
space. Minification drastically improves network rules. The kinds of errors reported are things like
performance because it reduces the number of bytes using tabs instead of spaces, missing semicolons at
sent in each HTTP response. the ends of lines, or curly braces without an if, for, or
Look at our un-minified segment of AJAX while declaration. Most IDEs come with linting tools;
JavaScript code from earlier: (Code 3) others offer the ability to install a linting plugin.
Note that I broke the minified output into The most popular JavaScript linters are JSHint
two lines to display it in this article. The actual output and JSLint. JSHint is developed by the community
of minification is typically a single line. and is a fork of JSLint, the original linting framework
Usually, the bundle and minify steps are built by Doug Crockford. These two linters vary a
only done in production. This is so that you can little in the format standards they enforce. My advice
debug your code locally or in a development is to try both and use whichever one best fits your
environment as is, complete with formatting and style of coding.
line numbers. Debugging the minified code above
would be difficult: all of the code would be on line 1. Automating things: Grunt
Minification makes the code completely unreadable, Despite the name, Grunt is far from primitive. It is a
which would be useless and frustrating for you to robust command-line build tool that executes user-
attempt to debug. defined tasks. By specifying a simple configuration
file, you can configure Grunt to compile LESS or SASS,
Source map files build and minify all of the JavaScript and CSS files
Sometimes a bug in your code occurs that is only in specific folders, or even run a linting tool or test
reproducible in production. This poses a problem framework. You can also configure Grunt to execute
when you need to debug the issue but all of your as part of a Git hook that minifies and bundles
code is minified. Fortunately, JavaScript supports your code whenever you check something into the
source-code map files that map the minified code source-control repository.
to the original code. The map file for your code is Grunt supports named targets so that you
generated during minification via build tools such can specify different commands for different
as those described below. Your favorite JavaScript environments; you could define “dev” and “prod” as
debugger then uses the map file to provide you targets, for example. This is useful for scenarios such
with legible code to debug. You should deploy your as bundling and minifying your code in production
production code with map files whenever possible, but leaving it alone in the development environment
so that you can debug the code if anything goes so that it is easy to debug.
wrong. A useful feature of Grunt is “grunt watch”, which
monitors a directory or set of files for changes.
Linting This can be integrated directly with IDEs such as
A linting tool analyzes your code for common WebStorm and Sublime Text. With grunt watch,
mistakes and deviations from defined formatting you can trigger events based on file changes. A
Virtual Panel:
Real-World JavaScript MVC Frameworks
by Dio Synodinos
THE PANELISTS
John Munsch is a professional software developer with over 27 years of experience. These
days, he’s leading a team building modern web-app front ends with AngularJS after a
couple of years spent doing the same kind of work with Backbone.js, Underscore, and
Handlebars.
Julio Cesar Ody is a software developer, designer, presenter, and wannabe writer who lives
in Sydney. He works a lot with mobile web development,and has a built a handful of tools
which he’s very proud of.
Thomas Davis is the founder of Backbone Tutorials, co-founder of CDNJS, and a developer
for Taskforce. He’s also a daily contributor to many other open-source projects, which can be
found at github.com/thomasdavis.
Back in 2013, InfoQ had asked the community to rank JavaScript MVC frameworks according to the features
they had and how mature they were. You can see the result in the following figure.
InfoQ has asked a handful of expert practitioners about how they use these frameworks and the best
practices they follow when developing JavaScript applications.
by David Iffland
Matthew Carver is a front-end developer and web designer with real-world experience in
responsive design for clients like American Airlines, the Dallas Morning News, and Chobani
Yogurt.
The book is divided into three sections. The first wraps up with practical advice on testing a design
section provides a brief introduction to responsive and optimizing it for performance.
design, why it exists, and some of the features of InfoQ spoke with Matthew about his book and
modern web browsers that enable the responsive the challenges facing the modern web developer.
Web to exist. It also makes the case for designing
mobile-first: designing sites for a mobile-device
breakpoint before moving on to a desktop design.
The second section goes into the how of Modern developers face incredible challenges
designing for a responsive web. Matthew offers with myriad browsers and devices. What advice
information on how to present ideas to clients before can you give to developers struggling to keep up?
writing any code. Using navigation as a talking point,
he introduces design patterns and the thoughts
behind building responsively. The book goes on First of all, I would say keep at it. I think the state of
to cover some of the fundamentals of responsive “struggling to keep up” is common among passionate
design and techniques for presenting information, developers. Our industry moves way too fast for
such as web typography. anyone to truly live on the bleeding edge without
In the final section, Matthew introduces more having a very focused, niche practice. If you feel like
advanced techniques as effective solutions to you’re struggling to keep up, then you’re likely doing
problems that various browsers present. The book your job pretty well.
"STRUGGLING TO KEEP UP" IS sure where you’ll end up. Having a framework like
Foundation in place offers a prefabricated solution
that frees you up from solving an immediate problem
COMMON AMONG PASSIONATE like “What do buttons look like on the site” and lets
you move into more complex problems such as “Is
DEVELOPERS. OUR INDUSTRY there a better way to implement this button?” I still
end up customizing 70-80% of the framework, but
using Foundation or Bootstrap as a starting point
MOVES WAY TOO FAST FOR saves a ton of time.
I was pretty soft on them previously. In The Integrated browser tools (like F12, etc.) continue
Responsive Web, I discuss Foundation in detail and to advance in functionality and complexity. What
offer it as a great prototyping tool, but recently improvement excites you the most about these
I’ve been experimenting with it in production tools? What parts are most useful to responsive
environments. The most common argument against devs?
these frameworks is that they can be bloated or
restrictive to the design. I feel like they represent a I think the movement to build tools is pretty
real need in the process. though. incredible, still. I know it’s a little old hat, but Gulp
Site builds are getting more and more complex and Grunt have made the development process so
as we stretch our legs and start using the Web to much more efficient, by leaps and bounds. Compass’s
TOWARDS A RESOLUTION
Independent Web with SVG
Angelos Chaidas is currently the senior front-end developer at Adzuna, the international job
search engine. He started his career in 2000 as a designer and full-stack PHP developer but
has focused on front-end and JavaScript development for the last eight years. He loves mobile
UX and UI design, is passionate about web optimisation and has spoken at local JavaScript
events. You’ll find his random Twitter thoughts at @chaidas.
There are advantages to using Scalable Vector Graphics (SVG) as the preferred
format for the graphic assets of any web or mobile web project.
The aim here is not to deter designers and developers from the proven
method of using raster formats (PNG/JPEG) but rather to showcase how
using SVG can enhance the workflow of the two main lifecycles of any
web project: the design and the development stages.
Design turning flat - both approaches easily implemented
Ideal for resolution-independent user-interface icons with HTML elements styled with CSS - the focus of
At the time of this writing (October 2014), UI design is moving towards typography, layout, and
flat design is an unavoidable meme. Microsoft is icons.
applying its modern design principles to all software The main advantage of SVG, rightfully
as well as mobile-device user interfaces. With the advertised all over the Web, is its scalable nature.
advent of iOS 7, Apple masterfully substituted their When preparing an icon, a designer can stop worrying
clever skeuomorphic principles in favour of clear about how it will look in different dimensions or on
guidelines for flat design. Not to be left behind, mobile devices with different pixel densities and
Google is pushing for its “material design” visual focus solely on making the asset look great.
language to be used everywhere, from Android apps With SVG, there is no need to export two different
to websites. (Image 1) raster assets for high-resolution and lesser-resolution
With complex, pseudo-3-D UI backgrounds displays. As a matter of fact, there’s no need to worry
evolving into primitive colours and sculpted buttons at all about the pixel density of any device, especially
Image 2 / The SVG asset can be scaled at whim by the developer with no loss of quality. There’s no need to export @2x (or @3x)
versions of an asset, resulting in one less step in the designer’s workflow.
given the (sometimes absurd) non-standardised up drawing from scratch the smaller image assets
nature of it, but focus rather on the artwork itself. (interface icons, favicons, etc.) to achieve clarity.
Once an icon is ready, the designer exports a single With SVG, the above scenario is partially
SVG file - directly from Illustrator - that can be resized mitigated by the fact that browsers scale (and
at whim by the developer with no loss of quality. consequently rasterize) SVG assets very well. This is
(Image 2) especially true for higher display densities such as
the latest generation of mobile devices. (Image 3)
Browser scaling is getting better and For optimal results in these dimensions, a
better, even on small dimensions designer can easily package all SVG assets into an
There’s a common design challenge for the slightly- icon font (see below for more details) and thus
more-obsessive-compulsive-than-normal designer: leverage the sub-pixel hinting capabilities of the
in Photoshop, an icon might look great in the finger- various operating systems, resulting in icons sized at
friendly dimensions of 44x44 pixels, but resize it 12 or 14 or 16 pixels that look crystal clear and razor
to 24x24 or 16x16 and the bicubic interpolation sharp, even on old IE browsers.
introduces anti-aliasing artefacts which might result SVG elements can be crafted to reduce
in a blurry image. Even with clever algorithms such complexity and file size
as the sharp bicubic interpolation available in the Optimizing a JPEG image is a one-way process
latest versions of Photoshop, many designers end of reducing quality while trying not to lose too much
information. For PNG and GIF assets, the designer and the asset dimensions specified in the CSS file, a
has slightly more control due to the ability to specify developer has full creative control when it comes to
a restricted palette and thus reduce the information resizing the asset without the need to push back to
encoded in the file. the designer for variations of the same file.
With SVG, the meticulous designer can opt to There is something exhilarating in the fact
use primitive shapes, reduce the number of vertices that a single file (e.g. company-logo.svg) can be
in the shape elements, and have text embedded used in various places on a user interface, with the
inside the SVG instead of converted to outlines, all dimensions of each instance controlled by CSS or
of which can result in a less complex and smaller SVG width/height attributes, and having the resulting
file. (Image 4) assets look crystal clear irrespective of how much
For even more optimization, a designer each is scaled (or rotated).
can remove extraneous SVG properties such as
comments, IDs, or redundant grouping tags (<g>) by Animation
directly editing the SVG code. An SVG animated with CSS3 retains sharpness and
clarity throughout the animation duration. A couple
Better open-source tools of examples are shown below but please note that
Instead of Photoshop (and perhaps Fireworks or the low frame rate of the animated GIF does not do
Sketch), the open-source world offers the Gimp editor. justice to the GPU-accelerated smoothness of the
Gimp is a valuable tool with a vibrant community, yet finished effect:
it is inferior to any of the aforementioned pieces of But that is only the beginning. The structured
software in several areas. Substituting Photoshop XML syntax of SVG enables a developer to
with Gimp is not an easy task, and it usually results in programmatically select and animate each
a convoluted workflow. individual element of an SVG file to create scripted
For vector artwork however, Inkscape is a animations, banners, ads, etc. CSS-Tricks has
professional-grade open-source alternative to Adobe an excellent step-by-step tutorial for creating an
Illustrator that enables designers to create and edit animated banner in SVG format, and showcases
vectors with a plethora of tools and procedures, how, when placed inline, individual elements of an
similar to what they are used to with Adobe’s SVG image can be manipulated with CSS to follow a
offering. Many of the everyday actions of working certain script, resulting in an animated banner similar
with vectors can be done in Inkscape as well, such to those on the Web when Flash was the industry
as Boolean operations to combine shapes, path standard for animated advertisements.
simplification, dynamic offsetting of paths, editing
subpaths and much more. Interactivity
The potential of SVG as a replacement to Flash
Developers does not stop with animation. SVG content can
Resolution independence and reusability be interactive, with events such as click, mousedown,
For screens with higher pixel densities such as and mouseup (plus a few interesting ones such as
Retina displays and mobile devices, the need for @2x SVGZoom and SVGResize) available to the developer
high-res assets goes away. With proper meta tags
Image 5 / For a live demonstration, visit the Adzuna homepage and focus on the text fields, or click the “More”
links in the bottom lists.
to programmatically listen for and respond to, using With HTML5, the <svg> element can be placed
JavaScript. directly into the source HTML of the page. The
This opens up possibilities such as interactive advantage here is that the <svg> element, as well as
infographics and enterprise-strength charting its children elements, can be controlled with CSS.
solutions. Apart from size and position, designers can
Going further, the developer can use helper also manipulate fill and stroke colours, and can even
libraries that facilitate drawing, manipulation, create an animation. Furthermore, certain SVG-only
and interactivity, with some of the top candidates attributes (such as stroke-dasharray and stroke-
being Raphael, D3.js, and Snap.svg. With libraries dashoffset) can be manipulated from within the CSS
like these, complex animated and/or interactive file to result in interesting possibilities for animation
presentations that previously could only work such as this line animation.
through Flash are now possible, with several
examples available for inspiration, from the New York More ways to sprite
Times’s custom tree structure for political analysis With raster assets, a classic optimisation approach
of the Obama/Romney campaigns to Hamiltonian for reducing HTTP requests is to combine several
graphs, force-directed graphs, zooming interactive images into a single sprite (usually PNG) and use the
maps from the Argentina Census, and countless background CSS property to style several different
more. HTML elements with that one sprite.
With SVG assets, two extra possibilities become
Inline use available to developers: inline grouping and
The two standard approaches to using image assets packaging in an icon font.
on a web project are by means of an <img> tag, With inline placement, the ability to control the
and as background images for (usually block-level) display of sub-elements with CSS enables a developer
elements. Since SVG is XML, a third possibility is now to create an SVG “bucket” of assets, with each group
available to developers: inline use. being an element such as an icon. The developer can
assign IDs to individual groups, and by changing
the display property of each group chooses what to address. Combining this requirement with the fact
hide and what to show. This technique works really that pre-v3 Android Browsers lack support for SVG
well with interface elements that have the same means that a fallback solution must be implemented.
dimensions, such as the icons for a user interface. For developers, Modernizr is the tool of choice.
A developer also has the option to package Including the Modernizr library as an external
several SVG assets together in an icon font. Browser <script> in the <head> of any web project will add
support is excellent (even IE6) and the sub-pixel the appropriate classes to the <html> element of
hinting engines of modern browsers make even said document on page load. It is then a matter of
small sizes look crystal clear and sharp. Even better, adding a few extra definitions to the CSS to replace
multiple online icon-font generators make the background SVG images with raster fallbacks or, in
(somewhat annoying) packaging process a breeze. the case of inline SVGs or SVGs placed in <img> tags,
showing helper tags that contain the raster fallbacks
Comparing versions of the same asset and are by default hidden.
The SVG format, by virtue of being essentially a text The challenge here is to not have to push
file, presents the developer with the interesting back to the designer to export fallback assets since
possibility of not only comparing an asset visually, this invalidates their “export only one SVG asset”
but also doing a file diff to establish which parts of advantage mentioned above.
the SVG have changed. Fortunately, automation tools such as Grunt
In the case of large and complex SVG files, and specifically Filament Group’s Grunticon are here
such as an infographic, text comparison is great in to help. In short, Grunticon operates on a folder of
establishing what parts of the asset have changed in SVG assets and outputs a list of fallback PNG files
a newer version. along with a fallback CSS file that references these
PNG images. For command-line gurus, Inkscape can
Further reading be used as part of a shell script to also convert SVG
This author’s personal preference for development files to any format.
is Chris Coyier’s (of CSS-Tricks fame) Compendium
of SVG Information as well as monitoring any SVG- Summary
related articles that the brilliant Sara Soueidan comes The advantages of using vector graphics on the Web
up with. The compendium, a huge list of links to SVG are now more numerous than the disadvantages.
resources split by logical sections, is the definitive With excellent browser support and automated
starting point for anyone interested in SVG. fallback solutions to support older browsers, it is
For designers, Todd Parker’s massive “Leaving this author’s belief that future-proofing a UI with
Pixels Behind” presentations are the best possible resolution-independent vector graphics is the way
introduction, packed with animated GIFs that to go forward.
showcase the workflow from Illustrator to SVG.
it, chances are you’re interfering with React’s machines. This model encourages building modular
understanding of the DOM. UIs and, in practice, makes it easier to work with and
This feature also enables built-in server-side reason about your UI.
rendering using Node.js, which allows you to easily
serve SEO-friendly webpages. React marries markup to JavaScript.
Though it may feel strange to write HTML in your
React thinks declaratively, in Components. JavaScript, in React it’s the natural way to do things.
In React, everything must subclass the Component Using JSX – plain JavaScript mixed with HTML – is
class. Components have properties (determined optional but I highly recommend it. React argues,
by their parent) and state (which they can change and I agree, that since your markup is tightly coupled
themselves, perhaps based on user actions). to the JavaScript that controls it, they may as well live
Components should render and behave based solely in the same file.
on their state and properties; components are state
a LearningEnvironment as something that contains should the Run button communicate user actions to
both a CodeEditor and a Navigation component. the LearningEnvironment? We need to pass callbacks
We can update the LearningEnvironment’s around, but it’s hard to write truly modular, reusable
state, which will trigger a re-render and update child components that way.
components as necessary: Codecademy’s solution has been to generate
001 handleTestResult: communication adapters that manage information
function(currentIndex, passing, flow between specific components. Instead of
error) { passing callbacks, high-level components such as the
002 this.setState({ CodeEditor also receive an Adapter, which provides
003 error: error, a single interface for important communication
004 mayProceed: passing && tasks. For example, when the CodeEditor is present,
currentIndex === this.state. the LearningEnvironment will generate an Adapter
currentExercise.tests.length-1 which can emit and process events related to code
005 }); submission.
006 }
This approach isn’t without its pitfalls, and I
That’s it. React updates the UI for us gracefully and spoke about this at greater length at React.js Conf.
simply. The main takeaway that I’ve had is that, regardless
of how you handle information flow up the
Considerations for larger applications component tree, your team ought to agree on a
coherent strategy.
Information flow
As I noted earlier, React doesn’t necessarily adhere to a Integration
MVC model; in fact, you’re free to handle information React is easy to get started with, but it does require
flow however you’d like, but you’ll need a conscious some tooling to use effectively in your workflow. For
strategy for information. Do you want to pass down example, we use:
chains of props to components that don’t actually • a script that watches for local changes to .jsx
need them, just to reach a great-great-great-great- files, and recompiles them as necessary;
grandchild? If that leaf node accepts user input, how • a separate Node.js server that handles server-
does it alert its great-great-great-grandparent to the side rendering; and
change? • developer tools to auto-generate new
In larger applications, this can become component files as needed.
frustrating. Even in the simple example above, how
23
DevOps Toolchain
For Beginners
22
Web APIs:
From Start to Finish
24
This eMag contains a collection of articles and interviews
from late 2014 with some of the leading practictioners
and theorists in the Web API field. The material here
Mobile - Recently takes the reader on a journey from determining the
business case for APIs to a design methodology, meeting
New Technology and implementation challenges, and taking the long view
Already a Commodity? on maintaining public APIs on the Web over time
21
This eMag discusses some familiar and some not too familiar Continuous Delivery
development approaches and hopefully will give you a
Stories
helping hand while defining the technology stack for your
next mobile application.