Search icon CANCEL
Subscription
0
Cart icon
Your Cart (0 item)
Close icon
You have no products in your basket yet
Save more on your purchases! discount-offer-chevron-icon
Savings automatically calculated. No voucher code required.
Arrow left icon
All Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Newsletter Hub
Free Learning
Arrow right icon
timer SALE ENDS IN
0 Days
:
00 Hours
:
00 Minutes
:
00 Seconds

Tech News - Web Development

354 Articles
article-image-uber-introduces-fusion-js-web-development-framework
Sugandha Lahoti
02 Aug 2018
3 min read
Save for later

Uber introduces Fusion.js, a plugin-based web development framework for high performance apps

Sugandha Lahoti
02 Aug 2018
3 min read
Uber has revamped their monolithic framework design with a brand new Fusion.js web framework. This plugin-based open source web framework makes it easy to develop lightweight and high-performing apps. Fusion.js is a JavaScript framework that comes with modern features like hot module reloading, data-aware server-side rendering, and bundle splitting support. It also supports popular libraries like React and Redux. Why was Fusion.js required? Uber has been in the app-development business for quite some time now. With the quickly changing web technologies, they wanted to build a high quality framework with modern features which also kept up with the dynamic nature of their web platform. Specifically, they wanted their new framework to address the following pain points: Complex configuration and required boilerplate of multiple tools needed for server-side rendering, code splitting, and hot module reloading Lack of good abstractions for implementing and sharing features that involve different aspects of server-rendered React applications Tight coupling of code located in different places Testing difficulties arising from side effects and singletons Lack of flexibility of a monolithic framework Fusion.js addresses all of these problems. What are the benefits of using Fusion.js? On top of the benefits of a pre-configured, optimized boilerplate, Fusion.js also provides a flexible plugin-based architecture which makes it appropriate for building single-page applications and web apps that depend on complex service layers to meet quality requirements. Fusion.js applications allow apps to have a single entry point file and it’s possible to reuse code on both the server and browser. The single entry point architecture allows plugin developers to co-locate snippets of code based on the library the code pertains to. Plugins use dependency injection so they can expose well-defined APIs as services to other plugins, and a plugin’s dependencies can easily be mocked during tests. For middleware management, Uber uses Koa, which provides a unit-test friendly context-based API. It has a lightweight abstraction for request lifetime management based on the concept of downstreams and upstreams. Fusion.js provides testing tools for developers to test plugins in addition to supporting modern testing tools such as Jest, Enzyme, and Puppeter. The fusion-test-utils package allows mocking the server itself, making it possible to quickly run integration tests between plugins and mocks. For now, over 60 repositories of Uber are using Fusion.js since its internal release. Next in the roadmap are the addition of more performance optimizations, test-oriented tooling, and better flow support. You can checkout the documentation and Github for further information. Masonite 2.0 released, a Python web development framework Is web development dying? Meet Sapper, a military grade PWA framework inspired by Next.js
Read more
  • 0
  • 0
  • 4638

article-image-typescript-3-0-is-finally-released-with-improved-errors-editor-productivity-and-more
Kunal Chaudhari
31 Jul 2018
3 min read
Save for later

TypeScript 3.0 is finally released with ‘improved errors’, editor productivity and more

Kunal Chaudhari
31 Jul 2018
3 min read
It’s finally here! Microsoft just released the latest version of their favorite web development language almost 2 years after TypeScript 2.0 was announced. TypeScript 3.0 comes with plenty of new features and a few breaking changes. The release candidate for 3.0 which was released a few weeks before introduced some new features such as project reference functionality, extracting and spreading parameter lists using tuples, and support for the JSX defaultProps. This final release brought in some new features which makes this new version much more exciting, especially when we consider the changes brought in to improve the developer experience. Improved errors and UX When you see ‘improved errors’ in a feature set, you might think, “Okay, so even now we get errors, but in a better way”. But that is not exactly what the TypeScript team meant. Improving the error messages had been one of the biggest agenda for this release and the TypeScript team has not let us down by introducing related error spans and improved messages and collaboration. Related error spans and elaborated error messages An error can occur due to multiple reasons. One of those reasons and a pretty important one is error coming from different parts of the code. Related error spans are a new way to surface that information to users. In TypeScript 3.0, error messages can provide messages on other locations so that users can reason about cause-and-effect of an error. Since TypeScript 2.9, the team at Microsoft has been investing more resources on how to provide better and accurate error messages, which would lead to faster resolution time. By taking a core set of cases that give a smarter, cleaner, and more accurate error experience. Editor Productivity Writing code with TypeScript has always been a pleasant experience since the language leverages its syntactic and semantic knowledge, which allows one to write code more easily. Editors like Visual Studio, Visual Studio Code, and others with a TypeScript plugin to provide things users love like code completion, Go to Definition, and even quick fixes and refactorings. Building on this same trend, TypeScript 3.0 brings in new features like Named import refactorings, productivity features around JSX like providing completions for JSX closing tags, and Quick fixes for unreachable code and unused labels. Over the last few years, TypeScript has been slowly creeping into more and more web development projects with a clear advantage over JavaScript. Big time frameworks like Angular, React, and now Vue.js have started providing support for this next generation programming language. With this new release, TypeScript looks all set for total domination on the web frontier. For more information on the final TypeScript 3.0 release, check out the official Microsoft Blog. Read Next: TypeScript 3.0 release candidate is here How to work with classes in Typescript Microsoft launches Quantum Katas, a programming project to learn Q#, its Quantum programming language
Read more
  • 0
  • 0
  • 3547

