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-introducing-walt-a-syntax-for-webassembly-text-format-written-100-in-javascript-and-needs-no-llvm-binary-toolkits
Bhagyashree R
11 Oct 2018
2 min read
Save for later

Introducing Walt: A syntax for WebAssembly text format written 100% in JavaScript and needs no LLVM/binary toolkits

Bhagyashree R
11 Oct 2018
2 min read
Walt, an alternative syntax for WebAssembly text format, was introduced today. It allows developers to use JavaScript syntax to write to as “close to the metal” as possible. Its ultimate goal is to make WebAssembly accessible to regular JavaScript programmers. Written 100% in JavaScript it requires no LLVM/binary toolkits. What Walt tries to solve? Writing zero-overhead, optimized WebAssembly code is difficult. You need to write very plain C code, compile that to .wast and then optimize that result. Then, finally, you're ready to compile that into the final WebAssembly binary. Walt attempts to take C/Rust out of the equation and write “as close to the metal” as possible without losing readability. How it solves the problem? What Walt does is, it provides a thin layer of syntax sugar on top of .wat text format. This improved syntax will give developers direct control over the WebAssembly output. This means that there should be minimal to none post optimization to be done to the wast code generated. For example, here is what a .walt module, which exports a recursive Fibonacci function, looks like: Source: GitHub When this code is passed through the Walt compiler, you get a buffer which can be used to create a WebAssembly module with a fibonacci export. Al this is done with familiar JS syntax and without any external binary toolkits. What are some of its use cases? Anyone who is interested in WebAssembly but is not familiar with system languages can get a quick start with Walt. It can be used in the following scenarios: Web/Node libraries Games Web VR/AR Projects depending on heavy real-time computation from complex UIs to 3D visualizations To know more about Walt and how you can get started with it, check out its GitHub repository. Introducing Wasmjit: A kernel mode WebAssembly runtime for Linux Unity Benchmark report approves WebAssembly load times and performance in popular web browsers Why is everyone going crazy over WebAssembly?
Read more
  • 0
  • 0
  • 3714

article-image-google-announces-updates-to-chrome-devtools-in-chrome-71
Natasha Mathur
11 Oct 2018
2 min read
Save for later

Google announces updates to Chrome DevTools in Chrome 71

Natasha Mathur
11 Oct 2018
2 min read
The Google Chrome team announced new updates and changes to the Chrome DevTools in Chrome 71, today.  The latest update explores features such as hovering over a Live Expression to highlight the DOM node, storing DOM nodes as global variables, Initiator and priority information in HAR imports and exports, and Picture-in-Picture breakpoints among others. Let’s discuss these features in the latest update to DevTools in Chrome 71. Hovering over Live Expression to highlight DOM node Now when an Expression evaluates to a DOM node, hovering over the Live Expression will result in highlighted DOM node in the viewport. Storing DOM nodes as global variables You can now store DOM nodes as a global variable. All you need to do is run an expression in the console that evaluates to a node. Then right-click the result and select Store as the global variable. Alternatively, you can also right-click the node in the DOM Tree and then select Store as a global variable. Initiator and priority information available in HAR imports and exports DevTools now comprises initiator and priority information in the HAR file on exporting a HAR file. Once done importing the HAR files back into DevTools, the Initiator and Priority columns gets populated. The _initiator field offers information behind the cause of the requested resource. The _priority field states the priority level that the browser assigned to the resource. Accessing Command Menu from the Main Menu Command Menu provides a fast way to access DevTools panels, tabs, and features. Now, you can open the Command Menu directly from the Main Menu. Click the main button on the main menu and select Run command. “Add to homescreen" now called "Trigger beforeinstallprompt" There’s an Add to homescreen button on the Manifest tab which is renamed to Trigger beforeinstallprompt as it is more semantically accurate. For more information, check out the official update notes. Chrome 69 privacy issues: automatic sign-ins and retained cookies; Chrome 70 to correct these Google announces Chrome 67 packed with powerful APIs, password-free logins, PWA support, and more Google Chrome’s 10th birthday brings in a new Chrome 69
Read more
  • 0
  • 0
  • 2498

article-image-meteor-1-8-addresses-technical-debt-of-1-7-with-delayed-legacy-builds-upgraded-to-babel-7-mongo-4
Bhagyashree R
11 Oct 2018
4 min read
Save for later

Meteor 1.8 addresses technical debt of 1.7 with delayed legacy builds, upgraded to Babel 7, Mongo 4

