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
Explore 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-firefox-66-comes-with-block-autoplay-and-scroll-anchoring-to-reduce-online-annoyances
Bhagyashree R
20 Mar 2019
2 min read
Save for later

Firefox 66 comes with Block Autoplay and scroll anchoring to reduce online annoyances

Bhagyashree R
20 Mar 2019
2 min read
Yesterday, Mozilla announced the release of Firefox 66. In this release, the Firefox team aimed to reduce the online annoyances users face by introducing features like Block Autoplay, scroll anchoring, and more. Key features Firefox 66 is packed with: Block Autoplay Often, when we visit a website for some research or reading an article, it all of a sudden starts playing a video or audio, which is quite distracting. In this release, Firefox prevents websites from playing audio and video automatically by default with a newly-added feature, Block Autoplay. If you have already visited a website and clicked on the play button of a video, Firefox will remember your preference and automatically play videos in the subsequent visits. You can also enable autoplay on your favorite website by adding them to your permission list. For this, you just need to visit the control center by clicking the “i” with a circle on the address bar. Then go to Permissions and select the “allow” option in the drop-down menu. Source: Mozilla Scroll anchoring The text part of a web page loads faster as compared to the images and ads. So, as you are reading the article, these slow-loading ads and images move the text around. Scroll anchoring solves this problem, by remembering where you are so that you are not interrupted by these slow-loading images or ads. Improved search experience If you are someone who opens everything in a new tab and ends up with 20 open tabs, like me, this new feature in Firefox 66 is a savior for you. This version allows you to search tabs from the tab overflow menu, which appears when you have a large number of tabs open in a window. Additionally, Firefox 66 comes with a redesigned new tab for private browsing. Now, when you open a new tab in private browsing, it will show a search bar with your default search engine. To set your default search engine, go to Preferences, Search, then select Default Search Engine. Read the official announcement, to know about other exciting features Firefox 66 comes with. Mozilla’s Firefox Send is now publicly available as an encrypted file sharing service Mozilla Firefox will soon support ‘letterboxing’, an anti-fingerprinting technique of the Tor Browser Mozilla releases Firefox 65 with support for AV1, enhanced tracking protection, and more!
Read more
  • 0
  • 0
  • 5559

article-image-chromium-developers-to-introduce-a-never-slow-mode-which-sets-limits-on-resource-usage
Bhagyashree R
06 Feb 2019
2 min read
Save for later

Chromium developers to introduce a “Never-Slow Mode”, which sets limits on resource usage

Bhagyashree R
06 Feb 2019
2 min read
Today, Alex Russell, a Google software engineer, submitted a patch called ‘Never-Slow Mode’ for Chromium. With this patch, various limits will be enforced for per-interaction and resources to keep the main thread clean. Russell’s patch is very similar to a bug Craig Hockenberry, a Partner at The Iconfactory, reported for WebKit, last week. He suggested adding limits on how much JavaScript code a website can load to avoid resource abuse of user computers. Here are some of the changes that will be done under this patch: Large scripts will be blocked. document.write() will be turned off Client-Hints will be enabled pervasively Resources will be buffered without ‘Content-Lenght’ set Budgets will be re-set on the interaction Long script tasks, which take more than 200ms, will pause all page execution until the next interaction. Budgets will be set for certain resource types such as script, font, CSS, and images. These are the limits that have been suggested under this patch (all the sizes are in wired size): Source: Chromium Similar to Hockenberry’s suggestion, this patch did get both negative and positive feedback from developers. Some Hacker News users believe that this will prevent web bloat. A user commented, “It's probably in Google's interest to limit web bloat that degrades UX”. Another user said, “I imagine they’re trying to encourage code splitting.” According to another Hacker News user putting hard coded limits will probably not work, “Hardcoded limits are the first tool most people reach for, but they fall apart completely when you have multiple teams working on a product, and when real-world deadlines kick in. It's like the corporate IT approach to solving problems — people can't break things if you lock everything down. But you will make them miserable and stop them doing their job”. You can check out the patch submitted by Russell at Chromium Gerrit. Chromium developers propose an alternative to webRequest API that could result in existing ad blockers’ end Chromium blacklists nouveau graphics device driver for Linux and Ubuntu users Chromium-based Brave browser shows 22% faster page load time than its Muon-based counterpart
Read more
  • 0
  • 0
  • 5479

