Browse Source

chore(deploy): Move to buildpacks, slight redesign.

jackyalcine 1 year ago
parent
commit
d81f5b06b0
100 changed files with 624 additions and 750 deletions
  1. 4
    1
      .buildpacks
  2. 2
    3
      .gitignore
  3. 6
    0
      .gitmodules
  4. 1
    0
      .jekyll_buildpack.config
  5. 1
    0
      .node-version
  6. 0
    0
      .static
  7. 0
    0
      CHECKS
  8. 1
    0
      DOKKU_SCALE
  9. 11
    7
      Gemfile
  10. 78
    67
      Gemfile.lock
  11. 2
    3
      Guardfile
  12. 0
    0
      Procfile
  13. 22
    40
      Rakefile
  14. 22
    11
      _config.dev.yml
  15. 56
    85
      _config.yml
  16. 56
    0
      app-nginx.conf.sigil
  17. 10
    5
      config.ru
  18. 0
    33
      config/deploy.rb
  19. 3
    0
      lib/liquid/filters.rb
  20. 12
    0
      lib/liquid/filters/category_links.rb
  21. 1
    1
      lib/liquid/tags.rb
  22. 9
    4
      package.json
  23. 0
    1
      src/.node-version
  24. 1
    1
      src/_assets/css/components/_color.scss
  25. 6
    12
      src/_assets/css/components/_post.scss
  26. 2
    4
      src/_assets/css/components/_social.scss
  27. 7
    8
      src/_assets/css/components/_typography.scss
  28. 0
    5
      src/_assets/css/page.scss
  29. 0
    12
      src/_assets/favicon/browserconfig.xml
  30. 0
    57
      src/_assets/favicon/manifest.json
  31. BIN
      src/_assets/images/favicon/apple-touch-icon-114x114-precomposed.png
  32. BIN
      src/_assets/images/favicon/apple-touch-icon-114x114.png
  33. BIN
      src/_assets/images/favicon/apple-touch-icon-120x120-precomposed.png
  34. BIN
      src/_assets/images/favicon/apple-touch-icon-120x120.png
  35. BIN
      src/_assets/images/favicon/apple-touch-icon-144x144-precomposed.png
  36. BIN
      src/_assets/images/favicon/apple-touch-icon-144x144.png
  37. BIN
      src/_assets/images/favicon/apple-touch-icon-152x152-precomposed.png
  38. BIN
      src/_assets/images/favicon/apple-touch-icon-152x152.png
  39. BIN
      src/_assets/images/favicon/apple-touch-icon-180x180-precomposed.png
  40. BIN
      src/_assets/images/favicon/apple-touch-icon-180x180.png
  41. BIN
      src/_assets/images/favicon/apple-touch-icon-57x57-precomposed.png
  42. BIN
      src/_assets/images/favicon/apple-touch-icon-57x57.png
  43. BIN
      src/_assets/images/favicon/apple-touch-icon-60x60-precomposed.png
  44. BIN
      src/_assets/images/favicon/apple-touch-icon-60x60.png
  45. BIN
      src/_assets/images/favicon/apple-touch-icon-72x72-precomposed.png
  46. BIN
      src/_assets/images/favicon/apple-touch-icon-72x72.png
  47. BIN
      src/_assets/images/favicon/apple-touch-icon-76x76-precomposed.png
  48. BIN
      src/_assets/images/favicon/apple-touch-icon-76x76.png
  49. BIN
      src/_assets/images/rpi-rotate.gif
  50. BIN
      src/_assets/images/space.jpeg
  51. 9
    1
      src/_assets/js/page.js.liquid
  52. 2
    3
      src/_drafts/2017-05-15-dokku-app-manifest.markdown
  53. 9
    15
      src/_faq/about-website.markdown
  54. 1
    1
      src/_faq/editor.markdown
  55. 4
    4
      src/_includes/event.html
  56. 19
    16
      src/_includes/footer.html
  57. 15
    23
      src/_includes/head.html
  58. 5
    4
      src/_includes/header.html
  59. 1
    1
      src/_includes/listing/project.html
  60. 5
    5
      src/_includes/masthead_post_header.html
  61. 1
    1
      src/_includes/notices.html
  62. 7
    2
      src/_includes/post_footer.html
  63. 8
    8
      src/_includes/post_header.html
  64. 2
    2
      src/_includes/post_lead.html
  65. 3
    3
      src/_includes/post_navigation.html
  66. 8
    8
      src/_includes/post_related.html
  67. 8
    0
      src/_includes/search.html
  68. 1
    3
      src/_layouts/bare.html
  69. 3
    3
      src/_layouts/event.html
  70. 4
    2
      src/_layouts/faq.html
  71. 9
    6
      src/_layouts/page.html
  72. 1
    1
      src/_layouts/portfolio.html
  73. 1
    1
      src/_layouts/project.html
  74. 1
    1
      src/_layouts/tags.html
  75. 1
    1
      src/_pages/404.html
  76. 7
    3
      src/_pages/faq.html
  77. 3
    3
      src/_pages/gear.html
  78. 4
    26
      src/_pages/home.html
  79. 6
    3
      src/_pages/portfolio.html
  80. 45
    12
      src/_pages/weblog.html
  81. 0
    42
      src/_pages/work-resume.html
  82. 0
    60
      src/_pages/work.html
  83. 30
    31
      src/_pages/work/contract.html
  84. 0
    0
      src/_pages/work/freelance.html
  85. 47
    50
      src/_pages/work/home.html
  86. 5
    8
      src/_posts/2014-02-15-kde-and-networking.markdown
  87. 2
    2
      src/_posts/2014-04-19-starting-with-a-flash.markdown
  88. 5
    6
      src/_posts/2014-09-10-dotfiles.markdown
  89. 4
    4
      src/_posts/2014-12-01-ending-2014-welcome-2015.markdown
  90. 1
    1
      src/_posts/2015-01-05-2015.markdown
  91. 1
    1
      src/_posts/2015-02-06-going-sovereign.markdown
  92. 10
    10
      src/_posts/2015-03-16-using-owncloud-a-month-in-review.markdown
  93. 1
    1
      src/_posts/2015-05-10-thoughts-zocp-wintermute-iot.markdown
  94. 2
    2
      src/_posts/2015-07-16-blur-between-sense-of-tech-and-people.markdown
  95. 1
    1
      src/_posts/2015-08-05-moving-to-neovim.markdown
  96. 2
    2
      src/_posts/2015-09-12-things-i-read-2015-09-12.markdown
  97. 2
    2
      src/_posts/2015-09-19-things-i-read-2015-09-19.markdown
  98. 4
    4
      src/_posts/2015-09-26-im-still-tweeting.markdown
  99. 1
    1
      src/_posts/2015-11-01-new-job-who-this.markdown
  100. 0
    0
      src/_posts/2016-11-02-back-on-the-market.markdown

+ 4
- 1
.buildpacks View File

@@ -1 +1,4 @@
1
-https://github.com/mattmanning/heroku-buildpack-ruby-jekyll
1
+https://github.com/heroku/heroku-buildpack-ruby
2
+https://github.com/heroku/heroku-buildpack-nodejs
3
+https://git.jacky.wtf/me/dokku-buildpack-jekyll
4
+https://github.com/dokku/buildpack-nginx

+ 2
- 3
.gitignore View File

@@ -34,7 +34,6 @@ bin/
34 34
 _deploy/
35 35
 
36 36
 node_modules/
37
-src/.asset-cache
38
-src/_assets/bower/
39 37
 src/.jekyll-metadata
40
-src/_javascript
38
+.bundle
39
+src/assets/JekyllWebmentionIO.js

+ 6
- 0
.gitmodules View File

@@ -0,0 +1,6 @@
1
+[submodule "src/vendor/tachyons-sass"]
2
+	path = src/vendor/tachyons-sass
3
+	url = https://github.com/tachyons-css/tachyons-sass
4
+[submodule "src/vendor/webfontloader"]
5
+	path = src/vendor/webfontloader
6
+	url = https://github.com/typekit/webfontloader

+ 1
- 0
.jekyll_buildpack.config View File

@@ -0,0 +1 @@
1
+jekyll_build_command="bundle exec rake"

+ 1
- 0
.node-version View File

@@ -0,0 +1 @@
1
+9.8.0

.cache/webmention/.gitkeep → .static View File


+ 0
- 0
CHECKS View File


+ 1
- 0
DOKKU_SCALE View File

@@ -0,0 +1 @@
1
+1

+ 11
- 7
Gemfile View File

@@ -1,9 +1,12 @@
1 1
 # vim:set fdl=1 nospell:
2 2
 # frozen_string_literal: true
3 3
 
4
+ruby '2.4.1'
5
+
4 6
 source 'https://rubygems.org'
5 7
 
6 8
 # {{{ Core Utilities
9
+gem 'bundler', '1.16.0'
7 10
 gem 'dotenv'
8 11
 gem 'rake'
9 12
 # }}}
@@ -13,20 +16,23 @@ group :jekyll do
13 16
   gem 'autoprefixer-rails'
14 17
   gem 'classifier-reborn'
15 18
   gem 'execjs'
16
-  gem 'jekyll', '3.5.2'
19
+  # gem 'image_optim'
20
+  gem 'jekyll'
17 21
   gem 'kramdown'
18 22
   gem 'mini_magick'
19 23
   gem 'rack-jekyll'
20 24
   gem 'rouge'
21
-  gem 'sprockets', '~> 3.7'
25
+  gem 'sprockets', '~> 4.0.beta'
26
+  gem 'uglifier'
22 27
   gem 'xmlrpc'
23 28
 end
24 29
 
25 30
 group :jekyll_plugins do
26 31
   gem 'jekyll-analytics'
27
-  gem 'jekyll-assets', '~> 2.4.0'
32
+  gem 'jekyll-assets'
28 33
   gem 'jekyll-feed'
29 34
   gem 'jekyll-gist'
35
+  gem 'jekyll-paginate-v2'
30 36
   gem 'jekyll-redirect-from'
31 37
   gem 'jekyll-sitemap'
32 38
   gem 'jekyll-tagging'
@@ -36,8 +42,6 @@ group :jekyll_plugins do
36 42
   gem 'jekyll-twitter-plugin'
37 43
   gem 'jekyll-typogrify'
38 44
   gem 'jekyll-webmention_io'
39
-  gem 'jekyll-category-pages'
40
-  gem 'jekyll-paginate'
41 45
   gem 'jemoji'
42 46
   gem 'ruby-oembed'
43 47
 end
@@ -48,11 +52,11 @@ group :web do
48 52
   gem 'haml'
49 53
   gem 'puma'
50 54
   gem 'rack'
51
-  gem 'rack-livereload', require: 'rack/livereload'
55
+  gem 'rack-livereload', require: 'rack/livereload', group: :development
52 56
 end
53 57
 
54 58
 # Automation
55
-group :guard do
59
+group :development do
56 60
   gem 'guard'
57 61
   gem 'guard-bundler', require: false
58 62
   gem 'guard-livereload', require: false

+ 78
- 67
Gemfile.lock View File

@@ -1,24 +1,24 @@
1 1
 GEM
2 2
   remote: https://rubygems.org/
3 3
   specs:
4
-    activesupport (4.2.10)
5
-      i18n (~> 0.7)
4
+    activesupport (5.2.0)
5
+      concurrent-ruby (~> 1.0, >= 1.0.2)
6
+      i18n (>= 0.7, < 2)
6 7
       minitest (~> 5.1)
7
-      thread_safe (~> 0.3, >= 0.3.4)
8 8
       tzinfo (~> 1.1)
9 9
     addressable (2.5.2)
10 10
       public_suffix (>= 2.0.2, < 4.0)
11
-    autoprefixer-rails (7.2.2)
11
+    autoprefixer-rails (8.3.0)
12 12
       execjs
13
-    classifier-reborn (2.1.0)
13
+    classifier-reborn (2.2.0)
14 14
       fast-stemmer (~> 1.0)
15 15
     coderay (1.1.2)
16 16
     colorator (1.1.0)
17 17
     concurrent-ruby (1.0.5)
18 18
     diff-lcs (1.3)
19
-    domain_name (0.5.20170404)
19
+    domain_name (0.5.20180417)
20 20
       unf (>= 0.0.5, < 1.0.0)
21
-    dotenv (2.2.1)
21
+    dotenv (2.4.0)
22 22
     em-websocket (0.5.1)
23 23
       eventmachine (>= 0.12.9)
24 24
       http_parser.rb (~> 0.6.0)
@@ -26,18 +26,18 @@ GEM
26 26
     execjs (2.7.0)
27 27
     extras (0.3.0)
28 28
       forwardable-extended (~> 2.5)
29
-    faraday (0.13.1)
29
+    faraday (0.15.0)
30 30
       multipart-post (>= 1.2, < 3)
31 31
     fast-stemmer (1.0.2)
32
-    fastimage (2.1.0)
33
-    ffi (1.9.18)
32
+    fastimage (2.1.1)
33
+    ffi (1.9.23)
34 34
     formatador (0.2.5)
35 35
     forwardable-extended (2.6.0)
36
-    gemoji (3.0.0)
37
-    guard (2.14.1)
36
+    gemoji (2.1.0)
37
+    guard (2.14.2)
38 38
       formatador (>= 0.2.4)
39 39
       listen (>= 2.7, < 4.0)
40
-      lumberjack (~> 1.0)
40
+      lumberjack (>= 1.0.12, < 2.0)
41 41
       nenv (~> 0.1)
42 42
       notiffany (~> 0.0)
43 43
       pry (>= 0.9.12)
@@ -81,43 +81,48 @@ GEM
81 81
       domain_name (~> 0.5)
82 82
     http-form_data (1.0.3)
83 83
     http_parser.rb (0.6.0)
84
-    httparty (0.15.6)
84
+    httparty (0.15.7)
85 85
       multi_xml (>= 0.5.2)