Bhagyashree R
11 Oct 2018
4 min read
After the release of Meteor 1.7 in June this year, the Meteor community released Meteor 1.8 yesterday. This version eliminates many of the performance problems in Meteor 1.7. They have addressed the technical debt of compiling an additional client bundle which had led to slow build times in Meteor 1.7. Here’s what all has been added and improved in this latest release. Improved build time In addition to the web.browser and web.cordova bundles, Meteor 1.7 introduced a new client bundle called web.browser.legacy. This addition of an extra bundle resulted in increased client build and rebuild times. Usually, developers spend most of their time testing the bundle in development and the legacy bundle provides a safe fallback in production. Meteor 1.8 takes advantage of this fact and cleverly postpones building the legacy bundle until just after the development server restarts. Development can continue as soon as the modern bundle has finished building. As the legacy build happens during a time when the build process would otherwise be completely idle, the impact of the legacy build on server performance is minimal. Still, the legacy bundle gets rebuilt regularly, so any legacy build errors will be surfaced in a timely fashion. A new mechanism for compiling unused files Meteor’s compiler plugins compile every file they receive, regardless of whether the file will ever actually be imported. To avoid this unnecessary compilation of unused files Meteor 1.8 has finally introduced a simple mechanism. Expensive compilation work will now be delayed by the compiler plugins that call inputFile.addJavaScript or inputFile.addStylesheet. This will be done by passing partial options ({ path, hash }) as the first argument, followed by a callback function as the second argument. This callback function will be called by the build system once it knows the module will be included in the bundle. Though the compiler plugin will process every possible file, any unused files will now be ignored by the build system, and their uncalled callbacks will be discarded after the bundle is built. Create Meteor apps with a simple command You can now easily create new Meteor apps with React instead of Blaze using the following command: meteor create --react new-react-app Overriding problematic version constraints from packages A new syntax is introduced for the .meteor/packages file for overriding problematic version constraints from packages you do not control. If a top-level package version constraint in .meteor/packages ends with a  ‘!’ character, any other (non-!) constraints on that package elsewhere in the application will be weakened. Which means, any version of the package that is not less than the constraint will be accepted, regardless of whether the major/minor versions actually match. For instance, using both CoffeeScript 2 and practicalmeteor:mocha used to be difficult because of the api.versionsFrom("1.3") statement. This statement constrained the coffeescript package to version 1.x. In Meteor 1.8, if you want to update coffeescript to 2.x, you can relax the practicalmeteor:mocha constraint by putting [email protected]_1! in the .meteor/packages file. Dependency upgrades Upgraded to Babel 7 You can get the benefits of non-beta Babel 7 by updating to Meteor 1.8. Install the latest version of @babel/runtime by running the following command: meteor npm install @babel/runtime@latest Upgraded to Mongo 4 Meteor 1.8 comes with MongoDB 4.0.2, a major upgrade from version 3.6.4 in Meteor 1.7. Your local development database will now use version 4.0, though the [email protected] driver will connect to production databases going all the way back to Mongo 2.6. The major advantage of MongoDB 4.0 is its support for multi-document transactions, which are now supported by Meteor’s oplog tailing system. Node.js 8.11.4 for now Although Node 8.12.0 has been released, Meteor 1.8 still supports Node 8.11.4, due to concerns about excessive garbage collection and CPU usage in production. If you want to start using Node.js 8.12.0, you can contribute to the Meteor 1.8.1 pre-release process. In order to update to Meteor 1.8.1, run the following command: meteor update --release 1.8.1-beta.n Read the full change list on Meteor’s GitHub repository and also read the release announcement on Medium. Meteor 1.7 released with modern and legacy browser support Building a real-time dashboard with Meteor and Vue.js The Ember project announces version 3.4 of Ember.js, Ember Data, and Ember CLI
Read more
  • 0
  • 0
  • 3031
Visually different images

article-image-netlify-raises-30-million-new-application-delivery-network-replace-servers
Savia Lobo
11 Oct 2018
3 min read
Save for later

Netlify raises $30 million for a new ‘Application Delivery Network’, aiming to replace servers and infrastructure management

Savia Lobo
11 Oct 2018
3 min read
On Tuesday, Netlify, a San Francisco based company announced that it has raised $30 million in a series B round of funding for a new platform named as ‘Application Delivery Network’ designed specifically to assist web developers in building newer applications. The funding was led by Kleiner Perkins’ Mamoon Hamid with Andreessen Horowitz and the founders of Slack, Yelp, GitHub and Figma participating. Founded in 2015, Netlify provides all-in-one workflow to build, deploy, and manage modern web projects. This new platform for the web, will enable all content and applications to be created directly on a global network, thus, bypassing the need to ever setup or manage servers. Vision behind the global ‘Application Delivery Network’ Netlify has assisted a lot of organizations to dump web servers with no requirement of infrastructure. It also replaced a need for CDN and thus a lot of servers. In order to implement the new architecture, Netlify provides developers with a git-centric workflow that supports APIs and microservices. Netlify’s Application Delivery Network removes the last dependency on origin infrastructure, allowing companies to host the entire application globally using APIs and microservices. Mathias Biilmann, Netlify Founder and CEO, said that more amount of devices brings additional complications. He further adds, “Customers have come to us with AWS environments that have dozens or even hundreds of them for a single application. Our goal is to remove the requirement for those servers completely. We’re not trying to make managing infrastructure easy. We want to make it totally unnecessary.” Investor’s take Talking about the investment in Netlify, Mamoon Hamid, Managing Member and General Partner at the venture capital firm Kleiner Perkins, said, “In a sense, they are completely rethinking how the modern web works. But the response to what they are doing has been overwhelming. Most of the top projects in this developer space have already migrated their sites: React, Vue, Gatsby, Docker, and Kubernetes are all Netlify powered. The early traction really shows they hit a nerve with the developer community.” To top it up as an icing on the cake, Chris Coyier, CSS expert and co-founder of Codepen says, “This is where the web is going. Netlify is just bringing it to us all a lot faster. With all the innovation in the space, this is an exciting time to be a developer.” What users say about Netlify In a discussion thread on Hacker News, users absolutely love how Netlify provides a helping hand to all the web developers in their day-to-day web application based tasks. Some of the features mentioned by users include: Netlify provides users with forms, lambdas and very easy testing by just pushing to another git branch It provides the ability to publish using a simple `git push` and does all the rest of the work including assets minification and bundling. Netlify connects to GitHub and rebuilds your site automatically when a change is made in the master branch. Users just have to connect their GitHub account with their UI. To know more about this news in detail, read Netlify’s official announcement. How to build a real-time data pipeline for web developers – Part 1 [Tutorial] How to build a real-time data pipeline for web developers – Part 2 [Tutorial] Google wants web developers to embrace AMP. Great news for users, more work for developers
Read more
  • 0
  • 0
  • 2155