article-image-the-ember-project-announces-version-3-8-of-ember-js-ember-data-and-ember-cli
Bhagyashree R
28 Feb 2019
2 min read
Save for later

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

Bhagyashree R
28 Feb 2019
2 min read
Yesterday, the community behind the Ember project released version 3.8 of the three sub-projects: Ember.js, Ember Data, and Ember CLI. Along with few bugfixes in Ember Data and Ember CLI, this release introduces two new features: element modifier manager and array helper. Updates in the Ember.js web framework Ember.js 3.8 is a long-term support candidate. This release is incremental, backward compatible and comes with two new features: element modifier manager and array helper. Element modifier manager Element modifier manager is a very low-level API, which will be responsible for coordinating the lifecycle events that are triggered when an element modifier is invoked, installed, and updated. Array helper Now you can create an array in a template with a new feature introduced in Ember.js 3.8, the {{array}} helper. The working of this helper is very similar to the already existing {{hash}} helper. Deprecations Computed property overridability: Computed properties in Ember.js are overridable by default when no setter is defined. As this behavior is bug-prone, it has been deprecated. The ‘readOnly()’ modifier that prevents this behavior will be deprecated once overridability has been removed. @ember/object#aliasMethod: This method, which allows you to add aliases to objects defined with EmberObject, is now deprecated as it is very little known and rarely used by developers. Component manager factory function: Now, setComponentManager does not require a string to associate the custom component class and the component manager. Instead, developers can pass a factory function that produces an instance of the component manager. Updates in Ember Data Not many changes have been made in this release of Ember Data. Along with updating the documentation, the team has updated ‘_scheduleFetch’ to ‘use _fetchRecord’ for belongsTo relationship. Updates in Ember CLI The {{content-for}} hook is updated to allow developers to use it in the same way when different types are specified, for instance, {{content-for 'head'}} {{content-for 'head-footer'}}. With this release, gitignore will ignore Yarn .pnp files. To read the entire list of updates, visit Ember’s official website. The Ember project announces version 3.7 of Ember.js, Ember Data, and Ember CLI The Ember project releases version 3.5 of Ember.js, Ember Data, and Ember CLI The Ember project announces version 3.4 of Ember.js, Ember Data, and Ember CLI
Read more
  • 0
  • 0
  • 5473

article-image-atom-1-34-released-with-commit-preview-improved-diffs-commit-message-templates-and-more
Amrata Joshi
21 Jan 2019
3 min read
Save for later

Atom 1.34 released with commit preview, improved diffs, commit message templates and more

Amrata Joshi
21 Jan 2019
3 min read
Earlier this month, the team at Atom released Atom 1.34, a free and open source text editor that helps users to commit with a faster diff view and an ability to preview all staged changes. This release comes with improved commit preview, commit message templates and improved diffs. Improvements in Atom 1.34 Commit preview This feature will be highly useful for those who double check the specific changes that are going into each commit. While crafting commit messages, users can now draw inspiration from the diff of their staged changes. Users just have to click the ‘See All Staged Changes’ button above the commit message box, and they will be able to view their staged changes. Improved diffs The GitHub package now renders diff views with a text editor which will improve performance. Users will now be able to render large diffs faster. And the text editor key bindings will now work in diffs. Commit message templates This release now supports commit message templates. Users can now add a template on a per-project basis or globally through the git configuration. Changes in Atom 1.34 Users can view a multi-file diff of all staged changes prior to committing This release comes with added support for commit message template. This version of Atom renders git diff view with a TextEditor. This release comes with Kotlin language syntax highlighting in markdown code blocks. Major bug fixes The previous release had a bug where package searches were throwing uncaught exceptions which has been fixed now. Initially there was an error while running Bracket Matcher which has been fixed now. Users have given mixed reactions to this release. Few of the users think that the team at Atom could have worked on bigger issues related to finder reindexing and Atom-IDE packages. Few users are comparing this release with VSCode. With some users in the favor of VSCode and others supporting Atom 1.34. One user commented on HackerNews, “What makes you stick to Atom? I switched to VSCode due to Atom's terrible performance when opening huge files.” Another comment on HackerNews, reads, “I was a big fan of Atom, but it's constant performance problems combined with the fact that even after Atom's team rewriting huge parts of the project in C++, doing witchcraft and what not, made me switch to VSCode.” Another comment reads, “I'm finding VSCode's performance starts to fall apart completely where Atom performs the exact same as before.” Few users think that Atom functioned well initially but when it is used as an IDE, it falls flat. One of the users commented, “I used Atom for a couple years and raved about it's features and package management but when it came to using it as an IDE, it fell short for one reason. It doesn't have a configurable way to debug across all languages.” According to some users, Atom uses a rendering layer that doesn’t work along with the goal of a text editor, which is to be fast and responsive. While others are liking how this release auto-formats commit messages and make it easier for highlighting merge conflicts. To know more about Atom 1.34, check out the release notes. YUI 2.8: Rich Text Editor Facebook retires its open source contribution to Nuclide, Atom IDE, and other associated repos Android Studio 3.3 released with support for Navigation Editor, C++ code lint inspections, and more
Read more
  • 0
  • 0
  • 5355

