area

Ren kou dao gua di qu she hui guan li yan jiu = A study of public administration in areas where migrant residents outnumber permanent residents / Jin Sanlin zhu

Jin, Sanlin




area

Areas to watch in 2020, and how carnivorous plants evolved impressive traps

We start our first episode of the new year looking at future trends in policy and research with host Joel Goldberg and several Science News writers. Jeffrey Mervis discusses upcoming policy changes, Kelly Servick gives a rundown of areas to watch in the life sciences, and Ann Gibbons talks about potential advances in ancient proteins and DNA. In research news, host Meagan Cantwell talks with Beatriz Pinto-Goncalves, a postdoctoral researcher at the John Innes Centre, about carnivorous plant traps. Through understanding the mechanisms that create these traps, Pinto-Goncalves and colleagues elucidate what this could mean for how they emerged in the evolutionary history of plants. This week’s episode was edited by Podigy. Ads on this week’s show: KiwiCo Download a transcript (PDF) Listen to previous podcasts. About the Science Podcast  




area

Cesarean section: an American history of risk, technology, and consequence / Jacqueline H. Wolf

Hayden Library - RG761.W65 2018




area

Weather Warnings for Western Australia - land areas. Issued by the Australian Bureau of Meteorology




area

Coronavirus: Tamil Nadu to ease lockdown restrictions in non-containment areas from Monday

The state has registered a huge increase in the number of coronavirus cases in the last few days.




area

It All Starts with a Humble <textarea>

Andy Bell rings out a fresh call in support of the timeless concept of progressive enhancement. What does it mean to build a modern JavaScript-focussed web experience that still works well if part of the stack isn’t supported or fails? Andy shows us how that might be done.


Those that know me well know that I make a lot of side projects. I most definitely make too many, but there’s one really useful thing about making lots of side projects: it allows me to experiment in a low-risk setting.

Side projects also allow me to accidentally create a context where I can demonstrate a really affective, long-running methodology for building on the web: progressive enhancement. That context is a little Progressive Web App that I’m tinkering with called Jotter. It’s incredibly simple, but under the hood, there’s a really solid experience built on top of a minimum viable experience which after reading this article, you’ll hopefully apply this methodology to your own work.

What is a minimum viable experience?

The key to progressive enhancement is distilling the user experience to its lowest possible technical solution and then building on it to improve the user experience. In the context of Jotter, that is a humble <textarea> element. That humble <textarea> is our minimum viable experience.

Let me show you how it’s built up, progressively real quick. If you disable CSS and JavaScript, you get this:

This result is great because I know that regardless of what happens, the user can do what they needed to do when the loaded Jotter in their browser: take some notes. That’s our minimum viable experience, completed with a few lines of code that work in every single browser—even very old browsers. Don’t you just love good ol’ HTML?

Now it’s time to enhance that minimum viable experience, progressively. It’s a good idea to do that in smaller steps rather than just provide a 0% experience or a 100% experience, which is the approach that’s often favoured by JavaScript framework enthusiasts. I think that process is counter-intuitive to the web, though, so building up from a minimum viable experience is the optimal way to go, in my opinion.

Understanding how a minimum viable experience works can be a bit tough, admittedly, so I like to use a the following diagram to explain the process:

Let me break down this diagram for both folks who can and can’t see it. On the top row, there’s four stages of a broken-up car, starting with just a wheel, all the way up to a fully functioning car. The car enhances only in a way that it is still mostly useless until it gets to its final form when the person is finally happy.

On the second row, instead of building a car, we start with a skateboard which immediately does the job of getting the person from point A to point B. This enhances to a Micro Scooter and then to a Push Bike. Its final form is a fancy looking Motor Scooter. I choose that instead of a car deliberately because generally, when you progressively enhance a project, it turns out to be way simpler and lighter than a project that was built without progressive enhancement in mind.

Now that we know what a minimum viable experience is and how it works, let’s apply this methodology to Jotter!

Add some CSS

The first enhancement is CSS. Jotter has a very simple design, which is mostly a full height <textarea> with a little sidebar. A flexbox-based, auto-stacking layout, inspired by a layout called The Sidebar is used and we’re good to go.

Based on the diagram from earlier, we can comfortably say we’re in Skateboard territory now.

