facegroup 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a49be794dfb33a39412a0473d57b51c786139d90
4
- data.tar.gz: c76099340c7cbeefa79b211dd7b918c1373b8256
3
+ metadata.gz: dc7ee158ae35fa2c11b34facde81784382b7d973
4
+ data.tar.gz: 570fad708f94c07ddba5f29f1521d988e3e935e9
5
5
  SHA512:
6
- metadata.gz: 178bea436e344fcf17411a882ad7ad70e4e95de77d74c2a3b23bacf15fadccce8da4155e6669fb3f143efb2c8d2599400bc41eccec21b6855f40e226009a88d5
7
- data.tar.gz: b3b5086f69eb12f2ac600d5d8ef7a0f7d44c46074617a69bb5e6b630207deed99943e83cfc15de445973a92b6e6c243d9ce9cd9c165d35eb813f0f0af7e2061c
6
+ metadata.gz: 693ae084c9d9cace16f4a760d46e826212ad0b33988e74691405a09f9790b7a02290769602a137d09f8e32434c8265da7286f63d211933428bfa641844cbea6a
7
+ data.tar.gz: 1cfda29bc1824050eba0a4fce0c47be5694a72692f60a85c2641563e2fc4ce7af4a487ef223d0d797c21431ef901feb60cfac4624cd6816f654ec9a5ae07eba0
data/.codeclimate.yml ADDED
@@ -0,0 +1,20 @@
1
+ ---
2
+ engines:
3
+ bundler-audit:
4
+ enabled: true
5
+ duplication:
6
+ enabled: true
7
+ config:
8
+ languages:
9
+ - ruby
10
+ fixme:
11
+ enabled: true
12
+ rubocop:
13
+ enabled: true
14
+ ratings:
15
+ paths:
16
+ - Gemfile.lock
17
+ - "**.rb"
18
+ exclude_paths:
19
+ - config/
20
+ - spec/
data/.travis.yml CHANGED
@@ -8,3 +8,6 @@ branches:
8
8
  - master
9
9
  - develop
10
10
  script: bundle exec rake spec