article-image-duckduckgo-upgrades-apple-maps-integration-for-enhanced-map-search
Bhagyashree R
17 Jul 2019
3 min read
Save for later

DuckDuckGo upgrades its Apple Maps integration for an enhanced map search

Bhagyashree R
17 Jul 2019
3 min read
Earlier this year, DuckDuckGo announced that its map and address-related searches are now powered by Apple's MapKit JavaScript framework. This enabled them to offer improved address searches, additional visual features, enhanced satellite imagery, and better privacy. Since then the company has further expanded the use of Apple Maps for enhanced search while adhering to its commitment to user privacy, according to a blog post shared yesterday. https://twitter.com/DuckDuckGo/status/1151166280088657921 Here are some of the map-related search enhancements in DuckDuckGo: Map re-querying Previously, for every new map-related search you were redirected to the regular DuckDuckGo Search page. Now, it will allow you to stay in its expanded map view to refine local searches instantly. Additionally, when you move around the map or zoom in and out, the search results will be updated to include places within the field of view. Source: DuckDuckGo Intelligent autocompletion To make searching much easier and faster, the search engine now provides intelligent auto-completion within the expanded map view. As you type or update a new search query, DuckDuckGo will dynamically show search suggestions that are tailored to the local region displayed. A dedicated Maps tab Similar to Google, you will see a dedicated Maps tab in DuckDuckGo at the top of every search results page. Previously, the Maps tab was shown only for map-related searches, but from now on you will consistently see the tab alongside Images, Videos, and News. So, if you search for “cupcakes” and go to the Maps tab you will see local cupcake places. “Privacy by design, without any tradeoffs” Along with these great enhancements, DuckDuckGo is also promising for stricter user privacy. “A lot has changed with using maps on DuckDuckGo making it an even smoother experience, but what hasn’t changed is the way we handle your data—or rather, the way we don’t do anything with your data. We are making local searches faster while retaining the privacy you expect,” the post reads. It further emphasized that they do not share any personally identifiable information such as IP address and also make it point to discard any such information immediately after use. It is great that DuckDuckGo is expanding the use of Apple Maps along with promising better privacy to its users. Many users appreciated this update and believe that this is the right step towards becoming “a worthy competitor to Google Search.” Others said that Apple Maps is way behind Google Maps. Users have experienced that Apple Maps’ quality seems to highly depend on the user location. A user shared his experience saying, “I’ve used Apple Maps as my primary map since it came out, and I’ve only gotten a wrong location one time in literally thousands of searches, and that was years ago. It wasn’t really ready when it launched, but it has gotten consistently better over time.” He further added, “The UX is great, in many cases, the satellite imagery is more up-to-date compared to Google, and it doesn’t maul my battery to use. Not saying it’s clearly better than Google, because it isn’t, but for my usage, it’s more than “good enough,” and I love to see Apple’s privacy-respecting products compete effectively with big G.” Read the full announcement on DuckDuckGo’s official website. Time for data privacy: DuckDuckGo CEO Gabe Weinberg in an interview with Kara Swisher DuckDuckGo proposes “Do-Not-Track Act of 2019” to require sites to respect DNT browser setting DuckDuckGo now uses Apple MapKit JS for its map and location-based searches
Read more
  • 0
  • 0
  • 5092

article-image-google-to-launch-the-early-access-program-of-the-dev-domain-a-dedicated-space-for-developers
Bhagyashree R
18 Feb 2019
3 min read
Save for later