article-image-blazor-0-5-0-is-now-available
Natasha Mathur
28 Jul 2018
3 min read
Save for later

Blazor 0.5.0 is now available!

Natasha Mathur
28 Jul 2018
3 min read
Blazor 0.5.0 is here. Blazor is an experimental .NET client-side web framework that uses c# and HTML. It runs on a browser using WebAssembly mechanism. Here component logic and DOM interactions occur in the same process. The latest release includes features such as server-side Blazor, a new startup model, and early support for in-browser debugging among other updates. Let’s discuss the highlights of Blazor 0.5.0 release. Server-side Blazor Blazor 0.5.0 release makes it possible to adopt the out-of-process model for Blazor by stretching it over a network connection so that you can run Blazor on the server with ease. With Blazor 0.5.0 it is possible to run your Blazor components server-side on .NET Core. UI updates, event handling, and JavaScript interop calls get handled over a SignalR connection. You can also use JavaScript interop libraries while using server-side Blazor. New Startup Model Blazor 0.5.0 projects now make use of a new startup model, similar to the startup model in ASP.NET Core. To configure the services for your Blazor app, each Blazor project consists of a Startup class with a ConfigureServices method. There’s also a Configure method for configuring the root components of the application. Calling .NET from JavaScript There’s a new feature added in Blazor 0.5.0 which lets you call .NET instance methods from JavaScript. You can do it by passing the .NET instance to JavaScript and wrapping it in a DotNetObjectRef instance. The .NET instance then gets passed by reference to JavaScript. This allows you to invoke .NET instance methods on the instance by using the invokeMethod or invokeMethodAsync functions. Adding Blazor to HTML file In earlier releases, the project build had modified index.html in order to replace the blazor-boot script tag with a real script tag.  This made it difficult to use Blazor in arbitrary HTML files. This mechanism has now been replaced in Blazor 0.5.0. You can add a script tag for client-side projects that references the _framework/blazor.webassembly.js script (which is generated as part of the build). You can add the script reference _framework/blazor.server.js. for server-side projects. Support for in-browser debugging Blazor 0.5.0 provides very basic debugging support in Chrome for client-side Blazor apps that run on WebAssembly. Despite the debugging support being limited and unpolished, it does show the basic debugging infrastructure. For more info on Blazor 0.5.0 updates, check out the official release notes. Masonite 2.0 released, a Python web development framework Node 10.0.0 released, packed with exciting new features  
Read more
  • 0
  • 1
  • 2146
Visually different images

article-image-youtubes-polymer-redesign-doesnt-like-firefox-and-edge-browsers
Savia Lobo
26 Jul 2018
3 min read
Save for later

YouTube's Polymer redesign doesn’t like Firefox and Edge browsers

Savia Lobo
26 Jul 2018
3 min read
YouTube’s recent Polymer redesign upgrade was loved by many, which included improved designs and an added dark theme. Much after all the wow factor became a part of the routine, a new controversy came up stating Youtube slowing down on non-Chrome browsers. This glitch was brought to light by Mozilla’s Technical Program Manager, Chris Peterson. He tweeted, YouTube’s current architecture that includes Polymer is only available in Google Chrome. Thus, making it slower on Mozilla Firefox and Microsoft Edge. Why is Youtube loading slower on non-Chrome browsers Per Peterson, YouTube’s polymer redesign depends on the deprecated Shadow DOM v0 API, which is also the current implementation in Google Chrome. On the other hand, Firefox and Edge browsers have Shadow DOM polyfills, which are slower than Chrome’s native implementation. Peterson also stated that “On my laptop, initial page load takes 5 seconds with the polyfill viz-a-viz one without it. Subsequent page navigation perf is comparable.” What about the Internet Explorer 11? YouTube’s condition in the IE11 is a lot slower than even Firefox and Edge. IE11 is still being served with the old version of YouTube, by default. https://twitter.com/cpeterso/status/1021626510296285185 Is there a fix? Google could have chosen to service the new implementation into Firefox and Edge. A failure to do this, has resulted in the popular video streaming website running substantially slower on these two. However, there is an  easy fix for this issue. Peterson recommends users on both Firefox browser and Edge to revert YouTube to a previous version using add-ons. Firefox users can boost YouTube page load speeds by installing the YouTube Classic extension, while Edge users can do the same by installing the Tampermonkey extension and the YouTube − Restore Classic script. There are speculations that this is Google’s secretive plan to migrate the non-chrome users to Chrome? But that begs the question of whether such a move is worth risking Youtube users leaving the platform due to poor user experience. Considering this, the performance issue is unlikely to be a conscious effort from Google. What is more likely is that Google may’ve considered redesigning it with Polymer could provide great exposure to the web development framework’s features and use-cases. YouTube has more than 1.8 billion registered viewers every month along with 400 hours of video are uploaded to its site every minute. Although it works excellently in Chrome, which is the most popular web browser and accounts for 59 percent of website usage, a significant amount of the population still use Firefox and Edge. As such Youtube users expect a seamless experience regardless of what browser they use, and that is a fair expectation of a product from a reliable brand. YouTube has a $25 million plan to counter fake news and misinformation Vevo’s YouTube account Hacked: Popular videos deleted Firefox has made a password manager for your iPhone
Read more
  • 0
  • 0
  • 5361