86
-    i18n (0.9.1)
86
+    i18n (0.9.5)
87 87
       concurrent-ruby (~> 1.0)
88
-    jekyll (3.5.2)
88
+    jekyll (3.8.0)
89 89
       addressable (~> 2.4)
90 90
       colorator (~> 1.0)
91
+      em-websocket (~> 0.5)
92
+      i18n (~> 0.7)
91 93
       jekyll-sass-converter (~> 1.0)
92
-      jekyll-watch (~> 1.1)
93
-      kramdown (~> 1.3)
94
+      jekyll-watch (~> 2.0)
95
+      kramdown (~> 1.14)
94 96
       liquid (~> 4.0)
95 97
       mercenary (~> 0.3.3)
96 98
       pathutil (~> 0.9)
97
-      rouge (~> 1.7)
99
+      rouge (>= 1.7, < 4)
98 100
       safe_yaml (~> 1.0)
99
-    jekyll-analytics (0.1.5)
100
-    jekyll-assets (2.4.0)
101
-      concurrent-ruby (~> 1.0)
101
+    jekyll-analytics (0.1.9)
102
+    jekyll-assets (3.0.11)
103
+      activesupport (~> 5.0)
104
+      execjs (~> 2.7)
102 105
       extras (~> 0.2)
103 106
       fastimage (~> 2.0, >= 1.8)
104
-      jekyll (~> 3.1, >= 3.0)
105
-      pathutil (>= 0.8)
106
-      rack (~> 1.6)
107
-      sprockets (~> 3.3, < 3.8)
108
-    jekyll-category-pages (1.0.0)
109
-      jekyll (~> 3.5)
110
-      jekyll-paginate (~> 1.1, >= 1.0.0)
111
-    jekyll-feed (0.9.2)
107
+      jekyll (>= 3.5, < 4.0)
108
+      jekyll-sanity (~> 1.2)
109
+      liquid-tag-parser (~> 1.0)
110
+      nokogiri (~> 1.8)
111
+      pathutil (~> 0.16)
112
+      sprockets (>= 3.3, < 4.1.beta)
113
+    jekyll-feed (0.9.3)
112 114
       jekyll (~> 3.3)
113 115
     jekyll-gist (1.5.0)
114 116
       octokit (~> 4.2)
115
-    jekyll-paginate (1.1.0)
117
+    jekyll-paginate-v2 (1.9.4)
118
+      jekyll (~> 3.0)
116 119
     jekyll-redirect-from (0.13.0)
117 120
       jekyll (~> 3.3)
118
-    jekyll-sass-converter (1.5.1)
121
+    jekyll-sanity (1.2.0)
122
+      jekyll (~> 3.1)
123
+    jekyll-sass-converter (1.5.2)
119 124
       sass (~> 3.4)
120
-    jekyll-sitemap (1.1.1)
125
+    jekyll-sitemap (1.2.0)
121 126
       jekyll (~> 3.3)
122 127
     jekyll-tagging (1.1.0)
123 128
       nuggets
@@ -128,15 +133,15 @@ GEM
128 133
       htmlbeautifier
129 134
       htmlcompressor
130 135
       jekyll
131
-    jekyll-toc (0.5.1)
136
+    jekyll-toc (0.5.2)
132 137
       nokogiri (~> 1.6)
133 138
     jekyll-twitter-plugin (2.0.0)
134
-    jekyll-typogrify (0.3.2)
139
+    jekyll-typogrify (0.3.3)
135 140
       titlecase
136 141
       typogruby
137
-    jekyll-watch (1.5.1)
142
+    jekyll-watch (2.0.0)
138 143
       listen (~> 3.0)
139
-    jekyll-webmention_io (2.8.5)
144
+    jekyll-webmention_io (2.9.1)
140 145
       htmlbeautifier (~> 1.1)
141 146
       http (~> 2.0)
142 147
       jekyll (>= 2.0, < 4.0)
@@ -145,64 +150,66 @@ GEM
145 150
       string_inflection (~> 0.1)
146 151
       uglifier (~> 3.2)
147 152
       webmention (~> 0.1.6)
148
-    jemoji (0.9.0)
149
-      activesupport (~> 4.0, >= 4.2.9)
150
-      gemoji (~> 3.0)
153
+    jemoji (0.6.2)
154
+      gemoji (~> 2.0)
151 155
       html-pipeline (~> 2.2)
152
-      jekyll (~> 3.0)
156
+      jekyll (>= 3.0)
153 157
     json (2.1.0)
154 158
     kramdown (1.16.2)
155
-    libnotify (0.9.3)
159
+    libnotify (0.9.4)
156 160
       ffi (>= 1.0.11)
157 161
     link_header (0.0.8)
158 162
     liquid (4.0.0)
163
+    liquid-tag-parser (1.9.0)
164
+      extras (~> 0.3)
165
+      liquid (>= 3.0, < 5.0)
159 166
     listen (3.1.5)
160 167
       rb-fsevent (~> 0.9, >= 0.9.4)
161 168
       rb-inotify (~> 0.9, >= 0.9.7)
162 169
       ruby_dep (~> 1.2)
163
-    lumberjack (1.0.12)
170
+    lumberjack (1.0.13)
164 171
     mercenary (0.3.6)
165 172
     method_source (0.9.0)
166 173
     mini_magick (4.8.0)
167 174
     mini_portile2 (2.3.0)
168
-    minitest (5.10.3)
169
-    multi_json (1.12.2)
175
+    minitest (5.11.3)
176
+    multi_json (1.13.1)
170 177
     multi_xml (0.6.0)
171 178
     multipart-post (2.0.0)
172 179
     nenv (0.3.0)
173
-    nokogiri (1.8.1)
180
+    nokogiri (1.8.2)
174 181
       mini_portile2 (~> 2.3.0)
175 182
     notiffany (0.1.1)
176 183
       nenv (~> 0.1)
177 184
       shellany (~> 0.0)
178 185
     nuggets (1.5.0)
179
-    octokit (4.7.0)
186
+    octokit (4.8.0)
180 187
       sawyer (~> 0.8.0, >= 0.5.3)
181
-    openssl (2.0.6)
188
+    openssl (2.1.0)
182 189
     pathutil (0.16.1)
183 190
       forwardable-extended (~> 2.6)
184 191
     pry (0.11.3)
185 192
       coderay (~> 1.1.0)
186 193
       method_source (~> 0.9.0)
187
-    public_suffix (3.0.1)
188
-    puma (3.11.0)
189
-    rack (1.6.8)
194
+    public_suffix (3.0.2)
195
+    puma (3.11.4)
196
+    rack (1.6.10)
190 197
     rack-jekyll (0.5.0)
191 198
       jekyll (>= 1.3)
192 199
       listen (>= 1.3)
193 200
       rack (~> 1.5)
194
-    rack-livereload (0.3.16)
201
+    rack-livereload (0.3.17)
195 202
       rack
196
-    rake (12.3.0)
197
-    rb-fsevent (0.10.2)
203
+    rake (12.3.1)
204
+    rb-fsevent (0.10.3)
198 205
     rb-inotify (0.9.10)
199 206
       ffi (>= 0.5.0, < 2)
200
-    rouge (1.11.1)
207
+    rouge (3.1.1)
201 208
     rspec (3.7.0)
202 209
       rspec-core (~> 3.7.0)
203 210
       rspec-expectations (~> 3.7.0)
204 211
       rspec-mocks (~> 3.7.0)
205
-    rspec-core (3.7.0)
212
+    rspec-core (3.7.1)
206 213
       rspec-support (~> 3.7.0)
207 214
     rspec-expectations (3.7.0)
208 215
       diff-lcs (>= 1.2.0, < 2.0)
@@ -210,12 +217,12 @@ GEM
210 217
     rspec-mocks (3.7.0)
211 218
       diff-lcs (>= 1.2.0, < 2.0)
212 219
       rspec-support (~> 3.7.0)
213
-    rspec-support (3.7.0)
220
+    rspec-support (3.7.1)
214 221
     ruby-oembed (0.12.0)
215 222
     ruby_dep (1.5.0)
216
-    rubypants (0.6.0)
223
+    rubypants (0.7.0)
217 224
     safe_yaml (1.0.4)
218
-    sass (3.5.4)
225
+    sass (3.5.6)
219 226
       sass-listen (~> 4.0.0)
220 227
     sass-listen (4.0.0)
221 228
       rb-fsevent (~> 0.9, >= 0.9.4)
@@ -226,7 +233,7 @@ GEM
226 233
     shellany (0.0.1)
227 234
     spoon (0.0.6)
228 235
       ffi
229
-    sprockets (3.7.1)
236
+    sprockets (4.0.0.beta7)
230 237
       concurrent-ruby (~> 1.0)
231 238
       rack (> 1, < 3)
232 239
     string_inflection (0.1.2)
@@ -237,13 +244,13 @@ GEM
237 244
     titlecase (0.1.1)
238 245
     typogruby (1.0.18)
239 246
       rubypants
240
-    tzinfo (1.2.4)
247
+    tzinfo (1.2.5)
241 248
       thread_safe (~> 0.1)
242 249
     uglifier (3.2.0)
243 250
       execjs (>= 0.3.0, < 3)
244 251
     unf (0.1.4)
245 252
       unf_ext
246
-    unf_ext (0.0.7.4)
253
+    unf_ext (0.0.7.5)
247 254
     webmention (0.1.6)
248 255
       httparty (~> 0.15.5)
249 256
       json
@@ -257,6 +264,7 @@ PLATFORMS
257 264
 DEPENDENCIES
258 265
   activesupport
259 266
   autoprefixer-rails
267
+  bundler (= 1.16.0)
260 268
   classifier-reborn
261 269
   dotenv
262 270
   execjs
@@ -267,13 +275,12 @@ DEPENDENCIES
267 275
   guard-rake
268 276
   guard-rspec
269 277
   haml
270
-  jekyll (= 3.5.2)
278
+  jekyll
271 279
   jekyll-analytics
272
-  jekyll-assets (~> 2.4.0)
273
-  jekyll-category-pages
280
+  jekyll-assets
274 281
   jekyll-feed
275 282
   jekyll-gist
276
-  jekyll-paginate
283
+  jekyll-paginate-v2
277 284
   jekyll-redirect-from
278 285
   jekyll-sitemap
279 286
   jekyll-tagging
@@ -294,8 +301,12 @@ DEPENDENCIES
294 301
   rake
295 302
   rouge
296 303
   ruby-oembed
297
-  sprockets (~> 3.7)
304
+  sprockets (~> 4.0.beta)
305
+  uglifier
298 306
   xmlrpc
299 307
 
308
+RUBY VERSION
309
+   ruby 2.4.1p111
310
+
300 311
 BUNDLED WITH
301 312
    1.16.0

+ 2
- 3
Guardfile View File

@@ -11,9 +11,8 @@ guard :livereload do
11 11
 end
12 12
 
13 13
 # Load a Rack server to handle the local serving of the site.
14
-guard :rack,
15
-      port: 1993, server: :puma, force_run: true, daemon: true,
16
-      host: '0.0.0.0', cmd: 'bin/rackup' do
14
+guard :rack, port: 1993, server: :puma, force_run: true, daemon: true,
15
+    host: '0.0.0.0', cmd: 'rackup' do
17 16
   watch 'Gemfile.lock'
18 17
   watch 'config.ru'
19 18
   watch(/^_config(.*)\.yml/)

+ 0
- 0
Procfile View File


+ 22
- 40
Rakefile View File

@@ -4,20 +4,13 @@ require 'rake'
4 4
 require 'fileutils'
5 5
 require 'dotenv'
6 6
 
7
-task default: %w[clean build:dev]
8
-
9
-task :clean do
10
-  FileUtils.rmdir('_deploy', verbose: true)
11
-  FileUtils.rmdir('_site', verbose: true)
12
-end
13
-
14 7
 def run_jekyll(args = [])
15
-  command = 'bin/jekyll' + ' ' + args.join(' ')
8
+  command = 'bundle exec jekyll' + ' ' + args.join(' ')
16 9
   puts system(command)
17 10
 end
18 11
 
19 12
 def run_jekyll_in_dev(args = [])
20
-  run_jekyll(args + ['--config', '_config.yml,_config.dev.yml'])
13
+  run_jekyll(args + ['--config', '_config.yml,_config.dev.yml', '--trace'])
21 14
 end
22 15
 
23 16
 def run_jekyll_in_prod(args = [])
@@ -25,12 +18,12 @@ def run_jekyll_in_prod(args = [])
25 18
 end
26 19
 
27 20
 task :serve do
28
-  system 'bin/jekyll serve'
21
+  system 'bundle exec jekyll serve'
29 22
 end
30 23
 
31 24
 namespace :build do
32 25
   task :watch do
33
-    run_jekyll_in_dev(['build', '--incremental', '--watch'])
26
+    run_jekyll_in_dev(['build', '--incremental', '--watch', '--verbose'])
34 27
   end
35 28
 
36 29
   task :prod do
@@ -38,24 +31,23 @@ namespace :build do
38 31
   end
39 32
 
40 33
   task :dev do
41
-    run_jekyll_in_dev(['build', '--verbose', '--trace'])
34
+    run_jekyll_in_dev(['build', '--verbose'])
42 35
   end
43
-end
44 36
 
45
-task :dev do
46
-  Dotenv.overload('.envrc.local')
47
-end
48
-
49
-task :prod do
50
-  Dotenv.overload('.envrc')
37
+  task :deploy do
38
+    puts "----> Building for #{ENV['ENV']}"
39
+    puts Rake::Task['build:prod'].invoke if ENV['ENV'] == 'production'
40
+    puts Rake::Task['build:dev'].invoke unless ENV['ENV'] == 'production'
41
+  end
51 42
 end
52 43
 
53 44
 task :notify do