Google to launch the early access program of the .dev domain, a dedicated space for developers

Bhagyashree R
18 Feb 2019
3 min read
Last year in November at the Chrome Dev Summit keynote, Google introduced .dev, a domain dedicated to developers and technology. The registration process has already started on Feb 16 and the team is set to launch its Early Access Program. The registration process has already started on Feb 16. According to the timeline shared at the Chrome Dev Summit, the Early Access Program will start on Feb 19th at 8:00 am PST to February 28th at 7:59 am PST. Under this program, users can register available .dev domains by giving an extra fee. This fee will decrease as we get closer to the General Availability phase, which starts February 28 onwards. After registering the domain, users will be required to pay $12/year cost for .dev domains. In addition to a dedicated space for developers, this domain will provide built-in security, as it is included on the HSTS (HTTP Strict Transport Security) preload list. This essentially means that all the connections to .dev websites and pages will be made using HTTPS. Looking at Google’s track record of killing its products over time, some Hacker News users were little skeptical about this service. One user commented, “I wouldn't lease the domain through Google domains. Use a different registrar --- if possible, one that you'll be able to trust. That registrar will work with the registry of the TLD, which would be google in this case, and has a much better chance of actually resolving issues than if you were a direct customer of Google Domains.” Another user said, “They have a well-established track record of enthusiastically backing exciting new projects way outside of their core competency just to dump them like hot garbage several years later...It doesn't seem like a smart move to lease a domain from a politically active mega-monopoly that might decide to randomly become your competitor in 2 years.”  Countering this argument, one of the Google developers from the team launching .dev said,  “You'll be glad to know that TLDs can't simply be discontinued like other products might be. ICANN doesn't allow it. The procedures in place preventing a live TLD from shutting down are called EBERO.” Read more about the .dev domain on its official website. Chromium developers propose an alternative to webRequest API that could result in existing ad blockers’ end Google Chrome developers “clarify” the speculations around Manifest V3 after a study nullifies their performance hit argument Regulate Google, Facebook, and other online platforms to protect journalism, says a UK report
Read more
  • 0
  • 0
  • 4726
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 $19.99/month. Cancel anytime
article-image-mozilla-releases-firefox-beta-for-windows-10-on-qualcomm-snapdragon-always-on-always-connected-pcs
Bhagyashree R
12 Apr 2019
2 min read
Save for later

Mozilla releases Firefox Beta for Windows 10 on Qualcomm Snapdragon Always On, Always Connected PCs

Bhagyashree R
12 Apr 2019
2 min read
Last year in December, Mozilla announced its collaboration with Qualcomm to create an ARM64-native build of Firefox targeting Snapdragon-powered Windows 10 ‘Always On, Always Connected’ PCs. Yesterday, it shared that this Firefox build is now available in their Beta release channel. This release builds on top of Firefox Quantum, which is designed to efficiently work on multiple core processors. With this release, Mozilla aims to take this multi-paradigm one step further by making Firefox Quantum efficient for octa-core CPUs available from Qualcomm. To give users “a fast, personal, and convenient experience”, it takes advantage of Rust’s safe concurrency property to divide browsing tasks across the cores Qualcomm processors are being widely used in smartphones. At the Snapdragon Tech Summit 2018, the company shared that they are now moving into the PC space. They introduced the Always on, Always Connected PC category that aims to provide users smartphone-like features on a PC. These features include continuous connectivity and lightning-fast LTE speeds, multi-day battery life, location awareness, among others. Along with this, Qualcomm also announced that they are working with developers to bring a wide range of software applications that will be natively supported in these PCs and one of them was Firefox. Chuck Harmston, Mozilla's senior product manager for the Firefox Arm project, said, "One of the most compelling features of Windows laptops using Qualcomm's Snapdragon chipset is the battery life it enables, measured in days, rather than hours. We've been working hard to take advantage of that, offloading discrete tasks to small chips to use less power ... This was a big project that spanned the Firefox organization, touching almost every part of the browser." Developers are encouraged to try this latest Firefox beta release on their Snapdragon Windows 10 devices and submit bug and crash reports to Mozilla. To know more, check out the official announcement by Mozilla. Mozilla developers have built BugBug which uses machine learning to triage Firefox bugs Mozilla adds protection against fingerprinting and Cryptomining scripts in Firefox Nightly and Beta Mozilla is exploring ways to reduce notification permission prompt spam in Firefox  
Read more
  • 0
  • 0
  • 4587