article-image-angular-6-1-0-is-here
Natasha Mathur
26 Jul 2018
2 min read
Save for later

Angular 6.1.0 is here!

Natasha Mathur
26 Jul 2018
2 min read
Version 6.1.0 of the popular JavaScript framework Angular is here. The latest version released yesterday mainly focuses on bug fixes, new features, and support for TypeScript. Let’s discuss these major updates that come with Angular 6.1.0. In the new version, a KeyValuePipe has been introduced. Support is now offered for  // ... and // TODO in mock compiler expectations. An urlUpdateStrategy feature have been added to the Angular router which allows you to update the browser URL at the beginning of navigation. Feature defaultKeyValueDiffers has been exported to private API. Angular 6.1.0 enables developers to configure the Angular Router so that it remembers the scrolling position of the user as he/she navigates through an application. You can reset the scroll position with the new navigation event and can restore the previous position on pressing the back button. In addition to these updates, View Encapsulation with ShadowDOM v1 is the new standard. ShadowDOM provides better cross-browser support. Due to this reason, the ViewEncapsulation.Native feature has been deprecated. View encapsulation is the process which associates Cascading Style Sheets (CSS) with the components in which they are defined. The KeyValueDiffer#diff feature now allows null values. The new release also offers support for TypeScript 2.9, and 2.8 in addition to 2.7. Apart from these, there are also other breaking changes and bug fixes. Other Changes Under animation, the end-state styles for orphaned DOM nodes have been rendered. The queried element styles in safari/edge have been properly cleaned up in the latest release. typescript is used to resolve the modules for metadata. Mark Meta and Title services are marked as tree shakable provider. versionedFiles in asset-group resources have been deprecated. SwPush.unsubscribe() has been fixed. To use @angular/bazel rules, you need to add calling ng_setup_workspace() in your WORKSPACE file. Angular 7 will be released sometime in September/October 2018. For a complete list of changes and bug fixes, check out the official release notes.    Angular 6 is here packed with exciting new features! Everything new in Angular 6: Angular Elements, CLI commands and more  
Read more
  • 0
  • 0
  • 3040

article-image-spotify-has-one-of-the-most-intricate-uses-of-javascript-in-the-world-says-former-engineer
Richard Gall
19 Jul 2018
3 min read
Save for later

Spotify has "one of the most intricate uses of JavaScript in the world," says former engineer

Richard Gall
19 Jul 2018
3 min read
A former Spotify engineer, Mattias Peter Johansson, has outlined how the music streaming platform uses JavaScript on it's desktop application. It's complicated and, according to Reddit, "kind of insane". Responding to a question on Quora, Johansson says it could be "among the top 25 most intricate uses of JavaScript in the world." What's particularly interesting is how this intricate JavaScript has influenced the Spotify architecture and the way the development teams are organized. How JavaScript is used on the Spotify desktop app JavaScript is used across the Spotify desktop client. Wherever UI is concerned, it uses JavaScript. C++ is used for functionality beneath the UI, with JavaScript sitting on top of it. The languages are connected by an interface aptly called a 'bridge.' Spotify's squads and spotlets The Spotify team is made up of small squads of anywhere from 3 to 12 people. Johansson explains that  "a feature is generally owned by a single squad, and during normal conditions the squad has all it needs to develop and maintain its feature." Each team has as many backend, front end, and mobile developers as necessary for the particular feature it owns. These features are known as 'spotlets.' Each of these spotlets are essentially web apps that come together to power the desktop app's UI. Johansson explains how they work, saying: They all run inside Chromium Embedded Framework, each app living within their own little iframe, which gives squads the ability to work with whatever frameworks they need, without the need to coordinate tooling and dependencies with other squads. The advantage of this is that it makes technical decision making much easier. As Johansson explains, "introducing a library is a discussion between a few people instead of decision that involves ~100 people and their various needs." Shared functionalities across the Spotify development team Although spotlets and squads create a somewhat fragmented picture of a development team, things are unified. "The latest versions of all Spotlets are zipped and bundled with the desktop client binary on every release, assets and all," says Johansson. Individual spotlets are also sometimes released where an emergency fix might be needed. Although tooling decisions are left up to individual squads, there are a couple of tools that are used across the team. This includes GLUE, a CSS framework that allows some coordination and alignment in terms of design. The team also rely heavily on npm, as you might expect. "We have our own internal npm repository where we publish internal modules, and we package the code together using a Browserify-like tool."
Read more
  • 0
  • 1
  • 11052