article-image-node-js-v10-12-0-current-released
Sugandha Lahoti
11 Oct 2018
4 min read
Save for later

Node.js v10.12.0 (Current) released

Sugandha Lahoti
11 Oct 2018
4 min read
Node.js v10.12.0 was released, yesterday, with notable changes to assert, cli, crypto, fs, and more. However, the Node.js API is still somewhat changing, and as it matures, certain parts are more reliable than others. Hence throughout the v10.12.0 documentation are indications of a section's stability. Let’s look at the notable changes which are stable. Assert module Changes have been made to assert. The assert module provides a simple set of assertion tests that can be used to test invariants. It comprises of a strict mode and a legacy mode, although it is recommended to only use strict mode. In Node.js v10.12.0, the diff output is now improved by sorting object properties when inspecting the values that are compared with each other. Changes to cli The command line interface in Node.js v10.12.0 has two improvements: The options parser now normalizes _ to - in all multi-word command-line flags, e.g. --no_warnings has the same effect as --no-warnings. It also includes bash completion for the node binary. Users can generate a bash completion script with run node --completion-bash. The output can be saved to a file which can be sourced to enable completion. Crypto Module The crypto module provides cryptographic functionality that includes a set of wrappers for OpenSSL's hash, HMAC, cipher, decipher, sign, and verify functions. In Node.js v10.12.0, crypto adds support for PEM-level encryption. It also supports API asymmetric key pair generation. The new methods crypto.generateKeyPair and crypto.generateKeyPairSync can be used to generate public and private key pairs. The API supports RSA, DSA and EC and a variety of key encodings (both PEM and DER). Improvements to file system The fs module provides an API for interacting with the file system in a manner closely modeled around standard POSIX functions. Node.js v10.12.0 adds a recursive option to fs.mkdir and fs.mkdirSync. On setting this option to true, non-existing parent folders will be automatically created. Updates to Http/2 The http2 module provides an implementation of the HTTP/2 protocol. The new node.js version adds support for a 'ping' event to Http2Session that is emitted whenever a non-ack PING is received. Support is also added for the ORIGIN frame.  Also, nghttp2 is updated to v1.34.0. This adds RFC 8441 extended connect protocol support to allow the use of WebSockets over HTTP/2. Changes in module In the Node.js module system, each file is treated as a separate module. Module has also been updated in v10.12.0. It adds module.createRequireFromPath(filename). This new method can be used to create a custom require function that will resolve modules relative to the filename path. Improvements to process The process object is a global that provides information about, and control over, the current Node.js process. Process adds a 'multipleResolves' process event that is emitted whenever a Promise is attempted to be resolved multiple times. Updates to url Node.js v10.12.0 adds url.fileURLToPath(url) and url.pathToFileURL(path). These methods can be used to correctly convert between file: URLs and absolute paths. Changes in Utilities The util module is primarily designed to support the needs of Node.js' own internal APIs. The changes in Node.js v10.12.0 include: A new sorted option is added to util.inspect(). If set to true, all properties of an object and Set and Map entries will be sorted in the returned string. If set to a function, it is used as a compare function. The util.instpect.custom symbol is now defined in the global symbol registry as Symbol.for('nodejs.util.inspect.custom'). Support for BigInt numbers in util.format() are also added. Improvements in V8 API The V8 module exposes APIs that are specific to the version of V8 built into the Node.js binary. A number of V8 C++ APIs in v10.12.0 have been marked as deprecated since they have been removed in the upstream repository. Replacement APIs are added where necessary. Changes in Windows The Windows msi installer now provides an option to automatically install the tools required to build native modules. You can find the list of full changes on the Node.js Blog. Node.js and JS Foundation announce intent to merge; developers have mixed feelings. Node.js announces security updates for all their active release lines for August 2018. Deploying Node.js apps on Google App Engine is now easy.
Read more
  • 0
  • 0
  • 4678

article-image-mozilla-optimizes-calls-between-javascript-and-webassembly-in-firefox-making-it-almost-as-fast-as-js-to-js-calls
Bhagyashree R
09 Oct 2018
4 min read
Save for later

Mozilla optimizes calls between JavaScript and WebAssembly in Firefox, making it almost as fast as JS to JS calls