Matthew Emerick
17 Aug 2020
6 min read
Save for later

Understanding React's useRef Hook from ui.dev's RSS Feed

Matthew Emerick
17 Aug 2020
6 min read
The marketing pitch for useState is that it allows you to add state to function components. This is true, but we can break it down even further. Fundamentally, the useState Hook gives you two things - a value that will persist across renders and an API to update that value and trigger a re-render. const [value, setValueAndReRender] = React.useState( 'initial value' ) When building UI, both are necessary. Without the ability to persist the value across renders, you’d lose the ability to have dynamic data in your app. Without the ability to update the value and trigger a re-render, the UI would never update. Now, what if you had a use case where you weren’t dealing with any UI, so you didn’t care about re-rendering, but you did need to persist a value across renders? In this scenario, it’s like you need the half of useState that lets you persist a value across renders but not the other half that triggers a re-render — Something like this. function usePersistentValue (initialValue) { return React.useState({ current: initialValue })[0] } Alright, stick with me here. Remember, useState returns an array with the first element being a value that will persist across renders and the second element being the updater function which will trigger a re-render. Since we only care about the first element, the value, we append [0] to the invocation. Now, whenever we invoke usePersistentValue, what we’ll get is an object with a current property that will persist across renders. If it’s still fuzzy, looking at an actual example may help. If you’re not familiar with the native browser APIs setInterval and clearInterval, you can read about them here before continuing on. Let’s say we were tasked to build an app that had a counter that incremented by 1 every second and a button to stop the counter. How would you approach this? Here’s what one implementation might look like. function Counter () { const [count, setCount] = React.useState(0) let id const clear = () => { window.clearInterval(id) } React.useEffect(() => { id = window.setInterval(() => { setCount(c => c + 1) }, 1000) return clear }, []) return ( <div> <h1>{count}</h1> <button onClick={clear}>Stop</button> </div> ) } 💻 Play with the code. id is created inside of useEffect but we need to access it inside of the clear event handler to stop the interval. To do that, we move the declaration of id up to the main scope and then initialize it with the id when the effect runs. All good, right? Sadly, no. The reason for this is because id doesn’t persist across renders. As soon as our count state variable changes, React will re-render Counter, re-declaring id setting it back to undefined. What we need is a way to persist the id across renders 😏. Luckily for us, we have our usePersistentValue Hook we created earlier. Let’s try it out. function usePersistentValue(initialValue) { return React.useState({ current: initialValue })[0] } function Counter() { const [count, setCount] = React.useState(0) const id = usePersistentValue(null) const clearInterval = () => { window.clearInterval(id.current) } React.useEffect(() => { id.current = window.setInterval(() => { setCount(c => c + 1) }, 1000) return clearInterval }, []) return ( <div> <h1>{count}</h1> <button onClick={clearInterval}>Stop</button> </div> ) } 💻 Play with the code. Admittedly, it’s a bit hacky but it gets the job done. Now instead of id being re-declared on every render, because it’s really a value coming from useState, React will persist it across renders. As you probably guessed by now, the ability to persist a value across renders without causing a re-render is so fundamental that React comes with a built-in Hook for it called useRef. It is, quite literally, the same as our usePersistentValue Hook that we created. To prove this, here’s the exact same code as before except with useRef instead of usePersistentValue. function Counter() { const [count, setCount] = React.useState(0) const id = React.useRef(null) const clearInterval = () => { window.clearInterval(id.current) } React.useEffect(() => { id.current = window.setInterval(() => { setCount(c => c + 1) }, 1000) return clearInterval }, []) return ( <div> <h1>{count}</h1> <button onClick={clearInterval}>Stop</button> </div> ) } 💻 Play with the code. useRef follows the same API we created earlier. It accepts an initial value as its first argument and it returns an object that has a current property (which will initially be set to whatever the initial value was). From there, anything you add to current will be persisted across renders. The most popular use case for useRef is getting access to DOM nodes. If you pass the value you get from useRef as a ref prop on any React element, React will set the current property to the corresponding DOM node. This allows you to do things like grab input values or set focus. function Form () { const nameRef = React.useRef() const emailRef = React.useRef() const passwordRef = React.useRef() const handleSubmit = e => { e.preventDefault() const name = nameRef.current.value const email = emailRef.current.value const password = passwordRef.current.value console.log(name, email, password) } return ( <React.Fragment> <label> Name: <input placeholder="name" type="text" ref={nameRef} /> </label> <label> Email: <input placeholder="email" type="text" ref={emailRef} /> </label> <label> Password: <input placeholder="password" type="text" ref={passwordRef} /> </label> <hr /> <button onClick={() => nameRef.current.focus()}> Focus Name Input </button> <button onClick={() => emailRef.current.focus()}> Focus Email Input </button> <button onClick={() => passwordRef.current.focus()}> Focus Password Input </button> <hr /> <button onClick={handleSubmit}>Submit</button> </React.Fragment> ) } 💻 Play with the code. If you want to add state to your component that persists across renders and can trigger a re-render when it’s updated, go with useState or useReducer. If you want to add state to your component that persists across renders but doesn’t trigger a re-render when it’s updated, go with useRef.
Read more
  • 0
  • 0
  • 4556

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 &amp; 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
  • 4339

