diff --git a/.ruby-version b/.ruby-version index 276cbf9..2bf1c1c 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -2.3.0 +2.3.1 diff --git a/Gemfile b/Gemfile index 4a37583..cd7d8f6 100644 --- a/Gemfile +++ b/Gemfile @@ -1,10 +1,7 @@ source 'http://rubygems.org' -gem 'octopress', '~> 3.0.0' -gem 'narray', git: 'https://github.com/tonyarnold/narray' -gem 'gsl', git: 'https://github.com/tonyarnold/rb-gsl' +gem 'github-pages', group: :jekyll_plugins gem 'html-proofer' - gem 'bourbon' gem 'neat' diff --git a/Gemfile.lock b/Gemfile.lock index ea4ebf0..64b8835 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,16 +1,3 @@ -GIT - remote: https://github.com/tonyarnold/narray - revision: eeb06b030320a222727e41f11a2f0be300f9dd52 - specs: - narray (0.6.0.8) - -GIT - remote: https://github.com/tonyarnold/rb-gsl - revision: 659a95fd9b610c02e38035b956feceb5c29e1ecb - specs: - gsl (1.14.7) - narray (>= 0.5.9) - GEM remote: http://rubygems.org/ specs: @@ -24,11 +11,48 @@ GEM bourbon (4.2.6) sass (~> 3.4) thor (~> 0.19) + coffee-script (2.4.1) + coffee-script-source + execjs + coffee-script-source (1.10.0) colorator (0.1) colored (1.2) ethon (0.8.0) ffi (>= 1.3.0) + execjs (2.7.0) + faraday (0.9.2) + multipart-post (>= 1.2, < 3) ffi (1.9.10) + gemoji (2.1.0) + github-pages (87) + github-pages-health-check (= 1.1.0) + jekyll (= 3.1.6) + jekyll-coffeescript (= 1.0.1) + jekyll-feed (= 0.5.1) + jekyll-gist (= 1.4.0) + jekyll-github-metadata (= 2.0.2) + jekyll-mentions (= 1.1.3) + jekyll-paginate (= 1.1.0) + jekyll-redirect-from (= 0.11.0) + jekyll-sass-converter (= 1.3.0) + jekyll-seo-tag (= 2.0.0) + jekyll-sitemap (= 0.10.0) + jemoji (= 0.6.2) + kramdown (= 1.11.1) + liquid (= 3.0.6) + listen (= 3.0.6) + mercenary (~> 0.3) + rouge (= 1.11.1) + terminal-table (~> 1.4) + github-pages-health-check (1.1.0) + addressable (~> 2.3) + net-dns (~> 0.8) + octokit (~> 4.0) + public_suffix (~> 1.4) + typhoeus (~> 0.7) + html-pipeline (2.4.2) + activesupport (>= 2) + nokogiri (>= 1.4) html-proofer (2.6.1) activesupport (~> 4.2) addressable (~> 2.3) @@ -39,7 +63,7 @@ GEM typhoeus (~> 0.7) yell (~> 2.0) i18n (0.7.0) - jekyll (3.0.1) + jekyll (3.1.6) colorator (~> 0.1) jekyll-sass-converter (~> 1.0) jekyll-watch (~> 1.1) @@ -48,53 +72,69 @@ GEM mercenary (~> 0.3.3) rouge (~> 1.7) safe_yaml (~> 1.0) - jekyll-sass-converter (1.4.0) - sass (~> 3.4) - jekyll-watch (1.3.0) - listen (~> 3.0) + jekyll-coffeescript (1.0.1) + coffee-script (~> 2.2) + jekyll-feed (0.5.1) + jekyll-gist (1.4.0) + octokit (~> 4.2) + jekyll-github-metadata (2.0.2) + jekyll (~> 3.1) + octokit (~> 4.0) + jekyll-mentions (1.1.3) + html-pipeline (~> 2.3) + jekyll (~> 3.0) + jekyll-paginate (1.1.0) + jekyll-redirect-from (0.11.0) + jekyll (>= 2.0) + jekyll-sass-converter (1.3.0) + sass (~> 3.2) + jekyll-seo-tag (2.0.0) + jekyll (~> 3.1) + jekyll-sitemap (0.10.0) + jekyll-watch (1.5.0) + listen (~> 3.0, < 3.1) + jemoji (0.6.2) + gemoji (~> 2.0) + html-pipeline (~> 2.2) + jekyll (>= 3.0) json (1.8.3) - kramdown (1.9.0) + kramdown (1.11.1) liquid (3.0.6) - listen (3.0.5) + listen (3.0.6) rb-fsevent (>= 0.9.3) - rb-inotify (>= 0.9) + rb-inotify (>= 0.9.7) mercenary (0.3.5) mini_portile2 (2.0.0) minitest (5.8.3) + multipart-post (2.0.0) neat (1.7.2) bourbon (>= 4.0) sass (>= 3.3) + net-dns (0.8.0) nokogiri (1.6.7.1) mini_portile2 (~> 2.0.0.rc2) - octopress (3.0.11) - jekyll (>= 2.0) - mercenary (~> 0.3.2) - octopress-deploy - octopress-escape-code (~> 2.0) - octopress-hooks (~> 2.0) - redcarpet (~> 3.0) - titlecase - octopress-deploy (1.3.0) - colorator - octopress-escape-code (2.1.1) - jekyll (~> 3.0) - octopress-hooks (2.6.1) - jekyll (>= 2.0) + octokit (4.4.0) + sawyer (~> 0.7.0, >= 0.5.3) parallel (1.6.1) + public_suffix (1.5.3) rb-fsevent (0.9.7) - rb-inotify (0.9.5) + rb-inotify (0.9.7) ffi (>= 0.5.0) - redcarpet (3.3.4) - rouge (1.10.1) + rouge (1.11.1) safe_yaml (1.0.4) sass (3.4.20) + sawyer (0.7.0) + addressable (>= 2.3.5, < 2.5) + faraday (~> 0.8, < 0.10) + terminal-table (1.7.3) + unicode-display_width (~> 1.1.1) thor (0.19.1) thread_safe (0.3.5) - titlecase (0.1.1) typhoeus (0.8.0) ethon (>= 0.8.0) tzinfo (1.2.2) thread_safe (~> 0.1) + unicode-display_width (1.1.1) yell (2.0.5) PLATFORMS @@ -102,11 +142,9 @@ PLATFORMS DEPENDENCIES bourbon - gsl! + github-pages html-proofer - narray! neat - octopress (~> 3.0.0) BUNDLED WITH - 1.11.2 + 1.13.2 diff --git a/_config.yml b/_config.yml index 8d3a1cc..8ef4298 100644 --- a/_config.yml +++ b/_config.yml @@ -3,14 +3,12 @@ author: James Walker description: "James Walker is an independent developer and hacker" url: http://walkah.net -lsi: true -markdown: redcarpet +markdown: kramdown permalink: blog/:title/ exclude: [Gemfile, Gemfile.lock, vendor] gems: [bourbon, neat] sass: style: compressed -# octopress settings -post_ext: md -page_ext: html +gems: + - jekyll-gist diff --git a/_includes/vcard.html b/_includes/vcard.html index 9276183..c87cd3a 100644 --- a/_includes/vcard.html +++ b/_includes/vcard.html @@ -1,5 +1,5 @@
James Walker -

