Feed aggregator

Uber CEO Travis Kalanick Has Resigned Due To Investor Pressure

Slashdot -

Travis Kalanick has resigned as chief executive of Uber after pressure from investors, ending eight years of leading the ride-hailing company that has expanded round the globe but became mired in controversies. From a report: Kalanick had become a giant liability to the car-hailing company for a growing number of reasons, from sketchy business practices to troubling lawsuits to a basic management situation that was akin to really toxic goat rodeo. Thus, he had to go, even though some sources said he had the voting power to stay. But big investors also have leverage and a big enough group of them joined to use it. Those investors include Benchmark, Fidelity and Menlo Ventures, all of whom sent Kalanick a joint letter called "Moving Uber Forward" on Tuesday afternoon. Interestingly, Google Ventures was not among the group, even though its parent company Alphabet is now in a major lawsuit with Uber over the alleged theft of self-driving car technology from its Waymo unit.

Read more of this story at Slashdot.

Trump Promises a Federal Technology Overhaul To Save $1 Trillion

Slashdot -

New submitter threc shares a report from MIT Technology Review: The tech world descended on Washington, D.C. yesterday to attend a tech summit at the White House. According to MIT Technology Review associate editor Jamie Condliffe: "Trump suggested he might relax his stance on immigration as a way to get tech leaders to help his cause. 'You can get the people you want,' he told the assembled CEOs. That sweetener may be a response to a very vocal backlash in the tech world against the administration's recent travel bans. Trump may hope that his business-friendly stance will offer enough allure: if tech giants scratch his back, he may later deign to scratch theirs." The report continues: "'Our goal is to lead a sweeping transformation of the federal government's technology that will deliver dramatically better services for citizens,' said Trump at the start of his meeting with the CEOs, according to the Washington Post. 'We're embracing big change, bold thinking, and outsider perspectives.' The headline announcement from the event was Trump's promise to overhaul creaking government computing infrastructure. According to Jared Kushner, the president's son-in-law and advisor, there's much to be done: federal agencies have over 6,000 data centers that could be consolidated, for instance, while the 10 oldest networks in use by the government are all at least 39 years old. The upgrade, said Trump, could save the country $1 trillion over the next 10 years."

Read more of this story at Slashdot.

CodeSOD: A Lazy Cat

The Daily WTF -

The innermost circle of Hell, as we all know, is trying to resolve printer driver issues for all eternity. Ben doesn’t work with the printers that we mere mortals deal with on a regular basis, though. He runs a printing press, three stories of spinning steel and plates and ink and rolls of paper that could crush a man.

Like most things, the press runs Linux- a highly customized, modified version of Linux. It’s a system that needs to be carefully configured, as “disaster recovery” has a slightly different meaning on this kind of heavy equipment. The documentation, while thorough and mostly clear, was obviously prepared by someone who speaks English as a second language. Thus, Ben wanted to check the shell scripts to better understand what they did.

The first thing he caught was that each script started with variable declarations like this:

GREP="/bin/grep" CAT="/bin/cat"

In some cases, there were hundreds of such variable declarations, because presumably, someone doesn’t trust the path variable.

Now, it’s funny we bring up cat, as a common need in these scripts is to send a file to STDOUT. You’d think that cat is just the tool for the job, but you’d be mistaken. You need a shell function called cat_file:

# function send an file to STDOUT # # Usage: cat_file <Filename> # function cat_file () { local temp local error error=0 if [ $# -ne 1 ]; then temp="" error=1 else if [ -e ${1} ]; then temp="`${CAT} ${1}`" else temp="" error=1 fi fi echo "${temp}" return $((error)) }

This ‘belt and suspenders’ around cat ensures that you called it with parameters, that the parameters exist, and failing that, it… well… fails. Much like cat would, naturally. This gives you the great advantage, however, that instead of writing code like this:

dev="`cat /proc/dev/net | grep eth`"

You can instead write code like this:

dev="`cat_file /proc/dev/net | ${GREP} eth`"

Much better, yes?

hljs.initHighlightingOnLoad(); [Advertisement] BuildMaster integrates with an ever-growing list of tools to automate and facilitate everything from continuous integration to database change scripts to production deployments. Interested? Learn more about BuildMaster!