54
-  ['notify:pingomatic', 'notify:google', 'notify:bing', 'notify:webmention'].each do |task|
55
-    puts Rake::Task[task].invoke
56
-  end
45
+  ['notify:pingomatic', 'notify:google', 'notify:webmention'].each do |task|
46
+    Rake::Task[task].invoke
47
+  end if ENV["ENV"] == 'production'
57 48
 end
58 49
 
50
+# TODO: Move into a separate Rake file.
59 51
 desc 'Notify various services that the site has been updated'
60 52
 namespace :notify do
61 53
   desc 'Notify Ping-O-Matic'
@@ -63,7 +55,9 @@ namespace :notify do
63 55
     begin
64 56
       require 'xmlrpc/client'
65 57
       puts '* Notifying Ping-O-Matic that the site has updated'
66
-      XMLRPC::Client.new('rpc.pingomatic.com', '/').call('weblogUpdates.extendedPing', 'jacky.wtf' , '//jacky.wtf', '//jacky.wtf/atom.xml')
58
+      client = XMLRPC::Client.new('rpc.pingomatic.com', '/')
59
+      client.call('weblogUpdates.extendedPing', 'jacky.wtf',
60
+                  '//jacky.wtf', '//jacky.wtf/atom.xml')
67 61
     rescue LoadError
68 62
       puts '! Could not ping ping-o-matic, because XMLRPC::Client could not be found.'
69 63
     end
@@ -73,32 +67,20 @@ namespace :notify do
73 67
   task :google do
74 68
     begin
75 69
       require 'net/http'
76
-      require 'uri'
70
+      require 'cgi'
77 71
       puts '* Notifying Google that the site has updated'
78
-      Net::HTTP.get('www.google.com', '/webmasters/tools/ping?sitemap=' + URI.escape('//jacky.wtf/sitemap.xml'))
72
+      uri = CGI.escape('//jacky.wtf/sitemap.xml')
73
+      Net::HTTP.get('www.google.com', '/webmasters/tools/ping?sitemap=' + uri)
79 74
     rescue LoadError
80 75
       puts '! Could not ping Google about our sitemap, because Net::HTTP or URI could not be found.'
81 76
     end
82 77
   end
83 78
 
84
-  desc 'Notify Bing of updated sitemap'
85
-  task :bing do
86
-    begin
87
-      require 'net/http'
88
-      require 'cgi'
89
-      puts '* Notifying Bing that the site has updated'
90
-      Net::HTTP.get('www.bing.com', '/webmaster/ping.aspx?siteMap=' + CGI.escape('//jacky.wtf/sitemap.xml'))
91
-    rescue LoadError
92
-      puts '! Could not ping Bing about our sitemap, because Net::HTTP or URI could not be found.'
93
-    end
94
-  end
95
-
96 79
   desc 'Notify the IndieWeb'
97 80
   task :webmention do
98 81
     puts '* Notifying webmention.io'
99
-    puts `bin/jekyll webmention`
82
+    puts `bundle exec jekyll webmention`
100 83
   end
101 84
 end
102 85
 
103
-task deploy: %i[clean prod build:deploy upload:setup upload:deploy notify]
104
-task 'deploy:dev': %i[clean dev build:deploy upload:setup upload:deploy]
86
+task default: %w[build:deploy notify]

+ 22
- 11
_config.dev.yml View File

@@ -5,19 +5,30 @@ url: 'http://localhost:1993'
5 5
 incremental: true
6 6
 
7 7
 assets:
8
-  debug: true
9
-  autowrite: true
10
-  strict: false
11
-  digest: false
12
-  integrity: false
13
-  plugins:
14
-    compression:
15
-      css:
16
-        enabled: false
17
-      js:
18
-        enabled: false
8
+  compression: false
9
+  gzip: false
10
+  caching:
11
+    enabled: true
12
+  defaults:
13
+    js:
14
+      integrity: false
15
+      prefetch: false
16
+    css:
17
+      integrity: false
18
+      prefetch: false
19
+    img:
20
+      integrity: false
21
+      prefetch: false
19 22
 
20 23
 webmentions:
24
+  debug: true
21 25
   pause_lookups: true
22 26
 
23 27
 isso_host: comments.jacky.vagrant.test
28
+
29
+pagination:
30
+  debug: true
31
+
32
+analytics:
33
+  host: analytics.jacky.vagrant.test
34
+  site_id: 1

+ 56
- 85
_config.yml View File

@@ -3,15 +3,7 @@ destination: _site/
3 3
 source: src/
4 4
 layouts_dir: src/_layouts/
5 5
 plugins_dir: plugins/
6
-filter_entries: []
7
-strict_front_matter: false
8
-include:
9
-  - _pages
10
-  - _faq
11
-  - _events
12
-  - _projects
13
-  - _portfolio
14
-  - _reviews
6
+strict_front_matter: true
15 7
 
16 8
 # Metadata about the site that we'd use very very often.
17 9
 # {{{ Metadata
@@ -40,6 +32,14 @@ lsi: true
40 32
 future: false
41 33
 relative_permalinks: false
42 34
 markdown: kramdown
35
+pagination:
36
+  enabled: true
37
+  debug: false
38
+  per_page: 5
39
+  permalink: '/page/:num/'
40
+  limit: 5
41
+  sort_reverse: true
42
+  sort_field: 'date'
43 43
 
44 44
 tag_page_layout: tags
45 45
 tag_feed_layout: tag_feed
@@ -47,50 +47,31 @@ tag_page_dir: weblog/tag/
47 47
 tag_feed_dir: feeds/tags/
48 48
 
49 49
 exclude:
50
-  - ./node_modules
51
-  - ./yarn.lock
52
-  - ./_*
50
+  - _assets
51
+  - .*
53 52
 
54 53
 kramdown:
55 54
   syntax_highlighter: rouge
56 55
   auto_ids: true
57 56
 
58 57
 defaults:
59
-  -
60
-    scope:
61
-      path: ""
62
-    values:
63
-      layout: base
64
-  -
65
-    scope:
66
-      path: ""
67
-      type: posts
68
-    values:
69
-      layout: post
70
-      image: none
71
-  -
72
-    scope:
73
-      path: "_portfolio"
74
-      type: portfolios
75
-    values:
76
-      layout: portfolio
77
-  -
78
-    scope:
79
-      path: "_projects"
80
-    values:
81
-      layout: project
82 58
   -
83 59
     scope:
84 60
       path: "_pages"
61
+      type: "pages"
85 62
     values:
86
-      layout: page
63
+      layout: "page"
87 64
   -
88 65
     scope:
89 66
       path: "_faq"
67
+      type: "faq"
90 68
     values:
91
-      layout: faq
69
+      layout: "faq"
92 70
 
93 71
 collections:
72
+  pages:
73
+    output: true
74
+    layout: page
94 75
   faq:
95 76
     output: true
96 77
     layout: faq
@@ -103,70 +84,58 @@ collections:
103 84
   portfolio:
104 85
     output: true
105 86
     layout: portfolio
106
-  reviews_books:
107
-    output: true
108
-    layout: reviews
109
-    permalink: /reviews/books/:name
110
-  reviews_movies:
111
-    output: true
112
-    layout: reviews
113
-    permalink: /reviews/movies/:name
114
-  reviews_television_show:
115
-    output: true
116
-    layout: reviews
117
-    permalink: /reviews/television-shows/:name
118 87
 
119 88
 assets:
120
-  autoprefixer:
121
-    browsers:
122
-      - "ff > 40"
123
-      - "IE > 8"
124
-      - "last 4 versions"
125
-      - "> 50%"
126
-  debug: false
127
-  autowrite: true
128
-  digest: true
129
-  strict: true
130
-  integrity: true
131
-  plugins:
132
-    compression:
133
-      css:
134
-        enabled: true
135
-      js:
136
-        enabled: true
137
-  prefix: /assets
138
-  asset:
139
-    - '*.png'
140
-    - '*.jpg'
141
-    - '*.jpeg'
142
-    - '*.gif'
143
-    - '*.otf'
89
+  destination: '/assets'
90
+  compression: true
91
+  gzip: true
92
+  cdn:
93
+    baseurl: true
94
+  defaults:
95
+    js:
96
+      integrity: true
97
+      prefetch: true
98
+    css:
99
+      integrity: true
100
+      prefetch: true
101
+    img:
102
+      integrity: true
103
+      prefetch: true
104
+  caching:
105
+    path: '.cache/assets'
106
+    type: file
107
+    enabled: true
108
+  raw_precompile:
109
+    - page.js
110
+    - page.css
144 111
   sources:
145
-    - _assets/css
146
-    - _assets/images
112
+    - ../node_modules
113
+    - _assets/files
147 114
     - _assets/favicon
148
-    - _assets/fonts
149
-    - _assets/js
150
-    - node_modules
115
+  plugins:
116
+    css:
117
+      autoprefixer:
118
+        browsers:
119
+          - "last 2 versions"
120
+          - "IE > 9"
151 121
 
152 122
 jekyll-mentions: https://twitter.com
153 123
 
154 124
 gpg:
155 125
   fingerprint: 0x4DEFFC9FF82E8908
156 126
 
157
-jekyll_analytics:
158
-  Matomo:
159
-    url: analytics.jacky.wtf
160
-    siteId: "1"
127
+analytics:
128
+  host: analytics.jacky.wtf
129
+  site_id: 1
161 130
 
162 131
 webmentions:
132
+  debug: false
163 133
   pages: true
164
-  debug: true
165 134
   collections: true
166 135
   pause_lookups: false
167 136
   username: jacky.wtf
168 137
   cache_folder: .cache/webmention
169
-  cache_bad_uris_for: 5
138
+  cache_bad_uris_for: 1
170 139
   legacy_domains:
171 140
     - "http://jacky.wtf"
172 141
     - "http://jalcine.me"
@@ -180,9 +149,9 @@ webmentions:
180 149
     last_year: every 2 weeks
181 150
     older: monthly
182 151
   js:
183
-    destination: _javascript
184 152
     uglify: true
185 153
     deploy: true
154
+    destination: assets
186 155
 
187 156
 autolink_email:
188 157
   link_attr: class="email-link" # attributes to add to the link
@@ -203,3 +172,5 @@ liquid:
203 172
   error_mode: strict
204 173
 
205 174
 isso_host: comments.jacky.wtf
175
+
176
+category_path: weblog/categories/

+ 56
- 0
app-nginx.conf.sigil View File

@@ -0,0 +1,56 @@
1
+worker_processes 1;
2
+error_log stderr;
3
+pid nginx.pid;
4
+daemon off;
5
+
6
+events {
7
+  worker_connections 768;
8
+}
9
+
10
+http {
11
+  types_hash_max_size 2048;
12
+  include mime.types;
13
+  server {
14
+    listen {{ $.PORT }};
15
+    server_name  _;
16
+    {{ if ne $.NGINX_ROOT "" }}
17
+    root /app/www/{{ $.NGINX_ROOT }};
18
+    {{ else }}
19
+    root /app/www;
20
+    {{ end }}
21
+    index index.html;
22
+    port_in_redirect off;
23
+    error_page 404 /errors/404/index.html;
24
+
25
+    gzip off;
26
+    gzip_disable "msie6";
27
+    gzip_vary on;
28
+    gzip_proxied any;
29
+    gzip_comp_level 6;
30
+    gzip_buffers 16 8k;
31
+    gzip_http_version 1.1;
32
+    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
33
+
34
+    location / {
35
+      try_files $uri $uri/ /index.html;
36
+    }
37
+
38
+    location ~* \.(?:css|js|woff|svg|gif)$ {
39
+      try_files $uri /index.php$uri$is_args$args;
40
+      add_header Cache-Control "public, max-age=7200";
41
+      add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
42
+      add_header X-Content-Type-Options nosniff;
43
+      add_header X-Frame-Options "SAMEORIGIN";
44
+      add_header X-XSS-Protection "1; mode=block";
45
+      add_header X-Robots-Tag none;
46
+      add_header X-Download-Options noopen;
47
+      add_header X-Permitted-Cross-Domain-Policies none;
48
+      access_log off;
49
+    }
50
+
51
+    location ~* \.(?:png|html|ttf|ico|jpg|jpeg|otf)$ {
52
+      try_files $uri /index.php$uri$is_args$args;
53
+      access_log off;
54
+    }
55
+  }
56
+}

+ 10
- 5
config.ru View File

@@ -1,11 +1,16 @@
1
+# frozen_string_literal: true
2
+
1 3
 require 'rubygems'
2 4
 require 'bundler/setup'
3
-require 'rack/livereload'
4 5
 
5
-# Make it easy to see changes in near-real-time.
6
-use Rack::LiveReload,
7
-    no_swf: true,
8
-    use_swf: false
6
+if ENV['RACK_ENV'] == 'development'
7
+  require 'rack/livereload'
8
+
9
+  # Make it easy to see changes in near-real-time.
10
+  use Rack::LiveReload,
11
+      no_swf: true,
12
+      use_swf: false
13
+end
9 14
 
10 15
 # Serve all of the generated files from '_site' out to the local server.
11 16
 use Rack::Static,

+ 0
- 33
config/deploy.rb View File

@@ -1,33 +0,0 @@
1
-# frozen_string_literal: true
2
-
3
-require 'mina/scp'
4
-
5
-set :domain, ENV['JALCINE_DEPLOY_DOMAIN']
6
-set :deploy_to, ENV['JALCINE_DEPLOY_PATH']
7
-set :verbose, true
8
-set :keep_releases, 5
9
-
10
-set :shared_paths, ['images']
11
-
12
-set :user, ENV['JALCINE_DEPLOY_USER']
13
-set :group, ENV['JALCINE_DEPLOY_GROUP']
14
-
15
-set :ssh_options, '-A'
16
-
17
-task :upload do
18
-  ssh "mkdir -p #{deploy_to}/tmp-scp"
19
-  scp_upload("#{Dir.pwd}/_deploy/*", "#{deploy_to}/tmp-scp",
20
-             recursively: true,
21
-             verbose: true)
22
-  queue "cp -r #{deploy_to}/tmp-scp/* ."
23
-end
24
-
25
-desc 'Deploys the current version to the server.'
26
-task deploy: :environment do
27
-  deploy do
28
-    invoke :upload
29
-    to :launch do
30
-      queue "chown :#{group} -Rc #{deploy_to}"
31
-    end
32
-  end
33
-end

