diff --git a/.jekyll-cache/Jekyll/Cache/Jekyll--Cache/b7/9606fb3afea5bd1609ed40b622142f1c98125abcfe89a76a661b0e8e343910 b/.jekyll-cache/Jekyll/Cache/Jekyll--Cache/b7/9606fb3afea5bd1609ed40b622142f1c98125abcfe89a76a661b0e8e343910 index 491d8a6..71254a1 100644 --- a/.jekyll-cache/Jekyll/Cache/Jekyll--Cache/b7/9606fb3afea5bd1609ed40b622142f1c98125abcfe89a76a661b0e8e343910 +++ b/.jekyll-cache/Jekyll/Cache/Jekyll--Cache/b7/9606fb3afea5bd1609ed40b622142f1c98125abcfe89a76a661b0e8e343910 @@ -1 +1 @@ -I"ž{"source"=>"/home/cambonator/Programming/jessecambon.github.io", "destination"=>"/home/cambonator/Programming/jessecambon.github.io/_site", "collections_dir"=>"", "cache_dir"=>".jekyll-cache", "plugins_dir"=>"_plugins", "layouts_dir"=>"_layouts", "data_dir"=>"_data", "includes_dir"=>"_includes", "collections"=>{"posts"=>{"output"=>true, "permalink"=>"/:categories/:year/:month/:day/:title:output_ext"}}, "safe"=>false, "include"=>[".htaccess"], "exclude"=>["README.md", "Gemfile", "Gemfile.lock", "LICENSE.md", "*.Rmd", "*.Rproj", "rmd_config.R", ".sass-cache", ".jekyll-cache", "gemfiles", "node_modules", "vendor/bundle/", "vendor/cache/", "vendor/gems/", "vendor/ruby/"], "keep_files"=>[".git", ".svn"], "encoding"=>"utf-8", "markdown_ext"=>"markdown,mkdown,mkdn,mkd,md", "strict_front_matter"=>false, "show_drafts"=>nil, "limit_posts"=>0, "future"=>false, "unpublished"=>false, "whitelist"=>[], "plugins"=>["jekyll-feed", "jekyll-seo-tag"], "markdown"=>"kramdown", "highlighter"=>"rouge", "lsi"=>false, "excerpt_separator"=>"\n\n", "incremental"=>false, "detach"=>false, "port"=>"4000", "host"=>"127.0.0.1", "baseurl"=>"", "show_dir_listing"=>false, "permalink"=>"date", "paginate_path"=>"/page:num", "timezone"=>nil, "quiet"=>false, "verbose"=>false, "defaults"=>[], "liquid"=>{"error_mode"=>"warn", "strict_filters"=>false, "strict_variables"=>false}, "kramdown"=>{"auto_ids"=>true, "toc_levels"=>"1..6", "entity_output"=>"as_char", "smart_quotes"=>"lsquo,rsquo,ldquo,rdquo", "input"=>"GFM", "hard_wrap"=>false, "guess_lang"=>true, "footnote_nr"=>1, "show_warnings"=>false}, "title"=>"jessecambon", "author"=>"Jesse Cambon", "email"=>"jesse.cambon@gmail.com", "description"=>"Open source data science", "url"=>"https://jessecambon.github.io", "github_username"=>"jessecambon", "linkedin_username"=>"jessecambon", "header_pages"=>["about.md"], "theme"=>"minima", "show_excerpts"=>true, "disqus"=>{"shortname"=>"jessecambon"}, "serving"=>false}:ET \ No newline at end of file +I"ű{"source"=>"/home/cambonator/Programming/jessecambon.github.io", "destination"=>"/home/cambonator/Programming/jessecambon.github.io/_site", "collections_dir"=>"", "cache_dir"=>".jekyll-cache", "plugins_dir"=>"_plugins", "layouts_dir"=>"_layouts", "data_dir"=>"_data", "includes_dir"=>"_includes", "collections"=>{"posts"=>{"output"=>true, "permalink"=>"/:categories/:year/:month/:day/:title:output_ext"}}, "safe"=>false, "include"=>[".htaccess"], "exclude"=>["README.md", "Gemfile", "Gemfile.lock", "LICENSE.md", "*.Rmd", "*.Rproj", "rmd_config.R", ".sass-cache", ".jekyll-cache", "gemfiles", "node_modules", "vendor/bundle/", "vendor/cache/", "vendor/gems/", "vendor/ruby/"], "keep_files"=>[".git", ".svn"], "encoding"=>"utf-8", "markdown_ext"=>"markdown,mkdown,mkdn,mkd,md", "strict_front_matter"=>false, "show_drafts"=>nil, "limit_posts"=>0, "future"=>false, "unpublished"=>false, "whitelist"=>[], "plugins"=>["jekyll-feed", "jekyll-seo-tag"], "markdown"=>"kramdown", "highlighter"=>"rouge", "lsi"=>false, "excerpt_separator"=>"\n\n", "incremental"=>false, "detach"=>false, "port"=>"4000", "host"=>"127.0.0.1", "baseurl"=>"", "show_dir_listing"=>false, "permalink"=>"date", "paginate_path"=>"/page:num", "timezone"=>nil, "quiet"=>false, "verbose"=>false, "defaults"=>[], "liquid"=>{"error_mode"=>"warn", "strict_filters"=>false, "strict_variables"=>false}, "kramdown"=>{"auto_ids"=>true, "toc_levels"=>"1..6", "entity_output"=>"as_char", "smart_quotes"=>"lsquo,rsquo,ldquo,rdquo", "input"=>"GFM", "hard_wrap"=>false, "guess_lang"=>true, "footnote_nr"=>1, "show_warnings"=>false}, "title"=>"Jesse Cambon", "author"=>{"name"=>"Jesse Cambon", "email"=>"jesse.cambon@gmail.com"}, "description"=>"Musings on data and open source software", "url"=>"https://jessecambon.github.io", "header_pages"=>["about.md"], "minima"=>{"date_format"=>"%b %-d %Y", "social_links"=>{"github"=>"jessecambon", "twitter"=>"JesseCambon", "linkedin"=>"jessecambon"}}, "theme"=>"minima", "show_excerpts"=>true, "disqus"=>{"shortname"=>"jessecambon"}, "serving"=>false}:ET \ No newline at end of file diff --git a/.jekyll-cache/Jekyll/Cache/Jekyll--Converters--Markdown/65/50626330af5dbb5cb5d6db10d2df4fff0839907b87184a41a84672621e1f75 b/.jekyll-cache/Jekyll/Cache/Jekyll--Converters--Markdown/65/50626330af5dbb5cb5d6db10d2df4fff0839907b87184a41a84672621e1f75 deleted file mode 100644 index 00aff7b..0000000 --- a/.jekyll-cache/Jekyll/Cache/Jekyll--Converters--Markdown/65/50626330af5dbb5cb5d6db10d2df4fff0839907b87184a41a84672621e1f75 +++ /dev/null @@ -1,2 +0,0 @@ -I"%

