con Reports of an insect apocalypse are overblown but still concerning By www.newscientist.com Published On :: Thu, 23 Apr 2020 19:00:18 +0000 While an alarming 9 per cent of insects on land are being lost each decade, the state of the world’s insects is much more nuanced than warnings of an insect apocalypse Full Article
con Pet food can contain drug-resistant bacteria that may pass to humans By www.newscientist.com Published On :: Fri, 24 Apr 2020 17:18:36 +0000 Some dogs and cats may be passing gut microbes to their owners that withstand last-resort antibiotics, which can be needed to fight off pneumonia from a coronavirus infection Full Article
con What is it like to be a covid-19 contact tracer and what do they do? By www.newscientist.com Published On :: Fri, 24 Apr 2020 15:53:07 +0000 Covid-19 contact tracers are part healthcare worker, part detective and part call centre operative. But what is the job really like? New Scientist spoke to one in Ireland to find out Full Article
con UK sets new target to recruit 18,000 contact tracers by mid-May By www.newscientist.com Published On :: Tue, 28 Apr 2020 19:01:36 +0000 The UK government has set a new target of recruiting an army of 18,000 coronavirus contact tracers by the middle of May, to be in place for the launch of the NHS contact tracing app Full Article
con UK government won't say how many covid-19 contact tracers it has hired By www.newscientist.com Published On :: Thu, 30 Apr 2020 10:51:42 +0000 The UK government has refused to say how many covid-19 contact tracers it has employed, with less than three weeks to go until its target of recruiting 18,000 of them by mid-May Full Article
con We can't rely on rampant consumerism to get us out of this mess By www.newscientist.com Published On :: Wed, 29 Apr 2020 18:00:00 +0000 Hyperconsumption adds to environmental destruction that brings people into contact with animal viruses that can spark pandemics. We have to avoid the temptation to rely on it to get us out, writes Graham Lawton Full Article
con Most people’s mental health conditions morph into others over time By www.newscientist.com Published On :: Thu, 30 Apr 2020 16:36:00 +0000 As many as 86 per cent of people meet the criteria for a psychiatric diagnosis by middle age – and in many cases, a different diagnosis at some other time Full Article
con SpaceX mission control to do social distancing for first crewed flight By www.newscientist.com Published On :: Fri, 01 May 2020 23:09:02 +0000 SpaceX’s first crewed launch is planned for 27 May and will be run from a mission control with desks set six feet apart to comply with social distancing protocols Full Article
con Scratching is contagious among strangers – if you are an orangutan By www.newscientist.com Published On :: Fri, 01 May 2020 23:57:51 +0000 For orangutans, scratching is contagious – but unexpectedly, the behaviour is transmitted more between individuals that do not know each other well Full Article
con We still don't know how effective the NHS contact-tracing app will be By www.newscientist.com Published On :: Mon, 04 May 2020 17:00:27 +0000 The UK government will begin trials of its coronavirus contact-tracing app this week, but what impact it will have on slowing the spread of covid-19 is unclear Full Article
con Pondering the big question of consciousness is a welcome distraction By www.newscientist.com Published On :: Wed, 29 Apr 2020 18:00:00 +0000 Our best mathematical theory of consciousness is sparking a rethink of one of science’s hardest problems – how simple matter gives rise to a complex mind Full Article
con Friday Polynews Roundup — Triad storyline on "The Connors," Black Poly Nation gets TV rep, loving polyfamily profiles, community dreams, and evangelical worry that this all hits too close to home By feedproxy.google.com Published On :: Sat, 29 Feb 2020 04:33:00 +0000 Full Article Friday Polynews Roundup poly and christian polyamory on TV tabloids
con Contents of Cologne Ads By feedproxy.google.com Published On :: Sat, 06 Dec 2008 16:04:05 -0800 Full Article cologne ladyfunbags magazine men
con I Have Them for My Contact Lenses, I Swear By feedproxy.google.com Published On :: Wed, 14 Sep 2011 23:35:50 -0700 Full Article allergies eye drops Pie Chart stoners
con US accuses China, Russia of coordinating on virus conspiracies By news.yahoo.com Published On :: Fri, 08 May 2020 20:21:56 -0400 The United States on Friday accused China and Russia of stepping up cooperation to spread false narratives over the coronavirus pandemic, saying Beijing was increasingly adopting techniques honed by Moscow. "Even before the COVID-19 crisis we assessed a certain level of coordination between Russia and the PRC in the realm of propaganda," said Lea Gabrielle, coordinator of the State Department's Global Engagement Center, which tracks foreign propaganda. The Global Engagement Center earlier said thousands of Russian-linked social media accounts were spreading conspiracies about the pandemic, including charging that the virus first detected last year in the Chinese metropolis of Wuhan was created by the United States. Full Article
con Brazil government warns of economic collapse in 30 days By news.yahoo.com Published On :: Fri, 08 May 2020 11:54:59 -0400 Brazil could face "economic collapse" in a month's time due to stay-at-home measures to stem the coronavirus outbreak, with food shortages and "social disorder," Economy Minister Paulo Guedes warned Thursday. Brazil, Latin America's biggest economy, is also the epicenter of the coronavirus pandemic in the region. But far-right President Jair Bolsonaro - who appeared alongside Guedes, his free-market economics guru - opposes stay-at-home measures to slow the virus, saying they are unnecessarily damaging the economy. "Within about 30 days, there may start to be shortages on (store) shelves and production may become disorganized, leading to a system of economic collapse, of social disorder," Guedes said. "This is a serious alert." Bolsonaro, who has compared the new coronavirus to a "little flu," said he understood "the virus problem" and believed that "we must save lives." "But there is a problem that's worrying us more and more... and that's the issue of jobs, of the stalled economy," Bolsonaro added. "Fighting the virus shouldn't do more damage than the virus itself." Full Article
con Coronavirus: Contact tracing app to be trialled on Isle of Wight By www.bbc.co.uk Published On :: Sun, 03 May 2020 18:10:54 GMT The experiment is part of the government's track and trace strategy aimed at limiting a second wave. Full Article
con Coronavirus: Johnson reveals 'contingency plans' made during treatment By www.bbc.co.uk Published On :: Sun, 03 May 2020 12:29:09 GMT Boris Johnson says doctors had planned what to do if his coronavirus treatment went "badly wrong". Full Article
con Coronavirus: Staggered work times considered when lockdown eases By www.bbc.co.uk Published On :: Sun, 03 May 2020 21:08:34 GMT Transport Secretary Grant Shapps says it could help maintain social distancing on public transport. Full Article
con Coronavirus: Draft post-lockdown workplace rules contain 'huge gaps' - TUC By www.bbc.co.uk Published On :: Mon, 04 May 2020 20:55:13 GMT The leader of the TUC says she cannot recommend the government's draft advice "in its current form". Full Article
con Trade minister Conor Burns resigns over 'veiled threats' in letter By www.bbc.co.uk Published On :: Mon, 04 May 2020 18:32:35 GMT Conor Burns used his position as an MP to intimidate a member of the public, standards watchdog finds. Full Article
con Coronavirus: 'Severe consequences' if lockdown lifted too early By www.bbc.co.uk Published On :: Wed, 06 May 2020 17:47:43 GMT The NI Executive says agreeing how to relax measures is the most crucial decision it will ever make. Full Article
con Atletico Ottawa - how the Canadian club conceived in Spain is preparing to make its debut By www.bbc.co.uk Published On :: Sat, 09 May 2020 11:00:49 GMT Fan clubs, players from all over the world and a former Spain international in charge, Atletico Madrid's Canadian venture is currently on pause. Full Article
con Coronavirus: Can live-streaming save China's economy? By www.bbc.co.uk Published On :: Tue, 05 May 2020 23:17:27 GMT In China, the live-streaming industry has become an important platform for economic recovery. Full Article
con Coronavirus: How does contact tracing work and is my data safe? By www.bbc.co.uk Published On :: Wed, 06 May 2020 14:59:55 GMT Millions in the UK will soon be asked to download an app that helps to limit coronavirus spreading. Full Article
con Coronavirus contact-tracing: World split between two types of app By www.bbc.co.uk Published On :: Thu, 07 May 2020 13:18:34 GMT The UK is testing its own design but a Google-Apple initiative is winning over many other nations. Full Article
con Xbox: Microsoft reveals first games for Series X console By www.bbc.co.uk Published On :: Thu, 07 May 2020 19:13:25 GMT The Xbox team shows off new footage of the highly anticipated Assassin's Creed: Valhalla. Full Article
con Coronavirus: NHS reveals source code behind contact-tracing app By www.bbc.co.uk Published On :: Thu, 07 May 2020 18:09:47 GMT More than 40,000 people have downloaded the contact tracing app so far, ahead of a wider release. Full Article
con Coronavirus: 'Plandemic' virus conspiracy video spreads across social media By www.bbc.co.uk Published On :: Fri, 08 May 2020 11:26:57 GMT A slickly-produced "documentary" has exploded across social media, peddling medical misinformation. Full Article
con Coronavirus: Concerns for wellbeing of babies born in lockdown By www.bbc.co.uk Published On :: Thu, 07 May 2020 01:16:50 GMT New mothers are missing out on support for their babies amidst lockdown restrictions. Full Article
con Building Great User Experiences with Concurrent Mode and Suspense By reactjs.org Published On :: Wed, 06 Nov 2019 00:00:00 GMT At React Conf 2019 we announced an experimental release of React that supports Concurrent Mode and Suspense. In this post we’ll introduce best practices for using them that we’ve identified through the process of building the new facebook.com. This post will be most relevant to people working on data fetching libraries for React. It shows how to best integrate them with Concurrent Mode and Suspense. The patterns introduced here are based on Relay — our library for building data-driven UIs with GraphQL. However, the ideas in this post apply to other GraphQL clients as well as libraries using REST or other approaches. This post is aimed at library authors. If you’re primarily an application developer, you might still find some interesting ideas here, but don’t feel like you have to read it in its entirety. Talk Videos If you prefer to watch videos, some of the ideas from this blog post have been referenced in several React Conf 2019 presentations: Data Fetching with Suspense in Relay by Joe Savona Building the New Facebook with React and Relay by Ashley Watkins React Conf Keynote by Yuzhi Zheng This post presents a deeper dive on implementing a data fetching library with Suspense. Putting User Experience First The React team and community has long placed a deserved emphasis on developer experience: ensuring that React has good error messages, focusing on components as a way to reason locally about app behavior, crafting APIs that are predictable and encourage correct usage by design, etc. But we haven’t provided enough guidance on the best ways to achieve a great user experience in large apps. For example, the React team has focused on framework performance and providing tools for developers to debug and tune application performance (e.g. React.memo). But we haven’t been as opinionated about the high-level patterns that make the difference between fast, fluid apps and slow, janky ones. We always want to ensure that React remains approachable to new users and supports a variety of use-cases — not every app has to be “blazing” fast. But as a community we can and should aim high. We should make it as easy as possible to build apps that start fast and stay fast, even as they grow in complexity, for users on varying devices and networks around the world. Concurrent Mode and Suspense are experimental features that can help developers achieve this goal. We first introduced them at JSConf Iceland in 2018, intentionally sharing details very early to give the community time to digest the new concepts and to set the stage for subsequent changes. Since then we’ve completed related work, such as the new Context API and the introduction of Hooks, which are designed in part to help developers naturally write code that is more compatible with Concurrent Mode. But we didn’t want to implement these features and release them without validating that they work. So over the past year, the React, Relay, web infrastructure, and product teams at Facebook have all collaborated closely to build a new version of facebook.com that deeply integrates Concurrent Mode and Suspense to create an experience with a more fluid and app-like feel. Thanks to this project, we’re more confident than ever that Concurrent Mode and Suspense can make it easier to deliver great, fast user experiences. But doing so requires rethinking how we approach loading code and data for our apps. Effectively all of the data-fetching on the new facebook.com is powered by Relay Hooks — new Hooks-based Relay APIs that integrate with Concurrent Mode and Suspense out of the box. Relay Hooks — and GraphQL — won’t be for everyone, and that’s ok! Through our work on these APIs we’ve identified a set of more general patterns for using Suspense. Even if Relay isn’t the right fit for you, we think the key patterns we’ve introduced with Relay Hooks can be adapted to other frameworks. Best Practices for Suspense It’s tempting to focus only on the total startup time for an app — but it turns out that users’ perception of performance is determined by more than the absolute loading time. For example, when comparing two apps with the same absolute startup time, our research shows that users will generally perceive the one with fewer intermediate loading states and fewer layout changes as having loaded faster. Suspense is a powerful tool for carefully orchestrating an elegant loading sequence with a few, well-defined states that progressively reveal content. But improving perceived performance only goes so far — our apps still shouldn’t take forever to fetch all of their code, data, images, and other assets. The traditional approach to loading data in React apps involves what we refer to as “fetch-on-render”. First we render a component with a spinner, then fetch data on mount (componentDidMount or useEffect), and finally update to render the resulting data. It’s certainly possible to use this pattern with Suspense: instead of initially rendering a placeholder itself, a component can “suspend” — indicate to React that it isn’t ready yet. This will tell React to find the nearest ancestor <Suspense fallback={<Placeholder/>}>, and render its fallback instead. If you watched earlier Suspense demos this example may feel familiar — it’s how we originally imagined using Suspense for data-fetching. It turns out that this approach has some limitations. Consider a page that shows a social media post by a user, along with comments on that post. That might be structured as a <Post> component that renders both the post body and a <CommentList> to show the comments. Using the fetch-on-render approach described above to implement this could cause sequential round trips (sometimes referred to as a “waterfall”). First the data for the <Post> component would be fetched and then the data for <CommentList> would be fetched, increasing the time it takes to show the full page. There’s also another often-overlooked downside to this approach. If <Post> eagerly requires (or imports) the <CommentList> component, our app will have to wait to show the post body while the code for the comments is downloading. We could lazily load <CommentList>, but then that would delay fetching comments data and increase the time to show the full page. How do we resolve this problem without compromising on the user experience? Render As You Fetch The fetch-on-render approach is widely used by React apps today and can certainly be used to create great apps. But can we do even better? Let’s step back and consider our goal. In the above <Post> example, we’d ideally show the more important content — the post body — as early as possible, without negatively impacting the time to show the full page (including comments). Let’s consider the key constraints on any solution and look at how we can achieve them: Showing the more important content (the post body) as early as possible means that we need to load the code and data for the view incrementally. We don’t want to block showing the post body on the code for <CommentList> being downloaded, for example. At the same time we don’t want to increase the time to show the full page including comments. So we need to start loading the code and data for the comments as soon as possible, ideally in parallel with loading the post body. This might sound difficult to achieve — but these constraints are actually incredibly helpful. They rule out a large number of approaches and spell out a solution for us. This brings us to the key patterns we’ve implemented in Relay Hooks, and that can be adapted to other data-fetching libraries. We’ll look at each one in turn and then see how they add up to achieve our goal of fast, delightful loading experiences: Parallel data and view trees Fetch in event handlers Load data incrementally Treat code like data Parallel Data and View Trees One of the most appealing things about the fetch-on-render pattern is that it colocates what data a component needs with how to render that data. This colocation is great — an example of how it makes sense to group code by concerns and not by technologies. All the issues we saw above were due to when we fetch data in this approach: upon rendering. We need to be able to fetch data before we’ve rendered the component. The only way to achieve that is by extracting the data dependencies into parallel data and view trees. Here’s how that works in Relay Hooks. Continuing our example of a social media post with body and comments, here’s how we might define it with Relay Hooks: // Post.js function Post(props) { // Given a reference to some post - `props.post` - *what* data // do we need about that post? const postData = useFragment(graphql` fragment PostData on Post @refetchable(queryName: "PostQuery") { author title # ... more fields ... } `, props.post); // Now that we have the data, how do we render it? return ( <div> <h1>{postData.title}</h1> <h2>by {postData.author}</h2> {/* more fields */} </div> ); } Although the GraphQL is written within the component, Relay has a build step (Relay Compiler) that extracts these data-dependencies into separate files and aggregates the GraphQL for each view into a single query. So we get the benefit of colocating concerns, while at runtime having parallel data and view trees. Other frameworks could achieve a similar effect by allowing developers to define data-fetching logic in a sibling file (maybe Post.data.js), or perhaps integrate with a bundler to allow defining data dependencies with UI code and automatically extracting it, similar to Relay Compiler. The key is that regardless of the technology we’re using to load our data — GraphQL, REST, etc — we can separate what data to load from how and when to actually load it. But once we do that, how and when do we fetch our data? Fetch in Event Handlers Imagine that we’re about to navigate from a list of a user’s posts to the page for a specific post. We’ll need to download the code for that page — Post.js — and also fetch its data. Waiting until we render the component has problems as we saw above. The key is to start fetching code and data for a new view in the same event handler that triggers showing that view. We can either fetch the data within our router — if our router supports preloading data for routes — or in the click event on the link that triggered the navigation. It turns out that the React Router folks are already hard at work on building APIs to support preloading data for routes. But other routing frameworks can implement this idea too. Conceptually, we want every route definition to include two things: what component to render and what data to preload, as a function of the route/url params. Here’s what such a route definition might look like. This example is loosely inspired by React Router’s route definitions and is primarily intended to demonstrate the concept, not a specific API: // PostRoute.js (GraphQL version) // Relay generated query for loading Post data import PostQuery from './__generated__/PostQuery.graphql'; const PostRoute = { // a matching expression for which paths to handle path: '/post/:id', // what component to render for this route component: React.lazy(() => import('./Post')), // data to load for this route, as function of the route // parameters prepare: routeParams => { // Relay extracts queries from components, allowing us to reference // the data dependencies -- data tree -- from outside. const postData = preloadQuery(PostQuery, { postId: routeParams.id, }); return { postData }; }, }; export default PostRoute; Given such a definition, a router can: Match a URL to a route definition. Call the prepare() function to start loading that route’s data. Note that prepare() is synchronous — we don’t wait for the data to be ready, since we want to start rendering more important parts of the view (like the post body) as quickly as possible. Pass the preloaded data to the component. If the component is ready — the React.lazy dynamic import has completed — the component will render and try to access its data. If not, React.lazy will suspend until the code is ready. This approach can be generalized to other data-fetching solutions. An app that uses REST might define a route like this: // PostRoute.js (REST version) // Manually written logic for loading the data for the component import PostData from './Post.data'; const PostRoute = { // a matching expression for which paths to handle path: '/post/:id', // what component to render for this route component: React.lazy(() => import('./Post')), // data to load for this route, as function of the route // parameters prepare: routeParams => { const postData = preloadRestEndpoint( PostData.endpointUrl, { postId: routeParams.id, }, ); return { postData }; }, }; export default PostRoute; This same approach can be employed not just for routing, but in other places where we show content lazily or based on user interaction. For example, a tab component could eagerly load the first tab’s code and data, and then use the same pattern as above to load the code and data for other tabs in the tab-change event handler. A component that displays a modal could preload the code and data for the modal in the click handler that triggers opening the modal, and so on. Once we’ve implemented the ability to start loading code and data for a view independently, we have the option to go one step further. Consider a <Link to={path} /> component that links to a route. If the user hovers over that link, there’s a reasonable chance they’ll click it. And if they press the mouse down, there’s an even better chance that they’ll complete the click. If we can load code and data for a view after the user clicks, we can also start that work before they click, getting a head start on preparing the view. Best of all, we can centralize that logic in a few key places — a router or core UI components — and get any performance benefits automatically throughout our app. Of course preloading isn’t always beneficial. It’s something an application would tune based on the user’s device or network speed to avoid eating up user’s data plans. But the pattern here makes it easier to centralize the implementation of preloading and the decision of whether to enable it or not. Load Data Incrementally The above patterns — parallel data/view trees and fetching in event handlers — let us start loading all the data for a view earlier. But we still want to be able to show more important parts of the view without waiting for all of our data. At Facebook we’ve implemented support for this in GraphQL and Relay in the form of some new GraphQL directives (annotations that affect how/when data is delivered, but not what data). These new directives, called @defer and @stream, allow us to retrieve data incrementally. For example, consider our <Post> component from above. We want to show the body without waiting for the comments to be ready. We can achieve this with @defer and <Suspense>: // Post.js function Post(props) { const postData = useFragment(graphql` fragment PostData on Post { author title # fetch data for the comments, but don't block on it being ready ...CommentList @defer } `, props.post); return ( <div> <h1>{postData.title}</h1> <h2>by {postData.author}</h2> {/* @defer pairs naturally with <Suspense> to make the UI non-blocking too */} <Suspense fallback={<Spinner/>}> <CommentList post={postData} /> </Suspense> </div> ); } Here, our GraphQL server will stream back the results, first returning the author and title fields and then returning the comment data when it’s ready. We wrap <CommentList> in a <Suspense> boundary so that we can render the post body before <CommentList> and its data are ready. This same pattern can be applied to other frameworks as well. For example, apps that call a REST API might make parallel requests to fetch the body and comments data for a post to avoid blocking on all the data being ready. Treat Code Like Data But there’s one thing that’s still missing. We’ve shown how to preload data for a route — but what about code? The example above cheated a bit and used React.lazy. However, React.lazy is, as the name implies, lazy. It won’t start downloading code until the lazy component is actually rendered — it’s “fetch-on-render” for code! To solve this, the React team is considering APIs that would allow bundle splitting and eager preloading for code as well. That would allow a user to pass some form of lazy component to a router, and for the router to trigger loading the code alongside its data as early as possible. Putting It All Together To recap, achieving a great loading experience means that we need to start loading code and data as early as possible, but without waiting for all of it to be ready. Parallel data and view trees allow us to load the data for a view in parallel with loading the view (code) itself. Fetching in an event handler means we can start loading data as early as possible, and even optimistically preload a view when we have enough confidence that a user will navigate to it. Loading data incrementally allows us to load important data earlier without delaying the fetching of less important data. And treating code as data — and preloading it with similar APIs — allows us to load it earlier too. Using These Patterns These patterns aren’t just ideas — we’ve implemented them in Relay Hooks and are using them in production throughout the new facebook.com (which is currently in beta testing). If you’re interested in using or learning more about these patterns, here are some resources: The React Concurrent docs explore how to use Concurrent Mode and Suspense and go into more detail about many of these patterns. It’s a great resource to learn more about the APIs and use-cases they support. The experimental release of Relay Hooks implements the patterns described here. We’ve implemented two similar example apps that demonstrate these concepts: The Relay Hooks example app uses GitHub’s public GraphQL API to implement a simple issue tracker app. It includes nested route support with code and data preloading. The code is fully commented — we encourage cloning the repo, running the app locally, and exploring how it works. We also have a non-GraphQL version of the app that demonstrates how these concepts can be applied to other data-fetching libraries. While the APIs around Concurrent Mode and Suspense are still experimental, we’re confident that the ideas in this post are proven by practice. However, we understand that Relay and GraphQL aren’t the right fit for everyone. That’s ok! We’re actively exploring how to generalize these patterns to approaches such as REST, and are exploring ideas for a more generic (ie non-GraphQL) API for composing a tree of data dependencies. In the meantime, we’re excited to see what new libraries will emerge that implement the patterns described in this post to make it easier to build great, fast user experiences. Full Article
con A transpiler for futuristic Ruby, and the RailsConf 2020 videos By rubyweekly.com Published On :: Thu, 7 May 2020 00:00:00 +0000 #500 — May 7, 2020 Read on the Web ???? Welcome to issue 500! A bit of an arbitrary milestone but thanks to you all :-) Ruby Weekly Ruby Next: Make All Rubies Quack Alike — Ruby Next is a Ruby-to-Ruby transpiler that allows you to use the latest features of Ruby in previous versions without monkey patching or refinements. Could this be how experimental features are released going forward? Vladimir Dementyev Ruby 3 'Guilds' Proposal Now Called Ractor — This documentation is in Japanese (though the source code examples are easy to follow) but the news is that the new, proposed concurrency mechanism for Ruby 3 called Guilds (explained here) has been renamed to Ractor (as in ‘Ruby actors’, Ruby’s take on the actor model). Koichi Sasada Don’t Do Auth From Scratch. Focus On Your App — Spend less time on authentication and authorization and more time developing your awesome app. Auth built for <devs>. Download our community edition for free. FusionAuth sponsor Take the 2020 Ruby on Rails Survey — This is the sixth outing for Planet Argon’s survey which began in 2009. We try and support it each time as the results always make for interesting reading (see 2018’s results). Participate and become data ???? Planet Argon Team ???? RailsConf 2020 Videos If you recall, RailsConf 2020 was cancelled in its in-person form to be replaced by a 'couch edition'. This has been taking place and the videos have been released! Here are some of the highlights: DHH's keynote which takes the form of a chat between him and Evan Phoenix. Eileen Uchitelle digs deep on Rails' multi database support. (We interviewed her a few months ago too.) Building a Rails Controller From Scratch by Alex Kitchens digs into the interesting world of reimplementing ActionController with something of your own creation. Krystan HuffMenne takes us on a journey into the lifecycle of a response in Rails. It's worth understanding this stuff. Learn about using Sorbet to do static type checking in Rails with Hung Harry Doan. Aaron 'tenderlove' Patterson (who has just moved to Shopify) has a talk on, well, lots of bits and pieces in his usual style. If you want the full collection, here's the YouTube playlist. Alt::BrightonRuby: A Slightly Odd, Quasi-Conference for Strange Times — Alt::BrightonRuby is not happening in-person this year. Instead, you can buy the recorded talks, get a _why book, and get some podcasts with the speakers. Alt::BrightonRuby ???? Jobs Find a Job Through Vettery — Vettery specializes in tech roles and is completely free for job seekers. Create a profile to get started. Vettery Security Engineer (Remote) — Are you an engineer with experience in Rails and/or Go? Join our team and help secure our apps and cloud infrastructure. Shogun ℹ️ Interested in running a job listing in Ruby Weekly? There's more info here. ???? Articles & Tutorials ▶ How To Begin Contributing to a Gem — If you’ve been using a library for a while and you want to contribute back, how do you get started? A 12 minute introduction here. Drifting Ruby How to Set Up Factory Bot on a Fresh Rails Project — Factory Bot is a library for setting up Ruby objects as test data – an alternative to fixtures, essentially. Jason Swett Using Postgres's DISTINCT ON to Avoid an N+1 Query — “Recently I fixed a tricky N+1 query and thought I should write it up..” John Nunemaker Need to Upgrade Rails? Don’t Know How Long It Will Take? — Get an action plan for your Rails upgrade and an in-depth report about your technical debt and outdated dependencies ????. FastRuby.io | Rails Upgrade Services sponsor 5 Uses for 'Splats' — 5 different ways to leverage Ruby’s splat (*) operator. Jason Dinsmore Running Multiple Instances of Webpacker — If you’re working on multiple Rails apps at once, changing where Rails gets served up is easy by configuring the port, but what about Webpacker? That requires another tweak. Scott Watermasysk Performing Asynchronous HTTP requests in Rails — How to update parts an app’s pages with asynchronous HTTP requests. A step-by-step how-to with JavaScript’s fetch() function, and Rails native server-side partial rendering. Remi Mercier How to Use AWS SimpleDB from Ruby — If you haven’t heard of AWS SimpleDB, you wouldn’t be alone as it’s not very popular, but it’s a pretty simple and cheap way to store simple documents in the cloud. Peter Cooper What's The Difference Between Monitoring Webhooks and Background Jobs AppSignal sponsor Ways to Reduce Your Heroku App's Slug Size — You might be surprised Heroku didn’t already do some of this for you. Rohit Kumar A Chat with Thibaut Barrère — If you missed our interview with Thibaut Barrere (Rubyist, and creator of the Kiba ETL framework) in last week’s issue, you can catch up here. Glenn Goodrich ???? Code and Tools Rodauth 2.0: Ruby's 'Most Advanced' Authentication Framework — A authentication framework that can work in any Rack-based webapp. Built using Roda and Sequel, Rodauth can be used with other frameworks and database libraries if you wish. Why’s it so advanced? More info on that here. Jeremy Evans RubyGems 3.1.3 Released — Lots of little bug fixes and tweaks. RubyGems Blog Business: Business Day Calculations for Ruby — Define your working days and holidays and then you can do ‘business day arithmetic’ (for example, what’s in 5 working days after now taking holidays and weekends into account?) GoCardless Lockbox: Modern Encryption for Rails Andrew Kane split: The Rack Based A/B 'Split' Testing Framework — A mature framework with robust configuration and multiple options for determining the winning option. Split P.S. In last week's issue, one of the links to our sponsors was incorrect and some readers emailed us to say they really wanted to read the promised article, Let’s Explore Big-O Notation with Ruby, so here it is. Apologies for any inconvenience. Full Article
con Confessions of a call-centre scammer By www.bbc.co.uk Published On :: Sun, 08 Mar 2020 00:09:20 GMT How Indian call-centre scammers justified tricking Western victims out of hard-earned money. Full Article
con 'How do I convince the Home Office I'm a lesbian?' By www.bbc.co.uk Published On :: Wed, 26 Feb 2020 00:32:26 GMT More than 1,500 people claim asylum in the UK each year, claiming that they are persecuted for being gay. But it's not an easy thing to prove. Full Article
con Stop and search: the controversial police power By www.bbc.co.uk Published On :: Sat, 07 Dec 2019 09:04:42 GMT Reporter Aaron Roach Bridgeman speaks to suspects, police and campaigners. Full Article
con Coronavirus will have "significant impact" on economy By www.bbc.co.uk Published On :: Tue, 14 Apr 2020 12:44:47 GMT Chancellor Rishi Sunak has told reporters that Covid-19 will cause "hardship ahead". Full Article
con Chancellor: 'Tough times' as coronavirus affects UK economy By www.bbc.co.uk Published On :: Mon, 27 Apr 2020 15:48:21 GMT The chancellor says there have already been "tough times" as the coronavirus outbreak has an impact on the UK and warns "there will be more to come". Full Article
con Coronavirus: Three continents, four lives, one day By www.bbc.co.uk Published On :: Thu, 30 Apr 2020 23:10:26 GMT The stories of people who died on one day, from an exile who returned home to a disaster survivor. Full Article
con Javier Ceppi, Praful Patel, and Jaime Yarza speak to the media during a press conference By www.fifa.com Published On :: Thu, 26 Oct 2017 14:03:00 GMT KOLKATA, INDIA - OCTOBER 26: L-R: Javier Ceppi, Tournament Director at LOC FIFA U-17 World Cup India 2017, Patel Praful and Head of FIFA Tournaments, Jaime Yarza speak to the media during a press conference ahead of the FIFA U-17 World Cup India 2017 tournament at Vivekananda Yuba Bharati Krirangan on October 26, 2017 in Kolkata, India. (Photo by Tom Dulat - FIFA/FIFA via Getty Images) Full Article Area=Tournament Section=Competition Kind=Photo Tournament=FIFA U-17 World Cup India 2017
con Javier Ceppi, Praful Patel and Jaime Yarza speak during a India 2017 press conference By www.fifa.com Published On :: Thu, 26 Oct 2017 14:07:00 GMT KOLKATA, INDIA - OCTOBER 26: L-R: Javier Ceppi, Tournament Director at LOC FIFA U-17 World Cup India 2017, Patel Praful and Head of FIFA Tournaments, Jaime Yarza speak to the media during a press conference ahead of the FIFA U-17 World Cup India 2017 tournament at Vivekananda Yuba Bharati Krirangan on October 26, 2017 in Kolkata, India. (Photo by Tom Dulat - FIFA/FIFA via Getty Images) Full Article Area=Tournament Section=Competition Kind=Photo Tournament=FIFA U-17 World Cup India 2017
con Praful Patel and Jaime Yarza speak to the media during an India 2017 press conference By www.fifa.com Published On :: Thu, 26 Oct 2017 14:11:00 GMT KOLKATA, INDIA - OCTOBER 26: Patel Praful and Head of FIFA Tournaments, Jaime Yarza speak to the media during a press conference ahead of the FIFA U-17 World Cup India 2017 tournament at Vivekananda Yuba Bharati Krirangan on October 26, 2017 in Kolkata, India. (Photo by Tom Dulat - FIFA/FIFA via Getty Images) Full Article Area=Tournament Section=Competition Kind=Photo Tournament=FIFA U-17 World Cup India 2017
con Yuri Alberto (R) of Brazil celebrates scoring his sides second goal with Rodrigo Guth By www.fifa.com Published On :: Sat, 28 Oct 2017 14:40:00 GMT Yuri Alberto (R) of Brazil celebrates scoring his sides second goal with Rodrigo Guth during the FIFA U-17 World Cup India 2017 3rd Place match between Brazil and Mali at Vivekananda Yuba Bharati Krirangan on October 28, 2017 in Kolkata, India. (Photo by Tom Dulat - FIFA/FIFA via Getty Images) Full Article Area=Tournament Section=Competition Kind=Photo Tournament=FIFA U-17 World Cup India 2017
con Yuri Alberto of Brazil scores his side's second goal By www.fifa.com Published On :: Sat, 28 Oct 2017 14:42:00 GMT KOLKATA, INDIA - OCTOBER 28: Yuri Alberto of Brazil scores his side's second goal during the FIFA U-17 World Cup India 2017 3rd Place match between Brazil and Mali at Vivekananda Yuba Bharati Krirangan on October 28, 2017 in Kolkata, India. (Photo by Tom Dulat - FIFA/FIFA via Getty Images) Full Article Area=Tournament Section=Competition Kind=Photo Tournament=FIFA U-17 World Cup India 2017
con Yuri Alberto of Brazil celebrates scoring his side's second goal By www.fifa.com Published On :: Sat, 28 Oct 2017 14:45:00 GMT Yuri Alberto of Brazil celebrates scoring his side's second goal during the FIFA U-17 World Cup India 2017 3rd Place match between Brazil and Mali at Vivekananda Yuba Bharati Krirangan on October 28, 2017 in Kolkata, India. (Photo by Tom Dulat - FIFA/FIFA via Getty Images) Full Article Area=Tournament Section=Competition Kind=Photo Tournament=FIFA U-17 World Cup India 2017
con Yuri Alberto of Brazil celebrates scoring his sides second goal By www.fifa.com Published On :: Sat, 28 Oct 2017 15:02:00 GMT KOLKATA, INDIA - OCTOBER 28: Yuri Alberto (C) of Brazil celebrates scoring his sides second goal with Rodrigo Guth (L) during the FIFA U-17 World Cup India 2017 3rd Place match between Brazil and Mali at Vivekananda Yuba Bharati Krirangan on October 28, 2017 in Kolkata, India. (Photo by Tom Dulat - FIFA/FIFA via Getty Images) Full Article Area=Tournament Section=Competition Kind=Photo Tournament=FIFA U-17 World Cup India 2017
con Sergio Gomez of Spain celebrates scoring their second goal By www.fifa.com Published On :: Sat, 28 Oct 2017 16:26:00 GMT Sergio Gomez of Spain celebrates scoring their second goal during 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 Buda Mendes - FIFA/FIFA via Getty Images) Full Article Area=Tournament Section=Competition Kind=Photo Tournament=FIFA U-17 World Cup India 2017
con Sergio Gomez of Spain celebrates scoring their second goal By www.fifa.com Published On :: Sat, 28 Oct 2017 16:30:00 GMT KOLKATA, INDIA - OCTOBER 28: Sergio Gomez of Spain celebrates scoring their second goal during 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 Buda Mendes - FIFA/FIFA via Getty Images) Full Article Area=Tournament Section=Competition Kind=Photo Tournament=FIFA U-17 World Cup India 2017
con Sergio Gomez of Spain celebrates scoring their second goal By www.fifa.com Published On :: Sat, 28 Oct 2017 16:30:00 GMT KOLKATA, INDIA - OCTOBER 28: Sergio Gomez of Spain celebrates scoring their second goal during 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 Buda Mendes - FIFA/FIFA via Getty Images) Full Article Area=Tournament Section=Competition Kind=Photo Tournament=FIFA U-17 World Cup India 2017
con Sergio Gomez of Spain celebrates scoring their second goal By www.fifa.com Published On :: Sat, 28 Oct 2017 16:31:00 GMT KOLKATA, INDIA - OCTOBER 28: Sergio Gomez of Spain celebrates scoring their second goal during 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 Buda Mendes - FIFA/FIFA via Getty Images) Full Article Area=Tournament Section=Competition Kind=Photo Tournament=FIFA U-17 World Cup India 2017
con Sergio Gomez of Spain scores their second goal By www.fifa.com Published On :: Sat, 28 Oct 2017 16:32:00 GMT KOLKATA, INDIA - OCTOBER 28: Sergio Gomez of Spain scores their second goal during 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 Buda Mendes - FIFA/FIFA via Getty Images) Full Article Area=Tournament Section=Competition Kind=Photo Tournament=FIFA U-17 World Cup India 2017