11
+ addons:
12
+ code_climate:
13
+ repo_token: ed71eca87a57fbe52c3bc19c115312ba5112ff3406661f8700a4e4e06094311c
data/README.md CHANGED
@@ -1,5 +1,6 @@
1
1
  # FaceGroup Gem
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/facegroup.svg)](https://badge.fury.io/rb/facegroup)
3
4
  [![Build Status](https://travis-ci.org/ISS-SOA/facegroup.svg?branch=master)](https://travis-ci.org/ISS-SOA/facegroup)
4
5
 
5
6
  FaceGroup is a gem that specializes in getting data from public Facebook Groups.
data/Rakefile CHANGED
@@ -15,6 +15,14 @@ namespace :credentials do
15
15
 
16
16
  puts "Access Token: #{FaceGroup::FbApi.access_token}"
17
17
  end
18
+
19
+ desc 'Export sample credentials from file to bash'
20
+ task :export do
21
+ credentials = YAML.load(File.read('config/credentials.yml'))
22
+ puts 'Please run the following in bash:'
23
+ puts "export FB_CLIENT_ID=#{credentials[:client_id]}"
24
+ puts "export FB_CLIENT_SECRET=#{credentials[:client_secret]}"
25
+ end
18
26
  end
19
27
 
20
28
  desc 'run tests'
data/bin/facegroup CHANGED
@@ -1,17 +1,21 @@
1
1
  #!/usr/bin/env ruby
2
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
2
+ # frozen_string_literal: true
3
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), *%w(.. lib))
3
4
  require 'facegroup'
4
5
 
5
- group_id = ARGV[0] || '150352985174571'
6
+ group_id = ARGV[0] || ENV['FB_GROUP_ID']
7
+ unless group_id
8
+ puts 'USAGE: facegroup [group_id]'
9
+ exit(1)
10
+ end
11
+
6
12
  group = FaceGroup::Group.find(id: group_id)
7
13
 
8
14
  puts group.name
9
- puts group.name.length.times.map {'-'}.join
15
+ puts Array.new(group.name.length) { '-' }.join
10
16
  group.feed.postings.first(3).each.with_index do |post, index|
11
- print "#{index+1}: "
17
+ print "#{index + 1}: "
12
18
  puts post.message ? post.message : '(blank)'
13
- if post.attachment
14
- puts "Attached: #{post.attachment.url}"
15
- end
19
+ puts "Attached: #{post.attachment.url}" if post.attachment
16
20
  puts
17
21
  end
data/facegroup.gemspec CHANGED
@@ -1,4 +1,5 @@
1
- $:.push File.expand_path("../lib", __FILE__)
1
+ # frozen_string_literal: true
2
+ $LOAD_PATH.push File.expand_path('../lib', __FILE__)
2
3
  require 'facegroup/version'
3
4
 
4
5
  Gem::Specification.new do |s|
@@ -25,7 +26,7 @@ Gem::Specification.new do |s|
25
26
  s.add_development_dependency 'flog', '~> 4.4'
26
27
  s.add_development_dependency 'flay', '~> 2.8'
27
28
  s.add_development_dependency 'rubocop', '~> 0.42'
28
-
29
+ s.add_development_dependency 'codeclimate-test-reporter', '~> 0.6'
29
30
  s.homepage = 'https://github.com/ISS-SOA/facegroup'
30
31
  s.license = 'MIT'
31
32
  end
@@ -3,12 +3,14 @@
3
3
  module FaceGroup
4
4
  # Attached URL to Posting
5
5
  class Attachment
6
- attr_reader :description, :url
6
+ attr_reader :title, :description, :url
7
7
 
8
8
  def initialize(data)
9
9
  return unless data
10
- @description = data['description']
11
- @url = data['url']
10
+ attachment_data = data['data'].first
11
+ @title = attachment_data['title']
12
+ @description = attachment_data['description']
13
+ @url = attachment_data['url']
12
14
  end
13
15
  end
14
16
  end
@@ -10,6 +10,13 @@ module FaceGroup
10
10
  FB_TOKEN_URL = [FB_API_URL, 'oauth/access_token'].join('/')
11
11
  TOKEN_KEY = 'fbapi_access_token'
12
12
 
13
+ GRAPH_QUERY = {
14
+ group: 'id,name,feed{name,message,updated_time,created_time,'\
15
+ 'attachments{title,description,url,media}}',
16
+ posting: 'name,message,updated_time,created_time,'\
17
+ 'attachments{title,description,url,media}'
18
+ }.freeze
19
+
13
20
  def self.access_token
14
21
  return @access_token if @access_token
15
22
 
@@ -22,46 +29,30 @@ module FaceGroup
22
29
  end
23
30
 
24
31
  def self.config=(credentials)
25
- @config = {} unless @config
26
- @config.update(credentials)
32
+ @config ? @config.update(credentials) : @config = credentials
27
33
  end
28
34
 
29
35
  def self.config
30
36
  return @config if @config
31
- @config = { client_id: ENV['FB_CLIENT_ID'],
37
+ @config = { client_id: ENV['FB_CLIENT_ID'],
32
38
  client_secret: ENV['FB_CLIENT_SECRET'] }
33
39
  end
34
40
 
35
- def self.group_feed(group_id)
36
- feed_response = HTTP.get(
37
- fb_resource_url(group_id) + '/feed',
38
- params: { access_token: access_token }
39
- )
40
- JSON.load(feed_response.to_s)
41
+ def self.group_data(group_id)
42
+ graphql_query(group_id, :group)
41
43
  end
42
44
 
43
- def self.fb_resource(id)
44
- response = HTTP.get(
45
- fb_resource_url(id),
46
- params: { access_token: access_token }
47
- )
48
- JSON.load(response.to_s)
45
+ def self.posting_data(posting_id)
46
+ graphql_query(posting_id, :posting)
49
47
  end
50
48
 
51
- def self.group_info(group_id)
52
- fb_resource(group_id)
53
- end
54
-
55
- def self.posting(posting_id)
56
- fb_resource(posting_id)
57
- end
58
-
59
- def self.posting_attachments(posting_id)
60
- attachments_response = HTTP.get(
61
- fb_resource_url(posting_id) + '/attachments',
62
- params: { access_token: access_token }
49
+ def self.graphql_query(resource_id, resource_key)
50
+ response = HTTP.get(
51
+ fb_resource_url(resource_id),
52
+ params: { fields: GRAPH_QUERY[resource_key],
53
+ access_token: access_token }
63
54
  )
64
- JSON.load(attachments_response.to_s)['data'].first
55
+ JSON.load(response.to_s)
65
56
  end
66
57
 
67
58
  private_class_method
@@ -7,12 +7,13 @@ module FaceGroup
7
7
  class Feed
8
8
  attr_reader :postings
9
9
 
10
- def initialize(postings_data:, paging_data:)
10
+ def initialize(feed_data:)
11
+ postings_data = feed_data['data']
11
12
  @postings = postings_data.map do |post_data|
12
13
  FaceGroup::Posting.new(data: post_data)
13
14
  end
14
15
 
15
- @paging = paging_data
16
+ @pagination = feed_data['pagination']
16
17
  end
17
18
 
18
19
  def count
@@ -5,23 +5,17 @@ require_relative 'feed'
5
5
  module FaceGroup
6
6
  # Main class to setup a Facebook group
7
7
  class Group
8
- attr_reader :name
8
+ attr_reader :id, :name, :feed
9
9
 
10
- def initialize(data:)
11
- @name = data['name']
12
- @id = data['id']
13
- end
14
-
15
- def feed
16
- return @feed if @feed
17
- feed_data = FaceGroup::FbApi.group_feed(@id)
18
- @feed = Feed.new(postings_data: feed_data['data'],
19
- paging_data: feed_data['paging'])
10
+ def initialize(group_data:)
11
+ @name = group_data['name']
12
+ @id = group_data['id']
13
+ @feed = Feed.new(feed_data: group_data['feed'])
20
14
  end
21
15
 
22
16
  def self.find(id:)
23
- group_data = FbApi.group_info(id)
24
- new(data: group_data)
17
+ group_data = FbApi.group_data(id)
18
+ new(group_data: group_data)
25
19
  end
26
20
  end
27
21
  end
@@ -5,21 +5,15 @@ require_relative 'attachment'
5
5
  module FaceGroup
6
6
  # Single posting on group's feed
7
7
  class Posting
8
- attr_reader :id, :created_time, :updated_time, :message
8
+ attr_reader :id, :created_time, :updated_time,
9
+ :message, :name, :attachment
9
10
 
10
11
  def initialize(data: nil)
11
12
  load_data(data)
12
13
  end
13
14
 
14
- def attachment
15
- return @attachment if @attachment
16
-
17
- attached_data = FaceGroup::FbApi.posting_attachments(@id)
18
- @attachment = Attachment.new(attached_data)
19
- end
20
-
21
15
  def self.find(id:)
22
- posting_data = FaceGroup::FbApi.posting(id)
16
+ posting_data = FaceGroup::FbApi.posting_data(id)
23
17
  new(data: posting_data)
24
18
  end
25
19
 
@@ -29,8 +23,9 @@ module FaceGroup
29
23
  @id = posting_data['id']
30
24
  @updated_time = posting_data['updated_time']
31
25
  @created_time = posting_data['created_time']
26
+ @name = posting_data['message']
32
27
  @message = posting_data['message']
33
- attached = posting_data['attachment']
28
+ attached = posting_data['attachments']
34
29
  @attachment = Attachment.new(attached) if attached
35
30
  end
36
31
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module FaceGroup
4
- VERSION = '0.1.0'
4
+ VERSION = '0.2.0'
5
5
  end
@@ -31,13 +31,13 @@ http_interactions:
31
31
  Content-Type:
32
32
  - application/json; charset=UTF-8
33
33
  X-Fb-Trace-Id:
34
- - Ci+FMvzSeBs
34
+ - CzywRdmh8MO
35
35
  X-Fb-Rev:
36
- - '2632900'
36
+ - '2638327'
37
37
  X-Fb-Debug:
38
- - 7C7rjRFkl4+2LWu4n+mimPU8potuDAVnczOtVB+BciCErJwACwgdR5FzyjLFTXB6hArmA0CO62DHuRY28a8EKw==
38
+ - LFM+h3jZPwPzV568MfOMFbPDcP8VD14iXykwMwMqBOPCMUkTUyfcL97M7z3RGFWoBiGQPuDIVUEdJGfbOTgdbQ==
39
39
  Date:
40
- - Thu, 20 Oct 2016 02:03:52 GMT
40
+ - Sun, 23 Oct 2016 23:07:40 GMT
41
41
  Connection:
42
42
  - close
43
43
  Content-Length:
@@ -46,10 +46,10 @@ http_interactions:
46
46
  encoding: UTF-8
47
47
  string: '{"access_token":"<ACCESS_TOKEN>","token_type":"bearer"}'
48
48
  http_version:
49
- recorded_at: Thu, 20 Oct 2016 02:03:53 GMT
49
+ recorded_at: Sun, 23 Oct 2016 23:07:41 GMT
50
50
  - request:
51
51
  method: get
52
- uri: https://graph.facebook.com/150352985174571?access_token=<ACCESS_TOKEN_ESCAPED>
52
+ uri: https://graph.facebook.com/150352985174571?access_token=<ACCESS_TOKEN_ESCAPED>&fields=id,name,feed%7Bname,message,updated_time,created_time,attachments%7Btitle,url,media%7D%7D
53
53
  body:
54
54
  encoding: US-ASCII
55
55
  string: ''
@@ -68,7 +68,7 @@ http_interactions:
68
68
  Access-Control-Allow-Origin:
69
69
  - "*"
70
70
  Etag:
71
- - '"76e28f8b21d98678b988003cd44891a91248bbf3"'
71
+ - '"3636e806cf74b50ee220296d4f7f6f2aaac1691d"'
72
72
  Pragma:
73
73
  - no-cache
74
74
  Cache-Control:
@@ -80,111 +80,112 @@ http_interactions:
80
80
  Content-Type:
81
81
  - text/javascript; charset=UTF-8
82
82
  X-Fb-Trace-Id:
83
- - C9hYVMH7SJM
83
+ - EjcUSy3TrOQ
84
84
  X-Fb-Rev:
85
- - '2632900'
86
- X-Fb-Debug:
87
- - 0AHyhJaZ1gJu34uSXskVij6SnhcmxkXcZKu9/XpS+LMDuOIzqBv3mqh3fU05gzbAF8KrAOSiv8ijRHa/GN4IEQ==
88
- Date:
89
- - Thu, 20 Oct 2016 02:03:53 GMT
90
- Connection:
91
- - close
92
- Content-Length:
93
- - '86'
94
- body:
95
- encoding: UTF-8
96
- string: '{"name":"Web Service Development \u0040 NTHU","privacy":"OPEN","id":"150352985174571"}'
97
- http_version:
98
- recorded_at: Thu, 20 Oct 2016 02:03:54 GMT
99
- - request:
100
- method: get
101
- uri: https://graph.facebook.com/150352985174571/feed?access_token=<ACCESS_TOKEN_ESCAPED>
102
- body:
103
- encoding: US-ASCII
104
- string: ''
105
- headers:
106
- Connection:
107
- - close
108
- Host:
109
- - graph.facebook.com
110
- User-Agent:
111
- - http.rb/2.0.3
112
- response:
113
- status:
114
- code: 200
115
- message: OK
116
- headers:
117
- Access-Control-Allow-Origin:
118
- - "*"
119
- Etag:
120
- - '"0f7634d1bb89fc13e54239e755654bc4293623fc"'
121
- Pragma:
122
- - no-cache
123
- Cache-Control:
124
- - private, no-cache, no-store, must-revalidate
125
- Facebook-Api-Version:
126
- - v2.6
127
- Expires:
128
- - Sat, 01 Jan 2000 00:00:00 GMT
129
- Content-Type:
130
- - text/javascript; charset=UTF-8
131
- X-Fb-Trace-Id:
132
- - GvHboTOPlo4
133
- X-Fb-Rev:
134
- - '2632900'
85
+ - '2638327'
135
86
  Vary:
136
87
  - Accept-Encoding
137
88
  X-Fb-Debug:
138
- - q8rX3vyA3/ls37DRqT+yAKMPnOGggaW2nf0eykkbOKtDM6SmyHAmcFoIpJWdPveJjpsyrj6vg6Al8lAfTsZBWw==
89
+ - FTxzBLzsbYHDrTIgOoJ4DLAErqYuyEGIHKHao0TcNB8/9+TelMIX4Uh7F1E1UhFcBg0uKS71I//EaYaV0f40kw==
139
90
  Date:
140
- - Thu, 20 Oct 2016 02:03:53 GMT
91
+ - Sun, 23 Oct 2016 23:07:40 GMT
141
92
  Connection:
142
93
  - close
143
94
  body:
144
95
  encoding: UTF-8
145
- string: '{"data":[{"message":"https:\/\/m.facebook.com\/story.php?story_fbid=1098448240203391&id=100001146751327","updated_time":"2016-10-13T18:17:23+0000","id":"150352985174571_521137638096102"},{"updated_time":"2016-10-06T08:39:47+0000","id":"150352985174571_518029841740215"},{"message":"A
146
- little quiz to keep you sharp on programming trends.","updated_time":"2016-10-06T06:51:44+0000","id":"150352985174571_517105121832687"},{"updated_time":"2016-10-06T01:18:12+0000","id":"150352985174571_517701838439682"},{"message":"Up
147
- and coming languages worth keeping our eyes on. I''m already a huge fan of
148
- Crystal and Rust, but the author has convinced me to pay more attention to
149
- Kotlin and Elm.","updated_time":"2016-09-22T08:12:35+0000","id":"150352985174571_511894255687107"},{"message":"I
150
- can''t even wrap my head around all the new features Github just released:
151
- code reviews, kanban boards, and much more.","updated_time":"2016-09-19T09:14:51+0000","id":"150352985174571_509461352597064"},{"message":"http:\/\/vertx.io\/","updated_time":"2016-09-13T20:34:39+0000","id":"150352985174571_508953969314469"},{"story":"\u96f7\u677e\u4e9e
152
- shared Codecademy''s photo to the group: Web Service Development \u0040 NTHU.","updated_time":"2016-09-13T02:04:20+0000","id":"150352985174571_508631766013356"},{"message":"https:\/\/medium.com\/\u0040ajordens\/scaling-spinnaker-at-netflix-part-1-8a5ae51ee6de#.fubo771g2","updated_time":"2016-09-11T09:14:53+0000","id":"150352985174571_507894159420450"},{"message":"Why
153
- (and when) we need architecture.","updated_time":"2016-09-08T03:33:06+0000","id":"150352985174571_390601061149761"},{"updated_time":"2016-09-03T06:33:51+0000","id":"150352985174571_504539303089269"},{"message":"https:\/\/dev.to\/ben\/the-targetblank-vulnerability-by-example","updated_time":"2016-09-02T17:50:31+0000","id":"150352985174571_503746883168511"},{"message":"just
154
- discovered this .... looks nice","updated_time":"2016-08-26T02:34:28+0000","id":"150352985174571_500972406779292"},{"message":"No
155
- reason not to use https for your web services: apart from the good old https:\/\/www.startssl.com,
96
+ string: '{"id":"150352985174571","name":"Web Service Development \u0040 NTHU","feed":{"data":[{"name":"GitHub
97
+ Dumps REST Calls for Facebook''s GraphQL - The New Stack","message":"Github''s
98
+ adoption of GraphQL for APIs, over RESTful services, might be the tipping
99
+ point that makes GraphQL ubiquitous. From what little exposure I have to it
100
+ (thanks to YenTing and Yen-Nan at Cardinal Blue), it seems we are taking the
101
+ complexity and burden of APIs away from API consumers, and putting it squarely
102
+ at the feet of API providers. That means using APIs is about to become significantly
103
+ easier (albeit more deeply nested) for everyone! But it also means that creating
104
+ APIs is about to become significantly harder. Read more about the big shift
105
+ at Github.","updated_time":"2016-10-20T08:29:06+0000","created_time":"2016-10-20T05:45:32+0000","id":"150352985174571_524070464469486","attachments":{"data":[{"title":"GitHub
106
+ Dumps REST Calls for Facebook''s GraphQL - The New Stack","url":"http:\/\/www.facebook.com\/l.php?u=http\u00253A\u00252F\u00252Fthenewstack.io\u00252Fgithub-dumps-rest-graphql-api\u00252F&h=YAQHzMjoy&s=1&enc=AZMpf-S_2VYik6184ukcBdzjF-3PpyLReF5nW05P4Ayx8nbVzyShNMHp81bPli30OusK3C1qiW0BLXTxP_KOWY8r","media":{"image":{"height":720,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQC5HLw3s46cLqn7&w=720&h=720&url=http\u00253A\u00252F\u00252Fthenewstack.io\u00252Fwp-content\u00252Fuploads\u00252F2016\u00252F09\u00252FGHU-GraphQL-Woah.jpg&cfs=1&sx=0&sy=0&sw=2448&sh=2448","width":720}}}]}},{"name":"Taking
107
+ PHP Seriously","message":"https:\/\/m.facebook.com\/story.php?story_fbid=1098448240203391&id=100001146751327","updated_time":"2016-10-13T18:17:23+0000","created_time":"2016-10-13T17:15:20+0000","id":"150352985174571_521137638096102","attachments":{"data":[{"title":"Taking
108
+ PHP Seriously","url":"https:\/\/www.facebook.com\/l.php?u=https\u00253A\u00252F\u00252Fslack.engineering\u00252Ftaking-php-seriously-cf7a60065329\u002523.g3w9ecf66&h=sAQE7DLiZ&s=1&enc=AZOjStbZrdh2BTeov3xBLmrDmpSzHrOD1A7augRsyYWm01FXnKPbvMurc18wBo0f2-zE9GgPiW6UZDcJ0qzjKkRf","media":{"image":{"height":669,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQCmbxAdG46sLBUD&w=720&h=720&url=https\u00253A\u00252F\u00252Fd262ilb51hltx0.cloudfront.net\u00252Fmax\u00252F1200\u00252F1\u00252Ax5N8tfTVEmQro2ySxoZtvw.jpeg&cfs=1","width":669}}}]}},{"name":"How
109
+ To Save The Princess In 8 Programming Languages","updated_time":"2016-10-06T08:39:47+0000","created_time":"2016-10-06T08:28:40+0000","id":"150352985174571_518029841740215","attachments":{"data":[{"title":"How
110
+ To Save The Princess In 8 Programming Languages","url":"https:\/\/www.facebook.com\/l.php?u=https\u00253A\u00252F\u00252Ftoggl.com\u00252Fprogramming-princess&h=xAQFOEieu&s=1&enc=AZOb6TELEoRkW6sKZBeOKyx2JjygU8WGx-WHsg0ieCovelJu2j5IrcipmzwNgC1WY22uf4PI6SOLRVW05FC6XQjq","media":{"image":{"height":630,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQDEZQJwFjW82Fzm&w=720&h=720&url=https\u00253A\u00252F\u00252Ftoggl.com\u00252Fimages\u00252Fshare-img\u00252Ffb-share-git-princess.jpg&cfs=1","width":630}}}]}},{"name":"Guess
111
+ the Programming Language | Tutorialzine","message":"A little quiz to keep
112
+ you sharp on programming trends.","updated_time":"2016-10-06T06:51:44+0000","created_time":"2016-10-04T02:21:25+0000","id":"150352985174571_517105121832687","attachments":{"data":[{"title":"Guess
113
+ the Programming Language | Tutorialzine","url":"http:\/\/www.facebook.com\/l.php?u=http\u00253A\u00252F\u00252Ftutorialzine.com\u00252F2014\u00252F06\u00252Fguess-the-programming-language\u00252F&h=_AQGXcqF0&s=1&enc=AZO8_k2mGlo63xRMItgRxcJ3KXSH1qFZTqEXwGb5AKfsDv8ffCzjTbLQtdVVaJg6KC5XNsmX8y0KweB1-SZOZbQ7","media":{"image":{"height":490,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQB9saA-D40lNQqm&w=720&h=720&url=http\u00253A\u00252F\u00252Fcdn.tutorialzine.com\u00252Fwp-content\u00252Fuploads\u00252F2014\u00252F06\u00252Fguess-the-programming-language.jpg&cfs=1","width":490}}}]}},{"name":"How
114
+ it feels to learn JavaScript in 2016","updated_time":"2016-10-06T01:18:12+0000","created_time":"2016-10-05T13:47:43+0000","id":"150352985174571_517701838439682","attachments":{"data":[{"title":"How
115
+ it feels to learn JavaScript in 2016","url":"https:\/\/www.facebook.com\/l.php?u=https\u00253A\u00252F\u00252Fhackernoon.com\u00252Fhow-it-feels-to-learn-javascript-in-2016-d3a717dd577f\u002523.m0lkkfan1&h=lAQF473Xt&s=1&enc=AZMeRE4HRGYgyXchdkhmzDEP8nbaKmeCttfJLL0m0qqUW3t0VSgo2H9qVZTki5Fykd8q8piqYmtbO1hftJ4OCeD-","media":{"image":{"height":720,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQBw5xIxnMhHtpnj&w=720&h=720&url=https\u00253A\u00252F\u00252Fcdn-images-2.medium.com\u00252Fmax\u00252F1200\u00252F1\u00252AraWO3dhM4jMjf9VY-kZzNg.png&cfs=1","width":720}}}]}},{"name":"5
116
+ emerging programming languages with a bright future","message":"Up and coming
117
+ languages worth keeping our eyes on. I''m already a huge fan of Crystal and
118
+ Rust, but the author has convinced me to pay more attention to Kotlin and
119
+ Elm.","updated_time":"2016-09-22T08:12:35+0000","created_time":"2016-09-21T10:13:58+0000","id":"150352985174571_511894255687107","attachments":{"data":[{"title":"5
120
+ emerging programming languages with a bright future","url":"http:\/\/www.facebook.com\/l.php?u=http\u00253A\u00252F\u00252Ftechbeacon.com\u00252F5-emerging-programming-languages-bright-future\u00253Futm_content\u00253Dbuffer300a1\u002526utm_medium\u00253Dsocial\u002526utm_source\u00253Dtwitter.com\u002526utm_campaign\u00253Dbuffer&h=7AQFqoF4w&s=1&enc=AZOcpN1TtkkxLsE26at9n3Pn2lm0mZimFB_Q8lu9uqVfNFM1oybLIFwc5QvyZ2hhsUGO1afi0O2ah7RCWv_dhtMO","media":{"image":{"height":480,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQAxbtCPHht3vWb6&w=720&h=720&url=http\u00253A\u00252F\u00252Ftechbeacon.com\u00252Fsites\u00252Fdefault\u00252Ffiles\u00252Fstyles\u00252Fsocial\u00252Fpublic\u00252Ffield\u00252Fimage\u00252F5_emerging_programming_languages_with_a_bright_future.jpg\u00253Fitok\u00253Dm0nlEinF&cfs=1","width":480}}}]}},{"name":"A
121
+ whole new Universe","message":"I can''t even wrap my head around all the new
122
+ features Github just released: code reviews, kanban boards, and much more.","updated_time":"2016-09-19T09:14:51+0000","created_time":"2016-09-15T03:42:48+0000","id":"150352985174571_509461352597064","attachments":{"data":[{"title":"A
123
+ whole new Universe","url":"https:\/\/www.facebook.com\/l.php?u=https\u00253A\u00252F\u00252Fgithub.com\u00252Funiverse-2016&h=CAQGu0989&s=1&enc=AZPWVEFbBeUjhIpGBCyYpb_-nztFQjF1X4iV0fky0Ny_VL5sCPlAqPdOFdUjucSRJbnu82OpAbwdQEque4I_dtbp","media":{"image":{"height":630,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQBsb70KV75vMJ8B&w=720&h=720&url=https\u00253A\u00252F\u00252Fassets-cdn.github.com\u00252Fimages\u00252Fmodules\u00252Funiverse-2016\u00252Funiverse-open-graph.png&cfs=1","width":630}}}]}},{"name":"Vert.x","message":"http:\/\/vertx.io\/","updated_time":"2016-09-13T20:34:39+0000","created_time":"2016-09-13T20:34:39+0000","id":"150352985174571_508953969314469","attachments":{"data":[{"title":"Vert.x","url":"http:\/\/www.facebook.com\/l.php?u=http\u00253A\u00252F\u00252Fvertx.io\u00252F&h=SAQEZza3C&s=1&enc=AZM9uG4L8irWmfzpetWja_hs5ozH7uTj3zZZUeTdgPVysOFrJVgq2uRubR2Y0UpP6qsk6_Httno9fGBrW8Xe5_YI","media":{"image":{"height":360,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQC13D8UqDGMX5IF&w=720&h=720&url=http\u00253A\u00252F\u00252Fvertx.io\u00252Fassets\u00252Fuser_logos\u00252Fswisscom.png&cfs=1","width":360}}}]}},{"name":"Codecademy","updated_time":"2016-09-13T02:04:20+0000","created_time":"2016-09-13T02:04:20+0000","id":"150352985174571_508631766013356","attachments":{"data":[{"title":"Timeline
124
+ Photos","url":"https:\/\/www.facebook.com\/codecademy\/photos\/a.553205214692855.138303.272256069454439\/1387442691269099\/?type=3","media":{"image":{"height":377,"src":"https:\/\/scontent.xx.fbcdn.net\/v\/t1.0-9\/s720x720\/14264951_1387442691269099_7557697962736020966_n.png?oh=1c67604ccd5679d98c72100f943f3863&oe=5891713F","width":720}}}]}},{"name":"Scaling
125
+ Spinnaker at Netflix \u2014 The Basics","message":"https:\/\/medium.com\/\u0040ajordens\/scaling-spinnaker-at-netflix-part-1-8a5ae51ee6de#.fubo771g2","updated_time":"2016-09-11T09:14:53+0000","created_time":"2016-09-11T09:14:53+0000","id":"150352985174571_507894159420450","attachments":{"data":[{"title":"Scaling
126
+ Spinnaker at Netflix \u2014 The Basics","url":"https:\/\/www.facebook.com\/l.php?u=https\u00253A\u00252F\u00252Fmedium.com\u00252F\u002540ajordens\u00252Fscaling-spinnaker-at-netflix-part-1-8a5ae51ee6de\u002523.fubo771g2&h=GAQGR1jp_&s=1&enc=AZOsM-rObXq-NZ8IN4zgxduow_zzyJJN8oFA7g0731F2ThqcJz6IFRXvRTzvT6q10wH8_HHvpFh-kdwFO8BPLwbx","media":{"image":{"height":720,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQBS3PgL3uUEU1VC&w=720&h=720&url=https\u00253A\u00252F\u00252Fcdn-images-1.medium.com\u00252Fmax\u00252F1200\u00252F1\u00252AMrL6DHIxxY6CrL9Binpjjg.png&cfs=1","width":720}}}]}},{"name":"Design
127
+ Stamina Hypothesis","message":"Why (and when) we need architecture.","updated_time":"2016-09-08T03:33:06+0000","created_time":"2015-09-24T11:12:32+0000","id":"150352985174571_390601061149761","attachments":{"data":[{"title":"Design
128
+ Stamina Hypothesis","url":"http:\/\/www.facebook.com\/l.php?u=http\u00253A\u00252F\u00252Fmartinfowler.com\u00252Fbliki\u00252FDesignStaminaHypothesis.html&h=MAQEPmidi&s=1&enc=AZMscZ5ByY7Xh6_-P7PLIil52a7ygWPn_25oIQRH9u6B-Nf6LVNY8uxi5yGtOTr-ePAqZNTu9GJ3SfCcbg1CYacr","media":{"image":{"height":329,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQB61p6nJsutcaQ4&w=720&h=720&url=http\u00253A\u00252F\u00252Fmartinfowler.com\u00252Fbliki\u00252Fimages\u00252FdesignStaminaGraph.gif&cfs=1","width":329}}}]}},{"name":"Git
129
+ 2.10 has been released","updated_time":"2016-09-03T06:33:51+0000","created_time":"2016-09-03T05:23:56+0000","id":"150352985174571_504539303089269","attachments":{"data":[{"title":"Git
130
+ 2.10 has been released","url":"https:\/\/www.facebook.com\/l.php?u=https\u00253A\u00252F\u00252Fgithub.com\u00252Fblog\u00252F2242-git-2-10-has-been-released&h=TAQEO82l0&s=1&enc=AZM8UofTAaNObrpYGEdBNrQoZE7QkXsKTTNF87IwQmioNMA3-gswGJWScFDpoZaE2RXEUZ5jT3kXjPIg4I1uqU28","media":{"image":{"height":630,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQAMeAXoLqWgJ6YI&w=720&h=720&url=https\u00253A\u00252F\u00252Fcloud.githubusercontent.com\u00252Fassets\u00252F121322\u00252F16134794\u00252F284be2e6-33d4-11e6-9165-58068a872ec2.png&cfs=1","width":630}}}]}},{"name":"The
131
+ target=\"_blank\" vulnerability by example","message":"https:\/\/dev.to\/ben\/the-targetblank-vulnerability-by-example","updated_time":"2016-09-02T17:50:31+0000","created_time":"2016-09-01T12:49:45+0000","id":"150352985174571_503746883168511","attachments":{"data":[{"title":"The
132
+ target=\"_blank\" vulnerability by example","url":"https:\/\/www.facebook.com\/l.php?u=https\u00253A\u00252F\u00252Fdev.to\u00252Fben\u00252Fthe-targetblank-vulnerability-by-example&h=9AQGeBtRp&s=1&enc=AZOTThm23Z6CU5evZqf9H9oQ6pyy78mhqT56HsssWhdcXScQmWlIdSMYz9jV4W0rU3tOEHzzzZrYKGE0_Krq2NoJ","media":{"image":{"height":700,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQCuBI-PnC7cvAsc&w=720&h=720&url=https\u00253A\u00252F\u00252Fres.cloudinary.com\u00252Fpracticaldev\u00252Fimage\u00252Ffetch\u00252Fs--AGTf6Osi--\u00252Fc_imagga_scale\u00252Cf_auto\u00252Cfl_progressive\u00252Ch_700\u00252Cq_auto\u00252Cw_1480\u00252Fhttps\u00253A\u00252F\u00252Fi.vimeocdn.com\u00252Fvideo\u00252F570148251_1280x720.jpg&cfs=1","width":700}}}]}},{"name":"Katacoda
133
+ - Interactive Learning Platform for Software Engineers","message":"just discovered
134
+ this .... looks nice","updated_time":"2016-08-26T02:34:28+0000","created_time":"2016-08-26T02:34:28+0000","id":"150352985174571_500972406779292","attachments":{"data":[{"title":"Katacoda
135
+ - Interactive Learning Platform for Software Engineers","url":"https:\/\/www.facebook.com\/l.php?u=https\u00253A\u00252F\u00252Fwww.katacoda.com\u00252F&h=fAQFrjrYn&s=1&enc=AZNJH9mmcIw2lNQqHm6ROIQ5NTqWeynJf1Y2EEpwrbGh7FgVQmquo86l1ghD_32IxTUnxAfotA6FsK6Bc6sGN8u7","media":{"image":{"height":720,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQBt33FvO3-PQ4vI&w=720&h=720&url=https\u00253A\u00252F\u00252Fwww.katacoda.com\u00252Fimages\u00252Fbackgrounds\u00252Fpeople-working.jpg&cfs=1","width":720}}}]}},{"name":"Let''s
136
+ Encrypt - Wikipedia, the free encyclopedia","message":"No reason not to use
137
+ https for your web services: apart from the good old https:\/\/www.startssl.com,
156
138
  now we have https:\/\/letsencrypt.org which makes getting, installing and
157
139
  keeping a cert up to date easier. Plus its backed by many big guns and its
158
140
  FREE! Here is the wikipedia article about it: https:\/\/en.m.wikipedia.org\/wiki\/Let\u002527s_Encrypt.
159
141
  Just remember its pretty new and do read about how the certs are signed and
160
- accepted by browser\/clients.","updated_time":"2016-08-22T00:55:29+0000","id":"150352985174571_499005640309302"},{"message":"A
161
- speedier web? Yes thank you!\n\n","updated_time":"2016-08-02T04:40:01+0000","id":"150352985174571_491254161084450"},{"message":"https:\/\/blog.axosoft.com\/2016\/07\/28\/introducing-gitkraken-pro\/","updated_time":"2016-07-30T17:51:41+0000","id":"150352985174571_490544944488705"},{"message":"For
162
- those using React, although optional webpack loaders (such as sass) still
163
- need to be added!","updated_time":"2016-07-23T10:41:04+0000","id":"150352985174571_487752758101257"},{"message":"Test
164
- scenarios that anyone can make sense of","updated_time":"2016-07-22T11:46:59+0000","id":"150352985174571_487315358144997"},{"message":"Check
142
+ accepted by browser\/clients.","updated_time":"2016-08-22T00:55:29+0000","created_time":"2016-08-21T09:50:36+0000","id":"150352985174571_499005640309302","attachments":{"data":[{"title":"Let''s
143
+ Encrypt - Wikipedia, the free encyclopedia","url":"https:\/\/www.facebook.com\/l.php?u=https\u00253A\u00252F\u00252Fen.m.wikipedia.org\u00252Fwiki\u00252FLet\u00252527s_Encrypt&h=hAQE2ieDs&s=1&enc=AZPtbkBwHFr5EYupqFYgk8WW05jGpS-4Rk4ajNHE9WOvW5soYK2M4TBVGfPEnHB7Vy-LWopBz9IldjsaO8EfOXWu","media":{"image":{"height":131,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQApCjwHGpTUJRSa&w=720&h=720&url=https\u00253A\u00252F\u00252Fupload.wikimedia.org\u00252Fwikipedia\u00252Fcommons\u00252Fthumb\u00252Fb\u00252Fbb\u00252FLetsencrypt_screenshot_2_domain_choice.png\u00252F220px-Letsencrypt_screenshot_2_domain_choice.png&cfs=1","width":131}}}]}},{"name":"Google''s
144
+ QUIC protocol: moving the web from TCP to UDP","message":"A speedier web?
145
+ Yes thank you!\n\n","updated_time":"2016-08-02T04:40:01+0000","created_time":"2016-08-01T13:53:37+0000","id":"150352985174571_491254161084450","attachments":{"data":[{"title":"Google''s
146
+ QUIC protocol: moving the web from TCP to UDP","url":"https:\/\/www.facebook.com\/l.php?u=https\u00253A\u00252F\u00252Fma.ttias.be\u00252Fgoogles-quic-protocol-moving-web-tcp-udp\u00252F&h=wAQGbV1yc&s=1&enc=AZMZ1c0foNJLon4qufED0wOuZ4uAIS6nvl61er-e0QokB00-ixZ3a2ixHFTIQrlSIMjnAVLVQw-XqXGXADxU9qBC","media":{"image":{"height":720,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQAAP49rj-fnvioY&w=720&h=720&url=https\u00253A\u00252F\u00252Fma.ttias.be\u00252Fwp-content\u00252Fuploads\u00252F2016\u00252F07\u00252Fquic_parking_lot_problem.png&cfs=1","width":720}}}]}},{"name":"Introducing
147
+ GitKraken Pro\u2014launch fundraiser | Axosoft","message":"https:\/\/blog.axosoft.com\/2016\/07\/28\/introducing-gitkraken-pro\/","updated_time":"2016-07-30T17:51:41+0000","created_time":"2016-07-30T17:51:41+0000","id":"150352985174571_490544944488705","attachments":{"data":[{"title":"Introducing
148
+ GitKraken Pro\u2014launch fundraiser | Axosoft","url":"https:\/\/www.facebook.com\/l.php?u=https\u00253A\u00252F\u00252Fblog.axosoft.com\u00252F2016\u00252F07\u00252F28\u00252Fintroducing-gitkraken-pro\u00252F&h=1AQEXGyv7&s=1&enc=AZNNl2EkIyn5n2lfnf_BpaQkPLmDCGBRO5mgoV7Tx6tL_c4M90rwnank1dYuToQqgf6HqdJA6IIFOXCXtk9OoNyv","media":{"image":{"height":720,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQCiRe3ytesqyg6K&w=720&h=720&url=https\u00253A\u00252F\u00252Fblog.axosoft.com\u00252Fwp-content\u00252Fuploads\u00252F2016\u00252F07\u00252FTeaming-Up-v2-wide.png&cfs=1&l","width":720}}}]}},{"name":"Create
149
+ Apps with No Configuration | React","message":"For those using React, although
150
+ optional webpack loaders (such as sass) still need to be added!","updated_time":"2016-07-23T10:41:04+0000","created_time":"2016-07-23T09:55:25+0000","id":"150352985174571_487752758101257","attachments":{"data":[{"title":"Create
151
+ Apps with No Configuration | React","url":"https:\/\/www.facebook.com\/l.php?u=https\u00253A\u00252F\u00252Ffacebook.github.io\u00252Freact\u00252Fblog\u00252F2016\u00252F07\u00252F22\u00252Fcreate-apps-with-no-configuration.html&h=0AQGBENqH&s=1&enc=AZPcK7aypFrQ2wkY7ZJPeUEt8Sr-ejtIl3lP1GoENK2vt-gDoqdVKAyJ86jXbe5F_PajWzW_99NM8780c0D28Pl1","media":{"image":{"height":400,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQC26d6oRyFdqvxX&w=720&h=720&url=https\u00253A\u00252F\u00252Ffacebook.github.io\u00252Freact\u00252Fimg\u00252Flogo_og.png&cfs=1","width":400}}}]}},{"name":"introduction\u00b6
152
+ Lettuce is an extremely useful and charming tool for BDD (Behavior Driven...
153
+ -...","message":"Test scenarios that anyone can make sense of","updated_time":"2016-07-22T11:46:59+0000","created_time":"2016-07-22T06:28:02+0000","id":"150352985174571_487315358144997","attachments":{"data":[{"title":"introduction\u00b6
154
+ Lettuce is an extremely useful and charming tool for BDD (Behavior Driven...
155
+ -...","url":"http:\/\/www.facebook.com\/l.php?u=http\u00253A\u00252F\u00252Flettuce.it\u00252Ftutorial\u00252Fsimple.html\u002523tutorial-simple&h=LAQHpk3Al&s=1&enc=AZNP93JFnpxKS_Cc826K5YU5ml-MI7t6LpmRKO_vcSCqmUDQCk8D8X0tZB7Ye3vsLavW_jBg4uVLz-IiPo5XKoj1","media":{"image":{"height":687,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQDL7gIjkOiwMbE7&w=720&h=720&url=http\u00253A\u00252F\u00252Flettuce.it\u00252F_images\u00252Fscreenshot5.png&cfs=1","width":687}}}]}},{"message":"Check
165
156
  out: https:\/\/www.websequencediagrams.com \u2014 fun and friendly way to
166
157
  create sequence diagrams for web and mobile activities. I usually end up drawing
167
158
  these on paper or on the board. I think it will be quite engaging to play
168
- with this live!","updated_time":"2016-07-21T02:25:49+0000","id":"150352985174571_486566974886502"},{"message":"http:\/\/venturebeat.com\/2016\/07\/14\/dropbox-open-sources-lepton-a-compression-algorithm-that-cuts-jpeg-file-size-by-22\/","updated_time":"2016-07-15T05:52:51+0000","id":"150352985174571_484513371758529"},{"message":"\"Serverless\"
169
- is the new sensation in service architecture, and it integrates the recent
170
- trends of microservices and reactive (message-driven) architectures. We will
171
- play with some of these concepts in our SOA class this coming semester. Take
172
- a peek at what''s brewing.\nhttp:\/\/martinfowler.com\/articles\/serverless.html","updated_time":"2016-07-14T19:01:17+0000","id":"150352985174571_484366188439914"},{"message":"I''m
173
- shocked at how Pok\u00e9mon Go is taking over our streets (very soon in TW,
174
- right?). And now its having a major effect on local businesses as well. Great
175
- example of how an online service can transform offline ones.","updated_time":"2016-07-13T09:36:32+0000","id":"150352985174571_483847351825131"},{"message":"The
176
- syllabus for next semester''s \"Service Oriented Architecture\" class is now
177
- online! Take a look and share it with your coder friends who are dreaming
178
- of their first startup :)","updated_time":"2016-07-04T11:18:26+0000","id":"150352985174571_480686308807902"},{"message":"A
179
- plucky little online startup is changing how we address and locate geographic
180
- places. The story below shows how countries and international organizations
181
- are adopting this method. Take a look at https:\/\/what3words.com to find
182
- your own three words :)","updated_time":"2016-06-26T05:04:58+0000","id":"150352985174571_474135702796296"},{"message":"https:\/\/techcrunch.com\/2016\/06\/23\/snyk\/","updated_time":"2016-06-26T05:03:51+0000","id":"150352985174571_477833252426541"}],"paging":{"previous":"https:\/\/graph.facebook.com\/v2.6\/150352985174571\/feed?icon_size=16&since=1476382643&access_token=<ACCESS_TOKEN>&limit=25&__paging_token=enc_AdCAVCA72A4gv2MKtiGxlkAQQD47hptHvqfyKNtuyGf6xVrmONyoH0kpU1Ecc5PRcZC6CqtshBSDiO9k4J03TyPaDaDKO2jnA7ZBAkslx2zOQR9QZDZD&__previous=1","next":"https:\/\/graph.facebook.com\/v2.6\/150352985174571\/feed?icon_size=16&access_token=<ACCESS_TOKEN>&limit=25&until=1466917431&__paging_token=enc_AdBQX2PqbWNNP82doMrGi5JZCQyd5LdLTfrzYGxWtRwKj68dCJBsLcfArMfAh6pZALxBOvZBlZClvAOUqTa87yPK3fM8pdsm1qmjN9KxUuY2ZBsLZB9AZDZD"}}'
159
+ with this live!","updated_time":"2016-07-21T02:25:49+0000","created_time":"2016-07-20T03:59:51+0000","id":"150352985174571_486566974886502","attachments":{"data":[{"url":"https:\/\/www.facebook.com\/photo.php?fbid=1058362510919499&set=gm.486566974886502&type=3","media":{"image":{"height":392,"src":"https:\/\/scontent.xx.fbcdn.net\/v\/t1.0-9\/s720x720\/13680904_1058362510919499_8542835077177246391_n.jpg?oh=e23aa643f32eb9665e3c8ba8a43c01ca&oe=58A0A9E7","width":720}}}]}},{"name":"Dropbox
160
+ open-sources Lepton, a compression algorithm that cuts JPEG file size by 22\u0025","message":"http:\/\/venturebeat.com\/2016\/07\/14\/dropbox-open-sources-lepton-a-compression-algorithm-that-cuts-jpeg-file-size-by-22\/","updated_time":"2016-07-15T05:52:51+0000","created_time":"2016-07-14T19:37:54+0000","id":"150352985174571_484513371758529","attachments":{"data":[{"title":"Dropbox
161
+ open-sources Lepton, a compression algorithm that cuts JPEG file size by 22\u0025","url":"http:\/\/www.facebook.com\/l.php?u=http\u00253A\u00252F\u00252Fventurebeat.com\u00252F2016\u00252F07\u00252F14\u00252Fdropbox-open-sources-lepton-a-compression-algorithm-that-cuts-jpeg-file-size-by-22\u00252F&h=cAQHtSyRz&s=1&enc=AZNEjRIgXar4FOwLc6uGxtwGMIB0XjFWvPuVBR8hMHcvlRD7xqtaftAnAiBIYyBjG_SQJMvl0aG3LNoiR5MGwlei","media":{"image":{"height":585,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQCBxul8ygkf06Je&w=720&h=720&url=https\u00253A\u00252F\u00252Fventurebeat.com\u00252Fwp-content\u00252Fuploads\u00252F2015\u00252F11\u00252FDropbox-Open-outside-Novet-780x585.jpg&cfs=1","width":585}}}]}},{"name":"Serverless
162
+ Architectures","message":"\"Serverless\" is the new sensation in service architecture,
163
+ and it integrates the recent trends of microservices and reactive (message-driven)
164
+ architectures. We will play with some of these concepts in our SOA class this
165
+ coming semester. Take a peek at what''s brewing.\nhttp:\/\/martinfowler.com\/articles\/serverless.html","updated_time":"2016-07-14T19:01:17+0000","created_time":"2016-07-14T12:16:33+0000","id":"150352985174571_484366188439914","attachments":{"data":[{"title":"Serverless
166
+ Architectures","url":"http:\/\/www.facebook.com\/l.php?u=http\u00253A\u00252F\u00252Fmartinfowler.com\u00252Farticles\u00252Fserverless.html\u002523benefits&h=jAQG7K83t&s=1&enc=AZPvJmESyk6TsdlPKkhoU6H_1mt2rUP9HedbzHV7Gg-aYveD1CNAA8ten1gSOHt0E76V7S0fPlmL1HprKkkRwejf","media":{"image":{"height":300,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQCGBUsGoj1TcRRD&w=720&h=720&url=http\u00253A\u00252F\u00252Fmartinfowler.com\u00252Farticles\u00252Fserverless\u00252Fsps.png&cfs=1","width":300}}}]}},{"name":"Pokemon
167
+ Go Is Driving Insane Amounts of Sales at Small Local Businesses. Here''s How
168
+ It Works","message":"I''m shocked at how Pok\u00e9mon Go is taking over our
169
+ streets (very soon in TW, right?). And now its having a major effect on local
170
+ businesses as well. Great example of how an online service can transform offline
171
+ ones.","updated_time":"2016-07-13T09:36:32+0000","created_time":"2016-07-13T02:42:08+0000","id":"150352985174571_483847351825131","attachments":{"data":[{"title":"Pokemon
172
+ Go Is Driving Insane Amounts of Sales at Small Local Businesses. Here''s How
173
+ It Works","url":"http:\/\/www.facebook.com\/l.php?u=http\u00253A\u00252F\u00252Fwww.inc.com\u00252Fwalter-chen\u00252Fpok-mon-go-is-driving-insane-amounts-of-sales-at-small-local-businesses-here-s-h.html&h=0AQGBENqH&s=1&enc=AZO7_mU6Ti2CC6_W48DaDb8knM5duXfTPtoGETe_3RFvllu93NGZmKeJ-9XQHVXHLMtnZlOcffahPEZxSFk3_fFN","media":{"image":{"height":450,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQCDr9LKzFIQfJFh&w=720&h=720&url=http\u00253A\u00252F\u00252Fwww.incimages.com\u00252Fuploaded_files\u00252Fimage\u00252F970x450\u00252FPokemon_Heroes_2003_03-cc_100058.jpg&cfs=1","width":450}}}]}},{"name":"SOA
174
+ Syllabus","message":"The syllabus for next semester''s \"Service Oriented
175
+ Architecture\" class is now online! Take a look and share it with your coder
176
+ friends who are dreaming of their first startup :)","updated_time":"2016-07-04T11:18:26+0000","created_time":"2016-07-04T06:48:44+0000","id":"150352985174571_480686308807902","attachments":{"data":[{"title":"SOA
177
+ Syllabus","url":"http:\/\/www.facebook.com\/l.php?u=http\u00253A\u00252F\u00252Fbit.ly\u00252Fsoa-syllabus&h=8AQEzZIIe&s=1&enc=AZPMvD8DtN0P1Rqm_-VvTO9JM3y-910GomHPeoH39tz9vi2IOh22AeCGVAngi-7vQwh4ZW5klcWpf-hmjxwXAxFm"}]}},{"name":"Mongolia
178
+ is changing all its addresses to three-word phrases","message":"A plucky little
179
+ online startup is changing how we address and locate geographic places. The
180
+ story below shows how countries and international organizations are adopting
181
+ this method. Take a look at https:\/\/what3words.com to find your own three
182
+ words :)","updated_time":"2016-06-26T05:04:58+0000","created_time":"2016-06-15T07:55:13+0000","id":"150352985174571_474135702796296","attachments":{"data":[{"title":"Mongolia
183
+ is changing all its addresses to three-word phrases","url":"http:\/\/www.facebook.com\/l.php?u=http\u00253A\u00252F\u00252Fqz.com\u00252F705273\u00252Fmongolia-is-changing-all-its-addresses-to-three-word-phrases\u00252F&h=TAQEO82l0&s=1&enc=AZMmmMIarpg9VWSz45du2gFvh6N6XtzG655ZYGCtUlsTU__-1mUV9POKFM6dS01pXOov2WKAun2szRbtSWzNC6rV","media":{"image":{"height":720,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQBCzb8yBioJKKug&w=720&h=720&url=https\u00253A\u00252F\u00252Fqzprod.files.wordpress.com\u00252F2016\u00252F06\u00252Fjune-13-rtx12cmt-e1465820880769.jpg\u00253Fquality\u00253D80\u002526strip\u00253Dall\u002526w\u00253D1600&cfs=1","width":720}}}]}}],"paging":{"previous":"https:\/\/graph.facebook.com\/v2.6\/150352985174571\/feed?fields=name,message,updated_time,created_time,attachments\u00257Btitle,url,media\u00257D&since=1476952146&access_token=<ACCESS_TOKEN>&limit=25&__paging_token=enc_AdDRT3FRqddWHdExcEnxBuffZCipxhESZBM93TZAL1VTlcfHQr3aWV1rq23kG3uiPxcZCwvQeCiZC8fEJvrhCQFCo6fyMk1u9HaT3EXZBICgj897coSwZDZD&__previous=1","next":"https:\/\/graph.facebook.com\/v2.6\/150352985174571\/feed?fields=name,message,updated_time,created_time,attachments\u00257Btitle,url,media\u00257D&access_token=<ACCESS_TOKEN>&limit=25&until=1466917498&__paging_token=enc_AdBmZAsUzYqHLvymmCwfLv8K48KqrS6LGOHvgiJYkb7Brd7RrwyTZA8gMCDGPWYdza3XzU34YBZB7Xn0iN7WcT9cLhvOIFzhb8ZCDP8F35OnaNwZBtQZDZD"}}}'
183
184
  http_version:
