Shared posts

12 Sep 18:32

Google Sheets Blogging CMS, part 1

by John Stewart

This is the first post in a three part series on using Google Sheets as the database for  a blogging CMS. In this post, I’ll explain the motivations for building the system. In the second post, I’ll walk you through the Google Sheet itself and the Google scripts (their version of js) that drive it. In the third post, I’ll share the website that displays the blog, and the code behind it. My guess is that interest in the three pieces will vary for different audiences, so I wanted to encapsulate the descriptions.

At the beginning of the summer, I met with Prof. Jenel Cavazos about introducing blogs into her Psychology 1113 course. This freshman level introduction to psychology is one of the largest classes on campus with 900 students enrolled in a typical fall semester. Additional sections of PSY1113 taught by other instructors often enroll another 300 students. 

Screen shot of the OU Create landing page at https://create.ou.edu.
OU Create landing page

1200 student blogs in a single course is a lot. At OU, we have a Domain of One’s Own project, where every student, staff and faculty member can sign up for a web domain with 5GB of storage. OU Create currently has about 5000 users running more than 6000 websites in their domains. To support this, we work with Reclaim Hosting to run five virtual private servers on Digital Ocean. We spin up a new Droplet (VPS) for each 1000 users to spread the minimize the strain on the servers and make sure a server outage doesn’t take down the whole system.

Increasing our user base by 20% and spinning up a new VPS for a single class each semester would strain our resources, so we started brainstorming other options for how we could provide a blogging platform for the class.

Possible Blogging Options

For one of our architecture classes, we use a single course blog, and all of the 100-300 students login as users to blog in that one site. However, that number of users already strain the ability of a website to handle simultaneous logins and posts. With 900 students potentially logging in to submit posts before an assignment deadline, we didn’t think this option would be stable enough.

Simply using WordPress.com and other free blogging platforms would work and would move the traffic onto a distributed network of servers. However, it would be difficult to support the students with any technical issues that might come up. It would also be difficult for Prof. Cavazos and the other instructors to keep track of the 1200 URLs for their students.

We thought about having the students just write in Google Docs or other cloud based word processors. However, this option would sacrifice the open audience of blogging. One of the benefits we see in blogging is that it encourages students to move from an audience of one (the instructor) to a potentially vast audience. The meta cognitive task of thinking about audience changes what and how we write. It can also support a sense of efficacy for students in that they are publishing their work and contributing to the knowledge base of the web.

Our Blogging Interface

Since none of the off-the-shelf options quite fit our needs, we decided to try to build something new. The design constraints for the blogging project were:

  1. A simple user interface, both for the students and the instructors
  2. Don’t crash our servers or spend a ton of money standing up a new server for 1200 users
  3. The blog should be public facing
  4. There should be a commenting functionality

The easiest UX that we’ve come up with is front-end blogging from a form. A user simply fills out a form with their name, the title of their blog post, the text of their post, and an image for the post. There’s no login and no need to navigate the UX of WordPress or another blogging service.

We’ve played with this concept of front-end blogging for a while now. Alan Levine has built an open sourced tool called TRU Writer that even provides this type of front end interface on a WordPress site. My colleague, Keegan Long-Wheeler, has built similar form interfaces into several of his more recent faculty development websites. However, these front-end interfaces still rely on the WP database to handle the submissions, and thus they would both be potentially overwhelmed by 900 submissions when an assignment is due.

For my new system, I wanted to use a Google Form to replicate the form in Alan’s system but shift the burden of traffic onto more robust Google app servers. However, Google Forms don’t allow you to upload images or use a Rich Text Editor to write extended text blocks. This would mean our blog posts would have no links, lists, embeds, or anything else that makes them more than just a text file.

Instead of Google Forms, I decided to use Google Scripts to build my own custom form in HTML and push the information from the form into Google Sheets. Accepting file uploads and rich text and saving them to a Google Sheet was not easy (at least not for me), but I will share the code and details on how I built this in the next post in the series.

Custom form served by Google that posts form results to Google Sheets

One potential problem with front-end blogging is that anyone can fill out the form and potentially fill the site with spam. However, my custom form is served from a url that is not indexed by the Google Search engine and not linked from any public facing websites. It is however embedded in our learning management system for the class, Canvas. Thus students write their blog post in the LMS, and it shows up on the website.

Blog Site

The custom form provided the interface for writing blogs and storing the data in a Google Sheet. The next problem was displaying these posts as an actual blog site.

For this step, I used Google’s API engine to expose the Google Sheet data as a json file. I then called that json file into my website using jquery, and read the data into an index.js file. Then I parsed and paginated the data, and passed it into an html container for display on an index.html page. I copied this site architecture and tailored it for each of the 16 sections in the 900 person PSY1113 course. Thus we have 16 team websites, each displaying the blogposts for the 50-60 students in that team. Again, I’ll give a walk through of the actual code in the third post in this series. For now, here’s a screen shot of the Team Ainsworth site (each of the teams is named after a noted psychologist) and a second screen shot depicting how demo data is rendered as blog entries.

Screen shot of the Team Ainsworth website
Screen shot of the Team Ainsworth site. Hopefully, by the time you’re reading this, students will have begun to populate the site with posts.
A screenshot demonstration of how placeholder blog post entries are displayed using jQuery
Placeholder blog post entries are displayed using jQuery

From the index page for each site, you can click on the link for an individual blog post to read that post. These links actually all point to a single blog post page. However there’s a blog post ID “parameter” attached to the url for this page that tells the system which row of data from the Google sheet to display for the post. Javascript within the blog post page pulls that data and then uses it to build the display for the particular blog post you want to read. The third party commenting service, Disqus, provides a commenting interface to leave feedback on the given “blog post” and keeps the comments separate using the blog post ID parameter.

In addition to the public facing site, this build also provides the instructors for the course with the Google Sheet itself as a space for reading student blog posts. You could filter the sheet to see the contributions of a certain student or all contributions submitted in a given timeframe. You could graph the number of blog posts or number of words that meet a given criteria and you could easily export the text set for text analysis. You could also use the json for the entire blog set to create alternative views and visualizations that highlight linkages and themes. 

Potential Applications

I think this Blog via Sheets tool is going to work well for the 900+ students in PSY1113 because it 1) is easy to use, 2) won’t crash, 3) presents their work on the open web, and 4) has commenting.

I could see this tool being used by anyone who wants a fairly inexpensive blogging platform for 500-2000(ish) people. A high school or college could tailor the code and tweak the css to spin up their own blogging platform. I could see an office like ours (Office of Digital Learning) using this to share our work both internally and with the broader digital learning community. I could also see Personal Learning Networks (PLN’s) using this type of interface to create ad-hoc blog communities. 

12 Sep 18:32

Google Sheets Blogging CMS, part 2

by John Stewart

This is the second post in a three part series on using Google Sheets as the database for  a blogging CMS. In this post, I’ll walk you through the Google Sheet itself and the Google scripts (their version of js) that drive it. In the first post, I explained the motivations for building the system. In the third post, I’ll share the website that displays the blog, and the code behind it. My guess is that interest in the three pieces will vary for different audiences, so I wanted to encapsulate the descriptions.

Inspired by Tom Woodward and Martin Hawksey, I’ve been using Google Sheets as a database for various projects for a while now. I’ve written scripts to collect Hypothes.is web annotations from their APIsave the choices of players going through choose-your-own-adventure Twine Games, identify unused Domains of One’s Own within OU Create, and track my own writing both here on my blog and on various article and book projects. Google Sheets basically provide CSVs that can be written and read via API.

The Limitations of Google Forms

When we were brainstorming the interface for Prof. Jenel Cavazos‘s psychology 1113 class blog, I wanted to use a form that didn’t require a login to collect blog posts and store them in a database. I also wanted a form that wouldn’t strain OU Create’s servers. Alan Levine’s Splot forms would do a great job of collecting the blog posts, but I worried that if all 950 of Prof. Cavazos’s students submitted assignments at the same time, it would crash our OU Create servers. Google Forms satisfied both conditions and seemed an obvious choice.

One problem is that you cannot submit files via Google Forms. We wanted students to be able to submit ‘featured images’ for their blog posts in the way that WordPress uses featured images. Google Forms also doesn’t have a way of collecting rich text in long form text entry fields.

A blog with no images and no rich text isn’t much of a blog, so I decided to create my own form instead of using Google’s. At first, I thought I would write and host a stand alone form and connect it to Google Sheets using Martin Hawksey’s HTTP Post methods. During the research for this idea, Tom Woodward suggested I look at Amit Agarwal’s work on handling file uploads within a form built in Google Scripts.

In his post and his blog more broadly, Amit Agarwal showed how to build a traditional html form in Google Sheets and use it to upload images into Google Drive. Agarwal also built a really clever interface in WordPress that will put together these custom forms. This is a great way to get really functional forms, but it requires purchase of licenses, and I wasn’t sure that Agarwal would release the code that I needed to connect the sheets with my final website. So, I used the method that Agarwal discussed in his blog post for accepting file uploads and spliced it with Hawksey’s work on writing to Google Sheets from Google Scripts. In the end, I created a form that collects all the information needed for a PSY1113 blog post, stores the ‘featured image’ in Google Drive (per Agarwal), and then records the information for the blog post to a row in a Google Sheet (per Hawksey).

Google Script Code Walk Through

Clicking on this link will create a copy of the Google Sheet I created. From within that sheet, you can click on Tools>Script Editor in the menu bar to work with both the custom form and the Google script for this project. In the next post in this series, I’ll share the code for the website, so that you can stand up a copy of the entire project and do whatever you want with it.

I’ve also put the code in a GitHub repository. You’re welcome to copy, fork, read-along, or do whatever you want with that (within the parameters of a GNU GPLv3 license). Below I’m going to walk through a few pieces of the code that I thought were particularly interesting.

function doGet(e) {
  var output = HtmlService.createHtmlOutputFromFile('forms.html').setTitle("Post to the PSY1113 Blog");
}

Within the Google Scripts, there are two files: server.gs and forms.html. The server.gs file is the primary file, the one that Google is running when we set up our web app. The key function within the file is this doGet which calls our form for the project. Rather than getting data from an external source, we create a forms.html file and get the data directly from it.

Once someone has submitted the form (I’ll discuss the form itself in a minute), the server.gs file runs a couple of functions in sequence. The first function, called uploadFileToGoogleDrive, takes the uploaded image and stores it in the sheet creator’s Google Drive in a directory called ‘Files Received.’

var dropbox = "Received Files";
var folder, folders = DriveApp.getFoldersByName(dropbox);
    
    if (folders.hasNext()) {
      folder = folders.next();
    } else {
      folder = DriveApp.createFolder(dropbox);
      folder.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.VIEW);
    }
    
    /* Credit: www.labnol.org/awesome */
    