Star Wars' Han Solo Spinoff Directors Quit In the Middle of Shooting

Slashdot -

hondo77 writes: Due to "different creative visions," Phil Lord and Christopher Miller are no longer directing the Han Solo movie, despite filming having started in January. The film is still scheduled to be released in May 2018. "Phil Lord and Christopher Miller are talented filmmakers who have assembled an incredible cast and crew, but it's become clear that we had different creative visions on this film, and we've decided to part ways. A new director will be announced soon," Kathleen Kennedy, president of Lucasfilm, said in a statement. The Han Solo spinoff is set to star Alden Ehrenreich as a young Han Solo, with Woody Harrelson as his mentor, Donald Glover as a young Lando Calrissian, and unspecified roles for Emilia Clarke and Thandia Newton.

Read more of this story at Slashdot.

Flocon de toile | Freelance Drupal: Do I have to wait for Drupal 9 for my web project?

Drupal Planet -

In a previous post, we saw the Drupal 8's new policies for versioning, support and maintenance for its minor and major versions. This policy has evolved somewhat since the last DrupalCon Baltimore conference in April 2017. And this evolution of Drupal's strategy deserves a little attention because it can bring new light to those who hesitate to migrate their site on Drupal 8. Or those who are wondering about the relevance of launching their web project on Drupal 8.

Dropsolid: Drupal 8 and React Native

Drupal Planet -

21 Jun Drupal 8 and React Native Niels A Drupal 8 Tech Drupal

One day you might wake up with the next big idea that will shake the world in the most ungentle way. You decide to build an app, because you’ll have full access to all features of the device that you want your solution to work on. But then it dawns on you: you will actually need to build multiple apps in completely different languages while finding a way for them to serve the same content...

Then you start to realise that you won’t be able to step into the shoes of the greats, because web technology is holding you back. Fortunately, Drupal 8 and React Native are here to save your day - and your dream!

In this blog post you'll read how you can leverage Drupal 8 to serve as the back-end for your React Native app. 

First, however, a quick definition of what these technologies are:

  • Drupal is an open source content management system based on PHP.
  • React Native is a framework to build native apps using JavaScript and React.

If you want to read more about Drupal 8 or React Native, you're invited to check the sources at the bottom of this article.
 

Why React Native?

There are a myriad of front-end technologies available to you these days. The most popular ones are Angular and React. Both technologies allow you to build apps, but there is a big difference in how the apps will be built.

The advantage of employing React Native is that it lets you build an app using JavaScript, while converting the JavaScript into native code. In contrast, Angular or Ionic allow you to create a hybrid app, which basically is a website that gets embedded in a web view. Although the benefit here is that you're able to access the native features of a device.

In this case, we prefer React Native, because we want to build iOS and Android applications that run natively.
 

Headless Drupal

One of the big buzzwords that's been doing the rounds in the Drupal community lately is 'Headless'. A headless Drupal is actually a Drupal application where the front-end is not served by Drupal, but by a different technology.

You still get the benefits of a top notch and extremely flexible content management system, but you also get the benefits of your chosen front-end technology.

In this example, you'll discover how to set up a native iOS and Android application that gets its data from a Drupal website. To access the information, users will have to log in to the app, which allows the app to serve content tailored to the preferences of the user. Crucial in the current individualized digital world.

 

So this already brings us to our first hurdle. Because we are using a native application, authenticating users through cookies or sessions is not possible. So we are going to show you how to prepare your React Native application and your Drupal site to accept authenticated requests.
 

The architecture

The architecture consists of a vanilla Drupal 8 version and a React Native project with Redux.

The implemented flow is as following:

  1. A user gets the login screen presented on the app.
  2. The user fills in his credentials in the form
  3. The app posts the credentials to the endpoint in Drupal
  4. Drupal validates the credentials and logs the user in
  5. Drupal responds with a token based on the current user
  6. The app stores the token for future use
  7. The app now uses the token for all other requests the app makes to the Drupal REST API.
     
Creating an endpoint in Drupal