Add some JavaScript

We’ve got styles now, so let’s enhance the experience again. A user can currently load up the site and take notes. If the CSS loads, it’ll be a more pleasant experience, but if they refresh their browser, they’re going to lose all of their work.

We can fix that by adding some local storage into the mix.

The functionality flow is pretty straightforward. As a user inputs content, the JavaScript listens to an input event and pushes the content of the <textarea> into localStorage. If we then set that localStorage data to populate the <textarea> on load, that user’s experience is suddenly enhanced because they can’t lose their work by accidentally refreshing.

The JavaScript is incredibly light, too:

const textArea = document.querySelector('textarea');
const storageKey = 'text';

const init = () => {

  textArea.value = localStorage.getItem(storageKey);

  textArea.addEventListener('input', () => {
    localStorage.setItem(storageKey, textArea.value);
  });
}

init();

In around 13 lines of code (which you can see a working demo here), we’ve been able to enhance the user’s experience considerably, and if we think back to our diagram from earlier, we are very much in Micro Scooter territory now.

Making it a PWA

We’re in really good shape now, so let’s turn Jotter into a Motor Scooter and make this thing work offline as an installable Progressive Web App (PWA).

Making a PWA is really achievable and Google have even produced a handy checklist to help you get going. You can also get guidance from a Lighthouse audit.

For this little app, all we need is a manifest and a Service Worker to cache assets and serve them offline for us if needed.

The Service Worker is actually pretty slim, so here it is in its entirety:

const VERSION = '0.1.3';
const CACHE_KEYS = {
  MAIN: `main-${VERSION}`
};

// URLS that we want to be cached when the worker is installed
const PRE_CACHE_URLS = ['/', '/css/global.css', '/js/app.js', '/js/components/content.js'];

/**
 * Takes an array of strings and puts them in a named cache store
 *
 * @param {String} cacheName
 * @param {Array} items=[]
 */
const addItemsToCache = function(cacheName, items = []) {
  caches.open(cacheName).then(cache => cache.addAll(items));
};

self.addEventListener('install', evt => {
  self.skipWaiting();

  addItemsToCache(CACHE_KEYS.MAIN, PRE_CACHE_URLS);
});

self.addEventListener('activate', evt => {
  // Look for any old caches that don't match our set and clear them out
  evt.waitUntil(
    caches
      .keys()
      .then(cacheNames => {
        return cacheNames.filter(item => !Object.values(CACHE_KEYS).includes(item));
      })
      .then(itemsToDelete => {
        return Promise.all(
          itemsToDelete.map(item => {
            return caches.delete(item);
          })
        );
      })
      .then(() => self.clients.claim())
  );
});

self.addEventListener('fetch', evt => {
  evt.respondWith(
    caches.match(evt.request).then(cachedResponse => {
      // Item found in cache so return
      if (cachedResponse) {
        return cachedResponse;
      }

      // Nothing found so load up the request from the network
      return caches.open(CACHE_KEYS.MAIN).then(cache => {
        return fetch(evt.request)
          .then(response => {
            // Put the new response in cache and return it
            return cache.put(evt.request, response.clone()).then(() => {
              return response;
            });
          })
          .catch(ex => {
            return;
          });
      });
    })
  );
});

What the Service Worker does here is pre-cache our core assets that we define in PRE_CACHE_URLS. Then, for each fetch event which is called per request, it’ll try to fulfil the request from cache first. If it can’t do that, it’ll load the remote request for us. With this setup, we achieve two things:

  1. We get offline support because we stick our critical assets in cache immediately so they will be accessible offline
  2. Once those critical assets and any other requested assets are cached, the app will run faster by default

Importantly now, because we have a manifest, some shortcut icons and a Service Worker that gives us offline support, we have a fully installable PWA!

Wrapping up

I hope with this simplified example you can see how approaching web design and development with a progressive enhancement approach, everyone gets an acceptable experience instead of those who are lucky enough to get every aspect of the page at the right time.

Jotter is very much live and in the process of being enhanced further, which you can see on its little in-app roadmap, so go ahead and play around with it.

Before you know it, it’ll be a car itself, but remember: it’ll always start as a humble little <textarea>.


About the author

