we

Polyamory Week is under way. . .




we

Friday Polynews Roundup — The dam bursts for poly on TV, what we offer everyone, when to stay away, and planted seeds are sprouting




we

Friday Polynews Roundup — "Social power and quarantine in polyamorous relationships," Roswell TV series, more.





we

Web Design Weekly #363

Eric Bailey shares some thoughts on creating, maintaining and evaluating accessible technology. Adam Silver passes on loads of knowledge about form design. High-quality and customizable Gatsby themes and more. Enjoy.

The post Web Design Weekly #363 appeared first on Web Design Weekly.




we

Web Design Weekly #364

Marianne Bellotti passes on some great advice that has stuck with her during the process of becoming a better manager. With Chrome 76, you'll be able to use the new "loading" attribute to lazy-load resources. Robin Weruch explains how to fetch data in React with Hooks and lots more. Enjoy.

The post Web Design Weekly #364 appeared first on Web Design Weekly.




we

Web Design Weekly #365

Adam Noffsinger explains how Dropbox Design migrated to Figma. Harry Roberts dives into 'Time to First Byte'. Linzi Berry, Product Design Systems Manager at Lyft, shares the story and core principles of their design system. Enjoy.

The post Web Design Weekly #365 appeared first on Web Design Weekly.




we

Web Design Weekly #366

Hui Jing sheds some light into why reading CSS specifications is immensely helpful to build a strong understanding of CSS. A look into how visual elements affect our perception, recognition and memory by interacting with digital products. Philip Walton explains how to bundle modules and lots more. Enjoy!

The post Web Design Weekly #366 appeared first on Web Design Weekly.




we

Web Design Weekly #367

Is the internet boring now? Jake Underwood reflects on the years gone by and asks the questions, where did the web’s old personality go? Virginia Start shares a 5-step guide for designing global addresses that she devised during her research for Shopify’s International team. A handy tool that automatically generates splash screen and image assets for your Progressive Web App and lots more.

The post Web Design Weekly #367 appeared first on Web Design Weekly.




we

Wed Design Weekly #368

Mark Boulton shares his concerns he has with the current thinking of what constitutes a good design system in our industry. Rachel Andrew explores the situations in which you might encounter overflow in your web designs. Firefox 69 features a number of nice new additions and lots more. Enjoy.

The post Wed Design Weekly #368 appeared first on Web Design Weekly.




we

Web Design Weekly #369

Milica Mihajlija covers how browser rendering works and how to navigate DevTools to diagnose animation performance issues. Travis Almand look at how to use intersection observer watches and lots more. Enjoy.

The post Web Design Weekly #369 appeared first on Web Design Weekly.




we

Web Design Weekly #370

A look behind the scenes at how Netflix keeps you engaged and addicted. An insight into how Design Ops at Spotify work. A look into moving from Sketch to Figma and lots more. Enjoy.

The post Web Design Weekly #370 appeared first on Web Design Weekly.




we

Web Design Weekly #371

Rachel Andrew looks at some common layout patterns that we can’t yet do on the web. All the React Conf 2019 videos are now live. A dive into making Instagram faster and so much more. Enjoy!

The post Web Design Weekly #371 appeared first on Web Design Weekly.




we

Web Design Weekly #372

Robin Rendle has some wise words around the difference between a junior and senior front-end developer. Figma posted about gathering the data behind your design systems. The Cloudflare team did a deep dive into how they went about reworking the use of colour within their products and so much more. Enjoy.

The post Web Design Weekly #372 appeared first on Web Design Weekly.




we

Larry Kudlow on April jobs report: Trump assembled $9T rescue plan, we’ve done the best we can

U.S. loses record 20.5 million jobs in the month of April; White House National Economic Council Director Larry Kudlow weighs in on ‘America’s Newsroom.’





we

Sen. Joe Manchin forgot to mute a call with Senate Democrats while he went through an Arby's drive-through