184
- recorded_at: Thu, 20 Oct 2016 02:03:54 GMT
185
+ recorded_at: Sun, 23 Oct 2016 23:07:42 GMT
185
186
  - request:
186
187
  method: get
187
- uri: https://graph.facebook.com/150352985174571_517105121832687?access_token=<ACCESS_TOKEN_ESCAPED>
188
+ uri: https://graph.facebook.com/150352985174571_517105121832687?access_token=<ACCESS_TOKEN_ESCAPED>&fields=name,message,updated_time,created_time,attachments%7Btitle,description,url,media%7D
188
189
  body:
189
190
  encoding: US-ASCII
190
191
  string: ''
@@ -203,7 +204,7 @@ http_interactions:
203
204
  Access-Control-Allow-Origin:
204
205
  - "*"
205
206
  Etag:
206
- - '"13fa446026c0d1f3004c5006d2d3745a9cddf84b"'
207
+ - '"12c40e1438cb186785b25ed66d005b8d3328fb7b"'
207
208
  Pragma:
208
209
  - no-cache
209
210
  Cache-Control:
@@ -215,26 +216,29 @@ http_interactions:
215
216
  Content-Type:
216
217
  - text/javascript; charset=UTF-8
217
218
  X-Fb-Trace-Id:
218
- - EtxhZWqUlST
219
+ - A1KgW907PvI
219
220
  X-Fb-Rev:
220
- - '2632900'
221
+ - '2638327'
221
222
  Vary:
222
223
  - Accept-Encoding
223
224
  X-Fb-Debug:
224
- - 7YkaL6lasUGis77GniHJvdm6mS2MeA40zkqGs2ZdotURor08DGWTGI4Sqa+UL93Rr51DDocwbD9yDvMGMEsm4g==
225
+ - pjSsBhpJdP8iXrDD1ArO6IuMqKrBKBTM2hUKvusLa4cO4BP1a9ShszwQJ9utPQpBUfqFqXRQmAm1CF9pUnAGqg==
225
226
  Date:
226
- - Thu, 20 Oct 2016 02:04:31 GMT
227
+ - Sun, 23 Oct 2016 23:07:41 GMT
227
228
  Connection:
228
229
  - close
229
230
  body:
230
231
  encoding: UTF-8
231
- string: '{"created_time":"2016-10-04T02:21:25+0000","message":"A little quiz
232
- to keep you sharp on programming trends.","id":"150352985174571_517105121832687"}'
232
+ string: '{"name":"Guess the Programming Language | Tutorialzine","message":"A
233
+ little quiz to keep you sharp on programming trends.","updated_time":"2016-10-06T06:51:44+0000","created_time":"2016-10-04T02:21:25+0000","attachments":{"data":[{"title":"Guess
234
+ the Programming Language | Tutorialzine","description":"Can you tell Java
235
+ from JavaScript? Awesome! So you are ready to take our ultimate programming
236
+ challenge.","url":"http:\/\/www.facebook.com\/l.php?u=http\u00253A\u00252F\u00252Ftutorialzine.com\u00252F2014\u00252F06\u00252Fguess-the-programming-language\u00252F&h=EAQG17mA8&s=1&enc=AZMbCMgTVaXlmPRdfXOtJgfx4HDjV6QJli4PSM5rQUZBi4jJa5JSzWOdQ_XO8YT4Ut4ZvtJu1oyD5IpfaAjPxEbN","media":{"image":{"height":490,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQB9saA-D40lNQqm&w=720&h=720&url=http\u00253A\u00252F\u00252Fcdn.tutorialzine.com\u00252Fwp-content\u00252Fuploads\u00252F2014\u00252F06\u00252Fguess-the-programming-language.jpg&cfs=1","width":490}}}]},"id":"150352985174571_517105121832687"}'
233
237
  http_version:
234
- recorded_at: Thu, 20 Oct 2016 02:04:32 GMT
238
+ recorded_at: Sun, 23 Oct 2016 23:07:42 GMT
235
239
  - request:
236
240
  method: get
237
- uri: https://graph.facebook.com/150352985174571_517105121832687/attachments?access_token=<ACCESS_TOKEN_ESCAPED>
241
+ uri: https://graph.facebook.com/150352985174571?access_token=<ACCESS_TOKEN_ESCAPED>&fields=id,name,feed%7Bname,message,updated_time,created_time,attachments%7Btitle,description,url,media%7D%7D
238
242
  body:
239
243
  encoding: US-ASCII
240
244
  string: ''
@@ -253,7 +257,7 @@ http_interactions:
253
257
  Access-Control-Allow-Origin:
254
258
  - "*"
255
259
  Etag:
256
- - '"afd292f1f49e0badd72a6882f14fb294375a6774"'
260
+ - '"c58790af4ab167d092653e0464c0d18d4dd89bfc"'
257
261
  Pragma:
258
262
  - no-cache
259
263
  Cache-Control:
@@ -265,22 +269,162 @@ http_interactions:
265
269
  Content-Type:
266
270
  - text/javascript; charset=UTF-8
267
271
  X-Fb-Trace-Id:
268
- - Af60TZvtLb0
272
+ - FZ5Ru+ZtnrN
269
273
  X-Fb-Rev:
270
- - '2632900'
274
+ - '2645472'
271
275
  Vary:
272
276
  - Accept-Encoding
273
277
  X-Fb-Debug:
274
- - 6exowXZqdNxF/0Sc8Al8KeHM9VxncZfo6vlELW2vabmQ0Sfr0V4HYgWRr/998vK8akQ7/9eIFvK/z8YnVY6OZQ==
278
+ - kibcAx4afUXGvnHzx5xF+mXlRXVPDofCe6w06LeU2QySJkvg1LM5HwFPybrgYKEwiwE3ndWa7Bq2aKfRTRgGwg==
275
279
  Date:
276
- - Thu, 20 Oct 2016 02:04:31 GMT
280
+ - Wed, 26 Oct 2016 16:55:01 GMT
277
281
  Connection:
278
282
  - close
279
283
  body:
280
284
  encoding: UTF-8
