Shared posts

10 Nov 21:59

Apple’s Clips Introduces New Selfie Scenes, Filters, and More

by Ryan Christoffel

On launch day for the new iPad Pros, which feature the iPhone’s TrueDepth camera system for the first time, Apple has upgraded its Clips video app with new features that take advantage of TrueDepth’s power. Today's update also brings new camera filters, posters, stickers, and soundtrack options.

If you have an iPhone X, XS, or XR, or one of the new iPad Pros, the highlight of this release is a batch of six new Selfie Scenes. Last year when the iPhone X launched, Clips debuted Selfie Scenes as a fun and impressive way to utilize the new device’s TrueDepth camera system. Selfie Scenes isolate you from your environment and replace your surroundings with interesting digital backgrounds, such as the Millennium Falcon from Star Wars, or an animated world. The new scenes added in today's update are called Clouds, High Noon, Big Backyard, Monster Lab, Animal Forest, and Municiberg Mayhem, a scene from The Incredibles 2. They're all a lot of fun, providing different moods through sound effects and music. Apple says that Selfie Scenes perform better than ever on recent devices thanks to the A12 Bionic's Neural Engine, and in my tests I did notice that the scenes were smoother and more responsive than before.

Filters and soundtracks are Clips' next most substantial upgrades. There are three new filters: Comic Mono, Watercolor Mono, and Aged Film. Of these, the latter is easily my favorite, as the first two are only monochrome versions of existing filters. On the soundtrack side, there are a whopping 17 new tunes to choose from for your videos.

Every major Clips update adds a host of new posters, stickers, and text labels, and today's is no exception. Continuing Apple's partnership with Disney, there are poster options from Coco and The Incredibles 2, as well as designs related to sports, science, and more.

Though the app's development cycle has slowed, Apple continues to plug away making Clips a great tool for short video creation. My biggest wish for the app – non-square video – has still gone unfulfilled, but hopefully one day we'll get that change. Until then, the Selfie Scenes are a fun demo of the newest iPhones and iPad Pros, and Clips continues to be the most enjoyable video creation tool I've ever used. I think Apple's on to something here, but the square video restriction continues to hold Clips back.


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
10 Nov 21:58

Mozilla Reaffirms Commitment to Transgender Equality

by Michael DeAngelo

As an employer, Mozilla has a long-standing commitment to diversity, inclusion and fostering a supportive work environment. In keeping with that commitment, today we join the growing list of companies publicly opposed to efforts to erase transgender protections through reinterpretation of existing laws and regulations, as well as any policy or regulation that violates the privacy rights of those who identify as transgender, gender non-binary, or intersex.

The rights, identities and humanity of transgender, gender non-binary and intersex people deserve affirmation.

A workplace that is inclusive of a diversity of backgrounds and experiences is also good for business. We’re glad to see companies across the industry joining the Human Rights Campaign’s statement and sharing this perspective.

At Mozilla, we have clear community guidelines dictating our expectations of employees and volunteers and recently rolled out workplace guidelines for transitioning individuals and their managers. These actions are a part of our commitment to ensuring a welcoming, respectful and inclusive culture.

We urge the federal government to end its exploration of policies that would erase transgender protections and erode decades of hard work to create parity, respect, opportunity and understanding for transgender professionals.

The post Mozilla Reaffirms Commitment to Transgender Equality appeared first on The Mozilla Blog.

10 Nov 21:58

Towards the idea that complexity IS a theory of change

by Chris Corrigan

In the world of non-profits, social change, and philanthropy it seems essential that change agents provide funders with a theory of change.  This is nominally a way for funders to see how an organization intends to make change in their work.  Often on application forms, funders provide guidance, asking that a grantee provide an articulation of their theory of change and a logic model to show how, step by step, their program will help transform something, address an issue or solve a problem.

In my experience, most of the time “theory of change” is really just another word for “strategic plan” in which an end point is specified, and steps are articulated backwards from that end point, with outcomes identified along the way.  Here’s an example. While that is helpful for situations in which you have a high degree of control and influence, and in which the nature of the problem is well ordered and predictable, these are not useful with complex emergent problems.  Most importantly they are not theories of change, but descriptors of activities.

For me a theory of change is critical. Looking at the problem you are facing, ask yourself how do these kinds of problems change? If, for example, we are trying to work on a specific change to an education policy, the theory of change needs to be based on the reality of how policy change actually happens. For example, to change policy you need to be influential enough with the government in power to be able to design and enact your desired changes with politicians and policy makers. How does policy change? Through lobbying, a groundswell of support, pressure during elections, participation in consultation processes and so on. From there you can design a campaign – a strategic plan – to see if you can get the policy changed.  

Complex problems are a different beast altogether. They are non-linear, unpredictable and emergent. Traffic safety is an example. A theory of change for these kind of problems looks much more like the dynamics of flocking behaviour. The problem changes through many many small interactions and butterfly effects. A road safety program might work for a while until new factors come into play, such as distractions or raised speed limits, or increased use of particular sections of road.  Suddenly the problem changes in a complex and adaptive way.  It is not logical or rational and one certainly can’t predict the outcome of actions.

In my perfect world I wish it would be perfectly acceptable for grantees to say that “Our theory of change is complexity.”  Complexity, to quote Michael Quinn Patton, IS a theory of change.  Understanding that reality has radical implications for doing change work. This is why I am so passionate about teaching complexity to organizations and especially to funders. If funders believe that all problems can be solved with predictive planning and a logic model adhered to with accountability structures, then they will constrain grantees in ways that prevent grantees from actually addressing the nature of complex phenomena. Working with foundations to change their grant forms is hugely rewarding, but it needs to be supported with change theory literacy at the more powerful levels of the organization and with those who are making granting decisions.

So what does it look like?

I’m trying these days to be very practical in describing how to address complex problems in the world of social change. For me it comes down to these basic activities:

Describe the current state of the system. This is a process of describing what is happening. It can be through a combination of looking at data, conducting narrative research and indeed, sitting in groups full of diversity and different lived experience and talking about what’s going on. If we are looking at road safety we could say “there are 70 accidents here this year” or “I don’t feel safe crossing the road at this intersection.” Collecting data about the current state of things is essential, because no change initiative starts from scratch.

Ask what patterns are occurring the system. Gathering scads of data will reveal patterns that are repeating and reoccurring in the system,  Being able to name these patterns is essential. It often looks as simple as “hey, do you notice that there are way more accidents at night concentrated on this stretch of road?” Pattern logic, a process used in the Human Systems Dynamics community, is one way that we make sense of what is happening. It is an essential step because in complexity we cannot simply solve problems but instead we seek to shift patterns.

Ask yourself what might be holding these patterns in place. Recently I have been doing this by asking groups to look at the patterns they have identified and answer this question. “If this pattern was the result of set of principles and advice that we have been following, what would those principles be?” This helps you to see the structures that keep problems in place, and that is an essential intelligence for strategic change work. This is one adaptation of part of the process called TRIZ which seeks to uncover principles and patterns. So in our road safety example we might say, “make sure you drive too fast in the evening on this stretch of road” is a principle that, if followed, would increase danger at this intersection. Ask what principles would give you the behaviours that you are seeing? You are trying to find principles that are hypotheses, things you can test and learn more about. Those principles are what you are aiming to change, to therefore shift behaviour.  A key piece of complexity as a theory of change is that constraints influence behaviour. These are sometimes called “simple rules” but I’m going to refer to them as principles, because it will later dovetail better with a particular evaluation method. 

Determine a direction of travel towards “better.”  As opposed to starting with an end point in sight, in complexity you get to determine which direction you want to head towards, and you get to do it with others. “Better” is a set of choices you get to make, and they can be socially constructed and socially contested. “Better” is not inevitable and it cannot be predictive but choosing an indicator like “fewer accidents everywhere and a feeling of safety amongst pedestrians” will help guide your decisions.  In a road safety initiative this will direct you towards a monitoring strategy and towards context specific actions for certain places that are more unsafe than others. Note that “eliminating accidents” isn’t possible, because the work you are trying to do is dynamic and adaptive, and changes over time. The only way to eliminate accidents is to ban cars. That may be one strategy, and in certain places that might be how you do it.  It will of course generate other problems, and you have to be aware and monitor for those as well.  In this work we are looking for what is called an “adjacent possible” state for the system.  What can we possibly change to take us towards a better state? What is the system inclined to do?  Banning cars might not be that adjacent possible.

Choose principles that will help guide you away from the current state towards “better.” It’s a key piece of complexity as a theory of change that constraints in a system cause emergent actions. One of my favourite writers on constraints is Mark O Sullivan, a soccer coach with AIK in Sweden. He pioneers and research constraint based learning for children at the AIK academy. Rather than teach children strategy, he creates the conditions so that they can discover it for themselves. He gives children simple rules to follow in constrained game simulated situations and lets them explore and experiment with solutions to problems in a dynamic context. In this presentation he shows a video of kids practicing simple rules like “move away from the ball” and “pass” and watches as they discover ways to create and use space, which is an essential tactical skill for players, but which cannot be taught abstractly and which must be learned in application.  Principles aimed at changing the constraints will help design interventions to shift patterns.

Design actions aimed at shifting constraints and monitor them closely. Using these simple rules (principles) and a direction of travel, you can begin to design and try actions that give you a sense of what works and what doesn’t.  These are called safe to fail probes. In the road safety example, probes might include placing temporary speed bumps on the road, installing reflective tape or silhouettes on posts at pedestrian crossings, placing a large object on the road to constrain the driving lanes and cause drivers to slow down. All of these probes will give you information about how to shift the patterns in the system, and some might produce results that will inspire you to make them more permanent. But in addition to monitoring for success, you have to also monitor for emergent side effects.  Slowing traffic down might increase delays for drivers, meaning that they drive with more frustration, meaning more fender benders elsewhere in the system. Complex adaptive systems produce emergent outcomes. You have to watch for them. 

Evaluate the effectiveness of your principles in changing the constraints in the system. Evaluation in complex systems is about monitoring and watching what develops as you work. It is not about measuring the results of your work, doing a gap analysis and making recommendations. There are many, many approaches to evaluation, and you have to be smart in using the methods that work for the nature of the problem you are facing. In my opinion we all need become much more literate in evaluation theory, because done poorly, evaluation can have the effect of constraining change work into a few easily observed outcomes. One form of evaluation that is getting my attention is principles-based evaluation, which helps you to look at the effectiveness of the principles you are using to guide action. This is why using principles as a framework helps to plan, act and evaluate.

Monitor and repeat. Working on complex problems has no end. A traffic safety initiative will change over time due to factors well outside the control of an organization to respond to it. And so there never can be an end point to the work. Strategies will have an effect and then you need to look at the current state again and repeat the process.  Embedding this cycle in daily practice is actually good capacity building and teams and organizations that can do this become more responsive and strategic over time. 

Complexity IS indeed a theory of change. I feel like I’m on a mission to help organizations, social change workers and funders get a sense of how and why adopting to that reality is beneficial all round.  

How are you working with complexity as a theory of change?

10 Nov 21:58

After the firing of Attorney General Jeff Sessi...

After the firing of Attorney General Jeff Sessions today — not at all unexpected — we’re closer to the break-glass moment where we take to the streets.

It could happen any moment, any day. Could even be minutes from now. Could have happened by the time you read this.

Sign up here.

PS The Democrats retaking the House last night was huge. The next two years were going to be perilous and tumultuous either way — but now we have a way better chance of just outcomes.

But we may walk through fire first.

10 Nov 21:58

GIVEAWAY: Brew Your Coffee While Biking!

by Blix PR

We've teamed up with Steeped Coffee to make your morning commute simpler, faster, more sustainable, a bit warmer and quite tastier. This week, we're giving away a Blix Front Basket, a recently released Blix Drink Tumbler and 30 packs of Steeped Coffee single-serve specialty coffee!

To enter the Giveaway, please follow the instructions included below!

How to Enter
Must complete steps 1-3 for full entry!
1. Follow @blixbike & @steepedcoffee on Instagram
2. Like one of our Giveaway Posts
3. Tag friends in the posts who you’d love to take an electric bike ride with. One tag is one entry. Tag as many friends as you’d like!
4. Get 2 extra entries when you follow @blixbike and @steepedcoffee on Facebook
Winner will be chosen at random. 
Contest ends Friday 11/9, 11:59pm PST. U.S. residents
only. Instagram and Facebook do not sponsor this promotion. Good luck!

 

Santa Cruz Locals

Both Blix Bikes and Steeped Coffee are local Santa Cruz, CA companies whose focus is creating a more sustainable way of living. It is always a great opportunity to work with others in your community and what better combination than biking and warm coffee in the fall?!

Blix Bikes & Coffee Lovers 

There are many great benefits to commuting to work on an electric bike including reducing carbon dioxide emissions, saving money on gas, and most importantly beating traffic. You can also get great exercise and feel energized before sitting at a desk for multiple hours. The only thing that could make this morning (and evening) commute better is having a front bike basket with a cup holder and a coffee tumbler that fits perfectly as well as having on-the-go, sustainable single serve coffee. Often, single-serve coffee comes in excessive packaging that is not biodegradable or is full of plastic, but Steeped Coffee has crafted eco-friendly packaging that is biodegradable and stays clear of harmful plastics. Additionally, by using a Blix Bike coffee tumbler to transport your morning and/ or afternoon coffee (if we are being realistic about our coffee needs) you will reduce your carbon footprint by not using paper or plastic to-go cups that ultimately fill our landfills. This Giveaway is sure to simplify your morning routine giving you more time to enjoy the ride with a cup of freshly steeped coffee!

Products Featured

___________

 Follow Us!

10 Nov 21:58

These Weeks in Firefox: Issue 49

by mconley