Bhagyashree R
09 Oct 2018
4 min read
Yesterday, Mozilla announced that in the latest version of Firefox Beta, calls between JS and WebAssembly are faster than non-inlined JS to JS function calls. They have made these optimizations keeping two aspects of engine’s work in mind: reducing bookkeeping and cutting out intermediaries. How they made WebAssembly function calls faster They have optimized the calls in both directions, that is, from JavaScript to WebAssembly and WebAssembly to JavaScript with their recent work in Firefox. All these optimizations have been done to make the engine’s work easier. The improvements fall into two groups: Reducing bookkeeping: This means getting rid of unnecessary work to organize stack frames Cutting out intermediaries: This means taking the most direct path between functions How they optimized WebAssembly to JavaScript calls The browser engine has to deal with two different kinds of languages while going through your code even if the code is all written in JavaScript: bytecode and machine code. The engine needs to be able to go back and forth between these two languages. When it does these jumps, it needs to have some information in place, like the place from where it needs to resume. The engine also must separate the frames that it needs. To organize its work, the engine gets a folder and puts this information in it. When the Firefox developers first added WebAssembly support, they had a different type of folder for it. So even though JIT-ed JavaScript code and WebAssembly code were both compiled and speaking machine language, it was treated as if they were speaking different languages. This was unnecessarily costly in two ways: An unnecessary folder is created which adds up setup and teardown costs It requires trampolining through C++ to create the folder and do other setup They fixed this by generalizing the code to use the same folder for both JIT-ed JavaScript and WebAssembly. This made calls from WebAssembly to JS almost as fast as JS to JS calls. How they optimized JavaScript to WebAssembly calls JavaScript and WebAssembly use different customs even if they are speaking the same language. For instance, to handle dynamic types, JavaScript uses something called boxing. As JavaScript doesn’t have explicit types, they need to be figured out at runtime. To keep track of the types of values, the engine attaches a tag to the value. This turns one simple operation into four operations. This is the reason why WebAssembly expects parameters to be unboxed and doesn’t box its return values. Since it is statically typed, it doesn’t need to add this overhead. So, before the engine gives the parameters to the WebAssembly function, the engine needs to unbox the values and put them in registers. It has to go through C++ again to prepare the values when going from JS to WebAssembly. Going to this intermediary step is a huge cost, especially for something that’s not that complicated. To solve this, they took the code that C++ was running and made it directly callable from JIT code. So, when the engine goes from JavaScript to WebAssembly, the entry stub unboxes the values and places them in the right place. Along with these calls, they have also optimized monomorphic and built-in calls. To understand the optimizations well, check out Lin Clark’s official announcement on Mozilla’s website. Mozilla updates Firefox Focus for mobile with new features, revamped design, and Geckoview for Android Mozilla releases Firefox 62.0 with better scrolling on Android, a dark theme on macOS, and more Mozilla, Internet Society, and web foundation wants G20 to address “techlash” fuelled by security and privacy concerns
Read more
  • 0
  • 0
  • 3061
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 $15.99/month. Cancel anytime
article-image-the-ember-project-announces-version-3-4-of-ember-js-ember-data-and-ember-cli
Bhagyashree R
08 Oct 2018
4 min read
Save for later

The Ember project announces version 3.4 of Ember.js, Ember Data, and Ember CLI

Bhagyashree R
08 Oct 2018
4 min read
Yesterday, the Ember project announced the release of version 3.4 of the three core sub-projects: Ember.js, Ember Data, and Ember CLI. Ember is an open source JavaScript frontend framework, which is based on Model-View-Viewmodel (MVVM) pattern. It enables developers to create scalable single-page web applications by incorporating common idioms and best practices into the framework. Ember.js 3.4 Ember.js 3.4 is an incremental, backward compatible release of Ember with bug fixes, performance improvements, and minor deprecations. Angle bracket invocation You can now use angle bracket invocation instead of the classic invocation syntax. For example: Instead of using the following syntax: Source: Ember You can use: Source: Ember This release does not deprecate the classic invocation syntax, but using angle bracket invocation will provide more syntax clarity. As component invocation is often encapsulating important pieces of UI, a dedicated syntax would help visually distinguish them from other handlebars constructs, such as control flow and dynamic values. Custom Component Manager This version comes with the new Custom Component Manager feature enabled by default. This allows addon authors to access a low-level API for creating component bases classes which addon users can re-use and extend components from. Deprecations Use closure actions instead of sendAction When using sendAction, the developer passes the name of an action. When sendAction is called, Ember.js would look up that action in the parent context and invoke if it exists. This poses a few problems, such as: The action is looked up only when it is about to be invoked. This makes it easier for a typo in the action’s name to go undetected. When you use sendAction you cannot receive the return value of the invoked action. Closure actions solve these problems and are also more intuitive to use. Ember 2 Legacy This is the last version that will work with the polyfill addon for features that were deprecated in 2.x. If you have been using ember-2-legacy, it's time to upgrade. Ember Data 3.4 Ember Data is the data-persistence library that provides many of the facilities of an object-relational mapping (ORM). Ember Data 3.4 is the first Ember Data LTS release. This release has received a ton of bug fixes to address many known issues that have been reported over the last several months. Some of them are listed here: TrackableRequests for when async leakage is detected. This feature enables app developers to better use async... await while simultaneously detecting asynchronous test leaks in their data layer. External partner testing is now enabled to run the tests of external apps and addons against commits in ember-data. Transpilation issues with @ember/ordered-set are fixed. Tests are added for createRecord+unloadRecord. ember-inflector is upgraded to v3.3.0. Added module-unification adapter and adapter-test blueprints. Ember CLI 3.4 Ember CLI is the command line interface to create, develop, and build Ember.js applications. Ember CLI 3.4 is an LTS release candidate. It will receive critical bug fixes for the upcoming 6 release cycles, as well as security patches for the next 10 release cycles. Added support for Node 10 Support has been added for Node 10 and support for Node 4 has been dropped from Ember CLI's support matrix. When upgrading to Ember CLI 3.4, make sure to use it together with Node 6 and above. Template linting Automatic template linting is added to your application via ember-template-lint according to the recommended list of rules. Ember CLI will generate a TemplateLint test file for each of your templates to your test suite automatically to be run via ember test. To run the linter you can also use the new command npm run lint:hbs or yarn run lint:hbs respectively. Read the full list of changes on Ember’s official website and also check out its GitHub repository. Ember project releases v3.2.0 of Ember.js, Ember Data, and Ember CLI Getting started with Ember.js – Part 1 Getting started with Ember.js – Part 2
Read more
  • 0
  • 0
  • 2765