Unlock access to the largest independent learning library in Tech for FREE!
Get unlimited access to 7500+ expert-authored eBooks and video courses covering every tech area you can think of.
Renews at €14.99/month. Cancel anytime
article-image-tornado-5-1-releases-simple-quick-python-web-server
Pavan Ramchandani
19 Jul 2018
2 min read
Save for later

Tornado 5.1 releases: Simple & Quick Python web server

Pavan Ramchandani
19 Jul 2018
2 min read
Tornado recently announced the release of version 5.1 and dropped the plans for a major release of Tornado 6.0. Tornado is a Python-based web framework and consists of asynchronous networking libraries for complete web development in Python. It is known for its ability to scale a huge number of connections on the web and is considered ideal for the applications that require uninterrupted connectivity on the web. Features included in Tornado 5.1 Improvement in the command-line wrapper. It will no longer clash with the active processes on Windows. New module to support non-ASCII characters in username and password Consistent behavior of the client-server modules like simple_httpclient and curl_httpclient Improved compatibility with GNU Hurd Improved WebSocket modules to protect against DoS attacks Preparation for Tornado 6.0 Tornado 6.0 will drop the support for Python versions 2.7 and 3.4 while making Python 3.5.2 as the minimum supported version. To make sure systems running on older Python versions do not break, the deprecation warnings are emitted. In order to receive the deprecation warnings, you need to run -wd argument or set the environment variable for your Python ecosystem. Also, Tornado maintainers have informed that the applications running on Python 3, which do not receive the deprecation warning will be able to move to Tornado 6.0 without breaking. To avoid the risk of errors that are introduced due to the connection leak, the ExceptionStackContext module will be removed from Tornado 6.0. Tornado 6.0 will remove obsolete packages to make a lean standard framework. For example, the Stack context module will be removed as it will stand obsolete after the introduction to co-routines. To learn more about the deprecated features in Tornado 5.1 and in-depth feature notice, you can check out the release notes page of Tornado 5.1. Read more Masonite 2.0 released, a Python web development framework Python web development: Django vs Flask in 2018 Python founder resigns – Guido van Rossum goes ‘on a permanent vacation from being BDFL’
Read more
  • 0
  • 0
  • 2814

article-image-typescript-3-0-release-candidate-is-here
Natasha Mathur
18 Jul 2018
2 min read
Save for later

TypeScript 3.0 release candidate is here

Natasha Mathur
18 Jul 2018
2 min read
After the announcement of Typescript 2.9 RC  back in May, Microsoft’s TypeScript team came out with the release candidate of TypeScript 3.0 last week, unveiling features such as project references, extracting and spreading parameter lists with tuples, a new unknown type and API breaking changes among others. Let’s discuss the highlights of TypeScript 3.0 RC release. Project Reference functionality It allows TypeScript projects to depend on other TypeScript projects. Once these dependencies have been specified in the tsconfig.json file, you can easily split your code into smaller projects. It also provides TypeScript (and tools around it) a way to understand build ordering and output structure. Extracting and spreading parameter lists using tuples This functionality helps with reducing the overloading amount for functions of varied parameter lengths. Also, there is no need to write different overloads to support functions with different number of parameters. TypeScript 3.0 allows to better model scenarios like these by allowing rest parameters to be generic, and concluding those generics as tuple types. This, in turn, demands for richer tuple types to model scenarios such as optional parameters at the end of a parameter list, a final parameter which can be a rest parameter along with empty parameter lists. A new ‘unknown’ type Apart from these features, the new unknown type feature can accommodate APIs that uses variable of any value but requires type checking. Support for the JSX defaultProps There is also support for the JSX defaultProps used in React. These defaultProps allow the developers to define default values for props during creation of a component, such as a source for an Image component. TypeScript 3.0 RC also supports a new type alias called LibraryManagedAttributes in the JSX namespace. LibraryManagedAttributes is just a helper type that tells TypeScript what attributes a JSX tag accepts. Using this general type helps model React's specific behavior for things such as defaultProps and propTypes. Apart from these features, there are API breaking changes API Breaking Changes The internal method LanguageService#getSourceFile is removed, after being deprecated for two years. The function TypeChecker#getSymbolDisplayBuilder and its associated interfaces are removed. The deprecated functions escapeIdentifier and unescapeIdentifier are removed. TypeScript 3.0 release is scheduled for sometime later this month. For more information on the latest TypeScript 3.0 RC release, check out the official Microsoft Blog. How to work with classes in Typescript How to install and configure TypeScript  
Read more
  • 0
  • 0
  • 2112