Highlights

  • The DevTools team has added XMLHttpRequest (XHR) Breakpoints! You can break for any XHR, or for XHR’s to a particular URL.
    • Showing the XHR Breakpoints checkbox in the debugger side panel

      XHR breaking your code? In the Firefox Debugger, XHRs break on you!

    • Lots of other goodies coming soon from the DevTools team. See their Project Update section for a taste!
  • Erica gave the content blocking exception button in the identity popup a style refresh.
    • Showing the Identity panel in Firefox, where the "Turn on blocking for this site" has had its style changed to more closely match the styles used in Private Browsing mode.

      Rocking that Private Browsing shade of purple!

  • AwesomeBar changes

Friends of the Firefox team

Introductions

  • mconley introduces Andrew Creskey (:acreskey)

Resolved bugs (excluding employees)

Project Updates

Activity Stream

  • We’re investigating about:newtab page changes through Telemetry pings, to identify malicious takeovers.
  • There is a new way to turn off recommendations from CFR
    • In about:preferences, in General, in the Browsing section.
    • Showing the checkbox in about:preferences that disables the add-on recommendation feature soon shipping in Firefox.

      Extension recommendations not your thing? That’s okay – here’s how you turn them off.

Add-ons / Web Extensions

Application Services (Sync / Firefox Accounts / Push)

  • The team is working on Android components for syncing and storing bookmarks 📚 and history 🕒. The library is written in Rust, with an FFI for Java and Kotlin, and a schema based closely on Places 🦀.
  • Edouard is working on a device pairing flow for Firefox Accounts, for a better sign-in experience that lets you scan a code on an existing device instead of typing your password everywhere 📱🔒.

Browser Architecture

Developer Tools

Fission

  • The Fission-aware messaging simulation landed, and can be enabled by flipping the browser.fission.simulate pref to true. This only covers code in browser/actors and toolkit/actors now.
  • <browser>.browsingContext is landing soon.
  • A pref to return null on cross-origin iframe access is also landing soon.

Lint

Mobile

  • We shipped Android Components 0.30! Here’s the changelog.
    • Added an implementation of concept-storage which is backed by the Rust Places library provided by application-services
    • Firefox Accounts component improvements
    • We started work on a new component to implement the Awesome Bar, both the UI and the underlying infrastructure for multiple search result providers

Performance

Policy Engine

  • Policies for certificate installation, locale switching, and the browser startup page landed in 64!
  • Working on ESR uplifts for new policies.

Privacy/Security

Search and Navigation

Search Shortcuts
  • One-off buttons are now hidden when using a shortcut (Bug 1498023)
  • Separated shortcuts telemetry from generic search telemetry (Bug 1499193)
  • Shortcuts stay in the address bar when selecting search suggestions (Bug 1500516)
Quantum Bar
  • Heads-up, address bar changes!
    • The browser.urlbar.history.onlyTyped preference has been removed (1500108)
    • The browser.urlbar.matchBehavior preference has been removed (Bug 1500138)
    • We plan to remove the browser.urlbar.autocomplete.enabled pref (Bug 1502392)
  • Added one-off buttons stub (Bug 1502455)
  • Landed initial code to filter matches (Bug 1502385)
  • Moved various functions from the window scope to UrlbarUtils.jsm (1502039)
  • Moved isTabEmpty() to tab.isEmpty (Bug 1502069)
  • Added APIs to allow porting more easily existing address bar tests. (Bug 1494334, Bug 1501270)
  • Fixed identity popup opening (Bug 1499652)

Test Pilot

  • Two new experiments shipping next week: email tabs, price-wise (comparison shopping)
  • Side View headed to Shield

Web Payments

10 Nov 21:57

How to read a book a week in the age of Facebook and twitter

by ajit

 

Background

When my son was nearing 14 years, I mentioned to him that I read James Clavell’s epic novel Shogun  (1136 pages) around the age of 15 i.e. his age. Reading a book like Shogun at age 15 is admittedly not typical reading for a 15-year-old. But I have always been an avid reader even as a child. Of just about everything.

But as I saw Shogun again – I realised to my horror  that I could never read and complete a 1136-page book now!

And that is worrying.

With the sheer amount of distraction – It’s hard to read a book of 1000 + pages now.

Yet I and so many others had done it … a couple of decades ago(since the book is a bestseller).

So, I attempted to read a book a week for a year in 2017

This experiment continues in 2018

This post is about how you could read a book a week

It follows some unorthodox strategies in the face of social media which I hope you will also find useful

 

Why read a book a week?

Firstly, why bother to read a book a week?

The ‘why’ is actually very important and its more than ‘books’

It’s better to think of this as ‘reclaiming your mind’ in an age when media (especially social media) attempts to control what we read (and hence what we think).

Numerous studies have shown that Too much tech is ruining lives and at the same time reading is one of the best indicators of career success

But if you are a thinking man or woman, all media today is far from intellectual.

The discovery channel (supposedly based on science) broadcast the  infamous megladon documentary. Not to be outdone on sensationalism, National Geographic(until recently News Corp owned) included a documentary called cocaine hippos (based on Pablo Escobar’s hippos in Colombia)

The point here is – even documentaries are sensationalist.

Even the so called scientific ones – and an hour peppered with advertisements does not give time for any detailed analysis anyway. So, the overall idea is to see this as not just reading a book – but changing our thinking

Some overall objectives:

a)       Read the whole book but aim for comprehension

b)      Read things that you do not read normally

c)       Combine the reading of both larger books and also smaller books

Strategies

Here are the strategies

1)      Try to read unabridged books but use Sparknotes or similar. I would never have been able to read the  unabridged Moby Dick without Sparknotes – Moby Dick .

This strategy gives you the big picture and also helps you to read complex material with comprehension – for example if you understand the main themes.

2)      How to read a book which cannot be finished in a week? The answer is – don’t attempt to finish a book in a week. Many books take more than one week. So, at any point, you are reading more than one book – but you are always finishing a book in a week

3)      Speed reading does not work for me – but my speed of reading increased dramatically.  I am sure speed reading works for some – it did not for me.

4)      When reading literature – use comics especially Classics illustrated to start off with – before you get to the original book. I did say that my strategies are unorthodox! This strategy worked very well for me. I love comics and reading Classics illustrated allowed me to read many books which I would not have attempted otherwise

5)      Read for completion and balance with comprehension. This works quite well because you can skip the filler material in a book (especially if you combine with the other strategies)

6)      Read  Mortimer Adler’s How to read a book – first published in 1940 and still relevant today

7)      I can read business and technical books fast but many other categories not so. For example – this book although not very large – took a lot longer because the content was excellent  Lee Kwan Yew – the man and his ideas

8)      Read  Neil Postman – Amusing ourselves to Death .

It’s an iconic book – from the time of television – to understand why you need to rethink your media strategy. See this review of the book and many others online

9)      Read a range of different books across cultures – this is an excellent list – The most iconic books set in 150 countries

10)      Read in Chunks 30 pages. That means you can finish a reasonable size book (210 pages) in a week.

11)      Collect a set of book links – here are a few – Bill Gates book listTim Ferris book listJames Clear book list

12)      Try to read bigger books for the reasons I mentioned above. Till the end of the year, I have two specific books I am reading The autobiography of Marshall Zhukov (see this review of marshal of victory the autobiography of general georgy zhukov)  and Walter Isaacson’s biography of Leonardo Da Vinci

 

Conclusion

Today, I feel it’s not so fashionable to be thoughtful.  In many areas like politics – we see intelligent, thoughtful leaders being penalized.  Yet, that’s exactly why this kind of thinking is called for.  I see some notable exceptions. This thoughtful young girl is very inspiring!  How To Read More || How I Read 102 Books in a Year!

Both Buffett and Gates are avid readers The simple truth behind reading 200 books a year  - How Bill Gates reads a book . I read 48 books in 2017 and in 2018, this continues.  So, overall, this was a success and I hope you can learn from it

 

10 Nov 21:57

NewsBlur Blurblog: Imaginative photographer lands world-tour job at Coke

sillygwailo shared this story from Flickr Blog.

Growing up, Canadian photographer Joel Robison, known on Flickr as Boy_Wonder, was always a bit of a daydreamer. Blame it on the movies he watched or the stories he read as a kid, but it caused him to look at everyday objects differently. It’s a creative direction that blended both fantasy and reality. And years later, it would lead him to a dream job in photography and become a Flickr icon!

Joel’s foray into photography began after college graduation. It was when he established a teaching career when he felt something was missing.

Cool.Crisp.Refreshing.

“I didn’t really feel connected to that part of my mind that was creative,” Joel recalls. “I didn’t feel inspired. One day, I came across Flickr and saw photos by people that were so creative, entertaining and engaging! It was like a light bulb went off in my mind that maybe you need to try a camera.”

Joel went on eBay and bought a cheap, used DSLR camera for about $120. He began to play with it — learning different camera settings, shooting every single day, and he quickly came to realize that he wasn’t going to put the camera down for a long time.

“I started taking self-portraits and using that as a chance to to tell my story through my eyes, with me as the person that’s telling that story and that changed everything for me,” Joel admits. “On Flickr, I was inspired by connecting with other artists whom I felt have a similar style as me. It was this collaborative friendship that helped keep my inspiration flowing.”

Joel downloaded Photoshop and began to see the potential it had to create stories he’d seen in movies as a kid. He was finally able to tap into his imagination and express it to others.

“When I first started learning Photoshop, it would take a few hours for me to finish an image,” Joel says. “But the more I practiced and played with it… you know, trying to make these ideas in my head come to life, it started to happen. I started to see myself as being small, things around me being big or have a different purpose than they actually do. And the more I recognized that the pictures in front of me were the same as the ones that were in my mind, it encouraged me to keep going, keep trying new things.”

A few years into his photography, Joel took a picture of a few Coke bottles in the snow and posted it on Flickr. A friend of his suggested he send the photo to Coca-Cola in hopes they’d use it. At the time, Joel laughed it off and didn’t think anything of it.

“It was about a year later that I got this message from someone that works inside Coke saying, ‘Hey we’d like to take your picture and share it on Twitter. Would you be OK with that?’” Joel says, “I was very excited, and it made my day.”

“About three weeks later, I got this phone call from them saying they had developed a project for me to moderate their Flickr community,” Joel recalls. “They [Coca-Cola] wanted me to take their Flickr page, help it grow and to use my photos to encourage other people to submit their photos based around their positive themes.”

Joel moderated Coca-Cola’s Flickr community for about a year and a half. When it was all over, Coca-Cola presented Joel with an incredible opportunity.

“In 2013, they offered me a role on the FIFA World Cup Trophy Tour,” Joel says. “It’s a worldwide tour, led by Coca-Cola and FIFA, taking the FIFA World Cup Trophy on a world tour of 90 countries. And they offered me the role of photographer and voice of social media. I was shocked.”

“It totally changed the course of my life,” Joel admits. “I was able to quit my job and accept photography as my full-time career, and I haven’t looked back since. It’s been non-stop, I feel more passionate about it every day, and I feel like I am allowed to share with the world what I see, and I feel very supported in that.”

Today, many Flickr members marvel at Joel’s work, and he has inspired others to follow his lead. When asked about his success, Joel says he’s extremely lucky and admits he has a dream job.

“I’m 29 years old and I never would have dreamed that my life would include photography, travel or the experiences that I’ve been able to have,” Joel says. “To be able to create what I do, be accepted as I am and have people enjoy what I do is amazing.”

Visit Joel’s photostream to see more of his photography.

Check out Zev Hoover’s story, a 14-year-old photographer who’s been inspired by Joel’s work.

WeeklyFlickr LogoDo you want to be featured on The Weekly Flickr? We are looking for your photos that amaze, excite, delight and inspire. Share them with us in the The Weekly Flickr Group, or tweet us at @TheWeeklyFlickr.


10 Nov 21:57

NewsBlur Blurblog: Body Mass Index

sillygwailo shared this story from The New Inquiry.

sandra-set

When Sandra Bullock undresses in Gravity, she reveals less a body than a machine. This is workflow cinema

In Gravity’s 90-plus ninety-plus minutes of screen time, Sandra Bullock’s body sheds hardly any fluid. Ninety minutes without vomiting. Ninety minutes without pissing, shitting, or breaking more than the lightest, most perfunctory sweat. Exceptions: a small spot of blood, easily forgotten, and a few tears, far more memorable. Bullock cries demurely, but she has to: Her face is just the backdrop for the scene’s real action. For as she cries, the invisible hands of a few hundred animators slowly peel each CGI tear off her face and launch the quivering orbs towards the audience — who are tempted, against all reason, to reach out and touch them.

Like many things in Alfonso Cuarón’s film, the airborne tears are both beautiful and inaccurate. “Tears wouldn’t float off of your eyes and face,” former astronaut Scott Parazynski explained when he fact-checked the film for New York Magazine’s blog. Tears would cling to Bullock’s eyes and form pools around them. Surface tension in zero gravity is “the strongest force up there.” It can turn an astronaut’s body against her. As Parazynski says, “it would be scary if you were to lose your cookies in the middle of a space walk.” Your vomit would stay glued to your face; “you could actually be blinded.”

New astronauts often experience intense nausea while acclimating to zero gravity, and in the first few minutes of Gravity, Bullock’s character complains thatshe can hardly keep her lunch down. Yet she seems to forget her stomach upset the moment the plot sweeps her into a series of involuntary somersaults and leaps. Of all the troubles Bullock faces, her own body is rarely one of them. Like most action heroes, she’s immune to the baser functions that plague the rest of us. While we slip out of the theater to use the restroom, our onscreen proxy continues her struggles uninterrupted. This is a standard Hollywood omission. But in Gravity, it generates a glaring scientific error. After Bullock takes shelter in the International Space Station, she wiggles out of her heavy spacesuit to reveal what she wears underneath: not much.