Open source data science

-:ET \ No newline at end of file diff --git a/.jekyll-cache/Jekyll/Cache/Jekyll--Converters--Markdown/9b/239fecf353ca78b33a42127113b6ea77a17683c939c4013565d18ac64b55ae b/.jekyll-cache/Jekyll/Cache/Jekyll--Converters--Markdown/9b/239fecf353ca78b33a42127113b6ea77a17683c939c4013565d18ac64b55ae new file mode 100644 index 0000000..757920f --- /dev/null +++ b/.jekyll-cache/Jekyll/Cache/Jekyll--Converters--Markdown/9b/239fecf353ca78b33a42127113b6ea77a17683c939c4013565d18ac64b55ae @@ -0,0 +1,2 @@ +I"5

Musings on data and open source software

+:ET \ No newline at end of file diff --git a/.jekyll-cache/Jekyll/Cache/Jekyll--Converters--Markdown/b5/d18f0439e85db7f915bf756b6a46c9326d21f9c3371cd86ee95dce375efb2d b/.jekyll-cache/Jekyll/Cache/Jekyll--Converters--Markdown/b5/d18f0439e85db7f915bf756b6a46c9326d21f9c3371cd86ee95dce375efb2d new file mode 100644 index 0000000..9cec1fd --- /dev/null +++ b/.jekyll-cache/Jekyll/Cache/Jekyll--Converters--Markdown/b5/d18f0439e85db7f915bf756b6a46c9326d21f9c3371cd86ee95dce375efb2d @@ -0,0 +1,2 @@ +I"

Jesse Cambon

+:ET \ No newline at end of file diff --git a/.jekyll-cache/Jekyll/Cache/Jekyll--Converters--Markdown/db/6c9417eb4aa039d2acfc14f0be4b87ffbce1002a0271c8c2c6e2df764d6e77 b/.jekyll-cache/Jekyll/Cache/Jekyll--Converters--Markdown/db/6c9417eb4aa039d2acfc14f0be4b87ffbce1002a0271c8c2c6e2df764d6e77 deleted file mode 100644 index f01653b..0000000 --- a/.jekyll-cache/Jekyll/Cache/Jekyll--Converters--Markdown/db/6c9417eb4aa039d2acfc14f0be4b87ffbce1002a0271c8c2c6e2df764d6e77 +++ /dev/null @@ -1,2 +0,0 @@ -I"

jessecambon

-:ET \ No newline at end of file diff --git a/Gemfile.lock b/Gemfile.lock index f7a8758..24fe4c4 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -14,7 +14,7 @@ GEM http_parser.rb (0.6.0) i18n (1.8.2) concurrent-ruby (~> 1.0) - jekyll (4.0.0) + jekyll (4.0.1) addressable (~> 2.4) colorator (~> 1.0) em-websocket (~> 0.5) @@ -52,12 +52,12 @@ GEM jekyll-seo-tag (~> 2.1) pathutil (0.16.2) forwardable-extended (~> 2.6) - public_suffix (4.0.4) - rb-fsevent (0.10.3) + public_suffix (4.0.5) + rb-fsevent (0.10.4) rb-inotify (0.10.1) ffi (~> 1.0) rexml (3.2.4) - rouge (3.18.0) + rouge (3.19.0) safe_yaml (1.0.5) sassc (2.3.0) ffi (~> 1.9) diff --git a/_config.yml b/_config.yml index 38371c2..b919bed 100644 --- a/_config.yml +++ b/_config.yml @@ -13,15 +13,18 @@ # you will see them accessed via {{ site.title }}, {{ site.email }}, and so on. # You can create any custom variable you would like, and they will be accessible # in the templates via {{ site.myvariable }}. -title: jessecambon -author: Jesse Cambon -email: jesse.cambon@gmail.com -description: Open source data science +title: Jesse Cambon + +author: + name: Jesse Cambon + email: jesse.cambon@gmail.com + +description: Musings on data and open source software baseurl: "" # the subpath of your site, e.g. /blog url: "https://jessecambon.github.io" # the base hostname & protocol for your site, e.g. http://example.com -#twitter_username: jekyllrb -github_username: jessecambon -linkedin_username: jessecambon +#github_username: jessecambon +#linkedin_username: jessecambon +#twitter_username: JesseCambon header_pages: - about.md @@ -30,8 +33,16 @@ header_pages: # Build settings markdown: kramdown - +minima: + date_format: "%b %-d %Y" + + social_links: + github: jessecambon + twitter: JesseCambon + linkedin: jessecambon + theme: minima + plugins: - jekyll-feed - jekyll-seo-tag diff --git a/_includes/custom-head.html b/_includes/custom-head.html new file mode 100644 index 0000000..8559a67 --- /dev/null +++ b/_includes/custom-head.html @@ -0,0 +1,6 @@ +{% comment %} + Placeholder to allow defining custom head, in principle, you can add anything here, e.g. favicons: + + 1. Head over to https://realfavicongenerator.net/ to add your own favicons. + 2. Customize default _includes/custom-head.html in your source directory and insert the given code snippet. +{% endcomment %} diff --git a/_includes/disqus_comments.html b/_includes/disqus_comments.html new file mode 100644 index 0000000..d9400f2 --- /dev/null +++ b/_includes/disqus_comments.html @@ -0,0 +1,20 @@ +{%- if page.comments != false and jekyll.environment == "production" -%} + +
+ + +{%- endif -%} diff --git a/_includes/footer.html b/_includes/footer.html index 33411d0..83edfc7 100644 --- a/_includes/footer.html +++ b/_includes/footer.html @@ -1,8 +1,37 @@ \ No newline at end of file + + + + diff --git a/_includes/google-analytics.html b/_includes/google-analytics.html new file mode 100644 index 0000000..aeba1a1 --- /dev/null +++ b/_includes/google-analytics.html @@ -0,0 +1,9 @@ + + diff --git a/_includes/head.html b/_includes/head.html new file mode 100644 index 0000000..9ee139f --- /dev/null +++ b/_includes/head.html @@ -0,0 +1,14 @@ + + + + + {%- seo -%} + + {%- feed_meta -%} + {%- if jekyll.environment == 'production' and site.google_analytics -%} + {%- include google-analytics.html -%} + {%- endif -%} + + {%- include custom-head.html -%} + + diff --git a/_includes/header.html b/_includes/header.html new file mode 100644 index 0000000..ed5a382 --- /dev/null +++ b/_includes/header.html @@ -0,0 +1,31 @@ + diff --git a/_includes/social.html b/_includes/social.html new file mode 100644 index 0000000..1d33db8 --- /dev/null +++ b/_includes/social.html @@ -0,0 +1,21 @@ +{%- assign social = site.minima.social_links -%} + + diff --git a/_layouts/default.html b/_layouts/default.html new file mode 100644 index 0000000..58e141b --- /dev/null +++ b/_layouts/default.html @@ -0,0 +1,20 @@ + + + + {%- include head.html -%} + + + + {%- include header.html -%} + +
+
+ {{ content }} +
+
+ + {%- include footer.html -%} + + + + diff --git a/_layouts/home.html b/_layouts/home.html new file mode 100644 index 0000000..622b5e1 --- /dev/null +++ b/_layouts/home.html @@ -0,0 +1,61 @@ +--- +layout: default +--- + +
+ {%- if page.title -%} +