First we had to choose our authentication method. In this example, we opted to authenticate using a JWT or JSON web token, because there already is a great contributed module available for it on Drupal.org (https://www.drupal.org/project/jwt).

This module provides an authentication service that you can use with the REST module that is now in Drupal 8 core. This authentication service will read the token that is passed in the headers of the request and will determine the current user from it. All subsequent functionality in Drupal will then use that user to determine if it has permission to access the requested resources. This authentication service works for all subsequent requests, but not for the original request to get the JWT.

The original endpoint the JWT module provides, already expects the user to be logged in before it can serve the token. You could use the ready available basic authentication service, but we preferred to build our own as an example.
 

Authentication with JSON post

Instead of passing along the username and password in the headers of the request like the basic authentication service expects, we will send the username and password in the body of our request formatted as JSON.

Our authentication class implements the AuthenticationProviderInterface and is announced in json_web_token.services.yml as follows:

services: authentication.json_web_token: class: Drupal\json_web_token\Authentication\Provider\JsonAuthenticationProvider arguments: [[email protected]', [email protected]', [email protected]', [email protected]'] tags: - { name: authentication_provider, provider_id: 'json_authentication_provider', priority: 100 }

The interface states that we have to implement two methods, applies and authenticate:

public function applies(Request $request) { $content = json_decode($request->getContent()); return isset($content->username, $content->password) && !empty($content->username) && !empty($content->password); }

Here we define when the authenticator should be applied. So our requirement is that the JSON that is posted contains a username and password. In all other cases this authenticator can be skipped. Every authenticator service you define will always be called by Drupal. Therefore, it is very important that you define your conditions for applying the authentication service.

public function authenticate(Request $request) { $flood_config = $this->configFactory->get('user.flood'); $content = json_decode($request->getContent()); $username = $content->username; $password = $content->password; // Flood protection: this is very similar to the user login form code. // @see \Drupal\user\Form\UserLoginForm::validateAuthentication() // Do not allow any login from the current user's IP if the limit has been // reached. Default is 50 failed attempts allowed in one hour. This is // independent of the per-user limit to catch attempts from one IP to log // in to many different user accounts. We have a reasonably high limit // since there may be only one apparent IP for all users at an institution. if ($this->flood->isAllowed(json_authentication_provider.failed_login_ip', $flood_config->get('ip_limit'), $flood_config->get('ip_window'))) { $accounts = $this->entityManager->getStorage('user') ->loadByProperties(array('name' => $username, 'status' => 1)); $account = reset($accounts); if ($account) { if ($flood_config->get('uid_only')) { // Register flood events based on the uid only, so they apply for any // IP address. This is the most secure option. $identifier = $account->id(); } else { // The default identifier is a combination of uid and IP address. This // is less secure but more resistant to denial-of-service attacks that // could lock out all users with public user names. $identifier = $account->id() . '-' . $request->getClientIP(); } // Don't allow login if the limit for this user has been reached. // Default is to allow 5 failed attempts every 6 hours. if ($this->flood->isAllowed('json_authentication_provider.failed_login_user', $flood_config->get('user_limit'), $flood_config->get('user_window'), $identifier)) { $uid = $this->userAuth->authenticate($username, $password); if ($uid) { $this->flood->clear('json_authentication_provider.failed_login_user', $identifier); return $this->entityManager->getStorage('user')->load($uid); } else { // Register a per-user failed login event. $this->flood->register('json_authentication_provider.failed_login_user', $flood_config->get('user_window'), $identifier); } } } } // Always register an IP-based failed login event. $this->flood->register('json_authentication_provider.failed_login_ip', $flood_config->get('ip_window')); return []; }

Here we mostly reimplemented the authentication functionality of the basic authorization service, with the difference that we read the data from a JSON format. This code logs the user into the Drupal application. All the extra code is flood protection.

Getting the JWT token

To get the JWT token we leveraged the REST module, and created a new rest resource plugin. We could have used the endpoint the module already provides, but we prefer to create all our endpoints with a version in it. We defined the plugin with the following annotation:

/** * Provides a resource to get a JWT token. * * @RestResource( * id = "token_rest_resource", * label = @Translation("Token rest resource"), * uri_paths = { * "canonical" = "/api/v1/token", * "https://www.drupal.org/link-relations/create" = "/api/v1/token" * } * ) */

The uri_paths are the most important part of this annotation. By setting both the canonical and the weird looking Drupal.org keys, we are able to set a fully custom path for our endpoint. That allows us to set the version of our API in the URI like this: /api/v1/token. This way we can easily roll out new versions of our API and clearly communicate about deprecating older versions.

Our class extends the ResourceBase class provided by the REST module. We only implemented a post method in our class, as we only want this endpoint to handle posts.

public function post() { if($this->currentUser->isAnonymous()){ $data['message'] = $this->t("Login failed. If you don't have an account register. If you forgot your credentials please reset your password."); }else{ $data['message'] = $this->t('Login succeeded'); $data['token'] = $this->generateToken(); } return new ResourceResponse($data); } /** * Generates a new JWT. */ protected function generateToken() { $token = new JsonWebToken(); $event = new JwtAuthIssuerEvent($token); $this->eventDispatcher->dispatch(JwtAuthIssuerEvents::GENERATE, $event); $jwt = $event->getToken(); return $this->transcoder->encode($jwt, array()); }

The generateToken method is a custom method where we leverage the JWT module to get us a token that we can return. 
 
We do not return a JSON object directly. We return a response in the form of an array. This is a very handy feature of the REST module, because you can choose the formats of your endpoint using the interface in Drupal. So you could easily return any other supported format like xml, JSON or hal_json. For this example, we chose hal_json. 

Drupal has some built-in security measures for non-safe methods. The only safe methods are HEAD, GET, OPTIONS and TRACE. We are implementing a non-safe method, so we have to take into account the following things:

  • When the app does a post it also needs to send a X-CSRF-Token in the header to avoid cross site request forgery. This token can be gotten from /session/token endpoint.
  • In case of a POST we also need to set the Content-type request header to “application/hal+json” on top of the query parameter “_format=hal_json”.
Putting things together

The only thing left is to enable our endpoint through the interface that the rest modules provides on /admin/config/services/rest.

As you can see, we’ve configured our token endpoint with our custom json_authentication_provider service and it is available in hal_json and json formats.

Calling the endpoint in our React Native application The login component

Our login component contain two input fields and a button.

this.setState({username})} placeholderTextColor="#FFF" style={styles.input} /> this.setState({password})} style={styles.input} /> this.login({ username: this.state.username, password: this.state.password })} > Get Started