“She would be wearing an adult diaper,” Cuarón admits. “Obviously, we chose not to do that.” Cuarón censored not only the diaper, but also the thick, insulated long underwear that clothe astronauts on space-walks. Why? “It’s a movie!” Some reviews offer formal justifications for Bullock’s bare skin: It makes her seem vulnerable and child-like; it helps along a few heavy-handed metaphors about rebirth. It’s also easy on the eyes. “She came out in this form-hugging Lycra underwear,” Parazynski told Vulture, “which I must say looked good.” When another astronaut, Chris Hadfield, complained about the underwear on Conan O’Brien, the late-night host lifted an eyebrow and made a joke of it: “I think Hollywood made the right call on that one.” Time’s Jeffery Kluger Kruger argued that some scientific inaccuracies are “beside the point” — especially when the scene in question serves up Bullock as “perfectly toned, perfectly lovely, zero-g eye candy.” In the postfeminist idiom of magazine journalism, it apparently reads as progressive to lavish praise on the physique of an accomplished 49-year-old woman. Better her than Her; at least Bullock has a body. “Her body was sick,” Juli Weiner wrote in Vanity Fair.

Film critics are perfectly capable of posing the standard, well-worn questions about the female body and the male gaze. The summer blockbuster Star Trek Into Darkness drew flack for its (far more ridiculous) underwear scene, as did Blue Is is the Warmest Color for its pornified lesbian sex. But in both of these cases, the bodies we see onscreen are clearly meant to titillate. Bullock claims that this was not her or Cuarón’s intention. Her intense, pre-Gravity workout regimen was a means of getting into character, she argues: “I wanted to remove what she looked like as a woman, what reminded her of being feminine and motherly, just so that the body was a machine.” Indeed, the critics who praise her body don’t seem to lust after it so much as wish they possessed it. It is the achievement of a woman at the top of her career. Through a combination of hard work and the most up-to-date technology, Bullock appears to have beaten age. But it’s hard to find her body sexy, because one can’t imagine touching her: She doesn’t look pliable, or even tangible.

Bodies in 3-D 3D cinema appear to have volume but no mass. The 3-D 3D body is hollow, a hologram; blood and guts don’t seem to animate it. Action films once made much of their protagonists’ pain. In Die Hard, Bruce Willis winced through every bruise and blow while maintaining his ironic cool. By contrast, Bullock’s body appears invulnerable. But she is anything but cool-headed. Her anxiety doesn’t seem to come from the threat of physical pain. Rather, she is overwhelmed with the amount of information she must process: coordinates, shuttle manuals, ornate procedures. Like a junior law associate trying to keep up with an ever increasing ever-increasing workload, Bullock remains physically safe as she grows ever more spiritually shaken. More than any recent Hollywood film, Gravity presents the body as mere operational device, a cursor, an avatar who performs a set of actions. It is workflow cinema.

***

Ridley Scott’s Alien (1979) is Gravity’s twin and its inversion. Both films decorate their bare-bones plots with dazzling visual effects; each follows a female protagonist to the end of her mission mission, and leaves her the sole survivor. But everywhere that Gravity is clean, Alien is gross, material, full of blood and sweat and splattered guts. Bodies in Alien can be beautiful, but only insofar as they are nothing more nor less than meat. It’s unsurprising, then, that the film’s heroine also strips down in front of the camera’s gaze. Alien’s infamous underwear scene so resembles Gravity’s that there is no doubt Cuarón looked to Scott’s film for inspiration. But the differences between the two are instructive — as is the fact that the near nudity near-nudity in Alien was the cause of a brief but vibrant academic controversy.

Alien happens to be one of the most cited and most discussed most-cited and most-discussed films in the history of Anglophone feminist film theory. Film scholars love Alien so passionately that even Slate has pondered why we are so obsessed with it. Alien’s iconic moment — in which a phallic-looking alien creature bursts out of its human host’s abdomen — resembles nothing so much as childbirth. The creature who emerges looks like a collage of teeth and various genitalia, all covered in a sticky brown fluid. This foe takes over a cavernous commercial spaceship, only to be fought off by a strong, resourceful, and wonderfully real-seeming heroine: Sigourney Weaver as Ripley. Over the course of the film, Ripley also does battle with an evil corporation — called “the “The Corporation” — and its handmaiden, a HAL-like spaceship operating system that goes by the name Mother. For anyone who was “Mother.” For anyone versed in the Lacanian-Marxist idiom that dominated film theory in 1979, it was possible to go on talking about Alien basically forever.

Talking and arguing: The near nudity near-nudity at the end of Alien was the subject of intense debate among feminist film theorists. Ripley undresses after she’s escaped the wreckage of the mothership in an emergency shuttle. Exhausted, sweaty, probably wet with alien guts, she peels off her standard-issue jumpsuit to reveal white bikini bottoms and a skimpy tank — “Not standard gear for space duty,” as one writer argued. Many feminists criticized the scene for transforming a powerful and active heroine into a passive object of voyeurism. We break identification with her, the story goes; the film converts her from heroine and subject into visual plaything.

Other scholars defended the scene as indicative of Alien’s complexity: Ripley is competent, strong, and sexual without being controlled by her sexuality. She is, in Thomas Kavanagh’s words, an “autonomous woman” who is entitled to take off her uniform at the end of a long day’s work. But for some, that was just the problem. Australian feminist Barbara Creed argued that Alien ends by comforting its male viewers with this palatable sort of femininity. “Ripley’s body,” she argues, “is pleasurable and reassuring to look at” — nothing like the “uncontrollable, generative, cannibalistic mother” the alien represents. Nor is her body anything like the traitorous onboard operating system, Mother. on-board operating system, “Mother.” Those figures might threaten patriarchy. An autonomous woman in her panties does not.

Persuasive as Creed’s argument is, few viewers of Alien will admit to feeling comfortable or comforted during the film’s conclusion. As soon as Ripley undresses, she discovers that her alien foe has stowed away on her escape craft. Undressed and unarmed, she quickly has to devise a strategy. She climbs into her spacesuit, straps herself into a seat, and opens up the airlock so that the alien is sucked out into space. (The scene is the inverse of Gravity’s climax, in which the ghost of George Clooney boards Bullock’s escape craft in order to cheer the heroine — and bore the audience — with a few folksy platitudes.) This is Alien’s tensest moment, the moment in which Ripley’s fear is the most catching: As she shakes, we shake too.

Does that mean that Ripley is still subject, that we identify with her? These seem like the wrong words. Instead, we enter into a kind of mutual responsiveness with the body we see onscreen. We gasp at the same monster and quake with the same fear. Film theorist Linda Williams has famously called horror one of cinema’s “body genres,” because it displays bodies in extremis, and in doing so forces the audience to experience the same extremes. Horror makes us scream; porn arouses us; melodrama has us choke back tears. Williams argued that that, when it comes to certain “low” cinematic genres, film is a kind of contagion.

Viewers who lust after Weaver’s body, then, may enjoy something much more complicated than the power of the objectifying “male gaze.” We are aware that Weaver’s flesh is vulnerable to both the alien’s claws and our devouring eyes. But the feeling that our onscreen companion is about to be ravaged might excite us because we share it. With her, we prepare to be ravaged ravaged, too. Cinema and sex share at least one substantive feature: Both can leave us confused as to who is subject and who is object. Sometimes this confusion is dangerous; sometimes it is bliss.

***

In Gravity, Cuarón discards many of the formal rules that have guided classical Hollywood cinema for about a century. The 180-degree rule, the axis of action, the eyeline match — all are gone. The world of outer space obviates the terms up, down, left, and right; space lacks even the horizon line that normally serves as the central axis for such terms. And so the cinematic frame — our view onto events — is free to move more wildly in Gravity than it typically does in a narrative film.

Take, for instance, the scene in which Bullock’s character first finds herself floating untethered. She’s spinning wildly, unable to see anything clearly, unable make any sense of her orientation vis-à-vis her space shuttle. The cinematic frame approaches her body, which spins in front of a stable backdrop of stars. But soon, once we are closer to Bullock, the frame proceeds to lock its motion to hers. Her face is suddenly stable in the frame, and all of outer space appears as though it were somersaulting around her.

This exercise in relative motion is virtuosic enough, but still more ambitious is the visual stunt that follows. Our viewpoint floats straight through Bullock’s visor so that we are inside her spacesuit helmet with her. We then we spin on our axis so that we land in a point-of-view shot. In the celebrated POV sequencethat ensues, the landscape whirls around us. Heaven and earth become an abstract, spinning blur. We try, along with our heroine, to pinpoint the tiny speck of her space shuttle amidst the colors and shapes zipping by, and we feel the impossibility of the task set before her.

But the colors and shapes follow a pattern. Gradually, we assimilate them; we start to get our bearings. And with a gentle assist from Cuarón — who slows our spinning ever so slightly — we manage to see the spaceship at the precise moment that Bullock’s character does. The scene is what J. Hoberman, in a review of the film, called an exercise in “spatial disorientation — or better, reorientation.” Several critics compare this aspect of the film to Kubrick’s 2001: A Space Odyssey (1968), which critic Annette Michelson famously celebrated for illustrating the “pleasures and problems” of bodies in space: “Viewing becomes, as always but as never before, the discovery, through the acknowledgment of disorientation, of what it is to see, to learn, to know, and of what it is to be, seeing.” The very plotlessness of Kubrick’s masterwork gives the film its sensuality — its air of “erotic liberation,” as Michelson called it. Viewers had the time to luxuriate in their own disorientation and reorientation.

Gravity moves far too quickly and formulaically for any of that. We don’t have time to linger in sensation — we have a job to do. In Cuarón’s hands, the immersive point-of-view shot doesn’t signal identification so much as an alliance between viewer, camera, and character. We solve the same problems that Bullock solves. We’re urged to find our orientation, to look for familiar shapes, to figure out how to get from point a to point b. Watching Gravity is, more than anything, like playing a video game, and its impossibly long POV shots mimic the video-game style. Cuarón had already invented this first-person-shooter aesthetic in Children of Men (2006). In that film’s climactic tracking shot, some specks of animated blood land on the camera lens, only to fade away as the protagonist (Clive Owen) enters the final showdown — as he “levels up” and confronts another obstacle.

Gravity both heightens and disinfects this video-game look. At least Owen bleeds and limps and struggles along in his muddy, broken shoes. Bullock experiences nothing so messy. We see her in danger, but rarely in pain. When the flames of a space-station fire lick her ankles, we mentally urge her to move faster. We sit on the edge of our seats because we know that, at any moment, she could die: game over. But we never see her skin bruise or burn. Whatever happens to Bullock’s body only interests Cuarón — and us — insofar as it bears on her ultimate survival. Each setback is a small drop in the heroine’s “health” bar; we can still play happily so long as we don’t get to zero. Yet Gravity does not demand from its heroine or its audience the typical range of video-game tasks. Unlike the action-movie or war-game hero, Bullock has nothing to shoot and no one to kill. Her task, like ours, is simply to organize the overwhelming flow of visual data she receives through her visor. Her eyes and mind just happen to reside in a body.

Such workflow cinema is the perfect use of 3-D. 3D. As viewers and players, we can navigate a world of hollow bodies more strategically than a world full of tactile sensation. If Gravity’s lens showed Bullock’s skin as fleshy and irritable, we might sense the chafe of her spacesuit or the intense heat and cold of her spacewalk. These sensations might distract us from our task. But 3-D 3D animation cannot render such textures very well yet. In this era of drone pilots and the quantified self, perhaps it does not need to. The kind of work we do watching Gravity resembles the work many of us do at our desks every day: We devour and analyze images, at the expense of our bodies. Many of us sink so eagerly into the slow pace and rich textures of Belá Tarr to escape just the experience that Gravity provides.

Bullock’s body thus offers a different problem than does Weaver’s in Alien. We no longer wonder whether the heroine is an object of lust or a subject of identification: She is neither. Nor is her movement through space occasion for the aesthetic free-play we see in 2001. Instead, Bullock is a device, custom-built to accomplish various goals. Even the film’s transparent attempt to humanize her character (using a hastily tacked-on backstory about a dead child) serves a clear purpose: It allows Bullock to meet the minimum conditions for an Oscar nomination.

But Bullock’s real virtuosity as an actor lies in her ability to make herself into an instrument. Producer David Heyman praised Bullock for “all the effort and physical exertion” of her performance, “the precision of the technical aspects.” Bullock had to move her body in slow-motion, to turn herself into a marionette strung up on wires while a team of puppeteers moved her limbs. The most difficult of these scenes, Heyman Hyman notes, was the scene in which she strips down: “She’s on a bicycle stringing uncomfortable with people moving around on 12 wires, through it all, with no gravity. Physically the body must not show the tension, so it looks effortless.” Her body enthralls not because of its fleshy sensuality, but because of her mastery over it — and her willingness to let the powerful apparatus of contemporary film production direct her immense competence. We, as viewers, adopt this mastery and subjugation with her.

Thirty-five years have passed since Alien. In 1979, many feminist critics saw the onscreen sex object as the perfect image of patriarchal oppression. Contemporary film critics have absorbed some of these lessons, and continue to debate the criteria by which they will ultimately judge a film as sexist or progressive. In doing so, they forget the central lesson of feminist film theory: that Hollywood cinema willalways try to reproduce its own patriarchal, white-supremacist, capitalist system. The thing that makes this cinema interesting, worth examining and even loving, is that it does so using machines and people it can’t always control. Hollywood offers us stark and telling images of the forces that constrain and construct us. And, sometimes, its quirks and flaws suggest escape routes and unimagined alternatives.

When asked whether the film was specifically for female audiences, Bullock is clear: “The point of view is everyone’s point of view. It just so happens that I have a female body.” By allying us with its protagonist, Gravity universalizes its image of exploited female labor, sells it back to its entire audience, men and women alike. Gravity shows a contemporary ideal of femininity still more sinister than the pinup. It presents woman as an intricate machine, strapped to dozens of wires, working her ass off with the goal of appearing weightless.

10 Nov 21:55

Going Narrow

by Richard Millington

Related to yesterday’s post, be ruthless about removing things from the community.

The temptation is always to add more, cater to every whim, and let old items linger in the community indefinitely in case someone needs them.

