Shared posts

10 Sep 15:03

Apologia for my face

by Julie Moronuki
Tags: personal

I was perusing the #NoWomanEver hashtag on Twitter this morning, and I noticed a bunch of tweets about the irritation of being told to smile. My own habit is to ignore such comments as much as possible because I am not that interested in what randos think of my facial expression.

However, there is a related thing that happens to me a lot that I have a harder time ignoring, especially when it comes from men I know and work with.

Why are you upset?

I guess I have Resting Upset Face. Let’s call it that. If my emotional state is quite neutral but I am not actively smiling, I guess I look upset? I don’t look upset to me, so I don’t really know.

It’s harder to ignore than the “come on, smile!” sorts of comments, for me anyway, for a few reasons. For one thing, it assumes I am upset when I’m probably not, which is sort of annoying (I will cop to being easily annoyed) and now I need to combat the feeling of annoyance.

Since it usually comes from men I have to interact with over some period of time (not just co-workers, though; men who were at my tables when I was a waitress would sometimes ask me this), I need to come up with some response. The easiest is, “I’m not upset,” which has the benefit of usually being true, but the fact that I’m fighting the mildly annoyed feeling now means it often sounds false.

Sometimes the truthful response is:

  • I’m thinking about Kant, which would upset anyone, but I’d rather not try to explain it to you.
  • I’m thinking about that $%@^& letter I got from my insurance company, and this is an inappropriate time/place to talk about it.
  • Someone in my family died/was diagnosed with pancreatic cancer/had surgery a short time ago but I would not like to talk about it with you, and I do not want to hear your, “It’ll be OK, cheer up!” at this time.
  • I am finding my clothing or something else in my physical environment uncomfortable right at this moment but it’s not really worth talking about.
  • Is this an aura or my normal vertigo? Should I go take my migraine pill now to head it off or should I just stand here and let it pass? Why does this happen, that I suddenly feel like I’m falling?
  • I have synesthesia and you just said a word that puts a very unpleasant taste in my mouth. In no way is that your fault, but you will think I’m a freak if I try to explain it to you and we should just let it pass.
  • You have been talking at length about people/things I do not know and I would prefer that we talked about something I know/am interested in, so I could participate in the conversation rather than be monologued at, but I don’t like to be rude and it would be rude of me to tell you this so please don’t make me say it.
  • You did, in fact, say something a moment ago that annoyed or frustrated or angered or saddened me but for [reasons] I’d rather not talk about it and just let it go. That thing where you asked me, “are you the pieman?” a minute ago – sort of annoying, and I regret that it showed, but it doesn’t need to turn into a fight.
  • I’d rather be left to think about any of those things in peace rather than answer your questions about my face.

Other than the synesthesia and the migraine/vertigo, I think these are normal things to cause momentary upset, are they not? Are these not part of everyone’s life, from time to time causing signs of unexplained sadness or annoyance or frustration to pass over someone’s face? Is it a fault that I allow signs of these normal feelings to occasionally pass over my face? Because now your question has indicated that it’s weird that any of those things might be showing on my face. Is it weird?

Is there something wrong with me? Or my face?

If it’s an ongoing relationship, such as at work, it’s even harder to ignore because it happens a lot. The question demands an answer; my face requires an explanation.

So, now, whatever I was thinking about, now I am thinking about my face and whether or not I’m upset and whether that sense of being upset is valid by your standards or something I want to disclose to you. That former train of thought has been quite disrupted. If it was Kant I was thinking about, then it’s just as well anyway, but otherwise I now feel like a character from Harrison Bergeron, only instead of beeping in my ears to disrupt thought, some governmental agency has skillfully deployed agents to make me think about my face instead of anything more interesting.

My baseline emotional state is one of mild contentment. Even when I comment on something being annoying, I am usually not feeling annoyed when I do it because I find it unpleasant and unhelpful to live my life in a state of constant annoyance or sadness or irritation or anger. Most things I brush off easily and quickly, when I’m allowed to stop thinking about them. I do not stay angry long. I do not hold grudges. I usually do not dwell on past misfortunes, though obviously some have had lasting effects whether I’ve wanted them to or not.

Annoying and angering things happen all the time if you let yourself think about it for a minute, but so do good and beautiful things, and I’d rather think about those. So, quite often, if you have genuinely seen some sadness or anger flash across my face, give me a minute of peace and I’ll start thinking about the good and beautiful things again and it will pass and be forgotten. Anger that is allowed to pass away naturally doesn’t cause any hurt to anyone.

I keep saying “men ask,” but I don’t know that there is a sexist element here. Men are the only ones who have ever asked me this, but I don’t know whether people ask men with Resting Upset Face if they are upset all the time. I look forward to men weighing in with their tales of irritation. I suspect that women get asked this more because there’s an assumption that women are hyperemotional in a way that men aren’t (snorts) so if she’s not smiling, she must be upset and not just neutral or thinking about Kant. I think it ties into the stereotype that women will say, “I’m fine” as a passive-aggressive way to annoy men rather than that it might be true or might be code for, “For possibly totally appropriate reasons, I don’t want to talk about it and would rather let it pass, thank you.”

Not everything that can be said needs to be said. It sometimes leads to hurt and bad feelings, especially when it’s spoken in that immediate moment of anger or irritation. Because my husband and I both have this attitude, we, in fact, rarely fight. We might sometimes get to where we are barely talking at all to each other, which is an extreme that isn’t good either, but we rarely fight, and eventually we say the things that need to be said and leave the things that didn’t need to be said behind us.

Note:

Nobody was upset in the writing of this except my little dog because she had been sleeping on my arm, but it was interfering with my typing, so I rudely removed her.

If you like my writing and are interested in learning beginner-to-intermediate Haskell, take a look at my first book.

Posted on June 18, 2016

22 Jun 20:58

creativity and engineering

I recently saw the infamous "Netflix Culture" slide deck in the news again.

I took a minute to re-read it. It's about corporate culture, about hiring "high performers" and embracing individual autonomy and such; but it also includes a slice of well-worn Official Sage Silicon Valley Wisdom that I hear variations of repeated a lot, that I wanted to stop and make a note about. The slide I took issue with (never mind the horrible stack-ranking stuff) was this:



The term that catches my eye here is "creative-inventive market". Reading this, I wonder what "creative-inventive" market is being described. Certainly it's not poetry, dance, art, fashion, music, writing ... maybe TV? Netflix in 2016 has "Netflix Originals" (TV series) but when this slide deck was made, they were in the business of shipping bits over the wire and DVDs by mail. The former is still their bread and butter. They have a fleet of rented computers and edge servers and a lot of very dull, engineering pocket-protector metrics to back it up, and I am pretty sure they aren't allowed to get creative when interpreting HTTP codes or h.264 packets when a million people need their Archer fix. The bits on the wire must flow. They're (in my view) some combination of a TV studio and a cloud-computing, software-infrastructure company.

Still, they think (or some of them think) they're in a creative business. Maybe they are! They are certainly not alone in that thought. I hear software people say this about themselves sometimes, and I hear it in business press punditry and gentrification apologias all the time. Software as creativity. It's obviously true in a few trivial senses: I make programs out of keystrokes and algorithms and data structures; and I solve problems when I run into them, I guess "creatively". But this is no different than the level of creativity in any job; carpentry and baking are similarly creative. Calling programmers "creative" in this sense gets one into silly predicaments such as likening us to painters: it might sound nice, maybe even stylish or cool, but it's not especially accurate.

I thought this over while staring at the slide. I thought of all the ways I know people make and sell software: public infrastructure, durable goods (bundled with computers or consumer electronics), capital goods, public and private services, and so forth. I thought of the big software firms, and the software-hardware of software-utility hybrids: IBM, HP, SAP, Oracle, Salesforce, Symantec, Microsoft, Google. These companies may have some aesthetic dimension to their product lines, but most of the time and energy they spend is on pretty heavy numbers-and-plans engineering. Power plants and cooling, latency and bandwidth, distributed systems and error correction. Not really dreamy creative stuff.

What's especially weird, reflecting on that slide, is that it explicitly references other kinds of supposedly-less-creative industries where its advice wouldn't apply: manufacturing, medicine, nuclear power. As though those industries don't contain software! But clearly this is a "different" kind of software, a different sub-sector if you will. Netflix, and all the people I hear in Silicon Valley talking about "moving fast and breaking things", see themselves as doing some other kind of software.

As I thought it over, I could only really think of maybe 3 significant sub-sectors of software where "creativity" carries a premium:


  1. When you're working in research. Like literally inventing entirely new concepts. Math and analysis heavy. Blackboards and experiments. Long time horizons, no idea what will work. Many people want to pretend their work is research because it's high-prestige, but sadly Microsoft Research and Microsoft are not the same thing, and you know when you're working for one or the other. If your manager evaluates you in terms of papers published and new-ideas invented, you're in research (and odds are you're on a military contract). If they evaluate you on products shipped, bugs fixed, performance improvements, features implemented -- sorry, that's just software engineering.

  2. When you're working on consumable aesthetic-experiential software (in contrast to most software, that's supposed to be silent, ignorable and "just work"). This is stuff that has either extremely high volume / low production value, like social games or wallpaper apps; or else high production value with a team of "creative professionals" like artists, illustrators, sculptors, animators, writers, actors, musicians doing most of the work. Say, AAA games or design-heavy websites. The programmers are there but they're actually not the majority of the workers and their creativity isn't really valued.

  3. When you're trying to (cough cough) "create new wealth" by computerizing an existing business, wiping out an existing sector and funnelling all the money into your own pockets (in pants conveniently bought and owned by a VC). This is the "creative destruction" of capitalism: a term that began life as a disparaging Marxist jab that has mutated into a cheerfully sadistic neoliberal slogan. Silicon Valley people like to repeat it when discussing a bunch of humans losing their jobs to a server farm. It's only creative in a broad, systemic, socio-economic-Darwinist horror-show sense; it certainly doesn't require anyone except the people doing the business strategy to think or act creatively. They just need to find a suitable target and go for the jugular.