When we click the login button we trigger the login action that is defined in our bindActions function.

function bindActions(dispatch) { return { login: (username, password) => dispatch(login(username, password)), }; }

The login action is defined in our auth.js:

import type { Action } from './types'; import axios from 'react-native-axios'; export const LOGIN = 'LOGIN'; export function login(username, password):Action { var jwt = ''; var endpoint = "https://example.com/api/v1/token?_format=hal_json"; return { type: LOGIN, payload: axios({ method: 'post', url: endpoint, data: { username: username, password: password, jwt: jwt, }, headers: { 'Content-Type':'application/hal+json', 'X-CSRF-Token':'V5GBdzli7IvPCuRjMqvlEC4CeSeXgufl4Jx3hngZYRw' } }) } }

In this example, we set the X-CSRF-token fixed to keep it simple. Normally you would get this first. We’ve also used the react-native-axios package to handle our post. This action will return a promise. If you use the promise and thunk middleware in your Redux Store you can set up your reducer in the following way.

import type { Action } from '../actions/types'; import { LOGIN_PENDING, LOGOUT} from '../actions/auth'; import { REHYDRATE } from 'redux-persist/constants'; export type State = { fetching: boolean, isLoggedIn: boolean, username:string, password:string, jwt: string, error: boolean, } const initialState = { fetching: false, username: '', password: '', error: null, } export default function (state:State = initialState, action:Action): State { switch (action.type) { case "LOGIN_PENDING": return {...state, fetching: true} case "LOGIN_REJECTED": return {...state, fetching: false, error: action.payload} case "LOGIN_FULFILLED": return {...state, fetching: false, isLoggedIn: true, jwt:action.payload.data.token} case "REHYDRATE": var incoming = action.payload.myReducer if (incoming) return {...state, ...incoming, specialKey: processSpecial(incoming.specialKey)} return state default: return state; } }