var contentType = data.substring(5,data.indexOf(';')),
        bytes = Utilities.base64Decode(data.substr(data.indexOf('base64,')+7)),
        blob = Utilities.newBlob(bytes, contentType, fileName),
        file = folder.createFolder([lastName, title].join(" ")).createFile(blob),
        id = file.getId();

This bit of code checks to see if you have a directory called ‘Files Received.’ If not, it creates the directory. Then it creates a subdirectory based on the last name and title collected in the form. It then stores the image from the form in that directory, and records the ID for the image. Because this is the first function, this version of the code requires an image upload. If we wanted to make the image upload optional, we could rewrite a few lines to decouple the two functions so that either could be run at the time of form submission.

In it’s current form, once the file has been stored the second function, sheetRowGenerator, is called. This function is adapted from Hawksey’s work. It takes all of the information from the form and the uploaded file and writes that information to a row in the Google Sheet that is attached to this Google Script. My version of the script looks at which section (house) of the class the student is in, and writes the data to the sheet for that section.

function sheetRowGenerator(firstName, lastName, title, blogText, house, assignment, assignmentText, id) {

    var lock = LockService.getPublicLock();
    lock.waitLock(30000);  // wait 30 seconds before conceding defeat.
 
try {
    // next set where we write the data - you could write to multiple/alternate destinations
    var doc = SpreadsheetApp.openById(SCRIPT_PROP.getProperty("key"));
    var sheet = doc.getSheetByName(house);
 
    // we'll assume header is in row 1 but you can override with header_row in GET/POST data
    var nextRow = sheet.getLastRow()+1; // get next row
    var row = []; 
    row.push(nextRow); //using the row number as an ID for the blog post
    row.push(new Date());
    row.push(firstName);
    row.push(lastName);
    row.push(title);
    row.push(blogText);
    row.push(house);
    row.push(assignment);
    row.push(assignmentText);
    row.push(id);
    // more efficient to set values as [] array than individually
    sheet.getRange(nextRow, 1, 1, row.length).setValues([row]);
    // return json success results
    return ContentService
          .createTextOutput(JSON.stringify({"result":"success", "row": nextRow}))
          .setMimeType(ContentService.MimeType.JSON);
  } catch(e){
    // if error return this
    return ContentService
          .createTextOutput(JSON.stringify({"result":"error", "error": e}))
          .setMimeType(ContentService.MimeType.JSON);
  } finally { //release lock
    lock.releaseLock();
  }
}