article-image-smoke-amazons-new-lightweight-server-side-service-framework
Savia Lobo
05 Oct 2018
3 min read
Save for later

Smoke: Amazon’s new lightweight server-side service framework

Savia Lobo
05 Oct 2018
3 min read
Today, Amazon released Smoke Framework, a lightweight server-side service framework written in the Swift programming language. The Smoke Framework uses SwiftNIO for its networking layer by default. This framework can be used for REST-like or RPC-like services and in conjunction with code generators from service models such as Swagger/OpenAPI. The framework also has a built-in support for a JSON-encoded request and response payloads. Working of Swift-based Smoke Framework The Smoke Framework provides the ability to specify handlers for operations the service application needs to perform. When a request is received, the framework will decode the request into the operation's input. When the handler returns, its response (if any) will be encoded and sent in the response. Each invocation of a handler is also passed an application-specific context, allowing application-scope entities such as other service clients to be passed to operation handlers. Using the context allows operation handlers to remain pure functions (where its return value is determined by the function's logic and input values) and hence easily testable. Parts of the Smoke framework The Operation Delegate The Operation Delegate handles specifics such as encoding and decoding requests to the handler's input and output. The Smoke Framework provides the JSONPayloadHTTP1OperationDelegate implementation that expects a JSON encoded request body as the handler's input and returns the output as the JSON encoded response body. The Operation Function By default, the Smoke framework provides four function signatures that this function can conform to ((InputType, ContextType) throws -> ()): Synchronous method with no output. ((InputType, ContextType) throws -> OutputType): Synchronous method with output. ((InputType, ContextType, (Swift.Error?) -> ()) throws -> ()): Asynchronous method with no output. ((InputType, ContextType, (SmokeResult<OutputType>) -> ()) throws -> ()): Asynchronous method with output. Error handling By default, any errors thrown from an operation handler will fail the operation and the framework will return a 500 Internal Server Error to the caller (the framework also logs this event at Error level). This behavior prevents any unintentional leakage of internal error information. Testing The Smoke Framework has been designed to make testing of operation handlers straightforward. It is recommended that operation handlers are pure functions (where its return value is determined by the function's logic and input values). In this case, the function can be called in unit tests with appropriately constructed input and context instances. To know more about this in detail, visit Smoke framework’s official GitHub page. ABI stability may finally come in Swift 5.0 Swift 4.2 releases with language, library and package manager updates! What’s new in Vapor 3, the popular Swift based web framework
Read more
  • 0
  • 0
  • 3010

article-image-node-js-and-js-foundation-announce-intent-to-merge-developers-have-mixed-feelings
Bhagyashree R
05 Oct 2018
3 min read
Save for later

Node.js and JS Foundation announce intent to merge; developers have mixed feelings

Bhagyashree R
05 Oct 2018
3 min read
Yesterday, the Linux Foundation announced that the Node.js Foundation and JS Foundation have agreed to possibly create a joint organization. Currently, they have not made any formal decisions regarding the organizational structure. They clarified that joining forces will not change the technical independence or autonomy for Node.js or any of the 28 JS Foundation projects such as Appium, ESLint, or jQuery. A Q&A session will be held at Node+JS Interactive from 7:30 am to 8:30 am PT, October 10 at West Ballroom A to answer questions and get community input on the possible structure of a new Foundation. Why are Node.js and JS Foundations considering merging? The idea of this possible merger came from a need for a tighter integration between both foundations to provide greater support for Node.js and a broader range of JavaScript projects. JavaScript is continuously evolving and being used for creating applications ranging from web, desktops, and mobile. This calls for increased collaboration in the JavaScript ecosystem to sustain continued and healthy growth. What are the goals of this merger? Following are few of the goals of this merge aimed at benefiting the broad Node.js and JavaScript communities: To provide enhanced operational excellence Streamlined member engagement Increased collaboration across the JavaScript ecosystem and affiliated standards bodies This “umbrella” project structure will bring stronger collaboration across all JavaScript projects With a single, clear home available for any project in the JavaScript ecosystem, projects won’t have to choose between the JS and Node.js ecosystems. Todd Moore, Node.js Board Chairperson and IBM VP Opentech, believes this merger will provide improved support to contributors: “The possibility of a combined Foundation and the synergistic enhancements this can bring to end users is exciting. Our ecosystem can only grow stronger and the Foundations ability to support the contributors to the many great projects involved improve as a result.” How are developers feeling about this potential move? Not many developers are happy about this merger, which led to a discussion on Hacker News yesterday. One of the developers feels that the JS Foundation has been neglecting their responsibility towards many open source projects. They have also seen a reduction in funding and alienated many long-time contributors. According to him, this step could be “a last-ditch effort to retain some sort of relevancy.” On the other hand, one of the developers feels positive about this merge: “The JS Foundation is already hosting a lot of popular projects that run in back-end and build/CI environments -- webpack, ESLint, Esprima, Grunt, Intern, JerryScript, Mocha, QUnit, NodeRed, webhint, WebDriverIO, etc. Adding Node.JS itself to the mix would seem to make a lot of sense.” What we think of this move? This merger, if it happens, could unify the fragmented Javascript ecosystem bringing some much-needed relief to developers. It could also bring together sponsor members of the likes Google, IBM, Intel, and others to support the huge number of JavaScript open source projects. We must add that we find this move as a reaction to the growing popularity of Python, Rust, and WebAssembly, all invading and challenging JavaScript as the preferred web development ecosystem. If you have any questions regarding the merger, you can submit them through this Google Form provided by the two foundations. Read the full announcement at the official website of The Linux Foundation and also check out the announcement by Node.js on Medium. Node.js announces security updates for all their active release lines for August 2018 Why use JavaScript for machine learning? The top 5 reasons why Node.js could topple Java
Read more
  • 0
  • 0
  • 2989

article-image-blazor-0-6-release-and-what-it-means-for-webassembly
Amarabha Banerjee
05 Oct 2018
3 min read
Save for later

Blazor 0.6 release and what it means for WebAssembly

Amarabha Banerjee
05 Oct 2018
3 min read
WebAssembly is changing the way we use develop applications for the web. Graphics heavy applications, browser based games, and interactive data visualizations seem to have found a better way to our UI - the WebAssembly way. The latest Blazor 0.6 experimental release from Microsoft is an indication that Microsoft has identified WebAssembly as one of the upcoming trends and extended support to their bevy of developers. Blazor is an experimental web UI framework based on C#, Razor, and HTML that runs in the browser via WebAssembly. Blazor promises to greatly simplify the task of building, fast and beautiful single-page applications that run in any browser. The following image shows the architecture of Blazor. Source: MSDN Blazor has its own JavaScript format - Blazor.js. It uses mono, an open source implementation of Microsoft’s .NET Framework based on the ECMA standards for C# and the Common Language Runtime (CLR). It also uses Razor, a template engine that combines C# with HTML to create dynamic web content. Together, Blazor is promising to create dynamic and fast web apps without using the popular JavaScript frontend frameworks. This reduces the learning curve requirement for the existing C# developers. Microsoft has released the 0.6 experimental version of Blazor on October 2nd. This release includes new features for authoring templated components and enables using server-side Blazor with the Azure SignalR Service. Another important news from this release is that the server side Blazor model will be included as Razor components in the .Net core 3.0 release. The major highlights of this release are: Templated components Define components with one or more template parameters Specify template arguments using child elements Generic typed components with type inference Razor templates Refactored server-side Blazor startup code to support the Azure SignalR Service Now the important question is how is this release going to fuel the growth of WebAssembly based web development? The answer is that probably it will take some time for WebAssembly to become mainstream because this is just the alpha release which means that there will be plenty of changes before the final release comes. But why Blazor is the right step ahead can be explained by the fact that unlike former Microsoft platforms like Silverlight, it does not have its own rendering engine. Hence pixel rendering in the browser is not its responsibility. That’s what makes it lightweight. Blazor uses the browser’s DOM to display data. However, the C# code running in WebAssembly cannot access the DOM directly. It has to go through JavaScript. The process looks like this presently. Source: Learn Blazor The way this process happens, might change with the beta and subsequent releases of Blazor. Just so that the intermediate JavaScript layer can be avoided. But that’s what WebAssembly is at present. It is a bridge between your code and the browser - which evidently runs on JavaScript. Blazor can prove to be a very good supportive tool to fuel the growth of WebAssembly based apps. Why is everyone going crazy over WebAssembly? Introducing Wasmjit: A kernel mode WebAssembly runtime for Linux Unity Benchmark report approves WebAssembly load times and performance in popular web browsers
Read more
  • 0
  • 0
  • 4964
article-image-django-2-1-2-fixes-major-security-flaw-that-reveals-password-hash-to-view-only-admin-users
Bhagyashree R
04 Oct 2018
2 min read
Save for later

Django 2.1.2 fixes major security flaw that reveals password hash to “view only” admin users

Bhagyashree R
04 Oct 2018
2 min read
On Monday, Django 2.1.2 was released, which has addressed a security issue regarding password hash disclosure. Along with that, this version fixes several other bugs in 2.1.1 and also comes with the latest string translations from Transifex. Users password hash visible to “view only” admin users In Django 2.1.1, the admin users who had permissions to change the user model could see a part of the password hash in the change form. Also, admin users with “view only” permission to the user model were allowed to see the entire hash. This could prove to be a big problem if the password is weak or your site uses weaker password hashing algorithms such as MD5 or SHA1. This vulnerability has been named CVE-2018-16984 since 13th September, 2018. This issue has been solved in this new security release. Bug fixes A  bug is fixed where lookup using F() on a non-existing model field didn't raised FieldError. The migrations loader now ignores the files starting with a tilde or underscore. Migrations correctly detects changes made to Meta.default_related_name. Support for cx_Oracle 7 is added. Quoting of unique index names is now fixed. Sliced queries with multiple columns with the same name will not result in crash on Oracle 12.1 anymore. A crash is fixed when a user with the view only (but not change) permission made a POST request to an admin user change form. To read the release notes of Django, head over to its official website. Django 2.1 released with new model view permission and more Python web development: Django vs Flask in 2018
Read more
  • 0
  • 0
  • 3497

article-image-opera-touch-browser-lets-you-browse-with-one-hand-on-your-iphone-comes-with-e2e-encryption-and-built-in-ad-blockers-too
Bhagyashree R
03 Oct 2018
3 min read
Save for later

Opera Touch browser lets you browse with one hand on your iPhone, comes with e2e encryption and built-in ad blockers too!

Bhagyashree R
03 Oct 2018
3 min read
On Monday, Opera Touch was made available for iPhone users that aims to challenge Apple’s default browser, Safari. It particularly targets the newly launched Apple phones, iPhone XS and XS Max and the upcoming iPhone XR. Opera Touch is your on-the-go browser which helps you instantly search the web with one hand. It comes with Flow to make sharing links, images, videos or notes much easier. Instant searching Opera Touch opens up in search mode to help you instantly find things on the web. You can search using text input, voice, or a QR code. Also, the core elements of the interface are located at the bottom of the screen making them easy to reach. Seamless browsing experience with Flow You can use Opera Touch on iPhone together with your Opera computer browser for a seamless web browsing experience across devices. The plus point here is that you do not need to create an account to connect your iPhone with your computer browser. Simply, start the Opera computer browser and scan the QR code displayed there with Opera Touch and you are good to go. After connecting, you can send links, videos, and notes to yourself with a single click through Flow and they will be displayed across all your Flow-enabled devices. Your on-the-go browser It makes searching on-the-go easier as you can conveniently explore the internet using just one hand. The Fast Action Button present in the bottom middle of the screen provides the browser’s key functions, including access to your most recent tabs and search. You can hold and swipe the button open to switch to your most recent tabs, reload or close the page or send the current tab to your computer in Flow. Safe and secure browsing The data shared with Flow is fully end-to-end encrypted. Its opt-in ad blocker, blocks intrusive ads, making web pages load faster. Also, the browser comes with Opera’s cryptojacking protection that reduces the risk of your mobile getting overheated when you browse the web. Learns from your browsing patterns The browser will learn from your browsing pattern giving you a more personalized browsing experience. It will automatically add your favorite sites to the browser’s home screen. Read more about Opera Touch on Opera’s official website and to download the browser head over to the App Store. Vivaldi 2.0, a hyper-customizable browser, releases with Vivaldi Sync, Resizable Tab Tiling, and more! Firefox Reality 1.0, a browser for mixed reality, is now available on Viveport, Oculus, and Daydream Firefox Nightly browser: Debugging your app is now fun with Mozilla’s new ‘time travel’ feature
Read more
  • 0
  • 0
  • 2504

article-image-github-addresses-technical-debt-now-runs-on-rails-5-2-1
Bhagyashree R
01 Oct 2018
3 min read
Save for later

GitHub addresses technical debt, now runs on Rails 5.2.1

Bhagyashree R
01 Oct 2018
3 min read
Last week, GitHub announced that their main application is now running on Rails 5.2.1. Along with this upgrade, they have also improved the overall codebase and cleaned up technical debt. How GitHub upgraded to Rails 5.2.1? The upgrade started out as a hobby with no dedicated team assigned. As they made progress and gained traction it became a priority. They added the ability to dual boot the application in multiple versions of Rails, instead of using a long running branch to upgrade Rails. Two Gemfile.lock were created: Gemfile.lock for the current version Gemfile_next.lock for the next version This dual booting enabled the developers to regularly deploy changes for the next version to GitHub without any affect on how production works. This was done by conditionally loading the code: if GitHub.rails_3_2? ## 3.2 code (i.e. production a year and a half ago) elsif GitHub.rails_4_2? # 4.2 code else # all 5.0+ future code, ensuring we never accidentally # fall back into an old version going forward end To roll out the Rails upgrade they followed a careful and iterative process: The developers first deployed to their testing environment and requested volunteers from each team to click test their area of the codebase to find any regressions the test suite missed. These regressions were then fixed and deployment was done in off-hours to a percentage of production servers. During each deploy, data about exceptions and performance of the site was collected. With this information they fixed bugs that came up and repeat those steps until the error rate was low enough to be considered equal to the previous version. Finally, they merged the upgrade once they could deploy to full production for 30 minutes at peak traffic with no visible impact. This process allowed them to deploy 4.2 and 5.2 with minimal customer impact and no down time. Key lessons they learned during this upgradation Regular upgradation Upgrading will be easier if you are closer to a new version of Rails. This also encourages your team to fix bugs in Rails instead of monkey-patching the application. Keeping an upgrade infrastructure Needless to say, there will always be a new version to upgrade to. To keep up with the new versions, add a build to run against the master branch to catch bugs in Rails and in your application early. This make upgrades easier and increase your upstream contributions. Regularly address technical debt Technical debt refers to the additional rework you and your team have to do because of choosing an easy solution now instead of using a better approach that would take longer. Refraining from messing with a working code could cause a bottleneck for upgrades. To avoid this try to prevent coupling your application logic too closely to your framework. The line where your application logic ends and your framework begins should be clear. Be sure to assume that things will breaks Upgrading a large and trafficked application like GitHub is not easy. They did face issues with CI, local development, slow queries, and other problems that didn’t show up in their CI builds or click testing. Read the full announcement on GitHub Engineering blog. GitHub introduces ‘Experiments’, a platform to share live demos of their research projects GitLab raises $100 million, Alphabet backs it to surpass Microsoft’s GitHub Packt’s GitHub portal hits 2,000 repositories
Read more
  • 0
  • 0
  • 2455
article-image-introducing-web-sys-a-crate-to-enable-interaction-with-all-the-standard-web-platform-methods
Bhagyashree R
27 Sep 2018
2 min read
Save for later

Introducing web-sys: A crate to enable interaction with all the standard web platform methods

Bhagyashree R
27 Sep 2018
2 min read
Yesterday, the Rust and WebAssembly team introduced a new crate called web-sys, which provides raw bindings to all the Web APIs. The web-sys crate enables the interaction with all the standard web platform methods. Why use web-sys crate? Web includes many APIs and adding support for all of them manually can prove to be a very hectic task. These APIs are standardized with the same interface definition language (Web IDL). The developers came up with a new Web IDL frontend to wasm-bindgen. When the frontend was ready, they took the interface definitions for all the Web APIs from all their standards to automatically generate a -sys crate from them, known as web-sys. Bringing all these APIs at one place will make it easy for people to write neat libraries and other utility crates for the Web. The wasm-bindgen architecture The new wasm-bindgen architecture is shown below: Source: GitHub A frontend named wasm-bindgen-webidl is added to wasm-bindgen, which takes in Web IDL interface definitions and emits the internal Abstract Syntax Tree (AST) of wasm-bindgen. Once we have the AST, emitting zero-overhead Rust and JavaScript glue code to do type conversion and shepherding of function parameters is the same as normal #[wasm_bindgen] annotations. Using this architecture makes wasm-bindgen future-compatible with the host bindings proposal. This proposal focuses on making WebAssembly to directly call into native DOM methods without going through a JavaScript shim. This will provide better performance since calls from wasm can be statically validated to type check once at compilation time, rather than dynamically on every single call. To know more about the web-sys crate, check out the official announcement at GitHub. Introducing Wasmjit: A kernel mode WebAssembly runtime for Linux Why is everyone going crazy over WebAssembly? Next.js 7, a framework for server-rendered React applications, releases with support for React context API and Webassembly
Read more
  • 0
  • 0
  • 2675

article-image-vivaldi-2-0-releases-with-vivaldi-sync-resizable-tab-tiling-and-more
Bhagyashree R
27 Sep 2018
4 min read
Save for later

Vivaldi 2.0, a hyper-customizable browser, releases with Vivaldi Sync, Resizable Tab Tiling, and more!

Bhagyashree R
27 Sep 2018
4 min read
Yesterday, Vivaldi 2.0 was released with over 1,500 improvements, which includes features like Vivaldi Sync, Resizable Tab Tiling, and Floating Web Panels, among others. Vivaldi is a cross-platform web browser, which provides users many customization options to take control of what and how they browse the web. Sync your data with Vivaldi Sync Vivaldi Sync, as the name suggests, allows you to sync your data across computers using your Vivaldi account. You can choose what you want to sync, including your bookmarks, Speed Dials, saved password, history, extensions, and notes. To activate Vivaldi Sync go to the Settings menu or just click the cloud icon in the browser's status bar. Tab management got better Vivaldi comes with several unique features such as Tab Stacks and Quick Commands, to help you better manage your tabs. Vivaldi 2.0 provides features like Resizable Tab Tiling and a list style view to the Tab Cycler to make tab management a lot easier than before. Resizable Tab Tiling allows you to resize the tiles when viewing tabs in tile view. Also, the adjusted layout remains the same after restarts and loading of saved sessions. This version also comes with a list-style view to the Tab Cycler, which makes viewing and finding the tabs easier. Smarter browsing with Web Panels Web Panels allow you to simultaneously browse your favourite sites alongside the tabs in your main window. In Vivaldi 2.0 they have made checking messaging apps, social feeds, and news sites much easier with the addition of the following: Floating Web Panels: Instead of resizing the main window you can now use the floating web panels over the page. This feature can be activated through Tools | Settings | Panel | Panel Options. Web Panel Suggestions: When adding a new Web Panel you will see suggestions based on the sites that you regularly visit. More built-in tools You get more built-in tools to improve your productivity in the browser: Notes: With Notes you can annotate websites and add a description or screenshots to the notes while surfing the web. Capture: This tool allows you to capture either a full page screenshot or a selection of the screen that you define. Image Properties: You can view all the information you need about an image right in the browser and also copy it to the clipboard. History: It provides you a detailed overview of your browsing habits backed by statistics and makes it easier to find previously visited sites. Effortless navigation You can interact with the browser in various ways and get your job done faster: Keyboard Shortcuts: You can do almost everything you do on a computer in Vivaldi by setting keyboard shortcuts, such as creating windows, tabs, and Notes. Mouse Gestures: Speed up navigation and perform useful actions with quick movements of the mouse. You can also edit existing gestures and add your own to match your browsing style. Searching with assigned nicknames: Using Search Engine Nicknames, you can quickly switch between one search engine to another just by typing the nickname at the front of your search term. Speed Dials: Quickly access your favorite websites from the start page using the Speed Dials feature. You can customize your Speed Dials and folders to organize your content. Improved privacy with DuckDuckGo and Qwant To improve data privacy and protection, the browser is now integrated with DuckDuckGo as their default Private Search. Also, Qwant is added to the list of suggested search engines. To know more about the updates in Vivaldi 2.0 check out their official announcement. Firefox Reality 1.0, a browser for mixed reality, is now available on Viveport, Oculus, and Daydream Unity Benchmark report approves WebAssembly load times and performance in popular web browsers Tor Browser 8.0 powered by Firefox 60 ESR released
Read more
  • 0
  • 0
  • 2597