{{ page.title }}

+ {%- endif -%} + + {{ content }} + + + {% if site.paginate %} + {% assign posts = paginator.posts %} + {% else %} + {% assign posts = site.posts %} + {% endif %} + + + {%- if posts.size > 0 -%} + {%- if page.list_title -%} +

{{ page.list_title }}

+ {%- endif -%} + + + {% if site.paginate %} +
+ +
+ {%- endif %} + + {%- endif -%} + +
diff --git a/_layouts/page.html b/_layouts/page.html new file mode 100644 index 0000000..01e4b2a --- /dev/null +++ b/_layouts/page.html @@ -0,0 +1,14 @@ +--- +layout: default +--- +
+ +
+

{{ page.title | escape }}

+
+ +
+ {{ content }} +
+ +
diff --git a/_layouts/post.html b/_layouts/post.html new file mode 100644 index 0000000..c9a03be --- /dev/null +++ b/_layouts/post.html @@ -0,0 +1,38 @@ +--- +layout: default +--- +
+ +
+

{{ page.title | escape }}

+ +
+ +
+ {{ content }} +
+ + {%- if site.disqus.shortname -%} + {%- include disqus_comments.html -%} + {%- endif -%} + + +
diff --git a/_sass/minima.scss b/_sass/minima.scss deleted file mode 100644 index cb0865b..0000000 --- a/_sass/minima.scss +++ /dev/null @@ -1,51 +0,0 @@ -@charset "utf-8"; - -// Define defaults for each variable. - -$base-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default; -$base-font-size: 16px !default; -$base-font-weight: 400 !default; -$small-font-size: $base-font-size * 0.875 !default; -$base-line-height: 1.5 !default; - -$spacing-unit: 30px !default; - -$text-color: #111 !default; -$background-color: #fdfdfd !default; -$brand-color: #2a7ae2 !default; - -$grey-color: #828282 !default; -$grey-color-light: lighten($grey-color, 40%) !default; -$grey-color-dark: darken($grey-color, 25%) !default; - -$table-text-align: left !default; - -// Width of the content area -$content-width: 800px !default; - -$on-palm: 600px !default; -$on-laptop: 800px !default; - -// Use media queries like this: -// @include media-query($on-palm) { -// .wrapper { -// padding-right: $spacing-unit / 2; -// padding-left: $spacing-unit / 2; -// } -// } -@mixin media-query($device) { - @media screen and (max-width: $device) { - @content; - } -} - -@mixin relative-font-size($ratio) { - font-size: $base-font-size * $ratio; -} - -// Import partials. -@import - "minima/base", - "minima/layout", - "minima/syntax-highlighting" -; diff --git a/_sass/minima/_base.scss b/_sass/minima/_base.scss index 3e267b9..a6f104e 100644 --- a/_sass/minima/_base.scss +++ b/_sass/minima/_base.scss @@ -1,3 +1,7 @@ +html { + font-size: $base-font-size; +} + /** * Reset some basic elements */ @@ -6,6 +10,7 @@ p, blockquote, pre, hr, dl, dd, ol, ul, figure { margin: 0; padding: 0; + } @@ -26,6 +31,7 @@ body { display: flex; min-height: 100vh; flex-direction: column; + overflow-wrap: break-word; } @@ -40,7 +46,10 @@ ul, ol, dl, figure, margin-bottom: $spacing-unit / 2; } - +hr { + margin-top: $spacing-unit; + margin-bottom: $spacing-unit; +} /** * `main` element @@ -103,15 +112,15 @@ h1, h2, h3, h4, h5, h6 { * Links */ a { - color: $brand-color; + color: $link-base-color; text-decoration: none; &:visited { - color: darken($brand-color, 15%); + color: $link-visited-color; } &:hover { - color: $text-color; + color: $link-hover-color; text-decoration: underline; } @@ -129,16 +138,19 @@ a { * Blockquotes */ blockquote { - color: $grey-color; - border-left: 4px solid $grey-color-light; + color: $brand-color; + border-left: 4px solid $border-color-01; padding-left: $spacing-unit / 2; @include relative-font-size(1.125); - letter-spacing: -1px; font-style: italic; > :last-child { margin-bottom: 0; } + + i, em { + font-style: normal; + } } @@ -148,10 +160,11 @@ blockquote { */ pre, code { - @include relative-font-size(0.85); - border: 1px solid $grey-color-light; + font-family: $code-font-family; + font-size: 0.9375em; + border: 1px solid $border-color-01; border-radius: 3px; - background-color: #eef; + background-color: $code-background-color; } code { @@ -169,25 +182,33 @@ pre { } } +.highlight { + border-radius: 3px; + background: $code-background-color; + @extend %vertical-rhythm; + + .highlighter-rouge & { + background: $code-background-color; + } +} + /** * Wrapper */ .wrapper { - max-width: -webkit-calc(#{$content-width} - (#{$spacing-unit} * 2)); - max-width: calc(#{$content-width} - (#{$spacing-unit} * 2)); + max-width: calc(#{$content-width} - (#{$spacing-unit})); margin-right: auto; margin-left: auto; - padding-right: $spacing-unit; - padding-left: $spacing-unit; + padding-right: $spacing-unit / 2; + padding-left: $spacing-unit / 2; @extend %clearfix; - @include media-query($on-laptop) { - max-width: -webkit-calc(#{$content-width} - (#{$spacing-unit})); - max-width: calc(#{$content-width} - (#{$spacing-unit})); - padding-right: $spacing-unit / 2; - padding-left: $spacing-unit / 2; + @media screen and (min-width: $on-large) { + max-width: calc(#{$content-width} - (#{$spacing-unit} * 2)); + padding-right: $spacing-unit; + padding-left: $spacing-unit; } } @@ -208,48 +229,54 @@ pre { * Icons */ -.svg-icon { - width: 16px; - height: 16px; - display: inline-block; - fill: #{$grey-color}; - padding-right: 5px; - vertical-align: text-top; +.orange { + color: #f66a0a; } -.social-media-list { - li + li { - padding-top: 5px; - } +.grey { + color: #828282; } +.svg-icon { + width: 16px; + height: 16px; + display: inline-block; + fill: currentColor; + padding: 5px 3px 2px 5px; + vertical-align: text-bottom; +} /** * Tables */ table { - @include relative-font-size(0.85); /* JAC - Added */ margin-bottom: $spacing-unit; width: 100%; text-align: $table-text-align; - color: lighten($text-color, 18%); + color: $table-text-color; border-collapse: collapse; - border: 1px solid $grey-color-light; + border: 1px solid $table-border-color; tr { &:nth-child(even) { - background-color: lighten($grey-color-light, 6%); + background-color: $table-zebra-color; } } th, td { padding: ($spacing-unit / 3) ($spacing-unit / 2); } th { - background-color: lighten($grey-color-light, 3%); - border: 1px solid darken($grey-color-light, 4%); - border-bottom-color: darken($grey-color-light, 12%); + background-color: $table-header-bg-color; + border: 1px solid $table-header-border; } td { - border: 1px solid $grey-color-light; + border: 1px solid $table-border-color; + } + + @include media-query($on-laptop) { + display: block; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + -ms-overflow-style: -ms-autohiding-scrollbar; } } diff --git a/_sass/minima/_layout.scss b/_sass/minima/_layout.scss index c69af11..40d2cd1 100644 --- a/_sass/minima/_layout.scss +++ b/_sass/minima/_layout.scss @@ -2,9 +2,10 @@ * Site header */ .site-header { - border-top: 5px solid $grey-color-dark; - border-bottom: 1px solid $grey-color-light; + border-top: 5px solid $border-color-03; + border-bottom: 1px solid $border-color-01; min-height: $spacing-unit * 1.865; + line-height: $base-line-height * $base-font-size * 2.25; // Positioning context for the mobile navigation icon position: relative; @@ -13,89 +14,104 @@ .site-title { @include relative-font-size(1.625); font-weight: 300; - line-height: $base-line-height * $base-font-size * 2.25; letter-spacing: -1px; margin-bottom: 0; float: left; + @include media-query($on-palm) { + padding-right: 45px; + } + &, &:visited { - color: $grey-color-dark; + color: $site-title-color; } } .site-nav { - float: right; - line-height: $base-line-height * $base-font-size * 2.25; + position: absolute; + top: 9px; + right: $spacing-unit / 2; + background-color: $background-color; + border: 1px solid $border-color-01; + border-radius: 5px; + text-align: right; .nav-trigger { - display: none; + display: none; } .menu-icon { + float: right; + width: 36px; + height: 26px; + line-height: 0; + padding-top: 10px; + text-align: center; + + > svg path { + fill: $border-color-03; + } + } + + label[for="nav-trigger"] { + display: block; + float: right; + width: 36px; + height: 36px; + z-index: 2; + cursor: pointer; + } + + input ~ .trigger { + clear: both; display: none; } + input:checked ~ .trigger { + display: block; + padding-bottom: 5px; + } + .page-link { color: $text-color; line-height: $base-line-height; + display: block; + padding: 5px 10px; // Gaps between nav items, but not on the last one &:not(:last-child) { - margin-right: 20px; + margin-right: 0; } + margin-left: 20px; } - @include media-query($on-palm) { - position: absolute; - top: 9px; - right: $spacing-unit / 2; - background-color: $background-color; - border: 1px solid $grey-color-light; - border-radius: 5px; - text-align: right; + @media screen and (min-width: $on-medium) { + position: static; + float: right; + border: none; + background-color: inherit; label[for="nav-trigger"] { - display: block; - float: right; - width: 36px; - height: 36px; - z-index: 2; - cursor: pointer; + display: none; } .menu-icon { - display: block; - float: right; - width: 36px; - height: 26px; - line-height: 0; - padding-top: 10px; - text-align: center; - - > svg { - fill: $grey-color-dark; - } - } - - input ~ .trigger { - clear: both; display: none; } - input:checked ~ .trigger { + input ~ .trigger { display: block; - padding-bottom: 5px; } .page-link { - display: block; - padding: 5px 10px; + display: inline; + padding: 0; &:not(:last-child) { - margin-right: 0; + margin-right: 20px; } - margin-left: 20px; + margin-left: auto; } } } @@ -106,7 +122,7 @@ * Site footer */ .site-footer { - border-top: 1px solid $grey-color-light; + border-top: 1px solid $border-color-01; padding: $spacing-unit 0; } @@ -115,58 +131,67 @@ margin-bottom: $spacing-unit / 2; } +.feed-subscribe .svg-icon { + padding: 5px 5px 2px 0 +} + .contact-list, .social-media-list { list-style: none; margin-left: 0; } -.footer-col-wrapper { +.footer-col-wrapper, +.social-links { @include relative-font-size(0.9375); - color: $grey-color; - margin-left: -$spacing-unit / 2; - @extend %clearfix; + color: $brand-color; } .footer-col { - float: left; margin-bottom: $spacing-unit / 2; - padding-left: $spacing-unit / 2; -} - -.footer-col-1 { - width: -webkit-calc(35% - (#{$spacing-unit} / 2)); - width: calc(35% - (#{$spacing-unit} / 2)); } +.footer-col-1, .footer-col-2 { - width: -webkit-calc(20% - (#{$spacing-unit} / 2)); - width: calc(20% - (#{$spacing-unit} / 2)); + width: calc(50% - (#{$spacing-unit} / 2)); } .footer-col-3 { - width: -webkit-calc(45% - (#{$spacing-unit} / 2)); - width: calc(45% - (#{$spacing-unit} / 2)); + width: calc(100% - (#{$spacing-unit} / 2)); } -@include media-query($on-laptop) { - .footer-col-1, +@media screen and (min-width: $on-large) { + .footer-col-1 { + width: calc(35% - (#{$spacing-unit} / 2)); + } + .footer-col-2 { - width: -webkit-calc(50% - (#{$spacing-unit} / 2)); - width: calc(50% - (#{$spacing-unit} / 2)); + width: calc(20% - (#{$spacing-unit} / 2)); } .footer-col-3 { - width: -webkit-calc(100% - (#{$spacing-unit} / 2)); - width: calc(100% - (#{$spacing-unit} / 2)); + width: calc(45% - (#{$spacing-unit} / 2)); } } -@include media-query($on-palm) { +@media screen and (min-width: $on-medium) { + .footer-col-wrapper { + display: flex + } + .footer-col { - float: none; - width: -webkit-calc(100% - (#{$spacing-unit} / 2)); - width: calc(100% - (#{$spacing-unit} / 2)); + width: calc(100% - (#{$spacing-unit} / 2)); + padding: 0 ($spacing-unit / 2); + + &:first-child { + padding-right: $spacing-unit / 2; + padding-left: 0; + } + + &:last-child { + padding-right: 0; + padding-left: $spacing-unit / 2; + } } } @@ -177,7 +202,7 @@ */ .page-content { padding: $spacing-unit 0; - flex: 1; + flex: 1 0 auto; } .page-heading { @@ -199,7 +224,7 @@ .post-meta { font-size: $small-font-size; - color: $grey-color; + color: $brand-color; } .post-link { @@ -216,40 +241,102 @@ margin-bottom: $spacing-unit; } -.post-title { +.post-title, +.post-content h1 { @include relative-font-size(2.625); letter-spacing: -1px; - line-height: 1; + line-height: 1.15; - @include media-query($on-laptop) { - @include relative-font-size(2.25); + @media screen and (min-width: $on-large) { + @include relative-font-size(2.625); } } .post-content { margin-bottom: $spacing-unit; + h1, h2, h3 { margin-top: $spacing-unit * 2 } + h4, h5, h6 { margin-top: $spacing-unit } + h2 { - @include relative-font-size(2); + @include relative-font-size(1.75); - @include media-query($on-laptop) { - @include relative-font-size(1.75); + @media screen and (min-width: $on-large) { + @include relative-font-size(2); } } h3 { - @include relative-font-size(1.625); + @include relative-font-size(1.375); - @include media-query($on-laptop) { - @include relative-font-size(1.375); + @media screen and (min-width: $on-large) { + @include relative-font-size(1.625); } } h4 { @include relative-font-size(1.25); + } + + h5 { + @include relative-font-size(1.125); + } + h6 { + @include relative-font-size(1.0625); + } +} + - @include media-query($on-laptop) { - @include relative-font-size(1.125); +.social-media-list { + display: table; + margin: 0 auto; + li { + float: left; + margin: 5px 10px 5px 0; + &:last-of-type { margin-right: 0 } + a { + display: block; + padding: $spacing-unit / 4; + border: 1px solid $border-color-01; + &:hover { border-color: $border-color-02 } } } } + + + +/** + * Pagination navbar + */ +.pagination { + margin-bottom: $spacing-unit; + @extend .social-media-list; + li { + a, div { + min-width: 41px; + text-align: center; + box-sizing: border-box; + } + div { + display: block; + padding: $spacing-unit / 4; + border: 1px solid transparent; + + &.pager-edge { + color: $border-color-01; + border: 1px dashed; + } + } + } +} + + + +/** + * Grid helpers + */ +@media screen and (min-width: $on-large) { + .one-half { + width: calc(50% - (#{$spacing-unit} / 2)); + } +} diff --git a/_sass/minima/custom-styles.scss b/_sass/minima/custom-styles.scss new file mode 100644 index 0000000..7c1417f --- /dev/null +++ b/_sass/minima/custom-styles.scss @@ -0,0 +1,2 @@ +// Placeholder to allow defining custom styles that override everything else. +// (Use `_sass/minima/custom-variables.scss` to override variable defaults) diff --git a/_sass/minima/custom-variables.scss b/_sass/minima/custom-variables.scss new file mode 100644 index 0000000..2a2d0fa --- /dev/null +++ b/_sass/minima/custom-variables.scss @@ -0,0 +1 @@ +// Placeholder to allow overriding predefined variables smoothly. diff --git a/_sass/minima/initialize.scss b/_sass/minima/initialize.scss new file mode 100644 index 0000000..b7f5eda --- /dev/null +++ b/_sass/minima/initialize.scss @@ -0,0 +1,50 @@ +@charset "utf-8"; + +// Define defaults for each variable. + +$base-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Segoe UI Symbol", "Segoe UI Emoji", "Apple Color Emoji", Roboto, Helvetica, Arial, sans-serif !default; +$code-font-family: "Menlo", "Inconsolata", "Consolas", "Roboto Mono", "Ubuntu Mono", "Liberation Mono", "Courier New", monospace; +$base-font-size: 16px !default; +$base-font-weight: 400 !default; +$small-font-size: $base-font-size * 0.875 !default; +$base-line-height: 1.5 !default; + +$spacing-unit: 30px !default; + +$table-text-align: left !default; + +// Width of the content area +$content-width: 800px !default; + +$on-palm: 600px !default; +$on-laptop: 800px !default; + +$on-medium: $on-palm !default; +$on-large: $on-laptop !default; + +// Use media queries like this: +// @include media-query($on-palm) { +// .wrapper { +// padding-right: $spacing-unit / 2; +// padding-left: $spacing-unit / 2; +// } +// } +// Notice the following mixin uses max-width, in a deprecated, desktop-first +// approach, whereas media queries used elsewhere now use min-width. +@mixin media-query($device) { + @media screen and (max-width: $device) { + @content; + } +} + +@mixin relative-font-size($ratio) { + font-size: #{$ratio}rem; +} + +// Import pre-styling-overrides hook and style-partials. +@import + "minima/custom-variables", // Hook to override predefined variables. + "minima/base", // Defines element resets. + "minima/layout", // Defines structure and style based on CSS selectors. + "minima/custom-styles" // Hook to override existing styles. +; diff --git a/_sass/minima/_syntax-highlighting.scss b/_sass/minima/skins/classic.scss similarity index 73% rename from _sass/minima/_syntax-highlighting.scss rename to _sass/minima/skins/classic.scss index bccdb89..c6dc292 100644 --- a/_sass/minima/_syntax-highlighting.scss +++ b/_sass/minima/skins/classic.scss @@ -1,14 +1,34 @@ -/** - * Syntax highlighting styles - */ -.highlight { - background: #fff; - @extend %vertical-rhythm; +@charset "utf-8"; + +$brand-color: #828282 !default; +$brand-color-light: lighten($brand-color, 40%) !default; +$brand-color-dark: darken($brand-color, 25%) !default; + +$site-title-color: $brand-color-dark !default; + +$text-color: #111111 !default; +$background-color: #fdfdfd !default; +$code-background-color: #eeeeff !default; + +$link-base-color: #2a7ae2 !default; +$link-visited-color: darken($link-base-color, 15%) !default; +$link-hover-color: $text-color !default; - .highlighter-rouge & { - background: #eef; - } +$border-color-01: $brand-color-light !default; +$border-color-02: lighten($brand-color, 35%) !default; +$border-color-03: $brand-color-dark !default; +$table-text-color: lighten($text-color, 18%) !default; +$table-zebra-color: lighten($brand-color, 46%) !default; +$table-header-bg-color: lighten($brand-color, 43%) !default; +$table-header-border: lighten($brand-color, 37%) !default; +$table-border-color: $border-color-01 !default; + + +// Syntax highlighting styles should be adjusted appropriately for every "skin" +// ---------------------------------------------------------------------------- + +.highlight { .c { color: #998; font-style: italic } // Comment .err { color: #a61717; background-color: #e3d2d2 } // Error .k { font-weight: bold } // Keyword diff --git a/_sass/minima/skins/dark.scss b/_sass/minima/skins/dark.scss new file mode 100644 index 0000000..39b893f --- /dev/null +++ b/_sass/minima/skins/dark.scss @@ -0,0 +1,95 @@ +@charset "utf-8"; + +$brand-color: #999999 !default; +$brand-color-light: lighten($brand-color, 5%) !default; +$brand-color-dark: darken($brand-color, 35%) !default; + +$site-title-color: $brand-color-light !default; + +$text-color: #bbbbbb !default; +$background-color: #181818 !default; +$code-background-color: #212121 !default; + +$link-base-color: #79b8ff !default; +$link-visited-color: $link-base-color !default; +$link-hover-color: $text-color !default; + +$border-color-01: $brand-color-dark !default; +$border-color-02: $brand-color-light !default; +$border-color-03: $brand-color !default; + +$table-text-color: $text-color !default; +$table-zebra-color: lighten($background-color, 4%) !default; +$table-header-bg-color: lighten($background-color, 10%) !default; +$table-header-border: lighten($background-color, 21%) !default; +$table-border-color: $border-color-01 !default; + + +// Syntax highlighting styles should be adjusted appropriately for every "skin" +// List of tokens: https://github.com/rouge-ruby/rouge/wiki/List-of-tokens +// Some colors come from Material Theme Darker: +// https://github.com/material-theme/vsc-material-theme/blob/master/scripts/generator/settings/specific/darker-hc.ts +// https://github.com/material-theme/vsc-material-theme/blob/master/scripts/generator/color-set.ts +// ---------------------------------------------------------------------------- + +.highlight { + .c { color: #545454; font-style: italic } // Comment + .err { color: #f07178; background-color: #e3d2d2 } // Error + .k { color: #89DDFF; font-weight: bold } // Keyword + .o { font-weight: bold } // Operator + .cm { color: #545454; font-style: italic } // Comment.Multiline + .cp { color: #545454; font-weight: bold } // Comment.Preproc + .c1 { color: #545454; font-style: italic } // Comment.Single + .cs { color: #545454; font-weight: bold; font-style: italic } // Comment.Special + .gd { color: #000; background-color: #fdd } // Generic.Deleted + .gd .x { color: #000; background-color: #faa } // Generic.Deleted.Specific + .ge { font-style: italic } // Generic.Emph + .gr { color: #f07178 } // Generic.Error + .gh { color: #999 } // Generic.Heading + .gi { color: #000; background-color: #dfd } // Generic.Inserted + .gi .x { color: #000; background-color: #afa } // Generic.Inserted.Specific + .go { color: #888 } // Generic.Output + .gp { color: #555 } // Generic.Prompt + .gs { font-weight: bold } // Generic.Strong + .gu { color: #aaa } // Generic.Subheading + .gt { color: #f07178 } // Generic.Traceback + .kc { font-weight: bold } // Keyword.Constant + .kd { font-weight: bold } // Keyword.Declaration + .kp { font-weight: bold } // Keyword.Pseudo + .kr { font-weight: bold } // Keyword.Reserved + .kt { color: #FFCB6B; font-weight: bold } // Keyword.Type + .m { color: #F78C6C } // Literal.Number + .s { color: #C3E88D } // Literal.String + .na { color: #008080 } // Name.Attribute + .nb { color: #EEFFFF } // Name.Builtin + .nc { color: #FFCB6B; font-weight: bold } // Name.Class + .no { color: #008080 } // Name.Constant + .ni { color: #800080 } // Name.Entity + .ne { color: #900; font-weight: bold } // Name.Exception + .nf { color: #82AAFF; font-weight: bold } // Name.Function + .nn { color: #555 } // Name.Namespace + .nt { color: #FFCB6B } // Name.Tag + .nv { color: #EEFFFF } // Name.Variable + .ow { font-weight: bold } // Operator.Word + .w { color: #EEFFFF } // Text.Whitespace + .mf { color: #F78C6C } // Literal.Number.Float + .mh { color: #F78C6C } // Literal.Number.Hex + .mi { color: #F78C6C } // Literal.Number.Integer + .mo { color: #F78C6C } // Literal.Number.Oct + .sb { color: #C3E88D } // Literal.String.Backtick + .sc { color: #C3E88D } // Literal.String.Char + .sd { color: #C3E88D } // Literal.String.Doc + .s2 { color: #C3E88D } // Literal.String.Double + .se { color: #EEFFFF } // Literal.String.Escape + .sh { color: #C3E88D } // Literal.String.Heredoc + .si { color: #C3E88D } // Literal.String.Interpol + .sx { color: #C3E88D } // Literal.String.Other + .sr { color: #C3E88D } // Literal.String.Regex + .s1 { color: #C3E88D } // Literal.String.Single + .ss { color: #C3E88D } // Literal.String.Symbol + .bp { color: #999 } // Name.Builtin.Pseudo + .vc { color: #FFCB6B } // Name.Variable.Class + .vg { color: #EEFFFF } // Name.Variable.Global + .vi { color: #EEFFFF } // Name.Variable.Instance + .il { color: #F78C6C } // Literal.Number.Integer.Long +} diff --git a/_sass/minima/skins/solarized-dark.scss b/_sass/minima/skins/solarized-dark.scss new file mode 100644 index 0000000..f3b1f38 --- /dev/null +++ b/_sass/minima/skins/solarized-dark.scss @@ -0,0 +1,4 @@ +@charset "utf-8"; + +$sol-is-dark: true; +@import "minima/skins/solarized"; diff --git a/_sass/minima/skins/solarized.scss b/_sass/minima/skins/solarized.scss new file mode 100644 index 0000000..6253d69 --- /dev/null +++ b/_sass/minima/skins/solarized.scss @@ -0,0 +1,140 @@ +@charset "utf-8"; + +// Solarized skin +// ============== +// Created by Sander Voerman using the Solarized +// color scheme by Ethan Schoonover . + +// This style sheet implements two options for the minima.skin setting: +// "solarized" for light mode and "solarized-dark" for dark mode. +$sol-is-dark: false !default; + + +// Color scheme +// ------------ +// The inline comments show the canonical L*a*b values for each color. + +$sol-base03: #002b36; // 15 -12 -12 +$sol-base02: #073642; // 20 -12 -12 +$sol-base01: #586e75; // 45 -07 -07 +$sol-base00: #657b83; // 50 -07 -07 +$sol-base0: #839496; // 60 -06 -03 +$sol-base1: #93a1a1; // 65 -05 -02 +$sol-base2: #eee8d5; // 92 -00 10 +$sol-base3: #fdf6e3; // 97 00 10 +$sol-yellow: #b58900; // 60 10 65 +$sol-orange: #cb4b16; // 50 50 55 +$sol-red: #dc322f; // 50 65 45 +$sol-magenta: #d33682; // 50 65 -05 +$sol-violet: #6c71c4; // 50 15 -45 +$sol-blue: #268bd2; // 55 -10 -45 +$sol-cyan: #2aa198; // 60 -35 -05 +$sol-green: #859900; // 60 -20 65 + +$sol-mono3: $sol-base3; +$sol-mono2: $sol-base2; +$sol-mono1: $sol-base1; +$sol-mono00: $sol-base00; +$sol-mono01: $sol-base01; + +@if $sol-is-dark { + $sol-mono3: $sol-base03; + $sol-mono2: $sol-base02; + $sol-mono1: $sol-base01; + $sol-mono00: $sol-base0; + $sol-mono01: $sol-base1; +} + + +// Minima color variables +// ---------------------- + +$brand-color: $sol-mono1 !default; +$brand-color-light: mix($sol-mono1, $sol-mono3) !default; +$brand-color-dark: $sol-mono00 !default; + +$site-title-color: $sol-mono00 !default; + +$text-color: $sol-mono01 !default; +$background-color: $sol-mono3 !default; +$code-background-color: $sol-mono2 !default; + +$link-base-color: $sol-blue !default; +$link-visited-color: mix($sol-blue, $sol-mono00) !default; +$link-hover-color: $sol-mono00 !default; + +$border-color-01: $brand-color-light !default; +$border-color-02: $sol-mono1 !default; +$border-color-03: $sol-mono00 !default; + +$table-text-color: $sol-mono00 !default; +$table-zebra-color: mix($sol-mono2, $sol-mono3) !default; +$table-header-bg-color: $sol-mono2 !default; +$table-header-border: $sol-mono1 !default; +$table-border-color: $sol-mono1 !default; + + +// Syntax highlighting styles +// -------------------------- + +.highlight { + .c { color: $sol-mono1; font-style: italic } // Comment + .err { color: $sol-red } // Error + .k { color: $sol-mono01; font-weight: bold } // Keyword + .o { color: $sol-mono01; font-weight: bold } // Operator + .cm { color: $sol-mono1; font-style: italic } // Comment.Multiline + .cp { color: $sol-mono1; font-weight: bold } // Comment.Preproc + .c1 { color: $sol-mono1; font-style: italic } // Comment.Single + .cs { color: $sol-mono1; font-weight: bold; font-style: italic } // Comment.Special + .gd { color: $sol-red } // Generic.Deleted + .gd .x { color: $sol-red } // Generic.Deleted.Specific + .ge { color: $sol-mono00; font-style: italic } // Generic.Emph + .gr { color: $sol-red } // Generic.Error + .gh { color: $sol-mono1 } // Generic.Heading + .gi { color: $sol-green } // Generic.Inserted + .gi .x { color: $sol-green } // Generic.Inserted.Specific + .go { color: $sol-mono00 } // Generic.Output + .gp { color: $sol-mono00 } // Generic.Prompt + .gs { color: $sol-mono01; font-weight: bold } // Generic.Strong + .gu { color: $sol-mono1 } // Generic.Subheading + .gt { color: $sol-red } // Generic.Traceback + .kc { color: $sol-mono01; font-weight: bold } // Keyword.Constant + .kd { color: $sol-mono01; font-weight: bold } // Keyword.Declaration + .kp { color: $sol-mono01; font-weight: bold } // Keyword.Pseudo + .kr { color: $sol-mono01; font-weight: bold } // Keyword.Reserved + .kt { color: $sol-violet; font-weight: bold } // Keyword.Type + .m { color: $sol-cyan } // Literal.Number + .s { color: $sol-magenta } // Literal.String + .na { color: $sol-cyan } // Name.Attribute + .nb { color: $sol-blue } // Name.Builtin + .nc { color: $sol-violet; font-weight: bold } // Name.Class + .no { color: $sol-cyan } // Name.Constant + .ni { color: $sol-violet } // Name.Entity + .ne { color: $sol-violet; font-weight: bold } // Name.Exception + .nf { color: $sol-blue; font-weight: bold } // Name.Function + .nn { color: $sol-mono00 } // Name.Namespace + .nt { color: $sol-blue } // Name.Tag + .nv { color: $sol-cyan } // Name.Variable + .ow { color: $sol-mono01; font-weight: bold } // Operator.Word + .w { color: $sol-mono1 } // Text.Whitespace + .mf { color: $sol-cyan } // Literal.Number.Float + .mh { color: $sol-cyan } // Literal.Number.Hex + .mi { color: $sol-cyan } // Literal.Number.Integer + .mo { color: $sol-cyan } // Literal.Number.Oct + .sb { color: $sol-magenta } // Literal.String.Backtick + .sc { color: $sol-magenta } // Literal.String.Char + .sd { color: $sol-magenta } // Literal.String.Doc + .s2 { color: $sol-magenta } // Literal.String.Double + .se { color: $sol-magenta } // Literal.String.Escape + .sh { color: $sol-magenta } // Literal.String.Heredoc + .si { color: $sol-magenta } // Literal.String.Interpol + .sx { color: $sol-magenta } // Literal.String.Other + .sr { color: $sol-green } // Literal.String.Regex + .s1 { color: $sol-magenta } // Literal.String.Single + .ss { color: $sol-magenta } // Literal.String.Symbol + .bp { color: $sol-mono1 } // Name.Builtin.Pseudo + .vc { color: $sol-cyan } // Name.Variable.Class + .vg { color: $sol-cyan } // Name.Variable.Global + .vi { color: $sol-cyan } // Name.Variable.Instance + .il { color: $sol-cyan } // Literal.Number.Integer.Long +} diff --git a/_site/2019/11/11/tidygeocoder-demo.html b/_site/2019/11/11/tidygeocoder-demo.html index 5976511..b8b6fbe 100644 --- a/_site/2019/11/11/tidygeocoder-demo.html +++ b/_site/2019/11/11/tidygeocoder-demo.html @@ -3,8 +3,8 @@ -Geocoding with Tidygeocoder | jessecambon - +Geocoding with Tidygeocoder | Jesse Cambon + @@ -12,16 +12,17 @@ - + +{"@type":"BlogPosting","url":"https://jessecambon.github.io/2019/11/11/tidygeocoder-demo.html","mainEntityOfPage":{"@type":"WebPage","@id":"https://jessecambon.github.io/2019/11/11/tidygeocoder-demo.html"},"author":{"@type":"Person","name":"Jesse Cambon"},"headline":"Geocoding with Tidygeocoder","dateModified":"2019-11-11T00:00:00-05:00","datePublished":"2019-11-11T00:00:00-05:00","description":"Tidygeocoder is a newly published R package which provides a tidyverse-style interface for geocoding. It returns latitude and longitude coordinates in tibble format from addresses using the US Census or Nominatim (OSM) geocoder services. In this post I will demonstrate how to use it for plotting a few Washington, DC landmarks on a map in honor of the recent Washington Nationals World Series win.","@context":"https://schema.org"} - -