+ 3
- 0
lib/liquid/filters.rb View File

@@ -1,2 +1,5 @@
1 1
 require_relative 'filters/reading_time'
2 2
 require_relative 'filters/tag_links'
3
+require_relative 'filters/humanize'
4
+require_relative 'filters/toc_generator'
5
+require_relative 'filters/category_links'

+ 12
- 0
lib/liquid/filters/category_links.rb View File

@@ -0,0 +1,12 @@
1
+module CategoryLinksFilter
2
+  def linkify_categories(list)
3
+    if list.is_a? Array
4
+      list.map! { |v| "<a target='_blank' href='/weblog/categories/#{v}/' title='#{v}'>#{v}</a>" }
5
+      list.join ', '
6
+    else
7
+      "<a target='_blank' href='/weblog/categories/#{list}/' title='#{list}'>#{list}</a>" 
8
+    end
9
+  end
10
+end
11
+
12
+Liquid::Template.register_filter(CategoryLinksFilter)

+ 1
- 1
lib/liquid/tags.rb View File

@@ -17,7 +17,7 @@ module JackyWtf
17 17
 end
18 18
 
19 19
 # register all default OEmbed providers
20
-::OEmbed::Providers.register_all()
20
+::OEmbed::Providers.register_all
21 21
 # since register_all does not register all default providers, we need to do this here. See https://github.com/judofyr/ruby-oembed/issues/18
22 22
 ::OEmbed::Providers.register(::OEmbed::Providers::Instagram, ::OEmbed::Providers::Slideshare, ::OEmbed::Providers::Yfrog, ::OEmbed::Providers::MlgTv)
23 23
 ::OEmbed::Providers.register_fallback(::OEmbed::ProviderDiscovery, ::OEmbed::Providers::Embedly, ::OEmbed::Providers::OohEmbed)

src/package.json → package.json View File