article-image-react-storybook-ui-logging-user-interactions-with-actions-add-on-tutorial
Packt Editorial Staff
17 Jul 2018
7 min read
Save for later

React Storybook UI: Logging user interactions with Actions add-on [Tutorial]

Packt Editorial Staff
17 Jul 2018
7 min read
Sometimes, you end up creating a whole new page, or a whole new app, just to see what your component can do on its own. This can be a painful process and, which is why Storybook exists in React. With Storybook, you're automating a sandboxed environment to work with. It also handles all the build steps, so you can write a story for your components and see the result. In this article we are going to use the Storybook add-ons, which you can test on any aspect of your component before worrying about integrating it in your application. To be specific we are going to look at Actions, which is a by default add-on in Storybook. This React tutorial is an extract from the book React 16 Tools written by Adam Boduch. Adam Boduch has been involved with large-scale JavaScript development for nearly 10 years. He has practical experience with real-world software systems, and the scaling challenges they pose. Working with Actions in React Storybook The Actions add-on is enabled in your Storybook by default. The idea with Actions is that once you select a story, you can interact with the rendered page elements in the main pane. Actions provide you with a mechanism that logs user interactions in the Storybook UI. Additionally, Actions can serve as a general- purpose tool to help you monitor data as it flows through your components. Let's start with a simple button component: import React from 'react'; const MyButton = ({ onClick }) => ( <button onClick={onClick}>My Button</button> ); export default MyButton; The MyButton component renders a button element and assigns it an onClick event handler. The handler is actually defined by MyComponent; it's passed in as a prop. So let's create a story for this component and pass it an onClick handler function: import React from 'react'; import { storiesOf } from '@storybook/react'; import { action } from '@storybook/addon-actions'; import MyButton from '../MyButton'; storiesOf('MyButton', module).add('clicks', () => ( <MyButton onClick={action('my component clicked')} /> )); Do you see the action() function that's imported from @storybook/addon-actions? This is a higher-order function—a function that returns another function. When you call action('my component clicked'), you're getting a new function in return. The new function behaves kind of like console.log(), in that you can assign it a label and log arbitrary values. The difference is that functions created by the Storybook action() add-on function is that the output is rendered right in the actions pane of the Storybook UI: As usual, the button element is rendered in the main pane. The content that you're seeing in the actions pane is the result of clicking on the button three times. The output is the exact same with every click, so the output is all grouped under the my component clicked label that you assigned to the handler function. In the preceding example, the event handler functions that action() creates are useful for as a substitute for actual event handler functions that you would pass to your components. Other times, you actually need the event handling behavior to run. For example, you have a controlled form field that maintains its own state and you want to see what happens as the state changes. For cases like these, I find the simplest and most effective approach is to add event handler props, even if you're not using them for anything else. Let's take a look at an example of this: import React, { Component } from 'react'; class MyRangeInput extends Component { static defaultProps = { onChange() {}, onRender() {} }; state = { value: 25 }; onChange = ({ target: { value } }) => { this.setState({ value }); this.props.onChange(value); }; render() { const { value } = this.state; this.props.onRender(value); return ( <input type="range" min="1" max="100" value={value} onChange={this.onChange} /> ); } } export default MyRangeInput; Let's start by taking a look at the defaultProps of this component. By default, this component has two default handler functions for onChange and onRender—these do nothing so that if they're not set, they can still be called and nothing will happen. As you might have guessed, we can now pass action() handlers to MyRangeInput components. Let's try this out. Here's what your stories/index.js looks like now: import React from 'react'; import { storiesOf } from '@storybook/react'; import { action } from '@storybook/addon-actions'; import MyButton from '../MyButton'; import MyRangeInput from '../MyRangeInput'; storiesOf('MyButton', module).add('clicks', () => ( <MyButton onClick={action('my component clicked')} /> )); storiesOf('MyRangeInput', module).add('slides', () => ( <MyRangeInput onChange={action('range input changed')} onRender={action('range input rendered')} /> )); Now when you view this story in the Storybook UI, you should see lots of actions logged when you slide the range input slider: As the slider handle moves, you can see the two event handler functions that you've passed to the component are logging the value at different stages of the component rendering life cycle. The most recent action is logged at the top of the pane, unlike browser dev tools which logs the most recent value at the bottom. Let's revisit the MyRangeInput code for a moment. The first function that's called when the slider handle moves is the change handler: onChange = ({ target: { value } }) => { this.setState({ value }); this.props.onChange(value); }; This onChange() method is internal to MyRangeInput. It's needed because the input element that it renders uses the component state as the single source of truth. These are called controlled components in React terminology. First, it sets the state of the value using the target.value property from the event argument. Then, it calls this.props.onChange(), passing it the same value. This is how you can see the even value in the Storybook UI. Note that this isn't the right place to log the updated state of the component. When you call setState(), you have to make the assumption that you're done dealing with state in the function because it doesn't always update synchronously. Calling setState() only schedules the state update and the subsequent re-render of your component. Here's an example of how this can cause problems. Let's say that instead of logging the value from the event argument, you logged the value state after setting it: There's a bit of a problem here now. The onChange handler is logging the old state while the onRender handler is logging the updated state. This sort of logging output is super confusing if you're trying to trace an event value to rendered output—things don't line up! Never log state values after calling setState(). If the idea of calling noop functions makes you feel uncomfortable, then maybe this approach to displaying actions in Storybook isn't for you. On the other hand, you might find that having a utility to log essentially anything at any point in the life cycle of your component without the need to write a bunch of debugging code inside your component. For such cases, Actions are the way to go. To summarize, we learned about Storybook add-on Actions. We saw it help with logging and the links provide a mechanism for navigation beyond the default. Grab the book React 16 Tooling today. This book covers the most important tools, utilities, and libraries that every React developer needs to know — in detail. What is React.js and how does it work? Is React Native is really Native framework? React Native announces re-architecture of the framework for better performance  
Read more
  • 0
  • 0
  • 19201