The reducer will be able to act on the different action types of the promise:

  • LOGIN_PENDING: Allows you to change the state of your component so you could implement a loader while it is trying to get the token.
  • LOGIN_REJECTED: When the attempt fails you could give a notification why it failed.
  • LOGIN_FULFILLED: When the attempt succeeds you have the token and set the state to logged in.

So once we had implemented all of this, we had an iOS and Android app that actually used a Drupal 8 site as it main content store.

Following this example, you should be all set up to deliver tailored content to your users on whichever platform they may be.

The purpose of this article was to demonstrate how effective Drupal 8 can be as a source for your upcoming iOS or Android application.
 

Useful resources:

 

More articles by our Dropsolid Technical Leads, strategist and marketeers? Check them out here.

Top UK Supermarket Laser Prints Labels On Avocados To Reduce Waste

Slashdot -

One of the largest British retailers in London, M&S, is opting in for laser-printed barcodes to reduce paper waste. "The labels, which are etched onto fruit's skins with lasers instead of stickers, will save 10 tons of paper and five tons of glue every year according to M&S," reports The Telegraph. The labels will be etched into the skins of avocados, but "could soon be introduced to other fruit and vegetables and adopted by other supermarkets which are looking for new waste reduction techniques." The labels themselves include the shop logo, best before date, country of origin and product code for entering at the till. What's more is that the avocado's skin is the only area impacted by the lasers -- none of the fruit gets damaged. Bruce66423 writes: Print the information usually on the packaging to reduce waste. Excellent idea -- although the Aldi (the radically cheap, all own brand chain) alternative is to leave avocados untouched and get the cashiers to enter the code.

Read more of this story at Slashdot.

Study Finds Yoga Works As Well As Physical Therapy For Back Pain

Slashdot -

An anonymous reader quotes a report from TIME: Another study is touting the benefits of yoga -- this time, for people with back problems. The new research put yoga head-to-head against physical therapy and found the two were equally good at restoring function and reducing the need for pain medication over time. In the new study, published in Annals of Internal Medicine, a group of 320 people did 12 weeks of yoga or physical therapy, or they simply received a book and newsletters about coping with back pain. People in the active treatment groups reported that their pain was less intense than it was at the start of the study and that they were able to physically move more. Some were also able to reduce, or even stop, their pain medications. Those improvements stuck around for a full year after the study was over. This research is unique because the people in the study were racially diverse, and most were from low-income families. Many had pre-existing medical conditions. That's important, say the researchers, because chronic back pain -- which affects about 10% of U.S. adults -- has a greater impact on minorities and people of lower socioeconomic status.

Read more of this story at Slashdot.

Sweden Passes Bill To Become Carbon Neutral By 2045

Slashdot -

Sweden is the first country to significantly upgrade its carbon ambitions since the Paris accord in 2015. The country has passed a new bill committing to cut its net carbon emissions to zero by 2045. New Scientist reports: The law was drawn up by a cross-party committee and passed with an overwhelming majority in parliament by 254 votes to 41. The legislation establishes an independent Climate Policy Council and requires an action plan to be updated every four years. Sweden had previously committed to becoming carbon neutral by 2050. It already gets 83 per cent of its electricity from nuclear energy and hydropower, having met its 2020 target of 50 per cent renewable energy eight years ahead of schedule. To achieve carbon-neutral status, the country will focus on reducing emissions from transport by increasing the use of biofuels and electric vehicles. It plans to cut domestic emissions by at least 85 per cent, and offset remaining emissions by planting trees or investing in projects abroad.

Read more of this story at Slashdot.

The Best And Worst ISP's According To Consumer Reports

Slashdot -

In the August 2017 issue of Consumer Reports magazine, the nonprofit organization ranked internet service providers based off customer satisfaction. According to the report, many consumers still don't like their broadband and television provider, and don't believe they receive a decent value for the high price they pay for service. DSLReports summarizes the findings: The report [...] names Chattanooga municipal broadband provider EPB as the most-liked ISP in the nation. EPB was followed by Google Fiber, Armstrong Cable, Consolidated Cable and RCN as the top-ranked ISPs in the nation. Google Fiber "was the clear winner for internet service," notes the report, "with the only high score for value." Google Fiber also received high marks for customer support and service. But large, incumbent ISPs continue to be aggressively disliked due to high prices and poor customer service, according to the report. Despite endless annual promises that customer service is the company's priority, Comcast ranked number 27 out of the 32 providers measured. The company's survey results were weighed down by low consumer marks for value, channel selection, technical support, customer service and free video on demand offerings. The least-liked ISPs in the nation, according to the report, are: Charter (Spectrum), Cable ONE, Atlantic broadband, Frontier Communications, and Mediacom. Not coincidentally, the two largest ISPs in that list just got done with massive mergers or acquisitions that resulted in higher prices and worse service than consumers saw previously.