It’s the same reason why you probably have drawers in your house stuffed with electric cables.

Right now you probably have:

  • Thousands of old discussions which generate no visits.
  • Hundreds of static pages which get little traffic.
  • Features which are costly to maintain yet don’t produce any meaningful change.
  • Menu items which get in the way of more important menu items.
  • Long-term inactive members who will never come back.
  • Discussion categories that don’t merit being their own discussion category.
  • Topics which are slightly outside your community’s core purpose yet are frequently mentioned.

I’d suggest getting ruthless about removing these areas. It clogs up the site, hurts search traffic, creates a confusing experience, and distracts you from doing what you’re meant to be doing.

Unless you’re one of the few ‘mega communities’ out there today, you don’t want to be expanding wider, you want to narrow your focus and go deeper. You want to do a tiny number of things better than anyone else.

We’ve frequently seen surprisingly high engagement boosts when we remove features from the community.

If people won’t miss it, you can remove it.

p.s. Dave Hersch has similar thoughts about community vendors.

10 Nov 21:54

Why is functional programming gaining traction? Why now?

by Eric Normand

The biggest companies in the world are investing heavily in functional programming. From Facebook building React and Reason, to Apple pivoting to Swift, to Google developing MapReduce, functional programming is gaining traction. But why? I go over four hypotheses and evaluate them.

Transcript

Eric Normand: Why are the biggest companies in the world investing in functional programming? Why now? What’s going on? Hi, my name is Eric Normand, and these are my thoughts on functional programming.

Big companies are using Functional Programming

Across the board, we see companies investing in functional programming. Talking about Facebook, they’re doing a lot of stuff, most notably with ML. They’ve got this thing called the Reason, which is a language with an ML backend, but it’s got a JavaScript frontend syntax. They’ve also done React, which they keep talking about as a functional paradigm.

They’re doing stuff with Flow, so typed JavaScript. Functional programming all over the place. They did Haskell internally. It’s just everywhere. Apple, the biggest company in the world, has moved its main language from Objective-C, which is an object-oriented language, to Swift, which is much more inspired by Haskell and other functional languages.

JavaScript is becoming more and more functional every day. Scala, Clojure, Elixir, Erlang — these languages are just becoming more and more popular. The question is, “Why now? Why so much investment? What’s going on?”

Hypothesis #1: The number of programmers is growing

Hypothesis one is that there have always been functional programmers. Functional programming is an old paradigm. It hasn’t just emerged out of nowhere. It was there very early on. Object-oriented is the newcomer, but why now? It could be that just due to sheer numbers.

The number of programmers who are inherently inclined to functional programming is growing, just the absolute number, because the number of developers in general is growing. It’s growing exponentially. At some point, you’re going to hit a critical mass where you’re going to start to hear about it.

There’s a big enough community to have their own conferences, to have their own blogs. They’re going to have some effect on the broader world. Maybe that’s what we’re seeing. I think that there’s something to that.

One of the reasons why functional programming is taking off is that functional programmers are numerous enough that they can organize. They can have their own trade publications and stuff like that. There’s something a little bit to that.

Hypothesis #2: We have to program our many cores

Hypothesis number two, which is the argument I hear the most, is that we’re living in a multi-core world. We can’t speed up our processors anymore. The only way to get that speed up is to run in parallel. You have multiple threads, whereas before, you could just wait 18 months and your single-threaded application would get faster.

I don’t buy this argument. The problem is that we aren’t seeing the number of cores increasing on our CPUs. The transistors that Moore’s law would predict are moving toward into the GPUs. Functional programming, the general purpose functional languages, they don’t really have an answer to GPUs, not a great answer.

Functional paradigms should work on them, but it will take a lot more time before we can use them from a general purpose language in a way that would feel very comfortable and native, so I don’t buy that argument. It was a valid argument when we were predicting that everyone would have 1,000 cores on their machine very soon because it was happening.

It was like, “Oh, I have one core. Now, two cores. Now, four cores. Now, eight cores.” In the 10 years since that argument came out, we now have 16 cores. It hasn’t increased exponentially like we thought, so no, I don’t believe that.

Hypothesis #3: We are drowning in complexity

Hypothesis number three is that we are drowning in complexity. These tech companies are just full of software, full of code. They just need something else to organize around besides the standard class-based, object-oriented programming that they were started with, or maybe even the imperative programming they were started with.

There’s a lot to that. These companies are spending more and more per line of code. They’re spending more and more per feature. They’re realizing that, if they invest in better abstractions, better technology, that they will, in the long run, gain a lot of advantage. Their lines of code will be cheaper and their features will be cheaper.

The question is, why not object-oriented programming?

Isn’t that full of great examples of design? The answer is that, although…Objective-oriented programmers invented this idea of software design of how to modify your code so that it’s easy to modify so that you can add new features.

Even though they did pioneer that, it’s fallen short. It actually is a lot of work to develop your software in that way. Is it working? That’s the real question. Is it enough to just move your methods around and come up with smaller methods and things like that?

A short rant on the Design Patterns movement

I’m just going to say this. The patterns movement for how to design these reusable things, reusable patterns — not reusable code, but the patterns are reusable — it just didn’t have the effect that it was supposed to have. The effect it was supposed to have was to teach people these design principles.

Just looking at what actually happened, I think it’s made code worse. I’m just speaking in general from what I see of enterprise code bases. You just have a lot of abstract factory proxies and not a lot of stuff happening. It’s unfortunate because there’s a lot to the design pattern movement that just doesn’t come across.

Maybe it’s too hard. Maybe it’s touching at something that’s so abstract people can’t handle it. Whatever happened, in the actual real world it didn’t work. Where do you turn to? Functional programmers. Functional programmers model in a different way. They tend toward simpler models. More elegant mathematically-oriented models.

I’m not saying you can’t do that in object-oriented programming. I’m just saying people aren’t doing it. People like to write factory method. They like to write singleton classes. These are abstractions that take more code than they save, let’s say, whereas functional programmers are the ones thinking deeply about how to make things simpler.

Sorry, it’s just the truth. It’s the truth that I believe. It’s my truth. When I look around at the world, what’s actually happening is functional programmers who can see the lines of simplicity and how to design things more elegantly. Not everybody. Not everybody, but as a whole, generalizing as functional programmers.

When Apple needs a new language that’s going to define the next 30 years of their code, they turn to functional programming. That’s what they did. They said, “Look, object-oriented programming? It’s not helping. We can’t patch this language anymore and maybe we need a completely different model.” That’s hypothesis number three. There’s a lot of merit in that.

Hypothesis #4: All software is a distributed system

Hypothesis number four is that it’s not the number of cores. It’s not parallelism in that sense. It’s the distributed systems. All the software we write nowadays is a distributed system. Whether it’s on the web or on mobile, we are writing distributed systems. That’s our jobs now.

Not that object-oriented people, object-oriented programmers, object oriented- design can’t handle that. It’s that functional programmers have been thinking about distributed systems and have the right questions to ask that object-oriented design has not asked, has not gone into very much.

Functional programmers talk about time. They talk about synchronization. They have models of CRDTs. They talk about associativity, commutativity. These properties are very useful in a distributed world.

Just real quick, you have distributed systems when you have multiple computers talking to each other. That happens in every Web app because you have at least a browser and a server, but you have more than that in most cases. You have the database servers, you have the APIs you’re accessing. That could be all the AWSAPIs. Those are other computers you’re talking to.

You have your Web server. You have thousands of connected clients at the same time. Your mobile app is not a standalone app. It’s talking to a server. Has to synchronize with iCloud or whatever it’s talking to. These things change the game. It’s not a step-by-step do-one-thing-at-a-time paradigm anymore.

It becomes, “I just got this message from outer space from some other computer somewhere, and now I have to deal with it, and I have to make sense of it, and apply it to the state that I’ve got on my machine in this local process. What does that look like?

“Now the user has done this and I got to send a message somewhere else and try to reconcile all these messages from all these different places.” Functional programmers have been thinking about that, that’s all. We’ve been doing that. Our languages reflect that. Our ideas, our thinking, our way of speaking.

Conclusions

Those are four hypotheses. Yes, the number of developers is growing. It’s going to make the number of functional programmers grow. That’s natural. These two other problems of having better models that help you simplify the complexity that these big companies are dealing with, especially with large amounts of data.

That one and also the fact that we’re all working on distributed systems nowadays means that we need to be asking questions that don’t come up very often when you look at object-oriented design. They come up in functional designs. That’s why we’re seeing companies investing more and more in functional programming.

All right. My name is Eric Normand. This has been a thought on functional programming. Please, I’m on LinkedIn. You can get in touch with me. You can connect with me. I’m Eric Normand. Just search. Eric Normand Clojure you’ll find me. I’m @ericnormand on Twitter.

Please, if you got an angry Tweet, let me know. Follow me. All those things. Also you can email me if you have something longer to say at eric@lispcast.com. All right, see you later. Bye.

The post Why is functional programming gaining traction? Why now? appeared first on LispCast.

10 Nov 21:52

USB-C :: Auf das Kabel kommt es an

by Volker Weber

ZZ76E0D9EC

USB-C verspricht eine schöne neue Welt, ein Stecker für alles. Dabei kommt es auf das Kabel an. Das beim iPad Pro mitgelieferte Kabel etwa liefert zwar den Strom zum Laden, überträgt die Daten aber nur mit USB 2.0 Geschwindigkeit 480 Mbit/s. Also Augen auf beim Kabel-Einkauf. Dieses Belkin-Kabel etwa kann bis zu 10 GBit/s übertragen, ist also bis zu 20 mal so schnell. Ob ein Kopiervorgang 1 Minute oder 20 Minuten dauert, das spürt man schon. Und dann wäre da noch Thunderbolt 3, das den gleichen Stecker wie USB-C verwendet ...

Das ist auch der Grund, warum die USB-C Dongles ihr eigenes Datenkabel angeschweißt haben. 4k Video kann man mit USB 2.0 nicht übertragen. Da reicht die Bandbreite nicht.

More >

10 Nov 21:52

Fastest vehicle in town? The bicycle.

by Volker Weber
Smartphone data from riders and drivers schlepping meals for restaurant-to-home courier service Deliveroo shows that bicycles are faster than cars. In towns and cities, bicyclists are also often faster than motorized two-wheelers. Deliveroo works with 30,000 riders and drivers in 13 countries.

That's real data, not some simulation. Of course, these are well trained riders.

More >

10 Nov 21:52

Twitter Favorites: [uncleweed] Create for yourself and let others peek over your shoulder if desired / make goodness for an unknown audience 100 y… https://t.co/uLGC199oej

daveo @uncleweed
Create for yourself and let others peek over your shoulder if desired / make goodness for an unknown audience 100 y… twitter.com/i/web/status/1…
10 Nov 21:52

Celebrating & judging 1 year of Weekly Charts

52 weeks ago, I wrote the first Weekly Chart. Each Thursday since then, I published a new chart. This definitely keeps me grounded: 52 charts in 52 weeks can’t be all perfect (I also have other things to do). But that’s ok. The Weekly Chart reminds me that it’s better to have something imperfect published than nothing at all.

So which ones are the more perfect and less perfect Weekly Charts? I went through all of them and rated them in two categories: the quality of explanation and the quality of the Weekly Chart itself:

The two categories are not related at all. I’ve written articles with boring charts but (hopefully) helpful explanations, like the one about log scales or about the difference between the mean and the median. And I’ve shown great charts, but with far less exciting explanations, like this loooong one from three weeks ago.

“So which ones should I read?”…

…you might ask. For the Best Of Datawrapper Blog article two weeks ago, I collected my favorite Weekly Charts in general. They’re a good entry point into the world of our Weekly Charts:


Different units, different patterns, week 19: The same data tells a different story depending on the level of detail you choose.


What the difference between mean and median tells us about income inequality, week 9: What’s a mean and what’s a median, and what it means when the mean is higher than a median.


Five ways to read a scatterplot, week 13: There’s more to read out of a scatterplot than you think.


Dollars for College (or TV 🤔), week 47: A chart never shows us the whole picture. We should always ask ourselves: “What don’t we see in this chart?”


Also, I want you to know that the Datawrapper team has been amazing in supporting me. Both Gregor & Elana wrote two of the best Weekly Charts of the past year while I was on vacation. And my articles would be so much worse without our frontend developer Ivan. Every Thursday afternoon, he goes through my Weekly Chart draft and makes it sound like it’s coming from a person with proper English skills. Thank you Ivan!

What kind of Weekly Chart do you enjoy more: the one with the better chart or with the better explanation? And is there anything you’d like me to change in general? Let me know, e.g. in the comments below or at lisa@datawrapper.de. Thank you!

10 Nov 21:52

C'est le jour J!

by peter@rukavina.net (Peter Rukavina)

My new Mac mini is scheduled for delivery today, and I received an SMS from Apple this morning alerting me:

Screen shot of SMS from Apple with shipping notification

Because this is bilingual Canada, the alert was in both English and French, and I noticed that the French version of “Today’s the day” was “C’est le jour J.” I initially though the “J” was an errant character, but it turns out that “le jour J” has become a generic French term for “the big day”:

Le jour J and, to a lesser extent, D-Day can also be used by civilians, as a figurative reference to an important event, similar to saying “the big day” in English. While jour J can be used for happy occasions like parties, D-Day is limited to events that one doesn’t look forward to, like a deadline, perhaps because it’s easy to imagine D standing for doom or disaster.

From this I learned that while VE Day (Victory in Europe) and VJ Day (Victory in Japan) are references to specific events, the “D” in “D-day” means, oddly, “Day”:

The terms D-day and H-hour are used for the day and hour on which a combat attack or operation is to be initiated. They designate the day and hour of the operation when the day and hour have not yet been determined, or where secrecy is essential. The letters are derived from the words for which they stand, “D” for the day of the invasion and “H” for the hour operations actually begin. There is but one D-day and one H-hour for all units participating in a given operation. It is unnecessary to state that H-hour is on D-day.