281
- string: '{"data":[{"description":"Can you tell Java from JavaScript? Awesome!
282
- So you are ready to take our ultimate programming challenge.","media":{"image":{"height":490,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQB9saA-D40lNQqm&w=720&h=720&url=http\u00253A\u00252F\u00252Fcdn.tutorialzine.com\u00252Fwp-content\u00252Fuploads\u00252F2014\u00252F06\u00252Fguess-the-programming-language.jpg&cfs=1","width":490}},"target":{"url":"http:\/\/www.facebook.com\/l.php?u=http\u00253A\u00252F\u00252Ftutorialzine.com\u00252F2014\u00252F06\u00252Fguess-the-programming-language\u00252F&h=DAQG_ptFO&s=1&enc=AZNLaN3H7gvdfuVhX9KIz6gF40r3gJ4i-3ml7XVtvEex9iVrvyk6BECqL9CDPUldY6H-PJjf_mN8_Jdd-D1S_jnd"},"title":"Guess
283
- the Programming Language | Tutorialzine","type":"share","url":"http:\/\/www.facebook.com\/l.php?u=http\u00253A\u00252F\u00252Ftutorialzine.com\u00252F2014\u00252F06\u00252Fguess-the-programming-language\u00252F&h=DAQG_ptFO&s=1&enc=AZNLaN3H7gvdfuVhX9KIz6gF40r3gJ4i-3ml7XVtvEex9iVrvyk6BECqL9CDPUldY6H-PJjf_mN8_Jdd-D1S_jnd"}]}'
285
+ string: '{"id":"150352985174571","name":"Web Service Development \u0040 NTHU","feed":{"data":[{"name":"GitHub
286
+ Dumps REST Calls for Facebook''s GraphQL - The New Stack","message":"Github''s
287
+ adoption of GraphQL for APIs, over RESTful services, might be the tipping
288
+ point that makes GraphQL ubiquitous. From what little exposure I have to it
289
+ (thanks to YenTing and Yen-Nan at Cardinal Blue), it seems we are taking the
290
+ complexity and burden of APIs away from API consumers, and putting it squarely
291
+ at the feet of API providers. That means using APIs is about to become significantly
292
+ easier (albeit more deeply nested) for everyone! But it also means that creating
293
+ APIs is about to become significantly harder. Read more about the big shift
294
+ at Github.","updated_time":"2016-10-20T08:29:06+0000","created_time":"2016-10-20T05:45:32+0000","id":"150352985174571_524070464469486","attachments":{"data":[{"title":"GitHub
295
+ Dumps REST Calls for Facebook''s GraphQL - The New Stack","description":"Hoping
296
+ to streamline the remote querying services of its site, GitHub is moving its
297
+ API (application programming interface) from REST calls to Facebook\u2019s
298
+ GraphQL API. In the company\u2019s recent user conference GitHub Universe,
299
+ Kyle Daigle, GitHub platform engineering manager, explained that the company...","url":"http:\/\/www.facebook.com\/l.php?u=http\u00253A\u00252F\u00252Fthenewstack.io\u00252Fgithub-dumps-rest-graphql-api\u00252F&h=BAQEQpLDV&s=1&enc=AZMuArWJ2KbXcSfRLOLzlCxKphl_vQiF53WL06dX7ibSzpbcnv7ZFv0F5oWb3es83oDIZlhZIdep6q9x7QtH0RHC","media":{"image":{"height":720,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQC5HLw3s46cLqn7&w=720&h=720&url=http\u00253A\u00252F\u00252Fthenewstack.io\u00252Fwp-content\u00252Fuploads\u00252F2016\u00252F09\u00252FGHU-GraphQL-Woah.jpg&cfs=1&sx=0&sy=0&sw=2448&sh=2448","width":720}}}]}},{"name":"Taking
300
+ PHP Seriously","message":"https:\/\/m.facebook.com\/story.php?story_fbid=1098448240203391&id=100001146751327","updated_time":"2016-10-13T18:17:23+0000","created_time":"2016-10-13T17:15:20+0000","id":"150352985174571_521137638096102","attachments":{"data":[{"title":"Taking
301
+ PHP Seriously","description":"by Keith Adams, Slack Engineering","url":"https:\/\/www.facebook.com\/l.php?u=https\u00253A\u00252F\u00252Fslack.engineering\u00252Ftaking-php-seriously-cf7a60065329\u002523.g3w9ecf66&h=iAQHfhNKM&s=1&enc=AZM86DcXm5yXd89ntvD7fgR76vW9E2_kSIUkmhk0VInOMk4wK27Dyf7xy4a6Zr6xW4NK33_piBLoGBbEGayZSN4i","media":{"image":{"height":669,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQCmbxAdG46sLBUD&w=720&h=720&url=https\u00253A\u00252F\u00252Fd262ilb51hltx0.cloudfront.net\u00252Fmax\u00252F1200\u00252F1\u00252Ax5N8tfTVEmQro2ySxoZtvw.jpeg&cfs=1","width":669}}}]}},{"name":"How
302
+ To Save The Princess In 8 Programming Languages","updated_time":"2016-10-06T08:39:47+0000","created_time":"2016-10-06T08:28:40+0000","id":"150352985174571_518029841740215","attachments":{"data":[{"title":"How
303
+ To Save The Princess In 8 Programming Languages","description":"Programming
304
+ sucks. This fairytale comic shows the different ways in which programming
305
+ languages could fail you in the fantasy kingdom.","url":"https:\/\/www.facebook.com\/l.php?u=https\u00253A\u00252F\u00252Ftoggl.com\u00252Fprogramming-princess&h=xAQHF7IZn&s=1&enc=AZPT2sBsY0_DCenaNCG_BsPV45iIqV-JSMdaenUQX9sLpkaCZUrI8bYCB_WCP9DfKd5pyT8G_Eo8MqfFVVixpLOy","media":{"image":{"height":630,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQDEZQJwFjW82Fzm&w=720&h=720&url=https\u00253A\u00252F\u00252Ftoggl.com\u00252Fimages\u00252Fshare-img\u00252Ffb-share-git-princess.jpg&cfs=1","width":630}}}]}},{"name":"Guess
306
+ the Programming Language | Tutorialzine","message":"A little quiz to keep
307
+ you sharp on programming trends.","updated_time":"2016-10-06T06:51:44+0000","created_time":"2016-10-04T02:21:25+0000","id":"150352985174571_517105121832687","attachments":{"data":[{"title":"Guess
308
+ the Programming Language | Tutorialzine","description":"Can you tell Java
309
+ from JavaScript? Awesome! So you are ready to take our ultimate programming
310
+ challenge.","url":"http:\/\/www.facebook.com\/l.php?u=http\u00253A\u00252F\u00252Ftutorialzine.com\u00252F2014\u00252F06\u00252Fguess-the-programming-language\u00252F&h=LAQEkOXZt&s=1&enc=AZMwy0_l76RdgXTvZYCA_-LDh6wwKyQm_HeESA58uK3dKtL1ETBCbO-JxKnW_52pBV5hPL2FST_QAlnc9eJGTTl1","media":{"image":{"height":490,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQB9saA-D40lNQqm&w=720&h=720&url=http\u00253A\u00252F\u00252Fcdn.tutorialzine.com\u00252Fwp-content\u00252Fuploads\u00252F2014\u00252F06\u00252Fguess-the-programming-language.jpg&cfs=1","width":490}}}]}},{"name":"How
311
+ it feels to learn JavaScript in 2016","updated_time":"2016-10-06T01:18:12+0000","created_time":"2016-10-05T13:47:43+0000","id":"150352985174571_517701838439682","attachments":{"data":[{"title":"How
312
+ it feels to learn JavaScript in 2016","description":"Edit: Thanks for pointing
313
+ typos and mistakes, I\u2019ll update the article as noted. Discussion in HackerNews
314
+ and Reddit.","url":"https:\/\/www.facebook.com\/l.php?u=https\u00253A\u00252F\u00252Fhackernoon.com\u00252Fhow-it-feels-to-learn-javascript-in-2016-d3a717dd577f\u002523.m0lkkfan1&h=QAQEDlt5e&s=1&enc=AZNZnAvj_3Bk3oJBTr7wncI4YR8UhkRSoZ6HTh-bmZxJx6hJRqXSMVKzrx34z8Oya5XWUXoPFbgEsrgL65--5HjH","media":{"image":{"height":720,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQBw5xIxnMhHtpnj&w=720&h=720&url=https\u00253A\u00252F\u00252Fcdn-images-2.medium.com\u00252Fmax\u00252F1200\u00252F1\u00252AraWO3dhM4jMjf9VY-kZzNg.png&cfs=1","width":720}}}]}},{"name":"5
315
+ emerging programming languages with a bright future","message":"Up and coming
316
+ languages worth keeping our eyes on. I''m already a huge fan of Crystal and
317
+ Rust, but the author has convinced me to pay more attention to Kotlin and
318
+ Elm.","updated_time":"2016-09-22T08:12:35+0000","created_time":"2016-09-21T10:13:58+0000","id":"150352985174571_511894255687107","attachments":{"data":[{"title":"5
319
+ emerging programming languages with a bright future","description":"Get the
320
+ elevator pitch for five of the most promising languages (some of them you
321
+ probably haven''t heard of before) that have the potential to grow...","url":"http:\/\/www.facebook.com\/l.php?u=http\u00253A\u00252F\u00252Ftechbeacon.com\u00252F5-emerging-programming-languages-bright-future\u00253Futm_content\u00253Dbuffer300a1\u002526utm_medium\u00253Dsocial\u002526utm_source\u00253Dtwitter.com\u002526utm_campaign\u00253Dbuffer&h=uAQFyfQhv&s=1&enc=AZPPipsXORfRYPLey-fYNR2-DtHJyKFaX3lKEaDXueH0xC2gj4KC4thpju0QmHEIsRNuSRJKhU54j7OdidNPY7gt","media":{"image":{"height":480,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQAxbtCPHht3vWb6&w=720&h=720&url=http\u00253A\u00252F\u00252Ftechbeacon.com\u00252Fsites\u00252Fdefault\u00252Ffiles\u00252Fstyles\u00252Fsocial\u00252Fpublic\u00252Ffield\u00252Fimage\u00252F5_emerging_programming_languages_with_a_bright_future.jpg\u00253Fitok\u00253Dm0nlEinF&cfs=1","width":480}}}]}},{"name":"A
322
+ whole new Universe","message":"I can''t even wrap my head around all the new
323
+ features Github just released: code reviews, kanban boards, and much more.","updated_time":"2016-09-19T09:14:51+0000","created_time":"2016-09-15T03:42:48+0000","id":"150352985174571_509461352597064","attachments":{"data":[{"title":"A
324
+ whole new Universe","description":"Learn about the exciting features and announcements
325
+ revealed at this year\u2019s annual GitHub Universe conference at historic
326
+ Pier 70 in San Francisco.","url":"https:\/\/www.facebook.com\/l.php?u=https\u00253A\u00252F\u00252Fgithub.com\u00252Funiverse-2016&h=tAQFB9sTO&s=1&enc=AZOBVuVkCbishkcMftzb_1w0o11p2yWlgRq0ymgoobnIQ7LBSEhyw0ZPOGUGtTMeP4ckJI8au40LE_wg2mfTEpJM","media":{"image":{"height":630,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQBsb70KV75vMJ8B&w=720&h=720&url=https\u00253A\u00252F\u00252Fassets-cdn.github.com\u00252Fimages\u00252Fmodules\u00252Funiverse-2016\u00252Funiverse-open-graph.png&cfs=1","width":630}}}]}},{"name":"Vert.x","message":"http:\/\/vertx.io\/","updated_time":"2016-09-13T20:34:39+0000","created_time":"2016-09-13T20:34:39+0000","id":"150352985174571_508953969314469","attachments":{"data":[{"title":"Vert.x","description":"Vert.x
327
+ is a tool-kit for building reactive applications on the JVM.","url":"http:\/\/www.facebook.com\/l.php?u=http\u00253A\u00252F\u00252Fvertx.io\u00252F&h=NAQG9A1a2&s=1&enc=AZNMqUZEGBqZsKGU8Mvb47om6xOazFfoiGZ6SG5mM2w4WUcCRAz_Xoc4X297eb9cPGZOOUAlODF1vjNHvRFtk7VP","media":{"image":{"height":360,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQC13D8UqDGMX5IF&w=720&h=720&url=http\u00253A\u00252F\u00252Fvertx.io\u00252Fassets\u00252Fuser_logos\u00252Fswisscom.png&cfs=1","width":360}}}]}},{"name":"Codecademy","updated_time":"2016-09-13T02:04:20+0000","created_time":"2016-09-13T02:04:20+0000","id":"150352985174571_508631766013356","attachments":{"data":[{"title":"Timeline
328
+ Photos","description":"Are you a Javascript guru? Then you should check out
329
+ our course in React.js!\n\nReact enables websites to display complex animations,
330
+ large volumes of data, or other memory-heavy tasks without slowing down. At
331
+ the end of the course, you\u2019ll know how to build sophisticated React applications.
332
+ Check it out!\n\nhttp:\/\/codecademy.io\/YRFS3047CDf","url":"https:\/\/www.facebook.com\/codecademy\/photos\/a.553205214692855.138303.272256069454439\/1387442691269099\/?type=3","media":{"image":{"height":377,"src":"https:\/\/scontent.xx.fbcdn.net\/v\/t1.0-9\/s720x720\/14264951_1387442691269099_7557697962736020966_n.png?oh=1c67604ccd5679d98c72100f943f3863&oe=5891713F","width":720}}}]}},{"name":"Scaling
333
+ Spinnaker at Netflix \u2014 The Basics","message":"https:\/\/medium.com\/\u0040ajordens\/scaling-spinnaker-at-netflix-part-1-8a5ae51ee6de#.fubo771g2","updated_time":"2016-09-11T09:14:53+0000","created_time":"2016-09-11T09:14:53+0000","id":"150352985174571_507894159420450","attachments":{"data":[{"title":"Scaling
334
+ Spinnaker at Netflix \u2014 The Basics","description":"The Backstory","url":"https:\/\/www.facebook.com\/l.php?u=https\u00253A\u00252F\u00252Fmedium.com\u00252F\u002540ajordens\u00252Fscaling-spinnaker-at-netflix-part-1-8a5ae51ee6de\u002523.fubo771g2&h=JAQFMAksP&s=1&enc=AZN8cMfGS70kFQMD1hLWtUjhjw8HlIyKOiVj7cS2uhzClW0FHaHPeLE27ZGsaqZweHyENAIoSFtv1rn50F8ypOZn","media":{"image":{"height":720,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQBS3PgL3uUEU1VC&w=720&h=720&url=https\u00253A\u00252F\u00252Fcdn-images-1.medium.com\u00252Fmax\u00252F1200\u00252F1\u00252AMrL6DHIxxY6CrL9Binpjjg.png&cfs=1","width":720}}}]}},{"name":"Design
335
+ Stamina Hypothesis","message":"Why (and when) we need architecture.","updated_time":"2016-09-08T03:33:06+0000","created_time":"2015-09-24T11:12:32+0000","id":"150352985174571_390601061149761","attachments":{"data":[{"title":"Design
336
+ Stamina Hypothesis","description":"The value of good software design is economic:
337
+ you can continue to add new functionality quickly even as the code-base grows
338
+ in size.","url":"http:\/\/www.facebook.com\/l.php?u=http\u00253A\u00252F\u00252Fmartinfowler.com\u00252Fbliki\u00252FDesignStaminaHypothesis.html&h=0AQG-z_xt&s=1&enc=AZNUmjnZMfKYk--re8eXShm4XcF7MfNUMzhjWWgNxNhWj5nsnGYKiDkGYgy_x3xAeqV4EzzJ1d54Ncr2hrAp2yyB","media":{"image":{"height":329,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQB61p6nJsutcaQ4&w=720&h=720&url=http\u00253A\u00252F\u00252Fmartinfowler.com\u00252Fbliki\u00252Fimages\u00252FdesignStaminaGraph.gif&cfs=1","width":329}}}]}},{"name":"Git
339
+ 2.10 has been released","updated_time":"2016-09-03T06:33:51+0000","created_time":"2016-09-03T05:23:56+0000","id":"150352985174571_504539303089269","attachments":{"data":[{"title":"Git
340
+ 2.10 has been released","description":"The open source Git project has just
341
+ released Git 2.10.0, with features and bugfixes from over 70 contributors.
342
+ Here''s our look at some of the most interesting new features: Progress reporting
343
+ for...","url":"https:\/\/www.facebook.com\/l.php?u=https\u00253A\u00252F\u00252Fgithub.com\u00252Fblog\u00252F2242-git-2-10-has-been-released&h=mAQEUdhVr&s=1&enc=AZM2Nlce1FdCxZqMA9lcNbLvsiBOHCNhPbcAs_RPg-RJLTT8RC6yaEIIkJiR2HeBA9hKfT1uHYseL9UeDGJbDVgw","media":{"image":{"height":630,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQAMeAXoLqWgJ6YI&w=720&h=720&url=https\u00253A\u00252F\u00252Fcloud.githubusercontent.com\u00252Fassets\u00252F121322\u00252F16134794\u00252F284be2e6-33d4-11e6-9165-58068a872ec2.png&cfs=1","width":630}}}]}},{"name":"The
344
+ target=\"_blank\" vulnerability by example","message":"https:\/\/dev.to\/ben\/the-targetblank-vulnerability-by-example","updated_time":"2016-09-02T17:50:31+0000","created_time":"2016-09-01T12:49:45+0000","id":"150352985174571_503746883168511","attachments":{"data":[{"title":"The
345
+ target=\"_blank\" vulnerability by example","description":"Instagram leaves
346
+ its users open to a simple phishing attack","url":"https:\/\/www.facebook.com\/l.php?u=https\u00253A\u00252F\u00252Fdev.to\u00252Fben\u00252Fthe-targetblank-vulnerability-by-example&h=IAQEu0Wpp&s=1&enc=AZM1YhiXcj8XpQPFdfpu7mf9bTE4LLGdCzkClL9UFKGPCUtKQvoLOhFYJeOODS1TYI_KQTgNtO0TPqb-N8OB4rri","media":{"image":{"height":700,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQCuBI-PnC7cvAsc&w=720&h=720&url=https\u00253A\u00252F\u00252Fres.cloudinary.com\u00252Fpracticaldev\u00252Fimage\u00252Ffetch\u00252Fs--AGTf6Osi--\u00252Fc_imagga_scale\u00252Cf_auto\u00252Cfl_progressive\u00252Ch_700\u00252Cq_auto\u00252Cw_1480\u00252Fhttps\u00253A\u00252F\u00252Fi.vimeocdn.com\u00252Fvideo\u00252F570148251_1280x720.jpg&cfs=1","width":700}}}]}},{"name":"Katacoda
347
+ - Interactive Learning Platform for Software Engineers","message":"just discovered
348
+ this .... looks nice","updated_time":"2016-08-26T02:34:28+0000","created_time":"2016-08-26T02:34:28+0000","id":"150352985174571_500972406779292","attachments":{"data":[{"title":"Katacoda
349
+ - Interactive Learning Platform for Software Engineers","description":"Learn
350
+ the latest technologies with our hands-on labs","url":"https:\/\/www.facebook.com\/l.php?u=https\u00253A\u00252F\u00252Fwww.katacoda.com\u00252F&h=gAQGgvDrK&s=1&enc=AZO8tyGR0zvrmvuubnDQxdYafyIe6JOndG1LAgevgQwvWQhJipw-l1QD41kaGzZCX7AYMeYr8vvuSMhDFViJMJTA","media":{"image":{"height":720,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQBt33FvO3-PQ4vI&w=720&h=720&url=https\u00253A\u00252F\u00252Fwww.katacoda.com\u00252Fimages\u00252Fbackgrounds\u00252Fpeople-working.jpg&cfs=1","width":720}}}]}},{"name":"Let''s
351
+ Encrypt - Wikipedia, the free encyclopedia","message":"No reason not to use
352
+ https for your web services: apart from the good old https:\/\/www.startssl.com,
353
+ now we have https:\/\/letsencrypt.org which makes getting, installing and
354
+ keeping a cert up to date easier. Plus its backed by many big guns and its
355
+ FREE! Here is the wikipedia article about it: https:\/\/en.m.wikipedia.org\/wiki\/Let\u002527s_Encrypt.
356
+ Just remember its pretty new and do read about how the certs are signed and
357
+ accepted by browser\/clients.","updated_time":"2016-08-22T00:55:29+0000","created_time":"2016-08-21T09:50:36+0000","id":"150352985174571_499005640309302","attachments":{"data":[{"title":"Let''s
358
+ Encrypt - Wikipedia, the free encyclopedia","description":"Let''s Encrypt
359
+ is a certificate authority that launched on April 12, 2016[1][2] that provides
360
+ free X.509 certificates for Transport Layer Security (TLS) encryption via
361
+ an automated process designed to eliminate the current complex process of
362
+ manual creation, validation, signing, installation, and ren...","url":"https:\/\/www.facebook.com\/l.php?u=https\u00253A\u00252F\u00252Fen.m.wikipedia.org\u00252Fwiki\u00252FLet\u00252527s_Encrypt&h=UAQEsc6jt&s=1&enc=AZM_UTQXQVgR8rG92TmW3SDNSGrD_wjveMtir-Qhm5OmLDpMYtKf_Y26_qZj3hPWfeUSIeaRfMAIs7Nh4qTCsISj","media":{"image":{"height":131,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQApCjwHGpTUJRSa&w=720&h=720&url=https\u00253A\u00252F\u00252Fupload.wikimedia.org\u00252Fwikipedia\u00252Fcommons\u00252Fthumb\u00252Fb\u00252Fbb\u00252FLetsencrypt_screenshot_2_domain_choice.png\u00252F220px-Letsencrypt_screenshot_2_domain_choice.png&cfs=1","width":131}}}]}},{"name":"Google''s
363
+ QUIC protocol: moving the web from TCP to UDP","message":"A speedier web?
364
+ Yes thank you!\n\n","updated_time":"2016-08-02T04:40:01+0000","created_time":"2016-08-01T13:53:37+0000","id":"150352985174571_491254161084450","attachments":{"data":[{"title":"Google''s
365
+ QUIC protocol: moving the web from TCP to UDP","description":"The QUIC protocol
366
+ (Quick UDP Internet Connections) is an entirely new protocol for the web developed
367
+ on top of UDP instead of TCP. Some are even (jokingly) calling it TCP\/2.
368
+ I only learned about QUIC a few weeks ago while doing the curl & libcurl episode
369
+ of the SysCast podcast. The really interestin...","url":"https:\/\/www.facebook.com\/l.php?u=https\u00253A\u00252F\u00252Fma.ttias.be\u00252Fgoogles-quic-protocol-moving-web-tcp-udp\u00252F&h=RAQEYDKxw&s=1&enc=AZP9Z_8QG5GRdtFg3COWEvE_fKFa_5C_4uapMolCcDn03knEr_VyTQ6eYagFgcMlcCYeT9_AkazP6POeQp4-TQ-D","media":{"image":{"height":720,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQAAP49rj-fnvioY&w=720&h=720&url=https\u00253A\u00252F\u00252Fma.ttias.be\u00252Fwp-content\u00252Fuploads\u00252F2016\u00252F07\u00252Fquic_parking_lot_problem.png&cfs=1","width":720}}}]}},{"name":"Introducing
370
+ GitKraken Pro\u2014launch fundraiser | Axosoft","message":"https:\/\/blog.axosoft.com\/2016\/07\/28\/introducing-gitkraken-pro\/","updated_time":"2016-07-30T17:51:41+0000","created_time":"2016-07-30T17:51:41+0000","id":"150352985174571_490544944488705","attachments":{"data":[{"title":"Introducing
371
+ GitKraken Pro\u2014launch fundraiser | Axosoft","description":"Learn about
372
+ the new edition of GitKraken, with even more features, and help raise money
373
+ and awareness for the Nightscout Foundation, an open source technology project
374
+ helping those affected by Type 1 diabetes!","url":"https:\/\/www.facebook.com\/l.php?u=https\u00253A\u00252F\u00252Fblog.axosoft.com\u00252F2016\u00252F07\u00252F28\u00252Fintroducing-gitkraken-pro\u00252F&h=-AQGdbSSK&s=1&enc=AZObEliJjBtfhK10s4RiR5iBlC-6SMim829br3ueBzfbGoXdCL8qPW4CoJehnCwXMMNZNVETuh9Z6VRa03419JQe","media":{"image":{"height":720,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQCiRe3ytesqyg6K&w=720&h=720&url=https\u00253A\u00252F\u00252Fblog.axosoft.com\u00252Fwp-content\u00252Fuploads\u00252F2016\u00252F07\u00252FTeaming-Up-v2-wide.png&cfs=1&l","width":720}}}]}},{"name":"Create
375
+ Apps with No Configuration | React","message":"For those using React, although
376
+ optional webpack loaders (such as sass) still need to be added!","updated_time":"2016-07-23T10:41:04+0000","created_time":"2016-07-23T09:55:25+0000","id":"150352985174571_487752758101257","attachments":{"data":[{"title":"Create
377
+ Apps with No Configuration | React","description":"A JavaScript library for
378
+ building user interfaces","url":"https:\/\/www.facebook.com\/l.php?u=https\u00253A\u00252F\u00252Ffacebook.github.io\u00252Freact\u00252Fblog\u00252F2016\u00252F07\u00252F22\u00252Fcreate-apps-with-no-configuration.html&h=SAQGKLveJ&s=1&enc=AZOlJy-fVHd34g9NyWLYYsTJpqe2aQbZ_bRA_AKxQseOOOfm_HqT-dVVj3S01WZD83FUx9vIZKxqGudVGMoWJMcO","media":{"image":{"height":400,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQC26d6oRyFdqvxX&w=720&h=720&url=https\u00253A\u00252F\u00252Ffacebook.github.io\u00252Freact\u00252Fimg\u00252Flogo_og.png&cfs=1","width":400}}}]}},{"name":"introduction\u00b6
379
+ Lettuce is an extremely useful and charming tool for BDD (Behavior Driven...
380
+ -...","message":"Test scenarios that anyone can make sense of","updated_time":"2016-07-22T11:46:59+0000","created_time":"2016-07-22T06:28:02+0000","id":"150352985174571_487315358144997","attachments":{"data":[{"title":"introduction\u00b6
381
+ Lettuce is an extremely useful and charming tool for BDD (Behavior Driven...
382
+ -...","description":"Lettuce is an extremely useful and charming tool for
383
+ BDD (Behavior Driven Development). It can execute plain-text functional descriptions
384
+ as automated tests for Python projects, just as Cucumber does for Ruby.","url":"http:\/\/www.facebook.com\/l.php?u=http\u00253A\u00252F\u00252Flettuce.it\u00252Ftutorial\u00252Fsimple.html\u002523tutorial-simple&h=FAQGWhi_V&s=1&enc=AZOq0vipkT-2BJL5l3L3gnoDQjRA65yMpzPp0_61d1mOR75X8PJIY0SbXH7cbIzYIrb9A6Y1Eym-eFNN_oFHxZHc","media":{"image":{"height":687,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQDL7gIjkOiwMbE7&w=720&h=720&url=http\u00253A\u00252F\u00252Flettuce.it\u00252F_images\u00252Fscreenshot5.png&cfs=1","width":687}}}]}},{"message":"Check
385
+ out: https:\/\/www.websequencediagrams.com \u2014 fun and friendly way to
386
+ create sequence diagrams for web and mobile activities. I usually end up drawing
387
+ these on paper or on the board. I think it will be quite engaging to play
388
+ with this live!","updated_time":"2016-07-21T02:25:49+0000","created_time":"2016-07-20T03:59:51+0000","id":"150352985174571_486566974886502","attachments":{"data":[{"description":"Check
389
+ out: https:\/\/www.websequencediagrams.com \u2014 fun and friendly way to
390
+ create sequence diagrams for web and mobile activities. I usually end up drawing
391
+ these on paper or on the board. I think it will be quite engaging to play
392
+ with this live!","url":"https:\/\/www.facebook.com\/photo.php?fbid=1058362510919499&set=gm.486566974886502&type=3","media":{"image":{"height":392,"src":"https:\/\/scontent.xx.fbcdn.net\/v\/t1.0-9\/s720x720\/13680904_1058362510919499_8542835077177246391_n.jpg?oh=e23aa643f32eb9665e3c8ba8a43c01ca&oe=58A0A9E7","width":720}}}]}},{"name":"Dropbox
393
+ open-sources Lepton, a compression algorithm that cuts JPEG file size by 22\u0025","message":"http:\/\/venturebeat.com\/2016\/07\/14\/dropbox-open-sources-lepton-a-compression-algorithm-that-cuts-jpeg-file-size-by-22\/","updated_time":"2016-07-15T05:52:51+0000","created_time":"2016-07-14T19:37:54+0000","id":"150352985174571_484513371758529","attachments":{"data":[{"title":"Dropbox
394
+ open-sources Lepton, a compression algorithm that cuts JPEG file size by 22\u0025","description":"Cloud
395
+ syncing and sharing software company Dropbox today announced that it has released
396
+ an image compression algorithm called Lepton under an Apache open-source license
397
+ on GitHub.","url":"http:\/\/www.facebook.com\/l.php?u=http\u00253A\u00252F\u00252Fventurebeat.com\u00252F2016\u00252F07\u00252F14\u00252Fdropbox-open-sources-lepton-a-compression-algorithm-that-cuts-jpeg-file-size-by-22\u00252F&h=sAQF-3I4t&s=1&enc=AZOQ0oWoyWXC28pwOZKXN3iktksoqx8dUur7jMWbCIKaR6cksX2Qe9JA3FM0wf5PpeckJ2DsRy5cAinoAjQYzMjs","media":{"image":{"height":585,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQCBxul8ygkf06Je&w=720&h=720&url=https\u00253A\u00252F\u00252Fventurebeat.com\u00252Fwp-content\u00252Fuploads\u00252F2015\u00252F11\u00252FDropbox-Open-outside-Novet-780x585.jpg&cfs=1","width":585}}}]}},{"name":"Serverless
398
+ Architectures","message":"\"Serverless\" is the new sensation in service architecture,
399
+ and it integrates the recent trends of microservices and reactive (message-driven)
400
+ architectures. We will play with some of these concepts in our SOA class this
401
+ coming semester. Take a peek at what''s brewing.\nhttp:\/\/martinfowler.com\/articles\/serverless.html","updated_time":"2016-07-14T19:01:17+0000","created_time":"2016-07-14T12:16:33+0000","id":"150352985174571_484366188439914","attachments":{"data":[{"title":"Serverless
402
+ Architectures","description":"Serverless architectures replace a managed server
403
+ with a collection of third party services and FaaS","url":"http:\/\/www.facebook.com\/l.php?u=http\u00253A\u00252F\u00252Fmartinfowler.com\u00252Farticles\u00252Fserverless.html\u002523benefits&h=DAQGWi2PV&s=1&enc=AZNAoJheX5WJrmUW4OCNaTUIc4YiLww-HP2jwr0Fk74_-rFwauuk_uHb3HGuJ5GbDlDf6qwbQ8la4ud3WhnnyQ1E","media":{"image":{"height":300,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQCGBUsGoj1TcRRD&w=720&h=720&url=http\u00253A\u00252F\u00252Fmartinfowler.com\u00252Farticles\u00252Fserverless\u00252Fsps.png&cfs=1","width":300}}}]}},{"name":"Pokemon
404
+ Go Is Driving Insane Amounts of Sales at Small Local Businesses. Here''s How
405
+ It Works","message":"I''m shocked at how Pok\u00e9mon Go is taking over our
406
+ streets (very soon in TW, right?). And now its having a major effect on local
407
+ businesses as well. Great example of how an online service can transform offline
408
+ ones.","updated_time":"2016-07-13T09:36:32+0000","created_time":"2016-07-13T02:42:08+0000","id":"150352985174571_483847351825131","attachments":{"data":[{"title":"Pokemon
409
+ Go Is Driving Insane Amounts of Sales at Small Local Businesses. Here''s How
410
+ It Works","description":"For $1.19 an hour, you can have more customers than
411
+ you''ve ever seen in your life","url":"http:\/\/www.facebook.com\/l.php?u=http\u00253A\u00252F\u00252Fwww.inc.com\u00252Fwalter-chen\u00252Fpok-mon-go-is-driving-insane-amounts-of-sales-at-small-local-businesses-here-s-h.html&h=uAQFyfQhv&s=1&enc=AZOtxYNAgRl3Cg6Q57ZG8oEK4xyUD-iFIl_lCmF2j6fx8x6eavOzKa2TsTtKntTwOVJCI03O4rkbQjD5BZhvq7vC","media":{"image":{"height":450,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQCDr9LKzFIQfJFh&w=720&h=720&url=http\u00253A\u00252F\u00252Fwww.incimages.com\u00252Fuploaded_files\u00252Fimage\u00252F970x450\u00252FPokemon_Heroes_2003_03-cc_100058.jpg&cfs=1","width":450}}}]}},{"name":"SOA
412
+ Syllabus","message":"The syllabus for next semester''s \"Service Oriented
413
+ Architecture\" class is now online! Take a look and share it with your coder
414
+ friends who are dreaming of their first startup :)","updated_time":"2016-07-04T11:18:26+0000","created_time":"2016-07-04T06:48:44+0000","id":"150352985174571_480686308807902","attachments":{"data":[{"title":"SOA
415
+ Syllabus","description":"Institute of Service Science, National Tsing Hua
416
+ University\u000bService Oriented Architecture\u000bFall 2016 Course Duration:
417
+ Sep 2015 \u2013 Jan 2016\u000bClass Time: Mondays, 9:00am-12:00pm\u000b Instructor:
418
+ Soumya Ray (soumya.ray\u0040iss.nthu.edu.tw)\u000bAssistant: TBA (\u0040...
419
+ available on Slack) How do companies lik...","url":"http:\/\/www.facebook.com\/l.php?u=http\u00253A\u00252F\u00252Fbit.ly\u00252Fsoa-syllabus&h=lAQHeaX5S&s=1&enc=AZOd1y20GsGnL0v_gYWTrIDCJTY48jbyWj5B_7GB44-LsJGadlpHaIcmAxZ1uaL6qj1dEJ5ixc_BFTASTj74mrfs"}]}},{"name":"Mongolia
420
+ is changing all its addresses to three-word phrases","message":"A plucky little
421
+ online startup is changing how we address and locate geographic places. The
422
+ story below shows how countries and international organizations are adopting
423
+ this method. Take a look at https:\/\/what3words.com to find your own three
424
+ words :)","updated_time":"2016-06-26T05:04:58+0000","created_time":"2016-06-15T07:55:13+0000","id":"150352985174571_474135702796296","attachments":{"data":[{"title":"Mongolia
425
+ is changing all its addresses to three-word phrases","description":"All the
426
+ mailman will need to find the US embassy in Ulaanbataar are these three words:
427
+ constants.stuffy.activism.","url":"http:\/\/www.facebook.com\/l.php?u=http\u00253A\u00252F\u00252Fqz.com\u00252F705273\u00252Fmongolia-is-changing-all-its-addresses-to-three-word-phrases\u00252F&h=JAQFMAksP&s=1&enc=AZN02PMmsYT-iK2B1lVh0qeNY7OGxEegLsCoQEytDDBIJgskc9gKuVUVI0SOHPwA5RbLYjALZVY9tHuLS0F0_86P","media":{"image":{"height":720,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQBCzb8yBioJKKug&w=720&h=720&url=https\u00253A\u00252F\u00252Fqzprod.files.wordpress.com\u00252F2016\u00252F06\u00252Fjune-13-rtx12cmt-e1465820880769.jpg\u00253Fquality\u00253D80\u002526strip\u00253Dall\u002526w\u00253D1600&cfs=1","width":720}}}]}}],"paging":{"previous":"https:\/\/graph.facebook.com\/v2.6\/150352985174571\/feed?fields=name,message,updated_time,created_time,attachments\u00257Btitle,description,url,media\u00257D&since=1476952146&access_token=<ACCESS_TOKEN>&limit=25&__paging_token=enc_AdDRT3FRqddWHdExcEnxBuffZCipxhESZBM93TZAL1VTlcfHQr3aWV1rq23kG3uiPxcZCwvQeCiZC8fEJvrhCQFCo6fyMk1u9HaT3EXZBICgj897coSwZDZD&__previous=1","next":"https:\/\/graph.facebook.com\/v2.6\/150352985174571\/feed?fields=name,message,updated_time,created_time,attachments\u00257Btitle,description,url,media\u00257D&access_token=<ACCESS_TOKEN>&limit=25&until=1466917498&__paging_token=enc_AdBmZAsUzYqHLvymmCwfLv8K48KqrS6LGOHvgiJYkb7Brd7RrwyTZA8gMCDGPWYdza3XzU34YBZB7Xn0iN7WcT9cLhvOIFzhb8ZCDP8F35OnaNwZBtQZDZD"}}}'
284
428
  http_version:
285
- recorded_at: Thu, 20 Oct 2016 02:04:33 GMT
429
+ recorded_at: Wed, 26 Oct 2016 16:55:01 GMT
286
430
  recorded_with: VCR 3.0.3
data/spec/spec_helper.rb CHANGED
@@ -1,4 +1,6 @@
1
1
  # frozen_string_literal: true
2
+ require 'codeclimate-test-reporter'
3
+ CodeClimate::TestReporter.start
2
4
  require 'simplecov'
3
5
  SimpleCov.start
4
6
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: facegroup
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Soumya Ray
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-22 00:00:00.000000000 Z
11
+ date: 2016-10-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: http
@@ -150,6 +150,20 @@ dependencies:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0.42'
153
+ - !ruby/object:Gem::Dependency
154
+ name: codeclimate-test-reporter
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '0.6'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '0.6'
153
167
  description: Extracts feed, postings, and attachments from FB Groups
154
168
  email:
155
169
  - soumya.ray@gmail.com
@@ -158,6 +172,7 @@ executables:
158
172
  extensions: []
159
173
  extra_rdoc_files: []
160
174
  files:
175
+ - ".codeclimate.yml"
161
176
  - ".gitignore"
162
177
  - ".rubocop.yml"
163
178
  - ".travis.yml"