article-image-someone-created-a-div-that-looks-different-on-every-browser
Richard Gall
10 Jul 2018
2 min read
Save for later

Someone created a div that looks different on every browser

Richard Gall
10 Jul 2018
2 min read
Here's a weird CSS anomaly that you might have missed - Martijn Cuppens, a software engineer, has created a div that looks different on every browser. Cuppens shared his creation on CodePen - you can see the code for yourself here. Here's what they look like on different browsers: https://twitter.com/Martijn_Cuppens/status/1015169981368225793 Note: If you're looking on an iPhone the differences won't appear as all browsers on the iPhone are essentially the same - app store restrictions mean they use the same rendering engine. According to Cuppens, the most 'correct' version is Edge. He explains that he came across the discovery by saying that he "wanted to know if there is a way to inset outlines... turned out 'inset' was a outline-style and a negative outline-offset can be used to inset outlines." https://twitter.com/Martijn_Cuppens/status/1015579527379070976 What Cuppens experiment shows is how widely browsers can vary in their interpretation of CSS. On Twitter, users responded with their own versions, like this: https://twitter.com/frivoal/status/1015533567839911936 Others, meanwhile, were happy to offer droll responses to the challenges and occasional woes of working with CSS... https://twitter.com/kingreza/status/1015360236230606848 Read next Google announces Chrome 67 packed with powerful APIs, password-free logins, PWA support, and more Firefox 60 arrives with exciting updates for web developers: Quantum CSS engine, new Web APIs and more
Read more
  • 0
  • 0
  • 2547
article-image-ember-project-releases-v3-2-0-of-ember-js-ember-data-and-ember-cli
Sugandha Lahoti
04 Jul 2018
2 min read
Save for later

Ember project releases v3.2.0 of Ember.js, Ember Data, and Ember CLI

Sugandha Lahoti
04 Jul 2018
2 min read
The Ember project released a new version of the three core sub-projects, Ember.js, Ember Data, and Ember CLI. Version 3.2.0 kicks off the 3.3 beta cycle for all sub-projects and consists of a variety of add-ons and deprecations. Ember.js Ember.js is the core framework for building web applications. The version 3.2.0 has a new feature and three deprecations, along with bug fixes, performance improvements, and minor deprecations. Ember.js has a new Block let template helper to create new bindings in templates. It is like with but without the conditional rendering of the block depending on values passed to the block. The deprecations are: Use of Ember.Logger is deprecated. You should replace calls to Ember.Logger with calls to console. In order to avoid collision with user-defined properties or methods, the Router#router private API has been renamed to Router#_router. Assigning computed properties directly is deprecated to support ES5 getter computed properties. Developers should replace these assignments with calls to defineProperty. Ember Data Ember Data is the official data persistence library for Ember.js applications. Ember-data v3.2.0 has three new features: Lazy Relationship Payloads are fixed in Ember Data 3.2.0; It is now compatible with polymorphic relationships. Ember Data Feature Flag are all removed in Ember Data 3.2. There is a new addon to support the ds-improved-ajax API. Ember CLI Ember CLI is the command line interface for managing and packaging Ember.js applications. There are two new features and one deprecation in the Ember CLI 3.2 release: The qunit-dom dependency will be added by default to all apps and addons to make DOM assertions more readable. The ember-cli-qunit dependency has been updated to ensure that the find() helper available in the Ember 3.0 style of testing. Ember CLI v3.2 deprecates ember-cli-babel 5.x. Babel 6 support has been out for a long time now and works quite well. Detailed list of updates with bug fixes and other performance improvements are available on the Ember project blog page. Getting started with Ember.js – Part 1 Getting started with Ember.js – Part 2
Read more
  • 0
  • 0
  • 1907