The military has a raft of letter-designations for days and hours, including E-day (“the unnamed day on which a NATO exercise commences”) and P-day (” the expected date at which the rate of production of a consumable equals the rate at which the item is required by the Armed Forces”).

C’est le jour J!

10 Nov 21:46

Hunter Block – West Hastings Street

by ChangingCity

We caught a glimpse of this building when it was on an early hand-coloured postcard. It was lost in 2004, (the same year that we shot the ‘before’ image) after a fire destroyed the structure. The building dated back to 1890s, developed by the Hunter Brothers who also built a smaller building on Granville Street in 1892. Samuel and Thomas Hunter (and not James, as some surprisingly inaccurate official records suggest) were contractors and developers. Samuel arrived first, in 1891. Thomas was here in the same year, and in 1892 he got married. As the Daily World reported: “Wooed and Married. In Homer street Methodist church on Thursday evening Thos. Hunter, of Hunter Bros., contractors, was married by Rev. Robert R. Maitland, assisted by Revs. E. Robson and J. F. Betts, to Miss Jennie Simpson, daughter of Theodore Simpson, Seymour street. The groom was supported by his brother Sam and Jonathan Rogers“.

The wedding record shows that the brothers were from ‘Wilfred’, (actually Wilfrid, near Brock) Ontario, and Jennie had been born in New Market, also in Ontario. When she died in 1937, she was recorded as Jane Maria Hunter, and census records also record her as Jane, although her marriage certificate and the newspaper report called her Jennie. The 1911 census found the family headed by Jane’s father, Theodore Simpson, (born in England) and Jane and Thomas with their 17 year old son who was named after his grandfather.

Samuel was a year older than his brother, and they had been part of a large family headed by William, from Nova Scotia and Elizabeth, who was Irish. At 15 Sam was already working as a labourer, and when he first arrived in Vancouver worked as a machinist. Only a year later the brothers were building a modest commercial building on Granville Street for a local landowner, John Twigge, and a year later partnered with Jonathan Rogers (who was at Thomas’s wedding) on a commercial building on Powell Street. By 1896 only Thomas is listed in the street directory, and it would seem that Samuel (who would have been aged about 30) may have died in 1895; there’s an 1896 newspaper report that says ‘the heirs of the late Samuel Hunter of this city, received $2,000’ in an insurance payout.

The building was therefore only associated with Thomas Hunter. There’s a permit approved in 1902, designed by Blackmore and Son, costing $15,000 to construct. Thomas was the builder, and he stayed in Vancouver, and continued to act as a contractor and builder for many other projects. Several were investments built for his own portfolio, including about a dozen frame houses and an apartment building on Nelson Street in 1909. He also built a Parr and Fee designed commercial building on Cordova for his father-in-law in 1903, and there was a Parr and Fee commission for a three storey block in 1906, also on Hastings (and it’s possible that the Blackmore commission was never built, and this was a Parr and Fee building).

In 2004 we photographed the building early in the year, only a couple of months before the local press reported the fire that destroyed the building: “The three-alarm fire raged through a two-storey building at 311-317 West Hastings, gutting the Blunt Brothers, a marijuana-oriented cafe that billed itself as “a respectable joint.” Smoke from the blaze on the edge of Gastown could be seen as far away as White Rock.

Vintage clothing store Cabbages and Kinx was also destroyed, as was Spartacus Books, a long-standing left-wing bookstore.”

As historian John Atkin noted at the time: “The building that has major damage [311-317 West Hastings] is a wonderful building with an amazing sheet metal facade to it, lots of pressed tin.  It was very rare in Vancouver because the original overscale pediment that sat on top of the building was still intact.  Those are one of the first things to fall down in windstorms or whatever, and here it was intact.”

Today the site remains one of the most obvious redevelopment opportunities, with some parking, and the odd movie shoot occupying the space.

10 Nov 21:46

Holiday Inbound: Remembrance Day 2018

by chuttenc

100 years is a lot of time. It is longer than most lifetimes. It is long enough to build and erase cultures. It is long enough for the world to change.

100 years is not a lot of time. It is too short a time to forget. It isn’t long enough to understand our world. It isn’t long enough to understand each other.

This Sunday, November 11th marks the 100th anniversary of the end of hostilities of World War I. In Canada, plastic poppies have been blooming on lapels across the nation to show that we do remember the War to End All Wars. We also remember the wars that came after. And the conflicts we don’t call wars any more.

More importantly we remember those who fought them. They fought for us. They fight for us. They fight for others, too. They fight for good. We remember the fighters and their fights.

This will be the 99th Remembrance Day. This will be the 99th time we lay wreaths on cenotaphs. This will be the 99th day we add names to the list of the remembered. This will be the 99th time we mark the eleventh hour of the eleventh day of the eleventh month with our silence.

Silence so you can hear the rain. Silence so you can hear people nervously scuffing their feet. Silence so that even children know something is happening. Silence so loud you can’t hear a thing.

In Canada we will mark the occasion on Sunday. We will have Monday off. We will return on Tuesday.

It’ll only be a short while. We’ll be back before long.

:chutten

10 Nov 21:46

The Voyage of my Mac mini

by peter@rukavina.net (Peter Rukavina)

From UPS’s tracking information for my Mac mini package, here’s the voyage it took to get to Charlottetown from Shenzhen, China:

Google Map screen shot showing stops my Mac mini took to get from China to me

The package started in Shenzhen, China, leaving late on Saturday, November 3 and arriving at Chek Lap Kok, Hong Kong on the next morning, Sunday, November 4.

After spending the day in Hong Kong, the package left for Taoyuan, Taiwan Sunday evening, spent a few hours there, and then left for the USA.

It arrived in Anchorage, Alaska on Monday afternoon, spent three hours there, and then left for Louisville, Kentucky, where it arrived just after midnight on Tuesday, November 6.

The package spent a day in Louisville, leaving for Canada early Wednesday morning and arriving at Mirabel International Airport in Montreal just before breakfast.

After confusingly-reported customs formalities in Montreal (“We currently have the package. The receiver requested clearance by a non-UPS broker. / As requested, the package was transferred to a Free Trade Zone or a non-UPS broker.”), it left for Dieppe, New Brunswick on Wednesday morning, arriving mid-morning Wednesday.

The package began the last leg of its trip this morning at 4:30 a.m., leaving Dieppe for Charlottetown, where it arrived at 6:45 a.m. and went on a truck for delivery to my house.

Total distance traveled, give or take, was 12,000 km in 5 days.

10 Nov 21:45

Home Futures contribution: Just what is it that makes today’s homes so different, so appalling?

by AG

Way stoked to have the following piece in Home Futures, the catalogue for the Design Museum’s impressive new show of the same name, alongside incredible work from Open Structures, Superstudio, Enzo Mari et many al. & essays from the likes of Deyan Sudjic and good Justin McGuirk. In full, it’s called “Just what is it that makes today’s homes so different, so appalling?: Labor-saving technologies, digital nomadism and the ideology of ease.” Please enjoy.

For most of us, home is a great many things. It affords us shelter from the elements, most obviously, but also a platform for conviviality and a container for our earthly possessions. Its address and appointments offer us, if we are lucky, a store of social capital to trade on; its walls and spaces an ark in which familial memory can be borne down through time; and its furnishings a supple, versatile medium in which we might express the uniqueness of the selves we understand ourselves to be.

In recent times, though, the dwelling-place is increasingly asked to serve one end above all these others. The home is now supposed to support efficiency — not merely or even chiefly its own, but that of its occupants. In sheltering, resting, restoring and entertaining us, it is supposed to underwrite our ongoing ability to act in the world as the autonomous, prudent, rational actors the regnant moral-economic theory of our age calls for us to be, in a manner as parsimonious with time, effort and other resources as is practically achievable.

Over the past century, we can see the drive toward efficiency settling over the domestic environment in three broad and overlapping waves, each of them arising in response to the technosocial possibilities of a given moment. The first and longest of these waves, starting around 1920 and yet to be fully concluded anywhere on Earth, accompanied the introduction into the home of labor-saving electromechanical appliances — a parade of ever-lighter and more powerful vacuum cleaners, dishwashers, washer/driers, convection ovens and lawn sprinklers, without which the exacting hygienic and self-presentation standards of middle-class existence become hard to maintain.

The second is of far more recent vintage, getting under way only after the smartphone and widespread broadband connectivity had reached ubiquity in the urban centers of the developed world. It translates the distinctively neoliberal corporate logic of outsourcing into domestic terms, calving off each distinct function pursued in the course of ordinary household life (laundry, meal preparation, maintenance, even pet-, elder- or childcare) as a task to be mediated by an array of single-purpose apps.

The third, though it found early expression in certain utopian architectural currents of the 1960s and 1970s, is something we can only as yet perceive in vague outline, as a weak signal from a future that may or may not be coming into being. Seeking maximal efficiency by liberating the unencumbered body to dwell and work productively just about anywhere on the planet, this wave of innovation leaves traditional notions of home behind entirely.

Whether framed in such radically nomadic terms, though, or in the relatively drab and conventional ones of an “Uber for laundry,” there is no better way of understanding the trade-offs involved in the quest for domestic efficiency than by pursuing them to their source: the original provision of the middle-class home with labor-saving technological devices, a hundred years ago.

§

The automation of home life is a well-trodden path across what is by now a full century of design, but most of the overt celebration of automation as a virtue in itself came during that century’s first half. From R. Buckminster Fuller’s Dymaxion House (1920) to the Philco-Ford 1999 AD House (1967), there is no trope more central to the era’s vision of domestic ease. Most of us of a certain age recognize the exemplary Homes of Tomorrow, from a long succession of World’s Fairs, Expos and Walt Disney TV specials. Taking the Corbusian notion of the home as a “machine for living” with striking literality, these all-electric lifepods pampered their occupants with easy-dusting curves, instant-cooking Radaranges, push-button control panels and hose-down floors.

As little as such Futuramas, Futuros, and Houses of the Future (Monsanto or Smithson variety, take your pick) have to do with the way most any of us actually live, ever did or ever will, they constitute much of the loam in which visions of domestic advance are still grown. For all the concern for ecological sustainability, new materials and new construction methods that has emerged in the decades since, and for all the successive waves of social change that have transformed the size, age and composition of the average household, it’s the DNA of these twentieth-century forerunners that designers still unconsciously draw upon when devising the material substrate of contemporary living. It’s worth attending closely, therefore, to the unspoken and curiously retrograde — indeed, frankly neocolonial — principle that nestles at the core of all these Homes of Tomorrow, which is that they are intended to afford every class of consumer a level of service previously only available to those with the economic wherewithal to maintain a staff of domestic servants. (This argument was never made more plainly than by a 1924 issue of the French magazine Je Sais Tout, an early entrant in the lifestyle genre, which touted a three-storey “house without servants” in which dozens of futuristic, electrified appareils pratiques replaced the butler, the scullery-maid, the cook and the nanny.)

Whatever savings of time and energy was realized by such devices was primarily intended to benefit “the lady of the house,” it being assumed by designers almost without exception that the male head of household was elsewhere, earning a crust. The liberation from drudgery they offered was, in any event, ambiguous and ambivalently received. As Betty Friedan had observed in The Feminine Mystique (1963), nobody quite knew what to do with the time left over after the daily round of chores had been seen to, and the endless hours in splendid suburban isolation were every bit as suffocating and soul-deadening for women trapped in the home as the cycle of métro-boulot-dodo was for the men tasked with bringing home the bacon. Little surprise, then, that the tranquilizer Miltown (cf. The Rolling Stones, “Mother’s Little Helper,” 1966) became the first runaway success of the postwar pharmaceutical industry.

Precisely what was it that the proud owners of these gleaming new labor-saving appurtenances were being freed for? For much of the twentieth century, the canonical answer would have been “leisure time” — which is to say, a period in which the adult members of the family might amuse, exercise and psychically restore themselves, renewing their labor power while partaking maximally of the fruits of a consumption-oriented economy. Thus the anticipatory visions of laughing, pipe-smoking dads and gingham-bloused moms so common to the era, waving at Junior through the seamless glass of the swimming pool set into the wall of their living room, or playing canasta in the swiveling leatherette seats of their self-guiding, bubble-domed futurecars. By midcentury, with the Keynesian economies of the West riding the postwar expansion to heights of collective wealth never scaled before (or, for that matter, at any time since), the architects of domestic tranquility had seen the future, and it was leisure.

§

And here we stumble across a problem. After five solid decades of triumphantly unbroken innovation in microelectronics — three of which have seen an easy-to-use global informational network gradually extended until it can reach virtually every domicile on the face of the Earth, and the past two a parallel revolution in supply-chain management, low-cost manufacturing and logistics — we have never before had more, cheaper or more powerful labor-saving devices in the domestic environment. A panoply of networked objects are now distributed through the “smart home,” in a local deployment of what is generally described as the “internet of things,” or IoT; in addition to the by-now-unremarkable networked thermostats, lightbulbs and webcams, these can include a wide range of embedded sensors and actuators. Increasingly, the white goods themselves are networked, often to no clear end beyond affording the harried householder a remote control in the form of their smartphone, with which to begin the drying cycle or kick on the air conditioner while still stuck in commute traffic an hour away.

Taken all together, they are capable of dynamically optimizing the home environment across multiple axes, ensuring that its temperature, lighting levels, security posture and so on all continuously correspond with whatever state is desired by the user/resident. Increasingly, as well, such tasks are mediated via the natural-language speech interface of “virtual assistants” like Apple’s Siri, Amazon’s Alexa and Google Home — beachheads and points of presence in the home for the most advanced consumer-facing artificial-intelligence capabilities researchers have yet been able to devise. It would seem that peak domestic efficiency is very much within reach of anyone with the nous to download a few apps.

