My Blog
My blog.
Setup
git clone https://github.com/ashfurrow/blog.git
cd blog
bundle install
rake
Then navigate to http://0.0.0.0:4567.
Contributing
Contributions, such as typo corrections or bug reports, are very welcome! Feel free to open an issue or make a pull request to the master
branch. All blog posts are written in Markdown in the source/blog/
directory, which gets deployed automatically by Travis CI when a pull request is merged. See Server Setup below.
License
This work by Ash Furrow is licensed under a Creative Commons Attribution 4.0 International License.
Code I've written is licensed under MIT. Other components such as Bootstrap or the original blog theme have their own licenses.
Thanks
Thanks to the following people and projects:
- Orta Therox
- Katarina Batina
- Tom Creighton
- Middleman
- Clean Blog Theme
- middleman-gh-pages
- middleman-syntax
- middleman-inliner
- middleman-search
- loadCSS
- Font Awesome
- This colour
- This colour scheme
- Tutorial on static site search
- s3cmd
- vertical timeline jquery thingy
- @CloudyConway
- @CrookedCosmos
- IcoMoon
- CloudFlare
Photo Credits
All banner (full-width) images on the site are my own unless they link to an external source. I release my photos under the same license as this blog; the licenses of others' work vary.
I'd like to thank the following contributors.
Photo | Photographer |
---|---|
Main banner on Portfio. | Andrey Tochilin |
"Software" banner on Portfolio. | Nick Simmons |
Blogging image on Portfolio | Pete O'Shea |
Recent blog post header backgrounds | Cloudy Conway (license) and Crooked Cosmos (CC0) |
Server Setup
The site is served from S3, but through CloudFlare's CDN. The CDN caches everything on edges. These edges respect the caching header set on individual files. CloudFlare also sets a browser cache expiration of 30 minutes for all content (if a longer one is not specified, see below).
After deploying to the gh-pages branch, Cloudflare's cached content is invalidated.
Search
Search is done using lunrjs through the middleman-search plugin. In summary:
- Activation and configuration.
- Inclusion in
all.js
sprockets file. - jQuery to connect the search box to lunrjs.
- Set up for search box and results.
Or check out this blog post.