article-image-dojo-4-0-released-with-support-for-progressive-web-apps-a-redesigned-virtual-dom-and-more
Bhagyashree R
23 Oct 2018
4 min read
Save for later

Dojo 4.0 released with support for Progressive Web Apps, a redesigned Virtual DOM, and more!

Bhagyashree R
23 Oct 2018
4 min read
Last week, the Dojo community announced the release of Dojo 4.0. This version aims for better application optimization and analysis. It comes with better support for code splitting and Progressive Web Apps (PWAs), a redesigned Virtual DOM, and more. Also, TypeScript forwards-compatibility is updated from 2.7 to 3.0. Improved Dojo CLI tooling Separating an application into bundles, better know as code splitting has been possible since the previous versions of Dojo. To do this developers had to add some configuration to specify how the application should be bundled. Dojo 4.0 helps you to automatically split your application based on its top-level routes. cli-build-app, the CLI command for building optimized Dojo applications, provides this functionality out of the box. Additionally, a bundle analyzer is automatically generated when running a build in production. It will provide you even more insight into the bundles. CLI is further improved with support for externals, allowing non-modular libraries or standalone applications that cannot be bundled normally to be included in a Dojo application. Support for automatic parsing, hashing, and bundling of resources from index.html, and the inclusion of assets from the catch-all assets directory is also added. Support for old browsers by explicit opt-in Earlier, all browsers were supported by default. This behavior is now reversed and support for older browsers back to IE11 is available by explicit opt-in. This results in smaller and faster applications for newer browsers as they add support for features natively. Support for Progressive Web Apps The framework is now optimized for the PRPL pattern in order to support Progressive Web Apps (PWAs). PRPL is a pattern for structuring and serving PWAs, keeping the performance of app delivery and launch in mind. Here is what it stands for: Push critical resources for the initial URL route. Render initial route. Pre-cache remaining routes. Lazy-load and create remaining routes on demand. To get a better understanding of the PRPL pattern, you can check out the explanation on Google Developers. Updates in the Dojo Framework The @dojo/framework has also seen various updates and addition of new features: The Virtual DOM engine has been redesigned and rewritten from the ground up. This overhauled Virtual DOM comes with improved rendering performance and reduced overall size of the framework. A few improvements have been added when using the w() and v() pragmas. These include a better composition of nodes, rendering a dynamic import directly using w(), and enabling the use of meta for nodes that are passed as children to a widget. In this release, the routing system within the framework has received an improved route-matching algorithm. dojo/stores come with middleware support for Local storage in this release, and a new StoreProvider eases the injection of application state. The StoreProvider will be used as any widget to inject the store into the vdom tree using a render property. The existing Link component is refactored and an ActiveLink component is added that applies classes when the link's outlet is "active". Breaking changes The routing events are emitted after the routing navigation is completed. runAfterRenders is now private. Symbol usage in widget-core is now not allowed because symbol usage causes issues as they are unique for a specific version. In order to consolidate existing dojo/core modules, many modules have been removed. Instead, using alternatives such as a fetch polyfill is advised for consumers that need to support IE11. The Outlet is changed from a higher order component (HOC) to a standard component with a render property. Having an outlet as a HOC implies that it would be shared across the application, which generally they are not. Read the official announcement at Dojo’s official website and also check their release notes. npm at Node+JS Interactive 2018: npm 6, the rise and fall of JavaScript frameworks, and more Mozilla optimizes calls between JavaScript and WebAssembly in Firefox, making it almost as fast as JS to JS calls Vue.js 3.0 is ditching JavaScript for TypeScript. What else is new?
Read more
  • 0
  • 0
  • 4115