Contrary to popular belief, people do order fish sandwiches at Arby's.Senate Democrats recently learned one of their own is among that rare crowd when Sen. Joe Manchin (D-W.V.) forgot to hit mute when driving through an Arby's drive-through last month. Manchin pulled up to the fast food spot in his home state, asked for a King’s Hawaiian Fish Deluxe sandwich, and later learned his mistake after staffers texted him, he tells The Wall Street Journal."It's a big piece of fish and it has a big slice of cheese," Manchin described to the Journal. "They were just jealous they weren't getting the good sandwich." Manchin himself may be jealous that unlike West Virginia Gov. Jim Justice, he doesn't have a sandwich named after him at his local Arby's.Manchin is far from the only lawmaker who's been "busted," as he put it, for forgetting to hit mute. Rep. Jamie Raskin (D-Md.) says his children have repeatedly walked by and told him to "tell [House] Speaker [Nancy] Pelosi to say now is the time to start forgiving student loans." Several described overhearing "colleagues exercising on ellipticals, doing sit-ups, dealing with children, or taking other phone calls," they tell the Journal. And many of them have admittedly skipped showers on days they know they don't have to be on camera. Read more about congressmembers' at-home habits at The Wall Street Journal.More stories from theweek.com The full-spectrum failure of the Trump revolution Unemployment is a catastrophe — but it could still be worse Trump reportedly got 'lava level mad' over potential exposure to coronavirus





we

No warning, no escape as deadly gas swept through an Indian village

When gas began leaking from a nearby chemical factory and drifting towards his house in southern India, there were no warnings and no alarms, welder Elamanchili Venkatesh said. Venkatesh, who staggered outside blindly, said he coughed up blood before losing consciousness.





we

Google employees are told to expect to work from home for the rest of the year, but a select few will be allowed to return to offices as soon as June

Google CEO Sundar Pichai has told employees to expect to work from home for the remainder of 2020, but will open offices for certain exceptions.





we

How will coronavirus change the way we live?

Will life return to how it was once lockdown restrictions are eased, or will some things change for ever?




we

Harry Dunn: Brother tells Boris Johnson 'we deserve truth'

The brother of Harry Dunn, who died outside a US airforce base, urges Boris Johnson to take up the case.




we

Trade talks between UK and US set to get under way

Ministers say they will drive a "hard bargain" but Labour say they must be "wary" of President Trump.




we

Why are Welsh Assembly Members changing their name?

As of 6 May, the name of Assembly Members will change to Members of the Senedd.




we

Coronavirus: MPs allowed to vote remotely for first time

The historic move will be temporary to cope with the coronavirus pandemic, says Commons speaker.




we

How Florian Schneider and Kraftwerk influenced five decades of music

The band's influence can be heard in everything from art-rock and hip-hop to trance and house.




we

Quiz of the Week: What's in a (baby) name for Elon Musk?

How closely have you been paying attention to what's been going on during the past seven days?




we

Africa's week in pictures: 1 - 7 May 2020

A selection of the week's best photos from across the continent and beyond.




we

Week in pictures: 2-8 May 2020

A selection of news photographs taken around the world this week.




we

Couples get married in virtual wedding ceremonies

Video calling technology is helping people share their special day with others during lockdown.




we

Coronavirus contact-tracing: World split between two types of app

The UK is testing its own design but a Google-Apple initiative is winning over many other nations.




we

Coronavirus: Concerns for wellbeing of babies born in lockdown

New mothers are missing out on support for their babies amidst lockdown restrictions.




we

'Tumbleweed tornado' hits US driver

An eerily beautiful dust devil flings picking up hundreds of tumbleweeds in Washington state.




we

The Web We Lost: Luke Dorny Redesign

Like 90s hip-hop, The Web We Lost™ retains a near-mystical hold on the hearts and minds of those who were lucky enough to be part of it. Luke Dorny’s recent, lovingly hand-carved redesign of his personal site encompasses several generations of that pioneering creative web. As such, it will repay your curiosity.

The post The Web We Lost: Luke Dorny Redesign appeared first on Zeldman on Web & Interaction Design.





we

The one where we interviewed Luca Ferrari

#352 — April 22, 2020

Read on the Web

???? We've got a neat bonus for you this week at the bottom of the issue ????

Postgres Weekly

Postgres Explain Visualizer 2: A Vue.js Component to Show Execution Plans — Less a standalone tool and something you’d use when building your own Postgres tooling. There is, however, a demo here. The output is really nifty.

Dalibo

Insert-Only Tables To Be Autovacuumed in Postgres 13 (But Why?) — Autovacuuming clears up dead tuples that are often left when updating or deleting data from tables, so why is autovacuuming for append-only tables a big deal in Postgres 13? Laurenz explains.

Laurenz Albe

Faster CI/CD for All Your Software Projects Using Buildkite — See how Shopify scaled from 300 to 1800 engineers while keeping their build times under 5 minutes.

Buildkite sponsor

Full Text Search in Milliseconds with Rails and Postgres — If you’ve never played with full text search with Postgres and Rails, this is a fine place to start. It covers LIKE/ILIKE, trigrams, and ‘proper’ full text searching. We also get to see how Leigh took a query from taking 130ms down to 7ms.

Leigh Halliday