function setup() {
    var doc = SpreadsheetApp.getActiveSpreadsheet();
    SCRIPT_PROP.setProperty("key", doc.getId());

The outer pieces of this code, get the key and ID of the sheet that you’re working from. They pass this information into the inner functions which find the next blank row of that sheet, and then write the long list of variables to the sheet. The last variable pushed, the ‘id’ is actually the id of the image that the user uploaded. The image can be viewed if we plug the id in at the end of ‘https://drive.google.com/uc?export=view&id=’. I’ll return to this point in the next post when I walk through the code for the blog website.

So in sum, we have Agarwal’s code to store the uploaded image in our Google Drive account, and a modified version of Hawksey’s code to store the information for the blog post in a row of our Google Sheet. Next, let’s look at the Form itself.

Custom Google Form for Blogging

Above, I noted how the server.gs file calls the forms.html file to create the form. This forms.html file is a fairly typical html file, and I’ve included some css and js in mine to get it to look and act how I want. I’m sure that I could have separated these pieces out into other files. If I’d had more time, I’d have written a shorter form file, but this one works. You can see and fill out the demo form here.

Screen shot of a custom form created with Google Scripts.Custom form created with Google Scripts

Within the form itself, the two interesting pieces to me are that I’ve used Materialize CSS and Quill.js. Materialize was a carry over from Agarwal’s work. I like how the field labels react as you enter information, and the way that they offer visual cues to verify your inputs.

Quill was the more exciting find in this project. Quill JS is a jquery-based, rich text editor. It stores both your work and the history of changes in that work in a proprietary json format called a ‘delta.’ Here’s the js code to instantiate the Quill container:

      var quill = new Quill('#editor-container', {
        modules: {
          toolbar: [
            ['bold', 'italic'],
            ['link', 'blockquote', 'code-block'],
            [{ list: 'ordered' }, { list: 'bullet' }]
          ]
        },
        placeholder: 'Compose an epic...',
        theme: 'snow'
        });

You can get some notion of how Quill might be used as a Wiki here. Quill’s deltas are hard to work with, because you have to write the json parsing code to extract the html for display. They seem to want you to use Quill for both input and display. That would allow for an interesting post-publication editing interface, but it’s not what I had envisioned. Instead, I used a function called inner html that returns a json string of the html written by the user. I passed this json string into a cell of my Google Sheet and then passed it to my blog site for rendering.

When a user is done filling out the form and clicks submit, the form checks to see if all the fields were filled in and then passes the data back into server.gs. Sorry for the length of this bit of code. I think it could be optimized, and feel free to skip it if you don’t care. 

var file, 
          reader = new FileReader();

      reader.onloadend = function(e) {
        if (e.target.error != null) {
          showError("File " + file.name + " could not be read.");
          return;
        } else {
          var firstName = $('#first_name').val();
          var lastName = $('#last_name').val();
          var blogTitle = $('#blog_title').val();
          var blogText = quill.root.innerHTML;
          console.log(blogText);
          var house = $('#house').val();
          var assignment = $('#assignment').val();
          var assignmentText = $('#assignment').find(":selected").text();
          google.script.run
            .withSuccessHandler(showSuccess)
            .uploadFileToGoogleDrive(e.target.result, file.name, firstName, lastName, blogTitle, blogText, house, assignment, assignmentText);
        }
      };

      function showSuccess(e) {
        if (e === "OK") { 
          $('#forminner').hide();
          $('#success').show();
        } else {
          showError(e);
        }
      }

      function submitForm() {

        var files = $('#files')[0].files;
        var firstName = $('#first_name').val();
        var lastName = $('#last_name').val();
        var blogTitle = $('#blog_title').val();
        var house = $('#house').val();
        var assignment = $('#assignment').find(":selected").text();
        
        if (firstName.length === 0 || lastName.length === 0 || blogTitle.length === 0 || house.length === 0 || assignment.length === 0) {
          showError("Please fill out form completely");
          return;
        }
        
        if (files.length === 0) {
          showError("Please select a file to upload");
          return;
        }

        file = files[0];

        if (file.size > 1024 * 1024 * 2) {
          showError("The file size should be < 2 MB.");
          return;
        }

        showMessage("Uploading file..");

        reader.readAsDataURL(file);

      }

      function showError(e) {
        $('#progress').addClass('red-text').html(e);
      }

      function showMessage(e) {
        $('#progress').removeClass('red-text').html(e);
      }

You can see that the file size for uploads has been limited to 2MB. Generally, I don’t use large images for the web, to minimize load times. Also, we have 950 students, and we’re planning on as many as a dozen blog assignments. With 11,400 blog posts, you could quickly consume gigs of storage. 

Rather than running php or HTTP POST call to send the data to some form of storage, this file calls the uploadFileToGoogleDrive function and passes all of the collected data to that function as parameters.

Takeaways

Here are the steps for creating your own copy of this project and getting it running. I elided a few things in the walk through above, but (hopefully) this has all the steps:

  1. Create a copy of the Google Sheet I created.
  2. From within that sheet, you can click on Tools>Script Editor in the menu bar to access both the custom form and the Google script for this project.
  3. Within the Form, customize the list of Sections (lines 63-70) and Assignments (lines 77 & 78)
  4. If you add any fields or change any fields, make sure to update the functions starting on line 142 of the forms.html file to collect and pass the correct information from your form.
  5. Once you’re happy with how everything looks, click on the server.gs file, and select the Setup function from the ‘Select Function’ drop down menu. Hawksey wrote this function to help get your scripts authorized within your Google account and make sure the functions are properly linked to your Google Sheet.
  6.  Select ‘Publish>Deploy as Web app’ from the menu to make your project live. Set the Project version to ‘new’ and republish as new anytime you make a change to your code. Also set the ‘Execute the app as’ to ‘Me’ and the ‘Who has access to the app’ to ‘Anyone, even anonymous.’
  7. Once you hit publish (or update) you will get a Current web app URL for your form.
  8. From your Google Sheet, clear out any demo data you don’t want.
  9. Click on ‘File>Publish to the web’ from the menu to open access to your sheet to use it as a DB. Make sure the settings are set to ‘Entire Document’ and ‘Web Page.’ 

What I learned from this project is that you can host a form from Google Scripts, use it to build a (headless) database, and then call that database remotely for other websites. By hosting the script as a Web App (publish as Web App), you get a  secure, https URL that can collect data.

The quota limit that I’ve found is that we can’t exceed 100 form submissions per 100 seconds. I’m a little worried that we might also be limited to 500 images uploaded per day. If that is the case, I will rewrite the functions above to make the image upload optional or allow for image URL links as opposed to uploads.

Google Sheets provides a fairly easy and malleable interface for managing a CSV and can be publish the data as a JSON for easy access in other sites. In the next post, I’ll show how I call the sheet and display the data using jQuery.

04 Sep 05:09

Mozilla files arguments against the FCC – latest step in fight to save net neutrality

by Denelle Dixon

Today, Mozilla is filing our brief in Mozilla v. FCC – alongside other companies, trade groups, states, and organizations – to defend net neutrality rules against the FCC’s rollback that went into effect early this year. For the first time in the history of the public internet, the FCC has disavowed interest and authority to protect users from ISPs, who have both the incentives and means to interfere with how we access online content.

We are proud to be a leader in the fight for net neutrality both through our legal challenge in Mozilla v. FCC and through our deep work in education and advocacy for an open, equal, accessible internet. Users need to know that their access to the internet is not being blocked, throttled, or discriminated against. That means that the FCC needs to accept statutory responsibility in protecting those user rights — a responsibility that every previous FCC has supported until now. That’s why we’re suing to stop them from abdicating their regulatory role in protecting the qualities that have made the internet the most important communications platform in history.

This case is about your rights to access content and services online without your ISP blocking, throttling, or discriminating against your favorite services. Unfortunately, the FCC made this a political issue and followed party-lines rather than protecting your right to an open internet in the US. Our brief highlights how this decision is just completely flawed:

– The FCC order fundamentally mischaracterizes how internet access works. Whether based on semantic contortions or simply an inherent lack of understanding, the FCC asserts that ISPs simply don’t need to deliver websites you request without interference.
– The FCC completely renounces its enforcement ability and tries to delegate that authority to other agencies but only Congress can grant that authority, the FCC can’t decide it’s just not its job to regulate telecommunications services and promote competition.
– The FCC ignored the requirement to engage in a “reasoned decision making” process, ignoring much of the public record as well as their own data showing that consumers lack competitive choices for internet access, which gives ISPs the means to harm access to content and services online.

Additional Mozilla v. FCC briefs will be filed by various parties who are intervening or friends of the court through November. After that process is complete, oral arguments will take place and the court will rule.

Mozilla has been defending users’ access to the internet without interference from gatekeepers for almost a decade, both in the US and globally. Net neutrality is a core characteristic of the internet as we know it, and crucial for the economy and everyday lives. It is imperative that all internet traffic be treated equally, without discrimination against content or type of traffic — that’s how the internet was built and what has made it one of the greatest inventions of all time.

Brief below:

(As filed) Initial NG Petitioners Brief – Mozilla v FCC 20Aug2018

The post Mozilla files arguments against the FCC – latest step in fight to save net neutrality appeared first on The Mozilla Blog.

04 Sep 05:09

Light Heretofore Unknown

by Matt

Yes, it is a press, certainly, but a press from which shall soon flow in inexhaustible streams the most abundant and most marvelous liquor that has ever flowed to relieve the thirst of man! [….] A spring of pure truth shall flow from it! Like a new star, it shall scatter the darkness of ignorance, and cause a light heretofore unknown to shine among men.

— Johannes Gutenberg

From Dan Knauss via Post Status.

04 Sep 05:09

Stuff That I'm Looking forward to (or not)

by Rui Carmo

Even as I lie deep in the holiday zone, blissfully abstracted from just about everything work-related (although I still get the the odd 10AM call from less lucky folks), I find myself wistfully pondering what I might actually enjoy going back to this Fall from a purely technical perspective.

Given that I’m willfully self-restrained to using mosh and vim to edit drafts while caked sand sloughs away from my ankles at roughly the same speed these bits are squirted across the ether, a lot of what’s on my mind is related to personal tech (and a lot more I simply cannot write about at all), but here are some of the highlights for your continued amusement:

  • Elementary OS 5.0, because I like the current iteration quite a bit and would like to entertain the notion that I might be able to use it exclusively some day–on what are effectively purely academic grounds, for sure, but one has to entertain options. Possible pitfalls: some initial flakiness on the battered hardware I intend to use it on, and a continued sadness for it not being available on ARM in any shape or fashion.
  • iOS 12 and watchOS 51, largely because I expect to upgrade from an iPhone 6 to an improved/more sensible X (remember, kids, never buy the first iteration of an Apple product if you can help it). Extremely likely pitfalls: I am going to be very annoyed at the lack of Touch ID (which I still believe to be a better fit for me than Face ID), which is sure to be outweighed by having a phone that launches Twitter in less than 15 seconds again.
  • The Windows 10 Fall Update (whatever they’re calling it now), solely because it will bring along some much-needed fixes for the Windows Subsystem for Linux (which is the bit I use the most). Corporate Kool-Aid is slowly percolating from my bloodstream as various varieties of chilled beverages seep in, so I can but hope that Windows Update stops being so much of a nuisance as it’s been lately (I’ve had it recently force reboot my machine during an all-nighter when we were preparing a major customer deliverable, and the scars are still there in my psyche).
  • Visual Studio Code native support for WSL binaries (git, python, pyenv and many others). This has progressed unevenly over the past year, but I have hope that will eventually get sorted out, because as it is, the only platform I can really enjoy working on is still (ironically) macOS, and that kind of defeats the purpose of both pieces of software. In all honesty, I would love to have that be the default cloud dev stack, because it makes so much sense it hurts when you get paper cuts from the tottering stack of workarounds you have to go through to have portions of it working.
  • Go modules, because the current gibbering insanity that is Go dependency management needs to stop and I want a sane way to do version pinning as well as vendoring (and getting rid of GOPATH is just icing on the cake).

Until these come to pass, I intend to spend some time (un)evenly split between figuring out how to realign my hobby compass to compensate for the rather blistering pace things are getting to and delivering my best impression of a corporate hamster on a treadmill. Many of my usual hobbies have suffered throughout these past three years, and I need to get some less-used neural pathways firing again before something shorts out.

Other stuff (including the usual garden variety product roadmaps, personal goals and family endeavors) are rolling on, the only worthwhile comment being that the Kubernetes juggernaut is still remarkably alive and shows no signs of letting up–it is experiencing some growth pains (people are finally starting to realize it doesn’t exclude proper governance, due processes and a functioning brain in all involved), but with luck we might finally have a (borderline) sane way to deploy properly component-based applications in the cloud.

What no one tooting those particular horns seems to be able to convey to the unwashed masses, however, is that developers need something simpler than a thirteen-page checklist to sign on, and that means building even more tooling to simplify things.


  1. I’m not overly keen on Mojave, to be honest. I will upgrade in due time (and will be sorely disappointed if it doesn’t support FileVault on Fusion drives), but (sadly) it won’t have much of an impact on my daily affairs. I also remain unfazed by news of an updated Mini–that ship has sailed as far as I’m concerned. ↩︎

04 Sep 05:06

Computer Vision in Three Lines of Code plus a bunch more lines

by Rui Carmo

I love this kind of simple, straightforward solution, especially when it’s written out in a comprehensive fashion.

(I haven’t posted anything about my own machine learning endeavors because they reek of work and are generally fairly uninteresting problems with much simpler business solutions than dialing tech up to 11, but I intend to link to juicy nuggets like this one from now on–I’ve been doing that mostly on LinkedIn, but it’s an audience that values flashiness above substance…)

04 Sep 05:06

This is not your father's Microsoft

by Rui Carmo

This is noteworthy because it manages to capture some of the complexity of the multifaceted culture change the company is going through. Being submerged in several aspects of internal culture (which is by no means even or uniform), I can attest to it being a work in progress.

The changes are not evenly distributed yet (and the subsidiary model dampens propagation of change, with various regional and local eddies), but they’re happening.

04 Sep 05:06

What data scientists really do

by Nathan Yau

Statistics. I kid, I kid. Hugo Bowne-Anderson, host of the DataFramed podcast, culled some information together that he’s gathered from interviewing data scientists. This is what data scientists really do.

One result of this rapid change is that the vast majority of my guests tell us that the key skills for data scientists are not the abilities to build and use deep-learning infrastructures. Instead they are the abilities to learn on the fly and to communicate well in order to answer business questions, explaining complex results to nontechnical stakeholders. Aspiring data scientists, then, should focus less on techniques than on questions. New techniques come and go, but critical thinking and quantitative, domain-specific skills will remain in demand.

Other than the best spots to nap in between classes, this is one of the most important things I learned in (statistics) graduate school.

Tags: data science

04 Sep 05:06

Mozilla Announces 26 New Fellows in Openness, Science, and Tech Policy

by Mozilla

These technologists, activists, and scientists will spend the next 10 to 12 months creating a more secure, inclusive, and decentralized internet

 

A neuroscientist building open-source hardware. A competition expert studying net neutrality enforcement in Nigeria. A technologist studying tools that combat disinformation.

These are just three of Mozilla’s latest Fellows — 26 technologists, activists, and scientists from more than 10 countries. Today, we’re announcing our 2018-2019 cohort of Fellows, who begin work on September 1, 2018.

Over the next 10 to 12 months, these Fellows will conduct research, create products, and build communities. In past cohorts, Mozilla Fellows have built secure platforms for LGBTQ individuals in the Middle East; leveraged open-source data and tools to bolster biomedical research across the African continent; and raised awareness about invasive online tracking.

More than ever, we need a movement to ensure the internet remains a force for good. Mozilla Fellows work on the front lines of that movement. Fellows develop new thinking on how to address emerging threats and challenges facing a healthy internet.

Learn more about Mozilla Fellowships, then meet our 2018-2019 Mozilla Fellows below (those fellows who are embedded at host organizations are funded through a joint Mozilla-Ford Foundation investment):

 

André Maia Chagas | UK | As a Mozilla Fellow, Andre will be working on Open Hardware for science, in order to try and map which laboratory equipments are most used and which are lacking across working groups, institutions, and non-academic spaces. Once the mapping is complete, he wants to select one piece of equipment and build it open and collaboratively. He also wants to create tutorials about the basic components of the designs, so that they can be used as starting points for other projects. With this approach, he is hoping to increase access to scientific equipment, allowing institutions and communities to follow their own scientific interests. Before joining Mozilla, Andre worked at the Baden Lab in the University of Sussex, collaborating with Trend in Africa by organizing and executing workshops around Open Source Hardware. He was also maintaining Open Neuroscience, a repository for OS projects related to neuroscience.

 

Ayden Férdeline | Germany | At Mozilla, Ayden Férdeline will be researching the ongoing development and harmonization of global privacy standards. He will work to develop an ambitious new toolkit for effectively operationalizing privacy protections online, identifying appropriate regulatory interventions that could incentivize data controllers to adopt higher privacy protections. He is currently a Councilor on the Council of the Generic Names Supporting Organization, the body which sets policy for generic top-level domain names like .com, where he represents the interests of non-commercial users and uses of the Domain Name System. Before joining Mozilla, Ayden Férdeline supported the Internet Society’s global public policy team and was a researcher for the data and analytics group YouGov. He has previously facilitated workshops at the United Nations Internet Governance Forum, United Nations World Summit on the Information Society, the European Dialogue on Internet Governance, and the Internet Freedom Festival. He is a graduate of the London School of Economics.

 

Kadija Ferryman | U.S. | As a Mozilla Fellow, Kadija Ferryman will be working on an ethnography and history of electronic health records in order to examine the potential and limits of the growing open health data movement. In addition to the Mozilla Fellowship, Kadija Ferryman is a Postdoctoral Scholar at Data & Society Research Institute in New York, and was a public policy researcher at the Urban Institute for six years. She earned degrees in anthropology from Yale (BA) and the New School for Social Research (PhD).

 

Camille Francois | U.S. | As a Mozilla Fellow, Camille will be working on online targeted threats and disinformation campaigns, exposing their impact on civil society and vulnerable users globally, and also trying to yield better detection and mitigation techniques. Camille will be researching the effects of dis/misinformation spread on specific platforms in countries that have elections in 2018-2019 aside from the U.S. She’ll be working with Mozilla communities worldwide to conduct her research, and will share her findings widely with the communities as well as with relevant stakeholders. Before joining Mozilla, Camille was the Principal Researcher at Google’s Jigsaw think tank. Camille is also an Affiliate at the Harvard-Klein Berkman Center for Technology & Society, and the Research & Analysis Director at Graphika.

 

David Gehring | U.S. | As a Mozilla Fellow, David Gehring is focused on the economics of quality original news media publishing on the open web.  He will be working on a plan to establish an open source user data standard and global data exchange. The goal is to empower users with an environment that provides user agency while at the same time improving the economic position for quality publishers on the open web. Prior to joining Mozilla, Gehring was an entrepreneur and the CEO of Relay Media, which he sold to Google in 2017. Before starting Relay Media, Gehring held various roles at Guardian Media Group, Google and YouTube.

 

Maggie Haughey | Canada | Maggie is an activist and gamer concerned with issues of inclusion and safety online. Her work centers LGBTQ+ representation and intersectional feminism, and seeks to answer questions about how to create and maintain safer online spaces. In the past, Maggie has worked as a Game Master for her favorite MMO, created and moderated online LGBTQIA+ gaming communities, and organized nonhierarchical skillshares and cryptoparties in Montreal. As a Ford-Mozilla Fellow, Maggie will be working with the Tor Project to improve Tor’s accessibility, grow the Tor community, and advocate for the active inclusion of marginalized groups at all levels of the web.

 

Gabriela Ivens | Germany | Gabi is an open-source investigator, working on new methods of locating, identifying, and securely preserving publicly available information for use in human rights investigations. As a Ford-Mozilla Fellow, Gabi will be working with the Tech+Advocacy team at WITNESS, where she will be working on issues around the safe, ethical, and effective use of video in documenting human rights violations. During the Fellowship, Gabi will be focusing on a number of areas including emerging technologies for human rights documentation and the effects of policy and engineering decisions by technology companies – such as content takedowns of information – that is, or could be, societally important. Gabi’s work will provide a greater level of understanding of the impact tech companies have on civil society and human rights defenders. Before becoming a Fellow, Gabi worked at Syrian Archive, a group working on preserving visual documentation of the Syrian conflict, and has been working on open source investigations since 2015. Gabi holds a master´s degree from University College London in Human Rights.

 

Chukwuyere Izuogu | Nigeria | As a Mozilla Fellow, Chukwuyere’s research work focuses firstly on the competition implication of non-enforcing net neutrality obligations, in order to emphasize the importance of net neutrality to competitive internet service markets in Nigeria. Secondly, his work focuses on the adequacy of the data protection regime in Nigeria, specifically in the context of the cross-border transfer of personal data acquired by online platforms from the EU to Nigeria. He will also recommend policy options and safeguards to mitigate existing data protection risks in Nigeria. Prior to joining Mozilla, Chukwuyere was a Research Fellow at the African Academy Network of Internet Policy and a Senior Counsel with the law firm of Streamsowers & Kóhn. Chukwuyere is the author of Regulating Anti-competitive Practices in Nigeria’s Communications Sector, (Wolf Legal Publishers, Netherlands, January 2017).

 

Darius Kazemi | U.S. | Darius Kazemi is delighted to join Ford-Mozilla to help Code for Science & Society figure out how to make the decentralized web more exciting and interesting. He’s hoping to make weird projects that can only really live on the decentralized web, and to build tools and tutorials to help other people make even better, weirder things. Darius is the co-founder of Feel Train, a worker-owned creative technology studio, and an artist making bots and web toys under the moniker Tiny Subversions.

 

Stefania Koskova | Portugal | As a Mozilla Fellow, Stefania will be exploring strategies and tools to enhance collaboration between governments, civil society, and the private sector, leading to a better understanding and management of security risks associated with harmful online content, such as hate speech, terrorist propaganda, and disinformation, particularly in post-conflict societies. In her previous roles, Stefania assisted policymakers and communities in the Western Balkans with the design and implementation of strategic responses to hate, extremist radicalization, and violence. In 2017, Stefania helped launch the Resonant Voices Initiative, networking journalists, activists, and community leaders who challenge dangerous messages online, providing training and mentoring to counternarrative campaigns, and mapping online radicalization trends in the Western Balkans.

 

Tarun Krishnakumar | India | Tarun Krishnakumar is a dual-qualified lawyer (India and California) working on emerging issues at the intersection of regulation, public policy, and technology. As a Mozilla Fellow, he will be working to improve stakeholder trust in the digital ecosystem through comparative research, capacity building, and engagement on substantive and procedural issues relating to law enforcement access to data, digital evidence, privacy, and cybersecurity. Prior to the Fellowship, he worked with a leading Indian law firm advising several of the world’s largest technology companies on issues including data protection, cybersecurity, intermediary liability, and cloud computing.

 

Julia Lowndes | U.S. | As a Mozilla Fellow, Julia Lowndes will be working to increase the value and practice of open data science within ecology and environmental science by empowering researchers with existing tools and communities. Julia has been working in this space for over five years through the Ocean Health Index at the National Center for Ecological Analysis and Synthesis (NCEAS). As science program lead, Julia helped the Ocean Health Index become a visible leader of open, reproducible, and collaborative practices for science and management through building a community of practice and communicating the team’s path to better science in less time. She earned her PhD in Biology at Stanford University and is a co-founder of Eco-Data-Science and R-Ladies Santa Barbara.

 

Ciera Martinez | U.S. | As a Mozilla Fellow, Ciera Martinez will be focusing on the practice of reproducibility when using genomics and natural history data. Her and her collaborators will be surveying databases to identify tools and strategies that will help increase the visibility, usability, and reproducibility of this data.  She is also currently a Postdoctoral researcher in Michael Eisen’s lab at Berkeley and a Fellow at the Berkeley Institute of Data Science.

 

Alexander Morley | UK | For his Mozilla Fellowship, Alex will be working on developing resources around the idea of “Continuous Research.” While more and more data accumulates, and more ways to analyze it are developed, it is time to turn to automated solutions for comparing and integrating research. Alex sees this not only as an opportunity to innovate, and combat reproducibility concerns, but also that it should be a way to take down some of the barriers to participation in research. He will be working on all this from his lab at the MRC Brain Network Dynamics Unit in the University of Oxford, where he is currently a PhD candidate.

 

Sam Muirhead | New Zealand | As a Ford-Mozilla Fellow, Sam Muirhead will be working on an open source approach to the production and adaptation of illustration, comics, and animation. The aim is to support international activist networks running digital campaigns in diverse cultural contexts — enabling local chapters to speak with their own creative voice, while building solidarity and sharing resources across the network. In 2012, Sam lived an experimental Year of Open Source, then helped kickstart a global network around the idea of an Open Source Circular Economy. Since 2016 he has been developing a methodology for co-creating and customizing open source animation, and running ‘Cut, Copy & Paste‘ workshops that give non-coders an experience of open source collaboration, without using digital tools.

 

Selina Musuta | U.S. | Selina is a web developer and infosec practitioner that is inspired daily by speculative fiction, music, and her people’s ability to survive and thrive. She has dedicated 15 years to community development work in Washington, DC through media justice organizing and community-led research, as well as radio and event production. Selina has collaborated with a number of social justice and capacity-building organizations like Wellstone Action and the Center for Media Justice. As a Ford-Mozilla Fellow, she will support the ongoing privacy and security work of Consumer Reports.

 

Valentina Pavel | UK | Valentina is a digital rights advocate working on privacy, freedom of speech, and open culture. As a Ford-Mozilla Fellow, Valentina will investigate the implications of digital feudalism and will explore different visions for shared data ownership. Shouldn’t we all be able to own and use the data that we’re collectively feeding into the online empires that run our digital lives? Shouldn’t this pooled data be placed back into the commons so it can empower new key infrastructure services? Valentina’s challenge will be to understand how the dominant tech companies are shaping the current socio-economical environment and seek new ways in which we can change the status quo for our shared benefit.

 

Kathy Pham | U.S. | Kathy Pham is a computer scientist, product leader, and serial founder who has held roles in product management, software engineering, data science, people operations, and leadership in the private, non-profit, and public sector. Her work has spanned Google, IBM, Harris Healthcare Solutions, and the federal government at the United States Digital Service at the White House, where she was a founding product and engineering member. She is the founder of the Women in Product Boston, the Cancer Sidekick Foundation, Team Curious, and Unite for Sight southeast. Kathy serves on the advisory boards of the Anita Borg Institute and the “Make the Breast Pump Not Suck” initiative. She also advises startups, conferences, and non-profits on hiring, building teams, and community inclusion.

 

Phi Requiem | Mexico | As a Ford-Mozilla Fellow, Phi will be working with journalists, collectives, and activists in Latin America and the Caribbean who are at heightened risk of being attacked in terms of digital security. He is finding and developing more mechanisms and tools to improve freedom of speech and human rights defense. Before joining Mozilla, Phi was a digital security consultant, developer, and data specialist working side-by-side with several NGOs in Mexico and Central America.

 

Maya Richman | Germany | Maya is a security trainer and practitioner for social change organizations and activists. As a Ford-Mozilla fellow, she will work alongside the Astraea Lesbian Foundation for Justice to explore and support the security needs of LGBTQI groups around the world. During her Fellowship, Maya will document the unique approaches and tactics that LGBTQI employ to survive and thrive in growing oppressive contexts. Prior to joining Mozilla, Maya worked at The Engine Room facilitating spaces for organizations, groups, and individuals around the world to share their experiences and improve their collective security and emotional well-being. She previously studied computer science, hacker politics, and open source culture at McGill University.

 

Daniela Saderi | U.S. | Daniela is a neuroscience PhD candidate and community organizer passionate about bringing open practices into the world of academia as a means to improve reproducibility and collaboration. Her PhD research combines in vivo electrophysiology, behavior, and computational modeling to understand how sound is processed in the dynamic brain. She is planning to defend her PhD thesis in the Fall of 2018. As a Mozilla Fellow, Daniela will be working on a project she co-founded less than a year ago called PREreview, an open platform and community to facilitate the collaborative writing of preprint reviews and the training of early-career researchers in scientific peer review. Through this work, she hopes to foster a broader and much needed cultural change in the way science is evaluated and disseminated.

 

Sukhbir Singh | Canada | Sukhbir has a background in the design, development, and advocacy of privacy-enhancing technologies. As a Ford-Mozilla Fellow, he will work with the Wikimedia Foundation to further its mission of free and open access to knowledge for everyone. Before joining Mozilla, he was a developer with the Tor Project on the applications and community team.

 

Clara Tsao | U.S. | This fall as a Mozilla Fellow, Clara Tsao will be working on evaluating the effectiveness of online tools that have been developed to counter terrorist propaganda/disinformation, with the goal of evaluating the impact of tools mapped to terms of service and content enforcement policy. As Chief Technology Officer of the US Government’s Countering Violent Extremism Task Force, Clara has focused on products, partnerships, and policy focused on homegrown radicalization online and terrorist exploitation of the internet. She has also previously started companies and non-profits, worked at Microsoft, AT&T, and also at Google as a Technology Policy Fellow.

 

Danae Valentina | The Netherlands | Danae Valentina is a feminist working-class writer born in Chile and currently living in Rotterdam. She is a postgraduate research student at Utrecht University where she investigates the intersection between technologies and altered states of the mind using a posthumanist approach. As a Ford-Mozilla Fellow, Danae will be exploring the topic of transculturality and its digital implications through direct work with migrant communities in Latin America and in Europe. Before joining Mozilla, Danae worked as a project manager for digital rights organizations in Chile and in Brazil. She is a proud member of the Riseup Collective.

 

Richard Whitt | U.S. | As a Mozilla Fellow, Richard will be spending the next twelve months developing his “openness by design” project.  Through research, authorship, and convenings, Richard seeks to deepen and broaden our understanding of the key role played by the concept of openness across the different tech modalities. He also will be developing and implementing various ways to advocate for more tech sector openness. Before joining Mozilla, Richard spent over 11 years at Google, where he most recently worked with Vint Cerf on a variety of tech and corporate policy projects for emerging platforms.

 

Bruna Zanolli | Brazil | As a Ford-Mozilla Fellow, Bruna Zanolli will be working on implementing, managing, and documenting community networks experiences lead by Artigo 19 Brazil. She aims to solve the problem of lack of access, and to optimize ways of communicating and exchanging experiences/ideas/struggles within a community. Bruna has been an activist in the area of autonomous communications and human rights with experience in the implementation and maintenance of autonomous networks. She acts as an infrastructure and content creation technique using free software on free radios in Brazil and in network with other countries in Latin America. She holds a Masters degree in Communication from MediaLab at UFRJ where she explored intersectional feminist experiences on the radio spectrum.

 

These new 26 Fellows will be joining our current Fellows:

 

Peter Bihr | Germany | Peter is researching what a trustmark for ethical and responsible IoT could look like. He’s going to be prototyping this for voice-enabled connected products first, and then take it from there. Before Mozilla, Peter co-founded ThingsCon, a non-profit that fosters the creation of a human-centric and responsible Internet of Things. He also founded The Waving Cat, a boutique research and strategy firm that explores the impact of emerging tech, with a focus on IoT. Also, he kickstarted the ultimate travel pants.

 

Julia Kloiber | Germany | Julia is investigating emerging technologies and their influence on society. During her fellowship she is researching how technologies and policies have to be shaped in order to support us in tackling future challenges. She will run campaigns, work on tech and develop new narratives. Julia co-founded the Prototype Fund — a funding program for open source prototypes that has set out to make receiving grants unbureaucratic and easy. In the past couple of years she’s been running multiple projects that foster the reuse of open data and promote transparency — like the civic tech network Code for Germany. Her frustration with the lack of diversity in tech and women in leadership positions has led her to start Superrr, an international community of women* in the arts, in science, tech, journalism, activism, and more.

 

Meghan McDermott | U.S. | Meghan is prototyping the creation of an Internet Health Report at the municipal level in partnership with New York City. Since joining Mozilla in 2015, Meghan has worked across the Foundation to direct digital learning and leadership, ranging from the Hive Learning Networks to digital privacy initiatives for vulnerable communities. Guiding her work is a deep belief in the power of communities and people to make change. Her Fellowship is an exciting extension of her previous work.

 

Thomas Lohninger | Austria | Since the beginning of the European Union’s talks about net neutrality, Thomas has been an active party to the conversations. With the most recent rounds in 2016, it was made clear that there are still loopholes in the regulation, which a few telcos are taking advantage of in specific member states. As a Fellow, Thomas works to enforce the existing net neutrality legislation through tactics like litigation, research, and networking. Before his fellowship, Thomas was Executive Director of the digital rights NGO epicenter.works in Vienna, Austria. The Center of Internet and Society of the Stanford Law School holds him as a non-residential fellow. And he worked in Brussels on the European Net Neutrality regulation as Policy Advisor for European Digital Rights. Thomas’ background is in IT and Cultural- and Social Anthropology. Thomas will be working from Vienna, with frequent travel around the EU.

 

Renée DiResta | U.S. | Renée will be working closely with the Mozilla Open Innovation team to explore how we can address dis- and misinformation online. She’ll help Mozilla advance the understanding of misinformation and information quality by convening and working with platforms, researchers, and the public to develop a shared understanding and availability of reliable information about the problem. Renée will be building on some of Philip Smith‘s work from 2017, including advising on MisInfoCon and waving the banner of the Mozilla Information Trust Initiative (MITI).

 

Steve Song | Canada | Steve’s work focuses on (1) identifying regulatory and policy barriers associated with connecting the unconnected to the full diversity of the open internet, (2) promoting the viability and proliferation of Equal Rating compliant models, and (3) helping Mozilla build a strategy for longer term involvement and leadership in this space — for Mozilla and the network. Steve, is the founder of Village Telco, an enterprise that builds low-cost WiFi mesh VoIP technologies to deliver affordable voice and Internet service in under-serviced areas. He is an experienced African Telecoms and Development Analyst with over 20 years of experience in the application of information and communication technologies to address development challenges. One of his particular strengths is his ability to communicate technical concepts to non-expert audiences.

 

Jon Rogers | Germany | As a Mozilla Fellow, Jon’s work explores the human intersection between digital technologies and the design of physical of things. As Mozilla supports people working to build a more ​humane​ ​digital​ ​world, Jon is helping develop the Open IoT Studio, a project that explores the intersection between internet health and the challenge of emerging technologies. Watch Jon’s letter to the internet to learn more about his work so far.

The post Mozilla Announces 26 New Fellows in Openness, Science, and Tech Policy appeared first on The Mozilla Blog.

04 Sep 05:05

Pope Francis is passively sorry about priests abusing children

by Josh Bernoff

In the wake of the grand jury report on Catholic priests abusing over a thousand children in Pennsylvania, the Pope sent a message to his flock. His passive language is emblematic of how you write to escape responsibility. The words “I’m sorry” and “It was my/our fault” are incompatible with being the infallible leader of … Continued

The post Pope Francis is passively sorry about priests abusing children appeared first on without bullshit.

04 Sep 05:05

Distributed Office Politics

by Matt

This week I spoke with TechCrunch about one facet of distributed work that differs from physical offices — the idea of “office politics.” I can’t claim that distributed work will solve everyone’s personal differences, but I do think it relieves some of the pressures that might come from forced cohabitation and environments that are prone to interruption. They also have some great points from Jason Fried and and Wade Foster.

04 Sep 05:05

On Gratefulness: A Self-Enquiry

by Dave Pollard


photo by geralt at pixabay CC0

Many so-called non-dual ‘teachers’ recommend self-enquiry as part of the process towards awakening, enlightenment, or whatever other term they use for the realization that there actually is nothing separate, that there is only an eternal ‘oneness’.

Radical non-duality (my term), the message of Tony Parsons (who I met in Wales last year), Jim Newman (who is coming to Vancouver in October, yay!), Richard Sylvester and others, states that there is no path, including self-enquiry, to such a realization, and that all teachings (Eckhart Tolle’s, Adyashanti’s, Rupert Spira’s etc), because they acknowledge a real ‘you’ that can become something, are inherently dualistic, and inherently futile. If the self falls away, they say, it is realized that there never was a self, a separate ‘you’, and this can happen to ‘anyone’ and is unrelated to any personal path, teaching or practice one may follow. If anything, they say, self-enquiry can actually reinforce the sense of the separate self and obfuscate this realization (or at least the intellectual appreciation of its veracity).

While I have come, for now, to enthusiastically accept the message of radical non-duality, my self does not give up easily, and it is (you may have noticed) quite enthralled with the idea and practice of self-enquiry. These days, that self-enquiry centres around eight questions. Just for the record, here are those questions and my self’s somewhat paradoxical and tentative answers to them:


1. Given my life is nearly perfect, why am ‘I’ not constantly filled with gratefulness, joy and generosity?

Tentative answer: I have no free will to be anything but what I have been conditioned to be, subject to the circumstances that have arisen. Without free will, ‘my’ self can only believe, and do, what its biological and cultural conditioning can believe and do given the circumstances of the moment. Nothing is predestined, mind you — the infinite complexity of the world ensures that the nature of our conditioning and the ‘circumstances of the moment’ are infinitely variable — but ‘I’ have no free will to be grateful, joyful, generous, or anything else (in thought, feeling or deed).

‘I’ do feel that I should be grateful, joyful, and generous, but I have no control over that or anything else. I am perhaps the world’s most blessed agnostic, but no one controlled that; it was a combination of the accident of my birth and of my life’s experiences (which were determined by my conditioning and the circumstances of the moment). So I recognize that there is really no one to be grateful to, but that doesn’t stop me from thinking I should be grateful. It couldn’t have been better, or worse; this is the only thing that could have happened given my conditioning and the circumstances. And since there is (really) no time and no thing, it’s only an appearance anyway, without meaning or purpose. I can still be grateful for the accident of my birth and for my generally fortuitous circumstances, of course. But not to anyone. Grateful suggests it could have been otherwise, and it could not. As a result, it’s more that I’m relieved than grateful, for reasons explained in question 2 below.

I am perceived by most who know me as generous, but that is likely because I recognize that most others’ accident of birth and circumstances have been much less fortuitous than mine, so I am conditioned to try to share some of my good fortune. ‘I’ have no choice in the matter.

As for why I am not more joyful — why I’m not completely joyful — I think my answer to that falls out of questions 2 and 3 below.


2. Given there is no real ‘me’ and hence no ‘personal’ danger, why am ‘I’ (apparently) driven by aversion and fear rather than by passion and curiosity?

Tentative answer: Same as #1: This is my conditioned behaviour. I have been conditioned to be cautious and to see the calamities of risk-takers as “their own fault”. The things that strike terror into me — the thought of extreme or chronic suffering or entrapment, or of terrible news, or of an uncontrollable or unfathomable threat, or of wasted time, or of failure, intimidation, humiliation, incompetence or letting people down badly — prompt me to play it safe and do as little as possible rather than risk doing something that could realize any of these fears, regardless of the potential upside. I find myself saying “good enough” a lot in my life.

It is quite possible that I could try to change this conditioning, by exposing myself to risks in a manageable way and realizing that my fears are unfounded or overblown (provided my conditioning and the circumstances of the moment would let me). This is how they treat phobias. But the success rate is apparently abysmal, and it often doesn’t last. Those who undertake it evidently have enough understanding of and motivation to overcome their phobia, and the circumstances of the moment offer enough reassurances, to get them to be treated. I think I perceive my life to be too good to be motivated to try to influence my conditioning. Facing my fears stirs up much anxiety in me, so I’m unlikely to do so (thanks to my conditioning) until and unless I reach the point where the discomfort of living with the fear exceeds the dread of facing the fear (and my skepticism of being able to overcome it by facing it).

I am generally (and occasionally extremely) joyful, but the extreme joy doesn’t last. My sense is that it doesn’t for anyone. Being a self is stressful, inherently dissatisfying (there is this instinct, this vague ‘remembering’ of when there was no separation, and that that was awesome and ‘perfect’ and separation can never hope to match it). There is always something worrisome, nagging, imperfect, to overshadow the joy, to sap the energy of the self-afflicted creature.


3. Why do ‘I’ spend most of my time in escapist solo activities, when I am surrounded by natural beauty and intelligent, caring people?

Tentative answer: Same as #1: I’ve been conditioned by fear, anxiety, and exhaustion (or laziness). I feel I should be more joyful when walking in the woods, or spending time with interesting people, but I’m not. I do spend time, weather and circumstances permitting, sitting outside in the sun, on the deck of my house or on the beach in Kaua’i, and I do enjoy it. And I enjoy the company of friends. But as passionate as I am about the importance of nature and wilderness and connection, I’m pretty anxious and uncomfortable when I’m away from the comforts of home. Fear of imagined danger or misfortune or even simple discomfort (rain, cold, minor injury, getting lost) interferes with my enjoyment. Likewise, worry about other people’s potential unhappiness with me takes much of the joy of social interaction away.

This may be an expression of exhaustion, or it may be that I am so disconnected from the natural world that I can’t really appreciate it unless there’s absolutely nothing to take my attention away from it. Exhaustion is, at least for me, an inevitable part of ‘self’-maintenance. Worrying about everything wears you out.

My misanthropy is long-standing, and stems from a combination of conditioned distrust and conditioned disdain. But behind it all sits the litany of fears listed above. Being mostly alone is just easier, and now that I’m retired, mostly possible. Being open and vulnerable is, for this self, too hard, not ‘worth’ the effort.


4. What is going on when ‘I’ am stirred by music, by falling in love, by light, by warmth, by water?

Tentative answer: Chemicals arising in the body. My guess is that these activities engender chemicals in the body that are both stimulating and relaxing at the same time. That’s the worry-wort’s holy grail: Stimulation without relaxation stirs up anxiety. Relaxation without stimulation puts me to sleep. I want both together.

Immersion in water also seems to engender an immediate increase in creativity and imagination, that would seem to be also chemical.

Perhaps all these stimuli interrupt what Michael Pollan and David Foster Wallace refer to as the “default setting” — the way the brain/body normally tends to process and react to sensations, thoughts and feelings.


5. How would psychedelic chemicals, if I took them now, affect ‘my’ behaviour?

Tentative answer: Perhaps the same way as #4 — a disruption to the “default setting”. But not necessarily in a pleasant way, and probably not sustainably. It’s possible that their use might lead to a long-term or even permanent different way of thinking, feeling, “being”, or even the disappearance of the self (I wish). But while Michael Pollan and Gabor Maté have reported permanent shifts in patients’ “default setting” — lifelong cures of addiction, depression and mental illness after using certain hallucinogens — I’m skeptical: My experience is that their use is disruptive and temporarily insightful, but provide no lasting benefit. (In that sense they’re a lot like meditation and other “liberation seeking” behaviours.) When there is a glimpse, what is left when the “default setting” returns is just a desire for more and longer-lasting glimpses.


6. Were there actually glimpses, or was that just wishful thinking?

Tentative answer: Impossible to say. As I’ve described them, they seem awfully close to what others have described as glimpses, and too much for even my creative mind to imagine in a moment of wishful thinking. So I’m dubious that they were just wishful thinking. But ‘I’ will never know.


7. Is the hallucination of the separate self inherent and inevitable in creatures with large brains, brains large enough to conceive of one?

Tentative answer: No. The appearance of selves would seem a logical, if unfortunate, evolutionary development of large brains trying to make sense of sensations to advance the survival of the creatures which evolved those brains for other purposes (ie optimal feature detection). In that sense selves are much like cancers and other seemingly promising but ultimately disastrous evolutionary experiments. But evolution is just an appearance as well, an amazing fractal pattern blossoming into apparent being apparently following a set of rules. So nothing is inevitable, and, as Stephen J Gould argued in Full Houseeverything evolutionary is highly improbable, given the nearly infinite number of other possibilities and variables.


8. If there were no illusory ‘selves’, would civilization have happened, and would ‘we’ now be blithely rushing to its imminent demise?

Tentative answer: Impossible to know. Everything is just an appearance. What appears seems to be evolutionary, and consistent with conditioning subject to the circumstances of the moment. So, probably not: self-afflicted creatures seem to behave in more neurotic, desperate, dysfunctional ways, without which it seems likely we’d be like our close cousins the bonobos, content to live peacefully in balance with the rest of life, in the trees of the tropical rainforest where we emerged. Why would we want to live otherwise?

It doesn’t matter anyway — nothing matters, really. There is no civilization, no world, no place, no time, no thing.


What has all this self-enquiry taught me? That my conditioning has entrenched a well-trodden “default setting” of mostly-fearful thinking, mostly-anxious feeling and imagining, distracted, disconnected sensing, cautious and unpracticed intuiting: a shadow existence driven by ‘self-ish’ fear. And for most of my life the circumstances of the moment (and the other selves around me) have reinforced that conditioning.

Now that I’m retired, they often do not, so I am at a loss. Nothing makes sense any more, especially this “default setting”. I long to escape from it, from ‘me’. But ‘I’ have nothing else. For now at least. Ungrateful bastard that I am.

04 Sep 05:05

Tied To The Tracks

by noreply@blogger.com (BOB HOFFMAN)

In my newsletter Sunday, I republished a blog piece I wrote last week called "The Good In Online Advertising."

It was not (in my opinion) particularly provocative or much different from stuff I have been writing about for years. The thrust of the piece was pretty easy to understand -- online tracking is mostly bad and dangerous and we'd all be a lot better off without it.

My main point was that the issue of personal privacy in a democracy is a far more important matter than the (real or imagined) benefits of online tracking to advertisers.

Prof. Scott Galloway (@profgalloway) who has a huge Twitter following, picked up on a few points from the newsletter and tweeted them out. Suddenly a shitstorm of Twitter (twitstorm?) broke out.

If you have any interest in this matter I suggest you go back and read some of the threads. Here were the parts that were of most interest to me.

Almost without exception, those who disagreed with the post missed the point. Arguments were put forward that...
"targeting without tracking is entirely ineffectual"... "majority of the value in digital is tracking in some form, especially for media sites"... "then we are left with mass media, treating us all the same. No relevance"..."without tracking you can't optimize your targeting. This becomes extremely important when bidding on keywords in Google Ads."
...as if the the great public policy issue of our time is the effectiveness of banner and search ads.

Not one of the "anti's" even bothered to consider the key question: What's more important the privacy rights of individuals or the convenience of marketers?

Tracking (particularly third party tracking) is clearly an intrusion on privacy, most often done without the knowledge or consent of the person being tracked. If you think the benefits of tracking are more important than the benefits of privacy, fine. Come out and say it. But don't hide behind obfuscation and misdirection and platitudes about the interests of online advertisers.

Unsurprisingly, as far as I could tell, virtually all of the tweets in praise of tracking came from people with some sort of ulterior motive -- either a commercial interest or an ideological commitment to defend.

As far as I am concerned, if someone decides they don't mind being tracked, and don't care about  having their personal information shared or sold to third parties, that's fine with me. Or if they are OK with one type of tracking but not another, that's also fine with me. But they should be given a clear and easily understood choice. Why in the world is this controversial?

I can't imagine how any intelligent person can believe that the convenience of marketers outweighs the privacy rights of individuals.

In my opinion there is no benefit to marketers - no matter how thrilling - that is even 1% as important as upholding the long-established principles of privacy in a democracy.


04 Sep 05:04

The Back to School sale is on!

by Jeff

For some of you, it is a time to return your educational institution and continue the important process of learning about the world around you—maybe for some of you it is the first time being part of higher education, while some of you might be long-time academic researchers and associates. For those who are sick of their thick laptops weighing down on their backpacks and who would also want something with security in mind, what better way to start the school year than with a Purism laptop?!

While learning important topics like economics, computer science, mathematics, history and law, why not also be the teacher and show folks around you the importance of privacy and security? At Purism, our laptops are geared for exactly that.

Now you can save money with our back to school special. From now till September 9th, enjoy significant savings on our in-stock laptops and be protected: on any of our current Librem 13 or Librem 15 laptops, use coupon BTS-SHJXO-18 to benefit from rebates ranging from $100 to $465 (Librem 13) and from $115 to over $480 (Librem 15) depending on the configuration. The more you spend on upgrades and accessories, the greater the savings! Of course, if you want to order laptops for a whole classroom, we won’t stop you…

If you’re looking for even more affordable alternatives and don’t need the uncompromising anti physical tampering features that our TPM-enabled laptops provide, you may be interested in the non-TPM variants of our laptops on clearance (limited quantities available, depending on the keyboard layout you choose). The same coupon code applies, allowing you to grab some of those laptops for as low as $927.07!

The post The Back to School sale is on! appeared first on Purism.

04 Sep 05:04

Wow, 1200 workers convert above-ground train line in Tokyo to subway line in one night! Via...

by illustratedvancouver

Wow, 1200 workers convert above-ground train line in Tokyo to subway line in one night! Via BoingBoing https://boingboing.net/2018/08/21/watch-1200-workers-convert-ab.html

04 Sep 05:04

The “Always Check” Approach to Online Literacy

by mikecaulfield

One of the things I’ve been trying to convince people for the past year and a half is that the only viable literacy solution to web misinformation involves always checking any information in your stream that you find interesting, emotion-producing, or shareable. It’s not enough to check the stuff that is suspicious: if you apply your investigations selectively, you’ve already lost the battle.

Once you accept that, certain things become clear. Your methods of checking have to be really quick. They have to be habitual, automatic. They can’t be cognitively expensive. And those who teach media literacy have to be conscious of this trade-off between depth and efficacy and act accordingly.

What do I mean by that? Let’s use an analogy: which technique do you think would prevent more car accidents?

  • A three-second check every time you switch lanes
  • A twenty-second check executed every time you think a car might be there

There are some hard problems with misinformation on the web. But for the average user, a lot of what goes wrong comes down to failure to follow simple and quick processes of verification and contextualization. Not after you start thinking, but before you do.

I can’t get these processes down to a two second mirror-and-head-check, but I can get them close. What follows are some of the methods we teach students in our work. It will seem like there is a lot of stuff to learn here, but you’ll notice that it comes down to the same strategies repeated in different contexts. This repetition is a feature, not a bug.

Is This the Right Site?

Today’s news reveals that Russian-connected entities were trying to spoof sites like the Hudson Institute for possible spear-phishing campaigns. How do we know if the Hudson Institute site we are on is really the real site? Here’s our check:

Hudson

The steps:

  • Go up to the “omnibar”
  • Strip off everything after the domain name, type wikipedia and press enter
  • This generates a Google search for that URL with the Wikipedia page at the top
  • Click that link, then check in the sidebar that the URL matches.
  • Forty-nine out of fifty times it will. The fiftieth time you may have some work to do.

In this case, the URL does match. What does this look like if the site is fake? Here’s an example. A while back a site at bloomberg.ma impersonated the Bloomberg News site. Let’s see what that would look like:

Bloomberg

You do the same steps. In this case Bloomberg News is not the top result, but you scroll down and click the Bloomberg News link, and check the URL and find it is different. If you’re lazy (which I am) you might click that link to get to the real site.

What Is the Nature of This Site?

Let’s stick with the Wikipedia technique for a moment, because it’s useful for a few other questions. As an example, let’s take one that got past both a Washington Post reporter and the WaPo fact-checkers a month or so ago. Question: Is this article really by the lead singer of Green Day?

greenday

Let’s check:

Clickhole

Again, same process. Now does this mean that you are 100% sure that it’s not Billie Joe that wrote that article? No — there’s a slight slight chance that maybe somehow the lead singer of Green Day wrote a —

Nah, you know what? It’s not him. Or if it is, the chances are so infinitesimal it’s not worth spending any more time on it. Find another source.

How about this site, and its searing commentary on Antifa and journalists?

antifascist.PNG

Maybe you agree with this article. I don’t, but maybe you do. And that’s okay. But do you want to share from this particular site to your friends and family and co-workers? Let’s take a look!

webamren

You can dig into this if you want, and look through the numerous links in that Wikipedia page that support this description. Maybe have a little mini-forum in your head about the differences between white nationalism and white supremacy.

Or maybe — here’s a thought — find a similar article from some other site that hasn’t been called a white supremacist organization by half a dozen mainstream groups. Because no matter what you think of the article, funneling friends and family to a site that has published such sentences as “When blacks are left entirely to their own devices, Western civilization — any kind of civilization — disappears” is not ethical — or likely to put you in the best light.

Is This Breaking News Correct?

Here’s some breaking news.

breaking

More people than you would think believe that the blue checkmark = trustworthy. But all the blue checkmark really does is say that the person is who they say they are, that they are the person of that name and not an imposter.

Your two-second “mirror and head-check” here is going to be to always, always hover, and see what they are verified for. In this case the verification means something: this person works for CNBC.com, a legitimate news site, and she covers a relevant beat here (the White House):

Verified

But maybe you don’t know CNBC, or maybe you see this news from someone not verified, or verified but not as a reporter. How will you know whether to share this? Because you know you’re DYING to share it and you can’t wait much longer

Use our “check for other coverage” technique:

Manafort

When a story is truly breaking, this is what it looks like. Our technique here is simple.

  • Select some relevant text.
  • Right-click or Cmd-click to search Google
  • When you get to Google don’t stop, click the “News” tab to get a more curated feed
  • Read and scan. Investigate more as necessary.

Scan the stories. If you want to be hypervigilant, scan for sources you recognize, and consider sharing one of the stories featuring original reporting instead of the tweet.

I’m going to state this again, but if you look at that loop above you’ll see this is about a seven second operation. You can absolutely do this every time before you share. And given it is so easy, it’s irresponsible not to. I’m not going to tell you you are a bad person if you don’t do these checks, but I think in your heart you already know.

Teach This Stuff First Already

Maybe you think you do this, or you can really “recognize” what’s fake by looking at it. I am here to tell you that statistically it’s far more likely you’re fooling yourself.

If you’re a human being reading this on the internet and if you’re not a time traveler from some future, better world, there is less than a one in a hundred chance you do the sort of checks we’re showing regularly. And if you do do this regularly — and not just for the stuff that feels fishy — then my guesstimate is you’re about two to three standard devs out from the mean.

Now imagine a world where checking your mirrors before switching lanes was rare, three standard-deviations-out behavior. What would the roads look like?

Well, it’d probably look like the Mad Max-like smoking heap of collisions, car fires, and carnage that is our modern web.

I get worried sometimes that I am going to become too identified with these “tricks”. I mean, I have a rich history of teaching students digital literacies that predates this work. I’ve been doing the broader work intensively for ten years. (Here’s a short rant of mine from 2009 talking about web literacy pedagogy.) I’ve read voraciously on these subjects and can talk about anything from digital redlining to polarization models to the illusory truth effect. I’m working on a project that looks to document the history of newspapers on Wikipedia. I worked on wiki with Ward Cunningham. I ran my first “students publish on the web” project in 1997.

But I end up coming back to this simple stuff because I can’t shake the feeling that digital literacy needs to start with the mirror and head-checks before it gets to automotive repair or controlled skids. Because it is these simple behaviors, applied as habitand enforced as norms, that have the power to change the web as we know it, to break our cycle of reaction and recognition, and ultimately to get even our deeper investigations off to a better start.

I have underlying principles I can detail, domain knowledge I think is important, issues around identity and intervention we can talk about. Deeper strategies for the advanced. Tips to prevent a fragility of process. Thoughts about the relationship between critical thinking and cynicism.

But for the love of God, let’s start with the head check.

 

 

 

04 Sep 05:04

A day in the life of a Waymo self-driving taxi

Waymo is planning to launch their service to the public later this year in Phoenix and the Verge got a look at their operations there.

The ride-hailing service in Phoenix will be the company’s big public debut, and the litmus test for everyone involved in developing, testing, and marketing self-driving technology. But Waymo isn’t a ride-hailing company like Uber or Lyft, or even a fleet management company like Zipcar. It’s a tech company, and it’s about to step into completely unknown territory.

The article includes a nice detail about Ellice Perez — the business unit’s head in Pheonix. She’s all in and uses Waymo herself instead of owning a car.

⚓︎
04 Sep 04:31

There is no scenario where the Twitter we loved...

There is no scenario where the Twitter we loved in 2008 comes back.

Even if it were sold to some entity with energy, resources, smarts, and good intentions, it’s too late. It has celebrities with millions of followers. It has the president. It has millions of accounts using it for unlovable purposes.

It’s never coming back, and using your emotional energy hoping it comes back is a waste.

04 Sep 04:31

Rainier Diary #9: The Renaming

Over the weekend I renamed my in-progress app from Frontier to Rainier.

As you may recall, the app was to be a modernized, rewritten-in-Swift version of UserLand Frontier, the classic Mac scripting app.

But then this weekend I started down a slightly different path, and renamed the app to Rainier.

And here’s why: if it’s called Frontier, that implies compatibility with older versions of Frontier. There are two problems with that:

  • Achieving compatibility with Frontier is actually an extremely difficult job. So much has changed over the years.
  • Achieving compatibility also means having to live with decisions made years ago — but there are some cases where I’d rather have the freedom to make other decisions. (New mistakes, maybe!)

The app remains inspired by Frontier. It wouldn’t exist without it. The core concepts remain the same — the hierarchical database with integrated scripting language, for starters.

* * *

I don’t, at this point, have any intention of making a Linux version, though technically that would be possible, given that Swift is available for Linux. I’m sure I’ll never make a Windows version.

It’s possible that it could end up running on iOS some day. But my focus is on the Mac app, and my focus is really on Evergreen right now, which is way closer to shipping than Rainier is. (There is some overlapping code between the two apps, though. Sometimes I’m working on both apps at the same time.)

* * *

Mount Rainier is one of the tallest mountains in the continental United States. You can see it every day from Seattle except when clouds get in the way. It is a stratovolcano.

04 Sep 04:30

Dave Winer wants to get Frontier running on Lin...

Dave Winer wants to get Frontier running on Linux. Any port is a big job, but this is probably much easier than porting Frontier as-is to current macOS.

04 Sep 04:20

The Best Mosquito Control Gear for Your Patio or Yard

by Doug Mahoney
The Best Mosquito Control Gear for Your Patio or Yard

To keep mosquitoes away from your deck or patio without slathering your skin in bug repellent, get the Thermacell Radius Zone Mosquito Repellent Gen 2.0. After 45 hours researching a category full of marketing hype and debunked methods (including popular options like citronella candles), the Radius stands out by actually being effective. Its rechargeable six-and-a-half-hour battery lasts long enough to odorlessly keep a bedroom-sized area mosquito-free for an entire evening—as long as there’s no breeze.

04 Sep 04:20

Why You Should Avoid Knockoff Oral-B and Philips Sonicare Brush Heads

by Shannon Palus
Why You Should Avoid Knockoff Oral-B and Philips Sonicare Brush Heads

In several years of using an electric toothbrush, I’ve always gone with brand-name brush heads because, well, why change what is working just fine and is fairly inexpensive? But, as we are wont to do at Wirecutter, we also wondered: Is there a point to paying more for the brand-name thing?

In short: Yes. After six months of testing generic and brand-name electric toothbrush heads in a literal head-to-head comparison, we found we liked using those from Oral-B and Philips Sonicare best. Although the generic brush heads will get the job done, the bristles in the ones we tested felt stiffer (and a bit prickly, even) compared with the brand-name ones. This sounds like a minor issue, but according to Marcelo Araujo, vice president of the Science Institute at the American Dental Association, brush feel actually matters a lot when it comes to maintaining oral health.

The ADA recommends using a brush with soft bristles, as firmer brushes are harsher on gums and can lead to wear and tear and even gum recession.“Soft is a layman term we use to say that [the toothbrush is] safe,” explained Araujo. The ADA tests brushes for stiffness as part of its seal certification. Though brushes from Oral B and Sonicare and the associated heads have earned the seal, there’s no third-party guarantee that the generics will be good for your oral health, cautioned Araujo.

Moreover, we found that choosing a brand-name replacement head doesn’t cost much more than going with a generic. For our pick, an Oral-B brush, the monthly cost difference is less than the price of a small coffee from Dunkin’ Donuts, and that price gap is even smaller if you buy the brand-name brush heads in bulk.

Price per generic brush head Price per brand-name brush head Savings per month by going with generic Savings per year by going with generic
Oral-B $0.75 $3 $0.75 $9
Philips Sonicare $1 $8 $2.30 $27.60
Generic brush heads cost less, but not by much. Prices based on the largest pack available at the time of publication.

 

If, like me, you prefer more-supple bristles, consider that the additional $1.50 or so a month can make a twice-daily activity more pleasant.

How we tested and what we found

To reach this conclusion, I started by combing through the plentiful generic brush-head offerings at retailers like Amazon and Walmart to find top-rated best sellers. We identified two options with great reviews (and good Fakespot ratings): one compatible with our top pick electric toothbrush, from Oral-B, and one compatible with our favorite Sonicare model. Then, I rotated through the brush heads, using each as my toothbrush for about six weeks, twice a day.

Several replacement toothbrush heads laying on a paper towel, with masking tape covering their brand labels.
We covered up brand labels for a head-to-head comparison at a Wirecutter office. Photo: Michael Hession

In both cases, the brand-name brushes’ bristles felt slightly more supple to me than the generics’, possibly because they are longer, and, according to Araujo, might be shaped differently. Bristles with a round tip feel smoother against sensitive gums; if left with a square tip, they’ll feel a bit prickly, as was the case with the generics—or “gray market” heads, as Araujo calls them. In the case of the Oral-B brush heads, the difference was more stark: the generic brush-heads’ bristles were shorter and had less give, resulting in the harsher feel against gums that the ADA cautions against.

I then had three of my coworkers each brush once with all four brush heads, without disclosing which was the brand-name versus the generic. One coworker found the bristles on the generic replacement heads for both Oral-B and Sonicare brush handles more comfortable than the brand-name versions, though she also said that they vibrated more, making the brushing experience “a little more raucous.” The other two preferred the brand-name heads.

Michael Zhao, deputy editor at Wirecutter, tried using another brand of generic heads on a five-year-old Oral-B 3000. Although he didn’t notice much of a difference at first, “I recently switched back to the real ones after eight months of using the fake ones and it just feels so much better,” he said. Leigh Krietsch Boerner, a former senior staff writer at Wirecutter, tried yet another brand of Oral-B generics, with similar results. “They were a little ouchy hard.”

Two replacement toothbrush heads sitting next to each other, masking tape covering their brand labels.
The brand-name brush head (top) has longer bristles than the generic (bottom) for a slightly softer feel. Photo: Michael Hession

Aside from the feel, the generic brush heads I tested are in many ways just as good as the brand-name ones. They all fit onto the brushes just fine. They come with a variety of colorful rings around their bases, so that you can distinguish between brush heads if more than one person in your household uses the same type of brush handle. And while, in my experience, the plastic bristles on the Sonicare dupe had a bit of a bitter taste at first, so did those on the official Oral-B brush head (a problem I had not previously encountered, which was solvable by rinsing the brush heads with toothpaste and water). At the end of the six-week testing periods, all of the brush heads—generic and brand-name—showed similar degrees of wear and tear.

Ultimately, we feel best going with brushes that both feel a bit nicer and come with the assurance from the ADA that they’re safe to use. If you want to save money, buying brand-name brush heads in bulk is a better route than going with the gray-market options.

04 Sep 03:58

mostlysignssomeportents: h/t Fipi Lele



mostlysignssomeportents:

h/t Fipi Lele

04 Sep 03:40

Configuring Windows 10 Devices to Wake and Update Outside of Class time

by Volker Weber

Sketch

Today, many productivity hours are lost due to software updates installing during class time resulting in frustrated users. Customers that are leveraging traditional management solutions such as System Center Configuration Manager (SCCM) or other 3rd party tools don’t have an easy way of updating these devices outside of class time. Solutions such as Wake on LAN have been around for years, but with the move to wireless devices, it’s not a viable solution. SCCM supports wake timers, but only for desktop devices.

This blog post is not particularly new, but I wasn't aware of the options you have to enable automatic updates in hibernating machines at scale.

More >

04 Sep 03:35

Spionage-Trojaner und so

by Volker Weber

In der aktuellen c't beschäftigt sich eine längere Titelstrecke damit, wie man sich vor Spionage-Trojanern schützen kann. Umgekehrt gibt die Story auch Ideen, wie man Smartphones ausspionieren kann, was natürlich schrecklich illegal ist.

Ich habe mir erlaubt, beide Aspekte zusammenzufassen.

Was mich stets stört, ist der Begriff Trojaner. Die Trojaner hatten jedes Recht, sich in Troja aufzuhalten. Was sich der Sage nach da einschmuggeln ließ, das waren Griechen. Richtig muss es also heißen: Spionage-Griechen. Aber das versteht ja kein Schwein.

TrojanHorse78108973.jpg

04 Sep 03:34

Nokia updates camera app

by Volker Weber

Screenshot 20180822-122545

My Nokia 7 Plus received a new camera app today which brings the version number to 90.0.1123.20. It's a sizable update that changes the UI completely. Where you initially had to select different shooting modes from the hamburger menu, it now features a similar UX to the iPhone camera. The upgrade also adds support for Google Lens and Google Motion. Google Lens lets you perform a visual search on Google whereas Google Motion copies the iPhone Live Photos.

03 Sep 17:31

FiftyThree Apps Paper and Paste Acquired by WeTransfer Along with Its Other Assets

by John Voorhees

FiftyThree, the maker of the iOS apps Paper and Paste, has been acquired by WeTransfer, a file transfer company based in Los Angeles and Amsterdam. Paper, FiftyThree’s iPad drawing app, was named iPad App of The Year in 2012. Paste, which is FiftyThree’s iOS presentation app, allows users to create slides collaboratively.

In addition to its apps, FiftyThree is well-known for its creation the Pencil, a BlueTooth stylus that debuted before Apple’s identically-named Pencil. Although the Pencil is not mentioned by name in WeTransfer’s press release, the company is acquiring all of FiftyThree’s assets including intellectual property, which presumably covers hardware too.

WeTransfer provides web and app-based tools for transferring files among its users. In addition to offering a free version of its service, WeTransfer includes a premium paid version of its service and sells ads that appear in its web app. WeTransfer’s CEO Gordon Willoughby stated in the company’s press release that it had acquired FiftyThree to expand its ‘family of obvious creative tools, both on mobile and the web.’

FiftyThree has sought to reassure customers saying that:

For the millions using Paper and Paste, we want to assure you that we are dedicated now more than ever to building and growing both tools. This doesn’t change our path, it only accelerates it — the same great team will continue working on both tools. If you’re a paying Paste or Paper customer, nothing is changing around pricing or functionality in the near term, and we’ll keep you well-informed of any upcoming changes that may impact you. We’ve got a few big ideas cooking that we think you’ll be thrilled about.

I imagine the introduction of Apple’s Pencil took its toll on FiftyThree’s attempt to use hardware to build a sustainable business model. Hopefully, joining forces with WeTranfer will allow Paper and Paste, which are both excellent apps, to continue to be developed long into the future.


Support MacStories Directly

Club MacStories offers exclusive access to extra MacStories content, delivered every week; it's also a way to support us directly.

Club MacStories will help you discover the best apps for your devices and get the most out of your iPhone, iPad, and Mac. Plus, it's made in Italy.

Join Now
03 Sep 17:29

Dark Sky Update Consolidates Weather Data in a Single Vertical View

by John Voorhees

Dark Sky’s signature feature has always been its uncanny ability to predict when it was about to rain. The app has a reputation for working better in the US than other parts of the world, and in my experience, it’s not as good at predicting snowfall, but its ability to keep users from getting caught off guard by a sudden storm has garnered it a lot of fans.

Besides an app, Dark Sky is an API that other weather apps use to deliver their data. That means you can experience many of the benefits of Dark Sky by using other weather apps, which is what I’ve done for some time. Dark Sky was once my weather app of choice, but over time, I moved to other apps that used its API and presented weather data in ways I prefer.

Yesterday, Dark Sky's app was updated with a redesign that addresses many of the shortcomings of earlier versions. The main Forecast view now features a higher density of information and visual cues that make it easier to understand predicted weather changes at a glance. It’s a marked improvement over previous versions of the app, but the new focus on a vertical timeline comes with drawbacks that won’t be to everyone’s taste.

Dark Sky is now divided into four tabs, but most of the day-to-day functionality is found in the first two: Forecast and Map. The Forecast tab is a vertically oriented screen that starts with the current conditions at the top followed by a small radar thumbnail, an upcoming precipitation graph that only appears if there is something to report, hourly forecast, and finally, a 7-day forecast. On my iPhone X, the weather data takes up about 2.5 screens of space. Tap a day in the 7-day forecast, and it expands to show the hourly forecast for that day, extending the vertical space needed even further.

Dark Sky has added custom notifications for nine different weather metrics.

Dark Sky has added custom notifications for nine different weather metrics.

I like having a radar thumbnail near the top of the Forecast tab. It’s zoomed out far enough to see storms coming from hundreds of miles away, which is helpful, and when tapped, Dark Sky switches to its Map tab centered on the location displayed in the thumbnail.

Another new feature is in the section below the graph of the precipitation for the upcoming hour. As with the old version of Dark Sky, this section includes the familiar color-coded vertical bar to show precipitation predictions for the next 24 hours and notes regarding major changes in the weather. Now, however, Dark Sky includes a series of data points on the right-hand side of the screen that track any of nine different measurements. The data is displayed in circles positioned relative to each other horizontally to show how the measurements are predicted to change over time. It’s a clever addition that provides more information in the space available.

Although the new Dark Sky design is predominantly vertical, one place where the Forecast tab relies on horizontal navigation is at the bottom of the new hourly graph. Swiping left and right switches the graph of data points between the nine options available. As you swipe, the datasets smoothly transition from one to the other with a pleasant animation.

Dark Sky also supports horizontal swiping between forecasts for different locations, which can be set up in the app’s settings. Curiously though, the app doesn’t return to your last-viewed location when moving between the Forecast and Maps tabs. Instead, it returns to the location at the top of your saved locations list.

The 7-day forecast, which sits at the bottom of the Forecast tab’s view, is my favorite. It nicely balances the highlights of a day’s forecast, with an ability to drop into predicted hourly details with a single tap on a day.

Dark Sky's familar zoomable Map view.

Dark Sky's familar zoomable Map view.

Tapping the Map tab of Dark Sky opens a view of a globe centered on New York City. After a few seconds, the globe rotates to focus on your current location regardless of whether you were last viewing the weather for that location. It’s an odd behavior that seems to both ignore the location you were browsing in the Forecast tab and require the app to determine your location again each time the Map tab is opened. While it’s fun to idly spin the globe and zoom in and out browsing the weather in other parts of the world, the utility of the Map tab is limited.

The other significant addition to Dark Sky is custom notifications. Any of the metrics tracked by the app can trigger a notification when it’s predicted to rise or drop below a value during the day, night, or anytime. It’s a useful power-user feature, but one that would be even better if it supported multiple values so notifications could be triggered in situations like when temperatures are predicted to rise over 90 degrees Fahrenheit, with winds less than 5 mph, and humidity over 80%.

Overall, Dark Sky’s update is solid, despite a few rough edges. There’s more data presented more compactly in one screen, making it easy to access quickly. I’m not entirely sold on the unified vertical timeline though. It requires more scrolling than other weather apps, and everything feels a little crowded.

A good contrast to this approach is Hello Weather. It adopts the chunky headers of Apple Music, Maps, News, and other stock apps, which take up more vertical space, but Hello Weather relies on horizontally swipeable panels in each section to present the same information in less vertical area. It’s an approach I prefer aesthetically that also feels more modern given recent iOS design trends.

Weather apps are a challenging exercise in cramming a lot of data into a relatively small space, which lends itself to a wide variety of approaches. Although I’m not personally a fan of Dark Sky’s predominantly vertical layout, the redesign is undeniably an improvement over prior versions, and the customization options for notifications make this update worthy of another look if you haven’t tried Dark Sky in a while.

Dark Sky is available on the App Store for $3.99.


Support MacStories Directly

Club MacStories offers exclusive access to extra MacStories content, delivered every week; it's also a way to support us directly.

Club MacStories will help you discover the best apps for your devices and get the most out of your iPhone, iPad, and Mac. Plus, it's made in Italy.

Join Now
03 Sep 16:39

Preparing speeches for a friend’s wedding in It...

by Ton Zijlstra

Preparing speeches for a friend’s wedding in Italy later this week.

03 Sep 16:28

Google Pixel 3 XL Caught on Camera on Public Transit

by Evan Selleck
The Google Pixel 3 XL, along with the smaller brethren, the Pixel 3, are expected to debut in October. So it’s unsurprising to see the handset popping up in the real world. Continue reading →