I think it is this last sense in which the Netflix slide deck actually means "creative-inventive market"; through a certain rhetorical slight of hand, the act of eating network television's entire business is rebranded as a "creative" behaviour, just as I'm sure Google eating the ad industry was seen as "creative" from the perspective of early investors and Mountain View real estate agents. Indeed, earlier in the slide deck there's a warning that if one's company becomes too "process-driven", it'll fail to "adapt quickly" when "the market shifts due to new technology or competitors or business model". The message here is simple: business is continuous dog-eat-dog creative destruction, the only way to survive is to make sure you're not the one being eaten.

So anyway, I wanted to point out that while this might be true in a business sense -- we'll leave the social consequences of unfettered capitalism for a different post -- it's not really a great idea to transform this business thinking into software advice. It's not actually good software engineering practice. It was a slide deck about a particular culture (and I don't want to put words in the mouth of the authors of the slide deck) but I see an awful lot of software people taking this sort of advice as engineering advice about, say, valuing "agility" over planning, flexibility over correctness, "fixing errors" rapidly in the field (say by hot-deploying code 50 times a day, or running continuous updaters on client machines against the will of your users) over not breaking so much stuff in the first place.

I want to push back against that "rapid iteration above all else" ideology, a bit. Sacrificing quality in favour of creative adaptation on the fly is, I think, a dangerous habit to get into, and it becomes a sort of self-fulfilling spiral of lowered expectations and quality. It's good to keep cycle time as low as possible, of course, for cases when you're forced into action by circumstances and want rapid feedback. But it's also good to think before you act. It's easy to spend all your energy on thoughtless rewrites, minimalist prototypes, firefighting and busy-work because slowing down and thinking things through has become anathema to your engineering culture. At the risk of contradicting yet another great computer scientist: it may be easier to ask forgiveness than permission, but that doesn't make it better. Sometimes it's better to figure out what not to do before you do it, so you won't need to ask forgiveness.

This entry was originally posted at http://graydon2.dreamwidth.org/237729.html. Please comment there using OpenID.
22 Jun 20:57

The Player Of Games

Second reading of this fascinating story about The Culture – a future civilization which has transcended routine scarcity, removing many sources of conflict and threatening to render narrative pointless. Further complicating the narrative problem is that the central character is a professional gamer, but since we’re talking about very advanced civilizations which have self-aware spaceships and such, the games can’t be described in much detail because they’re just too complex. Despite the challenges, this is superbly done.

22 Jun 20:57

The Power of 40 MBit/s LTE Roaming

by Martin

I recently had one of those moments again when I realized that what I was able to do just then would have been impossible just a year ago. When I was recently able to download a massive 3 GB file over LTE I needed urgently at 40 Mbit/s while roaming abroad I realized that it was just such a moment.

It seems we are moving from a ‘near real time’ production to a we’ll deliver it while you are already working on it. It so happened when I was traveling abroad and urgently needed a software bundle to test abroad that had a size of 3 GB. Trains don’t wait and sure enough I was already abroad when the link to the freshly compiled software arrived from the developers on the other side of the planet. I would have been glad to download the image via the café’s Wi-Fi network but their downlink speeds were around 5 Mbit/s. That’s quite good enough for web surfing but not for downloading a 3 GB image in a reasonable amount of time. I could have tried a couple of other Wi-Fi hotspots by moving from place to place but I guess my chances of finding a sufficiently fast connection would have been slim at best.

Fortunately I didn’t have to try as I’ve just upgraded my mobile subscription to a 10 GB monthly data bucket that I can also consume when I’m roaming in the EU. LTE was fast and so was the interconnection link to my home network operator so I was able to download the file in 15 minutes at a data rate of 35 to 40 Mbit/s instead of trying an older software version and coming back a few days later. And that’s exactly what would have happened only a year ago.

Great stuff, I really like it when improvements come ins such recognizable chunks instead of being gradual and almost unnoticeable!

22 Jun 20:57

Kristy, getting ready for Prom

by Ms. Jen
Kristy, getting ready for Prom

Sat 05.14.16 – Photo of my cousin Kristy taken by Ms. Jen with her Nokia 808 PureView.

22 Jun 20:57

We spend more at restaurants than at grocery stores

by Nathan Yau

For decades, Americans spent more money at the grocery store than at eating and drinking establishments. It’s not like that anymore, Quartz reports.

Restaurant spending

Tags: eating, Quartz, spending

22 Jun 20:57

Thoughts on The DAO Hack

by Emin Gün Sirer

We just lived through the nightmare scenario we were worried about as we called for a moratorium on The DAO: someone exploited a weakness in the code of The DAO to empty out more than 2M ($40M USD) ether.

The exploit seems to have targeted the reentrancy problem in the 'splitDAO' function. The reentrancy problem is related to but distinct from the unchecked-send problem that was discussed on this blog yesterday. Both problems are well-known, identified by Least Authority's audit of the Ethereum virtual machine as problems that can affect applications, as well as Peter Vessenes's recent blog post. In essence, a call that looks like a regular call can easily be turned into a recursive call, and unless the application is coded very carefully, it can be used to make multiple withdrawals when only one should be allowed. It looks like the attacker took advantage of it to withdraw substantial sums.

My immediate reactions to this hack are as follows.

What's a Hack When You Don't Have a Spec?

First of all, I'm not even sure that this qualifies as a hack. To label something as a hack or a bug or unwanted behavior, we need to have a specification of the wanted behavior.

We had no such specification for The DAO. There is no independent specification for what The DAO is supposed to implement. Heck, there are hardly any comments in The DAO code that document what the developers may have been thinking at the time they wrote the code.

The "code was its own documentation," as people say. It was its own fine print. The hacker read the fine print better than most, better than the developers themselves.

Had the attacker lost money by mistake, I am sure the devs would have had no difficulty appropriating his funds and saying "this is what happens in the brave new world of programmatic money flows." When he instead emptied out coins from The DAO, the only consistent response is to call it a job well done.

No Safe Haven Right Now

You might think that, faced with an attacker on The DAO, you could just take your funds and be safe. But this is not the case here.

The DAO devs decided to make it difficult to take funds out of The DAO. So they did not give people the option to "just take funds out." Instead, a DAO investor gets to create a new "child DAO" and move her funds into the child and keep them there for 27 days -- there is no direct withdrawal.

The problem is that the child DAO is exactly the same code as the parent, and has the exact same vulnerability. Converting the child back to ether takes another 34 days; replacing the child DAO with an upgraded contract takes a minimum of 7 days.

So, the attacker, if he so chose, could stalk people into their children DAOs, and drain them before they got a chance to upgrade their contracts. I don't think he'll do this: if he rose to this level of obnoxiousness, he'd certainly invoke specific censure.

Moving Funds Has A Cost

The DAO was not designed to have an easy "update" function. In particular, at this moment, there seems to be no way to take The DAO from its current state, and reinstate it into a newer contract code, keeping its internal state intact. The "extraBalance" account, in particular, is not transferable through "newContract" upgrades. This means that the extraBalance amount, a few million dollars worth, is a writeoff.

The DAO Experiment is Over

Practically, this should mark the end of The DAO. The SlockIt folks should work hard to dismantle the fund and return the coins back to the investors in as orderly a fashion as possible.

Is Ethereum/Solidity Suitable for Secure Smart Contracts?

It's clear that writing a robust, secure smart contract requires extreme amounts of diligence. It's more similar to writing code for a nuclear power reactor, than to writing loose web code.

Yet the current Solidity language and underlying EVM seems designed more for the latter. Some misfeatures are:

  • A good language for writing state machines would ensure that there are no states from which it is impossible to recover.
  • A good language for writing state machines would make it painfully clear when state transitions can and cannot happen.
  • A good language for maintaining state machines would provide features for upgrading the security of a live contract.
  • A good language for writing secure code would make it clear that there are no implicit actions, that code executes plainly, as read.

The current language does not fulfill any of these commandments, and in fact, the last one, involving implicit recursive calls, is what did The Dao in.

The SlockIt team even had the designer and implementor of Solidity perform a review of their code. If he cannot get something like The DAO to be secure, no one can.

A re-think seems called for.

Copycat Attacks

The main worry right now involves copycat attacks. Others can learn from this attack and launch the exact same one.

Stopping the Attacker

The big unknown is how the ethereum community will react.

On the one hand, rolling back the ethereum blockchain will send a terrible message. If contracts can be reverted, then how exactly are smart contracts any better than regular old paper contracts?

On the other hand, watching The DAO get drained by a thief is a depressing end to an exciting experiment.

There is no good solution here. Practically speaking, the miners will probably put a freeze in effect and provide some time for The DAO investors to withdraw their funds, to minimize heartache. But in the end, there is no outcome that'll make everyone happy.

Looking Forward

Smart contracts are and remain an incredibly exciting field. We have only begun to scratch the surface.

There can be no birth without pain, no initial foray into the unknown without some setback.

I believe that Ethereum overall will emerge from this in a few weeks, having been made much stronger as a result. It will have a newfound direction and charter that involves a slight pivot, away from "let's get DApps at all costs, let's make front-end programmers into smart contract writers," towards "let's build up the science of secure, smart contracts."

And that will make everything worth it.

22 Jun 20:56

The 82 coolest new features Apple just revealed

If it’s June, it must be WWDC — Apple’s Worldwide Developers Conference, which has become the annual showcase for everything the company plans to roll out in the fall.