article-image-google-announces-beta-release-of-v8-engine-6-8
Kunal Chaudhari
29 Jun 2018
3 min read
Save for later

Google announces beta release of V8 Engine 6.8

Kunal Chaudhari
29 Jun 2018
3 min read
A beta version of V8 6.8 was announced by Google a few days ago. This release contains a lot of exciting new features such as better memory usage and improved performance. Let’s take a detailed look at what this release has in store for the web developers. V8 Engine Explained When a software is named after an 8-cylinder aircraft engine, only one thing comes to mind- Speed. V8 is an open source JavaScript Engine which was designed at the Google development center in Germany. It is used on both the browser as well as on the server side. V8 works like a usual compiler which translates the actual code into machine code for faster execution. Java developers or developers working with any modern programming language might be familiar with compilers. But what makes V8 stand out from any other compiler, is its ability to not produce any bytecode or intermediate code. The V8 team follows a six-week release cycle, where they come up with a beta of a new minor version followed by a stable release in the next few weeks. Let’s take a deep dive into the feature set of this new release. Memory The sharedFunctionInfo function or SFI, as most developers call it, holds the metadata for other functions. Usually, in function heavy-code JavaScript unnecessarily keeps these metadata functions alive, leading to a lot of memory leaks. The V8 team decided to break the dependency on SFI and reduced the actual size of the SFI itself. This approach reduces the memory consumption drastically and the V8 team is planning to further compress the size of these SFIs for optimum memory consumption. Performance Performance is imperative when it comes to engines, and the V8 team constantly strives to bring improvements to the engine. This helps developers to run high-performance application on V8. This time around they have introduced array destructuring for performance improvements. A new implementation of Object.assign improves performance, via implementation of a fast path for JavaScript. Performance for TypedArrays has been increased in instances when sorting is done using a comparison function. WebAssembly WebAssembly is nothing but a bytecode format which is executed in a web browser. This allows an application to be deployed to a device with a compliant web browser without going through any explicit installation steps. In V8 v6.8 provides trap-based bounds checking on Linux x64 platforms. This memory management optimization considerably improves WebAssembly’s execution speed. You can expect the next V8 6.9 release in a couple of months with more performance improvements. Until then you can visit their official website for a detailed breakdown of all the features in V8 6.8. WebAssembly comes to Qt. Now you can deploy your next Qt app in browser Implementing 5 Common Design Patterns in JavaScript (ES8)
Read more
  • 0
  • 0
  • 2128

article-image-firefox-61-builds-on-firefox-quantum-adds-tab-warming-webextensions-and-tls-1-3
Sugandha Lahoti
27 Jun 2018
3 min read
Save for later

Firefox 61 builds on Firefox Quantum, adds Tab Warming, WebExtensions, and TLS 1.3

Sugandha Lahoti
27 Jun 2018
3 min read
After releasing Firefox 60 last month, Mozilla has launched Firefox 61 for Windows, Mac, Linux, and Android devices. This release builds on Firefox Quantum, adding even more power to Quantum CSS by parallelizing the parsing step. This is especially beneficial to websites with large stylesheets and complex layouts. UI changes Firefox 61 now ships with an accessibility inspector that lets developers easily make pages for users with accessibility requirements. The new-look Console UI has been enabled by default for the Browser Console & Browser Toolbox. CSS variables now autocomplete with color swatches, allowing developers to see exactly what color value is stored in each variable The main toolbox's toolbar has also been redesigned. Highlights are better responsiveness for narrow and wide viewports with a new overflow dropdown and sortable tabs. The Network Monitor's main toolbar got redesigned to be more responsive on smaller viewports and visually aligned with the Console. It also includes a Throttling dropdown which throttles network speed to emulate various different network speed conditions. Performance improvements Tab management gets a boost in Firefox 61, with the new Tab warming feature which allows users to manage browser tabs more effectively. Tab Warming will watch the user's mouse cursor and start painting content inside a tab whenever the user hovers his/her mouse over one. There is also faster page rendering with Quantum CSS improvements and the new retained display list feature. Moreover, Firefox 61 now has retained display lists which means users can quickly access the pages they visit more frequently. WebExtensions now run in their own process on MacOS. They can now hide tabs and manage the behavior of the browser when a tab is opened or closed. Users are also provided a convenient access to more search engines. Users can add their favorite search engines to the address bar with the “Search with” tool. MacOS users can also share the URL of an active tab from the page actions menu in the address bar. Security Updates Firefox 61 on all four platforms have provided support for TLS 1.3, the latest version of Transport Layer Security (TLS). TLS 1.3 brings major improvements in security, privacy, and performance. It only includes support for algorithms with no known vulnerabilities and is also able to negotiate a secure session within a single round-trip. Read the release notes for a complete list of updates. Mozilla has also released the Firefox 61 changelog specifically catering to developers. Firefox 60 arrives with exciting updates for web developers: Quantum CSS engine, new Web APIs and more Mozilla is building a bridge between Rust and JavaScript Google announces Chrome 67 packed with powerful APIs, password-free logins, PWA support, and more
Read more
  • 0
  • 0
  • 2808