James Walker (a.k.a. walkah) is an independent developer and hacker. He is a long time Drupal developer, but these days spends more time in Python, Ruby and Javascript.

+

James Walker (a.k.a. walkah) is an independent developer and hacker. He is a long time Drupal developer, but these days spends more time in Python, Ruby and Javascript.

You can follow him on twitter or github.

diff --git a/_layouts/default.html b/_layouts/default.html index 8269178..60ddb3e 100644 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -19,9 +19,9 @@ diff --git a/_plugins/gist_tag.rb b/_plugins/gist_tag.rb deleted file mode 100644 index 74dd3b3..0000000 --- a/_plugins/gist_tag.rb +++ /dev/null @@ -1,100 +0,0 @@ -# A Liquid tag for Jekyll sites that allows embedding Gists and showing code for non-JavaScript enabled browsers and readers. -# by: Brandon Tilly -# Source URL: https://gist.github.com/1027674 -# Post http://brandontilley.com/2011/01/31/gist-tag-for-jekyll.html -# -# Example usage: {% gist 1027674 gist_tag.rb %} //embeds a gist for this plugin - -require 'cgi' -require 'digest/md5' -require 'net/https' -require 'uri' - -module Jekyll - class GistTag < Liquid::Tag - def initialize(tag_name, text, token) - super - @text = text - @cache_disabled = false - @cache_folder = File.expand_path "../.gist-cache", File.dirname(__FILE__) - FileUtils.mkdir_p @cache_folder - end - - def render(context) - if parts = @text.match(/([\d]*) (.*)/) - gist, file = parts[1].strip, parts[2].strip - script_url = script_url_for gist, file - code = get_cached_gist(gist, file) || get_gist_from_web(gist, file) - html_output_for script_url, code - else - "" - end - end - - def html_output_for(script_url, code) - code = CGI.escapeHTML code - <<-HTML -
-
- HTML - end - - def script_url_for(gist_id, filename) - "https://gist.github.com/#{gist_id}.js?file=#{filename}" - end - - def get_gist_url_for(gist, file) - "https://raw.github.com/gist/#{gist}/#{file}" - end - - def cache(gist, file, data) - cache_file = get_cache_file_for gist, file - File.open(cache_file, "w") do |io| - io.write data - end - end - - def get_cached_gist(gist, file) - return nil if @cache_disabled - cache_file = get_cache_file_for gist, file - File.read cache_file if File.exist? cache_file - end - - def get_cache_file_for(gist, file) - bad_chars = /[^a-zA-Z0-9\-_.]/ - gist = gist.gsub bad_chars, '' - file = file.gsub bad_chars, '' - md5 = Digest::MD5.hexdigest "#{gist}-#{file}" - File.join @cache_folder, "#{gist}-#{file}-#{md5}.cache" - end - - def get_gist_from_web(gist, file) - gist_url = get_gist_url_for gist, file - raw_uri = URI.parse gist_url - proxy = ENV['http_proxy'] - if proxy - proxy_uri = URI.parse(proxy) - https = Net::HTTP::Proxy(proxy_uri.host, proxy_uri.port).new raw_uri.host, raw_uri.port - else - https = Net::HTTP.new raw_uri.host, raw_uri.port - end - https.use_ssl = true - https.verify_mode = OpenSSL::SSL::VERIFY_NONE - request = Net::HTTP::Get.new raw_uri.request_uri - data = https.request request - data = data.body - cache gist, file, data unless @cache_disabled - data - end - end - - class GistTagNoCache < GistTag - def initialize(tag_name, text, token) - super - @cache_disabled = true - end - end -end - -Liquid::Template.register_tag('gist', Jekyll::GistTag) -Liquid::Template.register_tag('gistnocache', Jekyll::GistTagNoCache) diff --git a/_plugins/tag_index.rb b/_plugins/tag_index.rb deleted file mode 100644 index fe247d7..0000000 --- a/_plugins/tag_index.rb +++ /dev/null @@ -1,92 +0,0 @@ -module Jekyll - class TagIndex < Page - def initialize(site, base, dir, tag) - @site = site - @base = base - @dir = dir - @name = 'index.html' - self.process(@name) - self.read_yaml(File.join(base, '_layouts'), 'tag_index.html') - self.data['tag'] = tag - tag_title_prefix = site.config['tag_title_prefix'] || 'Posts Tagged “' - tag_title_suffix = site.config['tag_title_suffix'] || '”' - self.data['title'] = "#{tag_title_prefix}#{tag}#{tag_title_suffix}" - end - end - - class TagFeed < Page - def initialize(site, base, tag_dir, tag) - @site = site - @base = base - @dir = tag_dir - @name = 'atom.xml' - self.process(@name) - # Read the YAML data from the layout page. - self.read_yaml(File.join(base, '_layouts'), 'tag_feed.xml') - self.data['tag'] = tag - # Set the title for this page. - tag_title_prefix = site.config['tag_title_prefix'] || 'Posts Tagged “' - tag_title_suffix = site.config['tag_title_suffix'] || '”' - self.data['title'] = "#{tag_title_prefix}#{tag}#{tag_title_suffix}" - # Set the meta-description for this page. - - # Set the correct feed URL. - self.data['feed_url'] = "#{tag_dir}/#{name}" - end - end - - class TagGenerator < Generator - safe true - def generate(site) - if site.layouts.key? 'tag_index' - dir = site.config['tag_dir'] || 'tag' - site.tags.keys.each do |tag| - dest_dir = File.join(dir, tag.gsub(/ /, '-')) - write_tag_index(site, dest_dir, tag) - write_tag_feed(site, dest_dir, tag) - end - end - end - - def write_tag_index(site, dir, tag) - index = TagIndex.new(site, site.source, dir, tag) - index.render(site.layouts, site.site_payload) - index.write(site.dest) - site.pages << index - end - - def write_tag_feed(site, dir, tag) - feed = TagFeed.new(site, site.source, dir, tag) - feed.render(site.layouts, site.site_payload) - feed.write(site.dest) - site.pages << feed - end - - end - # Adds some extra filters used during the category creation process. - module Filters - - # Outputs a list of categories as comma-separated links. This is used - # to output the category list for each post on a category page. - # - # +categories+ is the list of categories to format. - # - # Returns string - # - def tag_links(tags) - tags = tags.sort!.map do |item| - item.gsub!(/ /, '-') - "#{item}" - end - - case tags.length - when 0 - "" - when 1 - tags[0].to_s - else - "#{tags[0...-1].join(', ')}, #{tags[-1]}" - end - end - end -end diff --git a/_posts/2004-06-17-meet-audrey.md b/_posts/2004-06-17-meet-audrey.md index 15deffe..4eb8515 100644 --- a/_posts/2004-06-17-meet-audrey.md +++ b/_posts/2004-06-17-meet-audrey.md @@ -11,5 +11,3 @@ tags: so, i've finally set mine up and gone through these instructions to get a root shell. let the hacking begin! my first task, is that i wanted to use audrey as a digital photo frame - i.e. have it rotate through a bunch of my digital images (stored on my fileserver). after some digging (and disappointment that many projects seem to have disappeared), i came across this site. after some struggling with it (thanks for your help alex!) i managed to get it working the way i wanted. you can almost see the results in the attached photo. - -i'll continue to log any further hacks here. diff --git a/_posts/2012-04-13-using-drush-to-mass-delete-comments.md b/_posts/2012-04-13-using-drush-to-mass-delete-comments.md index faed92d..4c06024 100644 --- a/_posts/2012-04-13-using-drush-to-mass-delete-comments.md +++ b/_posts/2012-04-13-using-drush-to-mass-delete-comments.md @@ -5,20 +5,18 @@ tags: - drupal --- -Like many kind, good-natured geeks, I (yes, I was talking about me) host a number of small sites for friends. Many of those sites run Drupal and several don't get a lot of attention. That is, until spammers find their way around [Mollom](http://mollom.com/). I've seen this happen a few times, but most recently on a Drupal 7 site. In this particular case, the spam comments had been trickling in over a few weeks undetected. Following a burst of recent activity (enough to notice via monitoring), I checked in to find > 60,000 spam comments. +Like many kind, good-natured geeks, I (yes, I was talking about me) host a number of small sites for friends. Many of those sites run Drupal and several don't get a lot of attention. That is, until spammers find their way around [Mollom](http://mollom.com/). I've seen this happen a few times, but most recently on a Drupal 7 site. In this particular case, the spam comments had been trickling in over a few weeks undetected. Following a burst of recent activity (enough to notice via monitoring), I checked in to find > 60,000 spam comments. If this has ever happened to you: you're not alone. At this number of comments, using Drupal's interface (50 comments at a time) isn't really usable. Also, these things tend to happen in bursts - so chances are good there's a block of comments that are all spam (i.e. there haven't been any legitimate comments that you want to save since it started). So, I whipped up a small script here: -{% gist 2379996 %} +{% gist walkah/2379996 %} Here's how to use it: 1. Place the code in a file (say, `comment-rm.php`) in your Drupal directory. -2. Find the `cid` of the first spam comment (exercise left to the reader) and set `$first_comment` to that value. +2. Find the `cid` of the first spam comment (exercise left to the reader) and set `$first_comment` to that value. 3. Run `drush scr comment-rm.php` and go grab a coffee. Hope that helps someone, but at least now I can find it again next time. *Beware*: This deletes comments forever, be careful. - - diff --git a/_sass/_base.scss b/_sass/_base.scss index 0e82f7f..46b8688 100644 --- a/_sass/_base.scss +++ b/_sass/_base.scss @@ -1,4 +1,4 @@ -@import "bourbon"; +@import "bourbon/bourbon"; @font-face { font-family: Typewriter; @@ -21,6 +21,6 @@ $gutter: 1em; //$visual-grid: true; -@import "neat"; +@import "neat/neat"; $mobile: new-breakpoint(max-width 500px 4);