But for all of that, the leisurely future we were promised failed to arrive on schedule. In fact, it didn’t materialize at all; if anything, “leisure,” in the creaky, Affluent Society sense of the word anyway, is a thing that scarcely exists anymore, for almost any one of us. If it isn’t the mass production of leisure time, then, what problem does the smart home think it’s solving? The time saved by going to all the trouble of continuous modulation is time for what, exactly?

Given that the devices and services in question notably tend to be designed for people whose tastes, preferences and lifeways very much resemble the designers’ own, the contemporary Bay Area answer would appear to be “more code sprints and daily scrums,” i.e. further Stakhanovite exertions on their employers’ behalf, directed toward the goal of bringing ever-more-niche information-technological conveniences into being. But there’s a strong element of bad faith to all of this as well, and revisiting a curious landmark in the history of automation shows us why.

§

In 1770, the Hungarian inventor Wolfgang von Klempenen presented his empress, Maria Theresa of Austria, with the curious contrivance that has become known to history as the Mechanical Turk. This was a cabinet atop which sat the torso of a figure garbed and turbaned in the manner of an Ottoman sorcerer, one arm equipped with a pipe and the other constructed in such a way as to give it the freedom to pluck chess pieces from a compartment and move them about a board set into the cabinet’s surface. To the awed delight of its royal audiences, this seeming automaton played at grandmaster level, taking on all comers and seeing them down to defeat, governed by nothing more than the elaborate assembly of brass gears, cogs and rods visible within its cabinet.

In fact, as we now know, the Turk was cunningly designed to conceal a human operator, a grandmaster of chess — a long succession of them, in fact, from its debut until its final destruction in a fire in Philadelphia in 1854 — and wasn’t in any real way automated at all. So many of the tasks launched by a command to Alexa or Siri or Google Home are like this: a desire expressed in a few words, all but literally uttered without thought, sends human bodies scurrying behind the scenes to preserve the user’s airy sense of automagical effortlessness. (In fact, Amazon has run a distributed digital piecework service explicitly named Mechanical Turk since 2005, offering what the company too-cleverly-by-half calls “artificial artificial intelligence” to a global userbase, at rates as low as one US cent per task completed.)

If the classic labor-saving appliance, for the most part, did away with the necessity for uniformed household staff by replacing their exertions with electromechanical might, the boomerang twist of the app age is that there are once again human beings in the loop: actual flesh-and-blood servants, merely time-shared, fractional ones. Whether the task involves the performance of cleaning and tidying, laundry, grocery shopping, pet and plant care, or light household maintenance and repair, you may be sure that there’s an app for that. But the app itself is merely a digital scrim behind which a largely immigrant labor force hustles and sweats and bids against the others competing for the same jobs. There is inevitably a raced and a gendered aspect to this, as well. If, in the new app economy, the effort and care of household maintenance is displaced not primarily onto machines but onto other bodies, it is notable how often those bodies are female, how very often darker than those requesting the service. The only significant exception here lies in the area of dining at home; a prominent fraction of “lead users” bizarrely seems to have interpreted the demands on their time as so pressing that they prefer gulping down a flavorless nutrient slurry like Soylent or Huel to a sit-down meal of any kind, even one prepared by someone else.

What we see here is a curious elaboration of something the educator Bradley Dilger has described as the “ideology of ease,” an implicit (when not entirely open and explicit) body of assertions that undergirds the design of information-technological devices and services, very much including those at the heart of the contemporary home. This ideology proposes that devoting effort or attentional resources to the tasks before us is undesirable — even, somehow, unseemly. Think of it as the demand for convenience raised to the nth degree, articulated virtually as a right.

Accordingly, much of the grandeur in contemporary design lies in streamlining processes until they consist of a few taps at most: the “Buy Now With 1-Click” imperative. But as a consequence, any opportunity for reflexivity is shortcircuited. Whatever values are manifested by these apps, they’re folded up like origami inside the interaction flow, no longer available for conscious inspection or consideration. So when you ask Siri to call you a car, that car will invariably be booked via Uber, an enterprise which notoriously refuses to shoulder any of the risk involved in operating a mobility-on-demand service, achieving growth by shedding that burden onto its drivers, its passengers and the communities in which it operates; and when you ask Alexa to order you more cat food, that order will be fulfilled by workers sweltering in a passing-out-hot warehouse where management won’t let the doors be opened to admit a little breeze, because of the risk of inventory pilferage; and when you ask Google to book you a table at your favorite restaurant that reservation will be made via OpenTable, a service which imposes onerous constraints on restaurateurs and waitstaff alike. These choices, these allocations of power are subsumed beneath the surface, the judgments and valuations inscribed in them simultaneously normalized and made to disappear. And if you should happen to find any of this disturbing or offensive…tough luck. That’s just the way things are in smartworld. Effectively, your choices are limited to take it or leave it.

It may have taken us some time, then, but finally perhaps we can learn to see “smart” for what it so often is: an inscription of power.

§

For a cohort who experiences even the time spent preparing and enjoying a meal as an intolerable interruption of their availability for work, homelife itself is a burden. For them, the very notion of a permanent dwelling is, in its fixity of place and the opportunity cost of the investments lavished on it, a suboptimal condition — an obstacle to the frictionless mobility our age calls upon us to deliver, and a roadblock on the drive toward total efficiency. And this leads directly to the culmination of this entire line of thinking: the suspicion that the most efficient of all possible homes may very well be no home at all.

Visionary architects of the 1960s believed that the dwelling could be brought with the body like a shell. This tendency, explored in whimsical projects like Archigram’s Suitaloon and Cushicle (1964-1967) and Francois Dallegret and Reyner Banham’s Environment Bubble (1965), reached its apotheosis in Martin Pawley’s rather grimmer vision of “terminal architecture,” in which individually-scaled mobile shelter units pick their way through the rubbled fields of a blasted transapocalyptic nonscape, mediating the unbearable reality all around to the nearly vestigial flesh within.

A rather more palatable interpretation of nomadism was the “plug-in lifestyle” foreseen by futurist Alvin Toffler in Future Shock (1970), and elaborated in fiction by John Brunner, in the legitimately visionary 1974 novel The Shockwave Rider. Brunner’s plug-in people went where the jobs were, dipped into casual relationships with whoever happened to be close at hand, moved on from either the moment they stopped being fun, and in any event found the material and human terrain comprehensively prepared for such acts of transience, wherever they should happen to alight. Despite a brief enthusiasm for the “technomadic” life at the moment it first became technically feasible, though, around the turn of the millennium, it seemed like such visions would remain safely the province of those whose job it is to speculate about the future.

But things have changed in the years since, with the rise of the network and the cloud, the ubiquitous provision of smartphones to serve as interface and mechanism of payment, and not least the stunning global spread of Airbnb, whose success supports the business case for the new wave of coworking/coliving ventures. Finally the logic of outsourcing can be raised to its perfect realization. You can now offload virtually all of the processes that underwrite domestic life onto a commercial service provider, allowing you to focus on your core competency, whatever that should happen to be, and to pursue it wherever on Earth you are able to find an audience, a market or a community.

At present, there is no suggestion that anything beyond the tiniest number of people will ever choose to live this way over even the medium-term. But it would be unwise to count it out completely. Consider WeLive, a residential offering developed by the hugely successful WeWork chain of coworking spaces, which orients its offering toward a customer base who are “always working or always semi-working.” Or Roam, a competing “global community of coliving and coworking spaces” that offers members the opportunity to touch down and get busy at their San Francisco, London, Bali, Miami or Tokyo locations, for prices starting at $500 a week.

Taken in one way, such propositions clearly gesture toward some of the more fantastic archisocial visions of the late sixties and early seventies — the ones in which hip nomads roamed the planet-spanning supersurfaces and megastructural interiors ad libitum, equipped with no more than a cache-sexe, a small pouch for personal effects and perhaps a cloak against the acid rain. If you squint hard, you can make out the last tattered remnants of that imaginary in the existing real-world global archipelago of short-term flats and coworking spaces, knit together by ubiquitous broadband connectivity and low-cost point-to-point flights, and undergirded by other, rather less glamorous enabling infrastructures (chiefly extended-stay motels and self-serve storage-locker chains). It is possible to bounce around the nodes of this network for years on end, and indeed there are some who seem profoundly fulfilled by the years they spend doing so. Here we drift intriguingly close to, again, Archigram: “the need for a house (in the form of a permanent static container) as part of [human] psychological make-up will disappear.”

§

It isn’t so much that the plug-in vision of unlimited freedom was superseded, or even betrayed, as that its present-day realization for a few reveals something telling about what the rest of us want and need. For all the value on liberation implicit in the dehoming movement, just the opposite appears to be happening, reflecting a need most of us have for continuity and stability at a time when very little else seems to be holding fast.

But for some tinkering around the edges — primarily driven by the microhome ventures of the commercial real-estate development industry, and perhaps some experimentation with household structure on the part of those embarked upon polyamory — the twenty-first century home remains astonishingly conservative. In its stasis, it offers a place to recover from the world, perhaps even from the pressure toward efficiency itself.

In our time, this is no longer a matter of Taylorist time-and-motion studies or Dreyfusian calibrations of the body in space, but something more intimate still, harder to define and far less concrete. It’s about reforging yourself to meet the demands of a brutally competitive market for your labor: making yourself fit, rested, ready, reliable, available via multiple communication channels at any time of day or night, and ready to go wherever the work takes you. Seen in this harsh light, even cultural trends that are entirely unobjectionable on their face — the turn toward minimalism, say, or the rise of streaming services, or the Kondoesque pursuit of decluttering — can be understood as moves toward frictionlessness and the elimination of anything that would encumber the homedweller as plausible service provider and autonomous economic actor.

As we’ve seen, as well, the pressures involved in supporting this way of life cascade downward to a frankly subaltern class, exposed to many of the same requirements of personability, fitness and perpetual availability, yet expected to tolerate the whims, tantrums and outright harassment of their betters in silence. The question, then, remains today what it always has been: efficiency for whom, exactly? Whose time and energy are valued, and whose are sacrificed on the altar of another’s freedom to move and to act? If we but trace them with a little care, the new logics of domestic ease make the answers to questions like these distressingly, unavoidably clear, to the point that whenever any such proposition arises, it’s worth interrogating both its “smart” and “home” aspects with the greatest care.

10 Nov 21:43

5 Questions with Giorgia Lupi

by The Times Open Team
Illustration by Andrew Sondern/The New York Times

On October 18th, Giorgia Lupi, award-winning information designer, co-author of the book “Dear Data” and founder of Accurat, a data-driven design firm, stopped by the Times office to talk about her work and career. We caught up with her afterwards and asked about her career, how to find the human element in data-driven stories, and whether there is room for creativity in the creation of datasets. This interview has been edited for length.

1.Where did you start your career, and what got you interested in telling stories with data?

I have a masters in Architecture, but I have never built any houses. During my studies I was particularly fascinated by the scale of the city and urban mapping projects, and also in how to represent the many information layers underlying an architecture project.

After my graduation and for the following four years, I collaborated with different interaction design firms in Italy, primarily working on information mapping projects and interactive installations displaying complex systems of knowledge.

Over time, I discovered that data can be an incredible lens to find and build stories and ideas. It is a material we can use to visually narrate stories. I simply fell in love with this world and the realm of possibilities it opens.

I see data visualization design as the combination of my artistic side and my extremely rational side. What drives me in what I do is the overlapping space between analysis and intuition, between logic and beauty, between numbers and images.

2. Today, we have access to more data about ourselves and our world than ever before, but we all too often see stories reduced to a data point. What are some of the ways you approach data to find the human element in the story?

Especially in my more speculative projects, I use data as a tool to better understand our human nature. By distilling our personal experiences into what we so coldly call data, and by actively building and expressing my datasets as an artist, I actually seek to grasp glimpses of humanity and discover overlooked details.

Every time there is data available, I try to humanize it, to make it speak our language and represent our human nature. In my opinion, this is the ultimate goal of any design work, especially with data. I often combine what is already in the form of data with layers of softer and more qualitative information that can render more of our human aspects. When working with data, we often focus only on the hard numbers that are readily available to us without realizing they become more meaningful if we use more nuanced and expressive data along with them.

In the end, my actual work with data is mostly hand-crafted, detail-oriented, laborious and inevitably human in the process.

3. So much of your work has been rooted in collaboration. What are some of the things you’ve learned through these collaborative projects?

I recently came to realize that my idea of success for a project depends not only on the goals I am trying to achieve or how the project is received, but especially on the person or group of people I’m collaborating with. When I look back at the projects I have worked on, what feels most successful are the experiences where, by means of working with other talented people, I could experiment, venture out of my comfort zone and push myself to places I couldn’t imagine on my own.

Collaborations are necessary for designers to grow, to question themselves, to discuss all their ideas and to avoid “getting married” to the first idea they have. I have also learned that I love sharing the results of a project (its publication moment and the, hopefully, positive response it triggers); it’s one of the best outcomes of a work relationship!

Especially for self-initiated projects, a collaborator whose work you respect can help keep yourself accountable. They can get you through the project even when you feel overwhelmed and would like to give up.

4. Your company, Accurat, has launched some innovative projects using new technologies like AR. Are there any technologies you’re excited about for the options they give for telling human data-driven stories?

I believe we are in a very interesting moment in time. With the hype around many new technologies finally fading, I think we can focus on the ideas we have and finding opportunities to tell stories.

I am excited to be in this space right now because, thanks to open source and to the democratization of software technologies, individuals and small studios have access to the same tools as the “big guys.” This leads to a constant and positive tension between organizations that are very different, but that share the same tools. For example, newsrooms — who by definition have the best content and stories to tell — are now also leading on technological aspects and are teaching Silicon Valley how to use web technology to better serve people and stories. This was unthinkable even just six or seven years ago.