Andy Bell is an independent designer and front-end developer who’s trying to make everyone’s experience on the web better with a focus on progressive enhancement and accessibility.

More articles by Andy




area

'Phailin' cripples wheels between Bhubaneshwar and coastal areas

Cancellation of trains and buses towards coastal areas of the state will hit the commuters.




area

Odisha Chief Minister Naveen Patnaik visits Phailin hit areas

The Chief Minister was moved by the drinking water scarcity in the affected areas.




area

Pakistan targets civilian areas in Jammu, 3 children among 4 hurt in firing along LoC

This is the ninth ceasefire violation by Pakistani troops in the past four days.




area

People from cyclone-hit area in Odisha going to Andhra for ATM

Only one ATM of State Bank of India (SBI) is functioning in the city.




area

Pak shells 10 BoP areas along IB in JK, 2 personnel injured

Omar Abdullah said Centre should look at other options if Pak continues to violate ceasefire.




area

Pakistani troops fire on forward areas along LoC, India retaliates

There have been nearly 150 ceasefire violations by Pakistani troops this year.




area

41,000 returned to native places in riots-hit areas: UP to SC

The Government of UP has paid Rs 6.15 crore to the families of the 61 deceased persons.




area

Microgrids and other local area power and energy systems / Alexis Kwasinski (University of Pittsburgh), Wayne Weaver (Michigan Technological University), Robert S. Balog (Texas A&M University)

Kwasinski, Alexis, 1970- author




area

Artificial intelligence and conservation / edited by Fei Fang (Carnegie Mellon University), Milind Tambe (University of Southern California), Bistra Dilkina (Georgia Institute of Technology), Andrew J. Plumptre (Key Biodiversity Areas Secretariat)




area

Two-day trip to Delhi: Mamata to meet PM today, seek funds for border areas, flood relief



  • DO NOT USE West Bengal
  • India

area

Panic at midnight: residents flee area fearing second leak

Will take action against those spreading rumours, say police




area

State party report on the state of conservation of the Great Barrier Reef World Heritage Area (Australia) : in response to the World Heritage Committee decision WHC 38 COM 7B.63




area

Marine transboundary conservation and protected areas / edited by Peter Mackelworth




area

Management of marine protected areas : a network perspective / edited by Paul D. Goriup




area

Freshwater ecosystems in protected areas : conservation and management / edited by C. Max Finlayson, Angela H. Arthington and Jamie Pittock




area

An evaluation of the effectiveness of a protected area management model in Bhutan : a case study of Phrumsengla National Park, Central Bhutan / Thinley Choden

Choden, Thinley, author




area

Marine protected areas : science, policy and management / edited By John Humphreys, Robert W.E. Clark




area

Protected areas: a legal geography approach / Josephine Gillespie

Online Resource




area

Conservation and recreation in protected areas : a comparative legal analysis of environmental conflict resolution in the United States and China / Yun Ma

Ma, Yun (Law teacher), author




area

A closer look at urban areas / Sahar Romero, editor

Rotch Library - HT361.C56 2018




area

Global Shanghai remade: the rise of Pudong new area / Richard Hu and Weijie Chen

Rotch Library - HT169.C62 S43827 2020




area

The European higher education area: between critical reflections and future policies / Adrian Curaj, Liviu Matei, Remus Pricopie, Jamil Salmi, Peter Scott, editors

Online Resource




area

Sugarcane farmers in Rajapalayam, Srivilliputtur area a worried lot

Non-availability of workers owing to the lockdown is causing delay in cutting the canes




area

Pakistan army: Roadside bomb in remote area kills 6 troops

Pakistan army: Roadside bomb in remote area kills 6 troops




area

‘COVID-19 death is a wake-up call to improve surveillance in the area’

Even after more than six weeks of national lockdown, there is no sign of any flattening of the curve but instead the number of new novel coronavirus c




area

Sal forest tortoise habitat stretches over unprotected areas

Protected areas are designated in a largely mammal-centric way, many equally threatened reptiles and amphibians live outside these




area

Elective Cesarean Delivery on Maternal Request

Interview with Jeffrey Ecker, MD, author of Elective Cesarean Delivery on Maternal Request





area