@@ -1,8 +1,8 @@
1 1
 {
2 2
   "name": "jacky-wtf",
3
-  "version": "0.0.1",
4
-  "description": "Development packages for jacky.wtf",
5
-  "main": "index.js",
3
+  "version": "2018.4.23",
4
+  "description": "jacky.wtf",
5
+  "private": true,
6 6
   "repository": {
7 7
     "type": "git",
8 8
     "url": "git+https://github.com/jalcine/website.git"
@@ -13,9 +13,14 @@
13 13
     "url": "https://github.com/jalcine/website/issues"
14 14
   },
15 15
   "homepage": "https://github.com/jalcine/website#readme",
16
-  "devDependencies": {
16
+  "dependencies": {
17 17
     "tachyons-sass": "4.7.4",
18 18
     "webfontloader": "1.6.28",
19 19
     "picturefill": "3.0.2"
20
+  },
21
+  "engines": {
22
+    "npm": "*",
23
+    "yarn": "*",
24
+    "node": "9.8.0"
20 25
   }
21 26
 }

+ 0
- 1
src/.node-version View File

@@ -1 +0,0 @@
1
-7.10.1

+ 1
- 1
src/_assets/css/components/_color.scss View File

@@ -1,4 +1,4 @@
1
-@import "tachyons-sass/scss/_colors.scss";
1
+@import "tachyons-sass/scss/_skins.scss";
2 2
 
3 3
 $accent-color: $navy;
4 4
 $primary-color: $black;

+ 6
- 12
src/_assets/css/components/_post.scss View File

@@ -1,12 +1,11 @@
1 1
 header[role=group].post {
2
-  @extend .pa1, .mw7, .center;
2
+  @extend .pa1, .mw7;
3 3
 
4 4
   > h1 {
5 5
     @extend .tracked-tight;
6 6
     @extend .pa1;
7 7
     @extend .fw7, .f1;
8 8
     @extend .near-black;
9
-    @extend .tc;
10 9
   }
11 10
 
12 11
   > h3 {
@@ -14,7 +13,6 @@ header[role=group].post {
14 13
     @extend .f3;
15 14
     @extend .fw1;
16 15
     @extend .gray;
17
-    @extend .tc;
18 16
   }
19 17
   
20 18
   &.masthead {
@@ -31,7 +29,7 @@ header[role=group].post {
31 29
     }
32 30
     
33 31
     > address[role=group].post {
34
-      @extend .center, .w-100;
32
+      @extend .w-100;
35 33
     }
36 34
   }
37 35
 }
@@ -52,27 +50,24 @@ main[role=group].post {
52 50
   h1, h2, h3, h4, h5, h6
53 51
   {
54 52
     @extend .w-auto, .mw7;
55
-    @extend .center;
56 53
     @extend .lh-copy;
57
-    @extend .pa2, .mh2;
54
+    @extend .pa3, .mh2;
58 55
   }
59 56
   
60 57
   h1, h2, h3, h4, h5, h6
61 58
   {
62
-    @extend .ph1, .pv2;
59
+    @extend .pv2;
63 60
   }
64 61
 
65 62
   blockquote
66 63
   {
67 64
     @extend .f3;
68
-    // @extend .tc;
69 65
     @extend .mw-none-l;
70 66
     @extend .bg-dark-gray, .white;
71 67
 
72 68
     > p
73 69
     {
74 70
       font-size: inherit;
75
-      @extend .center;
76 71
       @extend .pa2;
77 72
 
78 73
       &:first-child { @extend .pt0; }
@@ -89,14 +84,13 @@ main[role=group].post {
89 84
   {
90 85
     @extend .w-auto;
91 86
     @extend .f4;
92
-    @extend .db, .pa2;
87
+    @extend .db;
93 88
     text-align: justify;
94 89
     text-align-last: left;
95 90
   }
96 91
 
97 92
   p {
98 93
     @extend .w-auto;
99
-    @extend .mh2;
100 94
   }
101 95
 
102 96
   div.footnotes {
@@ -104,7 +98,7 @@ main[role=group].post {
104 98
   }
105 99
 
106 100
   ul {
107
-    @extend ul.arrows;
101
+    @extend .arrows;
108 102
   }
109 103
 
110 104
   ol > li {

+ 2
- 4
src/_assets/css/components/_social.scss View File

@@ -1,11 +1,12 @@
1 1
 .jekyll-twitter-plugin {
2 2
   @extend .w-80;
3
-  @extend .tc;
3
+  @extend .pa4;
4 4
 }
5 5
 
6 6
 .twitter-tweet,
7 7
 div.embed > iframe {
8 8
   margin: 0rem auto!important;
9
+  text-align: left!important;
9 10
 }
10 11
 
11 12
 
@@ -17,16 +18,13 @@ div.embed.Twitter
17 18
   {
18 19
     font-size: inherit;
19 20
     @extend .mw-none;
20
-    @extend .center;
21 21
     @extend .bt, .bb;
22 22
     @extend .bg-washed-blue, .b--blue;
23 23
     @extend .navy;
24
-    @extend .tc;
25 24
   }
26 25
 
27 26
   p {
28 27
     @extend .tl;
29 28
     @extend .pa0, .mh0;
30
-    @extend .center;
31 29
   }
32 30
 }

+ 7
- 8
src/_assets/css/components/_typography.scss View File

@@ -1,8 +1,3 @@
1
-@font-face {
2
-  font-family: beyno;
3
-  src: asset_url("beyno.otf");
4
-};
5
-
6 1
 @mixin expected-sans-serif-fonts {
7 2
   @extend .sans-serif;
8 3
   
@@ -42,11 +37,11 @@
42 37
   }
43 38
 }
44 39
 
45
-h1, h2, h3, h4, h5, h6, blockquote {
40
+h1, h2, h3, h4, h5, h6 {
46 41
   @include expected-serif-fonts;
47 42
 }
48 43
 
49
-p, body, div, li {
44
+p, body, div, li, blockquote {
50 45
   @include expected-sans-serif-fonts;
51 46
   @extend .f5;
52 47
 }
@@ -94,7 +89,11 @@ a {
94 89
 }
95 90
 
96 91
 .fontFamily__special {
97
-  @include expected-display-fonts;
92
+  @at-root {
93
+    html.wf-active & {
94
+      @include expected-display-fonts;
95
+    }
96
+  }
98 97
 }
99 98
 
100 99
 blockquote {

+ 0
- 5
src/_assets/css/page.scss View File

@@ -1,10 +1,5 @@
1 1
 @import "tachyons-sass/tachyons";
2 2
 
3
-* {
4
-  -webkit-font-smoothing: antialiased;
5
-  -moz-osx-font-smoothing: grayscale;
6
-}
7
-
8 3
 @import "components/color";
9 4
 @import "components/typography";
10 5
 

+ 0
- 12
src/_assets/favicon/browserconfig.xml View File

@@ -1,12 +0,0 @@
1
-<?xml version="1.0" encoding="utf-8"?>
2
-<browserconfig>
3
-    <msapplication>
4
-        <tile>
5
-            <square70x70logo src="/assets/favicon/mstile-70x70.png"/>
6
-            <square150x150logo src="/assets/favicon/mstile-150x150.png"/>
7
-            <square310x310logo src="/assets/favicon/mstile-310x310.png"/>
8
-            <wide310x150logo src="/assets/favicon/mstile-310x150.png"/>
9
-            <TileColor>#603cba</TileColor>
10
-        </tile>
11
-    </msapplication>
12
-</browserconfig>

+ 0
- 57
src/_assets/favicon/manifest.json View File

@@ -1,57 +0,0 @@
1
----
2
-# vim: set ft=liquid.json #
3
-layout: empty
4
----
5
-{
6
-    "name": "Jacky Alcin\u00e9",
7
-    "icons": [
8
-        {
9
-            "src": "{{ site.uri }}/assets/favicon/android-chrome-36x36.png",
10
-            "sizes": "36x36",
11
-            "type": "image/png"
12
-        },
13
-        {
14
-            "src": "{{ site.uri }}/assets/favicon/android-chrome-48x48.png",
15
-            "sizes": "48x48",
16
-            "type": "image/png"
17
-        },
18
-        {
19
-            "src": "{{ site.uri }}/assets/favicon/android-chrome-72x72.png",
20
-            "sizes": "72x72",
21
-            "type": "image/png"
22
-        },
23
-        {
24
-            "src": "{{ site.uri }}/assets/favicon/android-chrome-96x96.png",
25
-            "sizes": "96x96",
26
-            "type": "image/png"
27
-        },
28
-        {
29
-            "src": "{{ site.uri }}/assets/favicon/android-chrome-144x144.png",
30
-            "sizes": "144x144",
31
-            "type": "image/png"
32
-        },
33
-        {
34
-            "src": "{{ site.uri }}/assets/favicon/android-chrome-192x192.png",
35
-            "sizes": "192x192",
36
-            "type": "image/png"
37
-        },
38
-        {
39
-            "src": "{{ site.uri }}/assets/favicon/android-chrome-256x256.png",
40
-            "sizes": "256x256",
41
-            "type": "image/png"
42
-        },
43
-        {
44
-            "src": "{{ site.uri }}/assets/favicon/android-chrome-384x384.png",
45
-            "sizes": "384x384",
46
-            "type": "image/png"
47
-        },
48
-        {
49
-            "src": "{{ site.uri }}/assets/favicon/android-chrome-512x512.png",
50
-            "sizes": "512x512",
51
-            "type": "image/png"
52
-        }
53
-    ],
54
-    "theme_color": "#121212",
55
-    "background_color": "#121212",
56
-    "display": "standalone"
57
-}

BIN
src/_assets/images/favicon/apple-touch-icon-114x114-precomposed.png View File


BIN
src/_assets/images/favicon/apple-touch-icon-114x114.png View File


BIN
src/_assets/images/favicon/apple-touch-icon-120x120-precomposed.png View File


BIN
src/_assets/images/favicon/apple-touch-icon-120x120.png View File


BIN
src/_assets/images/favicon/apple-touch-icon-144x144-precomposed.png View File


BIN
src/_assets/images/favicon/apple-touch-icon-144x144.png View File


BIN
src/_assets/images/favicon/apple-touch-icon-152x152-precomposed.png View File


BIN
src/_assets/images/favicon/apple-touch-icon-152x152.png View File


BIN
src/_assets/images/favicon/apple-touch-icon-180x180-precomposed.png View File


BIN
src/_assets/images/favicon/apple-touch-icon-180x180.png View File


BIN
src/_assets/images/favicon/apple-touch-icon-57x57-precomposed.png View File


BIN
src/_assets/images/favicon/apple-touch-icon-57x57.png View File


BIN
src/_assets/images/favicon/apple-touch-icon-60x60-precomposed.png View File


BIN
src/_assets/images/favicon/apple-touch-icon-60x60.png View File


BIN
src/_assets/images/favicon/apple-touch-icon-72x72-precomposed.png View File


BIN
src/_assets/images/favicon/apple-touch-icon-72x72.png View File


BIN
src/_assets/images/favicon/apple-touch-icon-76x76-precomposed.png View File


BIN
src/_assets/images/favicon/apple-touch-icon-76x76.png View File


BIN
src/_assets/images/rpi-rotate.gif View File


BIN
src/_assets/images/space.jpeg View File


src/_assets/js/page.js → src/_assets/js/page.js.liquid View File

@@ -1,12 +1,20 @@
1 1
 //= require webfontloader/webfontloader.js
2
+// vim: set ft=javascript.liquid :
2 3
 
3 4
 // Configure WebFontLoader.
5
+// TODO: Move to make all of these fonts self-hosted.
4 6
 var WebFontConfig = {
7
+  custom: {
8
+    families: [
9
+      'beyno'
10
+    ],
11
+    urls: ["asset_path('beyno.otf')"]
12
+  },
5 13
   google: {
6 14
     families: [
7 15
       'Lato:400,700,italic:latin', // Default page font
8 16
       'Titillium+Web:400,700:latin', // Default page font
9
-      'Inconsolata:100,300,500,700,italic:latin', // Default page font
17
+      'Inconsolata:400,700,italic:latin', // Default page font
10 18
     ]
11 19
   }
12 20
 };

+ 2
- 3
src/_drafts/2017-05-15-dokku-app-manifest.markdown View File

@@ -2,16 +2,15 @@
2 2
 layout: post
3 3
 title: Introducing Dokku Application Manifest
4 4
 date: 2017-05-15 11:27:31 PDT
5
-category: project
5
+category: projects
6 6
 tags:
7 7
   - dokku
8 8
   - docker
9
-  - dokku application manifest
10 9
   - side project
11 10
   - announcement
12 11
 excerpt: |
13 12
   Dokku is excellent for side projects or client work alike. If
14
-  you're the kind of person who finds themself constantly re-installing
13
+  you're the kind of person who finds themselves constantly re-installing
15 14
   and building the same system or want a more deterministic approach to
16 15
   building your Dokku systems, look no further.
17 16
 ---

+ 9
- 15
src/_faq/about-website.markdown View File

@@ -1,23 +1,17 @@
1 1
 ---
2 2
 layout: faq
3 3
 title: What did you use to build your website?
4
-date: 2017-11-10 17:51:28 PST
4
+date: 2018-04-17 21:35:17 PDT
5 5
 ---
6
-I used a few services and tools.
7
-
8
-* [DigitalOcean][] for hosting.
9
-* [DNSimple][] for my domain name.
10
-* [Jekyll][] for building the site.
11
-* [GitHub][] to host the [source code of my site][src].
12
-* [Neovim][] to edit the sources with my [settings][vimrc].
13
-* All of these [Ruby gems][gems] and [Node packages][pkg].
6
+I have a [custom server setup][1] for hosting this website. Below that, I use
7
+a few tools. Things like [DigitalOcean][] handle the virtual private server that
8
+I use for this and my [analytics][1] system. [Jekyll][] handles the act of
9
+converting my flat life website into the one you see here. Domain name
10
+management is done via [DNSimple][]. I store the latest copies of the source
11
+code of my site on [my personal Git server][2].
14 12
 
15 13
 [digitalocean]: https://m.do.co/c/0d64aebbf668
16 14
 [dnsimple]: https://dnsimple.com/r/2131c39d72a26d
17 15
 [jekyll]: http://jekyllrb.com/
18
-[github]: https://github.com/
19
-[neovim]: https://neovim.io
20
-[vimrc]: https://github.com/jalcine/vimrc
21
-[src]: https://github.com/jalcine/website
22
-[gems]: https://github.com/jalcine/website/blob/develop/Gemfile
23
-[pkg]: https://github.com/jalcine/website/blob/develop/src/package.json
16
+[1]: {% post_url 2018-01-21-tracking-you %}
17
+[2]: https://git.jacky.wtf/me/website/

+ 1
- 1
src/_faq/editor.markdown View File

@@ -8,7 +8,7 @@ If you know me, or rather, if you've watched me begin to type text; you'll note
8 8
 that my fingers _hover_ over the ["home row"][1]. This is an indicator of
9 9
 a [Vim][] user. I actually moved to [Neovim][] for a [few reasons][2].
10 10
 
11
-{% img "{{ 'gear/vim.png' | image_path }}" width:"auto" height:"auto" %}
11
+{% asset gear/vim.png width=auto height=auto %}
12 12
 
13 13
 [1]: https://www.computerhope.com/jargon/h/hrk.htm
14 14
 [vim]: http://vim.org

+ 4
- 4
src/_includes/event.html View File

@@ -1,8 +1,8 @@
1 1
 <article class="pa1 w-100 w-50-l db cf fl">
2
-  {% img "{{ event.image.src | image_path }}" class:"db w-100 h-auto"
3
-          height:"auto" width:"auto"
4
-          alt:"{{ event.image.title }}"
5
-          title:"{{ event.image.title }}" %}
2
+  {% asset "{{ event.image.src }}" class="db w-100 h-auto"
3
+          height="auto" width="auto"
4
+          alt="{{ event.image.title }}"
5
+          title="{{ event.image.title }}" %}
6 6
   <h3 class="f3 tracked ttu">
7 7
     <a href="{{ event.href }}" title="{{ event.name }}">
8 8
       {{ event.name | improve }}

+ 19
- 16
src/_includes/footer.html View File

@@ -1,31 +1,34 @@
1
-<footer role="group" class="bg-near-white black bt bw3 b--black ph2 ph4-l pt2 pb3 pb4-l mt3-l" data-track-content>
2
-  <h2 class="f2 tc navy fw5 fontFamily__special">{{ site.name }}</h2>
3
-  <section class="cf db mw7 center color-inherit">
4
-    <div class="f6 w-100 w-50-l fl-l">
1
+<footer role="group" class="bg-near-black near-white bt bw3 b--near-black pa4" data-track-content>
2
+  <h1 class="f1 washed-blue fw5 ma0 pa0 fontFamily__special">{{ site.name }}</h1>
3
+  <section class="cf db mw7 color-inherit">
4
+    <div class="f6 w-50-l">
5 5
       <p>Been at this since 2010.</p>
6 6
       <p class="f6 lh-copy measure-narrow">{{ site.description | improve }}</p>
7 7
       <p><a href="/now/" target="_blank">See what I'm currently up to.</a></p>
8
-      <nav class="tc-s tj-ns w-100 white">
8
+      <nav class="w-100 white">
9 9
         {% for link in site.data.links.navigation %}
10 10
           <a class="link dib white dim fw5" href="{{ link.link }}" title="{{ link.title }}">{{ link.title }}</a>
11 11
           <span class="dib blue">{% if forloop.last != true %} &mdash; {% endif %}</span>
12 12
         {% endfor %}
13 13
       </nav>
14 14
     </div>
15
-    <aside class="db w-100 mt5 w-50-l fr-l mt0-l color-inherit">
15
+    <aside class="db w-100 mt5 w-50-l color-inherit">
16 16
       {% include newsletter_inline.html %}
17 17
     </aside>
18 18
   </section>
19
+  {% include search.html %}
19 20
 </footer>
20 21
 {% webmentions_js %}
21 22
 <script data-isso="//{{ site.isso_host }}/"
22
-        data-isso-css="true"
23
-        data-isso-lang="en"
24
-        data-isso-reply-to-self="true"
25
-        data-isso-require-author="true"
26
-        data-isso-require-email="true"
27
-        data-isso-max-comments-top="10"
28
-        data-isso-max-comments-nested="3"
29
-        data-isso-reveal-on-click="3"
30
-        data-isso-avatar="true"
31
-        data-isso-vote="true" src="//{{ site.isso_host }}/js/embed.min.js"></script>
23
+  data-isso-css="true"
24
+  data-isso-lang="en"
25
+  data-isso-reply-to-self="true"
26
+  data-isso-require-author="true"
27
+  data-isso-require-email="true"
28
+  data-isso-max-comments-top="10"
29
+  data-isso-max-comments-nested="3"
30
+  data-isso-reveal-on-click="3"
31
+  data-isso-avatar="true"
32
+  data-isso-vote="true" src="//{{ site.isso_host }}/js/embed.min.js"
33
+  async=true defer=true
34
+></script>

+ 15
- 23
src/_includes/head.html View File

@@ -10,9 +10,9 @@
10 10
   {% assign blurb = site.description | strip_newlines %}
11 11
 {% endif %}
12 12
 {% if page.image contains 'http://' or page.image contains 'https://' %}
13
-	{% assign image = page.image %}
13
+  {% assign image = page.image %}
14 14
 {% else %}
15
-	{% assign image = 'favicon/android-chrome-192x192.png' | asset_path %}
15
+  {% assign image = 'favicon/android-chrome-192x192.png' | asset_path %}
16 16
 {% endif %}
17 17
 {% assign full_page_uri = page.url | prepend: '/' | prepend: site.url %}
18 18
 {% if page.redirect %}
@@ -30,30 +30,20 @@
30 30
 {% endif %}
31 31
 <meta name='revisit-after' content='7 days'>
32 32
 {% if page.date %}
33
-  <meta name="date" content="{{ page.date}}">
33
+  <meta name="date" content="{{ page.date }}">
34 34
 {% endif %}
35
-<meta http-equiv='Expires' content='0'>
36
-{% css page %}
35
+
36
+{% asset page.css !integrity %}
37
+
37 38
 <link rel='help' title='FAQ' href='{{ site.uri }}/faq/'>
38 39
 <link rel='index' title='{{ site.name }}' href='{{ site.uri }}'>
39
-<link rel="apple-touch-icon" sizes="180x180" href="{% asset_path 'favicon/apple-touch-icon.png' %}">
40
-<link rel="icon" type="image/png" sizes="32x32" href="{% asset_path 'favicon/favicon-32x32.png' %}">
41
-<link rel="icon" type="image/png" sizes="194x194" href="{% asset_path 'favicon/favicon-194x194.png' %}">
42
-<link rel="icon" type="image/png" sizes="192x192" href="{% asset_path 'favicon/android-chrome-192x192.png' %}">
43
-<link rel="icon" type="image/png" sizes="16x16" href="{% asset_path 'favicon/favicon-16x16.png' %}">
44
-<link rel="manifest" href="{% asset_path 'manifest.json' %}">
45
-<link rel="mask-icon" href="{% asset_path 'favicon/safari-pinned-tab.svg' %}" color="#121212">
46
-<link rel="shortcut icon" href="{% asset_path 'favicon/favicon.ico' %}">
47
-<meta name="msapplication-TileColor" content="#603cba">
48
-<meta name="msapplication-TileImage" content="{% asset_path 'favicon/mstile-144x144.png' %}">
49
-<meta name="msapplication-config" content="{% asset_path 'browserconfig.xml' %}">
50
-<meta name="theme-color" content="#121212">
51
-
40
+<link rel='shortcut icon' href="{% asset favicon/favicon.ico @path %}">
52 41
 
53 42
 <link rel="alternate" type="application/rss+xml" title="{{ site.name }} - Articles" href="/feeds/articles.xml" />
54 43
 <link rel="alternate" type="application/rss+xml" title="{{ site.name }} - Recent" href="/feeds/recent.xml" />
55
-<meta name="viewport" content="width=device-width,height=device-height,initial-scale=1">
56 44
 
45
+<meta name="viewport" content="width=device-width,height=device-height,initial-scale=1">
46
+<meta http-equiv='Expires' content='0'>
57 47
 <meta itemprop="name" content="{{ correct_title }}">
58 48
 <meta itemprop="description" content="{{ blurb }}">
59 49
 
@@ -79,7 +69,9 @@
79 69
 <link href="https://instagram.com/jackyalcine" rel="me" />
80 70
 <link href="{{ site.url }}/pgp.asc" rel="pgpkey" />
81 71
 <link rel="canonical" href="{{ full_page_uri }}">
82
-
72
+<link rel="authorization_endpoint" href="https://indieauth.com/auth">
73
+<link rel="micropub" href="https://pub.jacky.wtf/micropub">
74
+<link rel="token_endpoint" href="https://pub.jacky.wtf/token">
83 75
 
84 76
 <script type="text/javascript">
85 77
   var _paq = _paq || [];
@@ -89,13 +81,13 @@
89 81
   _paq.push(['trackVisibleContentImpressions']);
90 82
 
91 83
   (function() {
92
-    var u="https://analytics.jacky.wtf/";
84
+    var u="https://{{ site.analytics.host }}/";
93 85
     _paq.push(['setTrackerUrl', u+'piwik.php']);
94
-    _paq.push(['setSiteId', '1']);
86
+    _paq.push(['setSiteId', '{{ site.analytics.site_id }}']);
95 87
     var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
96 88
     g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
97 89
   })();
98 90
 </script>
99
-<noscript><img src="//analytics.jacky.wtf/piwik.php?idsite=1&rec=1&action_name={{ page.title | url_param_escape }}" style="border:0;" alt="" /></noscript>
91
+<noscript><img src="//{{ site.analytics.host }}/piwik.php?idsite={{ site.analyitcs.site_id }}&rec=1&action_name={{ page.title | url_param_escape }}" style="border:0;" alt="" /></noscript>
100 92
 
101 93
 {% webmentions_head %}

+ 5
- 4
src/_includes/header.html View File

@@ -1,9 +1,9 @@
1 1
 <header role="document" class="bg-near-black near-white w-100 ph1 pv4 cb cf bw3 b--black-50 bb">
2
-  <h2 class="fontFamily__special tracked-tight lh-solid f1 ma1 tc pa1">
3
-    <img src="{{ 'brand/self.jpeg' | asset_path }}" class="v-mid br-100 bg-black-80 b--black-80 ba h3">
2
+  <h1 class="fontFamily__special tracked-tight lh-title f1 ma1 pa1">
3
+    {% asset brand/self.jpeg class='v-mid br-100 bg-black-80 b--black-80 ba h3 mb3 ma1-ns' alt='{{ site.name }}' width=auto height=auto %}
4 4
     {{ site.name }}
5
-  </h2>
6
-  <nav class="tc cf cb center">
5
+  </h1>
6
+  <nav class="cf cb">
7 7
     {% for link in site.data.links.navigation %}
8 8
       <a class="{{ link.classes }} db dib-l fl fn-l link mh0 pa1 pa3-l mv1 dim mh1-l w-third w-auto-l"
9 9
          href="{{ link.link }}" title="{{ link.title }}">
@@ -11,5 +11,6 @@
11 11
       </a>
12 12
     {% endfor %}
13 13
   </nav>
14
+  {% include search.html %}
14 15
 </header>
15 16
 {% include notices.html %}

+ 1
- 1
src/_includes/listing/project.html View File

@@ -1,6 +1,6 @@
1 1
 <section class="section__region">
2 2
   {% if include.project.image %}
3
-    {% img "{{ include.project.image | image_path }}" class:"w-80 center" width:"100%" height:"auto" %}
3
+    {% asset "{{ include.project.image }}" class="w-80 center" width="100%" height="auto" %}
4 4
   {% endif %}
5 5
   <h2 class="f2 lh-title tracked-tight">
6 6
     <a href="{{ include.project.url }}" target="_blank">

+ 5
- 5
src/_includes/masthead_post_header.html View File

@@ -1,13 +1,13 @@
1 1
 <header role="group" class="masthead post">
2
-  {% img "{{ page.image }}" class:"w-100 db center" width:"auto" height:"auto" %}
3
-  <h1>{{ page.title | improve }}</h1>
2
+  {% asset '{{ page.image }}' class='w-100 db' width=auto height=auto %}
3
+  <h1 class="pl3">{{ page.title | improve }}</h1>
4 4
   {% if page.byline %}<h2>{{ page.byline | improve }}</h2>{% endif %}
5 5
   {% if page.excerpt and page.excerpt != 'none' %}
6
-    <blockquote class="excerpt tc">
6
+    <blockquote class="excerpt">
7 7
     {{ page.excerpt | markdownify | strip_tags: '<p>' }}
8
-  </blockquote>
8
+    </blockquote>
9 9
   {% endif %}
10
-  <address role="group" class="post mw7-ns tc-s center">
10
+  <address role="group" class="post mw7-ns ph3-ns pl3">
11 11
     {% if page.category %}<span>:book: {{ page.category }}</span>{% endif %}
12 12
     {% if page.tags %}<span>:bookmark: {{ page.tags | linkify_tags }}</span>{% endif %}
13 13
     {% if page.date %}<span>:clock7: <time>{{ page.date | date_to_rfc822 }}</time></span>{% endif %}

+ 1
- 1
src/_includes/notices.html View File

@@ -1,4 +1,4 @@
1
-<p class="w-100 pa2 pv3-l ma0 tc db cb cf v-mid bg-yellow near-black fw3 f4">
1
+<p class="w-100 pa2 ph3-l ma0 db cb cf v-mid bg-yellow near-black fw5 f4">
2 2
   Got an app idea or need some coding done? I can help!
3 3
   <a href="/work/contract/?ref=notice" class="link white dim fw7">Learn more</a>
4 4
   about how you &amp; I can work together.

+ 7
- 2
src/_includes/post_footer.html View File

@@ -1,8 +1,13 @@
1 1
 <footer role="group" class="mt1 cb cf" data-track-content>
2
-  <div class="mw7 center">
3
-    {% webmentions %}
2
+  <div class="hcard" style="display: none">
3
+    <a class="h-card" href="{{ site.url }}">
4
+      {% asset brand/self.jpeg class='v-mid br-100 bg-black-80 b--black-80 ba h3 mb3 ma1-ns' alt='{{ site.name }}' width=auto height=auto %}
5
+    </a>
6
+  </div>
7
+  <div class="mw7">
4 8
     {% include post_related.html %}
5 9
     {% include comments.html %}
10
+    {% webmentions %}
6 11
     {% include post_navigation.html %}
7 12
   </div>
8 13
   {% include post_lead.html %}

+ 8
- 8
src/_includes/post_header.html View File

@@ -1,22 +1,22 @@
1
-<header role="group" class="post" data-track-content>
2
-  <h1>{{ page.title | improve }}</h1>
1
+<header role="group" class="post ph4 center-s" data-track-content>
2
+  <h1 class="pl3 lh-title f-headline-l f-subheadline-l">{{ page.title | improve }}</h1>
3 3
   {% if page.byline %}<h3>{{ page.byline | improve }}</h3>{% endif %}
4 4
   {% if page.excerpt and page.excerpt != 'none' %}
5
-  <blockquote class="excerpt tc">
5
+  <blockquote class="excerpt">
6 6
     {{ page.excerpt | markdownify | strip_tags: '<p>' }}
7 7
   </blockquote>
8 8
   {% endif %}
9
-  <address role="group" class="post center">
10
-    {% if page.category %}<span>:book: {{ page.category }}</span>{% endif %}
9
+  <address role="group" class="post pl3">
10
+    <span>:book: {{ page.category | linkify_categories }}</span>
11 11
     {% if page.tags %}<span>:bookmark: {{ page.tags | linkify_tags }}</span>{% endif %}
12
-    {% if page.date %}<span>
12
+    <span>
13 13
         :clock7: written <time>{{ page.date | date:'%B %-d %Y' }}</time>
14 14
         {% if page.revised %}- revised <time>{{ page.revised | date_to_rfc822 }}</time>>{% endif %}
15
-      </span>{% endif %}
15
+    </span>
16 16
     <span>:eyeglasses: {{ content | reading_time }}</span>
17 17
     <span>
18 18
       :link: <a href="#isso-thread">Comments</a> -
19
-      {% webmention_count page.url %} <a href="/faq/indieweb#webmentions">mention(s)</a>
19
+      {% webmention_count page.url %} <a href="/faq/indieweb/#webmentions">mention(s)</a>
20 20
     </span>
21 21
   </address>
22 22
 </header>

+ 2
- 2
src/_includes/post_lead.html View File

@@ -1,5 +1,5 @@
1 1
 <section class="bg-near-black white pa4-ns pa2 mt3 cb">
2
-  <p class="lh-copy f4 mw7 center">
2
+  <p class="lh-copy f4 mw7">
3 3
     Did you find &ldquo;<strong>{{ page.title }}</strong>&rdquo; useful? Want
4 4
     more? <br />
5 5
     I recommend <em>subscribing to my newsletter</em> for more content and alerts
@@ -8,7 +8,7 @@
8 8
       <strong>Get to the top of line</strong> &raquo;
9 9
     </a>
10 10
   </p>
11
-  <p class="lh-copy f5 mw7 center">
11
+  <p class="lh-copy f5 mw7">
12 12
     Have a product idea? Need some code written?
13 13
     <strong>Let's work on it together</strong>.
14 14
     I'm available for your Web application contract work.<br />

+ 3
- 3
src/_includes/post_navigation.html View File

@@ -1,8 +1,8 @@
1
-<nav class="center db cb w-100 cf">
1
+<nav class="db cb w-100 mw7 cf">
2 2
   {% if page.previous %}
3
-    <a class="fl link dim" href="{{ page.previous.url }}" title="{{ page.previous.name }}">&laquo; Previous</a>
3
+    <a class="fl link dim pl2" href="{{ page.previous.url }}" title="{{ page.previous.name }}">&laquo; Previous</a>
4 4
   {% endif %}
5 5
   {% if page.next %}
6
-    <a class="fr link dim" href="{{ page.next.url }}" title="{{ page.next.name }}">Next &raquo;</a>
6
+    <a class="fr link dim pr2" href="{{ page.next.url }}" title="{{ page.next.name }}">Next &raquo;</a>
7 7
   {% endif %}
8 8
 </nav>

+ 8
- 8
src/_includes/post_related.html View File

@@ -1,10 +1,10 @@
1 1
 {% if site.related_posts.size >= 1 %}
2
-  <section class="pa2">
3
-    <h3 class="f3 lh-title tracked-tight">Related Posts</h3>
4
-    <ul>
5
-      {% for related_post in site.related_posts limit: 5 %}
6
-        <li><a href="{{ related_post.url }}">{{ related_post.title }}</a></li>
7
-      {% endfor %}
8
-    </ul>
9
-  </section>
2
+<section class="pa4">
3
+  <h3 class="f3 lh-title tracked-tight">Related Posts</h3>
4
+  <ul>
5
+    {% for related_post in site.related_posts limit: 5 %}
6
+      <li><a href="{{ related_post.url }}">{{ related_post.title }}</a></li>
7
+    {% endfor %}
8
+  </ul>
9
+</section>
10 10
 {% endif %}

+ 8
- 0
src/_includes/search.html View File

@@ -0,0 +1,8 @@
1
+<form id="lf-search" action="https://duckduckgo.com/">
2
+  <input type="hidden" name="kf" value="-1">
3
+  <input type="hidden" name="kaf" value="1">
4
+  <input type="hidden" name="k1" value="-1">
5
+  <input type="hidden" name="sites" value="{{ site.url }}">
6
+  <input type="text" name="q" value="" placeholder="Search {{ site.name }}" autocomplete="off" aria-label="Search">
7
+  <button type="submit">Search</button>
8
+</form>

+ 1
- 3
src/_layouts/bare.html View File

@@ -1,5 +1,3 @@
1
----
2
----
3 1
 <!DOCTYPE HTML>
4 2
 <html lang="en">
5 3
   <head>
@@ -12,6 +10,6 @@
12 10
       {{ content }}
13 11
     </main>
14 12
     {% unless page.components.footer == false %}{% include footer.html %}{% endunless %}
15
-    {% js page async:true defer:true %}
13
+    {% asset page.js async=true defer=true %}
16 14
   </body>
17 15
 </html>

+ 3
- 3
src/_layouts/event.html View File

@@ -3,9 +3,9 @@ layout: bare
3 3
 masthead: none
4 4
 ---
5 5
 {% if page.masthead %}
6
-  {% img "{{ page.masthead | image_path }}"
7
-          class:"w-100 dib ma1-l mw7-l h-75-l fr-l"
8
-          width:"auto" height:"auto" %}
6
+  {% asset "{{ page.masthead }}"
7
+      class="w-100 dib ma1-l mw7-l h-75-l fr-l"
8
+      width=auto height=auto %}
9 9
 {% endif %}
10 10
 <section role="document">
11 11
   <h2 class="f2 lh-title">{{ page.title }}</h2>

+ 4
- 2
src/_layouts/faq.html View File

@@ -1,9 +1,11 @@
1 1
 ---
2 2
 layout: page
3 3
 ---
4
-<a href="/faq/">&laquo; Back to FAQ index</a>
5
-<main role="group" class="f4 measure" data-track-content data-content-name="faq"
4
+<main role="group"
5
+  class="f3"
6
+  data-track-content data-content-name="faq"
6 7
   data-content-piece="{{ page.title }}">
7 8
   {{ content | improve | letter_spacing }}
8 9
   {% include comments.html %}
9 10
 </main>
11
+<a href="/faq/">&laquo; Back to FAQ index</a>

+ 9
- 6
src/_layouts/page.html View File

@@ -1,13 +1,16 @@
1 1
 ---
2 2
 layout: bare
3 3
 ---
4
-{% if page.masthead and page.masthead.image %}
5
-  {% img "{{ page.masthead.image | image_path }}" class:"w-100 mw9 center db mb1" width:"100%" height:"auto" title:"{{ masthead.title }}"%}
6
-{% endif %}
7
-<section role="document" class="mw8 center" data-track-content
4
+<div class="bg-near-black washed-yellow w-100">
5
+  {% if page.masthead and page.masthead.image %}
6
+    {% asset "{{ page.masthead.image }}" class="w-100 center db" width="100%" height="auto" title="{{ masthead.title }}" %}
7
+  {% endif %}
8
+  <h1 class="mw7 f2 f1-l lh-title ttu ma0 pa2 ph4-ns">
9
+    {{ page.title }}
10
+  </h1>
11
+</div>
12
+<section role="document" class="mw8" data-track-content
8 13
   data-content-name="page"
9 14
   data-content-piece="{{ page.title }}">
10
-  <h1 class="f1 lh-title f-headline-l">{{ page.title }}</h1>
11 15
   {{ content }}
12
-  {% webmentions %}
13 16
 </section>

+ 1
- 1
src/_layouts/portfolio.html View File

@@ -3,7 +3,7 @@ layout: bare
3 3
 image: none
4 4
 ---
5 5
 {% if page.image %}
6
-  {% img "{{ page.image | image_path }}" class:"w-100" width:"100%" height:"auto" %}
6
+  {% asset "{{ page.image }}" class="w-100" width="100%" height="auto" %}
7 7
 {% endif %}
8 8
 <section role="document">
9 9
   <h2 class="f2 lh-title">

+ 1
- 1
src/_layouts/project.html View File

@@ -3,7 +3,7 @@ layout: bare
3 3
 image: none
4 4
 ---
5 5
 {% if page.image %}
6
-  {% img "{{ page.image | image_path }}" class:"w-100" width:"100%" height:"auto" %}
6
+  {% asset "{{ page.image }}" class="w-100" width="100%" height="auto" %}
7 7
 {% endif %}
8 8
 <section role="document">
9 9
   <h2 class="f2 lh-title">

+ 1
- 1
src/_layouts/tags.html View File

@@ -10,5 +10,5 @@ ext: html
10 10
     these posts by visiting <a href="/{{ rss_feed }}">this RSS/ATOM feed</a>.
11 11
   </p>
12 12
   {{ tag_posts }}
13
-  {% include post_listing.html posts=page.posts %}
13
+  {% include post_listing.html posts=paginator.posts %}
14 14
 </section>

+ 1
- 1
src/_pages/404.html View File

@@ -1,5 +1,5 @@
1 1
 ---
2
-permalink: /404.html
2
+permalink: /errors/404.html
3 3
 title: Not Found
4 4
 ---
5 5
 <p class="lead">Nope, I don't have that.</p>

+ 7
- 3
src/_pages/faq.html View File

@@ -3,6 +3,10 @@ permalink: /faq/
3 3
 redirect_from:
4 4
   - /questions/
5 5
 title: "Frequently Asked Questions"
6
+pagination:
7
+  enabled: true
8
+  collection: 'faq'
9
+  title: 'Frequently Asked Questions - Page :num of :max'
6 10
 ---
7 11
 <p class="lead measure">
8 12
   I try to keep my code <a target="_blank"
@@ -19,10 +23,10 @@ title: "Frequently Asked Questions"
19 23
 </p>
20 24
 <h3 class="f3 lh-subtitle">Questions</h3>
21 25
 <ul class="arrows">
22
-  {% for item in site.faq %}
26
+  {% for entry in paginator.posts %}
23 27
     <li>
24
-      <a title="{{ item.title | improve }}" href="{{ item.url }}">
25
-        {{ item.title | improve }}
28
+      <a title="{{ entry.title | improve }}" href="{{ entry.url }}">
29
+        {{ entry.title | improve }}
26 30
       </a>
27 31
     </li>
28 32
   {% endfor %}

+ 3
- 3
src/_pages/gear.html View File

@@ -28,9 +28,9 @@ masthead:
28 28
           <a name="{{item.anchor}}">{{ item.name }}</a>
29 29
         </h3>
30 30
         {% if item.image %}
31
-          {% img "{{ item.image | image_path }}"
32
-                class:"w-auto h-auto mw6 db ma2 center-s vh-25 fr"
33
-                width:auto height:auto %}
31
+          {% asset "{{ item.image }}"
32
+                class="w-auto h-auto mw6 db ma2 center-s vh-25 fr"
33
+                width=auto height=auto %}
34 34
         {% endif %}
35 35
         <div class="f5 lh-copy center-s fl-l measure-narrow-l">
36 36
           {{ item.bio | strip_tags: '<p></p>' | markdownify }}

+ 4
- 26
src/_pages/home.html View File

@@ -1,31 +1,9 @@
1 1
 ---
2
-layout: bare
3
-permalink: /
2
+permalink: /index.html
4 3
 redirect_from:
5 4
   - /home/
6 5
 title: "Jacky Alciné is an educator, software engineer and Black as hell."
6
+components:
7
+  header: false
7 8
 ---
8
-<h1 class="f-headline tracked-tight tc lh-copy fontFamily__special">
9
-  Hey. I'm Jacky.
10
-</h1>
11
-<p class="tj ph1 ph3-m ph0-l f3 lh-copy mw7 center">
12
-  {% img "{{ 'brand/self.jpeg' | image_path }}" class:"mh2-l center-s
13
-  fr-l h-50 h-75-l w-auto mw-100 mw5-l db" %}
14
-
15
-  I <a href="/work/">work at <img src="https://lob.com/favicon-32.png"
16
-    class="img v-mid"><strong color="blue">Lob</strong></a>.
17
-  I like <a href="/subscribe/">using the Web</a> a lot.
18
-  I'm a <a href="{% post_url 2016-09-12-haitian-not-african-american %}" target="_blank">
19
-    Black Haitian-American</a> that aggressively stands for and aims to defends
20
-  the lives of <strong>marginalized</strong> and <strong>oppressed</strong> people.
21
-  <a target="_blank" href="/faq/who-are-you/">Learn more about what makes me,
22
-    me</a>.
23
-</p>
24
-<p class="ph1 ph3-m ph0-l f4 lh-copy mw7 center dark-gray">
25
-  My last blog post was <a href="{{ site.posts[0].url }}">{{ site.posts[0].title
26
-    }}</a>, written on {{ site.posts[0].date | date_to_long_string }}. You can
27
-  view the rest of those entries <a href="/weblog/">here</a>. This particular
28
-  page has {% webmention_count page.url %} <a
29
-    href="/faq/indieweb/#webmentions">mentions</a> via the <a
30
-    target="_blank" href="https://indieweb.org/">IndieWeb</a>.
31
-</p>
9
+{% asset brand/self.jpeg class='center cb cf db w-100 mw7' title='A picture of Jacky.' %}

+ 6
- 3
src/_pages/portfolio.html View File

@@ -5,8 +5,11 @@ description: |
5 5
   I work on an assortment of projects. Here, I outline what they are.
6 6
 masthead:
7 7
   image: pages/work-portfolio.jpeg
8
+pagination:
9
+  enabled: true
10
+  collection: 'portfolio'
11
+  title: 'Portfolio - Page :num of :max'
8 12
 ---
9
-<h1 class="lh-title f-headline-l">Portfolio</h1>
10 13
 <p class="lead lh-copy">
11 14
   As mentioned on <a href="/work/resume/">my resume</a>, I work as a
12 15
   full-stack software developer; ranging from client-side mobile applications
@@ -16,6 +19,6 @@ masthead:
16 19
   Sounds interesting? <a href="/work/freelance/">Let's get to work</a>. I'd
17 20
   love to hear what ideas you got brewing!
18 21
 </p>
19
-{% for product in site.portfolio %}
20
-  {% include listing/project.html project=product %}
22
+{% for entry in paginator.posts %}
23
+  {% include listing/project.html project=entry %}
21 24
 {% endfor %}

+ 45
- 12
src/_pages/weblog.html View File

@@ -1,20 +1,53 @@
1 1
 ---
2
-permalink: /weblog/
2
+title: Weblog
3 3
 redirect_from:
4 4
   - /blog/
5
-title: Weblog
6
-excerpt: >
5
+permalink: /weblog/
6
+excerpt: |
7 7
   A listing of all of the posts Jacky has written on his website.
8 8
 masthead:
9 9
   image: pages/weblog.jpeg
10
+  title: My collection of weblog entries.
11
+pagination:
12
+  enabled: true
13
+  collection: 'posts'
14
+  title: 'Weblog - Page :num of :max'
10 15
 ---
11
-<p class="lead">
12
-  I like using the Internet a lot. I think I spend at least four hours each
13
-  day interacting with it with various devices. This and the experiences
14
-  I have in my life I capture here in my <strong>weblog</strong>. Some people
15
-  call them <em>blogs</em>, <em>web journals</em> or just <em>sites</em>. This
16
-  is my blog. It has {{ site.posts.size }} posts since {{ site.posts.last.date | date: "%Y" }}.
16
+<p class="measure-wide lh-copy f4">
17
+  These are thoughts and updates I collect from my desk to bring to you.
17 18
 </p>
18
-
19
-<h2 class="tracked-tight ttu">Entries</h2>
20
-{% include post_listing.html posts=site.posts %}
19
+{% for post in paginator.posts %}
20
+<section class="mw7">
21
+  <h2 class="f3 tracked-tight">
22
+    <a class="db dim underline-hover" href="{{ post.url }}">
23
+      {{ post.title | improve }}
24
+    </a>
25
+  </h2>
26
+  <div>
27
+    <time class="w4" datetime="{{ post.date }}">
28
+      :calendar: {{ post.date | date: "%d %b %Y" }}
29
+    </time> &mdash;
30
+    <span>
31
+      :link: {% webmention_count post.url %} mention(s)
32
+    </span> &mdash;
33
+    <span>:eyeglasses: {{ post.content | reading_time }}</span>
34
+    {% if page.category %}<span>:book: {{ page.category | linkify_categories }}</span>{% endif %}
35
+    {% if page.tags %}<span>:bookmark: {{ page.tags | linkify_tags }}</span>{% endif %}
36
+  </div>
37
+  {% if post.excerpt and post.excerpt != 'none' %}
38
+    <p class="measure-copy lh-copy near-black bl bw2 b--silver pa2 pa3-l">
39
+      {{ post.excerpt | strip_html | improve }}
40
+    </p>
41
+  {% endif %}
42
+</section>
43
+{% endfor %}
44
+{% if paginator.total_pages > 1 %}
45
+<div class="w-100 pa2">
46
+  {% if paginator.previous_page %}
47
+    <a class="fl ml2" href="{{ paginator.previous_page_path | prepend: site.baseurl }}">Newer</a>
48
+  {% endif %}
49
+  {% if paginator.next_page %}
50
+    <a class="fr mr2" href="{{ paginator.next_page_path | prepend: site.baseurl }}">Older</a>
51
+  {% endif %}
52
+</div>
53
+{% endif %}

+ 0
- 42
src/_pages/work-resume.html View File

@@ -1,42 +0,0 @@
1
----
2
-layout: bare
3
-title: "My Resume"
4
-permalink: /work/resume/
5
-redirect_from: /resume/
6
-components:
7
-  header: false
8
----
9
-
10
-<section role="header" class="w-100 w-90-m w-75-l center">
11
-  <h1 class="f1 f-headline-l lh-title tracked-tight fg-accent serif baskerville">{{ site.author }}</h1>
12
-  <p class="cb tr mb4 tc-s">
13
-    <a href="mailto:yo@jacky.wtf">yo@jacky.wtf</a>
14
-    <span class="pv1 fg">//</span>
15
-    <a href="{{ site.url }}" target="_blank">{{ site.url }}</a>
16
-  </p>
17
-  <h2 class="fl-l w-100 w-20-l pv3 ph2 ma0 mt1 mh2-s bg-accent fg-white avenir sans-serif ttu tr-l">Summary</h2>
18
-  <div class="f4 pa2 fl w-80-l w-100-l pl2-l ma0 lh-copy measure fw2">
19
-    {{ site.data.resume.bio | strip | markdownify | remove: '<p>' | remove: '</p>'}}
20
-  </div>
21
-</section>
22
-<main role="body" class="w-100 w-90-m w-75-l center cb sans-serif">
23
-  <h2 class="fl-l w-100 w-20-l pv3 ph2 bg-accent fg-white avenir sans-serif ttu ma0 mt1 mh2-s tr-l">Roles</h2>
24
-  <div class="fl-l w-80-l w-100 pa2">
25
-    {% for position in site.data.resume.roles %}
26
-      <div class="pb4">
27
-        <h3 class="mv0 f3 garamond serif">
28
-          <em class="fw3 gray">{{ position.role }},</em> <a href="{{ position.uri }}" target="_blank" name="{{ position.anchor }}" class="near-black">
29
-            <strong>{{ position.name }}</strong>
30
-          </a>
31
-        </h3>
32
-        <p class="gray f5 mv1 f6">
33
-          From <em class="near-black">{{ position.time.start }}</em> until
34
-          <em class="near-black">{{ position.time.end }}</em>
35
-        </p>
36
-        <div class="lh-copy f5 measure">
37
-          {{ position.blurb | strip | markdownify }}
38
-        </div>
39
-      </div>
40
-    {% endfor %}
41
-  </div>
42
-</main>

+ 0
- 60
src/_pages/work.html View File

@@ -1,60 +0,0 @@
1
----
2
-title: Work
3
-permalink: /work/
4
-description: |
5
-  I work primarly as a software developer. I also work in the community as an
6
-  educator of Afrocentric history whilst studying childhood education.
7
-masthead:
8
-  image: pages/work.jpeg
9
----
10
-<p class="lead measure lh-copy">
11
-  I am a <strong>full-stack software engineer</strong> focused on the
12
-  <strong>Web</strong> platform. I also focus on <strong>decolonized
13
-  education</strong> for Black and Brown youth in the realm of history and
14
-  computer science. <a href="/work/resume/">Check my resume</a>.
15
-</p>
16
-
17
-<h2 class="tracked-tight">What I Do</h2>
18
-<p class="lead fw7">
19
-  I work as a senior software engineer at <a href="https://lob.com">
20
-    <img src="https://lob.com/favicon-32.png" class="img v-mid">Lob</a>.
21
-</p>
22
-<p class="measure lh-copy tj">
23
-  I focus on Web application development in languages like
24
-  <a class="fw7 orange" href="https://www.python.org/">Python</a>,
25
-  <a class="fw7 red" href="https://www.ruby-lang.org/en/">Ruby</a>,
26
-  <a class="fw7 green" href="https://js.org/">JavaScript</a>
27
-  and
28
-  <a class="fw7 purple" href="http://elixir-lang.org/">Elixir</a>.
29
-  Currently, I've been focusing a lot on
30
-  <a class="fw7 purple" href="http://elixir-lang.org/">Elixir</a> for its
31
-  excellent mixture of the familiarities of 
32
-  <a class="fw7 orange" href="https://www.python.org/">Python</a> and
33
-  <a class="fw7 red" href="https://www.ruby-lang.org/en/">Ruby</a> whilst
34
-  introducing the power and battlefield of
35
-  <a class="fw7 brown" href="https://erlang.org">Erlang</a>.
36
-  I work on building <em>delightful and effective</em> user experiences,
37
-  particularly using <a href="https://emberjs.com">EmberJS</a>.
38
-</p>
39
-<p class="measure lh-copy tj">
40
-  I have experience working on Android applications as well. It focused around
41
-  tooling, testing and finding performance bottlenecks in the application and
42
-  library usage within the such.
43
-</p>
44
-
45
-<h2 class="tracked-tight">Background</h2>
46
-<p class="lh-copy measure">
47
-  I have worked as a <strong>software engineer</strong> for since 2011
48
-  at companies like <a class="red" href="https://google.com">Google</a>,
49
-  <a class="blue" href="http://horizonmedia.com">Horizon Media</a>,
50
-  <a class="orange" href="http://www.theblsgroup.com/">BLS</a>,
51
-  <a class="red" href="https://shutterstock.com/">Shutterstock</a>,
52
-  <a class="orange" href="https://getclef.com/">Clef</a> and
53
-  <a class="hot-pink" href="https://lyft.com">Lyft</a>.
54
-  <a href="/work/contract/">Learn more about working with me</a>.
55
-</p>
56
-<p class="lh-copy measure">
57
-  I've done mentoring with youth and adults alike with amazing programs like
58
-  <a href="https://blackgirlscode.com">Black Girls Code</a> and <a
59
-    href="https://yeswecode.com">Yes We Code</a>.
60
-</p>

+ 30
- 31
src/_pages/work/contract.html View File

@@ -8,37 +8,36 @@ redirect_from:
8 8
 description: |
9 9
   I actively do contract web development work with languages like JavaScript,
10 10
   Ruby, Python and Elixir. Contact me for rates and information.
11
+masthead:
12
+  image: pages/work.jpeg
13
+  title: Me working with You? Let's find out.
11 14
 ---
12
-{% img "{{ 'pages/work.jpeg' | image_path }}" class:"masthead" width:"100%" height:"auto" %}
13
-<section role="document">
14
-  <h1 class="f1 lh-title f-headline-l">Working with You</h1>
15
-  <p class="lead">
16
-    As a <a href="/work/">full-stack software engineer</a>, I can provide your
17
-    team with tools and products that meet and excel the expectations you have.
18
-  </p>
15
+<p class="lead">
16
+  As a <a href="/work/">full-stack software developer</a>, I can provide your
17
+  team with tools and products that meet and excel the expectations you have.
18
+</p>
19 19
 
20
-  <h2 class="f2 lh-title">Pricing</h2>
21
-  <p class="lead">
22
-    My <strong>non-negotiable</strong> hourly rate is on a sliding scale of
23
-    <mark>$75 &ndash; $85</mark>. I can also do a per-project rate, beginning at
24
-    <strong>$600</strong>.
25
-  </p>
26
-  <p>
27
-    Need more information? <a href="/contact/">Hit me up</a>.
28
-  </p>
20
+<h2 class="f2 lh-title">Pricing</h2>
21
+<p class="lead">
22
+  My <strong>non-negotiable</strong> hourly rate is on a sliding scale of
23
+  <mark>$75 &ndash; $85</mark>. I can also do a per-project rate, beginning at
24
+  <strong>$600</strong>.
25
+</p>
26
+<p>
27
+  Need more information? <a href="/contact/">Hit me up</a>.
28
+</p>
29 29
 
30
-  <h2 class="f2 lh-title">Services</h2>
31
-  <p class="measure lh-copy">
32
-    I can help you work on things like (but not limited to) the following:
33
-  </p>
34
-  <ul class="arrows">
35
-    <li>Improving your blog's layout</li>
36
-    <li>Building a MVP of your app idea</li>
37
-    <li>Review your architecture and ID places to work on</li>
38
-    <li>Secure your server infrastructure</li>
39
-  </ul>
40
-  <p class="measure lh-copy">
41
-    Don't hesistate to reach out and get more clarity as to what it is you need.
42
-    <a href="/contact/">Reach me now</a>.
43
-  </p>
44
-</div>
30
+<h2 class="f2 lh-title">Services</h2>
31
+<p class="measure lh-copy">
32
+  I can help you work on things like (but not limited to) the following:
33
+</p>
34
+<ul class="arrows">
35
+  <li>Improving your blog's layout</li>
36
+  <li>Building a MVP of your app idea</li>
37
+  <li>Review your architecture and ID places to work on</li>
38
+  <li>Secure your server infrastructure</li>
39
+</ul>
40
+<p class="measure lh-copy">
41
+  Don't hesistate to reach out and get more clarity as to what it is you need.
42
+  <a href="/contact/">Reach me now</a>.
43
+</p>

src/_pages/work-freelance.html → src/_pages/work/freelance.html View File


+ 47
- 50
src/_pages/work/home.html View File

@@ -1,59 +1,56 @@
1 1
 ---
2
-layout: bare
3 2
 title: Work
4 3
 permalink: /work/
5 4
 description: |
6 5
   I work primarly as a software developer. I also work in the community as an
7 6
   educator of Afrocentric history whilst studying childhood education.
7
+masthead:
8
+  image: pages/work.jpeg
8 9
 ---
9
-{% img "{{ 'pages/work.jpeg' | image_path }}" class:"masthead" width:"100%" height:"auto" %}
10
-<section role="document">
11
-  <h1 class="f1 lh-title f-headline-l">Work</h1>
12
-  <p class="lead lh-copy">
13
-    I am a <strong>full-stack software engineer</strong> focused on the
14
-    <strong>Web</strong> platform. I also focus on <strong>decolonized
15
-    education</strong> for Black and Brown youth in the realm of history and
16
-    computer science. <a href="/work/resume/">Check my resume</a>.
17
-  </p>
10
+<p class="lead lh-copy">
11
+  I am a <strong>full-stack software engineer</strong> focused on the
12
+  <strong>Web</strong> platform. I also focus on <strong>decolonized
13
+  education</strong> for Black and Brown youth in the realm of history and
14
+  computer science. <a href="/work/resume/">Check my resume</a>.
15
+</p>
18 16
 
19
-  <h2 class="tracked-tight">What I Do</h2>
20
-  <p class="measure lh-copy tj fw5">
21
-    <a href="/portfolio/">View my portfolio</a>
22
-    for deeper dives into projects I've worked on.
23
-  </p>
24
-  <p class="measure lh-copy tj">
25
-    I focus on Web application development in languages like
26
-    <a class="fw7 orange" href="https://www.python.org/">Python</a>,
27
-    <a class="fw7 red" href="https://www.ruby-lang.org/en/">Ruby</a>,
28
-    <a class="fw7 green" href="https://js.org/">JavaScript</a>
29
-    and
30
-    <a class="fw7 purple" href="http://elixir-lang.org/">Elixir</a>.
31
-    I work on building <em>delightful and effective</em> user experiences,
32
-    particularly using <a href="https://emberjs.com">EmberJS</a>.
33
-  </p>
34
-  <p class="measure lh-copy tj">
35
-    I have experience working on Android applications as well. It focused around
36
-    tooling, testing and finding performance bottlenecks in the application and
37
-    library usage within the such.
38
-  </p>
17
+<h2 class="tracked-tight">What I Do</h2>
18
+<p class="measure lh-copy tj fw5">
19
+  <a href="/portfolio/">View my portfolio</a>
20
+  for deeper dives into projects I've worked on.
21
+</p>
22
+<p class="measure lh-copy tj">
23
+  I focus on Web application development in languages like
24
+  <a class="fw7 orange" href="https://www.python.org/">Python</a>,
25
+  <a class="fw7 red" href="https://www.ruby-lang.org/en/">Ruby</a>,
26
+  <a class="fw7 green" href="https://js.org/">JavaScript</a>
27
+  and
28
+  <a class="fw7 purple" href="http://elixir-lang.org/">Elixir</a>.
29
+  I work on building <em>delightful and effective</em> user experiences,
30
+  particularly using <a href="https://emberjs.com">EmberJS</a>.
31
+</p>
32
+<p class="measure lh-copy tj">
33
+  I have experience working on Android applications as well. It focused around
34
+  tooling, testing and finding performance bottlenecks in the application and
35
+  library usage within the such.
36
+</p>
39 37
 
40
-  <h2 class="tracked-tight">Background</h2>
41
-  <p class="lead lh-copy">
42
-    I work as a senior full stack software engineer at
43
-    <a class="purple" href="https://lob.com">Lob</a>.
44
-  </p>
45
-  <p class="lh-copy measure">
46
-    I have worked as a <strong>software engineer</strong> for since 2011
47
-    at companies like <a class="red" href="https://google.com">Google</a>,
48
-    <a class="blue" href="http://horizonmedia.com">Horizon Media</a>,
49
-    <a class="orange" href="http://www.theblsgroup.com/">BLS</a>,
50
-    <a class="red" href="https://shutterstock.com/">Shutterstock</a>,
51
-    <a class="orange" href="https://getclef.com/">Clef</a> and
52
-    <a class="hot-pink" href="https://lyft.com">Lyft</a>.
53
-  </p>
54
-  <p class="lh-copy measure">
55
-    I've done mentoring with youth and adults alike with amazing programs like
56
-    <a href="https://blackgirlscode.com">Black Girls Code</a> and <a
57
-      href="https://yeswecode.com">Yes We Code</a>.
58
-  </p>
59
-</div>
38
+<h2 class="tracked-tight">Background</h2>
39
+<p class="lead lh-copy">
40
+  I work as a senior full stack software engineer at
41
+  <a class="purple" href="https://lob.com">Lob</a>.
42
+</p>
43
+<p class="lh-copy measure">
44
+  I have worked as a <strong>software engineer</strong> for since 2011
45
+  at companies like <a class="red" href="https://google.com">Google</a>,
46
+  <a class="blue" href="http://horizonmedia.com">Horizon Media</a>,
47
+  <a class="orange" href="http://www.theblsgroup.com/">BLS</a>,
48
+  <a class="red" href="https://shutterstock.com/">Shutterstock</a>,
49
+  <a class="orange" href="https://getclef.com/">Clef</a> and
50
+  <a class="hot-pink" href="https://lyft.com">Lyft</a>.
51
+</p>
52
+<p class="lh-copy measure">
53
+  I've done mentoring with youth and adults alike with amazing programs like
54
+  <a href="https://blackgirlscode.com">Black Girls Code</a> and <a
55
+    href="https://yeswecode.com">Yes We Code</a>.
56
+</p>

+ 5
- 8
src/_posts/2014-02-15-kde-and-networking.markdown View File

@@ -12,7 +12,6 @@ tags:
12 12
   - networking
13 13
   - thoughts
14 14
 ---
15
-
16 15
 If you haven't noticed from previous screen shots in my weblog, I use [KDE][1]
17 16
 as my desktop environment on my Ubuntu desktop. Aside from a few bits of
18 17
 software, I use mostly KDE software for my desktop work. It has a really great
@@ -21,7 +20,6 @@ month!) are great too. I might also like it a lot too since a lot of the code
21 20
 base is written with C++.
22 21
 
23 22
 ## Peer Discovery
24
-
25 23
 Whenever you connect to a new network on Windows[^1], it asks for the network
26 24
 type. Now, some might disregard this window, but this determines the amount of
27 25
 information that the platform should expose the new network. If you're a casual
@@ -67,7 +65,7 @@ quickly especially if you don't want to slow down potential network speeds.
67 65
 KDE does have an way of incorporating this, but so far it seems to be
68 66
 only with Samba, for the moment.
69 67
 
70
-{% img "{{'posts/sharing-public-folder.png'|image_path}}" alt:"Sharing a public folder" %}
68
+{% asset posts/sharing-public-folder.png alt="Sharing a public folder" %}
71 69
 
72 70
 I'm working to bring other remote document storage solutions like Dropbox and
73 71
 Google Drive natively into KDE using KIO so it's something to look forward
@@ -83,13 +81,12 @@ for novice users; it could make do with some template profiles and I've
83 81
 considered patching it for just this purpose. But outside of that, I can
84 82
 provide the profile I [use for those interested][4].
85 83
 
86
-{% img "{{'posts/kcm-ufw-shot.png'|image_path}}" alt:"KDE and UFW" %}
87
-![KDE and UFW](/images/kcm-ufw-shot.png)
84
+{% asset posts/kcm-ufw-shot.png alt="KDE and UFW" %}
88 85
 
89 86
 It's a old wife's tale about Linux not getting viruses and trojans but it
90
-doesn't happen enough to the casual desktop user of Linux or BSD (given our growing
91
-size) to not be safe. With `clamav`, one can stay relatively secure and
92
-prevent their systems from known infection streams.
87
+doesn't happen enough to the casual desktop user of Linux or BSD 
88
+(given our growing size) to not be safe. With `clamav`, one can stay
89
+relatively secure and prevent their systems from known infection streams.
93 90
 
94 91
 ---
95 92
 

+ 2
- 2
src/_posts/2014-04-19-starting-with-a-flash.markdown View File

@@ -2,7 +2,7 @@
2 2
 layout: post
3 3
 title: "Starting With a Flash: My New Job"
4 4
 date: 2014-04-19 00:52:12 EDT
5
-category: job
5
+category: work
6 6
 tags:
7 7
   - transition
8 8
   - job
@@ -16,7 +16,7 @@ change of scenery for me since I've been nose-deep in Ruby and C++ work. At
16 16
 Shutterstock, I'd be using these languages and more to help build the best
17 17
 technology there is when it comes to selling royalty-free images.
18 18
 
19
-{% img "{{ 'work/shutterstock.png' | image_path }}" alt:"Shutterstock" width:"auto" height:"auto" %}
19
+{% asset work/shutterstock.png alt=Shutterstock width=auto height=auto %}
20 20
 
21 21
 I'll probably document my time and what I learn there every two weeks or so,
22 22
 you guys would be here all the way (just with no work, haha). One thing I had

+ 5
- 6
src/_posts/2014-09-10-dotfiles.markdown View File

@@ -31,7 +31,7 @@ if it were a toggle-able and configurable machine (in a sense, it is).
31 31
 been quite polluted from the original project and probably might explain for
32 32
 its bit of lag.
33 33
 
34
-{% img "{{ 'konsole-shot.png' | image_path }}" width:"auto" height:"auto" %}
34
+{% asset konsole-shot.png width=auto height=auto %}
35 35
 
36 36
 Every time the prompt opens up or logs in, it registers my GPG keychain with
37 37
 the gpg-agent as well as the SSH keys I'd use with the ssh-agent to make life
@@ -44,7 +44,7 @@ some of these have provided is priceless. Combining this with `cowsay` would
44 44
 be extra but worthwhile in the future. The underlying tool that handles the
45 45
 GPG and SSH keys is called [keychain][]; be sure to check it out.
46 46
 
47
-{% img "{{ 'playing-with-wintermute-readme.gif' | image_path }}" width:"auto" height:"auto" %}
47
+{% asset playing-with-wintermute-readme.gif width=auto height=auto %}
48 48
 
49 49
 ## My Editor(s): `vim` & `subl`
50 50
 I tend to stick to the console when I work on code. Vim has been the editor of
@@ -56,7 +56,7 @@ important part of Vim, and more text editors should embrace that idea. I can
56 56
 go on and on about Vim; it's enough to merit its own post. Little things like
57 57
 key bindings, re-mapped keys and freaking color schemes matter.
58 58
 
59
-{% img "{{ 'konsole-vim-shot.png' | image_path }}" width:"auto" height:"auto" %}
59
+{% asset konsole-vim-shot.png width=auto height=auto %}
60 60
 
61 61
 At times, I do miss the convenience of having a GUI application open and running.
62 62
 That's when the ever-popular [**Sublime Text**][subl] with its
@@ -74,7 +74,7 @@ GNOME2 shell as well as the Lubuntu/LXDE shell and after finding [KDE][], I
74 74
 haven't moved away from it since. I'm using KDE 4.12.3 as provided by
75 75
 [Kubuntu][].