An Easy Postgres 12 and pgAdmin 4 Setup with Docker — Docker provides an easy and loosely coupled way to get things set up in a development environment.

Jonathan S. Katz

Is There a Limit on Number of Partitions Handled by Postgres? — Sort of, but you’d really have to be going at it to stretch Postgres 12’s capabilities in this area.

Denish Patel

Where Do My Postgres Settings Come From? — A nice visual look at how parameters and settings cascade or override each other.

My DBA Notebook

Identify Slow-Running PostgreSQL Queries Quickly in Datadog — Improve PostgreSQL performance by visualizing and identifying errors fast using granular, out-of-the-box dashboards in Datadog.

Datadog sponsor

Replicate Multiple Postgres Servers to a Single MongoDB Server using Logical Decoding Output Plugin

David Zhang

An Overview of the JOIN Methods in Postgres

Kumar Rajeev Rastogi

???? A Q&A with…
Luca Ferrari
Postgres community organizer, author, adjunct professor, and open source advocate.

Luca Ferrari has had a huge impact on the Postgres community in Italy, having been president of the Italian PostgreSQL Users Group in the past and having helped to organize the popular PGDay.it events. He also blogs frequently about Postgres and wrote PostgreSQL 11 Server Side Programming Quick Start Guide for Packt.

Note: A more complete version of this interview is on the Web.

We caught up with him to ask about server side Postgres use cases in particular:

For those who use Postgres as a simple database and haven't touched the deeper elements, where do you think they should start?

There's no single answer to this question, since Postgres is such a huge project with so many features and a rich community. I never found a project where it cannot fit in. Postgres is somehow like Unix: you cannot touch it as "just a database", you need to commit to its culture to benefit the most out of it.

In my classes, I can see that people usually get fascinated by the capabilities of doing server side programming, and that is why I decided to write my book about this topic. Often, people do not expect to be able to embed their Perl, Java, or Python libraries directly into PostgreSQL without having to rewrite their business logic in an SQL-like language.

Another great feature nowdays is the support to JSON within the database, thanks to which PostgreSQL can be used as both a relational database and a 'NoSQL' storage engine, providing a lot of flexibility in your infrastructure.

One suggestion I always gave is to join the mailing lists: there are several that differ by topic and amount of traffic. Most are very active and have high quality contributors that take care in providing accuate replies to users' questions, that spend time in reproducing errors and edge-cases, and who will help you. That's a mandatory place where you have to start, in my opinion, to better learn about the project, its features and its culture.

Where should the line be drawn between doing things in an external programming language versus within Postgres?

Often the right choice is to place business logic near the data it refers to, that is within the database itself. However, there are several things to take into account including the developer's experience and the expressiveness of SQL-derived languages like pl/PgSQL.

There's a habit of letting ORMs (Object Relational Mappers) do most of the database interaction nowadays, reducing the database to a "simple storage". Of course, databases can do a lot more, and PostgreSQL in particular can help you migrate and embed your own business logic into the database itself.

I have helped a few companies embed their own Java libraries into Postgres resulting in a more robust and coherent way to access the data (the real value) without any regard of the application they were using. Because once you start having data, you will soon find that such data is required by multiple applications in different technologies and on different platforms, so that implementing the same business logic rules over and over becomes a huge effort; on the other hand, moving such logic within the database simplifies and keep uniform the way your data is manipulated.

What one thing do you think people should learn?

Stored procedures. They serve as a common base for triggers and are very similar to routines, therefore allowing you to build more complex pieces into your own cluster. Once you have learnt the common way of defining functions, you can go deeper and write your own native functions using other languages (e.g. C). This is more complex, but thanks to the extensibility of Postgres is not an impossible task and can help you migrating more and more code into the database. Once you have created a new feature, please do contribute it back so that other people can use it!

...

Last, allow me to announce that I'm working on another book right now: me and a friend of mine are writing a more general book on Postgres that will try to answer your question by leading the reader through the main features that make Postgres unique and great.

Be sure to check out Luca's book PostgreSQL 11 Server Side Programming Quick Start Guide to learn more about the topics covered in this interview. You can also find the code from the book in this GitHub repo.

If you enjoyed this interview, Luca actually gave some more detailed answers in the full interview which you can read here.




we

Blasian love: The day we introduced our black and Asian families

Blasian - black and Asian - couples now exist in South Africa... but they don't always have an easy time.




we

Stop and search: the controversial police power

Reporter Aaron Roach Bridgeman speaks to suspects, police and campaigners.




we

Coronavirus: what we can learn from the war generation

