feedparser 1.1.0 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Manifest.txt +40 -29
- data/README.md +32 -12
- data/Rakefile +3 -3
- data/lib/feedparser/builder/atom.rb +14 -1
- data/lib/feedparser/builder/json.rb +11 -9
- data/lib/feedparser/feed.rb +17 -1
- data/lib/feedparser/item.rb +23 -1
- data/lib/feedparser/parser.rb +7 -11
- data/lib/feedparser/version.rb +2 -2
- data/test/feeds/byparker.json +9 -2
- data/test/feeds/daringfireball.atom +1866 -0
- data/test/feeds/daringfireball.json +591 -0
- data/test/feeds/inessential.json +173 -0
- data/test/feeds/intertwingly.atom +1197 -0
- data/test/feeds/learnenough.atom +744 -0
- data/test/feeds/spec/json/example.json +36 -0
- data/test/feeds/spec/json/microblog.json +34 -0
- data/test/feeds/xkcd.atom +48 -0
- data/test/feeds/xkcd.rss2 +55 -0
- data/test/helper.rb +14 -2
- data/test/test_dates.rb +52 -0
- data/test/test_feeds.rb +27 -0
- data/test/test_json.rb +4 -0
- metadata +17 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b6333596837d069834ffd82fe303bc4d11eea956
|
4
|
+
data.tar.gz: 8d53dd07e144f4d0c87a1c02373df25826514579
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 119e6107807ae4c7781379d2e04e255d9906fafef5bbf44a57557a4bfc02fb64f647bce77e9cbad3e7546da5a852775db96ee11e4fb51be7936cf02b03d82463
|
7
|
+
data.tar.gz: fac5a2f23e61173b65b0d52711651b02b4d5d7585a52eed12416acc96256167468fa92b31b837888e1e1d09cec347ce1554be56c9078958711e2f246aaeec57f
|
data/Manifest.txt
CHANGED
@@ -1,29 +1,40 @@
|
|
1
|
-
HISTORY.md
|
2
|
-
Manifest.txt
|
3
|
-
README.md
|
4
|
-
Rakefile
|
5
|
-
lib/feedparser.rb
|
6
|
-
lib/feedparser/builder/atom.rb
|
7
|
-
lib/feedparser/builder/json.rb
|
8
|
-
lib/feedparser/builder/rss.rb
|
9
|
-
lib/feedparser/feed.rb
|
10
|
-
lib/feedparser/item.rb
|
11
|
-
lib/feedparser/parser.rb
|
12
|
-
lib/feedparser/version.rb
|
13
|
-
test/feeds/byparker.json
|
14
|
-
test/feeds/
|
15
|
-
test/feeds/
|
16
|
-
test/feeds/
|
17
|
-
test/feeds/
|
18
|
-
test/feeds/
|
19
|
-
test/feeds/
|
20
|
-
test/feeds/
|
21
|
-
test/feeds/
|
22
|
-
test/feeds/
|
23
|
-
test/feeds/
|
24
|
-
test/
|
25
|
-
test/
|
26
|
-
test/
|
27
|
-
test/
|
28
|
-
test/
|
29
|
-
test/
|
1
|
+
HISTORY.md
|
2
|
+
Manifest.txt
|
3
|
+
README.md
|
4
|
+
Rakefile
|
5
|
+
lib/feedparser.rb
|
6
|
+
lib/feedparser/builder/atom.rb
|
7
|
+
lib/feedparser/builder/json.rb
|
8
|
+
lib/feedparser/builder/rss.rb
|
9
|
+
lib/feedparser/feed.rb
|
10
|
+
lib/feedparser/item.rb
|
11
|
+
lib/feedparser/parser.rb
|
12
|
+
lib/feedparser/version.rb
|
13
|
+
test/feeds/byparker.json
|
14
|
+
test/feeds/daringfireball.atom
|
15
|
+
test/feeds/daringfireball.json
|
16
|
+
test/feeds/googlegroups.atom
|
17
|
+
test/feeds/googlegroups2.atom
|
18
|
+
test/feeds/headius.atom
|
19
|
+
test/feeds/inessential.json
|
20
|
+
test/feeds/intertwingly.atom
|
21
|
+
test/feeds/jsonfeed.json
|
22
|
+
test/feeds/lambdatheultimate.rss2
|
23
|
+
test/feeds/learnenough.atom
|
24
|
+
test/feeds/railstutorial.atom
|
25
|
+
test/feeds/rubyflow.rss2
|
26
|
+
test/feeds/rubymine.rss2
|
27
|
+
test/feeds/rubyonrails.atom
|
28
|
+
test/feeds/sitepoint.rss2
|
29
|
+
test/feeds/spec/json/example.json
|
30
|
+
test/feeds/spec/json/microblog.json
|
31
|
+
test/feeds/xkcd.atom
|
32
|
+
test/feeds/xkcd.rss2
|
33
|
+
test/helper.rb
|
34
|
+
test/test_atom.rb
|
35
|
+
test/test_atom_live.rb
|
36
|
+
test/test_dates.rb
|
37
|
+
test/test_feeds.rb
|
38
|
+
test/test_json.rb
|
39
|
+
test/test_rss.rb
|
40
|
+
test/test_rss_live.rb
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# feedparser
|
2
2
|
|
3
|
-
feedparser gem - web feed parser and normalizer (Atom, RSS 2.0, etc.)
|
3
|
+
feedparser gem - web feed parser and normalizer (Atom, RSS 2.0, JSON, etc.)
|
4
4
|
|
5
5
|
* home :: [github.com/feedparser/feedparser](https://github.com/feedparser/feedparser)
|
6
6
|
* bugs :: [github.com/feedparser/feedparser/issues](https://github.com/feedparser/feedparser/issues)
|
@@ -9,6 +9,11 @@ feedparser gem - web feed parser and normalizer (Atom, RSS 2.0, etc.)
|
|
9
9
|
* forum :: [groups.google.com/group/wwwmake](http://groups.google.com/group/wwwmake)
|
10
10
|
|
11
11
|
|
12
|
+
## What's News?
|
13
|
+
|
14
|
+
May/2017: Added support for reading feeds in the new [JSON Feed](https://jsonfeed.org) format in - surprise, surprise - JSON.
|
15
|
+
|
16
|
+
|
12
17
|
## Usage
|
13
18
|
|
14
19
|
### Structs
|
@@ -29,10 +34,10 @@ Note: The Feed parser will remove all html tags and attributes from the title (R
|
|
29
34
|
description (RSS 2.0) and subtitle (Atom) content and will unescape HTML entities e.g. `&` becomes & and so on - always
|
30
35
|
resulting in plain vanilla text.
|
31
36
|
|
32
|
-
| Feed Struct | RSS 2.0 | Notes
|
33
|
-
| ------------------ | ----------------- |
|
34
|
-
| `feed.title` | `title` | plain
|
35
|
-
| `feed.summary` | `description` | plain
|
37
|
+
| Feed Struct | RSS 2.0 | Notes | Atom | Notes | JSON | Notes |
|
38
|
+
| ------------------ | ----------------- | ----------- | ------------- | ----------- | --------------- | ----------- |
|
39
|
+
| `feed.title` | `title` | plain text | `title` | plain text | `title` | plain text |
|
40
|
+
| `feed.summary` | `description` | plain text | `subtitle`? | plain text | `description`? | plain text |
|
36
41
|
|
37
42
|
|
38
43
|
**Dates**
|
@@ -84,13 +89,18 @@ in a description element; however, best practice is using the content "module" f
|
|
84
89
|
If there's no content module present the feed parser will "clone" the description and use one version for `item.summary` and
|
85
90
|
the clone for `item.content`.
|
86
91
|
|
92
|
+
Note: In JSON Feed the title is not required (that is, is optional). The idea is to support "modern" micro blog postings (tweets, toots, etc.) that have no titles. The JSON Feed supports `content_html` and/or `content_text`. At least one version must be present.
|
93
|
+
|
94
|
+
<!-- todo: update JSON Feed comments - add support for content_text - now just uses content_html - why? why not??
|
95
|
+
-->
|
96
|
+
|
87
97
|
Note: The content element will assume html content.
|
88
98
|
|
89
|
-
| Feed Struct | RSS 2.0 | Notes
|
90
|
-
| ------------------ | ----------------- |
|
91
|
-
| `item.title` | `title` | plain
|
92
|
-
| `item.summary` | `description` | plain
|
93
|
-
| `item.content` | `content`? | html
|
99
|
+
| Feed Struct | RSS 2.0 | Notes | Atom | Notes | JSON | Notes |
|
100
|
+
| ------------------ | ----------------- | ----------- | ------------- | ----------- | ----------------- | ----------- |
|
101
|
+
| `item.title` | `title` | plain text | `title` | plain text | `title`? | plain text |
|
102
|
+
| `item.summary` | `description` | plain text | `summary`? | plain text | -tbd- | |
|
103
|
+
| `item.content` | `content`? | html | `content`? | html | `content_html (*)`| html |
|
94
104
|
|
95
105
|
|
96
106
|
**Dates**
|
@@ -126,9 +136,19 @@ end
|
|
126
136
|
require 'open-uri'
|
127
137
|
require 'feedparser'
|
128
138
|
|
129
|
-
|
139
|
+
txt = open( 'http://openfootball.github.io/atom.xml' ).read
|
140
|
+
|
141
|
+
feed = FeedParser::Parser.parse( txt )
|
142
|
+
pp feed
|
143
|
+
```
|
144
|
+
|
145
|
+
or reading a feed in the new [JSON Feed](https://jsonfeed.org) format in - surprise, surprise - JSON;
|
146
|
+
note: nothing changes :-)
|
147
|
+
|
148
|
+
```
|
149
|
+
txt = open( 'https://jsonfeed.org/feed.json' ).read
|
130
150
|
|
131
|
-
feed = FeedParser::Parser.parse(
|
151
|
+
feed = FeedParser::Parser.parse( txt )
|
132
152
|
pp feed
|
133
153
|
```
|
134
154
|
|
data/Rakefile
CHANGED
@@ -5,13 +5,13 @@ Hoe.spec 'feedparser' do
|
|
5
5
|
|
6
6
|
self.version = FeedParser::VERSION
|
7
7
|
|
8
|
-
self.summary = 'feedparser - web feed parser and normalizer (RSS 2.0, Atom, etc.)'
|
8
|
+
self.summary = 'feedparser - web feed parser and normalizer (RSS 2.0, Atom, JSON, etc.)'
|
9
9
|
self.description = summary
|
10
10
|
|
11
|
-
self.urls = ['https://github.com/feedreader/
|
11
|
+
self.urls = ['https://github.com/feedreader/feedparser']
|
12
12
|
|
13
13
|
self.author = 'Gerald Bauer'
|
14
|
-
self.email = '
|
14
|
+
self.email = 'wwwmake@googlegroups.com'
|
15
15
|
|
16
16
|
# switch extension to .markdown for gihub formatting
|
17
17
|
self.readme_file = 'README.md'
|
@@ -30,6 +30,19 @@ class AtomFeedBuilder
|
|
30
30
|
|
31
31
|
logger.debug " atom | feed.id.content >#{atom_feed.id.content}< : #{atom_feed.id.content.class.name}"
|
32
32
|
|
33
|
+
|
34
|
+
## try to find self link if present
|
35
|
+
## note: use links (plural to allow multiple links e.g. self,alternate,etc.)
|
36
|
+
atom_feed.links.each_with_index do |link,i|
|
37
|
+
logger.debug " atom | feed.link[#{i+1}] rel=>#{link.rel}< : #{link.rel.class.name} type=>#{link.type}< href=>#{link.href}<"
|
38
|
+
|
39
|
+
if link.rel == 'self'
|
40
|
+
feed.feed_url = link.href
|
41
|
+
break
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
|
33
46
|
feed.url = nil
|
34
47
|
|
35
48
|
## note: use links (plural to allow multiple links e.g. self,alternate,etc.)
|
@@ -103,7 +116,7 @@ class AtomFeedBuilder
|
|
103
116
|
## <link rel='replies' type='text/html' href='http://blog.headius.com/2014/05/jrubyconfeu-2014.html#comment-form' title='0 Comments'/>
|
104
117
|
## <link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4704664917418794835/posts/default/3430080308857860963'/>
|
105
118
|
## <link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4704664917418794835/posts/default/3430080308857860963'/>
|
106
|
-
## <link rel='alternate' type='text/html' href='http://blog.headius.com/2014/05/jrubyconfeu-2014.html'
|
119
|
+
## <link rel='alternate' type='text/html' href='http://blog.headius.com/2014/05/jrubyconfeu-2014.html'
|
107
120
|
|
108
121
|
item.url = nil
|
109
122
|
|
@@ -26,9 +26,12 @@ class JsonFeedBuilder
|
|
26
26
|
feed = Feed.new
|
27
27
|
feed.format = 'json'
|
28
28
|
|
29
|
-
feed.title
|
30
|
-
feed.url
|
31
|
-
feed.
|
29
|
+
feed.title = h['title']
|
30
|
+
feed.url = h['home_page_url']
|
31
|
+
feed.feed_url = h['feed_url']
|
32
|
+
feed.summary = h['description']
|
33
|
+
|
34
|
+
|
32
35
|
|
33
36
|
items = []
|
34
37
|
h['items'].each do |hash_item|
|
@@ -51,19 +54,18 @@ class JsonFeedBuilder
|
|
51
54
|
## convert date if present (from string to date type)
|
52
55
|
date_published_str = h['date_published']
|
53
56
|
if date_published_str
|
54
|
-
item.published = DateTime.
|
57
|
+
item.published = DateTime.iso8601( date_published_str )
|
55
58
|
end
|
56
59
|
|
57
60
|
date_modified_str = h['date_modified']
|
58
61
|
if date_modified_str
|
59
|
-
item.updated = DateTime.
|
62
|
+
item.updated = DateTime.iso8601( date_modified_str )
|
60
63
|
end
|
61
64
|
|
62
65
|
|
63
|
-
item.
|
64
|
-
|
65
|
-
|
66
|
-
## use item.summary for plain text version - why? why not??
|
66
|
+
item.content_html = h['content_html']
|
67
|
+
item.content_text = h['content_text']
|
68
|
+
item.summary = h['summary']
|
67
69
|
|
68
70
|
item
|
69
71
|
end # method build_feed_item
|
data/lib/feedparser/feed.rb
CHANGED
@@ -6,13 +6,29 @@ class Feed
|
|
6
6
|
|
7
7
|
attr_accessor :format # e.g. atom|rss 2.0|etc.
|
8
8
|
attr_accessor :title
|
9
|
-
attr_accessor :url
|
9
|
+
attr_accessor :url ## todo - add alias site_url/home_page_url/page_url - why? why not??
|
10
|
+
attr_accessor :feed_url ## todo - add alias self_url - why? why not??
|
11
|
+
|
10
12
|
|
11
13
|
attr_accessor :items
|
12
14
|
|
15
|
+
|
13
16
|
def summary?() @summary.nil? == false; end
|
14
17
|
attr_accessor :summary # e.g. description (rss)|subtitle (atom)
|
15
18
|
|
19
|
+
##
|
20
|
+
## todo/check/fix:
|
21
|
+
## use a extra field for atom subtitle
|
22
|
+
## - subtitle not the same as summary - why? why not?
|
23
|
+
## - assume summary == description == abstract but
|
24
|
+
## keep subtitle separate e.g. assume subtitle is just a (simple) single line
|
25
|
+
##
|
26
|
+
## for now alias summary to subtitle
|
27
|
+
alias :subtitle :summary
|
28
|
+
alias :subtitle= :summary=
|
29
|
+
|
30
|
+
|
31
|
+
|
16
32
|
def updated?() @updated.nil? == false; end
|
17
33
|
attr_accessor :updated # e.g. lastBuildDate (rss)|updated (atom)
|
18
34
|
|
data/lib/feedparser/item.rb
CHANGED
@@ -7,9 +7,25 @@ class Item
|
|
7
7
|
attr_accessor :title
|
8
8
|
attr_accessor :url
|
9
9
|
|
10
|
+
|
11
|
+
## note: only content/content_html should use html;
|
12
|
+
## all others (e.g. title/summary/content_text) shoud be plain (vanilla) text
|
13
|
+
|
14
|
+
|
10
15
|
def content?() @content.nil? == false; end
|
11
16
|
attr_accessor :content
|
12
|
-
|
17
|
+
|
18
|
+
## note: content_html is an alias for content
|
19
|
+
## will hold type html/xhtml/html-escaped - check if always converted to string by parser ??
|
20
|
+
alias :content_html :content
|
21
|
+
alias :content_html= :content=
|
22
|
+
alias :content_html? :content?
|
23
|
+
|
24
|
+
|
25
|
+
def content_text?() @content_text.nil? == false; end
|
26
|
+
attr_accessor :content_text
|
27
|
+
|
28
|
+
|
13
29
|
|
14
30
|
def summary?() @summary.nil? == false; end
|
15
31
|
attr_accessor :summary
|
@@ -21,8 +37,14 @@ class Item
|
|
21
37
|
def published?() @published.nil? == false; end
|
22
38
|
attr_accessor :published # note: published is basically an alias for created
|
23
39
|
|
40
|
+
|
24
41
|
attr_accessor :guid # todo: rename to id (use alias) ??
|
25
42
|
|
43
|
+
## note: guid is an alias for id; todo/fix: reverse - make guid an alias of id
|
44
|
+
alias :id :guid
|
45
|
+
alias :id= :guid=
|
46
|
+
|
47
|
+
|
26
48
|
## todo: add author/authors
|
27
49
|
## todo: add category/categories
|
28
50
|
|
data/lib/feedparser/parser.rb
CHANGED
@@ -7,25 +7,21 @@ class Parser
|
|
7
7
|
|
8
8
|
include LogUtils::Logging
|
9
9
|
|
10
|
-
###
|
11
|
-
## todo/fix:
|
12
|
-
# change xml to txt (or text) - now supports json too!!!
|
13
|
-
|
14
10
|
|
15
11
|
### convenience class/factory method
|
16
|
-
def self.parse(
|
17
|
-
self.new(
|
12
|
+
def self.parse( text, opts={} )
|
13
|
+
self.new( text ).parse
|
18
14
|
end
|
19
15
|
|
20
16
|
### Note: lets keep/use same API as RSS::Parser for now
|
21
|
-
def initialize(
|
22
|
-
@
|
17
|
+
def initialize( text )
|
18
|
+
@text = text
|
23
19
|
end
|
24
20
|
|
25
21
|
|
26
22
|
|
27
23
|
def parse
|
28
|
-
head = @
|
24
|
+
head = @text[0..100].strip # note: remove leading spaces if present
|
29
25
|
|
30
26
|
jsonfeed_version_regex = %r{"version":\s*"https://jsonfeed.org/version/1"}
|
31
27
|
|
@@ -49,7 +45,7 @@ class Parser
|
|
49
45
|
logger.debug "using stdlib json/#{JSON::VERSION}"
|
50
46
|
|
51
47
|
logger.debug "Parsing feed in json..."
|
52
|
-
feed_hash = JSON.parse( @
|
48
|
+
feed_hash = JSON.parse( @text )
|
53
49
|
|
54
50
|
feed = JsonFeedBuilder.build( feed_hash )
|
55
51
|
|
@@ -61,7 +57,7 @@ class Parser
|
|
61
57
|
def parse_xml
|
62
58
|
logger.debug "using stdlib rss/#{RSS::VERSION}"
|
63
59
|
|
64
|
-
parser = RSS::Parser.new( @
|
60
|
+
parser = RSS::Parser.new( @text )
|
65
61
|
|
66
62
|
parser.do_validate = false
|
67
63
|
parser.ignore_unknown_element = true
|
data/lib/feedparser/version.rb
CHANGED
@@ -4,7 +4,7 @@ module FeedParser
|
|
4
4
|
|
5
5
|
MAJOR = 1
|
6
6
|
MINOR = 1
|
7
|
-
PATCH =
|
7
|
+
PATCH = 1
|
8
8
|
VERSION = [MAJOR,MINOR,PATCH].join('.')
|
9
9
|
|
10
10
|
def self.version
|
@@ -13,7 +13,7 @@ module FeedParser
|
|
13
13
|
|
14
14
|
|
15
15
|
def self.banner
|
16
|
-
"feedparser/#{VERSION} (with rss/#{RSS::VERSION}) on Ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
|
16
|
+
"feedparser/#{VERSION} (with rss/#{RSS::VERSION} n json/#{JSON::VERSION}) on Ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
|
17
17
|
end
|
18
18
|
|
19
19
|
def self.root
|
data/test/feeds/byparker.json
CHANGED
@@ -628,9 +628,16 @@
|
|
628
628
|
feed.format: json
|
629
629
|
feed.title: By Parker
|
630
630
|
feed.url: https://byparker.com/
|
631
|
+
feed.feed_url: https://byparker.com/feed.json
|
632
|
+
|
633
|
+
|
634
|
+
feed.items.size: >>> 36
|
635
|
+
|
636
|
+
feed.items[0].url: https://byparker.com/blog/2017/add-json-feed-to-your-jekyll-site/
|
637
|
+
feed.items[0].guid: https://byparker.com/blog/2017/add-json-feed-to-your-jekyll-site/
|
638
|
+
feed.items[0].published: >>> DateTime.new( 2017, 5, 18, 21, 8, 49 )
|
639
|
+
feed.items[0].updated: >>> DateTime.new( 2017, 5, 18, 21, 8, 49 )
|
631
640
|
|
632
|
-
feed.items[0].url: https://byparker.com/blog/2017/add-json-feed-to-your-jekyll-site/
|
633
|
-
feed.items[0].guid: https://byparker.com/blog/2017/add-json-feed-to-your-jekyll-site/
|
634
641
|
|
635
642
|
feed.items[1].url: https://byparker.com/blog/2017/the-internet-is-unstable/
|
636
643
|
feed.items[1].guid: https://byparker.com/blog/2017/the-internet-is-unstable/
|
@@ -0,0 +1,1866 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<feed xmlns="http://www.w3.org/2005/Atom">
|
3
|
+
<title>Daring Fireball</title>
|
4
|
+
<subtitle>By John Gruber</subtitle>
|
5
|
+
<link rel="alternate" type="text/html" href="https://daringfireball.net/" />
|
6
|
+
<link rel="self" type="application/atom+xml" href="https://daringfireball.net/feeds/main" />
|
7
|
+
<id>https://daringfireball.net/feeds/main</id>
|
8
|
+
|
9
|
+
|
10
|
+
<updated>2017-05-23T19:36:44Z</updated><rights>Copyright © 2017, John Gruber</rights><entry>
|
11
|
+
<title>Feedbin, Too</title>
|
12
|
+
<link rel="alternate" type="text/html" href="https://feedbin.com/blog/2017/05/22/feedbin-supports-json-feed/" />
|
13
|
+
<link rel="shorturl" type="text/html" href="http://df4.us/q10" />
|
14
|
+
<link rel="related" type="text/html" href="https://daringfireball.net/linked/2017/05/23/feedbin-too" />
|
15
|
+
<id>tag:daringfireball.net,2017:/linked//6.33732</id>
|
16
|
+
<published>2017-05-23T18:50:36Z</published>
|
17
|
+
<updated>2017-05-23T19:03:33Z</updated>
|
18
|
+
<author>
|
19
|
+
<name>John Gruber</name>
|
20
|
+
<uri>http://daringfireball.net/</uri>
|
21
|
+
</author>
|
22
|
+
<content type="html" xml:base="https://daringfireball.net/linked/" xml:lang="en"><![CDATA[
|
23
|
+
<p>Ben Ubois, announcing support for JSON Feed in Feedbin:</p>
|
24
|
+
|
25
|
+
<blockquote>
|
26
|
+
<p>One of the criticisms I’ve seen of JSON Feed is that there’s no
|
27
|
+
incentive for feed readers to support JSON Feed. This is not true.
|
28
|
+
One of the largest-by-volume support questions I get is along the
|
29
|
+
lines of “Why does this random feed not work?” And, 95% of the
|
30
|
+
time, it’s because the feed is broken in some subtle way. JSON
|
31
|
+
Feed will help alleviate these problems, because it’s easier to
|
32
|
+
get right.</p>
|
33
|
+
|
34
|
+
<p>I also want JSON Feed to succeed because I remember how daunting
|
35
|
+
RSS/Atom parsing were when building Feedbin. If JSON Feed was the
|
36
|
+
dominant format back then, it would have been a non-issue.</p>
|
37
|
+
</blockquote>
|
38
|
+
|
39
|
+
<p>Easier to generate <em>and</em> easier to parse — that’s the whole point of JSON Feed in a nut.</p>
|
40
|
+
|
41
|
+
<div>
|
42
|
+
<a title="Permanent link to ‘Feedbin, Too’" href="https://daringfireball.net/linked/2017/05/23/feedbin-too"> ★ </a>
|
43
|
+
</div>
|
44
|
+
|
45
|
+
]]></content>
|
46
|
+
</entry><entry>
|
47
|
+
<title>NewsBlur Now Supports JSON Feed</title>
|
48
|
+
<link rel="alternate" type="text/html" href="http://blog.newsblur.com/post/160982162270/newsblur-now-supports-the-new-json-feed-spec" />
|
49
|
+
<link rel="shorturl" type="text/html" href="http://df4.us/q0z" />
|
50
|
+
<link rel="related" type="text/html" href="https://daringfireball.net/linked/2017/05/23/newsblur-json-feed" />
|
51
|
+
<id>tag:daringfireball.net,2017:/linked//6.33731</id>
|
52
|
+
<published>2017-05-23T18:44:42Z</published>
|
53
|
+
<updated>2017-05-23T18:44:43Z</updated>
|
54
|
+
<author>
|
55
|
+
<name>John Gruber</name>
|
56
|
+
<uri>http://daringfireball.net/</uri>
|
57
|
+
</author>
|
58
|
+
<content type="html" xml:base="https://daringfireball.net/linked/" xml:lang="en"><![CDATA[
|
59
|
+
<p>Samuel Clay, founder of NewsBlur:</p>
|
60
|
+
|
61
|
+
<blockquote>
|
62
|
+
<p>Starting today, NewsBlur now officially supports the new JSON Feed
|
63
|
+
spec. And there’s nothing extra you have to do. This means if a
|
64
|
+
website syndicates their stories with the easy-to-write and
|
65
|
+
easy-to-read JSON format, you can read it on NewsBlur. It should
|
66
|
+
make no difference to you, since you’re reading the end product.
|
67
|
+
But to website developers everywhere, supporting JSON Feeds is so
|
68
|
+
much easier than supporting XML-based RSS/Atom.</p>
|
69
|
+
</blockquote>
|
70
|
+
|
71
|
+
<p>According to Clay, there are 15,000 NewsBlur users who subscribe to Daring Fireball. It’s very cool to see a feed reader that popular adopt JSON Feed so quickly.</p>
|
72
|
+
|
73
|
+
<p>The DF RSS feed isn’t going anywhere, so if you’re already subscribed to it, there’s no need to switch. But JSON Feed’s spec makes it possible for me to specify both a <code>url</code> that points to the post on Daring Fireball (i.e. the permalink) and an <code>external_url</code> that points to the article I’m linking to. The way I’ve dealt with that in the RSS (technically Atom, but that’s sort of beside the point) is a bit of a hack that’s caused problems with numerous feed readers over the years.</p>
|
74
|
+
|
75
|
+
<div>
|
76
|
+
<a title="Permanent link to ‘NewsBlur Now Supports JSON Feed’" href="https://daringfireball.net/linked/2017/05/23/newsblur-json-feed"> ★ </a>
|
77
|
+
</div>
|
78
|
+
|
79
|
+
]]></content>
|
80
|
+
</entry><entry>
|
81
|
+
<title>Roger Moore’s Recipe for a Perfect Martini</title>
|
82
|
+
<link rel="alternate" type="text/html" href="https://www.theguardian.com/lifeandstyle/2015/mar/17/how-make-dry-martini-roger-moore-way-james-bond" />
|
83
|
+
<link rel="shorturl" type="text/html" href="http://df4.us/q0y" />
|
84
|
+
<link rel="related" type="text/html" href="https://daringfireball.net/linked/2017/05/23/moore-perfect" />
|
85
|
+
<id>tag:daringfireball.net,2017:/linked//6.33730</id>
|
86
|
+
<published>2017-05-23T18:24:49Z</published>
|
87
|
+
<updated>2017-05-23T18:24:50Z</updated>
|
88
|
+
<author>
|
89
|
+
<name>John Gruber</name>
|
90
|
+
<uri>http://daringfireball.net/</uri>
|
91
|
+
</author>
|
92
|
+
<content type="html" xml:base="https://daringfireball.net/linked/" xml:lang="en"><![CDATA[
|
93
|
+
<p>Worth <a href="https://daringfireball.net/linked/2015/11/01/moore-martini">a re-link</a> today: Roger Moore, two years ago, writing for The Guardian:</p>
|
94
|
+
|
95
|
+
<blockquote>
|
96
|
+
<p>The sad fact is that I know exactly how to make a dry martini but I
|
97
|
+
can’t drink them because, two years ago, I discovered I was
|
98
|
+
diabetic. I prefer one with gin, but James Bond liked a vodka
|
99
|
+
martini, “shaken not stirred” — which I never said, by the way.
|
100
|
+
That was Sean Connery, remember him?</p>
|
101
|
+
|
102
|
+
<p>The worst martini I’ve ever had was in a club in New Zealand,
|
103
|
+
where the barman poured juice from a bottle of olives into the
|
104
|
+
vodka. That’s called a dirty martini and it is a dirty, filthy,
|
105
|
+
rotten martini, and should not be drunk by anybody except
|
106
|
+
condemned prisoners.</p>
|
107
|
+
|
108
|
+
<p>My dry martinis taste amazing and the day they tell me I’ve got 24
|
109
|
+
hours to live I am going to have six. Here’s how I make them.</p>
|
110
|
+
</blockquote>
|
111
|
+
|
112
|
+
<p>I hope he had all six yesterday.</p>
|
113
|
+
|
114
|
+
<div>
|
115
|
+
<a title="Permanent link to ‘Roger Moore’s Recipe for a Perfect Martini’" href="https://daringfireball.net/linked/2017/05/23/moore-perfect"> ★ </a>
|
116
|
+
</div>
|
117
|
+
|
118
|
+
]]></content>
|
119
|
+
</entry><entry>
|
120
|
+
|
121
|
+
<link rel="alternate" type="text/html" href="https://daringfireball.net/2017/05/moore_spy_who_loved_me" />
|
122
|
+
<link rel="shorturl" href="http://df4.us/q0x" />
|
123
|
+
<id>tag:daringfireball.net,2017://1.33729</id>
|
124
|
+
<published>2017-05-23T18:11:54Z</published>
|
125
|
+
<updated>2017-05-23T18:22:01Z</updated>
|
126
|
+
<author>
|
127
|
+
<name>John Gruber</name>
|
128
|
+
<uri>http://daringfireball.net/</uri>
|
129
|
+
</author>
|
130
|
+
<summary type="text">In memory of Roger Moore, a brief look at his best Bond film.</summary>
|
131
|
+
<content type="html" xml:base="https://daringfireball.net/" xml:lang="en"><![CDATA[
|
132
|
+
<p>Chris Murphy, <a href="http://www.cnn.com/2013/02/25/sport/alpine-bond-skiing-iconic/">writing for CNN back in 2013</a> on the “greatest James Bond scene of all time”:</p>
|
133
|
+
|
134
|
+
<blockquote>
|
135
|
+
<p>Despite this wealth of choice, a series of Bond experts, and one
|
136
|
+
of the film’s legendary producers, are in no doubt as to which
|
137
|
+
scene should be anointed the best ever.</p>
|
138
|
+
|
139
|
+
<p>And given the recurring role that skiing has played throughout the
|
140
|
+
life of Bond, it should comes as no surprise our panel’s chosen
|
141
|
+
encounter occurs on the slopes. “I would argue the most iconic
|
142
|
+
sequence is in ‘The Spy Who Loved Me’, when Bond shot straight off
|
143
|
+
the edge of a cliff at Baffin Island in Canada,” Ajay Chowdhury,
|
144
|
+
editor of the James Bond International Fan Club, told CNN.</p>
|
145
|
+
|
146
|
+
<p>“We saw him fall and fall, and when the Union Jack parachute
|
147
|
+
opened up and the theme tune kicked in, the world cheered.</p>
|
148
|
+
|
149
|
+
<p>“That was Britain’s Queen Elizabeth’s Jubilee Year in 1977 and I
|
150
|
+
think to this day it was (famous Bond producer) Albert ‘Cubby’
|
151
|
+
Broccoli’s favorite ever scene in a Bond movie.</p>
|
152
|
+
|
153
|
+
<p>“When everything cleared it was him, on his own against the world.
|
154
|
+
You play that sequence around the world and it is James Bond. And
|
155
|
+
he did it on skis.”</p>
|
156
|
+
</blockquote>
|
157
|
+
|
158
|
+
<p><a href="https://www.youtube.com/watch?v=_kyQauA2udc">That opening scene in <em>The Spy Who Loved Me</em></a> is also the one <a href="https://daringfireball.net/2015/04/watch_apple_watch">where Bond is wearing a digital Seiko watch</a> that can receive secure text messages from MI6 — at the time, sheer fantasy; today, a feature many of you reading this now have on your own watch. (Albeit without the ticker tape.)</p>
|
159
|
+
|
160
|
+
<p>I don’t know if it’s the single best Bond <em>scene</em> of all time, but it’s up there, and it’s almost certainly the best Bond <em>stunt</em> of all time — stuntman <a href="https://en.wikipedia.org/wiki/Rick_Sylvester">Rick Sylvester</a> actually skied off that cliff and parachuted to safety. I just love how the fall takes place in silence.</p>
|
161
|
+
|
162
|
+
<p>Without hesitation I would put <em>The Spy Who Loved Me</em> at the top of my list of Roger Moore’s Bond films. It has everything: the aforementioned great opening, an iconic car (the submarine-convertible white Lotus Esprit<sup id="fnr1-2017-05-23"><a href="#fn1-2017-05-23">1</a></sup>), a great villian (Jaws), and a perfect theme song (Carly Simon’s “Nobody Does It Better”). Bernard Lee was still in the role as M. And at the center of it all, Roger Moore at his cool, suave, and assured best.</p>
|
163
|
+
|
164
|
+
<p>Moore was quite self-aware of what he brought to the role. His take, <a href="http://www.npr.org/2014/11/15/364077265/roger-moore-the-man-with-the-golden-life">in a 2014 interview with NPR</a>, is exactly right:</p>
|
165
|
+
|
166
|
+
<blockquote>
|
167
|
+
<p>I look like a comedic lover, and Sean [Connery] in particular, and
|
168
|
+
Daniel Craig now, they are killers. They look like killers. I
|
169
|
+
wouldn’t like to meet Daniel Craig on a dark night if I’d said
|
170
|
+
anything bad about him.</p>
|
171
|
+
</blockquote>
|
172
|
+
|
173
|
+
<p>Moore’s Bond had fun doing his job.</p>
|
174
|
+
|
175
|
+
<div class="footnotes">
|
176
|
+
<hr />
|
177
|
+
<ol>
|
178
|
+
<li id="fn1-2017-05-23">
|
179
|
+
<p><a href="https://www.theguardian.com/technology/2013/oct/18/tesla-elon-musk-james-bond-lotus-submarine-car">Now owned by Elon Musk</a>. <a href="#fnr1-2017-05-23" class="footnoteBackLink" title="Jump back to footnote 1 in the text.">↩︎</a></p>
|
180
|
+
</li>
|
181
|
+
</ol>
|
182
|
+
</div>
|
183
|
+
|
184
|
+
|
185
|
+
|
186
|
+
]]></content>
|
187
|
+
<title>★ ‘The Spy Who Loved Me’</title></entry><entry>
|
188
|
+
<title>Roger Moore Dies at 89</title>
|
189
|
+
<link rel="alternate" type="text/html" href="https://twitter.com/sirrogermoore/status/867005447018086400" />
|
190
|
+
<link rel="shorturl" type="text/html" href="http://df4.us/q0v" />
|
191
|
+
<link rel="related" type="text/html" href="https://daringfireball.net/linked/2017/05/23/moore" />
|
192
|
+
<id>tag:daringfireball.net,2017:/linked//6.33727</id>
|
193
|
+
<published>2017-05-23T17:28:44Z</published>
|
194
|
+
<updated>2017-05-23T19:36:44Z</updated>
|
195
|
+
<author>
|
196
|
+
<name>John Gruber</name>
|
197
|
+
<uri>http://daringfireball.net/</uri>
|
198
|
+
</author>
|
199
|
+
<content type="html" xml:base="https://daringfireball.net/linked/" xml:lang="en"><![CDATA[
|
200
|
+
<p>A terrific and much-loved actor, but also by all accounts a good man.</p>
|
201
|
+
|
202
|
+
<p>“Who’s your favorite James Bond?” is a fun game to play, because there’s no wrong answer. I have at least two friends who swear their answer is Lazenby. But one thing I would argue is undeniable about Moore’s run as Bond is that he was the <em>perfect</em> Bond for the 70s. He didn’t just keep the franchise going, he helped adapt it to the times. Sean Connery made Bond a sensation. Roger Moore turned it into a cinematic and pop-cultural institution.</p>
|
203
|
+
|
204
|
+
<div>
|
205
|
+
<a title="Permanent link to ‘Roger Moore Dies at 89’" href="https://daringfireball.net/linked/2017/05/23/moore"> ★ </a>
|
206
|
+
</div>
|
207
|
+
|
208
|
+
]]></content>
|
209
|
+
</entry><entry>
|
210
|
+
<title>Spotlight Performance Problems on iOS</title>
|
211
|
+
<link rel="alternate" type="text/html" href="https://pxlnv.com/linklog/slack-indexing-spotlight/" />
|
212
|
+
<link rel="shorturl" type="text/html" href="http://df4.us/q0t" />
|
213
|
+
<link rel="related" type="text/html" href="https://daringfireball.net/linked/2017/05/22/heer-slack-spotlight" />
|
214
|
+
<id>tag:daringfireball.net,2017:/linked//6.33725</id>
|
215
|
+
<published>2017-05-22T19:57:15Z</published>
|
216
|
+
<updated>2017-05-23T00:53:33Z</updated>
|
217
|
+
<author>
|
218
|
+
<name>John Gruber</name>
|
219
|
+
<uri>http://daringfireball.net/</uri>
|
220
|
+
</author>
|
221
|
+
<content type="html" xml:base="https://daringfireball.net/linked/" xml:lang="en"><![CDATA[
|
222
|
+
<p>Nick Heer:</p>
|
223
|
+
|
224
|
+
<blockquote>
|
225
|
+
<p>I’ve generally had pretty good luck with Spotlight on iOS, but
|
226
|
+
I’ve long noticed that results are delayed or nonexistent after
|
227
|
+
not using it for a little while, particularly if I haven’t
|
228
|
+
rebooted my phone recently. I thought I was losing my head a
|
229
|
+
little bit, until I found a tip on Twitter from Anand Iyer :</p>
|
230
|
+
|
231
|
+
<p>Settings > General > Spotlight Search > toggle Slack off</p>
|
232
|
+
</blockquote>
|
233
|
+
|
234
|
+
<p>A week or so ago I ran into this, where Spotlight was running so slowly on my iPhone that it was unusable. Restarting my phone fixed the problem, but I’ll bet it was this Slack problem.</p>
|
235
|
+
|
236
|
+
<p><strong>Update:</strong> Sounds like there might widespread problems with Spotlight indexing on iOS 10, because a bunch of readers have written to say they have the same problem but don’t even have Slack installed.</p>
|
237
|
+
|
238
|
+
<p><strong>Update 2:</strong> Several readers are saying this was a bug in iOS 10.3.1 but has been fixed in last week’s 10.3.2 update.</p>
|
239
|
+
|
240
|
+
<div>
|
241
|
+
<a title="Permanent link to ‘Spotlight Performance Problems on iOS’" href="https://daringfireball.net/linked/2017/05/22/heer-slack-spotlight"> ★ </a>
|
242
|
+
</div>
|
243
|
+
|
244
|
+
]]></content>
|
245
|
+
</entry><entry>
|
246
|
+
<title>How Anker Is Beating Apple and Samsung at Their Own Accessory Game</title>
|
247
|
+
<link rel="alternate" type="text/html" href="https://www.theverge.com/2017/5/22/15673712/anker-battery-charger-amazon-empire-steven-yang-interview" />
|
248
|
+
<link rel="shorturl" type="text/html" href="http://df4.us/q0s" />
|
249
|
+
<link rel="related" type="text/html" href="https://daringfireball.net/linked/2017/05/22/anker" />
|
250
|
+
<id>tag:daringfireball.net,2017:/linked//6.33724</id>
|
251
|
+
<published>2017-05-22T19:45:20Z</published>
|
252
|
+
<updated>2017-05-22T21:09:13Z</updated>
|
253
|
+
<author>
|
254
|
+
<name>John Gruber</name>
|
255
|
+
<uri>http://daringfireball.net/</uri>
|
256
|
+
</author>
|
257
|
+
<content type="html" xml:base="https://daringfireball.net/linked/" xml:lang="en"><![CDATA[
|
258
|
+
<p>Nice profile of Anker by Nick Statt for The Verge:</p>
|
259
|
+
|
260
|
+
<blockquote>
|
261
|
+
<p>So in airports, the back of cabs, and on city streets we’re
|
262
|
+
plugging into lithium-ion slabs in our pockets and bags to stay
|
263
|
+
connected. The market for portable battery packs generated $360
|
264
|
+
million in the 12 months ending in March, 2017 in the US alone.
|
265
|
+
The brands behind these packs are largely anonymous — Kmashi,
|
266
|
+
Jackery, and iMuto — and they often stay that way.</p>
|
267
|
+
|
268
|
+
<p>Except Anker. The steady rise of the company’s profile is proof
|
269
|
+
that it’s possible to meet one very specific consumer need and
|
270
|
+
ride that wave as it continues to ripple out to other markets. A
|
271
|
+
majority of Anker’s sales come from cables and wall chargers, and
|
272
|
+
it’s now moving into the smart home and auto market — anywhere a
|
273
|
+
plug and a cable can solve a problem.</p>
|
274
|
+
</blockquote>
|
275
|
+
|
276
|
+
<p>It’s always satisfying to see a company thrive by focusing on making great products.</p>
|
277
|
+
|
278
|
+
<div>
|
279
|
+
<a title="Permanent link to ‘How Anker Is Beating Apple and Samsung at Their Own Accessory Game’" href="https://daringfireball.net/linked/2017/05/22/anker"> ★ </a>
|
280
|
+
</div>
|
281
|
+
|
282
|
+
]]></content>
|
283
|
+
</entry><entry>
|
284
|
+
<title>‘On Margins’</title>
|
285
|
+
<link rel="alternate" type="text/html" href="https://craigmod.com/onmargins/" />
|
286
|
+
<link rel="shorturl" type="text/html" href="http://df4.us/q0r" />
|
287
|
+
<link rel="related" type="text/html" href="https://daringfireball.net/linked/2017/05/22/on-margins" />
|
288
|
+
<id>tag:daringfireball.net,2017:/linked//6.33723</id>
|
289
|
+
<published>2017-05-22T19:02:20Z</published>
|
290
|
+
<updated>2017-05-22T19:02:22Z</updated>
|
291
|
+
<author>
|
292
|
+
<name>John Gruber</name>
|
293
|
+
<uri>http://daringfireball.net/</uri>
|
294
|
+
</author>
|
295
|
+
<content type="html" xml:base="https://daringfireball.net/linked/" xml:lang="en"><![CDATA[
|
296
|
+
<p>New podcast from the inimitable Craig Mod about the art of making books. <a href="https://craigmod.com/onmargins/001/">The first episode is an interview with Jan Chipchase</a>:</p>
|
297
|
+
|
298
|
+
<blockquote>
|
299
|
+
<p>Researcher and author Jan Chipchase has a new book — “The Field
|
300
|
+
Study Handbook.” We discuss how he came to produce this 500+ page
|
301
|
+
magnum opus — a distillation of his life’s work — and why he is
|
302
|
+
self publishing.</p>
|
303
|
+
</blockquote>
|
304
|
+
|
305
|
+
<div>
|
306
|
+
<a title="Permanent link to ‘‘On Margins’’" href="https://daringfireball.net/linked/2017/05/22/on-margins"> ★ </a>
|
307
|
+
</div>
|
308
|
+
|
309
|
+
]]></content>
|
310
|
+
</entry><entry>
|
311
|
+
<title>Boring Google</title>
|
312
|
+
<link rel="alternate" type="text/html" href="https://stratechery.com/2017/boring-google/" />
|
313
|
+
<link rel="shorturl" type="text/html" href="http://df4.us/q0q" />
|
314
|
+
<link rel="related" type="text/html" href="https://daringfireball.net/linked/2017/05/22/thompson-google-io" />
|
315
|
+
<id>tag:daringfireball.net,2017:/linked//6.33722</id>
|
316
|
+
<published>2017-05-22T18:45:37Z</published>
|
317
|
+
<updated>2017-05-22T18:45:39Z</updated>
|
318
|
+
<author>
|
319
|
+
<name>John Gruber</name>
|
320
|
+
<uri>http://daringfireball.net/</uri>
|
321
|
+
</author>
|
322
|
+
<content type="html" xml:base="https://daringfireball.net/linked/" xml:lang="en"><![CDATA[
|
323
|
+
<p>Ben Thompson, in praise of Google’s “boring” I/O keynote:</p>
|
324
|
+
|
325
|
+
<blockquote>
|
326
|
+
<p>Google Assistant has a long ways to go, but there is a clear
|
327
|
+
picture of what success will look like: Google Photos. Launched
|
328
|
+
only two years ago, Pichai bragged that Photos now has over 500
|
329
|
+
million active users who upload 1.2 billion photos a day. This is
|
330
|
+
a spectacular number for one very simple reason: Google Photos is
|
331
|
+
<em>not</em> the default photo app for Android or iOS. Rather, Google has
|
332
|
+
earned all of those photos simply by being better than the
|
333
|
+
defaults, and the basis of that superiority is Google’s machine
|
334
|
+
learning.</p>
|
335
|
+
|
336
|
+
<p>Moreover, much like search, Photos gets better the more data it
|
337
|
+
gets, creating a virtuous cycle: more photos means more data which
|
338
|
+
means a better experience which means more users which means more
|
339
|
+
photos. It is already hard to see other photo applications
|
340
|
+
catching up.</p>
|
341
|
+
</blockquote>
|
342
|
+
|
343
|
+
<p>Google Photos is Google at its best. Their visual recognition is clearly the best in the world right now, and Thompson makes a good point that the “virtuous circle” makes it difficult for anyone to catch up.</p>
|
344
|
+
|
345
|
+
<p>In addition to being a great product, technically, Google Photos also launched with <a href="http://daringfireball.net/linked/2016/08/08/google-photos-sick-burn">a terrific ad campaign</a>.</p>
|
346
|
+
|
347
|
+
<div>
|
348
|
+
<a title="Permanent link to ‘Boring Google’" href="https://daringfireball.net/linked/2017/05/22/thompson-google-io"> ★ </a>
|
349
|
+
</div>
|
350
|
+
|
351
|
+
]]></content>
|
352
|
+
</entry><entry>
|
353
|
+
<title>Every Color of Cardigan Mister Rogers Wore From 1979–2001</title>
|
354
|
+
<link rel="alternate" type="text/html" href="https://theawl.com/every-color-of-cardigan-mister-rogers-wore-from-1979-2001-83c1faba2677" />
|
355
|
+
<link rel="shorturl" type="text/html" href="http://df4.us/q0p" />
|
356
|
+
<link rel="related" type="text/html" href="https://daringfireball.net/linked/2017/05/22/mr-rogers-sweaters" />
|
357
|
+
<id>tag:daringfireball.net,2017:/linked//6.33721</id>
|
358
|
+
<published>2017-05-22T17:53:29Z</published>
|
359
|
+
<updated>2017-05-22T17:53:31Z</updated>
|
360
|
+
<author>
|
361
|
+
<name>John Gruber</name>
|
362
|
+
<uri>http://daringfireball.net/</uri>
|
363
|
+
</author>
|
364
|
+
<content type="html" xml:base="https://daringfireball.net/linked/" xml:lang="en"><![CDATA[
|
365
|
+
<p>Owen Philips, writing for The Awl:</p>
|
366
|
+
|
367
|
+
<blockquote>
|
368
|
+
<p>Fortunately, Tim Lybarger, a 40 year-old high school counselor
|
369
|
+
from just outside of Champaign-Urbana, Illinois, wondered the same
|
370
|
+
thing a few years ago. Back in 2011, on his blog devoted to all
|
371
|
+
things Mister Rogers, neighborhoodarchive.com, Lybarger recorded
|
372
|
+
the color of every sweater Rogers wore in each episode between
|
373
|
+
1979 and 2001. “When I realized such a resource didn’t exist,”
|
374
|
+
Lybarger told me over email, “I just felt like somebody needed to
|
375
|
+
do it…might as well be me.”</p>
|
376
|
+
|
377
|
+
<p>The chart below uses the data Lybarger meticulously collected to
|
378
|
+
show how Rogers’ preferences for the color of his cardigan changed
|
379
|
+
over time.</p>
|
380
|
+
</blockquote>
|
381
|
+
|
382
|
+
<p>When I was a kid I simply loved <em>Mister Rogers’ Neighborhood</em>. (<a href="http://kottke.org/17/05/the-colors-of-mister-rogers-cardigan-sweaters-1979-2001">Via Kottke</a>, of course.)</p>
|
383
|
+
|
384
|
+
<div>
|
385
|
+
<a title="Permanent link to ‘Every Color of Cardigan Mister Rogers Wore From 1979–2001’" href="https://daringfireball.net/linked/2017/05/22/mr-rogers-sweaters"> ★ </a>
|
386
|
+
</div>
|
387
|
+
|
388
|
+
]]></content>
|
389
|
+
</entry><entry>
|
390
|
+
<title>Scrolling Is Going to Change in Mobile Safari</title>
|
391
|
+
<link rel="alternate" type="text/html" href="https://news.ycombinator.com/item?id=14384938" />
|
392
|
+
<link rel="shorturl" type="text/html" href="http://df4.us/q0o" />
|
393
|
+
<link rel="related" type="text/html" href="https://daringfireball.net/linked/2017/05/22/mobile-safari-scrolling" />
|
394
|
+
<id>tag:daringfireball.net,2017:/linked//6.33720</id>
|
395
|
+
<published>2017-05-22T17:29:44Z</published>
|
396
|
+
<updated>2017-05-23T00:56:48Z</updated>
|
397
|
+
<author>
|
398
|
+
<name>John Gruber</name>
|
399
|
+
<uri>http://daringfireball.net/</uri>
|
400
|
+
</author>
|
401
|
+
<content type="html" xml:base="https://daringfireball.net/linked/" xml:lang="en"><![CDATA[
|
402
|
+
<p>Here’s an interesting exchange in a Hacker News discussion about <a href="https://daringfireball.net/linked/2017/05/20/gilbertson-amp.php">my criticism of AMP</a> over the weekend. <a href="https://news.ycombinator.com/item?id=14384938">Malte Ubl, creator and tech lead of Google AMP</a>:</p>
|
403
|
+
|
404
|
+
<blockquote>
|
405
|
+
<p>With respect to scrolling: We (AMP team) filed a bug with Apple
|
406
|
+
about that (we didn’t implement scrolling ourselves, just use a
|
407
|
+
div with overflow). We asked to make the scroll inertia for that
|
408
|
+
case the same as the normal scrolling.</p>
|
409
|
+
|
410
|
+
<p>Apple’s response was (surprisingly) to make the default scrolling
|
411
|
+
like the overflow scrolling. So, with the next Safari release all
|
412
|
+
pages will scroll like AMP pages. Hope Gruber is happy then :)</p>
|
413
|
+
</blockquote>
|
414
|
+
|
415
|
+
<p>“Om2”, who seemingly works on WebKit for Apple <a href="https://trac.webkit.org/changeset/211197/webkit">added</a>:</p>
|
416
|
+
|
417
|
+
<blockquote>
|
418
|
+
<p>In current iOS Safari, webpage scrolling is inconsistent from all
|
419
|
+
other scrolling on the system. This was an intentional decision
|
420
|
+
made long ago. In addition, overflow areas are consistent with the
|
421
|
+
rest of the system, and thus inconsistent with top-level webpage
|
422
|
+
scrolling. This is semi-accidental. In reviewing scroll rates, we
|
423
|
+
concluded that the original reason was no longer a good tradeoff.
|
424
|
+
Thus this change, which removed all the inconsistencies:
|
425
|
+
<a href="https://trac.webkit.org/changeset/211197/webkit">https://trac.webkit.org/changeset/211197/webkit</a></p>
|
426
|
+
|
427
|
+
<p>Having all scrolling be consistent feels good once you get
|
428
|
+
used to it.</p>
|
429
|
+
|
430
|
+
<p>That doesn’t necessarily mean it was a good idea for Google’s
|
431
|
+
hosted AMP pages to use overflow scroll all along. The
|
432
|
+
inconsistency definitely did feel weird. And the way they do
|
433
|
+
scrolling prevents Safari from auto-hiding its top and bottom
|
434
|
+
bars. I believe all the desired scroll effects could have been
|
435
|
+
achieved without the use of overflow scroll.</p>
|
436
|
+
</blockquote>
|
437
|
+
|
438
|
+
<p>That’s a pretty big change, but I’ll bet Om2 is right that it soon feels normal. Web views have had different scrolling inertia than other scrolling views ever since the original iPhone. (My beef with scrolling in AMP is not that AMP’s fast scrolling is bad and Mobile Safari’s current slower scrolling is good, but rather that scrolling in AMP pages should not feel totally different than regular web pages. And I forgot to complain about the fact that AMP’s weird implementation also breaks Mobile Safari’s ability to hide the bottom and top browser chrome toolbars. <strong>Update:</strong> One more complaint: AMP breaks Safari’s Reader mode.)</p>
|
439
|
+
|
440
|
+
<div>
|
441
|
+
<a title="Permanent link to ‘Scrolling Is Going to Change in Mobile Safari’" href="https://daringfireball.net/linked/2017/05/22/mobile-safari-scrolling"> ★ </a>
|
442
|
+
</div>
|
443
|
+
|
444
|
+
]]></content>
|
445
|
+
</entry><entry>
|
446
|
+
<title>News Explorer 1.6 Supports JSON Feed</title>
|
447
|
+
<link rel="alternate" type="text/html" href="https://betamagic.nl/blog.html" />
|
448
|
+
<link rel="shorturl" type="text/html" href="http://df4.us/q0n" />
|
449
|
+
<link rel="related" type="text/html" href="https://daringfireball.net/linked/2017/05/22/news-explorer-1-6" />
|
450
|
+
<id>tag:daringfireball.net,2017:/linked//6.33719</id>
|
451
|
+
<published>2017-05-22T17:10:10Z</published>
|
452
|
+
<updated>2017-05-22T17:10:12Z</updated>
|
453
|
+
<author>
|
454
|
+
<name>John Gruber</name>
|
455
|
+
<uri>http://daringfireball.net/</uri>
|
456
|
+
</author>
|
457
|
+
<content type="html" xml:base="https://daringfireball.net/linked/" xml:lang="en"><![CDATA[
|
458
|
+
<p>First native app I’ve seen with support for JSON Feed. Pretty interesting take on a modern Mac feed reader, including nice support for using the keyboard arrow keys to move around the UI.</p>
|
459
|
+
|
460
|
+
<div>
|
461
|
+
<a title="Permanent link to ‘News Explorer 1.6 Supports JSON Feed’" href="https://daringfireball.net/linked/2017/05/22/news-explorer-1-6"> ★ </a>
|
462
|
+
</div>
|
463
|
+
|
464
|
+
]]></content>
|
465
|
+
</entry><entry>
|
466
|
+
|
467
|
+
<link rel="alternate" type="text/html" href="http://www.getflow.com/daringfireball" />
|
468
|
+
<link rel="shorturl" href="http://df4.us/q0u" />
|
469
|
+
<link rel="related" type="text/html" href="https://daringfireball.net/feeds/sponsors/2017/05/flow_simple_project_management" />
|
470
|
+
<id>tag:daringfireball.net,2017:/feeds/sponsors//11.33726</id>
|
471
|
+
<author><name>Daring Fireball Department of Commerce</name></author>
|
472
|
+
<published>2017-05-22T17:00:49-04:00</published>
|
473
|
+
<updated>2017-05-22T17:01:04-04:00</updated>
|
474
|
+
<content type="html" xml:base="https://daringfireball.net/feeds/sponsors/" xml:lang="en"><![CDATA[
|
475
|
+
<p>Flow is simple project management for busy teams. It’s the easiest way to run your team, manage projects, track tasks, and stay up to date with everything happening at work.</p>
|
476
|
+
|
477
|
+
<p>Teams choose Flow when email, sticky notes, and to-do apps aren’t enough, but complex project management tools are overkill. Flow’s world-class design team has worked with companies like Apple, Slack, TED, and Starbucks, so it’s simple, beautiful, and easy to use. Your team will love using it, and pick it up in minutes — not weeks.</p>
|
478
|
+
|
479
|
+
<p>Visit <a href="http://www.getflow.com/daringfireball">getflow.com/daringfireball</a> to start your free trial today, and save 20% on a monthly plan, or 30% on an annual plan at checkout. </p>
|
480
|
+
|
481
|
+
<div>
|
482
|
+
<a title="Permanent link to ‘Flow: Simple Project Management’" href="https://daringfireball.net/feeds/sponsors/2017/05/flow_simple_project_management"> ★ </a>
|
483
|
+
</div>
|
484
|
+
|
485
|
+
]]></content>
|
486
|
+
<title>[Sponsor] Flow: Simple Project Management</title></entry><entry>
|
487
|
+
<title>‘Becoming Bond’</title>
|
488
|
+
<link rel="alternate" type="text/html" href="https://www.youtube.com/watch?v=rd9wdJIxqlo" />
|
489
|
+
<link rel="shorturl" type="text/html" href="http://df4.us/q0m" />
|
490
|
+
<link rel="related" type="text/html" href="https://daringfireball.net/linked/2017/05/22/becoming-bond" />
|
491
|
+
<id>tag:daringfireball.net,2017:/linked//6.33718</id>
|
492
|
+
<published>2017-05-22T16:35:26Z</published>
|
493
|
+
<updated>2017-05-22T16:41:57Z</updated>
|
494
|
+
<author>
|
495
|
+
<name>John Gruber</name>
|
496
|
+
<uri>http://daringfireball.net/</uri>
|
497
|
+
</author>
|
498
|
+
<content type="html" xml:base="https://daringfireball.net/linked/" xml:lang="en"><![CDATA[
|
499
|
+
<p>New documentary from Hulu on George Lazenby, who played James Bond in 1969’s <em><a href="http://www.imdb.com/title/tt0064757/">On Her Majesty’s Secret Service</a></em> and then turned down an offer for a six-picture contract. Watched it over the weekend and thoroughly enjoyed it.</p>
|
500
|
+
|
501
|
+
<div>
|
502
|
+
<a title="Permanent link to ‘‘Becoming Bond’’" href="https://daringfireball.net/linked/2017/05/22/becoming-bond"> ★ </a>
|
503
|
+
</div>
|
504
|
+
|
505
|
+
]]></content>
|
506
|
+
</entry><entry>
|
507
|
+
<title>Stashword</title>
|
508
|
+
<link rel="alternate" type="text/html" href="http://df.stashword.com/" />
|
509
|
+
<link rel="shorturl" type="text/html" href="http://df4.us/q0l" />
|
510
|
+
<link rel="related" type="text/html" href="https://daringfireball.net/linked/2017/05/20/stashword" />
|
511
|
+
<id>tag:daringfireball.net,2017:/linked//6.33717</id>
|
512
|
+
<published>2017-05-20T19:23:06Z</published>
|
513
|
+
<updated>2017-05-20T19:23:08Z</updated>
|
514
|
+
<author>
|
515
|
+
<name>John Gruber</name>
|
516
|
+
<uri>http://daringfireball.net/</uri>
|
517
|
+
</author>
|
518
|
+
<content type="html" xml:base="https://daringfireball.net/linked/" xml:lang="en"><![CDATA[
|
519
|
+
<p>My thanks to Stashword for sponsoring this week’s DF RSS feed. Stashword is simple but feature-rich password manager for iOS and the web. In addition to passwords, Stashword can securely save notes, financial information, and more. You can even scan and save documents like your drivers license, insurance documentation, and passport.</p>
|
520
|
+
|
521
|
+
<p>Stashword is free to try for 15 days. Paid membership enables you to synchronize across all your devices and <a href="http://df.stashword.com/">their website</a>. As a special offer for Daring Fireball readers, through May 25 annual membership is just $7.99, which is 20 percent off the regular price.</p>
|
522
|
+
|
523
|
+
<div>
|
524
|
+
<a title="Permanent link to ‘Stashword’" href="https://daringfireball.net/linked/2017/05/20/stashword"> ★ </a>
|
525
|
+
</div>
|
526
|
+
|
527
|
+
]]></content>
|
528
|
+
</entry><entry>
|
529
|
+
<title>MacStories’s iOS 11 iPad Wishes and Concept Video</title>
|
530
|
+
<link rel="alternate" type="text/html" href="https://www.macstories.net/stories/ios-11-ipad-wishes-and-concept-video/" />
|
531
|
+
<link rel="shorturl" type="text/html" href="http://df4.us/q0j" />
|
532
|
+
<link rel="related" type="text/html" href="https://daringfireball.net/linked/2017/05/20/macstories-ios-11-concept" />
|
533
|
+
<id>tag:daringfireball.net,2017:/linked//6.33715</id>
|
534
|
+
<published>2017-05-20T19:10:48Z</published>
|
535
|
+
<updated>2017-05-20T19:10:50Z</updated>
|
536
|
+
<author>
|
537
|
+
<name>John Gruber</name>
|
538
|
+
<uri>http://daringfireball.net/</uri>
|
539
|
+
</author>
|
540
|
+
<content type="html" xml:base="https://daringfireball.net/linked/" xml:lang="en"><![CDATA[
|
541
|
+
<p>Federico Viticci:</p>
|
542
|
+
|
543
|
+
<blockquote>
|
544
|
+
<p>I’ve been thinking about some of these ideas since iOS 9 (you can
|
545
|
+
see a thread between <a href="https://youtube.com/watch?v=J2VcbT4Pgdk">my iOS 10 concept</a> and this year’s version),
|
546
|
+
while others would be a natural evolution for iOS on the iPad.
|
547
|
+
Once again, Sam was able to visualize everything with a fantastic
|
548
|
+
concept that, I believe, captures the iPad’s big-picture potential
|
549
|
+
more accurately than last year.</p>
|
550
|
+
|
551
|
+
<p>Below, you’ll find our <a href="https://youtube.com/watch?v=UyFUDQ5LLZw">iOS 11 for iPad concept video</a>, followed by
|
552
|
+
an analysis of my iPad wishes with static mockups. I focused on
|
553
|
+
foundational changes to the iPad’s software — tentpole features
|
554
|
+
that would affect the entire OS and app ecosystem.</p>
|
555
|
+
|
556
|
+
<p>This isn’t a prediction of what Apple will announce at WWDC; it’s
|
557
|
+
my vision for what the future of the iPad should be.</p>
|
558
|
+
</blockquote>
|
559
|
+
|
560
|
+
<p>Viticci and Beckett put months of work into this, and it shows. Some of the ideas they present: system-wide drag-and-drop, a Finder app, a redesigned App Store, and much more.</p>
|
561
|
+
|
562
|
+
<p>The best part of this feature isn’t any specific idea, but rather Viticci’s profound enthusiasm for the iPad as a platform.</p>
|
563
|
+
|
564
|
+
<div>
|
565
|
+
<a title="Permanent link to ‘MacStories’s iOS 11 iPad Wishes and Concept Video’" href="https://daringfireball.net/linked/2017/05/20/macstories-ios-11-concept"> ★ </a>
|
566
|
+
</div>
|
567
|
+
|
568
|
+
]]></content>
|
569
|
+
</entry><entry>
|
570
|
+
<title>10-Year-Old Open Letter Calling for Apple to Make Glucose Monitors</title>
|
571
|
+
<link rel="alternate" type="text/html" href="http://www.healthline.com/health/diabetesmine/innovation/open-letter-steve-jobs" />
|
572
|
+
<link rel="shorturl" type="text/html" href="http://df4.us/q0i" />
|
573
|
+
<link rel="related" type="text/html" href="https://daringfireball.net/linked/2017/05/20/open-letter-apple-glucose" />
|
574
|
+
<id>tag:daringfireball.net,2017:/linked//6.33714</id>
|
575
|
+
<published>2017-05-20T19:00:18Z</published>
|
576
|
+
<updated>2017-05-20T19:26:36Z</updated>
|
577
|
+
<author>
|
578
|
+
<name>John Gruber</name>
|
579
|
+
<uri>http://daringfireball.net/</uri>
|
580
|
+
</author>
|
581
|
+
<content type="html" xml:base="https://daringfireball.net/linked/" xml:lang="en"><![CDATA[
|
582
|
+
<p>Amy Tenderich, 10 years ago, in an open letter to Steve Jobs:</p>
|
583
|
+
|
584
|
+
<blockquote>
|
585
|
+
<p>If insulin pumps or continuous monitors had the form of an iPod
|
586
|
+
Nano, people wouldn’t have to wonder why we wear our “pagers” to
|
587
|
+
our own weddings, or puzzle over that strange bulge under our
|
588
|
+
clothes. If these devices wouldn’t start suddenly and incessantly
|
589
|
+
beeping, strangers wouldn’t lecture us to turn off our “cell
|
590
|
+
phones” at the movie theater.</p>
|
591
|
+
|
592
|
+
<p>In short, medical device manufacturers are stuck in a bygone era;
|
593
|
+
they continue to design these products in an engineering-driven,
|
594
|
+
physician-centered bubble. They have not yet grasped the concept
|
595
|
+
that medical devices are also life devices, and therefore need to
|
596
|
+
feel good and look good for the patients using them 24/7, in
|
597
|
+
addition to keeping us alive.</p>
|
598
|
+
</blockquote>
|
599
|
+
|
600
|
+
<p>(<a href="http://articles.chicagotribune.com/2010-10-22/features/sc-health-1020-diabetes-insulin-devic20101022_1_insulin-dependent-diabetics-high-blood-glucose-levels-blood-sugar">Follow-up here in 2010</a>.)</p>
|
601
|
+
|
602
|
+
<p>This was incredibly prescient, given the rumors <a href="https://daringfireball.net/linked/2017/05/18/apple-watch-glucose">that Apple is working on continuous non-invasive glucose monitoring</a> for Apple Watch. Jobs didn’t live to see it, but I think it’s exactly the sort of thing he would be pushing for if he were still alive.</p>
|
603
|
+
|
604
|
+
<p>From chapter 37 of <a href="https://itun.es/us/QyFUz.l">Walter Isaacson’s <em>Steve Jobs</em></a>:</p>
|
605
|
+
|
606
|
+
<blockquote>
|
607
|
+
<p>Even when he was barely conscious, his strong personality came
|
608
|
+
through. At one point the pulmonologist tried to put a mask over
|
609
|
+
his face when he was deeply sedated. Jobs ripped it off and
|
610
|
+
mumbled that he hated the design and refused to wear it. Though
|
611
|
+
barely able to speak, he ordered them to bring five different
|
612
|
+
options for the mask and he would pick a design he liked. The
|
613
|
+
doctors looked at Powell, puzzled. She was finally able to
|
614
|
+
distract him so they could put on the mask. He also hated the
|
615
|
+
oxygen monitor they put on his finger. He told them it was ugly
|
616
|
+
and too complex. He suggested ways it could be designed more
|
617
|
+
simply. “He was very attuned to every nuance of the environment
|
618
|
+
and objects around him, and that drained him,” Powell recalled.</p>
|
619
|
+
</blockquote>
|
620
|
+
|
621
|
+
<div>
|
622
|
+
<a title="Permanent link to ‘10-Year-Old Open Letter Calling for Apple to Make Glucose Monitors’" href="https://daringfireball.net/linked/2017/05/20/open-letter-apple-glucose"> ★ </a>
|
623
|
+
</div>
|
624
|
+
|
625
|
+
]]></content>
|
626
|
+
</entry><entry>
|
627
|
+
<title>Scott Gilbertson: ‘Kill Google AMP Before It Kills the Web’</title>
|
628
|
+
<link rel="alternate" type="text/html" href="https://www.theregister.co.uk/2017/05/19/open_source_insider_google_amp_bad_bad_bad/" />
|
629
|
+
<link rel="shorturl" type="text/html" href="http://df4.us/q0h" />
|
630
|
+
<link rel="related" type="text/html" href="https://daringfireball.net/linked/2017/05/20/gilbertson-amp" />
|
631
|
+
<id>tag:daringfireball.net,2017:/linked//6.33713</id>
|
632
|
+
<published>2017-05-20T18:18:19Z</published>
|
633
|
+
<updated>2017-05-20T19:28:43Z</updated>
|
634
|
+
<author>
|
635
|
+
<name>John Gruber</name>
|
636
|
+
<uri>http://daringfireball.net/</uri>
|
637
|
+
</author>
|
638
|
+
<content type="html" xml:base="https://daringfireball.net/linked/" xml:lang="en"><![CDATA[
|
639
|
+
<p>Scott Gilbertson, writing for The Register:</p>
|
640
|
+
|
641
|
+
<blockquote>
|
642
|
+
<p>Quite a few high-profile web developers have this year weighted in
|
643
|
+
with <a href="https://danielmiessler.com/blog/google-amp-not-good-thing/">criticism</a> and some, following a Google conference dedicated
|
644
|
+
to AMP, have cautioned users about diving in with <a href="https://css-tricks.com/need-catch-amp-debate/">both feet</a>.</p>
|
645
|
+
|
646
|
+
<p>These, in my view, don’t go far enough in stating the problem and
|
647
|
+
I feel this needs to be said very clearly: Google’s AMP is bad —
|
648
|
+
bad in a potentially web-destroying way. Google AMP is bad news
|
649
|
+
for how the web is built, it’s bad news for publishers of credible
|
650
|
+
online content, and it’s bad news for consumers of that content.
|
651
|
+
Google AMP is only good for one party: Google. Google, and
|
652
|
+
possibly, purveyors of fake news.</p>
|
653
|
+
|
654
|
+
<p>It’s time for developers to wake up and, as Jason Scott <a href="http://ascii.textfiles.com/archives/3086">once said</a>
|
655
|
+
of Facebook, stop: “Shoveling down the shit sherbet” Google is now
|
656
|
+
serving with AMP.</p>
|
657
|
+
</blockquote>
|
658
|
+
|
659
|
+
<p><a href="http://daringfireball.net/linked/2017/01/17/schreiber-amp">I’m on the record</a> as being strongly opposed to AMP simply on the grounds of publication independence. I’d stand by that even if the implementation were great. But the implementation is not great — it’s terrible. Yes, AMP pages load fast, but you don’t need AMP for fast-loading web pages. If you are a publisher and your web pages don’t load fast, the sane solution is to <a href="http://idlewords.com/amp_static.html">fix your fucking website so that pages load fast</a>, not to throw your hands up in the air and implement AMP.</p>
|
660
|
+
|
661
|
+
<p>But other than loading fast, AMP <em>sucks</em>. It implements its own scrolling behavior on iOS, which feels unnatural, and even worse, it breaks the decade-old system-wide iOS behavior of being able to tap the status bar to scroll to the top of any scrollable view. AMP also completely breaks Safari’s ability to search for text on a page (via the “Find on Page” action in the sharing sheet). Google has no respect for the platform. If I had my way, Mobile Safari would refuse to render AMP pages. It’s a deliberate effort by Google to break the open web.</p>
|
662
|
+
|
663
|
+
<div>
|
664
|
+
<a title="Permanent link to ‘Scott Gilbertson: ‘Kill Google AMP Before It Kills the Web’’" href="https://daringfireball.net/linked/2017/05/20/gilbertson-amp"> ★ </a>
|
665
|
+
</div>
|
666
|
+
|
667
|
+
]]></content>
|
668
|
+
</entry><entry>
|
669
|
+
<title>Arctic Stronghold of World’s Seeds Flooded After Permafrost Melts</title>
|
670
|
+
<link rel="alternate" type="text/html" href="https://www.theguardian.com/environment/2017/may/19/arctic-stronghold-of-worlds-seeds-flooded-after-permafrost-melts?CMP=twt_gu" />
|
671
|
+
<link rel="shorturl" type="text/html" href="http://df4.us/q0g" />
|
672
|
+
<link rel="related" type="text/html" href="https://daringfireball.net/linked/2017/05/20/global-seed-vault" />
|
673
|
+
<id>tag:daringfireball.net,2017:/linked//6.33712</id>
|
674
|
+
<published>2017-05-20T17:52:14Z</published>
|
675
|
+
<updated>2017-05-21T03:41:34Z</updated>
|
676
|
+
<author>
|
677
|
+
<name>John Gruber</name>
|
678
|
+
<uri>http://daringfireball.net/</uri>
|
679
|
+
</author>
|
680
|
+
<content type="html" xml:base="https://daringfireball.net/linked/" xml:lang="en"><![CDATA[
|
681
|
+
<p>Damian Carrington, reporting for The Guardian:</p>
|
682
|
+
|
683
|
+
<blockquote>
|
684
|
+
<p>It was designed as an impregnable deep-freeze to protect the
|
685
|
+
world’s most precious seeds from any global disaster and ensure
|
686
|
+
humanity’s food supply forever. But the Global Seed Vault, buried
|
687
|
+
in a mountain deep inside the Arctic circle, has been breached
|
688
|
+
after global warming produced extraordinary temperatures over the
|
689
|
+
winter, sending meltwater gushing into the entrance tunnel.</p>
|
690
|
+
</blockquote>
|
691
|
+
|
692
|
+
<p>The big takeaway from this should be that climate change truly is a threat to civilization. But, I have to say, that melting permafrost wasn’t taken into consideration during the design of this vault seems like a glaring oversight.</p>
|
693
|
+
|
694
|
+
<p><strong>Update:</strong> Looks like The Guardian might have shamelessly sensationalized this story. <a href="http://www.popsci.com/seed-vault-flooding?src=SOC&dom=tw#page-3">Mary Beth Griggs, reporting for Popular Science</a>:</p>
|
695
|
+
|
696
|
+
<blockquote>
|
697
|
+
<p>“If there was a worst case scenario where there was so much water,
|
698
|
+
or the pumping systems failed, that it made its way uphill to the
|
699
|
+
seed vault, then it would encounter minus 18 [degrees celsius] and
|
700
|
+
freeze again. Then there’s another barrier [the ice] for entry
|
701
|
+
into the seed vault,” Fowler says. In other words, any water that
|
702
|
+
floods into the tunnel has to make it 100 meters downhill, then
|
703
|
+
back uphill, then overwhelm the pumping systems, and then manage
|
704
|
+
not to freeze at well-below-freezing temperatures. Otherwise,
|
705
|
+
there’s no way liquid is getting into the seed bank — so the
|
706
|
+
seeds are probably safe. […]</p>
|
707
|
+
|
708
|
+
<p>Still worried? Maybe this will help you exhale: “We did this
|
709
|
+
calculation; if all the ice in the world melted — Greenland,
|
710
|
+
Arctic, Antarctic, everything — and then we had the world’s
|
711
|
+
largest recorded tsunami right in front of the seed vault. So,
|
712
|
+
very high sea levels and the worlds largest Tsunami. What would
|
713
|
+
happen to the seed vault?” Fowler says. “We found that the seed
|
714
|
+
vault was somewhere between a five and seven story building above
|
715
|
+
that point. It might not help the road leading up to the seed
|
716
|
+
vault, but the seeds themselves would be OK.”</p>
|
717
|
+
</blockquote>
|
718
|
+
|
719
|
+
<p>Sounds like the vault itself <em>is</em> designed to survive a climate apocalypse — it’s just the entry that isn’t.</p>
|
720
|
+
|
721
|
+
<div>
|
722
|
+
<a title="Permanent link to ‘Arctic Stronghold of World’s Seeds Flooded After Permafrost Melts’" href="https://daringfireball.net/linked/2017/05/20/global-seed-vault"> ★ </a>
|
723
|
+
</div>
|
724
|
+
|
725
|
+
]]></content>
|
726
|
+
</entry><entry>
|
727
|
+
<title>‘It’s Borderline Stupid How Easy It Was’</title>
|
728
|
+
<link rel="alternate" type="text/html" href="https://ndarville.com/blog/2017/05/19/json-feed-for-jekyll/" />
|
729
|
+
<link rel="shorturl" type="text/html" href="http://df4.us/q0f" />
|
730
|
+
<link rel="related" type="text/html" href="https://daringfireball.net/linked/2017/05/19/json-feed-jekyll" />
|
731
|
+
<id>tag:daringfireball.net,2017:/linked//6.33711</id>
|
732
|
+
<published>2017-05-19T20:07:02Z</published>
|
733
|
+
<updated>2017-05-19T20:13:21Z</updated>
|
734
|
+
<author>
|
735
|
+
<name>John Gruber</name>
|
736
|
+
<uri>http://daringfireball.net/</uri>
|
737
|
+
</author>
|
738
|
+
<content type="html" xml:base="https://daringfireball.net/linked/" xml:lang="en"><![CDATA[
|
739
|
+
<p>Niclas Darville, on creating a JSON Feed template for Jekyll:</p>
|
740
|
+
|
741
|
+
<blockquote>
|
742
|
+
<p>It literally took me longer to write this blog post than the JSON
|
743
|
+
feed code, because I couldn’t get Jekyll to escape the Liquid code
|
744
|
+
example.</p>
|
745
|
+
</blockquote>
|
746
|
+
|
747
|
+
<p>On Twitter, <a href="https://twitter.com/pessimism/status/865574252182990848">Darville wrote</a>:</p>
|
748
|
+
|
749
|
+
<blockquote>
|
750
|
+
<p>One of the best things about <a href="https://twitter.com/@jsonfeed">@jsonfeed</a> is how well it works as a
|
751
|
+
Hello World kind of programming exercise.</p>
|
752
|
+
|
753
|
+
<p>Sure beats to-do lists.</p>
|
754
|
+
</blockquote>
|
755
|
+
|
756
|
+
<p><a href="https://twitter.com/JmacDotOrg/status/865441060176121856">Jason McIntosh described</a> adding JSON Feed support to his home-grown blog engine as a “blowing-off-steam project”.</p>
|
757
|
+
|
758
|
+
<p>These reactions are exactly what I mean about JSON Feed being <em>fun</em>. There’s a time and place for specs that are drop-dead serious, but I think it’s often overlooked just how important <em>fun</em> can be in having a new spec gain traction.</p>
|
759
|
+
|
760
|
+
<div>
|
761
|
+
<a title="Permanent link to ‘‘It’s Borderline Stupid How Easy It Was’’" href="https://daringfireball.net/linked/2017/05/19/json-feed-jekyll"> ★ </a>
|
762
|
+
</div>
|
763
|
+
|
764
|
+
]]></content>
|
765
|
+
</entry><entry>
|
766
|
+
<title>Headline of the Week</title>
|
767
|
+
<link rel="alternate" type="text/html" href="https://www.nytimes.com/2017/05/19/us/politics/trump-russia-comey.html" />
|
768
|
+
<link rel="shorturl" type="text/html" href="http://df4.us/q0e" />
|
769
|
+
<link rel="related" type="text/html" href="https://daringfireball.net/linked/2017/05/19/trump-nut-job" />
|
770
|
+
<id>tag:daringfireball.net,2017:/linked//6.33710</id>
|
771
|
+
<published>2017-05-19T19:41:15Z</published>
|
772
|
+
<updated>2017-05-20T04:12:08Z</updated>
|
773
|
+
<author>
|
774
|
+
<name>John Gruber</name>
|
775
|
+
<uri>http://daringfireball.net/</uri>
|
776
|
+
</author>
|
777
|
+
<content type="html" xml:base="https://daringfireball.net/linked/" xml:lang="en"><![CDATA[
|
778
|
+
<p>Actual headline in the staid New York Times: “Trump Told Russians That Firing ‘Nut Job’ Comey Eased Pressure From Investigation”.</p>
|
779
|
+
|
780
|
+
<div>
|
781
|
+
<a title="Permanent link to ‘Headline of the Week’" href="https://daringfireball.net/linked/2017/05/19/trump-nut-job"> ★ </a>
|
782
|
+
</div>
|
783
|
+
|
784
|
+
]]></content>
|
785
|
+
</entry><entry>
|
786
|
+
<title>Requiring Facebook</title>
|
787
|
+
<link rel="alternate" type="text/html" href="https://thebolditalic.com/facebook-goes-full-black-mirror-how-facebook-is-making-membership-a-prerequisite-to-everyday-e88fb03b0eb9" />
|
788
|
+
<link rel="shorturl" type="text/html" href="http://df4.us/q0d" />
|
789
|
+
<link rel="related" type="text/html" href="https://daringfireball.net/linked/2017/05/18/requiring-facebook" />
|
790
|
+
<id>tag:daringfireball.net,2017:/linked//6.33709</id>
|
791
|
+
<published>2017-05-19T02:19:06Z</published>
|
792
|
+
<updated>2017-05-19T07:02:39Z</updated>
|
793
|
+
<author>
|
794
|
+
<name>John Gruber</name>
|
795
|
+
<uri>http://daringfireball.net/</uri>
|
796
|
+
</author>
|
797
|
+
<content type="html" xml:base="https://daringfireball.net/linked/" xml:lang="en"><![CDATA[
|
798
|
+
<p>Jason Ditzian, writing for The Bold Italic on what happened when the car sharing service he’d been using for 10 years was acquired:</p>
|
799
|
+
|
800
|
+
<blockquote>
|
801
|
+
<p>However, City CarShare was recently bought by a corporation,
|
802
|
+
Getaround. And Getaround built its platform on top of Facebook. So
|
803
|
+
when I went to migrate my account over to them, I found that
|
804
|
+
there’s literally no way to do it as a non-Facebook user. If I
|
805
|
+
want to share cars with my fellow city dwellers, I’m compelled to
|
806
|
+
strike a Faustian bargain.</p>
|
807
|
+
|
808
|
+
<p>To access the services of Getaround, one must authenticate their
|
809
|
+
identity through Facebook. […]</p>
|
810
|
+
|
811
|
+
<p>I know that for you Facebook-having people, this is no big deal.
|
812
|
+
You have resigned yourself to the idea of Facebook owning your
|
813
|
+
data. But if you don’t, haven’t and/or won’t resign to this fate,
|
814
|
+
you might end up left, like me, in a peculiar situation: the price
|
815
|
+
of “sharing” a car equals money plus forking over a huge trove of
|
816
|
+
personal data. Personal information is supplanting money as a form
|
817
|
+
of currency.</p>
|
818
|
+
</blockquote>
|
819
|
+
|
820
|
+
<p>There’s clearly a problem here, but I don’t think it’s Facebook’s fault. I think the problem is that Getaround sucks.</p>
|
821
|
+
|
822
|
+
<div>
|
823
|
+
<a title="Permanent link to ‘Requiring Facebook’" href="https://daringfireball.net/linked/2017/05/18/requiring-facebook"> ★ </a>
|
824
|
+
</div>
|
825
|
+
|
826
|
+
]]></content>
|
827
|
+
</entry><entry>
|
828
|
+
<title>FCC Votes to Begin Dismantling Net Neutrality</title>
|
829
|
+
<link rel="alternate" type="text/html" href="https://www.techdirt.com/articles/20170517/12241437395/fcc-ignores-will-public-votes-to-begin-dismantling-net-neutrality.shtml" />
|
830
|
+
<link rel="shorturl" type="text/html" href="http://df4.us/q0c" />
|
831
|
+
<link rel="related" type="text/html" href="https://daringfireball.net/linked/2017/05/18/net-neutrality" />
|
832
|
+
<id>tag:daringfireball.net,2017:/linked//6.33708</id>
|
833
|
+
<published>2017-05-18T22:30:58Z</published>
|
834
|
+
<updated>2017-05-18T22:31:00Z</updated>
|
835
|
+
<author>
|
836
|
+
<name>John Gruber</name>
|
837
|
+
<uri>http://daringfireball.net/</uri>
|
838
|
+
</author>
|
839
|
+
<content type="html" xml:base="https://daringfireball.net/linked/" xml:lang="en"><![CDATA[
|
840
|
+
<p>Karl Bode, writing for TechDirt:</p>
|
841
|
+
|
842
|
+
<blockquote>
|
843
|
+
<p>Surprising absolutely nobody, the FCC today voted 2-1 along strict
|
844
|
+
party lines to begin dismantling net neutrality protections for
|
845
|
+
consumers. The move comes despite the fact that the <a href="https://www.techdirt.com/articles/20170516/06570237379/time-fcc-to-actually-listen-vast-majority-fcc-commenters-support-net-neutrality.shtml">vast
|
846
|
+
majority</a> of non-bot comments filed with the FCC support
|
847
|
+
keeping the rules intact. And while FCC boss Ajit Pai has
|
848
|
+
breathlessly insisted he intended to listen to the concerns of all
|
849
|
+
parties involved, there has been zero indication that this was a
|
850
|
+
serious commitment as he begins <a href="https://www.techdirt.com/articles/20170206/06403236642/new-fcc-boss-ajit-pai-insists-hes-all-about-helping-poor-gets-right-to-work-harming-them-instead.shtml">dismantling all manner of
|
851
|
+
broadband consumer protections</a>, not just net neutrality.</p>
|
852
|
+
|
853
|
+
<p>As you might have expected, the FCC was quick to release a
|
854
|
+
statement claiming that gutting the popular consumer protections
|
855
|
+
would usher forth a magical age of connectivity, investment, and
|
856
|
+
innovation.</p>
|
857
|
+
</blockquote>
|
858
|
+
|
859
|
+
<p>(<a href="https://pxlnv.com/linklog/fcc-vote-may-18/">Via Nick Heer</a>.)</p>
|
860
|
+
|
861
|
+
<div>
|
862
|
+
<a title="Permanent link to ‘FCC Votes to Begin Dismantling Net Neutrality’" href="https://daringfireball.net/linked/2017/05/18/net-neutrality"> ★ </a>
|
863
|
+
</div>
|
864
|
+
|
865
|
+
]]></content>
|
866
|
+
</entry><entry>
|
867
|
+
<title>‘You Know My Name’</title>
|
868
|
+
<link rel="alternate" type="text/html" href="https://www.youtube.com/watch?v=A1AMUmkj-ck" />
|
869
|
+
<link rel="shorturl" type="text/html" href="http://df4.us/q0b" />
|
870
|
+
<link rel="related" type="text/html" href="https://daringfireball.net/linked/2017/05/18/cornell-casino-royale" />
|
871
|
+
<id>tag:daringfireball.net,2017:/linked//6.33707</id>
|
872
|
+
<published>2017-05-18T22:24:55Z</published>
|
873
|
+
<updated>2017-05-18T22:24:56Z</updated>
|
874
|
+
<author>
|
875
|
+
<name>John Gruber</name>
|
876
|
+
<uri>http://daringfireball.net/</uri>
|
877
|
+
</author>
|
878
|
+
<content type="html" xml:base="https://daringfireball.net/linked/" xml:lang="en"><![CDATA[
|
879
|
+
<p>One of my very favorite songs from Chris Cornell — the opening credits theme to <em>Casino Royale</em>. A great song that just fits the movie so damn well.</p>
|
880
|
+
|
881
|
+
<div>
|
882
|
+
<a title="Permanent link to ‘‘You Know My Name’’" href="https://daringfireball.net/linked/2017/05/18/cornell-casino-royale"> ★ </a>
|
883
|
+
</div>
|
884
|
+
|
885
|
+
]]></content>
|
886
|
+
</entry><entry>
|
887
|
+
<title>Chris Cornell of Soundgarden, Dead at 52</title>
|
888
|
+
<link rel="alternate" type="text/html" href="https://www.nytimes.com/2017/05/18/arts/music/chris-cornell-dead-soundgarden.html?_r=0" />
|
889
|
+
<link rel="shorturl" type="text/html" href="http://df4.us/q0a" />
|
890
|
+
<link rel="related" type="text/html" href="https://daringfireball.net/linked/2017/05/18/cornell" />
|
891
|
+
<id>tag:daringfireball.net,2017:/linked//6.33706</id>
|
892
|
+
<published>2017-05-18T22:20:21Z</published>
|
893
|
+
<updated>2017-05-19T07:17:15Z</updated>
|
894
|
+
<author>
|
895
|
+
<name>John Gruber</name>
|
896
|
+
<uri>http://daringfireball.net/</uri>
|
897
|
+
</author>
|
898
|
+
<content type="html" xml:base="https://daringfireball.net/linked/" xml:lang="en"><![CDATA[
|
899
|
+
<p>The New York Times:</p>
|
900
|
+
|
901
|
+
<blockquote>
|
902
|
+
<p>Chris Cornell, the powerful, dynamic singer whose band Soundgarden
|
903
|
+
was one of the architects of grunge music, died on Wednesday night
|
904
|
+
in Detroit hours after the band had performed there. He was 52.</p>
|
905
|
+
|
906
|
+
<p>The death was a suicide by hanging, the Wayne County Medical
|
907
|
+
Examiner’s Office said in a statement released on Thursday
|
908
|
+
afternoon. It said a full autopsy had not yet been completed.</p>
|
909
|
+
</blockquote>
|
910
|
+
|
911
|
+
<p>Fuck.</p>
|
912
|
+
|
913
|
+
<div>
|
914
|
+
<a title="Permanent link to ‘Chris Cornell of Soundgarden, Dead at 52’" href="https://daringfireball.net/linked/2017/05/18/cornell"> ★ </a>
|
915
|
+
</div>
|
916
|
+
|
917
|
+
]]></content>
|
918
|
+
</entry><entry>
|
919
|
+
<title>jq</title>
|
920
|
+
<link rel="alternate" type="text/html" href="https://stedolan.github.io/jq/" />
|
921
|
+
<link rel="shorturl" type="text/html" href="http://df4.us/q09" />
|
922
|
+
<link rel="related" type="text/html" href="https://daringfireball.net/linked/2017/05/18/jq" />
|
923
|
+
<id>tag:daringfireball.net,2017:/linked//6.33705</id>
|
924
|
+
<published>2017-05-18T20:40:38Z</published>
|
925
|
+
<updated>2017-05-18T20:40:40Z</updated>
|
926
|
+
<author>
|
927
|
+
<name>John Gruber</name>
|
928
|
+
<uri>http://daringfireball.net/</uri>
|
929
|
+
</author>
|
930
|
+
<content type="html" xml:base="https://daringfireball.net/linked/" xml:lang="en"><![CDATA[
|
931
|
+
<p>There’s a cool command-line JSON processor called <code>jq</code> — easily installed on a Mac via download or <a href="https://brew.sh/">Homebrew</a>, and even more easily tinkered with using <a href="https://jqplay.org/">the online playground</a>. Here’s how easy <code>jq</code> makes it to get, say, a list of the titles from DF’s <a href="https://jsonfeed.org/">JSON feed</a>:</p>
|
932
|
+
|
933
|
+
<pre><code>curl -s https://daringfireball.net/feeds/json | jq '.items[].title'
|
934
|
+
</code></pre>
|
935
|
+
|
936
|
+
<div>
|
937
|
+
<a title="Permanent link to ‘jq’" href="https://daringfireball.net/linked/2017/05/18/jq"> ★ </a>
|
938
|
+
</div>
|
939
|
+
|
940
|
+
]]></content>
|
941
|
+
</entry><entry>
|
942
|
+
<title>The World’s First JSON Feed Viewer</title>
|
943
|
+
<link rel="alternate" type="text/html" href="https://twitter.com/vaillancourtmax/status/865291487881383937" />
|
944
|
+
<link rel="shorturl" type="text/html" href="http://df4.us/q08" />
|
945
|
+
<link rel="related" type="text/html" href="https://daringfireball.net/linked/2017/05/18/maxime-vaillancourt-json-feed-viewer" />
|
946
|
+
<id>tag:daringfireball.net,2017:/linked//6.33704</id>
|
947
|
+
<published>2017-05-18T20:32:06Z</published>
|
948
|
+
<updated>2017-05-18T20:39:47Z</updated>
|
949
|
+
<author>
|
950
|
+
<name>John Gruber</name>
|
951
|
+
<uri>http://daringfireball.net/</uri>
|
952
|
+
</author>
|
953
|
+
<content type="html" xml:base="https://daringfireball.net/linked/" xml:lang="en"><![CDATA[
|
954
|
+
<p>Maxime Vaillancourt:</p>
|
955
|
+
|
956
|
+
<blockquote>
|
957
|
+
<p>Here’s a tiny proof of concept for a <a href="https://twitter.com/@jsonfeed">@jsonfeed</a> viewer, built in an
|
958
|
+
hour: <a href="http://json-feed-viewer.herokuapp.com">http://json-feed-viewer.herokuapp.com</a></p>
|
959
|
+
</blockquote>
|
960
|
+
|
961
|
+
<p>One of the things I love about <a href="https://jsonfeed.org/">JSON Feed</a> is that it’s <em>fun</em>. JSON is so simple, and so well-supported by almost all programming languages, that you can build something interesting in just a few minutes, and something useful in an hour. There was <a href="https://news.ycombinator.com/item?id=14361178">a comment</a> on the Hacker News thread about JSON Feed that I loved:</p>
|
962
|
+
|
963
|
+
<blockquote>
|
964
|
+
<p>It is very likely than I am an idiot, but I’ve always found
|
965
|
+
parsing XML too hard, specially compared to JSON which is almost
|
966
|
+
too easy.</p>
|
967
|
+
</blockquote>
|
968
|
+
|
969
|
+
<p>“Almost too easy” are three words no one has ever said about XML.</p>
|
970
|
+
|
971
|
+
<div>
|
972
|
+
<a title="Permanent link to ‘The World’s First JSON Feed Viewer’" href="https://daringfireball.net/linked/2017/05/18/maxime-vaillancourt-json-feed-viewer"> ★ </a>
|
973
|
+
</div>
|
974
|
+
|
975
|
+
]]></content>
|
976
|
+
</entry><entry>
|
977
|
+
<title>Apple Is Testing an Apple Watch Glucose Monitor</title>
|
978
|
+
<link rel="alternate" type="text/html" href="http://www.cnbc.com/2017/05/18/apple-ceo-tim-cook-test-drove-glucose-monitor.html" />
|
979
|
+
<link rel="shorturl" type="text/html" href="http://df4.us/q07" />
|
980
|
+
<link rel="related" type="text/html" href="https://daringfireball.net/linked/2017/05/18/apple-watch-glucose" />
|
981
|
+
<id>tag:daringfireball.net,2017:/linked//6.33703</id>
|
982
|
+
<published>2017-05-18T20:24:52Z</published>
|
983
|
+
<updated>2017-05-18T20:24:54Z</updated>
|
984
|
+
<author>
|
985
|
+
<name>John Gruber</name>
|
986
|
+
<uri>http://daringfireball.net/</uri>
|
987
|
+
</author>
|
988
|
+
<content type="html" xml:base="https://daringfireball.net/linked/" xml:lang="en"><![CDATA[
|
989
|
+
<p>Christina Farr, reporting for CNBC:</p>
|
990
|
+
|
991
|
+
<blockquote>
|
992
|
+
<p>Tim Cook has been spotted at the Apple campus test-driving a
|
993
|
+
device that tracks blood sugar, which was connected to his
|
994
|
+
Apple Watch.</p>
|
995
|
+
|
996
|
+
<p>A source said that Cook was wearing a prototype glucose-tracker on
|
997
|
+
the Apple Watch, which points to future applications that would
|
998
|
+
make the device a “must have” for millions of people with diabetes
|
999
|
+
— or at risk for the disease.</p>
|
1000
|
+
|
1001
|
+
<p><a href="http://www.cnbc.com/2017/04/12/apple-working-on-glucose-sensors-diabetes-treatment.html">As CNBC reported last month</a>, Apple has a team in Palo Alto
|
1002
|
+
working on the “holy grail” for diabetes: Non-invasive and
|
1003
|
+
continuous glucose monitoring. The current glucose trackers on the
|
1004
|
+
market rely on tiny sensors penetrating the skin. Sources said the
|
1005
|
+
company is already conducting feasibility trials in the Bay Area.</p>
|
1006
|
+
</blockquote>
|
1007
|
+
|
1008
|
+
<p>Non-invasive continuous glucose monitoring would be a life-changer for anyone with diabetes. But I can’t even imagine how life-changing this will be for kids with diabetes and their parents.</p>
|
1009
|
+
|
1010
|
+
<div>
|
1011
|
+
<a title="Permanent link to ‘Apple Is Testing an Apple Watch Glucose Monitor’" href="https://daringfireball.net/linked/2017/05/18/apple-watch-glucose"> ★ </a>
|
1012
|
+
</div>
|
1013
|
+
|
1014
|
+
]]></content>
|
1015
|
+
</entry><entry>
|
1016
|
+
<title>CMD-D: Masters of Automation Conference</title>
|
1017
|
+
<link rel="alternate" type="text/html" href="https://www.cmddconf.com/" />
|
1018
|
+
<link rel="shorturl" type="text/html" href="http://df4.us/q06" />
|
1019
|
+
<link rel="related" type="text/html" href="https://daringfireball.net/linked/2017/05/18/cmd-d-conference" />
|
1020
|
+
<id>tag:daringfireball.net,2017:/linked//6.33702</id>
|
1021
|
+
<published>2017-05-18T19:53:32Z</published>
|
1022
|
+
<updated>2017-05-18T19:53:34Z</updated>
|
1023
|
+
<author>
|
1024
|
+
<name>John Gruber</name>
|
1025
|
+
<uri>http://daringfireball.net/</uri>
|
1026
|
+
</author>
|
1027
|
+
<content type="html" xml:base="https://daringfireball.net/linked/" xml:lang="en"><![CDATA[
|
1028
|
+
<p>This sounds very cool: a one-day conference in August devoted to Mac and iOS scripting and automation, hosted by Paul Kent, Naomi Pearce, and Sal Soghoian.</p>
|
1029
|
+
|
1030
|
+
<div>
|
1031
|
+
<a title="Permanent link to ‘CMD-D: Masters of Automation Conference’" href="https://daringfireball.net/linked/2017/05/18/cmd-d-conference"> ★ </a>
|
1032
|
+
</div>
|
1033
|
+
|
1034
|
+
]]></content>
|
1035
|
+
</entry><entry>
|
1036
|
+
<title>Final Cut Pro X and Closed Captions</title>
|
1037
|
+
<link rel="alternate" type="text/html" href="http://hammonwry.com/forgotten-again/" />
|
1038
|
+
<link rel="shorturl" type="text/html" href="http://df4.us/q05" />
|
1039
|
+
<link rel="related" type="text/html" href="https://daringfireball.net/linked/2017/05/18/fcpx-closed-captions" />
|
1040
|
+
<id>tag:daringfireball.net,2017:/linked//6.33701</id>
|
1041
|
+
<published>2017-05-18T16:42:06Z</published>
|
1042
|
+
<updated>2017-05-18T16:42:07Z</updated>
|
1043
|
+
<author>
|
1044
|
+
<name>John Gruber</name>
|
1045
|
+
<uri>http://daringfireball.net/</uri>
|
1046
|
+
</author>
|
1047
|
+
<content type="html" xml:base="https://daringfireball.net/linked/" xml:lang="en"><![CDATA[
|
1048
|
+
<p>Kevin Hamm:</p>
|
1049
|
+
|
1050
|
+
<blockquote>
|
1051
|
+
<p>Captions can be just text at timecode, which is simple. In their
|
1052
|
+
most complex, they are styled, located text at timecode. That’s
|
1053
|
+
it. Nothing more. I work in text and titles and timecode every day
|
1054
|
+
in every video I do, so there is no reason that this simple
|
1055
|
+
function isn’t baked in at this point. Words at timecode. That’s
|
1056
|
+
all it is.</p>
|
1057
|
+
|
1058
|
+
<p>That Apple is making their systems and products accessible is
|
1059
|
+
great. Xcode grants programmers the ability to build accessible
|
1060
|
+
apps, and has from the beginning, which is even better as it makes
|
1061
|
+
a massive part of the ecosystem accessible.</p>
|
1062
|
+
|
1063
|
+
<p>That Final Cut Pro hasn’t ever and still doesn’t create closed
|
1064
|
+
captions is a smudge on that image.</p>
|
1065
|
+
</blockquote>
|
1066
|
+
|
1067
|
+
<p>It seems bonkers to me that Final Cut Pro X doesn’t have support for closed captions. Coming from Apple, you’d think it would have <em>excellent</em> support for them. How does Apple create closed captions for their own videos?</p>
|
1068
|
+
|
1069
|
+
<div>
|
1070
|
+
<a title="Permanent link to ‘Final Cut Pro X and Closed Captions’" href="https://daringfireball.net/linked/2017/05/18/fcpx-closed-captions"> ★ </a>
|
1071
|
+
</div>
|
1072
|
+
|
1073
|
+
]]></content>
|
1074
|
+
</entry><entry>
|
1075
|
+
<title>Source Code for Panic Apps Stolen By Malware Thieves</title>
|
1076
|
+
<link rel="alternate" type="text/html" href="https://panic.com/blog/stolen-source-code/" />
|
1077
|
+
<link rel="shorturl" type="text/html" href="http://df4.us/q04" />
|
1078
|
+
<link rel="related" type="text/html" href="https://daringfireball.net/linked/2017/05/17/panic-handbrake-thieves" />
|
1079
|
+
<id>tag:daringfireball.net,2017:/linked//6.33700</id>
|
1080
|
+
<published>2017-05-17T18:26:52Z</published>
|
1081
|
+
<updated>2017-05-18T00:08:29Z</updated>
|
1082
|
+
<author>
|
1083
|
+
<name>John Gruber</name>
|
1084
|
+
<uri>http://daringfireball.net/</uri>
|
1085
|
+
</author>
|
1086
|
+
<content type="html" xml:base="https://daringfireball.net/linked/" xml:lang="en"><![CDATA[
|
1087
|
+
<p>Steven Frank:</p>
|
1088
|
+
|
1089
|
+
<blockquote>
|
1090
|
+
<p>Last week, for about three days, <a href="https://blog.malwarebytes.com/threat-analysis/mac-threat-analysis/2017/05/handbrake-hacked-to-drop-new-variant-of-proton-malware/">the macOS video transcoding app
|
1091
|
+
HandBrake</a> was compromised. One of the two download servers for
|
1092
|
+
HandBrake was serving up a special malware-infested version of the
|
1093
|
+
app, that, when launched, would essentially give hackers remote
|
1094
|
+
control of your computer.</p>
|
1095
|
+
|
1096
|
+
<p>In a case of extraordinarily bad luck, even for a guy that has a
|
1097
|
+
lot of bad computer luck, I happened to download HandBrake in that
|
1098
|
+
three day window, and my work Mac got pwned.</p>
|
1099
|
+
|
1100
|
+
<p>Long story short, <em>somebody, somewhere, now has quite a bit of
|
1101
|
+
source code to several of our apps</em>.</p>
|
1102
|
+
</blockquote>
|
1103
|
+
|
1104
|
+
<p>This is one hell of a story and quite a shock, but the crew at Panic kept their heads together and did the right thing: they’ve opened up completely and honestly, refused to deal with the blackmailer, and I think they are correctly unworried about their source code being leaked publicly.</p>
|
1105
|
+
|
1106
|
+
<div>
|
1107
|
+
<a title="Permanent link to ‘Source Code for Panic Apps Stolen By Malware Thieves’" href="https://daringfireball.net/linked/2017/05/17/panic-handbrake-thieves"> ★ </a>
|
1108
|
+
</div>
|
1109
|
+
|
1110
|
+
]]></content>
|
1111
|
+
</entry><entry>
|
1112
|
+
<title>Dave Itzkoff Profiles Jimmy Fallon for The New York Times</title>
|
1113
|
+
<link rel="alternate" type="text/html" href="https://www.nytimes.com/2017/05/17/arts/television/jimmy-fallon-tonight-show-interview-trump.html" />
|
1114
|
+
<link rel="shorturl" type="text/html" href="http://df4.us/q03" />
|
1115
|
+
<link rel="related" type="text/html" href="https://daringfireball.net/linked/2017/05/17/itzkoff-fallon" />
|
1116
|
+
<id>tag:daringfireball.net,2017:/linked//6.33699</id>
|
1117
|
+
<published>2017-05-17T17:33:40Z</published>
|
1118
|
+
<updated>2017-05-17T17:33:41Z</updated>
|
1119
|
+
<author>
|
1120
|
+
<name>John Gruber</name>
|
1121
|
+
<uri>http://daringfireball.net/</uri>
|
1122
|
+
</author>
|
1123
|
+
<content type="html" xml:base="https://daringfireball.net/linked/" xml:lang="en"><![CDATA[
|
1124
|
+
<p>Fascinating behind-the-scenes look at The Tonight Show, including a look inside Fallon’s briefcase (he’s got a Nintendo Switch in there).</p>
|
1125
|
+
|
1126
|
+
<div>
|
1127
|
+
<a title="Permanent link to ‘Dave Itzkoff Profiles Jimmy Fallon for The New York Times’" href="https://daringfireball.net/linked/2017/05/17/itzkoff-fallon"> ★ </a>
|
1128
|
+
</div>
|
1129
|
+
|
1130
|
+
]]></content>
|
1131
|
+
</entry><entry>
|
1132
|
+
<title>Announcing JSON Feed</title>
|
1133
|
+
<link rel="alternate" type="text/html" href="https://jsonfeed.org/2017/05/17/announcing_json_feed" />
|
1134
|
+
<link rel="shorturl" type="text/html" href="http://df4.us/q02" />
|
1135
|
+
<link rel="related" type="text/html" href="https://daringfireball.net/linked/2017/05/17/json-feed" />
|
1136
|
+
<id>tag:daringfireball.net,2017:/linked//6.33698</id>
|
1137
|
+
<published>2017-05-17T17:24:53Z</published>
|
1138
|
+
<updated>2017-05-17T17:56:42Z</updated>
|
1139
|
+
<author>
|
1140
|
+
<name>John Gruber</name>
|
1141
|
+
<uri>http://daringfireball.net/</uri>
|
1142
|
+
</author>
|
1143
|
+
<content type="html" xml:base="https://daringfireball.net/linked/" xml:lang="en"><![CDATA[
|
1144
|
+
<p>Brent Simmons and Manton Reece:</p>
|
1145
|
+
|
1146
|
+
<blockquote>
|
1147
|
+
<p>We — Manton Reece and Brent Simmons — have noticed that JSON has
|
1148
|
+
become the developers’ choice for APIs, and that developers will
|
1149
|
+
often go out of their way to avoid XML. JSON is simpler to read
|
1150
|
+
and write, and it’s less prone to bugs.</p>
|
1151
|
+
|
1152
|
+
<p>So we developed JSON Feed, a format similar to <a href="http://cyber.harvard.edu/rss/rss.html">RSS</a> and <a href="https://tools.ietf.org/html/rfc4287">Atom</a> but in
|
1153
|
+
JSON. It reflects the lessons learned from our years of work
|
1154
|
+
reading and publishing feeds.</p>
|
1155
|
+
</blockquote>
|
1156
|
+
|
1157
|
+
<p>I think this is a great idea, and a good spec. I even like the style in which <a href="https://jsonfeed.org/version/1">the spec</a> is written: for real humans (much like the RSS spec). If you want to see a real-life example, <a href="https://daringfireball.net/feeds/json">Daring Fireball has a JSON Feed</a>. I’ve got a good feeling about this project — the same sort of feeling I had <a href="https://daringfireball.net/2004/03/introducing_markdown">about Markdown</a> <a href="https://daringfireball.net/2004/03/dive_into_markdown">back in the day</a>.</p>
|
1158
|
+
|
1159
|
+
<div>
|
1160
|
+
<a title="Permanent link to ‘Announcing JSON Feed’" href="https://daringfireball.net/linked/2017/05/17/json-feed"> ★ </a>
|
1161
|
+
</div>
|
1162
|
+
|
1163
|
+
]]></content>
|
1164
|
+
</entry><entry>
|
1165
|
+
<title>New Apple Videos Highlight Real-World Accessibility</title>
|
1166
|
+
<link rel="alternate" type="text/html" href="http://mashable.com/2017/05/17/apple-accessibility-videos-disability/" />
|
1167
|
+
<link rel="shorturl" type="text/html" href="http://df4.us/q01" />
|
1168
|
+
<link rel="related" type="text/html" href="https://daringfireball.net/linked/2017/05/17/accessibility-apple" />
|
1169
|
+
<id>tag:daringfireball.net,2017:/linked//6.33697</id>
|
1170
|
+
<published>2017-05-17T06:03:01Z</published>
|
1171
|
+
<updated>2017-05-17T06:17:10Z</updated>
|
1172
|
+
<author>
|
1173
|
+
<name>John Gruber</name>
|
1174
|
+
<uri>http://daringfireball.net/</uri>
|
1175
|
+
</author>
|
1176
|
+
<content type="html" xml:base="https://daringfireball.net/linked/" xml:lang="en"><![CDATA[
|
1177
|
+
<p>Nice piece for Mashable by Katie Dupere on <a href="https://www.youtube.com/user/Apple/videos">a bunch of new videos in Apple’s YouTube channel</a>, highlighting real-world usage of iOS and MacOS accessibility features. People who can’t move, people who can’t talk, people who can’t see or hear — doing amazing things. Apple’s commitment to accessibility is one of my very favorite things about the company. It’s not just the right thing to do for people who truly need these features — it makes the products better for everyone.</p>
|
1178
|
+
|
1179
|
+
<p><strong>Update:</strong> <a href="http://www.loopinsight.com/2017/05/16/apple-videos-highlight-accessibility-achievements/?utm_source=loopinsight.com/">Jim Dalrymple has all 7 videos collected on one page</a>.</p>
|
1180
|
+
|
1181
|
+
<div>
|
1182
|
+
<a title="Permanent link to ‘New Apple Videos Highlight Real-World Accessibility’" href="https://daringfireball.net/linked/2017/05/17/accessibility-apple"> ★ </a>
|
1183
|
+
</div>
|
1184
|
+
|
1185
|
+
]]></content>
|
1186
|
+
</entry><entry>
|
1187
|
+
<title>Lyft and Waymo Reach Deal to Collaborate on Self-Driving Cars</title>
|
1188
|
+
<link rel="alternate" type="text/html" href="https://www.nytimes.com/2017/05/14/technology/lyft-waymo-self-driving-cars.html" />
|
1189
|
+
<link rel="shorturl" type="text/html" href="http://df4.us/q00" />
|
1190
|
+
<link rel="related" type="text/html" href="https://daringfireball.net/linked/2017/05/17/lyft-google" />
|
1191
|
+
<id>tag:daringfireball.net,2017:/linked//6.33696</id>
|
1192
|
+
<published>2017-05-17T05:20:45Z</published>
|
1193
|
+
<updated>2017-05-17T05:20:47Z</updated>
|
1194
|
+
<author>
|
1195
|
+
<name>John Gruber</name>
|
1196
|
+
<uri>http://daringfireball.net/</uri>
|
1197
|
+
</author>
|
1198
|
+
<content type="html" xml:base="https://daringfireball.net/linked/" xml:lang="en"><![CDATA[
|
1199
|
+
<p>Mike Isaac, writing for The New York Times:</p>
|
1200
|
+
|
1201
|
+
<blockquote>
|
1202
|
+
<p>Waymo, the self-driving car unit that operates under Google’s
|
1203
|
+
parent company, has signed a deal with the ride-hailing start-up
|
1204
|
+
Lyft, according to two people familiar with the agreement who
|
1205
|
+
spoke on the condition of anonymity because they were not
|
1206
|
+
authorized to speak publicly. The deal calls for the companies to
|
1207
|
+
work together to bring autonomous vehicle technology into the
|
1208
|
+
mainstream through pilot projects and product development efforts,
|
1209
|
+
these people said.</p>
|
1210
|
+
|
1211
|
+
<p>The deal was confirmed by Lyft and Waymo.</p>
|
1212
|
+
</blockquote>
|
1213
|
+
|
1214
|
+
<p>Who knows, maybe Google would have made this same deal with Lyft even in the alternate universe where Uber didn’t steal Google’s tech. But it sure looks like Uber has made a powerful enemy.</p>
|
1215
|
+
|
1216
|
+
<div>
|
1217
|
+
<a title="Permanent link to ‘Lyft and Waymo Reach Deal to Collaborate on Self-Driving Cars’" href="https://daringfireball.net/linked/2017/05/17/lyft-google"> ★ </a>
|
1218
|
+
</div>
|
1219
|
+
|
1220
|
+
]]></content>
|
1221
|
+
</entry><entry>
|
1222
|
+
<title>Long Live MP3</title>
|
1223
|
+
<link rel="alternate" type="text/html" href="https://marco.org/2017/05/15/mp3-isnt-dead" />
|
1224
|
+
<link rel="shorturl" type="text/html" href="http://df4.us/pzz" />
|
1225
|
+
<link rel="related" type="text/html" href="https://daringfireball.net/linked/2017/05/17/long-live-mp3" />
|
1226
|
+
<id>tag:daringfireball.net,2017:/linked//6.33695</id>
|
1227
|
+
<published>2017-05-17T05:03:28Z</published>
|
1228
|
+
<updated>2017-05-17T16:28:11Z</updated>
|
1229
|
+
<author>
|
1230
|
+
<name>John Gruber</name>
|
1231
|
+
<uri>http://daringfireball.net/</uri>
|
1232
|
+
</author>
|
1233
|
+
<content type="html" xml:base="https://daringfireball.net/linked/" xml:lang="en"><![CDATA[
|
1234
|
+
<p>Marco Arment:</p>
|
1235
|
+
|
1236
|
+
<blockquote>
|
1237
|
+
<p>Until a few weeks ago, there had never been an audio format that
|
1238
|
+
was small enough to be practical, widely supported, and had no
|
1239
|
+
patent restrictions, forcing <a href="http://shaver.off.net/diary/2010/01/23/html5-video-and-codecs/">difficult choices</a> and <a href="http://stackoverflow.com/questions/4923136/why-doesnt-firefox-support-the-mp3-file-format-in-audio">needless
|
1240
|
+
friction</a> upon the computing world. Now, at least for audio,
|
1241
|
+
that friction has officially ended. There’s finally a great choice
|
1242
|
+
without asterisks.</p>
|
1243
|
+
|
1244
|
+
<p><em>MP3 is supported by everything, everywhere, and is now
|
1245
|
+
patent-free.</em></p>
|
1246
|
+
</blockquote>
|
1247
|
+
|
1248
|
+
<p>I wasn’t paying attention last week when <a href="http://gizmodo.com/developers-of-the-mp3-have-officially-killed-it-1795205540">Gizmodo</a>, <a href="https://www.engadget.com/2017/05/12/mp3-is-dead-long-live-aac/">Engadget</a>, and <a href="http://www.npr.org/sections/therecord/2017/05/11/527829909/the-mp3-is-officially-dead-according-to-its-creators">NPR</a> got hoodwinked into writing “MP3 Is Dead” stories by an announcement from Fraunhofer pushing people to switch from the now-open MP3 to the still-patent-encumbered AAC.</p>
|
1249
|
+
|
1250
|
+
<p>On Twitter, Marco pointed to <a href="https://daringfireball.net/2007/04/some_facts_about_aac">this 10-year-old piece from yours truly</a>, describing the then-pipe-dream of Ogg Vorbis:</p>
|
1251
|
+
|
1252
|
+
<blockquote>
|
1253
|
+
<p>The ideal scenario would be for a genuinely open and free file
|
1254
|
+
format such as Ogg Vorbis to supplant MP3 as the de facto world
|
1255
|
+
standard. No patents, no licensing fees, a documented file format,
|
1256
|
+
open source libraries for encoding and decoding. That doesn’t seem
|
1257
|
+
to be in the cards, however. In the real world, major corporations
|
1258
|
+
only seem comfortable with multimedia formats backed by other
|
1259
|
+
large corporations.</p>
|
1260
|
+
</blockquote>
|
1261
|
+
|
1262
|
+
<p>Now that the MP3 patents have expired, the situation is even better, because MP3 has been so thoroughly vetted, patent-wise. Idealism seldom wins out in these format battles. But time always wins.</p>
|
1263
|
+
|
1264
|
+
<div>
|
1265
|
+
<a title="Permanent link to ‘Long Live MP3’" href="https://daringfireball.net/linked/2017/05/17/long-live-mp3"> ★ </a>
|
1266
|
+
</div>
|
1267
|
+
|
1268
|
+
]]></content>
|
1269
|
+
</entry><entry>
|
1270
|
+
<title>Engadget: ‘The First Television With Amazon Fire TV Built in Is Just Fine’</title>
|
1271
|
+
<link rel="alternate" type="text/html" href="https://www.engadget.com/2017/05/16/amazon-fire-tv-built-in-4k-tv/" />
|
1272
|
+
<link rel="shorturl" type="text/html" href="http://df4.us/pzy" />
|
1273
|
+
<link rel="related" type="text/html" href="https://daringfireball.net/linked/2017/05/16/fire-tv" />
|
1274
|
+
<id>tag:daringfireball.net,2017:/linked//6.33694</id>
|
1275
|
+
<published>2017-05-17T03:52:36Z</published>
|
1276
|
+
<updated>2017-05-17T03:52:38Z</updated>
|
1277
|
+
<author>
|
1278
|
+
<name>John Gruber</name>
|
1279
|
+
<uri>http://daringfireball.net/</uri>
|
1280
|
+
</author>
|
1281
|
+
<content type="html" xml:base="https://daringfireball.net/linked/" xml:lang="en"><![CDATA[
|
1282
|
+
<p>I think the big news isn’t that there’s a cheap TV with Fire built-in — it’s that Amazon is promoting it heavily on their home page. Google’s home page is probably <a href="https://daringfireball.net/linked/2009/11/06/google-advertising">still</a> the most valuable advertising real estate on the Internet, but Amazon’s is almost certainly more valuable for selling consumer goods, because people visiting Amazon are ready to buy.</p>
|
1283
|
+
|
1284
|
+
<div>
|
1285
|
+
<a title="Permanent link to ‘Engadget: ‘The First Television With Amazon Fire TV Built in Is Just Fine’’" href="https://daringfireball.net/linked/2017/05/16/fire-tv"> ★ </a>
|
1286
|
+
</div>
|
1287
|
+
|
1288
|
+
]]></content>
|
1289
|
+
</entry><entry>
|
1290
|
+
<title>Loog Guitars</title>
|
1291
|
+
<link rel="alternate" type="text/html" href="https://www.kickstarter.com/projects/loog/loog-pro-and-loog-mini-the-ultimate-beginners-guit" />
|
1292
|
+
<link rel="shorturl" type="text/html" href="http://df4.us/pzx" />
|
1293
|
+
<link rel="related" type="text/html" href="https://daringfireball.net/linked/2017/05/16/loog" />
|
1294
|
+
<id>tag:daringfireball.net,2017:/linked//6.33693</id>
|
1295
|
+
<published>2017-05-16T20:27:46Z</published>
|
1296
|
+
<updated>2017-05-20T03:46:03Z</updated>
|
1297
|
+
<author>
|
1298
|
+
<name>John Gruber</name>
|
1299
|
+
<uri>http://daringfireball.net/</uri>
|
1300
|
+
</author>
|
1301
|
+
<content type="html" xml:base="https://daringfireball.net/linked/" xml:lang="en"><![CDATA[
|
1302
|
+
<p>Rafael Atijas, founder of Loog Guitars:</p>
|
1303
|
+
|
1304
|
+
<blockquote>
|
1305
|
+
<p>Loog Guitars are small, 3-string guitars designed to make it fun
|
1306
|
+
and easy for anyone to play music. They come with flashcards and
|
1307
|
+
an app that get you playing songs on day one.</p>
|
1308
|
+
</blockquote>
|
1309
|
+
|
1310
|
+
<p>I don’t know much about guitars, but these look cool, the prices seem very reasonable, and <a href="https://itunes.apple.com/us/app/loog-academy/id1068590682?mt=8">the app</a> looks great. It’s a Kickstarter project, but it’s already fully-funded (several times over) and they expect to start shipping next month.</p>
|
1311
|
+
|
1312
|
+
<div>
|
1313
|
+
<a title="Permanent link to ‘Loog Guitars’" href="https://daringfireball.net/linked/2017/05/16/loog"> ★ </a>
|
1314
|
+
</div>
|
1315
|
+
|
1316
|
+
]]></content>
|
1317
|
+
</entry><entry>
|
1318
|
+
<title>Today at Apple Launches</title>
|
1319
|
+
<link rel="alternate" type="text/html" href="https://www.apple.com/today/" />
|
1320
|
+
<link rel="shorturl" type="text/html" href="http://df4.us/pzw" />
|
1321
|
+
<link rel="related" type="text/html" href="https://daringfireball.net/linked/2017/05/16/today-at-apple" />
|
1322
|
+
<id>tag:daringfireball.net,2017:/linked//6.33692</id>
|
1323
|
+
<published>2017-05-16T19:44:34Z</published>
|
1324
|
+
<updated>2017-05-17T16:27:58Z</updated>
|
1325
|
+
<author>
|
1326
|
+
<name>John Gruber</name>
|
1327
|
+
<uri>http://daringfireball.net/</uri>
|
1328
|
+
</author>
|
1329
|
+
<content type="html" xml:base="https://daringfireball.net/linked/" xml:lang="en"><![CDATA[
|
1330
|
+
<p>Educational classes, photo walks, and more — from your local Apple Store. This, I think, is Angela Ahrendts’s biggest project at Apple to date. This is not just a program for the major flagship stores — it’s a program for every single Apple Store around the world. <a href="https://daringfireball.net/linked/2017/04/26/today-at-apple">As I wrote a few weeks ago</a>, Apple’s retail stores are one of the most overlooked / underestimated advantages in all of technology.</p>
|
1331
|
+
|
1332
|
+
<p><a href="https://techcrunch.com/2017/05/16/apple-launches-a-new-website-for-its-expanded-set-of-educational-classes-now-open-for-sign-ups/">Via Sarah Perez</a>, whose TechCrunch story points out that “The launch kicking off this week includes 4,000 sessions per day across Apple’s stores.”</p>
|
1333
|
+
|
1334
|
+
<div>
|
1335
|
+
<a title="Permanent link to ‘Today at Apple Launches’" href="https://daringfireball.net/linked/2017/05/16/today-at-apple"> ★ </a>
|
1336
|
+
</div>
|
1337
|
+
|
1338
|
+
]]></content>
|
1339
|
+
</entry><entry>
|
1340
|
+
<title>Steven Levy Tours Apple Park</title>
|
1341
|
+
<link rel="alternate" type="text/html" href="https://www.wired.com/2017/05/apple-park-new-silicon-valley-campus" />
|
1342
|
+
<link rel="shorturl" type="text/html" href="http://df4.us/pzv" />
|
1343
|
+
<link rel="related" type="text/html" href="https://daringfireball.net/linked/2017/05/16/levy-apple-park" />
|
1344
|
+
<id>tag:daringfireball.net,2017:/linked//6.33691</id>
|
1345
|
+
<published>2017-05-16T19:03:18Z</published>
|
1346
|
+
<updated>2017-05-16T19:03:20Z</updated>
|
1347
|
+
<author>
|
1348
|
+
<name>John Gruber</name>
|
1349
|
+
<uri>http://daringfireball.net/</uri>
|
1350
|
+
</author>
|
1351
|
+
<content type="html" xml:base="https://daringfireball.net/linked/" xml:lang="en"><![CDATA[
|
1352
|
+
<p>Steven Levy, writing for Wired:</p>
|
1353
|
+
|
1354
|
+
<blockquote>
|
1355
|
+
<p>On a crisp and clear March day, more than five years after Jobs’
|
1356
|
+
death, I’m seated next to Jonathan Ive in the back of a Jeep
|
1357
|
+
Wrangler as we prepare to tour the nearly completed Apple Park,
|
1358
|
+
the name recently bestowed on the campus that Jobs pitched to the
|
1359
|
+
Cupertino City Council in 2011. At 50, Apple’s design chieftain
|
1360
|
+
still looks like the rugby player he once was, and he remains,
|
1361
|
+
despite fame, fortune, and a knighthood, the same soft-spoken Brit
|
1362
|
+
I met almost 20 years ago. We are both wearing white hard hats
|
1363
|
+
with a silver Apple logo above the brim; Ive’s is personalized
|
1364
|
+
with “Jony” underneath the iconic symbol. Dan Whisenhunt, the
|
1365
|
+
company’s head of facilities and a de facto manager of the
|
1366
|
+
project, comes with us. He too has a personalized hat. It is an
|
1367
|
+
active construction site on a tight deadline — the first
|
1368
|
+
occupants are supposedly moving in within 30 days of my visit,
|
1369
|
+
with 500 new employees arriving every week thereafter — and I
|
1370
|
+
felt a bit like one of the passengers on the first ride into
|
1371
|
+
Jurassic Park.</p>
|
1372
|
+
</blockquote>
|
1373
|
+
|
1374
|
+
<p>Fantastic piece. Hard not to get a little choked up thinking about it as Steve Jobs’s final product:</p>
|
1375
|
+
|
1376
|
+
<blockquote>
|
1377
|
+
<p>“Could we have cut a corner here or there?” Cook asks
|
1378
|
+
rhetorically. “It wouldn’t have been Apple. And it wouldn’t have
|
1379
|
+
sent the message to everybody working here every day that detail
|
1380
|
+
matters, that care matters.” That was what Jobs wanted — what he
|
1381
|
+
always wanted. And the current leaders of Apple are determined
|
1382
|
+
not to disappoint him in what is arguably his biggest, and is
|
1383
|
+
certainly his last, product launch. “I revere him,” Cook says.
|
1384
|
+
“And this was clearly his vision, his concept. Our biggest
|
1385
|
+
project ever.”</p>
|
1386
|
+
</blockquote>
|
1387
|
+
|
1388
|
+
<div>
|
1389
|
+
<a title="Permanent link to ‘Steven Levy Tours Apple Park’" href="https://daringfireball.net/linked/2017/05/16/levy-apple-park"> ★ </a>
|
1390
|
+
</div>
|
1391
|
+
|
1392
|
+
]]></content>
|
1393
|
+
</entry><entry>
|
1394
|
+
<title>When the World Is Led by a Child</title>
|
1395
|
+
<link rel="alternate" type="text/html" href="https://mobile.nytimes.com/2017/05/15/opinion/trump-classified-data.html?referer=https://t.co/nBwtm1zsnd" />
|
1396
|
+
<link rel="shorturl" type="text/html" href="http://df4.us/pzu" />
|
1397
|
+
<link rel="related" type="text/html" href="https://daringfireball.net/linked/2017/05/16/trump-brooks" />
|
1398
|
+
<id>tag:daringfireball.net,2017:/linked//6.33690</id>
|
1399
|
+
<published>2017-05-16T16:40:49Z</published>
|
1400
|
+
<updated>2017-05-16T16:40:51Z</updated>
|
1401
|
+
<author>
|
1402
|
+
<name>John Gruber</name>
|
1403
|
+
<uri>http://daringfireball.net/</uri>
|
1404
|
+
</author>
|
1405
|
+
<content type="html" xml:base="https://daringfireball.net/linked/" xml:lang="en"><![CDATA[
|
1406
|
+
<p>David Brooks has the line of the day:</p>
|
1407
|
+
|
1408
|
+
<blockquote>
|
1409
|
+
<p>We’ve got this perverse situation in which the vast analytic
|
1410
|
+
powers of the entire world are being spent trying to understand a
|
1411
|
+
guy whose thoughts are often just six fireflies beeping randomly
|
1412
|
+
in a jar.</p>
|
1413
|
+
</blockquote>
|
1414
|
+
|
1415
|
+
<div>
|
1416
|
+
<a title="Permanent link to ‘When the World Is Led by a Child’" href="https://daringfireball.net/linked/2017/05/16/trump-brooks"> ★ </a>
|
1417
|
+
</div>
|
1418
|
+
|
1419
|
+
]]></content>
|
1420
|
+
</entry><entry>
|
1421
|
+
<title>The Washington Post: ‘Trump Revealed Highly Classified Information to Russian Foreign Minister and Ambassador’</title>
|
1422
|
+
<link rel="alternate" type="text/html" href="https://www.washingtonpost.com/world/national-security/trump-revealed-highly-classified-information-to-russian-foreign-minister-and-ambassador/2017/05/15/530c172a-3960-11e7-9e48-c4f199710b69_story.html" />
|
1423
|
+
<link rel="shorturl" type="text/html" href="http://df4.us/pzs" />
|
1424
|
+
<link rel="related" type="text/html" href="https://daringfireball.net/linked/2017/05/15/trump-russia" />
|
1425
|
+
<id>tag:daringfireball.net,2017:/linked//6.33688</id>
|
1426
|
+
<published>2017-05-15T22:13:00Z</published>
|
1427
|
+
<updated>2017-05-15T22:15:57Z</updated>
|
1428
|
+
<author>
|
1429
|
+
<name>John Gruber</name>
|
1430
|
+
<uri>http://daringfireball.net/</uri>
|
1431
|
+
</author>
|
1432
|
+
<content type="html" xml:base="https://daringfireball.net/linked/" xml:lang="en"><![CDATA[
|
1433
|
+
<p>Greg Miller and Greg Jaffe, reporting for The Washington Post:</p>
|
1434
|
+
|
1435
|
+
<blockquote>
|
1436
|
+
<p>In his meeting with Lavrov, Trump seemed to be boasting about his
|
1437
|
+
inside knowledge of the looming threat. “I get great intel. I have
|
1438
|
+
people brief me on great intel every day,” the president said,
|
1439
|
+
according to an official with knowledge of the exchange.</p>
|
1440
|
+
|
1441
|
+
<p>Trump went on to discuss aspects of the threat that the United
|
1442
|
+
States learned only through the espionage capabilities of a key
|
1443
|
+
partner. He did not reveal the specific intelligence-gathering
|
1444
|
+
method, but he described how the Islamic State was pursuing
|
1445
|
+
elements of a specific plot and how much harm such an attack could
|
1446
|
+
cause under varying circumstances. Most alarmingly, officials
|
1447
|
+
said, Trump revealed the city in the Islamic State’s territory
|
1448
|
+
where the U.S. intelligence partner detected the threat.</p>
|
1449
|
+
|
1450
|
+
<p>The Washington Post is withholding most plot details, including
|
1451
|
+
the name of the city, at the urging of officials who warned that
|
1452
|
+
revealing them would jeopardize important intelligence
|
1453
|
+
capabilities.</p>
|
1454
|
+
</blockquote>
|
1455
|
+
|
1456
|
+
<p>Is Trump a Russian collaborator? A bumbling idiot? Both? No matter what the answer is, he’s unfit to be president. This would be comical if the stakes weren’t so high. If a cabinet secretary had blabbed about this they’d be fired on the spot.</p>
|
1457
|
+
|
1458
|
+
<div>
|
1459
|
+
<a title="Permanent link to ‘The Washington Post: ‘Trump Revealed Highly Classified Information to Russian Foreign Minister and Ambassador’’" href="https://daringfireball.net/linked/2017/05/15/trump-russia"> ★ </a>
|
1460
|
+
</div>
|
1461
|
+
|
1462
|
+
]]></content>
|
1463
|
+
</entry><entry>
|
1464
|
+
|
1465
|
+
<link rel="alternate" type="text/html" href="http://df.stashword.com/" />
|
1466
|
+
<link rel="shorturl" href="http://df4.us/pzt" />
|
1467
|
+
<link rel="related" type="text/html" href="https://daringfireball.net/feeds/sponsors/2017/05/stashword_ios_app_and_website" />
|
1468
|
+
<id>tag:daringfireball.net,2017:/feeds/sponsors//11.33689</id>
|
1469
|
+
<author><name>Daring Fireball Department of Commerce</name></author>
|
1470
|
+
<published>2017-05-15T18:52:31-04:00</published>
|
1471
|
+
<updated>2017-05-20T15:34:13-04:00</updated>
|
1472
|
+
<content type="html" xml:base="https://daringfireball.net/feeds/sponsors/" xml:lang="en"><![CDATA[
|
1473
|
+
<p>Stashword’s iOS app is a simple yet feature rich password manager trusted by thousands of users. Stashword is not just an incredible password manager, it is also a secure digital vault where you can save, organize and share notes, codes, bank information, credit cards, and more. You can even scan and save documents such as your drivers license, insurance, passport etc.</p>
|
1474
|
+
|
1475
|
+
<p>Stashword is free to try for 15 days. Paid membership enables you to synchronize across all your devices and use their full-featured website <a href="http://www.stashword.com/">www.stashword.com</a>. For this week only, yearly membership is $7.99, which is 20 percent off the regular price.</p>
|
1476
|
+
|
1477
|
+
<div>
|
1478
|
+
<a title="Permanent link to ‘Stashword iOS App and Website’" href="https://daringfireball.net/feeds/sponsors/2017/05/stashword_ios_app_and_website"> ★ </a>
|
1479
|
+
</div>
|
1480
|
+
|
1481
|
+
]]></content>
|
1482
|
+
<title>[Sponsor] Stashword iOS App and Website</title></entry><entry>
|
1483
|
+
|
1484
|
+
<link rel="alternate" type="text/html" href="https://daringfireball.net/2017/05/dropping_tech_giants" />
|
1485
|
+
<link rel="shorturl" href="http://df4.us/pzj" />
|
1486
|
+
<id>tag:daringfireball.net,2017://1.33679</id>
|
1487
|
+
<published>2017-05-12T15:58:22Z</published>
|
1488
|
+
<updated>2017-05-14T20:26:47Z</updated>
|
1489
|
+
<author>
|
1490
|
+
<name>John Gruber</name>
|
1491
|
+
<uri>http://daringfireball.net/</uri>
|
1492
|
+
</author>
|
1493
|
+
<summary type="text">My answer to Farhad Manjoo’s question: “If an evil monarch forced you to choose, in what order would you give up these inescapable giants of tech?”</summary>
|
1494
|
+
<content type="html" xml:base="https://daringfireball.net/" xml:lang="en"><![CDATA[
|
1495
|
+
<p><a href="https://www.nytimes.com/interactive/2017/05/10/technology/Ranking-Apple-Amazon-Facebook-Microsoft-Google.html">Great interactive feature by Farhad Manjoo for The New York Times</a>:</p>
|
1496
|
+
|
1497
|
+
<blockquote>
|
1498
|
+
<p>Apple, Amazon, Facebook, Microsoft and Alphabet, the parent
|
1499
|
+
company of Google, are not just the largest technology companies
|
1500
|
+
in the world. As I’ve argued repeatedly in my column, they are
|
1501
|
+
also becoming the most powerful companies of any kind, essentially
|
1502
|
+
inescapable for any consumer or business that wants to participate
|
1503
|
+
in the modern world. But which of the Frightful Five is most
|
1504
|
+
unavoidable? I ponder the question in my column this week.</p>
|
1505
|
+
|
1506
|
+
<p>But what about you? If an evil monarch forced you to choose, in
|
1507
|
+
what order would you give up these inescapable giants of tech?</p>
|
1508
|
+
</blockquote>
|
1509
|
+
|
1510
|
+
<p>Great question. I love thought exercises.</p>
|
1511
|
+
|
1512
|
+
<p>My order (from first dropped to last):</p>
|
1513
|
+
|
1514
|
+
<ol>
|
1515
|
+
<li><p>Facebook. I love Instagram, but could live without it. I don’t use anything else Facebook offers.</p></li>
|
1516
|
+
<li><p>Microsoft. The only Microsoft product I use regularly is Skype, for podcasting, and I suspect I could find another solution. (If I couldn’t, I might have to rethink my answer here.)</p></li>
|
1517
|
+
<li><p>Amazon. I buy stuff from Amazon almost every week. I just counted — 11 orders so far in 2017. My wife buys stuff from Amazon even more frequently. But just about anything we buy at Amazon, we <em>could</em> buy elsewhere. It’d be painful to replace, but not irreplaceable. There are a couple of shows exclusive to Amazon Prime that I enjoy, but none that I love.</p></li>
|
1518
|
+
<li><p>Alphabet. I already use DuckDuckGo as my default search engine, so giving up Google search would be frustrating at times, but not a deal breaker. I use a few email accounts backed by Gmail, but I actually dislike Gmail, and have been procrastinating on moving all my mail to <a href="https://www.fastmail.com/">FastMail</a> for years. I despise Google Docs. I don’t use any Android devices other than as a curiosity. I greatly prefer Safari over Chrome. YouTube, however, is irreplaceable, and so essential that it pretty much singlehandedly catapults Alphabet to #4 in my list.</p></li>
|
1519
|
+
<li><p>Apple. I mean, come on. If not for Apple I’d be stuck using computers I don’t like and a phone that I consider a distant second-best. With all the other companies on the list, what I’d miss most are certain of their services — Instagram, Skype, Amazon’s store, YouTube — but Apple is the only company in the world whose hardware I consider irreplaceable. And you need the hardware to make best use of the services from any other companies. And that doesn’t even touch upon Apple’s crown jewels: the MacOS and iOS software platforms.</p></li>
|
1520
|
+
</ol>
|
1521
|
+
|
1522
|
+
|
1523
|
+
|
1524
|
+
]]></content>
|
1525
|
+
<title>★ Dropping Tech Giants</title></entry><entry>
|
1526
|
+
|
1527
|
+
<link rel="alternate" type="text/html" href="https://daringfireball.net/2017/05/apples_china_problem_wechat" />
|
1528
|
+
<link rel="shorturl" href="http://df4.us/pz6" />
|
1529
|
+
<id>tag:daringfireball.net,2017://1.33666</id>
|
1530
|
+
<published>2017-05-05T18:37:24Z</published>
|
1531
|
+
<updated>2017-05-06T01:58:08Z</updated>
|
1532
|
+
<author>
|
1533
|
+
<name>John Gruber</name>
|
1534
|
+
<uri>http://daringfireball.net/</uri>
|
1535
|
+
</author>
|
1536
|
+
<summary type="text">Hardware differentiated by *superior, exclusive* software is the key to understanding Apple. And it might explain the iPhone’s sluggish sales in China.</summary>
|
1537
|
+
<content type="html" xml:base="https://daringfireball.net/" xml:lang="en"><![CDATA[
|
1538
|
+
<p><a href="https://stratechery.com/2017/apples-china-problem/">Ben Thompson had a great column this week</a>, in the wake of Apple’s quarterly results and Microsoft’s announcement of the Surface Laptop:</p>
|
1539
|
+
|
1540
|
+
<blockquote>
|
1541
|
+
<p>Did you hear about the new Microsoft Surface Laptop? The <a href="https://twitter.com/reckless/status/859448810187235330">usual
|
1542
|
+
suspects</a> are claiming it’s a MacBook competitor, which is
|
1543
|
+
true insomuch as it is a laptop. In truth, though, the Surface
|
1544
|
+
Laptop isn’t a MacBook competitor at all for the rather obvious
|
1545
|
+
reason that it runs Windows, while the MacBook runs MacOS. This
|
1546
|
+
has always been the foundation of Apple’s business model:
|
1547
|
+
<a href="https://stratechery.com/2016/everything-as-a-service/">hardware differentiated by software</a> such that said hardware
|
1548
|
+
can be sold with a margin much greater than nominal competitors
|
1549
|
+
running a commodity operating system.</p>
|
1550
|
+
</blockquote>
|
1551
|
+
|
1552
|
+
<p>Hardware differentiated by <em>superior, exclusive</em> software is the key to understanding Apple. It’s the reason the company was founded. Apple II’s were the best personal computer hardware <em>and</em> had the best software. Part of why Woz is so venerated is that he was unimaginably gifted at both hardware <em>and</em> <a href="http://gizmodo.com/how-steve-wozniak-wrote-basic-for-the-original-apple-fr-1570573636">software</a>. Hardware differentiated by software is how Apple survived in the late ’90s, when the company was struggling. It explains all the company’s success after that: the iPod, the resurgence of the Mac, iPhone, iPad, and Apple Watch. Any comparison between Microsoft’s Surface Laptop and Apple’s MacBooks that doesn’t place heavy emphasis on the value of MacOS is vapid.</p>
|
1553
|
+
|
1554
|
+
<p>Thompson then turns to Apple’s languishing iPhone sales in China:</p>
|
1555
|
+
|
1556
|
+
<blockquote>
|
1557
|
+
<p>But that is not what is going on in most of the world: plenty of
|
1558
|
+
folks — more than last year — are happy to buy the iPhone 7,
|
1559
|
+
even though it doesn’t look much different than the iPhone 6.
|
1560
|
+
After all, if you need a new phone, and you want iOS, you don’t
|
1561
|
+
have much choice! Except, again, for China: that is the country
|
1562
|
+
where the appearance of the iPhone matters most; Apple’s
|
1563
|
+
problem, though, is that in China that is the only thing that
|
1564
|
+
matters at all.</p>
|
1565
|
+
|
1566
|
+
<p>The fundamental issue is this: unlike the rest of the world, in
|
1567
|
+
China the most important layer of the smartphone stack is not the
|
1568
|
+
phone’s operating system. Rather, it is WeChat. Connie Chan of
|
1569
|
+
Andreessen Horowitz <a href="http://a16z.com/2015/08/06/wechat-china-mobile-first/">tried to explain in 2015</a> just how integrated
|
1570
|
+
WeChat is into the daily lives of nearly <a href="http://mp.weixin.qq.com/s/5d6Th5wndmJT25cRHemZNg">900 million Chinese</a>, and
|
1571
|
+
that integration has only grown since then: every aspect of a
|
1572
|
+
typical Chinese person’s life, not just online but also off is
|
1573
|
+
conducted through a single app (and, to the extent other apps are
|
1574
|
+
used, they are often games promoted through WeChat).</p>
|
1575
|
+
|
1576
|
+
<p>There is nothing in any other country that is comparable: not
|
1577
|
+
LINE, not WhatsApp, not Facebook. All of those are about
|
1578
|
+
communication or wasting time: WeChat is that, but it is also for
|
1579
|
+
reading news, for hailing taxis, for paying for lunch (try and pay
|
1580
|
+
with cash for lunch, and you’ll look like a luddite), for
|
1581
|
+
accessing government resources, for business. For all intents and
|
1582
|
+
purposes WeChat is your phone, and to a far greater extent in
|
1583
|
+
China than anywhere else, your phone is everything.</p>
|
1584
|
+
</blockquote>
|
1585
|
+
|
1586
|
+
<p>As Thompson adds in a footnote, “Or, to put it another way, the operating system of China is WeChat, not iOS/Android.”</p>
|
1587
|
+
|
1588
|
+
<p>Thompson cites a staggering statistic: among existing iPhone users in China who bought a new phone in 2016, only 50 percent of them bought another iPhone. That is an incredible statistical outlier compared to iPhone users in the rest of the world, where Apple’s retention rates hover around the mid-80s.</p>
|
1589
|
+
|
1590
|
+
<p><a href="http://www.businessinsider.com/iphone-users-abandon-loyalty-to-apple-2016-11">Here’s a Business Insider report from November of last year</a>, with retention statistics from 2014 through 2016 from UBS analysts Steven Milunovich and Benjamin Wilson. Business Insider leads with the iPhone’s slowly declining retention rate globally, but the real story is halfway down the page, in <a href="http://static4.businessinsider.com/image/5818d4cbdd089533548b4991-1015/screen%20shot%202016-11-01%20at%2016.29.01.png">this chart</a>.</p>
|
1591
|
+
|
1592
|
+
<p>According to that research from UBS, iPhone retention rates hover in the mid-to-high 80s in the U.S., U.K., and Germany. In Japan they’re in the mid-70s, but holding roughly steady. China’s numbers have plummeted — and these numbers from UBS (in the mid-50s for Q4 2016) are in line with the 50 percent number in the Chinese survey Thompson cited.</p>
|
1593
|
+
|
1594
|
+
<p>So here’s Apple’s China problem: Chinese iPhone users aren’t nearly as loyal to the iPhone platform as iPhone users elsewhere are. This is already hurting Apple financially. Apple’s Q2 2017 financial results (announced this week) were, overall, OK. But other than China, they were actually good. The drop in iPhone sales in China was so severe, and China is so big, that it singlehandedly turned a good quarter into a so-so quarter.</p>
|
1595
|
+
|
1596
|
+
<p>I subtly disagree with Ben Thompson on one point. Thompson attributes the iPhone’s slide in China to two factors:</p>
|
1597
|
+
|
1598
|
+
<ol>
|
1599
|
+
<li>The whole “the operating system of China is WeChat, not iOS/Android” thing.</li>
|
1600
|
+
<li>The staleness of the iPhone 7 form factor.</li>
|
1601
|
+
</ol>
|
1602
|
+
|
1603
|
+
<p>Thompson knows Chinese culture well — he lives in Taipei, visits China often, and speaks Mandarin. My grasp of Chinese culture is rudimentary at best, and I’ve never traveled to Asia. So I defer to him on the point that the iPhone as a status symbol is more important in China than it is elsewhere.</p>
|
1604
|
+
|
1605
|
+
<p>Thompson, though, I think places too much weight on the fact that at a glance, some models of the iPhone 7 are indistinguishable from the iPhone 6 and 6S. Thompson argues that this is more of a problem in status-conscious China than it is elsewhere — that in China, there are many people who forego an upgrade to an iPhone 7 because other people won’t be able to tell that it isn’t, say, a boring two-year-old iPhone 6. I just don’t buy that. For one thing, the black and especially jet black iPhone 7 models <em>are</em> instantly recognizable as the latest and greatest.</p>
|
1606
|
+
|
1607
|
+
<p>But more importantly, I just think the whole “<em>if it doesn’t have an altogether new form factor, it’s boring</em>” thing is hogwash. <a href="http://daringfireball.net/2016/09/design_as_branding">I wrote an entire column about this</a> when the iPhone 7 debuted, and won’t rehash the whole argument here. But I am convinced this viewpoint is mostly that of the tech and gadget obsessed.</p>
|
1608
|
+
|
1609
|
+
<p>Again, I’ll concede that the status symbol aspect of a high-end smartphone may well be more important in China than anywhere else in the world. But even if I also concede that the iPhone 7’s mostly-like-the-iPhone-6 form factor is a problem for the Chinese market, if the iOS platform engendered the loyalty in China that it does elsewhere, the result would be Chinese iPhone owners waiting another year for the <em>next</em> iPhone. Instead, according to the market research cited above, half of the Chinese iPhone owners who bought a new phone in 2016 switched to an Android device. There are some fine looking Android phones at the high end of the market, but there are none that, based on form factor alone, would explain this. And none of them have anything close to the luxury brand prestige that Apple does.</p>
|
1610
|
+
|
1611
|
+
<p>In Apple’s “hardware differentiated by software” formula, the software is more important than the hardware. That’s why gadget writers so often get Apple wrong: they’re focused solely on hardware — the object, not the experience of using the object. That’s also why the financial press so often gets Apple wrong: they focus only on the hardware because that’s where the money comes from.</p>
|
1612
|
+
|
1613
|
+
<p>If forced to choose, I would much rather run iOS on a Google Pixel than Android on an iPhone 7. I would rather run MacOS on a ThinkPad than Windows on a MacBook Pro.<sup id="fnr1-2017-05-05"><a href="#fn1-2017-05-05">1</a></sup> Whenever I bring up this thought experiment — would you rather run Apple’s software platform on non-Apple hardware or run some other software platform on Apple hardware — I get email from readers who say they actually do choose Apple products, especially MacBooks, for the hardware. I believe them, but those are the sort of customers with the least loyalty to Apple. If all you depend on is, say, Chrome, a text editor, and a terminal, it’s easy to switch to another laptop brand. If you depend on native Mac and iOS apps, iCloud, and iMessage, it’s arduous, at best, to switch.</p>
|
1614
|
+
|
1615
|
+
<p>If it really is true that “the operating system of China is WeChat, not iOS/Android”, that’s the whole ballgame right there. Again, my disagreement with Thompson here is subtle. He even describes WeChat’s centrality to the Chinese smartphone stack as “the fundamental issue”, leaving the supposed boringness of the iPhone 6S and 7 as a secondary issue. My difference with Thompson is that I don’t think the iPhone 6S/7 hardware is a problem at all. Personally, I think the iPhone 7 is such a great phone, and the 7 Plus in particular has such a great camera, that the quality of the latest iPhone hardware, including how it looks, shows just how much of a problem it is that WeChat, not iOS, is central to the iPhone experience in China.</p>
|
1616
|
+
|
1617
|
+
<p>That’s a real problem for Apple, because even if Thompson is right (and I’m wrong) and Apple <em>does</em> have a boring-looking-hardware problem in China, they can (and seem poised to) remedy that by releasing exciting new iPhone hardware this year. But if the problem is that iOS engenders far less platform loyalty in China because of WeChat’s centrality — or even worse, if WeChat is central <em>and</em> better on Android than it is on iOS — there’s no easy fix for Apple.</p>
|
1618
|
+
|
1619
|
+
<h2>Postscript</h2>
|
1620
|
+
|
1621
|
+
<p>For those of you like me, who know very little about WeChat, this 2015 piece by Connie Chan (as linked to by Thompson) is a terrific introduction: “<a href="http://a16z.com/2015/08/06/wechat-china-mobile-first/">When One App Rules Them All: The Case of WeChat and Mobile in China</a>”.</p>
|
1622
|
+
|
1623
|
+
<div class="footnotes">
|
1624
|
+
<hr />
|
1625
|
+
<ol>
|
1626
|
+
<li id="fn1-2017-05-05">
|
1627
|
+
<p>I always use ThinkPads as my go-to example of high-quality PC hardware; perhaps I should start using Microsoft Surfaces? <a href="#fnr1-2017-05-05" class="footnoteBackLink" title="Jump back to footnote 1 in the text.">↩︎</a></p>
|
1628
|
+
</li>
|
1629
|
+
</ol>
|
1630
|
+
</div>
|
1631
|
+
|
1632
|
+
|
1633
|
+
|
1634
|
+
]]></content>
|
1635
|
+
<title>★ Apple’s China Problem: WeChat</title></entry><entry>
|
1636
|
+
|
1637
|
+
<link rel="alternate" type="text/html" href="https://daringfireball.net/2017/04/apple_watch_success" />
|
1638
|
+
<link rel="shorturl" href="http://df4.us/pxx" />
|
1639
|
+
<id>tag:daringfireball.net,2017://1.33621</id>
|
1640
|
+
<published>2017-04-24T22:28:32Z</published>
|
1641
|
+
<updated>2017-04-25T01:47:44Z</updated>
|
1642
|
+
<author>
|
1643
|
+
<name>John Gruber</name>
|
1644
|
+
<uri>http://daringfireball.net/</uri>
|
1645
|
+
</author>
|
1646
|
+
<summary type="text">These two facts are both true: Apple Watch sales are a rounding error compared to the iPhone, and Apple Watch is a smash hit compared to traditional watches and other wearable devices.</summary>
|
1647
|
+
<content type="html" xml:base="https://daringfireball.net/" xml:lang="en"><![CDATA[
|
1648
|
+
<p>Mike Murphy, writing for Quartz, “<a href="https://qz.com/967256/two-years-after-its-launch-the-apple-watch-hasnt-made-a-difference-at-apples-revenue-streams-aapl/">Two Years After Its Launch, the Apple Watch Hasn’t Made a Difference at Apple</a>”:</p>
|
1649
|
+
|
1650
|
+
<blockquote>
|
1651
|
+
<p>Apple’s biggest launch since the iPad in 2010, the Apple Watch was
|
1652
|
+
expected to be a hit: Given the massive financial success of the
|
1653
|
+
iPhone, it stood to reason that a companion device might be
|
1654
|
+
something customers craved.</p>
|
1655
|
+
|
1656
|
+
<p>Not so much. Apple has never shared hard numbers on how many
|
1657
|
+
wearables it has sold, and doesn’t even break out Watch sales in
|
1658
|
+
its quarterly earnings report. Instead, the device is bundled into
|
1659
|
+
Apple’s “Other products,” which the company says includes, “Apple
|
1660
|
+
TV, Apple Watch, Beats products, iPod and Apple-branded and
|
1661
|
+
third-party accessories.”</p>
|
1662
|
+
</blockquote>
|
1663
|
+
|
1664
|
+
<p>These articles come out like clockwork every 3 months, as Apple’s earnings report draws near. Apple told us they were not going to report hard numbers on Apple Watch right from the start, six months before it shipped. They want to keep them secret for competitive reasons.</p>
|
1665
|
+
|
1666
|
+
<blockquote>
|
1667
|
+
<p>Two years and two iterations after its launch, the Apple Watch has
|
1668
|
+
not proven to be as indispensable as the iPhone, or even as
|
1669
|
+
lucrative as the Mac, the iPad, or Apple’s services businesses.
|
1670
|
+
It’s unclear whether an iPhone-like overhaul, or attempts to
|
1671
|
+
market the watch directly to athletes or millennials, will
|
1672
|
+
ultimately make a difference.</p>
|
1673
|
+
</blockquote>
|
1674
|
+
|
1675
|
+
<p>(“Two years and two iterations after its launch” — I don’t know if that’s a mistake, if Murphy is counting WatchOS releases, or if he’s counting Series 1 as a full hardware iteration. But it’s sloppy writing. Most people would surely agree that there’s been only one iteration since launch, the Series 2 watches released last September.)</p>
|
1676
|
+
|
1677
|
+
<p>The nut of every “Apple Watch is a dud” story is the fact that it’s clearly not an iPhone-size business. But that can’t be the only measure of success. The iPhone is the biggest and most successful consumer product in the history of the world. Nothing compares to the smartphone market, and it’s possible nothing else will in our lifetimes. You and I may never again see a product as profitable as the iPhone — not just from Apple, but from any company in any industry. Or maybe we will. It’s a complete unknown.</p>
|
1678
|
+
|
1679
|
+
<p>But if Apple gets it into its head that they should only work on iPhone-sized opportunities, it would paralyze the company. In baseball terms, it’s fine for Apple to hit a bunch of singles while waiting for their next home run. According to Apple, <a href="https://www.wareable.com/apple/watch-sales-rolex-tim-cook-556">they had more watch sales by revenue in 2015 than any company other than Rolex</a>, and Apple’s “Other” category, which is where Watch sales are accounted for, <a href="https://images.apple.com/pr/pdf/q1fy17datasum.pdf">had a near record-breaking holiday quarter</a> three months ago, suggesting strongly that Watch sales were up over the year-ago holiday quarter.</p>
|
1680
|
+
|
1681
|
+
<p>These two facts are both true: Apple Watch sales are a rounding error compared to the iPhone, and Apple Watch is a smash hit compared to traditional watches and other wearable devices.</p>
|
1682
|
+
|
1683
|
+
|
1684
|
+
|
1685
|
+
]]></content>
|
1686
|
+
<title>★ Judging Apple Watch’s Success</title></entry><entry>
|
1687
|
+
|
1688
|
+
<link rel="alternate" type="text/html" href="https://daringfireball.net/2017/04/uber_identifying_and_tagging_iphones" />
|
1689
|
+
<link rel="shorturl" href="http://df4.us/pxr" />
|
1690
|
+
<id>tag:daringfireball.net,2017://1.33615</id>
|
1691
|
+
<published>2017-04-24T00:54:36Z</published>
|
1692
|
+
<updated>2017-04-24T03:19:56Z</updated>
|
1693
|
+
<author>
|
1694
|
+
<name>John Gruber</name>
|
1695
|
+
<uri>http://daringfireball.net/</uri>
|
1696
|
+
</author>
|
1697
|
+
<summary type="text">A lot of people are jumping to the conclusion that Uber was somehow tracking the location of users even after they deleted the Uber app, but the word “track” only appears in the article in the context of Kalanick having “excelled at running track and playing football” in high school.</summary>
|
1698
|
+
<content type="html" xml:base="https://daringfireball.net/" xml:lang="en"><![CDATA[
|
1699
|
+
<p><a href="https://mobile.nytimes.com/2017/04/23/technology/travis-kalanick-pushes-uber-and-himself-to-the-precipice.html">Mike Isaac’s profile of Uber CEO Travis Kalanick for The New York Times</a> contains an accusation that, on its face, sounds outrageous:</p>
|
1700
|
+
|
1701
|
+
<blockquote>
|
1702
|
+
<p>For months, Mr. Kalanick had pulled a fast one on Apple by
|
1703
|
+
directing his employees to help camouflage the ride-hailing app
|
1704
|
+
from Apple’s engineers. The reason? So Apple would not find out
|
1705
|
+
that Uber had been secretly identifying and tagging iPhones even
|
1706
|
+
after its app had been deleted and the devices erased — a fraud
|
1707
|
+
detection maneuver that violated Apple’s privacy guidelines.</p>
|
1708
|
+
|
1709
|
+
<p>But Apple was on to the deception, and when Mr. Kalanick arrived
|
1710
|
+
at the midafternoon meeting sporting his favorite pair of bright
|
1711
|
+
red sneakers and hot-pink socks, Mr. Cook was prepared. “So, I’ve
|
1712
|
+
heard you’ve been breaking some of our rules,” Mr. Cook said in
|
1713
|
+
his calm, Southern tone. Stop the trickery, Mr. Cook then
|
1714
|
+
demanded, or Uber’s app would be kicked out of Apple’s App Store.</p>
|
1715
|
+
|
1716
|
+
<p>For Mr. Kalanick, the moment was fraught with tension. If Uber’s
|
1717
|
+
app was yanked from the App Store, it would lose access to
|
1718
|
+
millions of iPhone customers — essentially destroying the
|
1719
|
+
ride-hailing company’s business. So Mr. Kalanick acceded.</p>
|
1720
|
+
</blockquote>
|
1721
|
+
|
1722
|
+
<p>“Secretly identifying and tagging iPhones even after its app had been deleted and the devices erased” is a rather startling accusation, because it sounds like it should be technically impossible. It’s also very much unclear what information Uber was able to glean from these “identified and tagged” iPhones other than some sort of unique device identifier. Unfortunately, the Times story is very short on details here. But note that the Times is <em>not</em> saying Uber was “tracking” these phones. A lot of people are jumping to the conclusion that Uber was somehow tracking the location of users even after they deleted the Uber app, but the word “track” only appears in the article in the context of Kalanick having “excelled at running track and playing football” in high school.</p>
|
1723
|
+
|
1724
|
+
<p>[<strong>Update:</strong> This explains a lot, regarding the hubbub today over this story. <a href="http://newsdiffs.org/diff/1383350/1383404/https%3A/www.nytimes.com/2017/04/23/technology/travis-kalanick-pushes-uber-and-himself-to-the-precipice.html">When first published, the Times story <em>did</em> use the word “tracking”</a>, but a subsequent revision changed that word to “identifying and tagging”.]</p>
|
1725
|
+
|
1726
|
+
<p>Reading between the lines, it is possible — and my gut says quite probable — that Uber wasn’t <em>doing</em> anything on these iPhones other than when its app was installed and running on them. From the end of the article:</p>
|
1727
|
+
|
1728
|
+
<blockquote>
|
1729
|
+
<p>The idea of fooling Apple, the main distributor of Uber’s app,
|
1730
|
+
began in 2014.</p>
|
1731
|
+
|
1732
|
+
<p>At the time, Uber was dealing with widespread account fraud in
|
1733
|
+
places like China, where tricksters bought stolen iPhones that
|
1734
|
+
were erased of their memory and resold. Some Uber drivers there
|
1735
|
+
would then create dozens of fake email addresses to sign up for
|
1736
|
+
new Uber rider accounts attached to each phone, and request rides
|
1737
|
+
from those phones, which they would then accept. Since Uber was
|
1738
|
+
handing out incentives to drivers to take more rides, the drivers
|
1739
|
+
could earn more money this way.</p>
|
1740
|
+
|
1741
|
+
<p>To halt the activity, Uber engineers assigned a persistent
|
1742
|
+
identity to iPhones with a small piece of code, a practice called
|
1743
|
+
“fingerprinting.” Uber could then identify an iPhone and prevent
|
1744
|
+
itself from being fooled even after the device was erased of its
|
1745
|
+
contents.</p>
|
1746
|
+
|
1747
|
+
<p>There was one problem: Fingerprinting iPhones broke Apple’s rules.
|
1748
|
+
Mr. Cook believed that wiping an iPhone should ensure that no
|
1749
|
+
trace of the owner’s identity remained on the device.</p>
|
1750
|
+
</blockquote>
|
1751
|
+
|
1752
|
+
<p>What Isaac is reporting here doesn’t require any code running on an iPhone other than when the Uber app is itself installed and launched. I’m speculating here, but it could be something like this:</p>
|
1753
|
+
|
1754
|
+
<ol>
|
1755
|
+
<li><p>The Uber app, while installed, fingerprints the device somehow, and reports the fingerprint home to Uber’s servers, where it is tied to the user’s Uber account. (All iPhones have a Unique Device Identifier — “UDID” — but <a href="http://lifehacker.com/5898282/what-a-udid-is-and-why-apples-rejecting-apps-that-want-yours">Apple banned third-party apps from accessing it in 2012</a>. Uber either found a way to access UDIDs surreptitiously, or created some other way of uniquely identifying devices even after they’ve been wiped. It would be good to know exactly what they did, but for the sake of my argument here it doesn’t matter.)</p></li>
|
1756
|
+
<li><p>The Uber app is deleted from the device and/or device is wiped. At this point, Uber knows the fingerprint for the device, but can’t use it to track the device in any way, <em>and they don’t care</em>, because until someone reinstalls the Uber app on the phone it isn’t being used to book fraudulent rides.</p></li>
|
1757
|
+
<li><p>The Uber app is reinstalled on the iPhone. When it launches, it does the fingerprint check and phones home again. Uber now knows this is the same iPhone they’ve seen before, because the fingerprint matches. This is the violation of Apple’s privacy policy.</p></li>
|
1758
|
+
</ol>
|
1759
|
+
|
1760
|
+
<p>But until step 3, when the Uber app is reinstalled, I don’t think Uber was “tracking” the phone in any way. And they didn’t care — the Times says the whole project was designed to counter fraud in China, which required the Uber app to be reinstalled on stolen iPhones.</p>
|
1761
|
+
|
1762
|
+
<p>Repeating from the opening of the article, Isaac wrote:</p>
|
1763
|
+
|
1764
|
+
<blockquote>
|
1765
|
+
<p>So Apple would not find out that Uber had been secretly
|
1766
|
+
identifying and tagging iPhones even after its app had been
|
1767
|
+
deleted and the devices erased — a fraud detection maneuver that
|
1768
|
+
violated Apple’s privacy guidelines.</p>
|
1769
|
+
</blockquote>
|
1770
|
+
|
1771
|
+
<p>That <em>sounds</em> like Uber was doing the identifying and “tagging” (whatever that is) after the app had been deleted and/or the device wiped, but I think what it might — <em>might</em> — actually mean is merely that the identification persisted after the app had been deleted and/or the device wiped. That’s not supposed to be technically possible — iOS APIs for things like the UDID and even the MAC address stopped reporting unique identifiers years ago, because they were being abused by privacy invasive ad trackers, analytics packages, and entitled shitbags like Uber. That’s wrong, and Apple was right to put an end to it, but it’s far less sensational than the prospect of Uber having been able to identify and “tag” an iPhone <em>after</em> the Uber app had been deleted. The latter scenario only seems technically possible if other third-party apps were executing surreptitious code that did this stuff through Uber’s SDK, or if the Uber app left behind malware outside the app’s sandbox. I don’t think that’s the case, if only because I don’t think Apple would have hesitated to remove Uber from the App Store if it was infecting iPhones with hidden phone-home malware.</p>
|
1772
|
+
|
1773
|
+
<p>The article does raise some questions:</p>
|
1774
|
+
|
1775
|
+
<ul>
|
1776
|
+
<li><p>What APIs and device info was Uber using to identify iPhones? Are these API loopholes now closed in iOS? If we don’t learn exactly what Uber was using to identify devices, we cannot know that the technique no longer works. iOS users should be able to feel confident that when they delete an app, all connections between their device and the developer of the app are disconnected, and that when they wipe a device, everything personally identifying has been removed from it.</p></li>
|
1777
|
+
<li><p>What exactly did Apple know about Uber’s actions in this regard when Tim Cook called Kalanick in for the meeting? Was Apple aware that Uber was specifically keeping a database of unique iPhone identifiers? If so, how?</p></li>
|
1778
|
+
<li><p>What prompted Apple to investigate Uber in this regard? And why did Uber suspect Apple was going to investigate, prompting them to geofence their fingerprinting so it wouldn’t trigger in Cupertino? (My theory: the Uber app was calling private APIs, and they used the geofence to avoid calling those private APIs while the app was in App Store review, assuming, perhaps incorrectly, that all App Store reviewers work in Cupertino. App Store review can identify apps that call private APIs.)</p></li>
|
1779
|
+
<li><p><strong>Update</strong>: Why didn’t Apple require Uber to disclose what they’d done as a condition for remaining in the store? Shouldn’t iPhone users who had Uber installed know about this?</p></li>
|
1780
|
+
</ul>
|
1781
|
+
|
1782
|
+
<p>[<strong>Update 2:</strong> <a href="https://twitter.com/chronic/status/856250223777206273">Will Strafach examined a 2014 build of the Uber iOS app</a> and found them using private APIs to use IOKit to pull the device serial number from the device registry. There might be more, but this alone is a blatant violation of App Store policy. <a href="https://twitter.com/chronic/status/856333895050178560">Strafach confirms</a> that the technique Uber was using no longer works in iOS 10.]</p>
|
1783
|
+
|
1784
|
+
<hr />
|
1785
|
+
|
1786
|
+
<p>The article also contains this non-Apple-related tidbit:</p>
|
1787
|
+
|
1788
|
+
<blockquote>
|
1789
|
+
<p>Uber devoted teams to so-called competitive intelligence,
|
1790
|
+
purchasing data from an analytics service called Slice
|
1791
|
+
Intelligence. Using an email digest service it owns named
|
1792
|
+
Unroll.me, Slice collected its customers’ emailed Lyft receipts
|
1793
|
+
from their inboxes and sold the anonymized data to Uber. Uber used
|
1794
|
+
the data as a proxy for the health of Lyft’s business. (Lyft, too,
|
1795
|
+
operates a competitive intelligence team.)</p>
|
1796
|
+
|
1797
|
+
<p>Slice confirmed that it sells anonymized data (meaning that
|
1798
|
+
customers’ names are not attached) based on ride receipts from
|
1799
|
+
Uber and Lyft, but declined to disclose who buys the information.</p>
|
1800
|
+
</blockquote>
|
1801
|
+
|
1802
|
+
<p>This is, needless to say, super shitty. We expect it from Uber. But Slice should be ashamed of themselves. Their <a href="https://unroll.me/">Unroll.me</a> service is billed as a tool to “Clean up your inbox” by identifying subscription emails and allowing you to unsubscribe from them in bulk. It’s “free” in the sense that you don’t pay them money, but they’re selling your personal information to companies like Uber. Supposedly that information is anonymized, but wiped iPhones are supposed to be anonymized too, and Uber found at least one route around that. </p>
|
1803
|
+
|
1804
|
+
|
1805
|
+
|
1806
|
+
]]></content>
|
1807
|
+
<title>★ On Uber’s ‘Identifying and Tagging’ of iPhones</title></entry><entry>
|
1808
|
+
|
1809
|
+
<link rel="alternate" type="text/html" href="https://daringfireball.net/2017/04/double_down_on_mechanical_watches" />
|
1810
|
+
<link rel="shorturl" href="http://df4.us/pwr" />
|
1811
|
+
<id>tag:daringfireball.net,2017://1.33579</id>
|
1812
|
+
<published>2017-04-11T00:15:08Z</published>
|
1813
|
+
<updated>2017-04-12T03:38:06Z</updated>
|
1814
|
+
<author>
|
1815
|
+
<name>John Gruber</name>
|
1816
|
+
<uri>http://daringfireball.net/</uri>
|
1817
|
+
</author>
|
1818
|
+
<summary type="text">Instead of getting into the computer business, traditional watch companies should focus on what they’ve always done: designing and making great mechanical watches — creating a breath of analog fresh air in an ever-more digitized world.</summary>
|
1819
|
+
<content type="html" xml:base="https://daringfireball.net/" xml:lang="en"><![CDATA[
|
1820
|
+
<p>Jean-Louis Gassée penned a good column a few weeks ago <a href="https://mondaynote.com/swatchos-not-a-smart-decision-6b2cc883c99f#.rre6lnb1g">on the Swatch Group making their own watch OS</a>:</p>
|
1821
|
+
|
1822
|
+
<blockquote>
|
1823
|
+
<p>Nick Hayek’s father triumphed against Japanese quartz watch makers
|
1824
|
+
by playing on his own turf. Trying to defeat the established
|
1825
|
+
smartwatch players by playing their game won’t work. Is there
|
1826
|
+
something in Swatch Group’s culture that predisposes it to be
|
1827
|
+
competitive with Google and Apple software engineers?</p>
|
1828
|
+
|
1829
|
+
<p>Just as Nokia should have embraced Android in 2010, riding on its
|
1830
|
+
proven combination of Design, Supply Chain, and Carrier
|
1831
|
+
Distribution prowess to keep a leading role in the smartphone
|
1832
|
+
revolution, Swatch could use its native — but circumscribed —
|
1833
|
+
cultural and technical skills to create beautiful, fun
|
1834
|
+
smartwatches … that run on Google’s software. But just like
|
1835
|
+
Nokia’s culture and success prevented it from seizing the Android
|
1836
|
+
moment, similar factors will keep Swatch from being a powerful
|
1837
|
+
player in the smartwatch world.</p>
|
1838
|
+
</blockquote>
|
1839
|
+
|
1840
|
+
<p>I agree. <em>If</em> the Swatch Group wants to make smartwatches, they should almost certainly go with Android Wear, and they’re almost certainly doomed with their pre-announced homegrown OS. And it’s crazy that even if they succeed at creating their own OS, that they think it won’t need frequent updates and bug fixes. That’s not how computer platforms work, and make no mistake, smartwatches are computer platforms.</p>
|
1841
|
+
|
1842
|
+
<p>But I think the Swiss watch industry would do well to stick to their mechanical guns. They should leave it to computerized gadgeteers to make smartwatches, and focus on making mechanical watches that stand the test of time (no pun intended). I love computers (duh), but I find mechanical watches to be a source of joy, a bulwark against the ever-encroaching computerization of everything.</p>
|
1843
|
+
|
1844
|
+
<p>The bread and butter for high-end watch companies are aficionados who own multiple watches. Almost no one uses multiple smartwatches. People might have old ones in a drawer, but just as with with phones, it’s only convenient to have one smartwatch <em>in active use</em> at a time. Apple knows this: that’s why they made it so easy to swap straps — multiple looks for variety, but just one watch. For watch fans who actually do want multiple watches <em>and</em> a smartwatch, every watch other than their one smartwatch is likely to be a mechanical.</p>
|
1845
|
+
|
1846
|
+
<p>I don’t think the Swiss watch industry has a chance of out-computer-engineering Apple. Instead they should focus on what they’ve always done: designing and making great mechanical watches — creating a breath of analog fresh air in an ever-more-digitized world.</p>
|
1847
|
+
|
1848
|
+
|
1849
|
+
|
1850
|
+
]]></content>
|
1851
|
+
<title>★ The Swiss Watch Industry Should Double Down on Mechanical Watches</title></entry></feed><!-- THE END -->
|
1852
|
+
|
1853
|
+
---
|
1854
|
+
|
1855
|
+
feed.format: atom
|
1856
|
+
feed.title: Daring Fireball
|
1857
|
+
feed.subtitle: By John Gruber
|
1858
|
+
feed.url: https://daringfireball.net/
|
1859
|
+
feed.feed_url: https://daringfireball.net/feeds/main
|
1860
|
+
feed.updated: >>> DateTime.new( 2017, 5, 23, 19, 36, 44 )
|
1861
|
+
|
1862
|
+
feed.items[0].title: Feedbin, Too
|
1863
|
+
feed.items[0].url: https://feedbin.com/blog/2017/05/22/feedbin-supports-json-feed/
|
1864
|
+
feed.items[0].guid: tag:daringfireball.net,2017:/linked//6.33732
|
1865
|
+
feed.items[0].updated: >>> DateTime.new( 2017, 5, 23, 19, 03, 33 )
|
1866
|
+
feed.items[0].published: >>> DateTime.new( 2017, 5, 23, 18, 50, 36 )
|