Read more of this story at Slashdot.

Mozilla Launches Privacy-Minded 'Firefox Focus' Browser For Android

Slashdot -

An anonymous reader quotes a report from VentureBeat: Mozilla today launched a new browser for Android. In addition to Firefox, the company now also offers Firefox Focus, a browser dedicated to user privacy that by default blocks many web trackers, including analytics, social, and advertising. You can download the new app now from Google Play. Because Google isn't as strict as Apple, Android users can set Firefox Focus as their default browser. There are many use cases for wanting to browse the web without being tracked, but Mozilla offers a common example: reading articles via apps "like Facebook." On iOS, Firefox Focus is basically just a web view with tracking protection. On Android, Firefox Focus is the same, with a few additional features (which are still "under consideration" for iOS): Ad tracker counter -- Lists the number of ads that are blocked per site while using the app. Disable tracker blocker -- For sites that are not loading correctly, you can disable the tracker blocker to fix the issues. Notification reminder -- When Firefox Focus is running in the background, a notification will remind you so you can easily tap to erase your browsing history.

Read more of this story at Slashdot.

Opus 1.2 Released

Slashdot -

jmv writes: The Opus audio codec, used in WebRTC and now included in all major web browsers, gets another major upgrade with the release of version 1.2. This release brings quality improvements to both speech and music, while remaining fully compatible with RFC 6716. There are also optimizations, new options, as well as many bug fixes. This Opus 1.2 demo describes a few of the upgrades that users and implementers will care about the most. It includes audio samples comparing to previous versions of the codec, as well as speed comparisons for x86 and ARM.

Read more of this story at Slashdot.

It's Too Hot For Some Planes To Fly In Phoenix

Slashdot -

In Phoenix on Tuesday, temperatures were forecast to climb as high as 120 degrees Fahrenheit, causing more than 40 American Eagle regional flights out of Phoenix's international airport to be canceled. NPR reports: American Airlines said in a statement that the Bombardier CRJ aircraft used on some shorter routes have a maximum operating temperature of 118 degrees. For bigger jets, the threshold is higher. The carrier says that, for example, Airbus aircraft have a maximum operating temperature of 127 degrees and that for Boeing, it is 126 degrees. As USA Today reports: "Extreme heat affects a plane's ability to take off. Hot air is less dense than cold air, and the hotter the temperature, the more speed a plane needs to lift off. A runway might not be long enough to allow a plane to achieve the necessary extra speed." Bianca Hernandez, a meteorologist with the National Oceanic and Atmospheric Administration, tells NPR that Phoenix is seeing an unusually strong high-pressure system, which is causing the soaring temperatures.

Read more of this story at Slashdot.

Raffeiner: My Ubuntu for mobile devices post mortem analysis

LWN Headlines -

Simon Raffeiner describes in detail the reasons he sees for the failure of the Ubuntu phone project. "I understand there weren’t enough developers to fix everything at once, but instead of deciding to either make a good phone OR a good tablet with Convergence, we had devices which couldn’t really do anything right. The whole project also always always had this 'these are developer devices, it’s not important to do it fast, we will win in the long run' air around it – until the management quite obviously realised that this was all way too expensive and too much time had already been lost."

Uber Finally Adds a Tipping Option To Its App

Slashdot -