What can younger people learn from the generations that lived through World War Two?




we

Coronavirus: A toast to my cancelled wedding

Today was going to be my big day until Covid-19 intervened. But that won't stop me delivering my speech.




we

Coronavirus: Flower grower donates blooms to key workers

Horticulturalist Ben Cross is working with supermarkets to donate flowers to NHS workers.




we

Coronavirus: 'We need to recruit hundreds more live-in carers'

The CEO of a social care firm says there is a surge in demand for live-in carers due to coronavirus.




we

Coronavirus coffee farmer: 'We're definitely scared'

Many small coffee producers fear they will go under, as Covid-19 has shut down their usual buyers.




we

React Router & Webpack in Production

I’ve been working on a pretty large react-router codebase at work. Currently it has around 50~ code splits, which as you can imagine, is a lot of routes. This is going to be a post on the things I’ve learned throughout building out my development / production config and how we are using webpack in production.

###Initial Setup

Before I really dive into how my webpack config is setup and the problems I’ve found, I’ll quickly go over how this app is setup. Currently, there’s one entry point and it looks like this:

import React from 'react'
import { render } from 'react-dom'
import { match, Router, browserHistory } from 'react-router'
import AsyncProps from 'async-props'
import routes from '../routes/index'
/* globals document, window */

const { pathname, search, hash } = window.location
const location = `${pathname}${search}${hash}`

match({ routes, location }, () => {
  render(
    <Router
      render={props => <AsyncProps {...props}/>}
      routes={routes}
      history={browserHistory}
    />,
    document.getElementById('app')
  )
})

It looks like a standard react-router setup, except a couple things are different. For one, there’s way too many routes to have them all in this file, so we are importing the main route object into this file. Second, we are using match on the client side. Without matching first, the client side would try to render before the splits were downloaded causing an error. You can read a little more about match on the client here.

Next, we are using Ryan Florence’s awesome async-props library for loading data into components. It allows me to load data from an api before the server renders components. It will pass the data down to the client for the client-side render, and then data will load as you navigate to new pages automatically.

###Routes

Our main routes file looks like this:


export default {
  component: 'div',
  path: '/',
  indexRoute: require('./index'),
  childRoutes: [
    require('./login'),
    require('./account'),
    ...
  ]
}

There’s a lot more require’s in our app of course. And these are nested pretty deep. The files referenced in the root file have more child routes, and those use require.ensure which you can read about in the webpack docs on code splitting. It tells webpack to make a new bundle, and then load that bundle when require.ensure is called on the client. Here’s an example:

if(typeof require.ensure !== "function") require.ensure = function(d, c) { c(require) }

module.exports = {
  path: 'account',
  getComponent(location, cb) {
    require.ensure([], (require) => {
      cb(null, require('../../views/master/index.jsx'))
    })
  },
  childRoutes: [
    require('./settings'),
  ]
}

There’s a few things going on here. First, we have a function at the top that will polyfill require.ensure. Why? Well, on this project we are server rendering our whole site as well, which I would rather not do, but due to the type of site we are building: we have to. The next thing is the relative require path. I’m using this awesome babel resolver plugin along with webpack’s resolve paths so that I can import files like this:

import Header from '../../master/header'
//becomes
import Header from 'master/header'

Why do I have to use a babel plugin AND webpack’s resolve feature? Once again, doing a server rendered app, the code is ran on the server and also through webpack. In this particular app, I haven’t had time to experiment with webpacking the server. Anyways, if I didn’t use the babel plugin, errors would be thrown on the server, but webpack would work fine. This is one of the common things I have ran into while building this app.

Realizing some things need to be done slightly different on the server or client. You may still be wondering why I am referencing the component as a relative path in the above route example, and that’s because the babel plugin I’m using only works with import and not require. My route objects are the one place that I have these “nasty” looking paths.

##Webpack

I was prompted to make this article after tweeting this out:

A couple people wanted a better explanation as to what’s happening here. When I was first building my production webpack config, even after using all of these plugins:

new webpack.optimize.CommonsChunkPlugin('vendor', 'vendor.js'),
new webpack.optimize.OccurenceOrderPlugin(),
new webpack.optimize.DedupePlugin(),
new webpack.optimize.UglifyJsPlugin({
  compress: { warnings: false },
  comments: false,
  sourceMap: false,
  mangle: true,
  minimize: true
}),

My bundle looked like this:

That’s pretty huge if you think about it. And I’m not talking about the amount of bundles. I’m talking about the file size. After searching everywhere for a solution to get the bundle size down further, I found webpack’s AggressiveMergingPlugin. This thing is a life saver. As you may have seen from the tweet, the output turns into this:

Just having the main, vendor, and one other bundle brings the whole site under 1MB. I’m using the plugin to only merge files if the size reduction is more than 50%, which is the default.

People talk about code splitting in webpack and think it’s really amazing to load the JS for the page you’re on and nothing more. It sounds great. The problem is that the file size is immensely bigger. If someone more familiar with webpack has a better idea as to why this is, I’d like a better explanation. It isn’t feasable to keep the splits instead of merging them. This site is pretty large, with a lot of routes as you can tell from the screenshots. Codesplitting without merging would cause way more waiting on the client side every time you navigate to a new page. Even if the JS was heavily cached, the first time you hit these pages it will have to load a 300kb bundle for some of them.

##Caching

That takes us to caching. We are about a month away from publicly launching this site, so we haven’t setup the workflow for pushing updates through a cdn, but that will be the end result. For now, in my webpack config, my output object looks like this:

output: {
  path: __dirname + '/public/assets/js/[hash]/',
  filename: '[name].js',
  chunkFilename: '[id].js',
  publicPath: '/assets/js/[hash]/'
},

This is in the production config of course. This way I can cache the files and when I update the code, the hash will change and the browser won’t be caching the old code. I pass in the hash as an env variable at runtime to that the server has the correct path to the assets folder.

##Problems

There were a few big problems I came across while building out a server rendered app with dynamic routes. The first was page titles. How am I supposed to have the right title on the client and on the initial server render? Thankfully, Ryan has yet another solution. react-title-component solves this perfectly.

The next was, how do I hit an api, wait for the response on server render, load new data on route changes, and of course, do this at the component level. As I mentioned before, async-props solves this problem too. It will give you route info so that you can make requests based on things in the url.

The next problem is one that I haven’t fully solved. Webpack is getting really slow. It takes around 20 seconds on a maxed out macbook 15” to build code in production. On the server, it takes more like a minute! If I’m in development mode, it takes around 10 seconds to make the initial build, and sometimes it lags on building the splits on code change. If anyone has insight into this I would love to hear it.

This one goes along with the webpack one, and it is reloading the server. I haven’t tried to webpack the server but I hear doing so works great for this. I don’t think it would fix the problem with webpack being slow though, and in fact it would probably make it even slower.

##Folder structure

I almost forgot to throw this one in here! I’m really happy with the structure of this project. I have a views folder that has all of the same folders and file names as the routes folder. It makes it really easy to find things. These also correspond with the URL to the page. /account/settings will be in views/account/settings.jsx and routes/account/settings.js. The same is true for my tests folder.

##Conclusion

I hope this gave you a good glimpse at how webpack and react router work at a larger scale than you see most blog posts cover. If you have any questions or things that you would like me to talk about that I haven’t already, please leave a comment below and I will update this post! I’m sure that I forgot a few problems and tips writing this. I was thinking this would be a short post but it blew up on me!




we

Al Ain 3-3 (4-3 pens) Team Wellington (UAE 2018)

A penalty shootout decided the opening match of the FIFA Club World Cup UAE 2018. Hosts Al Ain knocked out OFC champions Team Wellington thanks to the heroics of Al Ain goalkeeper Khalid Eisa.




we

L-R: Tashan Oakley-Boothe, Jonathan Panzo and Joel Latibeaudiere of England pose for photos after the FIFA U-17 World Cup India 2017 Final match between England and Spain at Vivekananda Yuba Bharati Krirangan on October 28, 2

L-R: Tashan Oakley-Boothe, Jonathan Panzo and Joel Latibeaudiere of England pose for photos after the FIFA U-17 World Cup India 2017 Final match between England and Spain at Vivekananda Yuba Bharati Krirangan on October 28, 2017 in Kolkata, India. (Photo by Tom Dulat - FIFA/FIFA via Getty Images)




we

Javid caught between pride and frustration

FIFA.com ​spoke to the disconsolate yet proud Mahdi Javid after Iran were defeated 4-3 by Russia in the semi-finals of the FIFA Futsal World Cup.




we

A first for Argentina and fond farewells

Impressive resilience was the key to Argentina's maiden triumph in the final of the FIFA Futsal World Cup Colombia 2016. La Albiceleste twice hit back within seconds of Russia scoring, while their strong defence was also fundamental in ensuring the win.




we

Xavi: I'm suffering if we don't have the ball




we

Bounedjah: We didn’t doubt we would win




we

Carrillo: We’ll play with the same determination as the Champions League




we

Albulayhi: We're confident of reaching the final