article-image-google-announces-guess-js-for-data-driven-user-experience
Amarabha Banerjee
26 Jun 2018
2 min read
Save for later

Google Announces Guess.js: Data Driven User Experience is here!

Amarabha Banerjee
26 Jun 2018
2 min read
This year Google I/O was filled with a lot of new announcements which have created a buzz in the tech world. One of them is the launch of Guess.js, a toolkit for building data driven user experiences. This project was initially conceived to improve the the user-perceived page load performance by using predictive analytics. The project then was merged with a similar unnamed project by Google which aimed at exploring data-driven approach for predictive pre-fetching of web pages. The combined product was named as Guess.js and the alpha version was released during Google I/O 2018. Primary features of Guess.js: It can be applied to different types of sites like single-page applications, framework-based static sites, static content sites, and enterprise sites. It works well with single page applications which are running Angular and React ecosystems with their default configurations. The fundamental principle behind Guess.js is to implement data analytics to improve user experience and aid in the design of better data driven UX and UI. Guess.js has a plugin for the popular build tool webpack. Together with Webpack, Guess.js is trying to implement a machine learning driven web bundling approach which has the potential to revolutionize the UX design industry. For framework based static sites, Guess.js plugin can be used in tandem with the static site generators. This plugin helps in evaluating the probability of the user clicking on certain links and based on that it loads the required amount of data. This intuitive approach helps the users get their desired content and also helps to reduce overhead dependency of the websites. Static content sites - will let people using WordPress, Ghost, and many other platforms to leverage the smart pre-fetching of Guess.js The overall approach and promise of Guess.js is revolutionary not just in the way it makes the apps and sites perform faster, but the overall way of automating the page loading procedure and the introduction of the data driven approach has opened up a completely new avenue for UX designers. Google updates biometric authentication for Android P, introduces BiometricPrompt API AutoAugment: Google’s research initiative to improve deep learning performance Google Flutter moves out of beta with release preview 1
Read more
  • 0
  • 0
  • 2428

article-image-billboard-js-1-5-0-releases-with-new-radar-type-axis-improvements-and-more
Sugandha Lahoti
26 Jun 2018
2 min read
Save for later

Billboard.js 1.5.0 releases with new radar type, axis improvements, and more

Sugandha Lahoti
26 Jun 2018
2 min read
Billboard.js, the reusable JavaScript chart library backed by D3.js, has released version 1.5.0. Billboard.js provides the easiest way to create a Billboard chart instantly. The new version comes with 7 major improvements and a hoard of additional bug-fixes. The new radar type chart support has been added to this version for better data visualization. You can use ‘radar’ type, by the set data.types option value. You can also customize these radar types to get a different variation of the visual data. Different radar types There is also a new way to customize and use axes tick’s text value using axis.[x|y|y2].tick.text.position. For this, you need to just set the position pixel for x and y coordinate value. Thereafter, every value is treated relatively as the original position. Billboard.js also features a new axis.[x|y].clipPath option which can be used along with tick’s text position option. Generally, the clip-path attribute makes sure that the axes elements are clipped to not surpass the actual axes area. However sometimes, the tick texts aren’t visible due to the clip-path attribute. This is where axis[x|y]. clipPath option comes to play. There is also improved lining for x-axis. Now the users can put the line on the exact position they want. For this, just put \n character where you want your chart to be lined when you bind the category names for data. Improved lining for x-axis Billboard.js also has a new tooltip.linked.name to allow linking charts to particular name groups. So for instance, four charts with two different name groups will be interacting with only the same linked name value. linked tooltip with grouped name Read the release notes for additional feature releases and bug fixes. Jae Sung Park, the creator of Billboard.js states that, the next release will feature Multiple Axes and Themed CSS file. Chart Model and Draggable and Droppable Directives Building Motion Charts with Tableau How to create a Treemap and Packed Bubble Chart in Tableau
Read more
  • 0
  • 0
  • 1631