article-image-surveyjs-leaves-beta
Richard Gall
05 Apr 2018
2 min read
Save for later

SurveyJS leaves beta

Richard Gall
05 Apr 2018
2 min read
The SurveyJS team have announced in a post on Hackernoon that it is now out of beta. The JavaScript library for building surveys features a number of updates and improvements that JavaScript developers tasked with developing surveys will love. First released to the public back in September 2015, SurveyJS 1.0 showcases a JavaScript library that has has been developed with a close attention to the needs and interests of its community of users. New SurveyJS features Here are some of the new features announced: Panels let developers put questions into a conditionally visible panel (so you don't just have to be a new page). Dynamic panels to tackle some of the problems with dealing with lists. Custom widgets held in a dedicated GitHub repository. The ability to create timed quizzes. SurveyJS themes and Bootstrap 4 support - although the team were planning on waiting for Bootstrap 4 to be officially released to integrate it, the team note in the post that the amount of interest in Bootstrap 4 from the SurveyJS community was so great that they went ahead anyway. The team have also added support for Web Content Accessibility Guidelines 2.0. This move underlines the growing popularity of the project and the need for it to respond to the needs of increasingly professionalized use within the corporate and enterprise world. What is SurveyJS? In case your scratching your head and wondering what SurveyJS is, here's a quick primer. it's essentially a JavaScript library that lets you develop, run, and analyze surveys. There are three different components: The survey library - allows you to build an integrate a survey into a webpage on your site The survey builder - a tool for developing the survey UI. The survey service - pieces together the survey UI and data collection making it easier for you to process and analyze data.  Go to the the SurveyJS project site to find out more.
Read more
  • 0
  • 0
  • 4096

article-image-web-development-news-bulletin-tuesday-17-april
Richard Gall
17 Apr 2018
2 min read
Save for later

Web development news bulletin - Tuesday 17 April

Richard Gall
17 Apr 2018
2 min read
Welcome to this week's web development news bulletin. There's some interesting new releases, and also news of conflict between 4 of the planet's biggest tech companies and the W3C. Web development news from the Packt Hub Mozilla is building a bridge between Rust and JavaScript. Mozilla has a high level plan for Rust to become a web development language used for backend tasks within the stack. To do this, it has created something called wasm-bindgen, which makes Rust code interoperable with JavaScript via WebAssembly. Web development news from across the web You can now take a sneak peak at WebAssembly Studio. WebAssembly Studio is an online IDE that provides incredible support when using WebAssembly. It's also a neat place to learn how to use WebAssembly. Apple, Google, Mozilla and Microsoft push back against W3C. The 4 companies behind the world's most popular web browsers have expressed considerable dissatisfaction with W3C's new DOM 4.1 specification. Columbia University's engineering department launches web development bootcamp. Columbia Engineering has teamed up with Trilogy Education Services to create a 24 week course to teach aspiring developers full-stack skills. "Web development is one of the fastest growing careers in today's economy with a projected 15% percent growth by 2026" notes Professor Soulaymane Kachani, Vice Provost for Teaching and Learning at Columbia University. "We are proud to partner with Trilogy to expand access to the digital skills New Yorkers need." New software releases Vue Press, a 'Vue-powered' static site generator has been released. Designed to be incredibly simple and easy to use, Vue Press promises to be a useful new way to build single page web applications. Parcel V1.7.0 has been released, with lots of exciting new features and improvements. This release includes Vue support (which was a big request from users), and content hashed bundle names to provide support for long-term cacheable files. Ember 3.1 and 3.2 released. The release of version 3.1.0 of Ember.js, Ember CLI, and Ember Data has kicked off the beta cycle for Ember sub-projects. Devil Box v0.13 released. This is described as a 'major release which introduces various stabilization and performance fixes as well as ships a very detailed documentation about all customizable features" Rails 5.2.0 is out. Vulkan 1.1.73 released.
Read more
  • 0
  • 0
  • 3782

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
  • 3390
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
  • 3276

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
  • 3123
Modal Close icon
Modal Close icon