Trapping and the detection, control, and regulation of tephritid fruit flies : lures, area-wide programs, and trade implications / edited by Todd Shelly, Nancy Epsky, Eric Jang, Jesus Reyes-Flores, Roger Vargas




area

Plantations and protected areas : a global history of forest management / Brett M. Bennett

Bennett, Brett M., 1983-




area

Handling and storage of food grains in tropical and subtropical areas / by D. W. Hall

Hall, David Wylie, 1913-




area

[ASAP] Hydrothermal Stability of High-Surface-Area a-Al<sub>2</sub>O<sub>3</sub> and Its Use as a Support for Hydrothermally Stable Fischer–Tropsch Synthesis Catalysts

Chemistry of Materials
DOI: 10.1021/acs.chemmater.0c01587




area

Local area planning in India / Rishi Dev

Rotch Library - HT395.I4 R57 2015




area

Urban Oman: trends and perspectives of urbanisation in Muscat capital area / edited by Sonja Nebel and Aurel von Richthofen

Rotch Library - HT147.O5 U72 2016




area

USDA Offers Food Safety Tips for Areas Affected by Flooding in the Midwest

The U.S. Department of Agriculture’s (USDA) Food Safety and Inspection Service (FSIS) is issuing food safety recommendations for those who impacted by ongoing flooding in the Central and Southern United States.




area

USDA Offers Food Safety Tips for Areas in the Path of Tropical Storm Barry

The U.S. Department of Agriculture’s (USDA) Food Safety and Inspection Service (FSIS) is issuing food safety recommendations for those who may be impacted by Tropical Storm Barry.




area

USDA Offers Food Safety Tips for Areas Affected by Hurricane Dorian

The U.S. Department of Agriculture’s (USDA) Food Safety and Inspection Service (FSIS) is issuing food safety recommendations for those who may be impacted by Hurricane Dorian.




area

Face-to-face in Shakespearean drama : ethics, performance, philosophy / edited by Matthew James Smith and Julia Reinhard Lupton




area

Enhanced oxygen evolution catalysis by aluminium-doped cobalt phosphide through in situ surface area increase

Catal. Sci. Technol., 2020, 10,2398-2406
DOI: 10.1039/D0CY00123F, Paper
Timothy E. Rosser, Juliana P. S. Sousa, Yasmine Ziouani, Oleksandr Bondarchuk, Dmitri Y. Petrovykh, Xian-Kui Wei, Jo J. L. Humphrey, Marc Heggen, Yury V. Kolen'ko, Andrew J. Wain
Al-doping of cobalt phosphide oxygen evolution catalysts results in enhanced performance which, based on in situ and operando analysis, is shown to result from a surface area increase associated with modified oxidation behaviour.
The content of this RSS Feed (c) The Royal Society of Chemistry




area

Plasma-assisted filling electron beam lithography for high throughput patterning of large area closed polygon nanostructures

Nanoscale, 2020, Advance Article
DOI: 10.1039/D0NR01032D, Paper
You Sin Tan, Hailong Liu, Qifeng Ruan, Hao Wang, Joel K. W. Yang
The PFEBL process allows enhancement of electron beam writing efficiency for patterning of closed polygon structures using a post-exposure plasma treatment.
To cite this article before page numbers are assigned, use the DOI form of citation above.
The content of this RSS Feed (c) The Royal Society of Chemistry




area

CVD growth of large-area InS atomic layers and device applications

Nanoscale, 2020, 12,9366-9374
DOI: 10.1039/D0NR01104E, Communication
Chien-Liang Tu, Kuang-I Lin, Jiang Pu, Tsai-Fu Chung, Chien-Nan Hsiao, An-Ci Huang, Jer-Ren Yang, Taishi Takenobu, Chang-Hsiao Chen
Indium sulfide (InS) atomic layers made by chemical vapor deposition (CVD) are synthesized onto a mica substrate, producing a highly crystalline, large-area, and atomically thin-film InS flakes.
The content of this RSS Feed (c) The Royal Society of Chemistry




area

Indians frolicked at Florida playground area




area

Economic structure of the Tampa - St. Petersburg - Clearwater, FL metropolitan statistical area




area

Economic structure of the Tampa - St. Petersburg - Clearwater, FL metropolitan statistical area