In case you were hoping for some real headlines, like a smaller Apple Watch, faster laptops, or a home version of Siri — well, better luck next year. 

This year, the entire show was about software: an enormous laundry list of improvements to the iOS (for iPhone and iPad), watchOS (for the Apple Watch), tvOS (for the Apple TV), and macOS. (That’s the new name for OS X, which was once the new name for Mac OS X.)

If you’ve got two hours, you can watch the entire keynote here.

If not, then here, for your skimming pleasure, is the master list. Most of the changes are minor. But here and there, Apple has dropped in some truly inspired features that will genuinely make life easier for its fans. Using your iPhone’s fingerprint reader as security for web purchases you’re making on your Mac? Brilliant. A Clipboard that wirelessly transfers between Mac and phone? Excellent.

And the stuff in the Messages texting app — very, very cool.

Ready?

iOS 10

The iPhone/iPad/iPod Touch get a huge upgrade this fall, with the free iOS 10.

  • You can wake the phone just by picking it up, for a quick look at your waiting notifications.
  • Get more details on a notification, right on the lock screen, with 3-D Touch (press harder — on phone models that offer 3-D Touch). For example, if you’re notified of a text message that came in, you can press on it to read it and respond.
  • The new Control Center has three pages: widgets (news, weather, etc.), frequently used settings, and music playback controls.
image
  • 3-D Touch comes to more app icons on the Home screen.
  • Siri is now open to developers, so you’ll soon be able to issue spoken commands to non-Apple apps. “Send a message in Facebook Messenger to my wife that I’m running late,” for example. Call for an Uber, or send money to friends using Square Cash, all by voice.
  • QuickType, the suggestions that appear as you type, use context to offer more useful responses. If someone texts, “Where are you?”, QuickType offers to drop in a map of your current location. If someone says, “Do you have Casey’s email?”, you’re offered that person’s address from Contacts. Same thing with calendar availability, recent addresses, and so on. And if you create a new Calendar appointment, and the iPhone discovers that you’ve been discussing a particular time and date in Messages, it auto-suggests that time/date/subject on the New Appointment screen.
image
  • QuickType also changes the language of its suggestions as you change the language of your responses.
  • To keep up with the Joneses (well, the Flickrs and Google Photoses), Apple has added face and object recognition in Photos, so it can group your shots by person, group of people, place, time period, thing. Auto-generated albums include a map, photos that eliminate very similar shots, headshots of the people in the pictures, and even a music-backed slideshow movie.
image
  • A redesigned Maps app attempts to anticipate trips you’re going to make, and makes it easier to filter local restaurants or shops. And, inspired by Google Maps, Apple Maps now shows traffic when you’re navigating, zooms in when it’s time for a turn, proposes faster routes that open up (even in the middle of the drive), and, at last, lets you pan and scroll to view the route ahead.
image
  • Maps is now open to add-on features from other companies, too. For example, after looking up a certain address, you can then tap an Uber button, right there in Maps, to summon a ride.
  • The chaotically designed Apple Music app has been overhauled, too. You can view the lyrics to your songs right on the screen. More important, it’s now much clearer what music you’re looking at, and where it actually lives (on your phone or online). It’s a shame that Apple couldn’t get the design right the first time around, but at least it has finally gotten around to cleaning up its mess.
image
  • The redesigned Apple News app can now incorporate paid subscriptions to digital magazines and auto-generate “sections” based on topics you tend to read about.
  • Apple has been pushing its own home-automation technology, called HomeKit, for controlling your connected lights, door locks, garage-door openers, thermostats, and so on. Now there’s an app for that: a Home app that controls all of this stuff (in the unlikely even that you actually own any of it), and Siri commands that can drive it all. The buttons appear on your Control Center of your phone, too, so you can quickly flick lights on or off without having to unlock the phone. (There’s an Apple Watch control for these appliances, too.)
  • The Phone app can now transcribe your voicemails into written text. It also attempts to identify phone spam.
image
  • The Contacts app can now include, on each person’s “card,” buttons for non-Apple channels like What’s App or Skype.
  • The Camera and FaceTime apps will open much faster.
  • You can collaborate on Notes with other people.
  • You can edit Live Photos (Apple’s three-second “video photos”).
  • On the iPad, there’s a new side-by-side split view in Safari, so you can compare two web pages.
  • You can set a daily alarm to remind you that it’s time to head to bed.
  • Swift Playgrounds is a new app for the iPad — a new, easy, visual, interactive way to learn to write code. This important app, too, will be a free public beta next month, and free this fall. I’ll bet it’ll become a huge hit in schools.
image

You’ll be able to get iOS 10 as a free public beta next month, and the finished version will be free this fall.

Messages in iOS

I’m giving a dedicated writeup to Messages, the iPhone’s texting app, because the changes are so many and so huge. Keep in mind that most of these enhancements are available only when you’re texting another Apple customer (someone using a Mac or iPhone, for example) — not when you’re texting less enlightened cellphones.

  • When you share a web link, you get a preview of the page — even if it’s a movie. When you want to send a photo, the live preview appears right in Messages, so you don’t have to duck out to a separate app to take the shot.
  • Emoji are three times bigger than before, and Messages auto-suggests emoji based on what you’ve typed.
image
  • After you’ve typed some words, you can tap the Emoji button to see highlighting on any words for which an emoji replacement is available. That’s slick. (“Children of tomorrow will have no understanding of the English language,” joked Apple presenter Craig Federighi onstage.)
image
  • Messages also lets you animate a message bubble — to make it pop briefly larger (“Congrats!”), appear briefly smaller (“I’m so sorry”), or appear as “invisible ink,” revealing what you’ve typed, or what photo you’ve pasted, only when the recipient drags a finger across. (To see this menu of options, you hold down the Send button.)
image
  • You can even finger-write or draw directly into your outgoing message. (YES!)
  • You can send a message accompanied by a full-screen animated background, too (confetti or fireworks, say), too. And you can share Apple Music tracks right in the chat window.
  • Software companies can add new features to Messages, too. One might add animated “stickers.” Another, like Square Cash, can add a feature that lets you pay someone, right in the app (as Facebook Messenger does).
  • Your Mac and Apple Watch can receive all of these goodies, but can’t generate them.

macOS

This fall, the operating system formerly known as Mac OS X gets an upgrade that shall be known as macOS Sierra.

  • The big-ticket item is Siri. Now, you can press the Fn button on your keyboard to speak to Siri, just as you do on the iPhone. “Show the files I worked on last weekend about the Hawaii trip.” “Just the ones Casey sent me.” “Play my Relaxation playlist.” “Search Web for flu shots.” “Tell my wife I’ll be home at six” (sends a text message). “What movies are playing tomorrow?”
  • You can then pin the results to your Notification Center (the side-screen panel), for access later by dragging into your documents.
  • Auto Unlock: If you’re wearing your Apple Watch, you don’t have to type a password to unlock your Mac. It unlocks automatically.
  • Universal Clipboard. Copy something on the iPhone, paste it on the Mac.
image
  • Documents that you leave out on your Mac desktop also appear on the desktops of all your other Macs, and even in a special folder on your iPhone or iPad (a new feature of iCloud).
  • A new feature of the System Information app will offer to reclaim wasted disk space. It auto-deletes cache files, duplicate files, and other redundant data, and offers to back up older files to your iCloud Drive.
  • For websites that accept Apple Pay to buy stuff, you can authenticate yourself by using the fingerprint reader on your iPhone.
  • You can now consolidate all the open windows in any app into tabs.
  • Picture-in-picture. Any video you’re watching can be shrunken into a little inset window. It remains in place even as you slide from virtual desktop to virtual desktop.
image

watchOS 3

Here’s what’s coming this fall in the free new version of the Apple Watch software.

  • Much, much faster app launching. (Frequently opened apps are kept in memory.)
  • The side button, instead of being wasted on opening your Contacts list, opens the Dock — a scrolling row of your most frequently used apps. (Someone’s been listening to my gripes!)
  • Swipe up from the bottom of the watch face to open the Control Center, a panel of important settings.
image
  • Reply options now appear on the same screen as incoming text messages. And one of them is Scribble, which is handwriting (well, fingertip) recognition. You can reply to a text message by writing on the watch face, letter by letter. That’s going to be useful.
image
  • There’s now a Minnie Mouse watch face, not just Mickey (gender equality at last!). Another new watch face shows your activity progress on the same screen as the time. And a third new face called Numerals makes the hour follow the hands around the face.
image
  • You can change watch faces by swiping, edge to edge — you don’t have to enter some special settings mode to do it.
  • There are new apps for Reminders and Find My Friends.
  • A new feature called SOS works like this: In an emergency, you can hold down the Side button to call 911 (after a three-second countdown), or whatever the local country’s equivalent number is. Then it notifies your emergency contacts, complete with a map of your location. Then the watch displays your medical ID.
  • You can now share your physical activity graph (or heart rate) with family or friends, or shoot messages (either written or spoken) to each other.
  • The activity tracker can now track wheelchair users’ activity.
image
  • A new stress-relief app called Breathe is designed for relaxation, guiding you through deep breathing. The watch can remind you to run it periodically.

tvOS

Apple continues to hammer away at the software for the Apple TV:

  • New TV apps: Sling, Fox Sports Go, Molotov (France only), Sketch Party, NBA 2K, Minecraft Story Mode.
  • Apple has written a new Apple TV remote control app for the iPhone, so that you can enter text by tapping and use Siri to give commands, and play games with the phone’s built-in gyroscope.
  • You can search for movies, using voice, by topic (“Show me ‘80s teen comedies”). 
  • You can search YouTube by voice now, too (yay!), and open live channels by voice (“Watch ESPN”; doesn’t work on all channels).
  • Single Sign-on! On all streaming-TV boxes, you have to enter your account name and password for each service in each app — on a device that has no keyboard. It’s first-world torture. But Apple says that you’ll now be able to enter your info once to enable all of your “network apps” — that is, you’ll be able to unlock all of the apps corresponding to the channels your cable package brings you. (That still won’t help with YouTube, Netflix, Hulu, and so on.)