After years of complaints, Uber is rolling out a tipping option for drivers. "Tipping is available in Seattle, Minneapolis and Houston as of today. We're starting with only 3 cities so we can create the best tipping experience for you and your riders. We'll be adding more cities over the next few weeks, and will make tips available to all U.S. drivers, by the end of July 2017," Uber said in an email to drivers. Gizmodo reports: Uber will also roll out a full set of driver-friendly features. The cancellation window will narrow to two minutes (it was previously five) and drivers will get a per-minute fee if a rider makes them wait beyond two minutes. Drivers will also get a cut of Uber's "teen fare" which had previously gone exclusively to Uber. Now, drivers will get $2 of the fee. Uber will also offer drivers the option to enroll in injury-protection insurance. Uber has always argued that it offers a seamless experience and that adding a tip feature into its app would interfere with that. The company promises an up-front fare to the rider, with no fumbling around for cash or evaluation of a driver's performance beyond assigning a rating.

Read more of this story at Slashdot.

Google Launches Its AI-Powered Jobs Search Engine

Slashdot -

Now you can search for jobs across virtually all of the major online job boards like LinkedIn, Monster, WayUp, DirectEmployers, CareerBuilders, Facebook and others -- directly from Google's search result pages. The company will also include job listings it finds on a company's homepage. TechCrunch reports: The idea here is to give job seekers an easy way to see which jobs are available without having to go to multiple sites only to find duplicate postings and lots of irrelevant jobs. With this new feature, which is now available in English on desktop and mobile, all you have to type in is a query like "jobs near me," "writing jobs" or something along those lines and the search result page will show you the new job search widget that lets you see a broad range of jobs. From there, you can further refine your query to only include full-time positions, for example. When you click through to get more information about a specific job, you also get to see Glassdoor and Indeed ratings for a company. You can also filter jobs by industry, location, when they were posted, and employer. Once you find a query that works, you can also turn on notifications so you get an immediate alert when a new job is posted that matches your personalized query.

Read more of this story at Slashdot.

Driver Killed In a Tesla Crash Using Autopilot Ignored At Least 7 Safety Warnings

Slashdot -

An anonymous reader quotes a report from USA Today: U.S. investigators said a driver who was killed while using Tesla's partially self-driving car ignored repeated warnings to put his hands on the wheel. In a 538-page report providing new details of the May 2016 crash that killed Ohio resident Joshua Brown in a highway crash in Florida, the National Transportation Safety Board described the scene of the grisly incident and the minutes leading up to it. The agency, which opened an investigation to explore the possibility that Tesla's Autopilot system was faulty, said it had drawn "no conclusions about how or why the crash occurred." The NTSB report appears to deliver no conflicting information. The agency said the driver was traveling at 74 miles per hour, above the 65 mph limit on the road, when he collided with the truck. The driver used the vehicle's self-driving system for 37.5 minutes of the 41 minutes of his trip, according to NTSB. During the time the self-driving system was activated, he had his hands on the wheel for a total of only about half a minute, investigators concluded. NTSB said the driver received seven visual warnings on the instrument panel, which blared "Hold Steering Wheel," followed by six audible warnings.

Read more of this story at Slashdot.

'Older Fathers Have Geekier Sons'

Slashdot -

An anonymous reader shares a BBC article: Men who delay starting a family are more likely to have "geekier" sons, a study suggests. They were brighter, more focused and less bothered about fitting in -- according to the "Geek Index" devised by King's College London. The mother's age had no impact, and daughters seemed to be immune. One scientist said a trend for delayed parenthood might mean we were heading towards a "society of geniuses" able to solve the world's problems. The findings are rare good news in the science of delayed fatherhood. Repeated studies have shown that older sperm is more prone to genetic errors and children are more likely to develop autism and schizophrenia.

Read more of this story at Slashdot.

EFF Launches New AI Progress Measurement Project

Slashdot -

Reader Peter Eckersley writes: There's a lot of real progress happening in the field of machine learning and artificial intelligence, and also a lot of hype. These technologies already have serious policy implications, and may have more in the future. But what's the ratio of hype to real progress? At EFF, we decided to find out. Today we are launching a pilot project to measure the progress of AI research. It breaks the field into a taxonomy of subproblems like game playing, reading comprehension, computer vision, and asking neural networks to write computer programs, and tracks progress on metrics across these fields. We're hoping to get feedback and contributions from the machine learning community, with the aim of using this data to improve the conversations around the social implications, transparency, safety, and security of AI.

Read more of this story at Slashdot.

Pages

Subscribe to Heydon Consulting aggregator