And I’m excited not for the idea of technological progress in and of itself, but for what it will allow us to do. In general, I want our team to use technology as a tool, to master it so that we can get to the point where it can completely disappear in favor of the story we want to tell. I believe immersive technologies like AR and VR could eventually help us get there: we are still confined by bulky devices, but we are finally able to let content “live” in our physical world, and screen are becoming more and more invisible. And this, I believe, is a crucial aspect to telling real human stories with data.

5. You’ve created your own datasets, like in the project you did for MOMA’s “Items: Is Fashion Modern?” exhibit and your collaboration with Kaki King. How might journalists train themselves to have a more open mind about what counts as data? Is there room for creativity in the definition of a dataset?

They can do that by remembering that data doesn’t really exist. Data is one of the tools we have to represent reality, but it is always a placeholder for something else and never the real thing. It can be easy to forget that.

When designing, we need to always think about the content that the data represents, not the numbers. It’s never about numbers, technology or any design itself, it is always about the ideas and the stories.

People think data will solve our problems, but we invented that data, so we are the ones actually solving them. No data is perfect, nor objective; it’s actually a very subjective process. We have agency in collecting, processing and interpreting data. If we recognize this, we can start seeing data as the beginning of the conversation, not the end. If we recognize it’s less perfect than we think, then we can question it, collect and define our own datasets.

One of the goals of my research is to liberate the idea of data from academic definitions and show it for what it is: a material, a gimmick, a source of inspiration, a lens to look at the world or whatever else you want.

In a time when misinformation is growing, I choose to put my trust in people rather than data. I can trust a person and their process, but not a dataset in a vacuum. I trust some reporters are able to look at data critically and I trust their judgement in telling the story they see.

Learning how to deal with this uncertainty is crucial, and I believe the way to do it is to be very clear about where the data comes from, how it’s been collected and what has been done to it. The more we know about this, the more we understand the inevitable biases it includes and the more we are able to focus on the stories. And then we should embrace this uncertainty and subjectivity.

Data is a tool that filters reality in a highly subjective way and how a dataset is collected and the information that is included — and omitted — directly determines the course of its life. This is why I think we have to reclaim a personal approach to how data is captured, analyzed and displayed. This proves that subjectivity and context play a big role in understanding big events and social changes — especially when data is about people.


5 Questions with Giorgia Lupi was originally published in Times Open on Medium, where people are continuing the conversation by highlighting and responding to this story.

10 Nov 21:43

Earth puzzle without borders

by Nathan Yau

The Earth Puzzle by generative design studio Nervous System has no defined borders. You put it together how you want.

Start anywhere and see where your journey takes you. This puzzle is based on an icosahedral map projection and has the topology of a sphere. This means it has no edges, no North and South, and no fixed shape. Try to get the landmasses together or see how the oceans are connected. Make your own maps of the earth!

Get it here. There’s also one for the moon.

Tags: Earth, geometry, Nervous System, puzzle

10 Nov 21:38

Introducing “Price Talks”: Podcast of the Blog

by Colin Stein

Welcome to the podcast, featuring Gordon Price and the rest of the Price Tags team. Look for us on Apple iTunes and Google Play, subscribe and watch for new episodes every couple of weeks.

Here’s a trailer for Price Talks, with episode 1 coming soon.

09 Nov 22:33

This is good news from Flickr. Flickr is amendi...

by Ton Zijlstra

This is good news from Flickr. Flickr is amending their changes, to ensure that Creative Commons licensed photos will not be deleted from free accounts that are over their limit. (via Jeremy Cherfas)

Flickr recently announced they would be deleting the oldest photos of free accounts that have more photos than the new limit of 1000 images. This caused concern as some of those free accounts might be old, disused accounts, where there are images with open licenses that are being used elsewhere. Flickr allows search for images with open licenses, and makes it easy to embed those in your own online material. Removing old images might therefore break things, and there were many people calling for Flickr to try and prevent breaking things. And they are, Flickr is providing all public institutions and archives publishing photos to Flickr with a free Pro account, and will also delete no Creative Commons licensed images, if they carried that license before 1 November 2018. (This prevents you from keeping an unlimited free account by simply relicensing the photos, and uploading new photos with CC licenses only.)

09 Nov 22:33

Client: “The quality of our metadata needs to b...

by Ton Zijlstra

Client: “The quality of our metadata needs to be complete and excellent.”
Ok. Upload data to their data warehouse. Upload rejected.
“Your metadata file is too large.”…

07 Nov 21:00

Crash reporting in desktop Python applications

by Nikhil Marathe and Max Bélanger

One of the greatest challenges associated with maintaining a complex desktop application like Dropbox is that with hundreds of millions of installs, even the smallest bugs can end up affecting a very large number of users. Bugs inevitably will strike, and while most of them allow the application to recover, some cause the application to terminate. These terminations, or “crashes,” are highly disruptive events: when Dropbox stops, synchronization stops. To ensure uninterrupted sync for our users we automatically detect and report all crashes and take steps to restart our application when they occur.

In 2016, faced with our impending transition to Python 3, we set out to revamp how we detect and report crashes. Today, our crash reporting pipeline is a reliable cornerstone for our desktop teams, both in volume and quality of reports. In this post, we’ll dive into how we designed this new system.

Python doesn’t crash, right?

Dropbox is partly written in Python, and while it certainly is a safe, high-level language, it is not immune to crashes. Most crashes (i.e. unhandled exceptions) are simple to deal with because they occur in Python, but many originate “below”: in non-Python code, within the interpreter code itself, or within Python extensions. These “native” crashes, as we refer to them, are nothing new: improper memory manipulation, for example, has plagued developers for decades.

As our application grew more complex, we began to rely on other programming languages to build some of our features. This was particularly true when integrating with the operating system, where the easiest path tends to lead to platform-specific tooling and languages (e.g. COM on Windows and Objective-C on macOS). This has led to an increased share of non-Python code in our codebase, which has brought along an increased risk for dangling pointers, memory errors, data races, and unchecked array accesses: all of which can cause Dropbox to be unceremoniously terminated. As a result, a single crash report can now contain Python, C++, Objective-C, and C code in its stack trace!

The Early Days

For several years, we relied on a simple in-process crash detection mechanism: a signal handler. This scheme allowed us to “trap” various UNIX signals (and on Windows, their analogues). Upon hitting a fatal signal (i.e. SIGFPE), our signal handler would attempt to:

  • Capture the Python stack trace (using the faulthandler module) for each thread
  • Capture the native stack trace for that thread (typically using libc‘s backtrace and backtrace_symbols functions)

We would then attempt to securely upload this data to Dropbox’s servers.

While this was adequate, a few fundamental issues affected reliability or limited its usefulness in debugging:

  • If a problem occurred before we set up the handler, we wouldn’t get any reports. This is usually caused by an ImportError, a missing library, or an installation error. These fundamental “boot errors” are the most severe because they result in the user being unable to start the app. We were unable to capture these at all, an unacceptable situation. The only way for any reports of these issues to reach our engineers was by contacting customer support. While we built a helpful error dialog to help with this process, this still led to our team becoming somewhat risk-averse to meddling with startup/early code.
  • The signal handler is somewhat fragile. This handler was responsible for not only capturing state but also sending it to our servers. Over time, we realized it could often fail to send the report despite managing to generate it successfully. In addition, particularly severe crashes could make it impossible to correctly extract state on a crash. For example, if the interpreter state itself became corrupted, it could prevent us from including the Python stack trace—or worse, could derail the entire handling process.

One of the root causes of this is the nature of signal handling itself: while, thankfully, Python’s signal module takes care of most these, it also adds its own restrictions. For example, signals can only be called from the main thread and may not be run synchronously. This asynchronicity meant that some of the most common SIGSEGVs could often fail to be trapped from Python!1

Crashpad to the rescue

A more reliable crash reporting mechanism can be built by extracting the reporter outside of the main process. This is readily feasible, as both Windows and MacOS provide system facilities to trap out-of-process crashes. The Chromium project has developed a comprehensive crash capture/report solution that leverages this functionality and that can be used as a standalone library: Crashpad.

Crashpad is deployed as a small helper process that monitors your application, waits for a signal that it has crashed, and then captures useful information, including:

  1. The reason a process crashed and the thread that originated the crash
  2. Stack traces for all threads
  3. Contents of parts of the heap
  4. Extra annotations that developers can add to their application (a useful layer of flexibility)

All of this is captured in a minidump payload, a Microsoft-authored format originally used on Windows and somewhat similar to a Unix-style core dump. The format is openly documented, and there exists excellent server-side tooling (again, mainly from Google and Mozilla) to process such data.

The following diagram outlines Crashpad’s basic architecture:

 

An application uses Crashpad by instantiating an in-process object—called the “client”—that reports to an out-of-process helper—called a “handler”—when it detects a crash.

We decided to use this library to mitigate many of the reliability issues associated with an in-process signal handler. This was an easy choice due to its use by Chromium, one of the most popular desktop applications ever released. We were also enthused by more sophisticated support for Windows, a rather different platform from UNIX. faulthandler was (at the time) limited in its support for Windows-specific crashes, since it was very much based on signals, a UNIX/POSIX concept. Crashpad leverages Structured Exception Handling (or SEH), allowing it to catch a much broader range of fatal Windows-specific exceptions.

A note on Linux: Though Linux support has been very recently introduced, Crashpad was only available for Windows and MacOS when we first deployed it, so we limited our use of the library to these platforms. On Linux, we continue to use the in-process signal handler, though we will re-visit this in the future.

Symbolication

Dropbox, like most compiled applications, ships to users in a “Release” configuration, where several compiler optimizations are enabled and symbols are stripped to reduce binary size. This means the information gathered is mostly useless unless it can be “mapped” back to source code. This is referred to as “symbolication”.

To achieve this, we preserve symbols for each Dropbox build on internal servers. This is a core part of our build process: symbol generation failure is considered a build failure, making it impossible for us to release a build that cannot later be symbolicated.

When a minidump is received as part of a crash report, we use the symbols for the build to decipher each stack trace and link it back to source code. When system libraries are used, we defer to platform-specific symbols. This process allows our developers to quickly find where crashes originate in either first or third-party code.

Microsoft maintains public symbol servers for all Windows builds in order for stack frames involving their functions to be mapped. Unfortunately, Apple does not have a similar system: instead, the platform’s frameworks include their matching symbols. To support this, we currently cache the symbols of various macOS frameworks (for a wide range of OS versions) using our testing VMs (though we can still occasionally end up with gaps in our coverage).

A validation sidecar

Changing our crash reporting infrastructure from underneath millions of installations was a risky endeavor: we required validation that our new mechanism was working. It’s also important to note that not all terminations are necessarily crashes (e.g. the user closing the app or an automatic update). That being said, some terminations may still indicate problems. We therefore wanted a way to record and classify exits along with crashes. This also would provide us with a baseline to validate that our new crash reporter was capturing a high fraction of total crashes.

To address this, we built yet another “sidecar” process we named “watchdog.” This is another small “companion” process (similar to Crashpad) that has a single responsibility: when the desktop app exits, it captures its exit status to determine whether it was “successful” (that is, a user or app-initiated shutdown instead of being forcibly terminated). This process is extremely simple by intention as we want it to be highly reliable.

To provide a basis for comparison, a start event is generated by making our application send an event on launch. With both start and exit events, we are then able to measure the accuracy of exit monitoring itself: we can ensure it was successful for a very high percentage of our users (note that firewalls, corporate policies, and other programs prevent this from working 100% of the time). In addition, we can now match this exit event against crashes coming from Crashpad to make sure that exit codes in which we expect crashes indeed include crash reports from most users. The graphs below show the monitoring we have in place:

The watchdog allows us to validate that our crash reporting is successful
The watchdog allows us to classify crashes and terminations in a single graph

We wrote the watchdog process in Rust, which we chose for a variety of reasons:

  1. The safety guarantees offered by the language make it a lot easier to trust code.
  2. The operating system abstractions are well designed, part of the standard library, and easy to extend via FFI wherever required.
  3. We have developed quite a bit of Rust expertise at Dropbox, giving this project an easier ramp-up.

Teaching Crashpad about Python

Crashpad was primarily designed for native code, as Chromium is mostly written in C++. However, the Dropbox client is mostly written in Python. As Python is an interpreted language, most native crash reports we receive thus tend to look like this:

 0  _ctypes.cpython-35m-darwin.so!_i_get + 0x4
 1  _ctypes.cpython-35m-darwin.so!_Simple_repr + 0x4a
 2  libdropbox_python.3.5.dylib!_PyObject_Str + 0x8e
 3  libdropbox_python.3.5.dylib!_PyFile_WriteObject + 0x79
 4  libdropbox_python.3.5.dylib!_builtin_print + 0x1dc
 5  libdropbox_python.3.5.dylib!_PyCFunction_Call + 0x7a
 6  libdropbox_python.3.5.dylib!_PyEval_EvalFrameEx + 0x5f12
 7  libdropbox_python.3.5.dylib!_fast_function + 0x19d
 8  libdropbox_python.3.5.dylib!_PyEval_EvalFrameEx + 0x5770
 9  libdropbox_python.3.5.dylib!__PyEval_EvalCodeWithName + 0xc9e
10  libdropbox_python.3.5.dylib!_PyEval_EvalCodeEx + 0x24
11  libdropbox_python.3.5.dylib!_function_call + 0x16f
12  libdropbox_python.3.5.dylib!_PyObject_Call + 0x65
13  libdropbox_python.3.5.dylib!_PyEval_EvalFrameEx + 0x666a
14  libdropbox_python.3.5.dylib!__PyEval_EvalCodeWithName + 0xc9e
15  libdropbox_python.3.5.dylib!_PyEval_EvalCodeEx + 0x24
16  libdropbox_python.3.5.dylib!_function_call + 0x16f
17  libdropbox_python.3.5.dylib!_PyObject_Call + 0x65
18  libdropbox_python.3.5.dylib!_PyEval_EvalFrameEx + 0x666a
19  libdropbox_python.3.5.dylib!__PyEval_EvalCodeWithName + 0xc9e
20  libdropbox_python.3.5.dylib!_PyEval_EvalCodeEx + 0x24
21  libdropbox_python.3.5.dylib!_function_call + 0x16f
22  libdropbox_python.3.5.dylib!_PyObject_Call + 0x65
... on and on