image
  • There’s now Dark Mode (a black-background user interface).

AppleOS

Four OSes, hundreds of little tweaks, only a few jaw-dropping features.

Does the lack of headline-grabbers mean that Apple has run out of innovation steam? Or is this just one of Apple’s refinement years, where the company puts its efforts into tightening and improving what it’s already got, while the big-ticket items for next year percolate in the labs?

Let’s meet right back here next June and find out.


David Pogue is the founder of Yahoo Tech; here’s how to get his columns by email. On the Web, he’s davidpogue.com. On Twitter, he’s @pogue. On email, he’s poguester@yahoo.com. He welcomes non-toxic comments in the Comments below.

22 Jun 20:55

Autocomplete poetry

by Alex Bate

Raspberry Pi integrated into the world of art. I hadn’t come across much of this before, and I like it a lot. As a self-proclaimed ‘artist of stuff’, it’s always exciting to see something arty that calls to the maker inside. With Glaciers, NYC-based Zach Gage has achieved exactly that.

Glaciers was an art instillation that, like the landforms from which it takes its name, slowly developed over time. I say ‘was’, but with each of its constituent pieces still running and a majority already sold, Glaciers continues indefinitely. Using forty Raspberry Pis attached to forty plainly presented Adafruit e-ink screens, Gage used Google Search’s auto-complete function to create poetry.

install4_lg

We’ve all noticed occasional funny or poignant results of the way Google tries to complete your search query for you based on the vast amount of data that passes through its search engine daily. Gage has programmed the Raspberry Pis to select the top three suggestions that follow various chosen phrases and display them on the screens. The results are striking, often moving, and usually something that most people would acknowledge as poetry, or at least poetic.

The screens refresh daily as the Pis check Google for changes and update accordingly. For some search phrases, the autocompletions can change daily; for others, it could take years. A poem you’ve had upon your wall for months on end could suddenly change unexpectedly, updating to reflect the evolving trends of user queries on the internet.

“The best paintings you can look at a thousand times and you keep seeing new things.” – Zach Gage

Glaciers is certainly an intriguing installation, with pithy observations of the vulnerability of anonymous internet users in pieces such as:

Glacier03_lg

and the (somewhat) more light-hearted:

Glacier04_lg

Zach Gage is an indie video game creator, responsible for titles such as SpellTower and the somewhat fear-inducing Lose/Lose (Space Invaders meets permanent file deletion with some 17000 files already lost to the game since launch). He’s previously used Raspberry Pis in other projects, such as his Twitter-fuelled best day ever and Fortune. I bet this isn’t the last time he does something fabulous with a Pi.

The post Autocomplete poetry appeared first on Raspberry Pi.

22 Jun 20:55

Frugal Bike Components

by noreply@blogger.com (VeloOrange)
By Chris
Frugality is cool, but hard to practice when you're building up a new frame with new parts. There's nothing wrong with scouring Craigslist and ebay for pre-owned bike parts (I do it), but it takes a lot of time and effort, and you can end up with some pretty worn stuff  Sometimes you want new shiny bits that you know will just work. So I've assembled a list of parts that I'd use to save a little on a new build.

VO Micro Fiber Saddles: Leather saddles look great and, after they're broken in, are probably the most comfortable. In my experience, though, the VO micro-fiber saddles are 95% as comfortable at about half the price and weight. Plus, they don't need to be broke-in, they don't need to be protected from rain, and they don't attract thieves (lots of leather saddles get stolen). We make them in a narrow and a wide version, and next year we'll have models with a smooth cover.

Saddle Loops: Speaking of saddles, these little bolt-on loops allow you to use a saddle bag on almost any saddle. Maybe there is no need for a new saddle if you have an old favorite.

Falcon Thumb Shifters: These are not high end components, but they work surprisingly well, are comfortable to use, and are compatible with almost any 5- to 9-speed derailleurs. They even come with cables. The best part is they cost 12 bucks. No, really, $12 a pair.

Dajia Seatpost: The Grand Cru seatpost is better and offers more setback, but the Dajia seatpost is strong, simple, nicely finished, and comes in many sizes. If that's not enough, it's also really inexpensive for such a well made component.

Deore derailleurs and shifters: We don't sell them, but if you want durable derailleurs for touring, Shimano Deore are a great choice. Deore components have been made for decades and they come in many versions. Several VO staffers look for new-old-stock, or just new, Deore stuff for most of their builds.

Tourist bar: We have 19 models of  handlebars in our store, but for casual around town use the $25 Tourist bars are among my favorites. I've recently used them for a little gravel grinding too. The Milan bar is similar, but with less rise.

VO Quill Stem: These chrome quill stems look like a custom stem and get you bars as high as a Nitto Technomic, yet they cost no more.

VO Specials page stuff: There are usually some great deals here.

VO wheels: VO wheels use our hubs with superb Japanese bearings and high quality rims, yet they are priced lower than many lesser wheels. They are made with a combination of hand and machine building to keep cost low without compromising quality.

Paselas tires: The Japanese Pasela tires may not be the cheapest option, but the great ride quality, durability, and classic looks makes them a bargain.

Tektro CR720 brakes: We love these canti-brakes. They are great stoppers, good looking, easy to set up, and only $29/wheel.

VO Alloy Headsets: Sealed bearing headsets are great, but folks have been riding with regular ball bearing headsets for over 100 years. Keep them adjusted and greased and they will last a very very long time. You can even replace the bearings for a couple of dollars.


22 Jun 20:44

Hooray! All Narrative Clip 2 pre-orders are on their way!

by Oskar K

It is June 17 2016 and a beautiful summer day and all pre-ordered Narrative Clip 2 units have either been delivered or are on their way out of the warehouse!

We wanted to thank you all for your patience and support throughout this process. Getting Clip 2 to everyone took longer than any of us wanted but we’re so happy to say that today is a major milestone! This wouldn’t have been possible without your support. We’re lucky to have such an incredible community who have believed in us throughout this journey. Thank you. Now we’re looking forward to all the joyful and breathtaking moments you’ll be able to capture with your Clip 2.

If you haven’t ordered a Clip 2 yet, you can get one now. But hurry up before they go out of  stock again!

