Shared posts

25 Sep 22:36

Choronzon Uber

by russell davies
Please find below this fortnight's tinyletter...
 
TfL's decision to try and rein in Uber reminded me of a thing I wrote for Wired a couple of years ago. I was one of a bunch of writers asked to contribute to something about 'what we can learn from Uber'. I wanted to write a straight-forward 'don't be an evil arse' piece but was persuaded to moderate it somewhat by an editorial team who were after something more Yay Future! and friends who found (and still find) Uber incredibly cheap and convenient.

(That phenomenon is best exemplified by a quote from a respondent to Doteveryone's research: “I’ve been punched in the face by an Uber driver but I still use it because it’s the easiest.”)

Nevertheless I still managed to summon up a few convictions and pointed out that, irrespective of the actual ethical position, giant avaricious corporations eventually need people to like them. And that part of being liked means having some sense of connection to something beyond 'the market'. There's an Overton Window for regulation too, if you're not close to it even regulators who are inclined to flex in favour of innovation will be forced to act. Getting in the window means being seen to engage with civic society.

In the piece I talk about my time working with Microsoft when they were sued by the DOJ. After the suit they hired a battery of lobbyists who had two pieces of advice. 1. You should pay your lobbyists lots of money. 2. DC hates you because you're unusual, you're not like other businesses they've come across, you appear to have different behaviours and motivations, so they don't know how to deal with you.

The advertising brief we eventually got as a result of these machinations was fascinating; make Microsoft feel exactly the same as every other corporation in America. We produced an ad that made computing part of the American dream; astronauts and babies using software. I seem to remember it ran all day every day for a year, but only in DC.

Every now and then I try and find it on YouTube, but there's nothing. I wonder if that's sinister.

(There are currently 333 of you. The number 333 is used to represent Choronzon, a demon used in the mystical system created by Aleister Crowley. "An experimental multimedia project named Choronzon has existed since the late eighties, beginning as two separate and unknown cassette-culture projects, one from the west coast of the United States and the other from the eastern USA. When the internet made each project aware of the other, they fused these into one project." wikipedia)

25 Sep 22:35

5G – Part 2 – Some Thoughts On Network Slicing

by Martin

One of the new features of 5G networks is ‘Network Slicing’. So far I couldn’t really get my head around the concept, everything I heard was just too abstract to make practical sense. Finally, however, things are getting more concrete and 3GPP TS 38.300 has an interesting section of how network slicing will work on the radio network side of 5G. Let’s have a closer look.

Network Slicing in 4G LTE Networks

Let get on this from a practical point of view and by looking at 4G fist rather than 5G: The 4G LTE radio network was designed to provide wireless broadband Internet connectivity. The air interface was optimized for this purpose and does a great job at this. As a consequence, however, it is not very suitable for very low data rate communication and especially not for devices that should consume as little power as possible. This resulted in the specification of the Narrow-band Internet of Things (NB-IoT) air interface. NB-IoT can be deployed inside (inband) of an LTE carrier, in its guard band or stand-alone. Let’s think about the inband option for a moment: In effect, it means that some resources in the frequency and time domain are taken away from the LTE resource grid and used for NB-IoT. The LTE scheduler never assigns those resources to LTE devices and hence, NB-IoT is ‘invisible’ to them. NB-IoT devices on the other hand have a limited bandwidth and thus they only see their NB-IoT resources but not the larger LTE channels. And yet, they are both operating in the same ‘channel’. In other words, LTE for broadband is one (radio-) network slice and NB-IoT is another network slice, with quite different layer 2 properties in terms of bandwidth, data rate, and channel arrangements. LTE was not designed from the start for embedding another air interface so some compromises had to be made. But there you have it, LTE + NB-IoT is network slicing in action today. Network operators can either handle the LTE and NB-IoT subscribers with the same core network or they can use two independent core networks (MME/S-GW + P-GW), i.e. two core network slices. Using different core network nodes can be useful as NB-IoT traffic can be handled differently in the core than broadband LTE data. For details see my posts on NB-IoT.

5G Network Slicing

The 5G radio network (5G-NR) is designed from the ground up to support different layer 2 configurations in a single air interface channel without making costly compromises, i.e. additional overhead like in LTE to run together with NB-IoT simultaneously. TS 38.300 states that a mobile device should support at least 8 different slices but the network could support many more. Within a slice, Quality of Service (QoS) like already used in LTE today can be used to prefer some data packets over others. Further, I take it from 38.300 that slices do not necessarily have to have different layer 2 configurations on the air interface. With these two points, it’s easy to imagine how network slicing and net neutrality could not get along too well in the future. But that’s another topic not to be dwelled on today.

VoLTE and Network Slicing?

This makes me wonder if VoLTE, or whatever operator based voice services will be called in 5G, would be a service that could be put into its own slice!? In LTE today, VoLTE establishes a default bearer that is separate from the default bearer used for Internet connectivity. In practical terms this means that VoLTE uses a different virtual network interface on a device with a different IP address from the virtual network interface used for Internet connectivity. On top, VoLTE establishes a dedicated bearer for the voice packets that receive preferential treatment in the core network, radio network and air interface to ensure a constant and low delay in fully loaded cells. In other words, these packets are preferred over the Internet packets of the same and other users of the cell. In addition, methods like automatic periodic uplink transmit opportunities can be configured for VoLTE speech packets that are sent at a constant interval to reduce the signaling overhead. All of this works well today in LTE but perhaps network slicing could be used in 5G to further separate VoLTE from Internet connectivity?

Connecting to 5G Core Network Slices

Another interesting point TS 38.300 describes is that a radio network slice is connected to a core network slice. When a device attaches to the 5G radio network the gNB has to decide to which core network ‘slice’ it has to send the signaling messages. Again let’s look at LTE today: In a combined LTE/NB-IoT access network that connects to one core network (MME/S-GW) for LTE and another core network for NB-IoT this decision is simple. If a device contacts the eNB via LTE, signalling messages are sent to the LTE core. If a device starts communicating via NB-IoT, the signalling goes to the core dedicated to NB-IoT. In 5G network slicing, things will not be as simple as several radio network slices could use the same layer 2 configuration so this can’t necessarily be used to make the decision. In its current version the specification is still a bit vague but mentions that the device can help in the decision making by sending a temporary ID or (slice selection) ‘assistance info’.

Summary

Broken down like this, the concept of network slicing suddenly becomes a lot clearer.

25 Sep 22:35

"Writing should always be exploratory. There shouldn’t be the assumption that you know ahead of time..."

“Writing should always be exploratory. There shouldn’t be the assumption that you know ahead of time what you want to express. When you enter into the dance with language, you’ll begin to find that there’s something before, or behind, or more absolute than the thing you thought you wanted to express. And as you work, other kinds of meaning emerge than what you might have expected. It’s like wrestling with the angel: On the one hand you feel the constraints of what can be said, but on the other hand you feel the infinite potential. There’s nothing more interesting than language and the problem of trying to bend it to your will, which you can never quite do. You can only find what it contains, which is always a surprise.”

- | Marilynne Robinson, Finding the Right Word
25 Sep 22:35

Responsibilities and Required Skills in Recent “Data Journalist” Job ads…

by Tony Hirst

A quick peek at a couple of recent job ads that describe what you might be expected to do…

From the BBC – Senior Data Journalist. In part, the role responsibilities include:

  • generating ideas for data-driven stories and for how they might be developed and visualized
  • exploring those ideas using statistical tools – and presenting them to wider stakeholders from a non-statistical background
  • reporting on and analysing data in a way that contributes to telling compelling stories on an array of news platforms
  • collaborating with reporters, editors, designers and developers to bring those stories to publication
  • exploring and summarizing data using relational database software
  • visualizing and to find patterns in spatial data using GIS software
  • using statistical tools to identify significant data trends
  • representing the data team and the Visual Journalism team at editorial meetings
  • leading editorially on data projects as required and overseeing the work of other data team colleagues
  • using skills and experience to advise on best approaches to data-led storytelling and the development and publication of data-led projects

Required technical skills include “a good understanding of statistics and statistical analysis; a strong grasp of how to clean, parse and query data; a good knowledge of some of the following: spreadsheet software, SQL, Python and R; demonstrable experience of visualising data, using either tools or scripts; experience of GIS or other mapping software; experience of gathering information from Freedom of Information requests”.

Desirable skills include “knowledge of basic scripting and HTML, as it might pertain to data visualization or data analysis and knowledge of several of the following; Carto, D3, QGIS, Tableau”.

And over at Trinity Mirror, there’s an open position for a data journalist, where role responsibilities include:

  • Having ideas for data-based stories and analysis, on a range of topics, which would be suitable for visualisation in regional newspapers across the group.
  • Working with a designer and the head of data journalism to come up with original and engaging ways of visualising this content.
  • Writing copy, as required, to accompany these visualisations.
  • Working on the data unit’s wider output, for print and web, as required by the head of data journalism.

As far as technical skills go, these “should include a broad knowledge of UK data sources, an ability to quickly and effectively interrogate data using spreadsheets, and an understanding of the pros and cons of different methods of visualising data”.  In addition, “[a]n ability to use scraping software, and some proficiency in using R, would be an advantage”.


25 Sep 22:35

"Either the engineers must become poets or the poets must become engineers."

“Either the engineers must become poets or the poets must become engineers.”

- Norbert Wiener, 1950
25 Sep 22:35

Whither Consumer Electronics

What is consumer electronics in an age where we use software rather than (just) electrons to create value. And when devices are defined by apps rather than hardware?
25 Sep 22:35

Twitter Favorites: [bmann] Our “Emerald Isle” eggplants are yellow so I guess they’re done now. Cleaning up the garden today. https://t.co/U0GlZsDHb4

Boris Mann @bmann
Our “Emerald Isle” eggplants are yellow so I guess they’re done now. Cleaning up the garden today. pic.twitter.com/U0GlZsDHb4
25 Sep 22:35

iPhone 8, die kleine Schwester des iPhone X

by Volker Weber

iphone8plus

Wer mag schon das zweitschönste Auto oder das zweitbeste Essen? Deshalb warten die Apple-Fans auf das iPhone X. Dabei liefert schon das iPhone 8 bemerkenswerte Ergebnisse, vor allem in der Kamera-Software.

More >

25 Sep 22:35

Reflecting on coffee [Flickr]

by vanderwal

vanderwal posted a photo:

Reflecting on coffee

25 Sep 22:35

Reflecting on coffee [Flickr]

by vanderwal

vanderwal posted a photo:

Reflecting on coffee

25 Sep 22:35

Alternatives to Typed Holes for talking to your compiler

by Chris Allen

Rejected title: Type Praxis

I frequently see people recommend that others use typed holes. I think people are more apt to recommend typed holes than the alternatives because it’s a bespoke feature intended to enable discovering the type of a sub-expression more easily. Which is fair enough, except it doesn’t really have a good use-case! I will demonstrate in this post why.

I frequently find myself relying on GHC Haskell’s features in order to off-load brain effort. The idea behind typed holes is that if you have an incomplete expression and aren’t sure what type the remaining part should be, you can ask the compiler! Lets reuse the example from the Haskell Wiki: https://wiki.haskell.org/GHC/Typed_holes

The idea here is that we aren’t sure what should go at the end of the final line and we’re using _a to ask GHC what the type of _a should be. You get a type error that tries to describe the typed hole as follows:

    • Found hole: _a :: a0
      Where: ‘a0’ is an ambiguous type variable
      Or perhaps ‘_a’ is mis-spelled, or not in scope
    • In the first argument of ‘show’, namely ‘_a’
      In the first argument of ‘Just’, namely ‘(show _a)’
      In the expression: Just (show _a)
    • Relevant bindings include
        a :: a
        pleaseShow :: Bool -> a -> Maybe String

Okay so here’s the problem. There’s a Show constraint on a but the typed hole message doesn’t bother saying so:

    • Found hole: _a :: a0

This represents sort of a problem. Typeclass constraints aren’t always as syntactically obvious as they are from the declaration of pleaseShow here:

pleaseShow :: Show a => Bool -> a -> Maybe String

Sometimes they arise from other sub-expressions in your code and aren’t manifest in the type of your declaration!

You can’t productively point new people to typed holes because they’ll get extremely confused about type variables that have no constraints. If they’re reading good learning material, they’ll know that means they can’t actually do anything with something that is parametrically polymorphic. Even that framing aside, they just won’t know what terms are available to them for anything polymorphic.

Then we come to the expert. The expert is more likely to be working with code leveraging typeclasses and polymorphism and therefore…typed holes is of less help to them. If they’re aware of what typeclass constraints are attached to a type variable, fine, but the compiler is still forcing the programmer to juggle more context in their head than is really necessary.

In which I offer a better alternative

pleaseShow :: Show a => Bool -> a -> Maybe String
pleaseShow False _ = Nothing
pleaseShow True a =
  let x :: z
      x = a
  in Just (show undefined)

This time we get an error that mentions where the original type came from along with the relevant typeclass constraints:

    • Couldn't match expected type ‘z’ with actual type ‘a’
      ‘a’ is a rigid type variable bound by
        the type signature for:
          pleaseShow :: forall a. Show a => Bool -> a -> Maybe String
      ‘z’ is a rigid type variable bound by
        the type signature for:
          x :: forall z. z

Keep in mind, this isn’t perfect! It’s not strictly the same as typed holes either as it’s more about contradicting the compiler about what type a had in order to discover what its type is. However, at least this way, we get a more complete picture of what the type of a is. Also note how I used undefined in order to ignore the parts of my code I wasn’t interested in getting errors about. This isn’t a perfect fit here as it results in GHC wanting to know which type it’s meant to expect from undefined, but in more typical circumstances, it works great for positing hypotheticals without bothering to write the actual code.

We’re about to do something more gnarly looking in the next section, the tl;dr is this:

TL;DR

Use let expressions, undefined, impossible types and the like instead of typed holes. And don’t recommend Typed Holes to new people, they’re more confusing than helpful and the facilities of typed holes don’t scale well to more complicated contexts anyway.

Tackling slightly more complicated situations


Warning: If you haven’t worked through about 2/3s of the Haskell Book or possess the equivalent practice and knowledge, you are unlikely to grok this section.

Sometimes you want to be able to posit something or lay down types for sub-expressions in a situation where you have a polymorphic type arising from a typeclass instance or function declaration. In those situations, knowing how to combine ScopedTypeVariables, InstanceSigs, and let expressions can be very valuable!

What if we’re stumped on something like this?

So we try to start by assigning a type to a sub-expression:

And get the following type error:

    • Couldn't match expected type ‘z’
                  with actual type ‘f1 (f2 (a -> b))’

Fair enough, what if we try to make the types agree?

We get a type error?!

    • Couldn't match type ‘f1’ with ‘f4’
      ‘f1’ is a rigid type variable bound by
        the type signature for:
          doubleBubble :: forall (f1 :: * -> *) (f2 :: * -> *) a b.
                          (Applicative f1, Applicative f2) =>
                          f1 (f2 (a -> b)) -> f1 (f2 a) -> f1 (f2 b)
      ‘f4’ is a rigid type variable bound by
        the type signature for:
          x :: forall (f4 :: * -> *) (f5 :: * -> *) a1 b1. f4 (f5 (a1 -> b1))

The issue is that types usually only last the scope of a single type signature denoted by ::, so the variables f1, a, b, and the like can only be referenced in our declaration. That kinda sucks, how do we keep referring to the same type variables under our declaration? ScopedTypeVariables!

This now type-checks because we used forall to tell GHC that we wanted those variables to be lexically scoped! Now we’re really cooking with gas. Lets follow a chain of experiments and how they change our type errors:

    • Couldn't match expected type ‘z’
                  with actual type ‘f1 (f2 a -> f2 b)’
    • Couldn't match expected type ‘z’ with actual type ‘f1 (f2 b)’

And now we’re done:

The intuition here is that we have to applicatively (monoidal functor, remember?) combine the * -> * kinded structure twice,

Once for f1 of the function and f1 of the value, once for f2 of the function and f2 of the value.

Prelude> :t (\f a -> f <*> a)
(\f a -> f <*> a) :: Applicative f => f (a -> b) -> f a -> f b
Prelude> :t (\f a -> (fmap (<*>) f) <*> a)
(\f a -> (fmap (<*>) f) <*> a)
  :: (Applicative f, Applicative f1) =>
     f1 (f (a -> b)) -> f1 (f a) -> f1 (f b)

The following doesn’t fit because we end up triggering the Reader (function type) Applicative:

Prelude> :t (\f a -> ((<*>) f) <*> a)
(\f a -> ((<*>) f) <*> a)
  :: (a1 -> a -> b) -> ((a1 -> a) -> a1) -> (a1 -> a) -> b

Rewriting the working solution a little:

Prelude> let apply = (<*>)
Prelude> let doubleAp f a = apply (fmap apply f) a
Prelude> :t doubleAp
doubleAp
  :: (Applicative f1, Applicative f) =>
     f1 (f (a -> b)) -> f1 (f a) -> f1 (f b)

Then breaking down:

  1. This apply grafts in the pre-lifted apply, cf.
Prelude> import Data.Void
Prelude> let v :: Void; v = undefined
Prelude> let doubleAp f a = v (fmap apply f) a

<interactive>:104:20: error:
    • Couldn't match expected type ‘f1 (f a -> f b) -> t1 -> t’
                  with actual type ‘Void’
  1. This fmap lifts a regular apply into a type that can graft together two values embedded in f such that the type is: f a -> f b, cf.
Prelude> let doubleAp f a = apply (v apply f) a

<interactive>:105:27: error:
    • Couldn't match expected type ‘(f0 (a0 -> b0) -> f0 a0 -> f0 b0)
                                    -> t -> f (a -> b)’
                  with actual type ‘Void’
  1. This is the apply lifted by fmap, transformed from:

(f0 (a0 -> b0) into f0 a0 -> f0 b0

(The void error here is less useful)

Kicking in the contradiction we get for a if we replace it with the Void typed v variable:

Prelude> let doubleAp f a = apply (fmap apply f) v

<interactive>:107:41: error:
    • Couldn't match expected type ‘f1 (f a)’ with actual type ‘Void’
    • In the second argument of ‘apply’, namely ‘v’
      In the expression: apply (fmap apply f) v

Not bad eh? I find it’s better to teach people these techniques than to point them to typed holes, but reasonable minds disagree. Even when a learner is relatively early in the learning process, these techniques can be made approachable/digestible.

That’s all folks. Below is just a demonstration of the missing-constraint problem with an example from the Haskell Wiki.

Re-demonstration of the missing constraint problem using the Haskell Wiki’s example

code/FreeMonad.hs:20:23: error:
    • Found hole: _a :: f (Free f b)
      Where: ‘f’ is a rigid type variable bound by
               the instance declaration at code/FreeMonad.hs:17:10
             ‘b’ is a rigid type variable bound by
               the type signature for:
                 (>>=) :: forall a b. Free f a -> (a -> Free f b) -> Free f b
               at code/FreeMonad.hs:19:10
      Or perhaps ‘_a’ is mis-spelled, or not in scope
    • In the first argument of ‘Free’, namely ‘_a’
      In the expression: Free _a
      In an equation for ‘>>=’: (Free f) >>= g = Free _a
    • Relevant bindings include
        g :: a -> Free f b (bound at code/FreeMonad.hs:20:14)
        f :: f (Free f a) (bound at code/FreeMonad.hs:20:8)
        (>>=) :: Free f a -> (a -> Free f b) -> Free f b
          (bound at code/FreeMonad.hs:19:3)
Failed, modules loaded: none.

^^ Look ma, no Functor.

_a :: f (Free f b)
instance Functor f => Monad (Free f) where

Not consistently, but I’m more likely to get better type errors when I create contradictions manually via let expressions than I am using typed holes.

I know this site is a bit of a disaster zone, but if you like my writing or think you could learn something useful from me, please take a look at the Haskell book I've been writing. There's a free sample available too!

Posted on September 23, 2017

25 Sep 22:34

Top 10 Things We Ate And Drank At Feast Portland

by Meighan

BY MEIGHAN MAKARCHUK, EDIBLE CANADA

A team of five of us from Edible Canada just returned from Feast Portland. We spent our time getting inspired by the talent and tastes coming out of the largest food festival on the West Coast, spotting trends, sampling new products and meeting experts in the industry. Reflecting back on all the things we tasted over the four day festival it’s difficult to pick favourites, but I’ll try!

#10 – The Nashville Hot Fried Chicken Sandwich by Lardo at the Sandwich Invitational

The judges agree with us, because this mini sando ended up winning the competition.

#9 – A Negroni Made by a Robot at the Sandwich Invitational

Hendrick’s Gin was on site with a steam punk styled machine that (as you can tell by the title) made negronis to order.

#8 – Blueberry Basil Sangria Shave Ice from Wailua Shave Ice at the Grand Tasting

A Pacific North West twist on the Hawaiian classic! We could have eaten 10 of these!!

#7 – Green Chili Cheeseburgers by Pizza Jerk and Bunk Sandwiches at the Night Market

Soft bun, juicy meat, melted cheese, delicious sauce, so good.

#6 – Cochinita Pibil Croquettes by Bar Amá at the Night Market

Crispy croquettes filled with slow cooked Mexican spiced pork, fried light and served with jalapeno dressing.

#5 – Grilled Tomahawk Steaks by The Country Cat’s Adam Sappington at Smoked

After grilling to perfection these steaks were sliced off the bone and served on fresh rolls slathered in bone marrow sauce. SO GOOD!

#4 – Marrow Bones Topped with Beef Tartare by St. Jack’s Aaron Barnett at Smoked

Bone marrow again! This time as the feature. Topped with smoked beef tartare and fresh horseradish. We’re sensing a trend.

#4 – Quail by Irvings Kitchen at Smoked

Perfectly grilled half quail stuffed with Indian spiced goat sausage served with pickled raita and fresh plum chutney. Wow!

#3 – Bulleit “Smoke Signals” Cocktail at Smoked

We drank a lot of Bulleit Bourbon at Feast (and took several naps in their trailer, thanks guys!) but this cocktail infused with smoke was especially tasty.

#2 – Brunch Trio from Chef Óli Gústa of KEX Hostel at Brunch Village

All the way from Reykjavík this trio of Icelandic brunch items was unique and delicious. We were especially fond of the wild mushrooms.

#1 – Lamb Sandwich by Maya Lovelace at Brunch Village

Lamb rubbed with coffee and cacao then smoked and slow roasted, served on an angel biscuit with smoked cheddar, marionberry bourbon BBQ sauce and crispy okra.

Did you attend Feast this year? What were your favourite dishes and drinks?

The post Top 10 Things We Ate And Drank At Feast Portland appeared first on Edible Canada.

25 Sep 22:34

450 Railway Street

by ChangingCity

The zoning for ‘Railtown’, the Downtown Eastside industrial area around Railway Street was recently re-worked as ‘I-4’. Here’s the first project to reflect that zoning change, designed by Mallen Gowing Berzins Architecture (MGBA). Buildings can now potentially have five times the floor area of the site, and this seven storey building proposes just that, for a total of 150,000 square feet of space. It would have manufacturing uses on the first six floors; General Office uses on the sixth and seventh floors and two restaurants on the first floor.

 


25 Sep 22:34

Charge a lot and deliver an absurd level of quality and service

by Josh Bernoff

Just because you’re talented doesn’t mean you need to be arrogant. That’s what I learned from my remodeling contractor, and it’s my philosophy, too. I recently launched a significant remodeling job on my 100-year-old house: rip and replace everything in our two main bathrooms; replace a rotting front portico; and update a laundry room with … Continued

The post Charge a lot and deliver an absurd level of quality and service appeared first on without bullshit.

25 Sep 22:34

Stuff that (suddenly) works :: Eve Weather

by Volker Weber

109c47fd24d9d2e0c714fd6c7c3c79f2 f5c62ee2264db24f66f81ab78ee65c7b

It's been almost two years since I gave up on the Eve Weather. Or I should say almost gave up. I just left it where it was, exchanged the batteries once, and it kept on doing its thing. Sometimes I would open the app and let it fetch weeks of data, but I did not care much about it.

Boy, have things changed.

Elgato fixed the barometer settings, Apple fixed HomeKit, and with iOS 11 Apple also fixed Bluetooth. And suddenly Eve Weather works as it always should have. Elgato was early in on HomeKit and I believe they hurt themselves big time. But finally things start to improve. More HomeKit gear is showing up, not the least because Apple went from hardware based authentication to software based, which makes it a lot easier to build HomeKit gear.

I am glad I held onto the Eve Weather and that I can reverse my judgement.

25 Sep 22:34

New WebKit Features in Safari 11

by Jon Davis

With the release of iOS 11 and macOS High Sierra, the new Safari brings impressive performance improvements and great new WebKit features to the web. This release takes bold steps to curb all too common annoyances that have become pervasive across the web. It’s important for developers to be aware of how they might impact their sites. WebKit includes a JavaScript engine that is faster than ever and adds transformative features like WebAssembly and WebRTC. We can’t wait to see what developers will build with them.

Here are the highlights of the features that make Safari 11 such a significant release.

WebRTC and Media Capture

WebKit support for WebRTC and the Media Capture and Streams API brings real-time communication between browsers to Safari. The combination of support for both technology standards enables developers to bring video conferencing experiences to the web without the use of plug-ins. WebKit uses libWebRTC under the hood for interoperability and a solid foundation of features for efficient video conferencing.

Read more in the WebKit blog post about WebRTC.

WebAssembly

WebKit added support for WebAssembly as a complement to JavaScript programs. It is a low-level binary format designed to be a compilation target for existing languages like C++. It can’t do everything that JavaScript can, but it works together with JavaScript to accelerate computationally-intense operations. The implementation in WebKit supports both x86-64 and ARM64 platforms.

Learn more about WebAssembly in WebKit.

Variable Fonts

Developers can improve the loading performance on their site and provide designers with more control over typography using Variable Fonts. It is a specially formatted font file that contains values describing font variations across different axes of features like font weight, size, or oblique angles. The implementation in WebKit also adds CSS property support that can be animated, allowing web authors to incorporate fluid motion into typography changes.

Read more about Variable Fonts on the Web to learn more.

Timing APIs

Support for Resource Timing, Performance Timeline, and User Timing APIs in WebKit enables developers to measure performance characteristics of their web applications. The Resource Timing API can gather detailed network timing data, such as the time taken to fetch a specific resource. Performance Observers allow you to gather timing metrics asynchronously without blocking the application. While the User Timing API allows developers to set application-specific timestamps that are tied in to the browser’s performance timeline.

Read the Resource Timing, Performance Timeline, and User Timing specifications for more details.

WebCrypto API Updates

WebCrypto API support was updated in WebKit to include a standards-compliant SubtleCrypto implementation. This includes DER encoding support for importing and exporting asymmetric keys. Time-consuming cryptography methods now execute asynchronously and can even run in a Web Worker. Support for a number of new cryptographic algorithms adds new functionality, better efficiency, and improved security.

Learn more about the WebCrypto updates in WebKit.

Web Inspector Improvements

Web Inspector sports several useful new features for developers. When the system is set to a right-to-left language, Web Inspector will display a right-to-left user interface layout. It also added a new Settings tab for Web Inspector preferences. In the Network tab, Web Socket connections can now be inspected to show data being communicated across the connection. Finally, in the Elements tab developers can set debugging breakpoints on elements when the subtree or attribute is modified, or when the node is removed.

Intelligent Tracking Prevention

WebKit identifies cross-site tracking on websites you visit with machine learning, and shuts it down. This prevents ads that follow users around the web, but it also helps them have more control and awareness of the sites and services using their data. It’s a feature that protects users and enforces better user privacy practices across the web.

Find our more about Intelligent Tracking Prevention in WebKit.

Video Auto-Play Blocking on macOS

The auto-play blocking policy introduced on iOS last year inspired a new video auto-play blocking feature in Safari on macOS. Simply put, auto-play video with sound will be paused. Video elements without audio tracks, or muted audio can still auto-play. This release also includes support for the play method of the video element to return a promise to easily handle successful and unsuccessful video playback.

Read more about Auto-Play Blocking on macOS with a helpful example on using a Promise to handle auto-play success or prevention.

More Web Platform Features

Support for history.scrollRestoration was added to give developers control over when to maintain scroll position when a user navigates back through browser history.

New CSS Fill and Stroke Module support gives developers more tools to control how text and SVG artwork is painted with new fill- and stroke- properties.

An improved Flexbox implementation brings it up to match current specifications and better layout performance.

CSS Scroll Snapping was updated to add scroll snapping to the main document frame, overflow scrolling containers, and adds support for scroll-snap-proximity.

User Experience Enhancements

There are also several user focused changes to enhance the user-experience that can impact web development. Text rendered on transparent layers match regular text for consistently beautiful text. Decoding large images happens asynchronously to keep animations smooth dropped frames in animations. Scrolling speed is now consistent between the top level document, iframes, and across web views in apps. Lastly, when sharing a link to an article on iOS, the canonical link of the article will be used.

Feedback

All of these improvements are available to users running iOS 11 and macOS High Sierra, as well as macOS Sierra and OS X El Capitan. These features were also available to web developers with Safari Technology Preview releases. Changes in this release of Safari were included in the following Safari Technology Preview releases: 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36. Download the latest Safari Technology Preview release to stay on the forefront of future web features. You can also use the WebKit Feature Status page to watch for changes to your favorite web platform features.

We love hearing from you. Send a tweet to @webkit or @jonathandavis to share your thoughts on this release, and any features you were hoping for that didn’t make it. If you run into any issues, we welcome your bug reports for Safari, or WebKit bugs for web content issues.

25 Sep 22:33

Register: Better In App Billing Testing on Android

by Howard Goldstein
Illustration by Kevin Zweerink

Google Play Store’s In-app Billing API makes purchases and subscriptions easy. In just a few calls, your app can purchase items and subscriptions, verify previous purchases, etc. However, at The New York Times we ran into limitations while following Google’s recommended practices for testing our app’s use of the Billing API.

What Google offers on their Testing In-app Billing page:

Static responses allow a developer to handle different return codes on API calls (i.e. canceled, item_unavailable). This testing works by passing special product codes to the API to get the desired response. The solution is extremely limited. Since actual product codes cannot be passed, it cannot be used for integration testing. Also, it cannot be used to test any call other than REQUEST_PURCHASE on non-subscription items.

Test purchases are much more powerful. All API calls interact with the Google Play app exactly as with non-test purchases without anyone’s credit card being charged. Still, there are numerous limitations with test purchases:

  • Since the app communicates with the actual Play Store app, there needs to be an actual app published in the Play Store in the alpha or beta channel. This can be a barrier in the case of new development.
  • The testing app needs to be the same package and signed with the same key as the app in Google Play. This presents a problem when testing the debug version of the app, which is signed with a debug key, and might be a different package.
  • The items being purchased must be published in Google Play. It is possible that items may not be ready to be published at development or testing time. Also, published items cannot be unpublished requiring some fields of the product to be locked in at testing time.
  • Test purchases can only be done by testers whose Gmail addresses are registered with the developer account on Google Play Console. Those accounts must also be active on the testing device.
  • Since the state of purchases is maintained within Google Play, it can be difficult to get into a desired state. For example, an app may present an option to purchase a subscription only if the user does not have an existing subscription. Once the tester purchases, she may need to repeat the test. This can only be done by cancelling the purchase. But when a purchase is canceled, it is still valid for the rest of the day. There is no quick way to return the tester to the state prior to the purchase.
  • Test purchases only offer “happy path” testing. For example, there is no way to test how an integration handles a failed call to getProductDetails.

To get around these problems, we developed Register, an open-source library and companion app that allows seamless mocking of responses from Google Play’s In-app Billing.

Similar to a mock web server, you can point your app to use Register rather than the real Play Store In-app Billing implementation. Using Register, you will be able to validate in advance whether purchasing flows work correctly.

With minimal change to source, API calls are handled by Register’s service, rather than Google Play’s. In addition, the Register app allows testers to control the state of purchases in a mock store as well as control the response code of API calls. To understand how it all works, let’s take a look at a typical In-app Billing call. Let’s say we want to know which items a user has already purchased. Assuming we have followed Google’s initial instructions for implementing In-app Billing, we just need to create a service connection:

https://medium.com/media/a69121f7a2d636b5a779cdc0e8cee026/href

where mServiceCon is a service connection that make the actual call:

https://medium.com/media/e4cace5395611c4888ae95d7e4dda007/href

Register takes advantage of In-app Billing’s use of an .aidl file to call Google Play app’s service. The Register library contains an interface, GoogleServiceProvider, which mirrors the calls of the .aidl file. There are two implementations: GoogleServiceProviderImpl is a pass-through to the Google Play App service. GoogleServiceProviderTesting works against a second .aidl file which has the same interface, but a different package. These calls are handled by the Register service. This is all invisible to the client code. The only change required is to obtain the service intent using a helper method from the Register library.

https://medium.com/media/f5364d1c46ace9d4e6421829bcdfcd24/href

The googleServiceProvider parameter can be either GoogleServiceProviderImpl or GoogleServiceProviderTesting. Typically, GoogleServiceProviderTesting would only be built into testing versions of the app. The Register sample app shows an example of a switch that toggles between the two implementations.

Beyond this small code change, Register needs information about products in order to mock the store. This is done by the configuration file register.json.

https://medium.com/media/1a44aaa176b19aa08d8729d073cee2c4/href

This file, taken from the Register sample app, contains two purchase items: an in-app purchase, and a subscription. It also includes two user emails, which will be included in the purchaseToken upon purchase. At this time, the file needs to be manually pushed to the device (adb push register.json sdcard/) but a future version will automatically push the file from the project and possibly install the Register app. Until it does this push, you will need build the app from the repository (./gradlew app:install). To use Register from your app, you will also need to include the library in build.gradle:

https://medium.com/media/0e7bc46856c3ac8d82cfeb44de8ba442/href

Once the code is properly calling Register’s bindings and the config file is in place, the Register app should be run once for the first time in order to grant permission for access to external storage (for API 23+). The app will also indicate if it could not read the config file. If all is well, testing can begin. Purchases can now be made. Upon purchase, a Register purchase dialog replaces the Google Play dialog.

Once purchases are made, they are reflected in subsequent calls to getPurchases. Additionally, they can be managed in the Register app. Purchases can be viewed and removed.

Register also allows testers to see how apps react to non-successful return codes from the API. In the example below, a tester changes the return code on a buy() call to RESULT_ITEM_UNAVAILABLE. Then, they return to the app and receive an “item not found” dialog on purchase.

Register has been used to test purchasing flows of our flagship Reader app for three years and counting. While we have found it very useful, there is still work to be done:

  • Many features in the Play Store are not yet supported in Register, for example: support for multiple currencies, multiple languages, timely expiration of subscriptions, free trials, and introductory prices.
  • If your integration includes receipt verification, you will need to account for the receipts returned by Register (at some point, we may open-source our own internal system).
  • Google has just released Play Billing Library which, because it layers on top of In-app Billing, will interfere with Register.

We have no doubt that, with a little help from the community, we can make Register an all-in-one payment testing solution. In the meantime, we look forward to any feedback from you all.


Register: Better In App Billing Testing on Android was originally published in Times Open on Medium, where people are continuing the conversation by highlighting and responding to this story.

25 Sep 22:33

Thinkpad 25 Anniversary Edition

by Volker Weber

Lenovo-ThinkPad-25-1506089382-1-0

Winfuture has leaked images and specs of a 25 years anniversary edition Thinkpad. It looks to be based on the current T470 model. Look at all the ports! Fullsize Ethernet!

Lenovo-ThinkPad-25-1506089389-1-0

I am a very early ThinkPad user. I actually have one that is already 24 years old. Will need to post some photos. It looks like this.

More >

25 Sep 22:33

“It rains in the forest long after the sky has cleared”

by Chris Corrigan

Isn’t that beautiful image? Here on the west coast of Canada the Douglas-firs and cedars and hemlocks that cover the mountains and islands rake the sky for moisture. As the rains return in the fall, the trees help the forest drink. Rain showers pass through and for hours afterwards, the trees drip water onto the forest floor, feeding all the understory and the mushrooms that keep them alive.

That image was one given to me by Chris Weaver, a fellow Open Space Technology facilitator and a poet and a friend who spent years on this coast, south of me, in Washington State.  I say friend, in a particularly 21st century way. We never met in person, but the beauty of his words, our shared professional growth and our email exchanges from 1998 to 2006 were rich and playful and full of depth. He brought out a part of myself that I loved.

Chris died the other day, the second of my friends this summer to succumb to suicide from depression.

He is being remembered by friends and colleagues the world over, because his death was untimely and his life was one that touched many people very deeply, even if we were not always at his side.

When my father in law died in 2004, he consoled me this way:

my whole heart descends with you to that place of grieving, all interlaced with
the joy of life well-lived – the test so finely and passionately played in
sun and rain and mud.
He was referring to Test cricket in that blessing, a sport about which he knew nothing but he enjoyed witnessing the banter between me and Alan Stewart about the Australia-India test series of 2004.  He could take something like that and, yes, weave it into a consolation.
Later that month, our mutual friend Ashley Cooper hosted a small conversation on her blog about how we all wanted to be remembered, and Chris shared this:
it’s funny, i have two pieces of music that are back-to-back on a cd called “the gentle side of john coltrane,” and for some reason when i listen to them, i often think, those two songs are all i need for my memorial. they are about feeling it all, and releasing it all into joy. track 11 is “in a sentimental mood,” duke ellington’s tune, a rare time when coltrane and ellington recorded together. track 12 is called “dear lord,” with mccoy tyner back on the keys, & if my life has a theme song, that’s it.

since you’re taking notes for the event ash, they’re both slow-dances

Well, the time has come for us to remember Chris, and so, here are those two pieces of music.

In that post I shared a vision for my own memorial in which I said that I’d love an Open Space with everyone who knew me to be gathered together to talk about good work they could do in the world. To that idea Chris Weaver simply replied:

“i’ll be there, chris (even if my own memorial comes first!)”

Chris’ words are spanning the globe right now as his colleagues and friends remember him. Cherish these drops of rain. Long after the storm has passed, they continue to slake our thirst.

Godspeed friend. See you at my memorial.

25 Sep 22:33

In Pursuit of Mental Plasticity

by Eric Karjaluoto

Most are hard set against changing their beliefs. This stance impedes learning and growth—and threatens us as a species. What if the antidote is to reframe our beliefs as evolving? Although difficult to implement, this new perspective might change your life.

bent spoon

Humans like knowing where they stand. In one way, this is efficient. It helps us self-organize, find common ground, and avoid awkward social interactions. For example, when I learn that you like mountain biking, we have something to talk about. Or, when I realize that you’re of a particular faith, I’ll avoid talking about atheism—to avoid potential awkwardness.

Some key beliefs also inform how we interface with the world. My belief in not causing harm to other beings informs what I eat. My belief in family helps me prioritize how I allocate my time. My belief in not lying makes me a worse salesperson, but a better advisor/collaborator. These beliefs serve as a kind of filter for making decisions. Without them, I’d flail more than I already do.

The binary nature of beliefs

Beliefs vary from the sacred to the trivial. You choose to believe in a religion (or not). You do the same with sports teams, political parties, and even debates about flat or sculpted buttons. Did you like dinner? How was the movie? Would you go there again?

Run through any of the above topics/questions, and I bet your responses will be binary. You’re Catholic, love the Montreal Canadiens, and vote Conservative. You think flat design is a joke, liked dinner, hated the movie, and wouldn’t go there again. This is a checkbox approach to life that most accept. However, in most situations there are more than two possible states.

Sometimes those who wield power use our divisive beliefs against us. For example, Donald Trump crafted a binary illusion (left vs. right) to manipulate the public. He simplified all debate to “us” versus “them”—and everyone played into this plot. Some considered themselves the enlightened, forced to suffer a bunch of inbred rednecks. Others saw themselves as the very fabric of the nation. They were the neglected everyman, facing an army of terrorists, freeloaders, and left-wing commies.

“Humans also have a propensity to seek patterns, so we bend over backwards to connect unrelated facts…”

Amelia Tait

Trump later did the same to journalism. Think about this: until Trump, most appreciated that journalists are largely non-partisan, and in pursuit of the truth. By doggedly repeating his “fake media” rhetoric, though, Trump cast doubt on journalists (like my friend Michelle). Meanwhile, he legitimized con artists like Alex Jones, who essentially make stories up to further their own interests. In doing so, Trump crafted the illusion that there were two “sides” to journalism—a pursuit that’s actually predicated on truthfulness, accuracy, objectivity, impartiality, fairness and public accountability.

Trump’s demonization of media shows how beliefs are weaponized—and used to set us against one another. Tribalism is nothing new, but recently it seems as though the imperative to pick a side is greater. You’re in or you’re out. If you’re neither, you’re undecided. And if you change your mind, you’re accused of flip-flopping.

Our beliefs limit us

The limitations imposed by beliefs aren’t always external. They’re often self-imposed. Our environment (e.g., elders, peers, community) shape our beliefs. With time, we discover less familiar perspectives and evidence that might refute our beliefs. The logical response would be to weight our beliefs against this new information. If it seems credible/true we adjust our viewpoint accordingly.

I don’t think this happens most times, though. It seems like beliefs, don’t shift much. It’s as though once we choose a set of beliefs, we spend the rest of our lives only absorbing information that supports these viewpoints—even if facts clearly indicate otherwise.

This tendency to remain in stasis comes with huge ramifications. Marrying one belief halts learning. This diminishes our ability to understand matters. We start to rely on conjecture, instead of seeking out facts. This perpetuates common falsehoods. You’ve probably heard how a frog placed in boiling water will jump out—but, if placed in tepid water, slowly brought to a boil, the frog won’t notice. Well, it’s nonsense. (Here are some other common fallacies.)

Many commonly held beliefs are inaccurate. Nevertheless they lead us to make bad decisions. Some believe vaccines cause autism. (They don’t.) Some believe the bible describes the anti-Christ as Barack Obama. (It doesn’t.) Then of course, some still believe the earth is flat—so there’s that. Meanwhile, the president of the United States believes that climate change is a falsehood.

OK—but couldn’t it work?

Last winter, I wrote an article explaining why we, at smashLAB, make our files available to our clients. In it, I encouraged designers to stop holding their working files so closely. This approach runs contrary to most conventional practice in design. So, I understood why many responded with cynicism.

At the same time, the change-averse response was surprising. While I appreciate that I was going against convention, what did anyone have to lose by considering an alternative approach? This was bothersome for me, given how much success we’ve found through our more relaxed policy. (I should note that I have little to gain from anyone employing, or avoiding, our approach.)

“…our preexisting beliefs, far more than any new facts, can skew our thoughts and even color what we consider our most dispassionate and logical conclusions.”

Chris Mooney

From a testing standpoint, this mistrust of a different option didn’t make any sense. A rational approach wouldn’t be to outright dismiss it. One would benefit more by asking questions and demanding proof. They might even test the approach, and evaluate its viability, for themselves. Again, most didn’t seem willing to do so. This is particularly telling. Designers tend to consider themselves progressive and objective. Yet, their responses didn’t reflect such values.

Turns out this isn’t uncommon. A study by David Gal and Derek Rucker from Northwestern University found that when people’s confidence in their beliefs is shaken, they become stronger advocates for those beliefs. The article points to a behavior pattern in which people evangelize as a way to bolster their own wavering beliefs.

How brittle ideas become unyielding beliefs

You could attribute the inertness of belief to individual laziness. I don’t think it’s that cut-and-dried. Sometimes the information we possess is incomplete. A flawed belief might underpin a whole other set of personal values. Additionally, beliefs that contradict popular ones can bring intense social pressure. Let’s explore each each of these points:

Limited research diminishes understanding

Many Canadians are angry about Prime Minister Trudeau paying Omar Khadr, $10.5 million as an apology for wrongful imprisonment. Khadr was affiliated with Al-Qaeda, and alleged to have thrown the grenade that killed U.S. Army Sergeant Christopher Speer. At first read, this situation does seem perversely wrong. Some immediately take this viewpoint, and stop asking questions. These same folks often note how, “Trudeau has his head up his ass.”

Further investigation challenges this viewpoint. At 9 years old, Canadian-born Khadr was taken to Afghanistan by his father. At 15, following a firefight, he was found in critical condition. He was subsequently held in detention in Guantanamo Bay prison and tortured—for nearly 10 years. Khardr was denied access to a lawyer and no charges were filed against him for several years. Eventually, Khadr was given the option of admitting guilt and serving 1 year in a Canadian prison. Alternatively, he could refuse to admit guilt. If he did, his trial would be denied indefinitely.

“The fact that you are utterly convinced that you know the truth does not mean that you do.”

Fredric Neuman

How do you feel about a child not having the right to a fair trial? To me, it seems illegal (and distinctly un-Canadian). The Supreme Court of Canada shares this sentiment. In a civil suit against the Canadian government, they found in favor of Khadr. (I’m omitting a lot of detail in this summary. This post outlines the situation more wholly than I have.)

We’re barraged by so many headlines, and don’t always have the time to read further. Nevertheless, we often feel pressure to “take a position”—even when our knowledge of a situation is incomplete. Once we have, confirmation bias commonly occurs—and our inaccurate beliefs are cemented.

Fear of removing pivotal Jenga blocks

My next story takes us back ~25 years. A friend and I used to run together. He studied science and is Christian. During our runs, we’d often debate political and environmental issues. One issue we commonly returned to was same-sex marriage. (Today, such a discussion seem almost passé; in the early ’90s many were divided on the topic.)

My friend wasn’t homophobic. That said, his faith prohibited same-sex marriage. Therefore, he followed what he believed to be the word of God—which he considered irrefutable. He and I sparred on this matter at some length. I argued that his belief in science and his faith were at odds, and that he had to choose one or the other. He disagreed.

“A man with a conviction is a hard man to change. Tell him you disagree and he turns away. Show him facts or figures and he questions your sources. Appeal to logic and he fails to see your point.”

Leon Festinger

These debates stayed with me—in part due to the thought-provoking collision of logic and faith. In time, I came to realize that my friend’s situation was far more layered than I understood. For him, this wasn’t just about human rights. It underpinned his very existence. If he were willing to consider this aspect of his faith flawed, what other aspects of it might also be?

My hunch is that my friend never reconciled this conflict. Admitting what I’m sure he knew to be morally right would bring his entire spiritual belief system into jeopardy. It represented a Jenga block that could tumble the whole tower. No matter how decent you are, risking your eternal salvation isn’t a trivial decision.

The steep social cost of opposing the herd

I find hockey culture confounding. Fans display a religious zeal for “their” team, yet, the players aren’t even from that city. They come from around the world—and are commonly traded. So, what exactly are those fans cheering for? The team’s history? Their spirit? The logo? My bet is that it’s none of these. Instead, it’s about belonging to a tribe.

This community offers belonging, shared history, and friendships. As I’m not a fan, I can’t say for certain, but, I suspect one’s belief in a team is in no way rational. Rather, team sports seem to give their congregants the opportunity to feel like they are a part of something.

I suspect the warmth of a tribe’s embrace is powerful—and that separation from it would be unpleasant. While some can get by without inclusion, few want to be banished from a community due to their beliefs. So, we sometimes toe-the-line, even when our thinking leads us to different conclusions.

A colleague and I had lunch a few days after the 2011 Canadian federal election. He ran a business in Vancouver’s pseudo-cool Yaletown area, in which voters lean Liberal/NDP. Part way through, he came in closer and whispered, “I know you won’t judge me for it, but I voted Conservative. Around here, though, I don’t want anyone to know.” He felt that publicly admitting his legitimate, yet unpopular, choice would make him a pariah.

I refuse to be a prisoner of my own beliefs

It’s one thing for me to point out my friend’s backward views on same-sex marriage, and pretend I’m a better person. Truth is, I once self-identified as a “homophobe”. I don’t like to admit this—and I’m ashamed of it—but it’s true.

I heard the term “homo” when a kid shouted it at me as a put-down. (At the time, I thought he was referring to homogenized milk. This confused me.) Few gay people were “out” in my home town. Therefore, my only inklings regarding gay people came from Police Academy movies. I never felt any malice to anyone who was gay. I was just plain ignorant. So, when I said I was a homophobe, I meant it quite literally. My fear was that some big guy in leather would force me to do the tango… at The Blue Oyster.

Laugh all you want. You should. I deserve it. Well, 17-year-old me deserves it. It only took a few months of living in a bigger city and meeting people who were gay, for my beliefs to change. I then moved back to my home town, where guys at the bar wanted to fight me—because they thought I was gay. (As a corollary, you should read this article.)

“If people get new information that is in contrast to what they believe then they tend to neglect this new information for as long as possible.”

Stefan Stieglitz

Although this is an embarrassing example, it’s far from the only flawed belief I’ve held over the years. In recent months, I’ve questioned a disproportionate number of beliefs. This forced some discomfort—almost paralysis in my work—and is part of the reason I wrote so little in the past months.

Nevertheless, in challenging my beliefs, I started to see how I often mistake how I wish things were for how they actually are. Similarly, I witnessed how my lack of knowledge/experience often leads me to repeat bad habits. I also kept coming back to the conclusion that most situations are complicated—and defy simple answers.

Thoughts on how one might encourage mental plasticity

If I can contort my viewpoint to understand others, my perspectives should expand. This could leave me less susceptible to propaganda. It would help me recognize opportunities others ignore. It might even stave off curmudgeonly perspectives that are easy to fall prey to. That said, it isn’t easily achieved. The more invested I am in a position, the more severely I seem to resist different ideas.

The willingness to sacrifice any belief, affords you a kind of freedom. However, there’s a gap between willingness and action—and, I’m ill equipped to tell you what they are. (Sorry.) What I can share are the few approach I’ve noodled with that seem promising.

Treating belief as temporal

No one builds a house on quicksand. I’m changing every day, as is the world around me. So, I work with the information I have—and recognize it as incomplete. When I come upon new findings that point elsewhere, I accept that my beliefs will (and should) evolve. This isn’t weakness, or flip-flopping, it’s simply the nature of learning.

Asking more questions

I’m bad at asking questions. When I do, though, I realize that few matters are either one way or another—instead, most tend to be multi-dimensional. So, when I see a headline/post that I respond to emotionally, I try to take pause—and read more about it. This helps avoid motivated reasoning—a notion which suggests we’re more likely to arrive at conclusions we want to arrive at.

Embracing a learner’s mindset

Many settle as they hit mid-career/midlife. This concerns me personally, as I see it as a path to obsolescence. So, I’m forcing myself to use unfamiliar tools, test weird-seeming approaches, and accept that my way might not be the best one. Additionally, I’m getting comfortable with the idea that I don’t need to know everything—even if I’m supposed to be an expert on the matter.

Arguing a contradictory position

Many of my friends share opinions similar to mine—which can result in the creation of an echo chamber. Our online communities make this worse. A fun experiment is to take the position you disagree with, and argue it as compellingly as you can. I do this in my head, while walking. It’s curious how quickly this exercise leads you to rethink your initial take.

Fighting our nature

Part of the problem we humans have with unwanted weight gain is rooted in our evolution. When food was scarce, our fat stores were critical to our survival. Now that food is plentiful, this biological mechanism is outmoded. Sadly, human firmware upgrades aren’t keeping pace. Therefore, the very mechanism that once kept us alive now works against us.

The same argument could be made for our reasoning. Primitive humans needed to react quickly to their environment. As such, fight-or-flight reflexes were key to our survival. Today, this outmoded mechanism leads us to treat information as a predator. “We push threatening information away; we pull friendly information close.”

If this analogy holds, it suggests we must individually attempt to override our biology. A body that stores unnecessary fat should be countered with diet and exercise. Similarly, a mind that is swayed by instinct should be remedied by pausing—especially when discussions become emotional—and applying reason. This is doubly important given how emotions spread online. For me, this all begins with the an understanding that every belief I hold is mutable.

Do you have questions, suggestions, or comments? I welcome you to discuss this post on Officehours.

The post In Pursuit of Mental Plasticity appeared first on Eric Karjaluoto.

25 Sep 22:33

Dropbox Integrates with iOS 11’s Files App in Latest Update

by Ryan Christoffel

Fulfilling its recent promise of integrating with iOS 11’s Files app during the OS’s launch week, Dropbox today released an updated iOS app that does just that. It is now a full-fledged file provider in Files, allowing you to access and manage all of your Dropbox files directly from the Files app.

Adding Files support means Dropbox files can now live alongside files from iCloud Drive and other file providers. This enables things like copying files between cloud services with ease, organizing files from different providers with the same tags, and of course, using drag and drop to rearrange files (on either iPhone or iPad), or to move files to other apps (iPad only). Not all functionality from the main Dropbox app has made its way to Files, but there’s surprisingly little missing here. You can still download files on demand, and you can even share files without needing to open the Dropbox app – simply long-press the file you’d like to share and hit the Copy Link button. For me personally at least, I don’t see any reason I would need to open Dropbox anymore.

Several major cloud services pledged to support Files back in June following WWDC, and it’s great to see that, at least for one of them, that support came swiftly. Here’s hoping the rest will follow soon.


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
25 Sep 22:33

ThingsCon Report: State of Responsible IoT

by thornet

The ThingsCon report The State of Responsible IoT is a collection of essays by experts from the inter-disciplinary ThingsCon community of IoT practitioners. It explores the challenges, opportunities and questions surrounding the creation of a responsible & human-centric Internet of Things (IoT). For your convenience you can read it on Medium or download a PDF.

Bruce Sterling gave the report a nice shoutout on WIRED. I joined a lovely group of contributors and wrote an essay for the report, cross-posted below.

Congrats and thank you to the ThingsCon team for producing this!


Internet Health and IoT

“The true impact of activism may not be felt for a generation. That alone is reason to fight, rather than surrender to despair.”
— Rebecca Solnit, The Guardian[1]

Reading the news these days, it’s easy to believe that we’re living in a bad science fiction novel: government agencies openly admit they are using IoT to conduct surveillance at unprecedented levels[2]; a botnet took over webcams and connected devices around the globe and temporarily brought down major websites[3]; irresponsible businesses are leaking their customers’ private data and treating digital security as an externality[4]. All of this is happening against the backdrop of rising far-right nationalism, ongoing wars, and climate change.

Confronted with these realities, one might turn to pessimism. Nothing that I do will make a difference. We are all doomed. Or one might be optimistic and think I’ll sit this out. It will all work out in the end. Both pessimism and optimism are fatalistic. Neither option will motivate anyone into action.

That’s why I believe now is the time for honest reflection and earnest practices. It is why I’m committed to efforts like ThingsCon to advance responsible IoT and why I lead a program at the non-profit Mozilla called the Open IoT Studio which carries a similar mission. The actions we take today may not result in immediate change. But history is rich with examples of how acting in responsible, healthy ways has inspired people living on the other side of the globe or even living generations later.

Take for example the courageous act of whistleblowing by Edward Snowden. He has said that he was inspired by Daniel Ellsberg, who leaked the Pentagon Papers decades earlier—years before Snowden was even born.[5]

This example, along with several others, are presented by Rebecca Solnit, a journalist at The Guardian and writer of the book Hope in the Dark. She outlines the inheritance of civil disobedience. It spans centuries yet is linked by specific individuals and collective action that emboldened later generations and people living in different circumstances:

[N]on-violence is a strategy articulated by Mohandas Gandhi, first used by residents of Indian descent to protest against discrimination in South Africa on 11 September 1906. The young lawyer’s sense of possibility and power was expanded immediately afterward when he traveled to London to pursue his cause. Three days after he arrived, British women battling for the right to vote occupied the British parliament, and 11 were arrested, refused to pay their fines, and were sent to prison. They made a deep impression on Gandhi.

He wrote about them in a piece titled “Deeds Better than Words” quoting Jane Cobden, the sister of one of the arrestees, who said, “I shall never obey any law in the making of which I have had no hand; I will not accept the authority of the court executing those laws …” Gandhi declared: “Today the whole country is laughing at them, and they have only a few people on their side. But undaunted, these women work on steadfast in their cause. They are bound to succeed and gain the franchise…” And he saw that if they could win, so could the Indian citizens in British Africa fighting for their rights. In the same article (in 1906!) he prophesied: “When the time comes, India’s bonds will snap of themselves.” Ideas are contagious, emotions are contagious, hope is contagious, courage is contagious. When we embody those qualities, or their opposites, we convey them to others.

Solnit describes how British suffragists inspired an Indian man to lead his country’s independence from British rule twenty years later. Gandhi, in turn, inspired Martin Luther King Jr., who studied Gandhi’s methods and met with his heirs in the late 1950s. Martin Luther King Jr. and the civil rights movement built on the techniques of non-violent direct action, which were later implemented to end apartheid in South Africa, advance the environmental movement and advocate for many more social causes.

At the Mozilla Foundation, we argue that the internet today requires similar activism and interventions. The internet is a unique public resource. It’s an unprecedented tool for creativity and self expression. The internet enables us to learn, organize and innovate in ways that can influence other pressing issues—be the societal, economical, political, environmental. By 2020, there will be five billion of us on the internet. Few technologies have impacted so many people in such deep ways.

To preserve the internet as this public resource, we must fight for its health.[6] It is an ecosystem. Signs of poor health in any part impacts the whole. In recent years, we’ve described these five issues as critical for the health of the internet: privacy & security, digital inclusion, web literacy, decentralization and open innovation. Internet health should become a mainstream issue.

Importantly, our understanding of what the internet is will also change. The Internet of Things can be seen as an evolution of the internet—a third wave. The first wave came as fixed desktop internet, and the second wave was internet on mobile devices. Now with IoT’s “billions of devices connected, trillions in generated revenue, zettabytes of multi-directional data,” as O’Reilly Publishing recounts[7], the challenges facing internet health will be orders of magnitude greater as it enters this new third wave. The issues of internet health we’ve faced in past eras will be amplified by the sheer size of IoT.

As this technology becomes more deeply infused into our everyday lives—by orders of magnitude—it’s important to look at it critically, especially with an eye towards social good and the public interest. What happens when most people and most things are creating networked data all the time? How will algorithms connect to our physical environment and influence decision-making, relationships and power structures? How do we respond when countries with large scale poverty and limited regulation are increasingly the testing ground for more extreme Internet of Things experiments? As often as the Internet is used to foster learning and promote justice, it’s also used to exert control and exacerbate inequality.

As IoT practitioners and advocates for a healthy internet, we must ask what impact we want these new technologies to have in our lives, our organizations, our cities and our societies. At this critical moment, we must ask not what is possible, but what is responsible. Together we must fight for a healthy internet of things.

Footnotes:

[1] From “Protest and persist: why giving up hope is not an option” published March 13, 2017. https://www.theguardian.com/world/2017/mar/13/protest-persist-hope-trump-activism-anti-nuclear-movement.

[2] In a 2012 interview in Wired, CIA director David Patraeus called the surveillance implication of the Internet of Things “transformational… particularly to their effect on clandestine tradecraft.” https://www.wired.com/2012/03/petraeus-tv-remote More recently, James Clapper, the U.S. director of national intelligence, stated that, “Intelligence services might use the [Internet of things] for identification, surveillance, monitoring, location tracking, and targeting for recruitment, or to gain access to networks or user credentials.” https://www.theguardian.com/technology/2016/feb/09/internet-of-things-smart-home-devices-government-surveillance-james-clapper.

[3] “The 2016 Dyn cyberattack took place on October 21, 2016, and involved multiple distributed denial-of-service attacks (DDoS attacks) targeting systems operated by the DNS provider Dyn, which caused major Internet platforms and services to be unavailable to large swathes of users in Europe and North America…The activities are believed to have been executed through a botnet consisting of a large number of Internet-connected devices—such as printers, IP cameras, residential gateways and baby monitors—that had been infected with the Mirai malware. With an estimated throughput of 1.2 terabits per second, the attack is, according to experts, the largest DDoS attack on record.” https://en.wikipedia.org/wiki/2016_Dyn_cyberattack.

[4] For example, the CloudPets stuffed toys leaked details of half a million users. The company’s data was compromised and leaked information including email addresses, passwords and voice recordings of children and their parents. https://www.theguardian.com/technology/2017/feb/28/cloudpets-data-breach-leaks-details-of-500000-children-and-adults.

[5] In an conversation between Daniel Ellsberg and Edward Snowden in July 2014. https://www.theatlantic.com/politics/archive/2014/07/daniel-ellsberg-snowden-honored-his-oath-better-than-anyone-in-the-nsa/375031/.

[6] Read more about Mozilla’s position and research on internet health in our Internet Health Report: https://internethealthreport.org.

[7] See “The IoT is IT in progress” and other articles about IoT and the new hardware by O’Reilly: https://www.oreilly.com/ideas/the-iot-is-it-in-progress

25 Sep 22:11

VW Drivers Claim Company Didn’t Warn Them That Sunroofs May Spontaneously Explode

by Mary Beth Quirk
mkalus shared this story from Consumerist.

You’re cruising happily down the highway with the sun streaming through your sunroof when suddenly, there’s a loud noise and glass is exploding everywhere. Sounds scary, right? That’s what Volkswagen owners say in a new lawsuit accusing the company of failing to warn them that this could possibly happen in a slew of vehicles.

A lawsuit [PDF] seeking class-action status filed in a California district court claims that Volkswagen has known sunroofs installed in many of its car models may spontaneously explode, and allegedly failed to warn customers of this before they purchased vehicles.

Noting that “sunroofs pose a significant engineering challenge” — replacing metal parts of the car’s roof with large plates of glass “requires precision in the strengthening, attachment, and stabilization of the glass” — the lawsuit claims that VW has failed to meet those challenges, “and as a result, many of the vehicles designed, and distributed by VW have sunroofs which spontaneously shatter.”

“The shattering events are so powerful that startled drivers compare it to the sound of a gunshot, after which glass fragments rain down upon the occupants of the vehicle, sometimes while driving at highway speeds,” reads the complaint.

Here are the VW models equipped with factory-installed sunroofs mentioned in the case:

• 2005 – 2017 Jetta models
• 2015 – 2017 Golf models
• 2006 – 2015 GTI models
• 2009 – 2010 CC models
• 2007 – 2016 Eos models
• 2006 – 2009 Rabbit models
• 2012 – 2017 Passat models
• 2004 – 2006 Touareg models
• 2011 – 2017 Touareg models
• 2008 R32 Base
• 2009 – 2017 Tiguan models

A litany of reports

The plaintiff in the lawsuit says she purchased her 2013 Jetta at the end of her lease in June 2016. Recently, she says she was driving on the freeway when suddenly, “a loud ‘BOOM’ like a gunshot/explosion went off in her car, followed by a hail of glass falling on her head and the interior of the vehicle.”

The complaint says she noticed a large hole in the center of her windshield, with the edges “pointing outward/upward, indicating that the break came from the inside.”

She had to pay out of pocket for some expenses related to the incident.

She’s not alone, the lawsuit says, claiming VW knew about the alleged sunroof problems before the plaintiff leased her vehicle in 2013, citing reports from “at least” 57 owners and lessees of VW vehicles who have reported similar sunroof-explosion incidents to the National Highway Transportation Safety Administration, starting back in 2009.

“I was driving on the interstate at about 60 mph and I heard a loud bang, like a gun shot,” one complaint from the driver of a 2010 VW GTI reads. “I looked around, and looked up, and noticed my sunroof had exploded into a million little pieces,” the driver adds, writing that a large chunk of the sunroof fell on them after they drove to an exit, and that they had glass “in the car, hair, and ground into my skin a bit — some of it is very fine and sharp, like sparkly powder.”

The driver says that the dealership said it was likely that a rock hit the sunroof, “but I don’t think a rock could have a velocity in the vertical direction at that speed to hit and smash the glass,” they added.

“Sunroof shattered while driving in the country,” the driver of a 2013 Jetta wrote in another complaint, “no other cars nearby, nothing overhead, no apparent reason, it just blew up, throwing glass everywhere. Luckily my five- and six-year-old were not in the backseat.”

One recall isn’t enough

Not only has VW known of the defect through NHTSA complaints and consumer complaints lodged directly with the carmaker and its dealerships, the lawsuit claims that VW is aware of the issue through its own testing. To that end, the car company has already issued a recall [PDF] related to shattering sunroofs for its 2013-2015 Beetle.

In that recall, VW noted that “glass sunroofs in the affected vehicles may break when the vehicles are operated over a hard road surface or strike a pothole.”

Despite issuing a recall for just that model, the lawsuit claims that VW “has done nothing regarding the far more predominant problem relating to all regular and panoramic sunroof shattering that affects potentially hundreds of thousands or more VW vehicles.”

And while the carmaker has “at times taken the position that the sunroofs in question have shattered as a result of impact from roadway objects,” the lawsuit reads, rocks and other objects thrown up by cars and trucks “would not impact the sunroof with sufficient force to cause it to shatter, let alone shatter outward, a fact that appears in many consumer complaints and of which VW is aware.”

Additionally, the lawsuit claims that driver reports have contradicted VW’s position, noting that “some VW sunroofs have spontaneously shattered (‘outward’) while the vehicles were parked.”

It’s not just VW owners who have had vehicles with sunroof problems, the lawsuit notes: Audi (which is owned by VW) and Hyundai have voluntarily initiated safety recalls as a result, “notifying drivers of the danger and offering to repair the sunroofs free of cost.”

Staying mum

The complaint argues that “a reasonable person considering whether to purchase or lease a VW vehicle would want to be informed” about the alleged sunroof issue, “so that he or she could opt against paying thousands of dollars for a ‘luxury upgrade’ which is clearly unsafe, or simply forego purchasing or leasing the vehicle altogether.”

If VW had told the plaintiff about the alleged sunroof defect, she would not have leased and subsequently purchased the vehicle or she would have paid substantially less for it,” the lawsuit reads. She also wouldn’t have “suffered the economic damages she sustained” from repairs.

But despite the the high number of complaints and the danger posed by the alleged defect, “VW continues to conceal its existence from current drivers and potential customers alike,” the complaint claims, saying that VW doesn’t warn consumers at the point of sale or lease, nor when drivers who have experienced a shattered sunroof bring a car in for repairs, “thus making no effort to alert consumers of the risk.”

“VW knows of the defect yet continues to profit from the sale and lease of vehicles to unwitting consumers,” the suit reads.

In addition, although the plaintiff claims her vehicle was still within the period covered by VW’s new vehicle warranty, she had to pay for repairs herself. The lawsuit alleges that the company has “systematically denied coverage with respect to the defective sunroofs,” and that she and others “have been forced to incur substantial repair bills and other related damages, including being forced to make claims under their automotive insurance policies and incurring substantial deductibles.”

The lawsuit is seeking a jury trial, class-action status, damages and other losses to be determined at trial, and an order requiring VW to adequately disclose and repair allegedly defective sunroofs and one to cease distributing cars with such sunroofs in the future, pending an investigation.

We’ve reached out to VW for comment on the lawsuit and will update this post if we receive a response.





25 Sep 22:11

So, The Equifax Hack Actually Started Back In March

by Laura Northrup
mkalus shared this story from Consumerist.

Two weeks ago, credit agency Equifax announced an unprecedented breach of consumer personal data where records for 143 million customers in the United States alone were stolen. Equifax told the world that it discovered the breach in July, and it began in May. Turns out that the second half of that statement isn’t quite true.

Memo leak

The Wall Street Journal obtained a confidential memo to Equifax from the company investigating the breach, FireEye’s Mandiant group, which details when the hackers gained access to Equifax’s systems.

Intruders used the Apache Struts vulnerability, which was discovered in March 2017, to gain access to the Equifax system in March, not in May as previously stated.

While the theft of data took place sometime between May and when Equifax learned about the breach in July, the baddies were moving about in Equifax’s systems undetected, even creating backdoors on secret web pages so they could log in from anywhere even after the breached IDs were discovered and stopped working.

The March access may have been information-gathering missions to find out which areas of the system are vulnerable to attacks, and could have been an effort on the part of the hackers to to cast a wide net and find websites that hadn’t yet been patched after the vulnerability was discovered.

After gaining access to Equifax’s web interface, the hackers went after the sensitive data like Social Security numbers, birth dates, and driver’s license numbers,

Equifax left that back door open for four months even after a patch became available. It normally takes around 100 days for companies to go public about a breach, and Equifax took 140 days.

What the experts still don’t know

The person or group behind the attack still hasn’t been identified, but we do now know that their methods and tools don’t match up with any other group known to be hacking sites for personal gain now. It’s also not clear what the hackers plan to do with the data.

To find out whether you were affected, visit the official Equifax site at https://www.equifaxsecurity2017.com/. Just be careful not to fall for one of the hundreds of fakes out there.





25 Sep 22:11

UPDATE: Company Apologizes To Customer Who Found Employee ID Badge In Her Jerky

by Mary Beth Quirk
mkalus shared this story from Consumerist.

Earlier this week, we brought you the tale of a Consumerist reader who was stymied by the presence of what appeared to be an employee ID badge in a bag of beef jerky she’d purchased. After our story ran, the company reached out to our reader with apologies for her “very negative experience” and something of an explanation about what happened.

Kim tells Consumerist that she received an email from an Oberto executive who apologized not only for the “unacceptable product quality” she’d received, “but also for our lack of response despite your attempt to contact us directly.”

“This is not at all acceptable and we are relooking at our processes in both manufacturing and how we address these issues with Oberto consumers,” the executive wrote, adding that he has brought the issue to the company’s head of operations as well as the CEO.

“Further steps are being put in place that ensures this won’t happen again,” he wrote.

Despite the lack of communication, he says her issue was forwarded to the appropriate people and the incident was investigated.

The team found that the badge did, in fact, belong to an Oberto employee, “and that employee was not following proper badge protocol at the time of the incident.”

The executive says he learned that the worker has since left the company, but did not elaborate.

“As I stated above, we take this incident as well as the lack of communication with great gravity,” he wrote.

In closing, he offered Kim a $50 gift card and an assortment of jerky, as well as a return shipping label for the original product.

“Thanks again for your original purchase, and hopefully you will give our beef jerky another chance,” he wrote.

Kim tells Consumerist that she thinks the gift card is “fair recompense,” and says she’s grateful they finally responded.





25 Sep 22:10

Commuting 36 kms, 5 days a week

by Swayam Siddha

My workplace is 18 kms ( 11 miles ) away from home. I am planning to commute to and from every workday, 5 days a week.

My stats -

6'1" (185 cms ) 82 kgs (180 lb )

I generally average around 22 km/h while going and coming (13 mi/hr). The commute takes about 50 mins, I am in the zone for 30-35 mins.

I am able to follow this routine, but worry that I am overdoing it. I feel that I am loosing muscle mass.

So far, I do no weight / strength training. Eat a normal and healthy 3 course.

Can anyone please give me idea about -

  1. Diet regiment. ( I really hope suppliments can be avoided.)
  2. Body weight exercises if any is required. I hope I can avoid the gym.

The aim that I am able to achieve is to keep continue cycling with this routine hopefully generally around 15mph ( 25 kmph )

25 Sep 22:10

Reliving that Snow Leopard Magic

by Stephen Hackett

Enthusiasts of all types always have that one special obsession. For muscle car people, maybe it's one particular year of Ford Mustang. Photographers always have a favorite lens, while baseball players may have a favored bat or glove.

Ask almost any macOS fan, and they'll tell you that Snow Leopard is their favorite version of all time.

There are a bunch of good reasons for that, beyond pure nostalgia.

Snow Leopard's Introduction

Eight years ago, at WWDC 2009, then Senior Vice President of Software Engineering Bertrand Serlet got on stage and made a bold claim about the new version of Mac OS X. After poking fun at Windows Vista and the then-new Windows 7, he introduced Snow Leopard:

We love Leopard. We are really happy with how it tuned out. We are proud of Leopard. When it became time to talk about the next big cat, we decided to name it Snow Leopard. It builds upon Leopard. The challenge we set for ourselves was to build a better Leopard.

Serlet went on, saying that this goal meant three things:

  • Refinements across the system and built-in apps
  • Powerful new technologies
  • Exchange support in Mail, iCal, and Address Book

This single slide is what people remember most about the WWDC 2009 keynote:

I think it’s easy to write this slide off as a joke, but in reality, it shows just how different Snow Leopard was from its feature-packed predecessors. Instead of an exhaustive list of new feature and built-in apps, Snow Leopard was a bit of a breather, giving the Mac room to prepare for the years ahead.

The most noticeable user-facing feature of Snow Leopard was built-in Exchange support for Mail, iCal, and Address Book. Setup was very simple, thanks to Exchange's Autodiscover service. After logging in, Exchange data could live side-by-side with email, contacts, and calendars from MobileMe, Gmail, and other web services.

The real magic was under the hood.

Installation was made much faster, and after upgrading, users could regain up to 6 GB worth of free space on their drives. This was due to the combination of the removal of a whole bunch of PowerPC code, in addition to compression that was being applied to system files for the first time.

Serlet shared that of the 1,000 projects that made up Leopard, some 90 percent of them were updated and refined as part of Snow Leopard. Finder was rewritten to be a 64-bit Cocoa app, leaving Carbon behind. The Dock, Mail, TextEdit, Safari, iChat, Terminal, and many more system apps were also rewritten to be 64-bit. Mail opened twice as fast, while Time Machine backups were made some 80% faster under certain circumstances.

In addition to the core apps being rewritten in 64-bit mode, Snow Leopard introduced Grand Central Dispatch, which made writing and running multithreaded applications easier and more efficient. This meant that apps could ramp up more threads when needed, and scale back quickly when the extra power wasn't needed. Its cousin was OpenCL, which allowed developers to tap into the massive power of GPUs for computational purposes.

The Response to Snow Leopard

All of this progress came with a new price tag: Snow Leopard was just $29 for consumers upgrading from Leopard, a full $100 less than previous releases of Mac OS X.

That certainly made Mac fans happy, but Snow Leopard was the first OS to drop support for PowerPC-based Macs. Owners of G4s and G5s were stranded on Leopard. Rosetta was still present, so apps that hadn't yet been compiled for Intel could still run, but I think a lot of users were surprised that PowerPC support was removed just three years after the Intel transition was complete.

By leaving PowerPC support behind, Snow Leopard freed Apple to build with the future in mind. In a world where every Mac has at least a dual-core processor and relies on the GPU for more and more tasks, the foundations built in Mac OS X 10.6 have proven incredibly important. It was the last version of Mac OS X to ship on DVD and the first to include the Mac App Store.

The polish added to the levels above this technology was just the cherry on top.

Here's a bit from John Siracusa's review:

Should you buy Mac OS X Snow Leopard? If you're already running Leopard, then the answer is a resounding "yes." If you're still running Tiger, well, then it's probably time for a new Mac anyway. When you buy one, it'll come with Snow Leopard.

[...]

Snow Leopard is a unique and beautiful release, unlike any that have come before it in both scope and intention. At some point, Mac OS X will surely need to get back on the bullet-point-features bandwagon. But for now, I'm content with Snow Leopard. It's the Mac OS X I know and love, but with more of the things that make it weak and strange engineered away.

I know I sure thought of Snow Leopard in this way. It ran smoothly on everything from polycarbonate MacBooks on up, and it's still the OS I prefer to run on this vintage type of hardware.

Snow Leopard and High Sierra

Since 2009, a handful of releases have been compared to Snow Leopard. Since Apple's move to an annual cycle, OS releases have become smaller and less important. None, I think, have truly earned the Snow Leopard badge until this year with High Sierra.

As he was introducing High Sierra this year at WWDC, Craig Federighi said:

We wanted to spend this year perfecting [the Mac].

[...]

High Sierra is all about deep technologies that provide a powerful platform for future innovations on the Mac.

And we couldn't help ourselves, so we also added some refinements.

He expanded upon this at this year’s live episode of John Gruber’s The Talk Show:

There's a proud tradition of Mac releases — that, I think, some of our most loved releases sometimes, are when we take a year to refine and perfect, and we wanted to do it again.

Time will tell if High Sierra joins Snow Leopard in the Hall of Fame, but I bet it will. A focus on polish and shoring up the foundations will always be welcome words to the Mac faithful.


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
25 Sep 22:09

Apple’s Quest to Transform Photography

by John Voorhees

John Paczkowski of BuzzFeed conducted a fascinating interview with Apple’s Senior Vice President of Worldwide Marketing Phil Schiller and Johnnie Manzari of Apple's Human Interface Team about the iPhone’s camera. Much of the discussion is focused on the new Portrait Lighting feature available in the 8 Plus and X. As Paczkowski explains,

The camera's effects don't rely on filters. They're the result of Apple's new dual camera system working in concert with machine learning to sense a scene, map it for depth, and then change lighting contours over the subject. It's all done in real time, and you can even preview the results thanks to the company’s enormously powerful new A11 Bionic chip. The result, when applied to Apple scale, has the power to be transformative for modern photography, with millions of amateur shots suddenly professionalized.

Manzari described the extensive process that went into creating Portrait Lighting:

"We spent a lot of time shining light on people and moving them around — a lot of time," Manzari says. "We had some engineers trying to understand the contours of a face and how we could apply lighting to them through software, and we had other silicon engineers just working to make the process super-fast. We really did a lot of work."

BuzzFeed’s article is worth a close read because it’s about more than just the camera in Apple’s new and upcoming iPhones. The behind-the-scenes peek at the development process of the many functions that the iPhone’s camera serves is the best example of one of Apple’s biggest competitive advantages: the fusion of hardware and software.

→ Source: buzzfeed.com

25 Sep 22:04

4 Ways We Can Fund Personalized Learning to Create More Equitable Schools

Ace Parsi, Bryant Best, Getting Smart, Sept 27, 2017


The four methods are listed about half way through the post, and seem reasonable to me:

  • close group-based opportunity gaps and support best practices in teaching traditionally disadvantaged populations
  • acess to learning opportunities such as Advanced Placement (AP), International Baccalaureate (IB)...  through strategies such as universal design for learning
  • targeted and supplemental investments can include support around professional development
  • create equity-based professional-development opportunities for district and school leaders.

The idea here, as I see it, is to fund personalization in such a way as to target those most in need, and to have that funding follow that need through direct investment in learning support, as well as investment in those providing that support. This is quite a contrast from what we usually see in personalized learning, where efforts go to fund initiatives directed at thoe who already have significant advantages.

[Link] [Comment]
25 Sep 21:50

Introducing a new series: The Women Behind Wireless

by Rose Behar

To some, women in tech is a new hot button topic.

It’s a subject that’s up for debate and criticism. It’s a subject full of big, unanswerable questions.

Why is there such a small percentage of women in the technical workforce compared to overall demographics? Why would women avoid the field? Why would they leave it?

In the raging dialogues that follow, crucial stakeholders in the conversation are often left out: the women who work as scientists and engineers in the tech industry.

The ones who are on the ground. The ones who have been working, heads down, often for decades. The ones who have contributed to amazing technological breakthroughs while frequently being the only women on their teams.

To put a spotlight on some of those voices, MobileSyrup is interviewing women to talk about their long-time careers in tech — specifically the areas of tech that MobileSyrup covers, wireless and mobile tech — and what they’ve learned over the years.

The conversation won’t always focus on being a woman in the industry; many of our featured scientists and engineers have struggled their entire careers to simply be known for their work.

The goal of this series? To recognize that those women exist, and they’ve existed for as long as technology, in its many forms, has existed.

No matter how much people attempt to debate these women’s existence in the field — no matter how much people use pseudo-science to try and exclude these women — they show up every day and go to work.

They achieve brilliant things. They change the world with the technology they develop.

These are the women behind wireless technology. And they’re not going anywhere.


Keep tuned to MobileSyrup for the first story in this new series, a profile of Huawei’s Peiying Zhu, who contributed significantly to the development of 4G through her role at the world’s largest telecommunications equipment company and is currently hard at work contributing to the standards for 5G. Her story goes live today.


Image credit: TeroVesalainen via Pixabay

The post Introducing a new series: The Women Behind Wireless appeared first on MobileSyrup.