This stack trace is not very helpful to a developer trying to discover the cause of a crash. Whereas faulthandler also included the Python stack frames of all threads, Crashpad does not have this ability by default. To make this report useful, we would need to include the relevant Python state. However, as Crashpad is not written in Python and is out-of-process, we don’t have access to faulthandler itself: how might we go about doing this?

When the crashing program is suspended, all of its memory is available to Crashpad, which can read it to capture the program state. As the program is potentially in a bad state, we can’t execute any code within it. Instead we need to:

  1. Figure out where the Python data structures are laid out in memory
  2. Walk the relevant data structures to figure out what code was running when the program crashed
  3. Store this information and securely upload it to our servers

We chose Crashpad in part for its customizability: it is fairly easy to extend. We therefore added code to the ProcessSnapshot class to capture Python stacks, and introduced our own custom minidump “stream” (supported by both the file format and Crashpad itself) to persist and report this information.

Python and Thread-Local Storage

First, we needed to know where to look. In CPython, interpreter threads are always backed by native threads. Therefore, in the Dropbox application, each native thread created by Python has an associated PyThreadState structure. The interpreter uses native thread-specific storage to create the connection between this object and the native thread. As Crashpad has access to the monitored process’ memory, it can read this state and include it as part of a report.

As Dropbox ships a customized fork of CPython, we have effective control over its behavior. This means that not only can we use this knowledge to our advantage but we can rely on it knowing it won’t easily change from under us.

In Python, thread-specific storage is implemented in platform-specific ways:

  • On POSIX, pthread_key_create is used to allocate the key, while pthread_(get/set)specific are used to interact with them
  • On Windows, TlsAlloc is used to allocate thread-local “slots” stored in a predictable/documented location in the Thread Environment Block.aspx)

Common to all platforms, however, is that the Python-specific state is stored at a specific offset of the native thread state. Sadly, this offset is not static: it can change depending on various factors. This offset is determined early in the Python runtime’s setup (see PyInitialize): this is referred to as the thread-specific storage “key”. This step creates a single “slot” of thread-specific storage for all threads in the process, which is then used by Python to store its thread-specific state.

So if crashpad can retrieve the TSS “key” for the instance of the process, it will have the ability to read the PyThreadState for any given thread.

Getting the Thread-Local Storage “Key”

We considered multiple ways of doing this, but settled on a method inspired by Crashpad itself. In the end, we modified our fork of Python to expose the runtime state (including the TSS key) in a named section of the binary (i.e. __DATA). Thus, all instances of Dropbox would now expose the Python runtime state in a way that makes it easy to retrieve it from Crashpad.

  • This was achieved with a simple __attribute__ in Clang and by using __declspec on Windows.
  • This is already simple to use in Crashpad, because it uses the same technique to allow clients to add annotations to their own process (see CrashpadInfo).
  • This is also well-aligned with Python’s own evolving design for the interpreter internals, as it recently reorganized itself to consolidate runtime state into a single struct, _PyRuntime (in Python/pylifecycle.c). This structure includes the TSS key, along with other information of potential interest to debug tools.
  • Note: We’ve submitted this change as a pull request to the Python project, in case it can be helpful to others.

Now that Crashpad can determine the TSS key, it has access to each thread’s PyThreadState. The next step is to interpret this state, extract the relevant information, and send it as part of a crash report.

Parsing Python Stack Frames

In CPython, “frames” are the unit of function execution, and the Python analogue to native stack frames. The PyThreadState maintains them as a stack of PyFrameObjects. The topmost frame at any given time is pointed to by the thread state using a single pointer. Given this setup and the TSS key, we can start from a native thread, find the PyThreadState, then “walk the stack” of PyFrameObjects.

However, this is trickier than it sounds. We can’t just #include <Python.h> and call the same functions faulthandler does: as Crashpad’s handler runs in a separate process, it doesn’t have direct access to this state. Instead, we had to use Crashpad’s utilities to reach into the crashing process’s memory and maintain our own “copies” of the relevant Python structs to interpret the raw data. This is a necessarily brittle solution, but we’ve mitigated the cost of ongoing maintenance by introducing automated tests that ensure that any updates to Python’s core structs to also require an update our Crashpad fork.

For every frame, our objective is to resolve it to a code location. Each PyFrameObject has a pointer to a PyCodeObject including information about the function name, file name, and line number (faulthandler leverages the same information).

The filename and function name are maintained as Python strings. Decoding Python strings can be fairly involved, as they are built on a hierarchy of types (we’ll spare you the details, but see unicodeobject.h). For simplicity, we assume all function and file names are ASCII-encoded (mapping to the simple PyASCIIObject).

Getting the line number is slightly more complicated. To save space, while being able to map every byte code instruction to Python source, Python compresses line numbers into a table (PyCodeObject‘s co_lnotab). The algorithm to decode this table is well-defined, so we re-implemented it in our Crashpad fork.

A note on the Python 3 transition: As Python 2 and 3 have slightly different implementations, we maintained support for both versions of the Python structs in our Crashpad fork during the transition.

Stack Frame Reconstitution

Now that Crashpad’s reports include all the Python stack frames, we can improve symbolication. To do so, we modified our server infrastructure to parse our extensions to minidumps and extract these stacks. Specifically, we augmented our crash management system, Crashdash, to display Python stack frame information (if it is available) for native crash reports.

This is achieved by “walking the stack” again, but this time, for each native frame calling PyEval_EvalFrameEx, we “pop” the matching PyFrameObject capture from the report. Since we now have the function name, file name, and line number for each of those frames we can now show the matching function calls. We can thus extract the underlying Python stack trace from the one above:

file "ui/common/tray.py", line 758, in _do_segfault
file "dropbox/client/ui/cocoa/menu.py", line 169, in menuAction_
file "dropbox/gui.py", line 274, in guarantee_message_queue
file "dropbox/gui.py", line 299, in handle_exceptions
file "PyObjCTools/AppHelper.py", line 303, in runEventLoop
file "ui/cocoa/uikit.py", line 256, in mainloop
file "ui/cocoa/uikit.py", line 929, in mainloop
file "dropbox/client/main.py", line 3263, in run
file "dropbox/client/main.py", line 6904, in main_startup
file "dropbox/client/main.py", line 7000, in main

Wrapping up

With this system in place, our developers are capable of directly investigating all crashes, whether they occur in Python, C, C++, or Objective-C. In addition, the new monitoring we introduced to measure the system’s reliability has given us added confidence our application is performing as it should. The result is a more stable application for our desktop users. Case in point: using this new system, we were able to perform the Python 2 to 3 transition without fear that our users would be negatively affected.

Nikhil gave a talk at PyGotham 2018 that dives into Python stack frame implementation details and explains our strategy for using Crashpad. The slides are available now (videos will be up soon).

Interested?
If the type of problem solving we described sounds fun and you want to take on the challenges of desktop Python development at scale, consider joining us!

Footnotes:
1 A SIGSEGV cannot be handled asynchronously due to how signals are implemented. When a CPU instruction attempts to access an invalid location, it triggers a page fault. This is handled by the OS. The OS will first rewind the instruction pointer to go back to the beginning of this instruction, since it needs to resume execution of the program once the signal handler returns. The first time, the signal handler is triggered. Once it returns, execution resumes. The OS tracks that a handler was already invoked. When the fault is triggered again, this specific signal is masked so that no handler runs. At this point, the behavior for a SIGSEGV is to core dump the process and abort it. Our asynchronous handler effectively never runs. The faulthandler module specifically supports synchronous capture of Python stacks, but it can only save these to a file. No network activity or Python execution is allowed due to signal safety requirements. These various complications, and the clear benefits of Crashpad in other areas, made it compelling to switch.

07 Nov 20:58

Samsung teases three ‘Infinity’ notch designs, notchless ‘New Infinity’ display

by Sameer Chhabra

South Korean electronics giant Samsung used its 2018 developer conference to tease four different screen designs, three of which feature some form of notch.

As far as notches go, however, the ‘Infinity-U,’ ‘Infinity-V’ and ‘Infinity-O’ displays all feature cutouts that are minimal — in comparison to something like the notch on the iPhone X or the Google Pixel 3 XL.

The Infinity-U’s notch appears to similar to that found on the Essential Phone, while the Infinity-V’s notch is a more angular version of the Infinity-U.

The Infinity-O notch is the most radically designed, featuring a circle cutout placed on the top-left side of the screen.

Interesting to note is that the Infinity-O display appears to be similar to a Galaxy S10 render made by concept designer Ben Geskin.

Geskin’s render shows a Galaxy smartphone with no bezels or notch whatsoever, but a hole in the top of the display for a front-facing selfie camera.

Unlike the notched displays, the New Infinity appears to feature no bezels and no notches.

Samsung used the same developer conference to unveil its ‘Infinity Flex Display’ foldable display concept.

Image Source: Ben Geskin

Source: Android Police

The post Samsung teases three ‘Infinity’ notch designs, notchless ‘New Infinity’ display appeared first on MobileSyrup.

07 Nov 20:58

Apple updates Clips app with new selfie scenes, filters and more

by Igor Bonifacic
Clips 2.0

Apple has updated Clips, its easy-to-learn video creation and editing tool, to version 2.0.5. The update marks one of the more significant updates to Clips since it first came out, with Apple adding a variety of selfie scenes, filters, title cards and more.

To start, there are six new selfie scenes. Using the company’s new TrueDepth camera system, iPhone X, XS, XS Max and XR users can transport themselves to a forest full of animals, a monster laboratory and more. Another new selfie scene allows users to shoot themselves in downtown Municiberg from Pixar’s Incredibles 2.

When using Clips in conjunction with Apple’s new A12 Bionic-equipped iPhones, the app will deliver better subject depth of field separation in both preview and recording.

Apple has also added three new filters, giving users the ability to add a monochromatic comic book, watercolour painting or vintage film feel to their videos and photos. Additionally, there are eight new posters, eight new stickers, and four new text labels that users can add to their creations.

Lastly, Apple has added 17 new royalty-free soundtracks users can add to their creations. Several of the new tracks match the tone of the newly added selfie scenes. The remaining ones fit broadly in the pop, lounge and vintage categories that already available in the app.

Clips is available to download via the App Store.

The company first launched Clips last spring.

Source: Apple

The post Apple updates Clips app with new selfie scenes, filters and more appeared first on MobileSyrup.

07 Nov 20:52

Province Introduces Bill To Stop Mansion Cropping on Farmland

by Sandy James Planner

The Provincial government finally is tightening  up the loopholes that have emboldened developers to snap up provincially protected farmland, pave them over and create private gated estates. These mansions are then resold with supernormal land lifts to offshore gentry and numbered companies.

It was a perfect scam, with payoffs for farmland developers  and tax loophole advantages to foreign buyers. The previous City of Richmond Council majority was complicit in allowing mansions of nearly 11,000 square feet on farmland, with an additional 3,200 square feet of additional house for the “help” on larger properties, ignoring the limitations set up by the  Agricultural Land Reserve (ALR). Set up in 1973, the ALR’s goal was to  protect prime agricultural lands for farming and ranching. The Provincial NDP government got quickly to the point labelling their press release “New Legislation Makes it Clear: Farmland is for Farming”.

Stating that “land in the Agricultural Land Reserve (ALR) is for farming and ranching in British Columbia, not for dumping construction waste or building mega-mansions” Lana Popham the Minister of Agriculture put the blame squarely on the past Liberal Provincial government.

“The old government let wealthy speculators drive the price of farmland out of reach for young farmers and allowed some of our most valuable agricultural land to be damaged .We are protecting farmland in B.C. to ensure land is available now and for future generations of farmers, so people in British Columbia have a safe, secure supply of locally grown food on their tables for years to come.”

The Agricultural Land Commission Amendment Act (Bill 52) proposes three alterations to the existing act:

  1. All land in the Agricultural Land Reserve will be one single zone, affording agricultural land protection on all farmlands;
  2. All house sizes are restricted to 500 square meters (about 5,400 square feet) with anything larger or additional requiring approval from the Agricultural Land Reserve authority;
  3. An immediate halt to construction material dumping, toxic waste and other fill on farmland that damages agricultural soil through heavy fines.

To give you an idea of how fertile the local farm soils are in Metro Vancouver, three percent of the land in this region grows 65 per cent of the province’s farm receipts. And in British Columbia farmers produce nearly half of all the food that is consumed in this province according to a 2007 report. These farmlands in the Metro Vancouver region are also the most fertile in Canada as well as being close to a large market.

You can track the progress of Bill 52  through the legislature by following this link. 

The YouTube video below published by Richmond Voices in 2018  shows the size of some of the massive mansions being built on protected farmland in the  City of Richmond, which was called the  “Garden City” because of its farmlands.

 

07 Nov 20:50

Electric vehicles represent 8 percent of new vehicles sales in Canada: Report

by Brad Bennett

Clean-tech information company Fleetcarma has released a new report that says 8.3 percent of new vehicles sold in Canada are electric.

The ramp-up in electric vehicle sales has been pushed even further by Tesla’s Model 3, which is the number one electric car in Canada. It’s followed by the Nissan Leaf and the Chevrolet Bolt.

In 2017, there were 19,200 EVs sold in Canada. This year, from January to the end of September there have been 34,357 EVs sold. Provincially, Ontario, Quebec and British Columbia buy the most electric cars.

Electric cars are growing at an extremely fast rate. Comparing the third quarter from 2017 to 2018 electric vehicle sales increased by 166 percent.

At this current rate of growth, Canada will sell more EVs in 2018 than in the previous three years combined, according to Fleetcarma.

Source: Fleetcarma

The post Electric vehicles represent 8 percent of new vehicles sales in Canada: Report appeared first on MobileSyrup.