(Be sure to tag the moments you share with #NarrativeClip so we can enjoy them with you!)

The post Hooray! All Narrative Clip 2 pre-orders are on their way! appeared first on Narrative Blog.

22 Jun 20:44

Bruno Dias on Hypertext

Fascinating interview with IF writer Bruno Dias on the craft of writing hypertext narrative.

What does it mean to give the player a choice that is enormously consequential to the character but almost entirely inconsequential to the plot?
22 Jun 20:44

Weeknote 24/2016

by Doug Belshaw

This week I’ve been:

Next week I’m spending Monday to Wednesday at home with my family making sure I’m ready for my trip to the US. I’m arriving in Denver on Thursday, keynoting on Friday, running a pre-conference workshop on Saturday, attending ISTE on Sunday, then flying back to facilitate an event for Digitalme in London!

22 Jun 20:43

Brexit Graph of Trust

by Bryan Mathers
brexit graph of trust

Sorry to get all political on you, but seriously, those guys?
They’re not campaigning for the UK to leave the EU because it’ll be good for you. They’re campaigning to leave the EU because it’ll be good for them.

<sigh>

The post Brexit Graph of Trust appeared first on Visual Thinkery.

22 Jun 20:43

A weblike existence

by Bryan Mathers
A weblike existence

“The web is more a social creation than a technical one. I designed it for a social effect — to help people work together — and not as a technical toy. The ultimate goal of the Web is to support and improve our weblike existence in the world.”
— Tim Berners-Lee

Created for “3 ways Open Badges work like the Web” a blog post by Doug Belshaw.

The post A weblike existence appeared first on Visual Thinkery.

22 Jun 20:43

TestFlight Update Allows Developers to Push iOS 10 Betas

by Federico Viticci

Chance Miller, writing for 9to5Mac:

Following the release of the first developer beta of iOS 10 earlier this week, Apple today has update TestFlight with support for the latest iOS version. As announced on the company’s developer website, developers are now able to build apps for iOS 10, watchOS 3, and the latest version of tvOS.

Being able to push betas of apps with iOS 10 features means that developers will be able to perfect the implementation of things like SiriKit and the new notification and widget features on iOS.

I remember struggling last year to try beta apps updated for iOS 9 ahead of the public release. It's good to see Apple is doing better this year and letting developers push betas built against the new SDKs right out of the gate. This is the way it should be.

→ Source: 9to5mac.com

22 Jun 20:42

Analysis of the DAO exploit

by Phil Daian

So I'm sure everyone has heard about the big news surrounding the DAO getting taken to the tune of $150M by a hacker using the recursive Ethereum send exploit.

This post will be the first in what is potentially a series, deconstructing and explaining what went wrong at the technical level while providing a timeline tracing the actions of the attacker back through the blockchain. This first post will focus on how exactly the attacker stole all the money in the DAO.

A Multi-Stage Attack

This exploit in the DAO is clearly not trivial; the exact programming pattern that made the DAO vulnerable was not only known, but fixed by the DAO creators themselves in an earlier intended update to the framework's code. Ironically, as they were writing their blog posts and claiming victory, the hacker was preparing and deploying an exploit that targeted the same function they had just fixed to drain the DAO of all its funds.

Let's get into the overview of the attack. The attacker was analyzing DAO.sol, and noticed that the 'splitDAO' function was vulnerable to the recursive send pattern we've described above: this function updates user balances and totals at the end, so if we can get any of the function calls before this happens to call splitDAO again, we get the infinite recursion that can be used to move as many funds as we want (code comments are marked with XXXXX, you may have to scroll to see em):

function splitDAO(
  uint _proposalID,
  address _newCurator
) noEther onlyTokenholders returns (bool _success) {

  ...
  // XXXXX Move ether and assign new Tokens.  Notice how this is done first!
  uint fundsToBeMoved =
      (balances[msg.sender] * p.splitData[0].splitBalance) /
      p.splitData[0].totalSupply;
  if (p.splitData[0].newDAO.createTokenProxy.value(fundsToBeMoved)(msg.sender) == false) // XXXXX This is the line the attacker wants to run more than once
      throw;

  ...
  // Burn DAO Tokens
  Transfer(msg.sender, 0, balances[msg.sender]);
  withdrawRewardFor(msg.sender); // be nice, and get his rewards
  // XXXXX Notice the preceding line is critically before the next few
  totalSupply -= balances[msg.sender]; // XXXXX AND THIS IS DONE LAST
  balances[msg.sender] = 0; // XXXXX AND THIS IS DONE LAST TOO
  paidOut[msg.sender] = 0;
  return true;
}

The basic idea is this: propose a split. Execute the split. When the DAO goes to withdraw your reward, call the function to execute a split before that withdrawal finishes. The function will start running without updating your balance, and the line we marked above as "the attacker wants to run more than once" will run more than once. What does that do? Well, the source code is in TokenCreation.sol, and it transfers tokens from the parent DAO to the child DAO. Basically the attacker is using this to transfer more tokens than they should be able to into their child DAO.

How does the DAO decide how many tokens to move? Using the balances array of course:

uint fundsToBeMoved = (balances[msg.sender] * p.splitData[0].splitBalance) / p.splitData[0].totalSupply;

Because p.splitData[0] is going to be the same every time the attacker calls this function (it's a property of the proposal p, not the general state of the DAO), and because the attacker can call this function from withdrawRewardFor before the balances array is updated, the attacker can get this code to run arbitrarily many times using the described attack, with fundsToBeMoved coming out to the same value each time.

The first thing the attacker needed to do to pave the way for his successful exploit was to have the withdraw function for the DAO, which was vulnerable to the critical recursive send exploit, actually run. Let's look at what's required to make that happen in code (from DAO.sol):

function withdrawRewardFor(address _account) noEther internal returns (bool _success) {
  if ((balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply < paidOut[_account])
    throw;

  uint reward =
    (balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply - paidOut[_account];
  if (!rewardAccount.payOut(_account, reward)) // XXXXX vulnerable
    throw;
  paidOut[_account] += reward;
  return true;
}

If the hacker could get the first if statement to evaluate to false, the statement marked vulnerable would run. When that statements runs, code that looks like this would be called:

function payOut(address _recipient, uint _amount) returns (bool) {
  if (msg.sender != owner || msg.value > 0 || (payOwnerOnly && _recipient != owner))
      throw;
  if (_recipient.call.value(_amount)()) { // XXXXX vulnerable
      PayOut(_recipient, _amount);
      return true;
  } else {
      return false;
}

Notice how the marked line is exactly the vulnerable code mentioned in the description of the exploit we linked!

That line would then send a message from the DAO's contract to "_recipient" (the attacker). "_recipient" would of course contain a default function, that would call splitDAO again with the same parameters as the initial call from the attacker. Remember that because this is all happening from inside withdrawFor from inside splitDAO, the code updating the balances in splitDAO hasn't run. So the split will send more tokens to the child DAO, and then ask for the reward to be withdrawn again. Which will try to send tokens to "_recipient" again, which would again call split DAO before updating the balances array.

And so it goes:

  1. Propose a split and wait until the voting period expires. (DAO.sol, createProposal)
  2. Execute the split. (DAO.sol, splitDAO)
  3. Let the DAO send your new DAO its share of tokens. (splitDAO -> TokenCreation.sol, createTokenProxy)
  4. Make sure the DAO tries to send you a reward before it updates your balance but after doing (3). (splitDAO -> withdrawRewardFor -> ManagedAccount.sol, payOut)
  5. While the DAO is doing (4), have it run splitDAO again with the same parameters as in (2) (payOut -> _recipient.call.value -> _recipient())
  6. The DAO will now send you more child tokens, and go to withdraw your reward before updating your balance. (DAO.sol, splitDAO)
  7. Back to (5)!
  8. Let the DAO update your balance. Because (7) goes back to (5), it never actually will :-).

(Side note: Ethereum's gas mechanics don't save us here. call.value passes on all the gas a transaction is working with by default, unlike the send function. so the code will run as long as the attacker will pay for it, which considering it's a cheap exploit means indefinitely)

Armed with this, we can provide a step by step re-trace of how The DAO got emptied out.

Step 1: Proposing the Split

The first step towards all of the above is to simply propose a regular split, as we've mentioned.

The attacker does this in the blockchain here in DAO Proposal #59, with the title "Lonely, so Lonely".

Because of this line:

// The minimum debate period that a split proposal can have
uint constant minSplitDebatePeriod = 1 weeks;

he had to wait a week for the proposal to see approval. No matter, it's just a split proposal like any other! Nobody will look too closely at it, right?

Step 2: Getting the Reward

As was neatly explained in one of slock.it's previous posts on the matter, there are no rewards for the DAO to give out yet! (because no rewards were generated).

As we mentioned in the overview, the critical lines that need to run here are:

function withdrawRewardFor(address _account) noEther internal returns (bool _success) {
  if ((balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply < paidOut[_account]) // XXXXX
    throw;

  uint reward =
    (balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply - paidOut[_account];
  if (!rewardAccount.payOut(_account, reward)) // XXXXX
    throw;
  paidOut[_account] += reward;
  return true;
}

If the hacker could get the first marked line to run, the second marked line will run the default function of his choosing (that calls back to splitDAO as we described previously).

Let's deconstruct the first if statement:

if ((balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply < paidOut[_account])

The balanceOf function is defined in Token.sol, and of course does exactly this:

return balances[_owner];

The rewardAccount.accumulatedInput() line is evaluated from code in ManagedAccount.sol:

// The sum of ether (in wei) which has been sent to this contract
uint public accumulatedInput;

Luckily accumulatedInput is oh so simple to manipulate. Just use the default function of the reward account!

function() {
    accumulatedInput += msg.value;
}

Not only that, but because there is no logic to decrease accumulatedInput anywhere (it tracks the input the account has gotten from all the transactions ever), all the attacker needs to do is send a few Wei to the reward account and our original condition will not only evaluate to false, but its constituent values will evaluate to the same thing every time it's called:

if ((balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply < paidOut[_account])

Remember that because balanceOf refers to balances, which never gets updated, and because paidOut and totalSupply also never get updated since that code in splitDAO never actually executes, the attacker gets to claim their tiny share of the reward with no problems. And because they can claim their share of the reward, they can run their default function and reenter back to splitDAO. Whoopsie.

But do they actually need to include a reward? Let's look at the line again:

if ((balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply < paidOut[_account])

What if the reward account balance is 0? Then we get

if (0 < paidOut[_account])

If nothing has ever been paid out, this will always evaluate to false and never throw! Why? The original line is equivalent, after subtracting paidOut from both sides, to:

if ((balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply - paidOut[_account] < 0)

where that first part is actually how much is being paid out. So the check is actually:

if (amountToBePaid < 0)

But if amountToBePaid is 0, the DAO pays you anyway. To me this doesn't make much sense -- why waste the gas in this manner? I think this is why many people assumed the attacker needed a balance in the reward account to proceed with the attack, something they in fact did not require. The attack works the same way with an empty reward account as with a full one!

Let's take a look at the DAO's reward address. The DAO accounting documentation from Slockit pegs this address as 0xd2e16a20dd7b1ae54fb0312209784478d069c7b0. Check that account's transactions and you see a pattern: 200 pages of .00000002 ETH transactions to 0xf835a0247b0063c04ef22006ebe57c5f11977cc4 and 0xc0ee9db1a9e07ca63e4ff0d5fb6f86bf68d47b89, the attacker's two malicious contracts (which we cover later). That's one transaction for each recursive call of withdrawRewardFor, which we described above. So in this case there actually was a balance in the rewards account, and the attacker gets to collect some dust.

Step 3: The Big Short

A number of entirely unsubstantiated allegations on social media have pointed to a $3M Ethereum short that occurred on Bitfinex just moments before the attack, claiming this short closed with almost $1M USD of profit.

It's obvious to anyone constructing or analyzing this attack that certain properties of the DAO (specifically that any split must be running the same code as the original DAO) require an attacker to wait through the creation period of their child DAO (27 days) before withdrawing any coins in a malicious split. This gives the community time to respond to a theft, through either a soft fork freezing attacker funds or a hard fork rolling back the compromise entirely.

Any financially motivated attacker who had attempted their exploit on the testnet would have an incentive to ensure profits regardless of a potential rollback or fork by shorting the underlying token. The staggering drop that resulted within minutes of the smart contract that triggered the malicious split provided an excellent profit opportunity, and while there is no proof the attacker took the profit opportunity, we can at least conclude that after all this effort they would have been stupid not to.

Step 3a: Preventing Exit (Resistance is Futile)

Another contingency that the attacker needed to think of is the case that a DAO split occurs before the attacker can finish emptying the DAO. In this case, with another user as sole curator, the attacker would have no access to DAO funds.

Unfortunately the attacker is a smart guy: there is evidence that the attacker has voted yes on all split proposals that come to term after his own, making sure that he would hold some tokens in the case of any DAO split. Because of a property of the DAO we'll discuss later in the post, these split DAOs are vulnerable to the same emptying attack we're describing here. All the attacker has to do is sit through the creation period, send some Ether to the reward account, and propose and execute a split by himself away from this new DAO. If he can execute before the curator of this new DAO updates the code to remove the vulnerability, he manages to squash all attempts to get Ether out of the DAO that aren't his own.

Notice by the timestamps here that the attacker did this right around the time he started the malicious split, almost as an afterthought. I see this more as an unnecessary middle finger to the DAO than a financially viable attack: having already emptied virtually the entire DAO, going through this effort to pick up any pennies that might be left on the table is probably an attempt to demoralize holders into inaction. Many have concluded, and I agree, that this hints at the attacker's motivations being a complete destruction of the DAO that goes beyond profit taking. While none of us know the truth here, I do recommend applying your own judgment.

Interestingly enough, this attack was described by Emin Gün Sirer after it had already occurred on the blockchain, but before the public had noticed.

Step 4: Executing the Split

So we've painstakingly described all the boring technical aspects of this attack. Let's get to the fun part, the action: executing the malicious split. The account that executed the transactions behind the split is 0xf35e2cc8e6523d683ed44870f5b7cc785051a77d.

The child DAO they sent funds to is 0x304a554a310c7e546dfe434669c62820b7d83490. The proposal was created and initiated by account 0xb656b2a9c3b2416437a811e07466ca712f5a5b5a (you can see the call to createProposal in the blockchain history there).

Deconstructing the constructor arguments that created that child DAO leads us to a curator at 0xda4a4626d3e16e094de3225a751aab7128e96526. That smart contract is just a regular multisignature wallet, with most of its past transactions being adding/removing owners and other wallet management tasks. Nothing interesting there.

Johannes Pfeffer on Medium has an excellent blockchain-based reconstruction of the transactions involved in the malicious Child DAO. I won't spend too much time on such blockchain analysis, since he's already done a great job. I highly encourage anyone interested to start with that article.

In the next article in the series, we'll look at the code from the malicious contract itself (containing the exploit that actually launched the recursive attack). In the interest of expedience of release, we have not yet completed such an analysis.

Step 4a: Extending the Split

This step is an update to the original update, and covers how the attacker was able to turn a ~30X amplification attack (due to the max size of Ethereum's stack being capped at 128) to a virtually infinite draining account.

Savvy readers of the above may notice that, even after overwhelming the stack and executing many more malicious splits than was required, the hacker would have their balance zeroed out by the code at the end of splitDAO:

function splitDAO(
  ....
  withdrawRewardFor(msg.sender); // be nice, and get his rewards
  totalSupply -= balances[msg.sender];
  balances[msg.sender] = 0;
  paidOut[msg.sender] = 0;
  return true;
}

So how did the attacker get around this? Thanks to the ability to transfer DAO tokens, he didn't really need to! All he had to do was call the DAO's helpful transfer function at the top of his stack, from his malicious function:

function transfer(address _to, uint256 _amount) noEther returns (bool success) {
  if (balances[msg.sender] >= _amount && _amount > 0) {
    balances[msg.sender] -= _amount;
    balances[_to] += _amount;
    ...

By transferring the tokens to a proxy account, the original account would be zeroed out correctly at the end of splitDAO (notice how if A transfers all its money to B, A's account is already zeroed out by transfer before it can be zeroed out by splitDAO). The attacker can then send the money back from the proxy account to the original account and start the whole process again. Even the update to totalSupply in splitDAO is missed, since p.totalSupply[0] is used to calculate the payout, which is a property of the original proposal and only instantiated once before the attack occurs. So the attack size stays constant despite less available ETH in the DAO with every iteration.

The evidence of two malicious contracts calling into withdrawRewardFor on the blockchain suggests that the attacker's proxy account was also an attack-enabled contract that simply alternated as the attacker with the original contract. This optimization saves the attacker one transaction per attack cycle, but otherwise appears unnecessary.

Was 1.1 Vulnerable?

Because this vulnerability was in withdrawRewardFor, a natural question to ask is whether the DAO 1.1, with the updated function, was still vulnerable to a similar attack. The answer: yes.

Check out the updated function (especially the marked lines):

function withdrawRewardFor(address _account) noEther internal returns (bool _success) {
  if ((balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply < paidOut[_account])
    throw;

  uint reward =
    (balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply - paidOut[_account];

  reward = rewardAccount.balance < reward ? rewardAccount.balance : reward;

  paidOut[_account] += reward; // XXXXX
  if (!rewardAccount.payOut(_account, reward)) // XXXXX
    throw;

  return true;
}

Notice how paidOut is updated before the actual payout is made now. So how does this affect our exploit? Well, the second time getRewardFor is called, from inside the evil second call to splitDAO, this line:

uint reward =
 (balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply - paidOut[_account];

will come out to 0. The payOut call will then call _recipient.call.value(0)(), which is the default value for that function, making it equivalent to a call to

_recipient.call()

Because the attacker paid for a lot of gas when sending his malicious split transaction, the recursive attack is allowed to continue with a vengeance.

Realizing they needed a 1.2 6 days after a 1.1, on code designed to be secure for years, is probably why the DAO's puppet masters called it quits.

An Important Takeaway

I think the susceptibility of 1.1 to this attack is really interesting: even though withdrawReward for was not vulnerable by itself, and even though splitDAO was not vulnerable without withdrawRewardFor, the combination proves deadly. This is probably why this exploit was missed in review so many times by so many different people: reviewers tend to review functions one at a time, and assume that calls to secure subroutines will operate securely and as intended.

In the case of Ethereum, even secure functions that involve sending funds could render your original function as vulnerable to reentrancy. Whether they're functions from the default Solidity libraries or functions that you wrote yourself with security in mind. Special care is required in reviews of Ethereum code to make sure that any functions moving value occur after any state updates whatsoever, otherwise these state values will be necessarily vulnerable to reentrancy.

What's Next?

I won't cover the fork debate or what's next for Ethereum and The DAO here. That subject is being beaten to death on every form of social media imaginable.

For our series of posts, the next step is to reconstruct the exploit on the TestNet using the DAO 1.0 code, and demonstrate both the code behind the exploit and the mechanism of attack. Please note that if someone beats me to these objectives, I reserve the right to cap the length of the series at one.

More Info

The information provided in this post is intended only to provide a broad overview and timeline of the attack, as well as a starting point for analysis.

If you have blockchain data or analysis, or contract source code or binary analysis that may have been relevant to the topics described here, please share it by mailing me at phil linuxcom. I will be happy to add it to the post with an acknowledgement in an effort to create a comprehensive reconstruction of the events of the last 24 hours (as of this writing).

Acknowledgements

Thanks to Martin Köppelmann on Twitter and in the comments for pointing out this additional detail and correcting my blockchain analysis of the single malicious smart contract.

Sincerest thanks to Andrew Miller for reviewing this post, Zikai Alex Wen for spending a few hours chasing decompiled Ethereum contracts with me (with results yet to appear in publication), and Emin Gün Sirer for turning me on to this attack before it went public, and staying up late on a Friday to adapt my post to Markdown and get it published early. Gün, we were so damn close -- sorry it wasn't quite enough this time :).

22 Jun 20:40

Feds and Province Pony Up for Public Transit Infrastructure-

by Sandy James Planner

 

trudeau-b-c-1024x675

The Prime Minister was in town yesterday, and announced that the federal government would be providing $460 million dollars under the new Public Transit Infrastructure Fund, with the Province of British Columbia providing $308 million dollars. This joint amount of $768 million dollars* is to be “combined with contributions from municipalities” to create “$900 million going toward public transit across the province”.

The Federal government is increasing its percentage of funding share from 33 per cent to 50 per cent for the Infrastructure Fund, with the Province still kicking in 33 per cent and the municipalities providing 17 per cent. Besides providing capital, the municipalities will also be responsible for the operation of the transit system once complete.

The intent of the new federal Public Transit Infrastructure Fund is to shorten commute times cut air pollution and strengthen communities. Here is the statement from the PMO (prime minister’s office).

A quick footnote for *PriceTag readers: there is a variance between the amount of funding reported by the Prime Minister’s office and that reported in the media. I am using the figures given by the Prime Minister’s office.

The bilateral agreement identifies the following projects for funding, and notes that this is the full amount the province will be getting from the federal government for Phase 1.

Metro Vancouver TransLink Phase 1:

  • The purchase of additional SkyTrain vehicles for the Expo, Millennium, and Canada Lines
  • A new West Coast Express locomotive
  • A new SeaBus
  • Upgrades to SkyTrain stations
  • Design and planning for Rapid Transit South of Fraser and the Millennium Line Extension along Broadway

BC Transit Phase 1 :

  • Investments in new bus depots, maintenance yards and operations facilities, as well as in new CNG fueling stations, in communities across the province.
  • New and more efficient buses, including cleaner burning CNG-fueled buses, and new buses for handyDART service expansion.
  • New technologies to make the fleet safer for drivers and passengers and to give BC Transit and local communities’ ridership information that will make them become even more efficient. 

The investment in new SkyTrain vehicles should be occurring quickly. Not as rapid will be the  fulfillment of the election promise made by the Mayor of Surrey to have light-rail transit to Surrey by 2018. Surrey’s intent was to have three lines from Surrey Centre serving Guildford, Newton and Langley City built at a cost of approximately $2.1 billion.

You may remember last year the Metro Vancouver mayors endorsed building the Surrey light-rail transit as well as the proposed extension of the Millennium Line from VCC-Clark Station to Arbutus Street. The projected cost of this extension under Broadway is estimated at about $2 billion.

These projects did not go ahead when they were  rejected in a plebiscite last year calling for a 0.5-percent increase to the provincial sales tax.

Metro Vancouver was the first jurisdiction in Canada to sign a deal for the new federal funding. The  Vancouver Sun  reports that second phase of this funding “hinges on approval from the provincial government for controversial measures such as mobility pricing, which could potentially see the tolling of all the bridges and tunnels in the region within next five years“.

And here is a small backgrounder from Vancouver Sun’s Kelly Sinoski:

What is the 10-year transportation plan?

The regional mayors’ council approved a $7.5-billion comprehensive transportation plan in 2013 to expand the system after years of a funding stalemate. The plan, which was approved by all 21 mayors except Burnaby’s Derek Corrigan, calls for service upgrades across the region, including more bus and SkyTrain service and rapid transit expansions in Surrey and Vancouver.

What this funding means

Over the next two to three years, TransLink will start Phase 1 of its transportation plan, which includes adding a third SeaBus, 28 SkyTrain cars to the Expo and Millennium lines, 22 Canada Line cars and five West Coast Express cars. The transportation authority will also overhaul its older SkyTrain stations and add bicycle parking along the new Evergreen Line. An estimated $157 million will be used to begin the planning and design for light rail in Surrey and a subway line along Vancouver’s Broadway to Arbutus.

How TransLink will fund the projects

The federal and provincial governments will commit $370 million and $246 million respectively, while TransLink will contribute $125 million to the first phase. The mayors’ council is proposing to sell surplus assets to cover TransLink’s share for the initial work, while planning to raise property taxes and transit fares for the second phase. The mayors also want to charge developers fees to raise density around SkyTrain stations and, within five years, have some sort of “mobility pricing,” such as tolling all the bridges and tunnels, or charging a fee-per-distance-travelled, to generate more funds.

What comes next?

The regional mayors’ council hopes to strike a deal with the federal and provincial governments in the next few months to secure phase two funding, which will pay for 11 new B-Line express buses and increased bus service hours, expanded HandyDart service, construction of the light rail line in Surrey and subway in Vancouver and more investments in roads, bicycle and transit networks. “We have all our funding on the table, we’re ready to go,” Moore said.

When was the last expansion?

The Evergreen Line, an 11-kilometre SkyTrain slated to open early next year, was the last major project to be approved for TransLink, following the opening of the Golden Ears Bridge and Canada Line in 2009. The project, which will link Burnaby and Coquitlam, was funded by a two cent increase in the gas tax, but subsequent attempts by mayors to generate funds through a vehicle levy were rejected by the province, while the public killed a proposed sales tax in a plebiscite last spring.

It’s a new day, with new funding and renewed hope for a comprehensive approach to transit in Metro Vancouver.

 


22 Jun 20:40

Ohrn Image — Community Mural Project

by Ken Ohrn

Attribution:  the Nest Community Mural Project (701 E Hastings St.)

Mural

Funded by Community Arts Council & the City of Vancouver, in partnership with Servants Vancouver, Jacob’s Well & Mission Possible.

Here’s the artist (Jenny Hawkinson) and some of the crew who painted it.

Nest.mural

 


22 Jun 20:40

Secret Places in the Region-the other Lighthouse Park

by Sandy James Planner
IMG_4926 IMG_4932 IMG_4929

Take a  bike ride or a vehicle south of the 49th parallel of latitude at Tsawwassen, cross into the United States at Point Roberts  and proceed southwesterly to the furthest point of land. Lighthouse Park (which has no lighthouse) sits at a point where tidal waters meet and summer orca pods enjoy salmon bubbled up in the currents.

 

IMG_4939 IMG_4938

 

There is also a very interesting piece of art in this park called “Sunsweep” by artist David Barr. “Sunsweep” is an international art project located at three sites adjoining the United States/Canada border. The sculpture is aligned to the North Star, solstices and equinoxes, and portrays the path of the sun from east to west. Sunsweep is also  installed on the 49th parallel in Roosevelt Campobello Park in New Brunswick, and on American Point Island, Lake of the Woods, Minnesota.


22 Jun 20:36

Daily Scot – Services in the City

by Scot Bathgate

It’s easy to fall into the trap of believing that city life equals a loss services and amenities routinely available in the car-orientated suburbs.  I feel this from time to time as an apartment dweller in the West End.  But the great thing about Downtown Vancouver is if you dig a little deeper the city is continually being programmed by a range of businesses for compact urban living.  Hidden among the residential towers of Downtown South/Yaletown along Richards Street is a branch of Encorp’s Return-It depot specializing in beverage container and electronics recycling.

2016-06-04 12.01.29

This ‘Express’ location provides a facility for Condo residents to simply walk down with their pre-purchased bags loaded with bottles, place them on the scale, enter their membership info, and the goods disappear into the back sorting area. In a day or two your account is credited after an off-site inspection and you’re good to go.

2016-06-04 11.49.21

No need to drive out to a large suburban plant that requires ample parking and space for truck movements, the Express location maximizes its site with a well programmed floor plan making your life as a city dweller more convenient and accessible.

 


22 Jun 14:54

Getting the Bava Band Back Together

by Reverend

I took a quick shot at yesterdays Daily Create, which was make your own damn assignment 🙂 I noticed Terry Greene had suggested creating your own band t-shirt, and I was off. T-shirts are my business these days, so I figured it was time bavatuesdays got a t-shirt! Fact is, before it was a “b” blog, bavatuesdays was divined for dual purposes: both a Mario Bava film fanclub as well as a band name. So, this post is about squaring old debts.

bavatuesdays-rock-t

The resolution and detail there is pretty bad, but I actually used a t-shirt generator site rather than GIMP or Photoshop for this one—although I did use GIMP at one point. I’ve played with the idea of using t-shirts for assignments in the Harboiled course I taught with Paul Bond many years ago, and I like the idea of hijacking an e-commerce site for art. Students were asked to use shirt generator sites like cafepress or zazzle to do the assignment. For this one I found My Custom Band Merch, and gave that a whirl. But before I go into that, I needed a design and I had an idea. Many, many years ago I think boing boing linked to a monster letter generator, but I can’t find the original. Anyway, I created a bavatuesdays lettering filled with cool monsters many a year ago and figured that would be a perfect band shirt aesthetic:

bavatuesdays

Now, I needed to get this onto a black shirt because any self-respecting bava band would use a metal-band inspired black shirt, I mean black shirts rule! In fact, the grandaddy of Metal bands, Black Sabbath, took their name after a 1963 Mario Bava movie titled, you guessed it, Black Sabbath. The things you learn on the bava. Anyway, the lettering was perfect, but it was a JPG which means it carried a white background, and that will not do. So I opened it up in GIMP and used the magic wand tool to select the white area and then used the Select–>Inverse tool to select the letters and cut them out. I then created a new image with a transparent background and pasted the lettering in. From there I exported it as a PNG to preserve the transparent background. Tricks of the trade!

Screenshot 2016-06-15 10.59.57

Now I was ready to upload that image onto the simple canvas My Custom Band Merch provided.  I did as much and I got a fairly bad resolution version of the lettering. This was good enough for the Daily Create, I got my point across, figured out the inverse select trick, and was able to Tweet it out in no time at all. And for me that is a successful Daily Create: you have some fun and pick up a trick or two in a tool like GIMP. But, I can never leave a good thing alone, I have to keep pushing. I had the transparent, decent resolution version of the lettering, so I gave the shirt another go, but this time in GIMP. As you can see, the resolution is much better, and it might highlight why an editing tool is probably a better choice for the final version I’ll be selling on this site sometime soon 🙂

bava-t-shirt

 

22 Jun 14:54

Graphic Activism: Lesbian Herstory Archives

by Reverend

This is cross-posted on the CUNY Academic Commons News blog as part of the Citation Needed series I am writing there.

Sisterhood

“Sisterhood is blooming. Springtime will never be the same.” (1972)

As I was cruising around the CUNY Academic Commons sites earlier today to see what’s good, I was immediately taken with Shawn(ta) Cruz-Smith’s recent post on the Grad Center’s Library blog, namely “Graphic Activism: Lesbian Graphic Posters Exhibition.” The first few paragraphs of the post say it all:

This summer as you walk through the halls of the Graduate Center first-floor main lobby and Library, you will notice images of circles as globes and buttons, women’s bodies, comic strips, hands massaging the earth, and bold font type with the repeated word: Lesbian.

You’re welcome.

The Graduate Center Library presents Graphic Activism, an exhibit of original activist posters and zine inserts 1980 – 2010 from the Lesbian Herstory Archives graphics collection. The exhibit was curated and conceptualized months ago, fully supported by its GC co-sponsor, CLAGS: The Center for LGBTQ Studies. The installation began the first week of June, and with it we claim solidarity with the Pulse Orlando community and other queer spaces that have too often, tragically, come under violent attack. The images serve as herstorical reminders marking decades of community-building and activism. 

A graphic herstory of the long struggle for equality and justice is an important reminder right now, and kudos to Cruz-Smith for framing the experience so brilliantly in this post. My only hope is that some of the artifacts and resources get curated and shared somewhere online at the Commons for those of us that are geographically challenged. I’m aware there may be permissions and copyright concerns, but even a link round-up to existing resources online would be awesome. But then again, why ask of others what you can do yourself? I can search and embed images here, can’t I? I was particularly interested in the resources listed in this paragraph:

The 1970s screen prints of the Chicago-based Women’s Graphic Collective proclaim “Sisterhood is Powerful” and imprint a call to “Spinsters Crones Hags Sisters,” on the Amazon labrys.

So I went out and found the 1970s screen prints of the Chicago’s Women’s Graphic Collective at the Oakland Museum of California, and they are pretty cool—and very 70s!

Screenshot 2016-06-16 21.51.41

Lesbian Fantasies Poem(1972)

Screenshot 2016-06-16 21.59.59

Working Women Unite (1975)

Screenshot 2016-06-16 21.51.16

Dia Internacional De La Mujer: International Women’s Day (c. 1975)

I also want to learn more about the Zines by Shawn(ta) Smith-Cruz and Sherley Olopherne which detail “decade by decade LHA subject files by and about Black Lesbians,” but came up short online. Maybe I can get some folks at the Grad Center to take some pictures and share them on Twitter, in the comments here, or even on the Lesbian Herstory Archives Facebook page. There I go putting everyone else to work again. Anyway, I can also do some more digging myself because there is no substitute for a compelling blog post to send me down the rabbit hole!

22 Jun 14:54

Does Ed-Tech have an Ethos?

by Reverend
The dynamic duo at AMICAL conference brining the ethos hammer down!

The dynamic duo at AMICAL conference brining the ethos hammer down!

This is the question that guided the interactive presentation Maha Bali and I gave together at the AMICAL conference in Rome last month. We finally got around to write about that presentation for the AMICAL blog, and you can find that post here. I won’t go into too much detail because that’s why we wrote the post, but it was really a pleasure to both co-present and co-author with Maha. I’ve gotten quite used to the idea of co-teaching ds106 with folks like Martha Burtis, Alan Levine, and Paul Bond, but I haven’t yet perfected the art of co-presenting and, especially, co-authoring posts. I’m so used to being a lone blogger that writing with someone else seems unnatural. That said, the final product is usually much better given that you have to read, re-read, negotiate, and feedback. And Maha is uncompromising, and I like that about her—it’s what makes us a good team.

Anyway, I particularly enjoyed this session because it brought into sharp relief (and directly challenged) the oft-repeated cliché “It’s not about the technology, “or “it’s not about the tool.” The idea of framing the session around the specific ethos of a tool we use like the LMS, Turnitin, Google Apps, etc., was all Maha’s, and I think it was an absolutely perfect frame for our session. We spent the session articulating—with the help of the audience—how the technology tools we use for teaching and learning have an embedded ethos and directly impact our practice. I like interactive, “in-your-face” sessions like this one, and we really benefitted from an engaged group of academics and librarians  that were willing to take the challenge and push back accordingly. There is no progress without struggle!

22 Jun 03:28

Swift 3.0 on Raspberry Pi 2 and 3

by Rui Carmo

Excellent timing, especially considering I recently upgraded most of my Raspberry Pis to Ubuntu 16.04.

22 Jun 03:27

"The fundamental form of domination in our society is based on the organizational capacity of the..."

“The fundamental form of domination in our society is based on the organizational capacity of the dominant elite that goes hand in hand with its capacity to disorganise those groups in society which, while constituting a numerical majority, see their interests partially (if ever) represented only within the framework of the fulfillment of the dominant interests. Articulation of the elites, segmentation and disorganization of the masses seem to be the twin mechanisms of social domination in our societies. Space plays a fundamental role in this mechanism. In short: elites are cosmopolitan, people are local. The space of power and wealth is projected throughout the world, while people’s life and experience is rooted in places, in their culture, in their history. Thus, the more a social organisation is based upon a-historical flows, superseding the logic of any specific place, the more the logic of global power escapes the socio-political control of historically specific local/national societies.”

-

Manuel Castells, The Rise of the Network Society

elites are cosmopolitan, people are local. 

22 Jun 03:27

wearewearables: Sony SmartEyeGlass means business By Sachin...



wearewearables:

Sony SmartEyeGlass means business

By Sachin Bahal

It looks like Microsoft HoloLens will have some competition. Sony is developing their own set of augmented reality smart glasses called SmartEyeGlass. However, Sony is taking a different approach and instead focusing on making their “smart glasses” for businesses instead of consumers (at least for now).

Sony says their SmartEyeGlass uses holographic waveguide technology which helps create super thing augmented reality lenses that offer high transparency and brightness. The smart glasses only weight about 77g and there’s a 3­megapixel CMOS image sensor as well as an accelerometer, gyro, electronic compass and a brightness sensor.

The lenses are about 3mm thin and have 85% transmittance, so then it’s easy to read items while wearing the glasses. There is also a separate controller which is where the battery, a speaker, microphone, NFC and touch sensor are kept.

Sony says there are two main use cases for their smart glasses when it comes to business. The first is barcode scanning, so for example, companies with big warehouses and a large inventory, the glasses can search for specific barcode, so you can find items easier. The other main use case is for remote guidance, so you can easily navigate without your phone.

The developer edition of Sony’s SmartEyeGlass is available now for $900 USD.

I have to take a look at these, and what Sony is up to.

22 Jun 03:22

Awesome AWS

files/images/amazon-aws-cloud-diagram.png


Donne Martin, GitHub, Jun 20, 2016


If you don't write software this will be almost completely useless to you, but you might want to browse anyways just to see the impressive list of languages and services supported by Amazon Web Services (AWS) software development kits (SDKs). In particular scroll down and check the section called 'Open Source Repos' and look at things like  Machine LearningMobile Analytics, and more. The lesson here is that behind the scenes there is a tremendous amount of activity directed toward creating what might be called a global operating system (GOS) or maybe a cloud operating system (COS) of connected engines, services and data repositories. Via O'Reilly. Image: Amazon, posted on  Ramana Lokanathan, setting up an Amazeon EC2 instance for application development.

[Link] [Comment]
22 Jun 03:12

Inner Vision for the Weekend of June 17, 2016

by Gregory Han
inner-vision-art-poketo-walls

The easiest way to hang an arrangement of framed art is by using printer paper and a thumbtack to create a template to align everything before hammer time. Photo: Gregory Han

Inner Vision is a weekly digest connecting the dots between great everyday objects and the cultures and techniques behind living well with them. Here, we move beyond recommendations and ratings, because just as important as knowing what to buy is knowing what’s possible using the products you’ve purchased.

If You’re App to Run: Our collective of the best running gear does a cracking job of recommending everything from headphones to socks to hydration systems, and even anti-chafing products to keep your stride in glide. But a lot of us also like to dash (or shuffle) with a running app for motivation and feedback. Lifehacker’s Vitals breaks down what distinguishes five of the top running apps from the rest of the pack.

I Shot the Serif: There was a time when I used to hoard fonts with Smeagol-like obsessiveness, collecting every iteration of both common and uncommon typefaces I could find. How happy I would have been back then if I had access to these 800+ open-source font families, previewable online, and sans any fee.

How to Double Filter Cold-Brew Coffee: The Sweethome has plenty to say about how to make iced coffee at home that tastes better and costs less than Starbucks using a cold-brew maker, complete with a video explaining the how and why. Beyond using a French press or a mason jar, one of the more unique techniques for preparing cold-brew coffee uses a double filtration method, resulting in a very clean, bright, and sweet cup to serve chilled.

The Geography of Food: The ingredients in a typical American meal traveled an average of 1,500 miles before meeting the fork and knife. Farm-to-table it is not. Those curious about learning where a favorite fruit, vegetable, legume, or grain originally came from can use this interactive map to explore the history and connections of agricultural biodiversity across the globe.

Four Sneakers in Four Minutes: The joy of a pristine new pair of white kicks is always soon followed by the inevitable first stain or scuff. The man to call in such a situation is Jason Markk, a revered sneaker technician known for his ability to pull sneakers back from the brink with careful attention to material and finish. With several specialty brushes in hand, he shows how to clean four different sneakers covered in four different materials, including challenging suede.

Whisking It All for Science: Since we’re on the topic of food, how about learning the scientific secret to beating perfectly foamed eggs? “Much to [kitchen chemist Harold McGee”s] surprise, there was a remarkable difference between using a copper or a glass vessel. Whipping the egg whites in copper took nearly twice as long, but the foam took on more structured forms that were difficult to over-whip, an ever-present threat when using a glass bowl.”

Prioritizing an Adequate Solution Over an Optimal Solution: 99U’s Jocelyn K. Glei builds upon two archetypes—the Satisficer vs. the Maximizer—to outline strategies designed to overcome overthinking and the indecisiveness that comes along with it. If you’re prone to spending an inordinate amount of time over every decision without ever feeling satisfied or sure about your eventual decision, these five tips could make using intuition feel more like a strategic measure instead of a woo-woo flip of the coin. (The Wirecutter and The Sweethome can help you with shopping decisions, but, we admit, not with every decision.)

You’re So Highest Maintenance: I’m inching toward purchasing a new car soon, which means I’ve been doing my homework comparing maintenance costs and reliability rates between makes and models. YourMechanic.com has put together a report about not only which cars break down the most, but which issues are common to each brand. Take a gander to see whether your car is more or less costly to maintain over the first 10 years of its life.

Sounds Tasty!: The percussive metallic glide of whisking eggs in a metal bowl. The bubbling burps and crackle of hot oil frying up something golden. The gentle burr-rrapp of macadamia nuts rattling inside the food processor. These are some of my favorite sounds in the kitchen while cooking. And now after watching numerous YouTube cooking videos I know I’m not alone in my affinity for prep-work-induced autonomous sensory meridian response.

Got an interesting story, link, resource, or how-to you think we should check out for consideration for our next issue of Inner Vision? Drop us a line with the subject “Inner Vision,” and we’ll take a look!

22 Jun 02:56

Apple Executive Explains Why iMessage Is Not Coming to Android

by Sagar Gandhi
Recent rumours have indicated that iMessages with all its swanky new features was coming to Android. However, to everyone’s disappointment, Apple did not announce iMessage for Android at WWDC. Continue reading →