cboettig / labnotebook Goto Github PK
View Code? Open in Web Editor NEW:notebook: Source code and version history for my online lab notebook
Home Page: http://www.carlboettiger.info
License: Creative Commons Zero v1.0 Universal
:notebook: Source code and version history for my online lab notebook
Home Page: http://www.carlboettiger.info
License: Creative Commons Zero v1.0 Universal
# labnotebook Sources for <https://www.carlboettiger.info> - Written in [Blogdown](https://github.com/rstudio/blogdown) using the [Hugo](https://hugodocs.info) static site generator. - Deployed on [Netlify](https://netlify.com)
Wait, custom domain names are free on github? And I thought AWS S3 static sites were a good deal. Why host a static website anywhere else?
I wonder how their CDNs compare, etc.
See BootstrapCDN
Any different than simply using Cloudflare?
Trick is to have the metadata handle the case of no modification date successfully (e.g. by copying the date published then instead?)
either prune down category list or just eliminate categories and rely on tags alone
I like your installation instructions; I've followed them, with minor changes, and they seem to work well. The minor changes I made were changes to commands in order to sandbox the installation.
I installed everything using RVM. If you're using Ubuntu 12.04, you should be able to install RVM with
sudo apt-get install ruby-rvm
RVM has nice capabilities for sandboxing Ruby installations, so if someone wants to try out your site, they don't have to mess with their own Ruby installation. To replicate your setup, after installing RVM, you could then do the following:
rvm install 1.9.1 # Installs a sandboxed version of Ruby 1.9.1; system copy of Ruby still exists
rvm create gemset carlboettiger_labnotebook # Creates a sandboxed Ruby 1.9.1 install
# This sandboxed Ruby 1.9.1 installation has its own gems, distinct from RVM's root copy
# of Ruby 1.9.1, AND the system Ruby install
rvm use 1.9.1@carlboettiger_labnotebook
Note that every time you start up your terminal, and you want to use this particular Ruby installation, you'll need to type
rvm use 1.9.1@carlboettiger_labnotebook
so you select the right Ruby installation; otherwise, it will default to the RVM default. (You can also have RVM use your system Ruby installation via
rvm use system
See the RVM docs for further details about RVM.)
Your gem installation instructions will install gems for multiple users, altering the global configuration. It would be better to replace
sudo gem install jekyll feedzirra nokogiri twitter octokit pandoc-ruby
with
gem install jekyll feedzirra nokogiri twitter octokit pandoc-ruby # no sudo!
which will limit the installation to a local, single-user install. It will also make the installation more accessible to users who don't have sudo privileges. (I don't have them at work, for instance.)
Both of these recommendations should make the installation safer for interested users.
place visitors can get a snapshot of my openscience activities, such as participation in science online and other conferences, ropensci project , and links to the most relevant posts in the ropensci tag?
Also
acknowledge features:
Note: Not sure how to keep vita easy to maintain (e.g. markdown) and rdfa information as well. Perhaps will need to be automatically generated like other bibliography entries in posts, e.g. through knitcitations.
Wow, ruby+github+jekyll make the web a different place.
Ruby wrapper for the Google Analytics API
tutorial
A bit of liquid code should give a nice customizable plugin for displaying analytics stats when jekyll builds the site.
0000-0002-1642-628X
The rss & email subscribe buttons for a single disqus thread on a post may be confused with those for the blog as a whole, and should possibly be removed.
Also enable mathjax support in disqus and markdown using a bit of jquery.
Use fonts and icons from the amazing FontAwesome
For some reason I cannot get Jekyll to have my twitter extension correctly source in externally provided credentials, even though it works just fine to do so using require
from irb
last commit of twitter_feed code
Also see issue #25
Ideally would graphically capture the idea that categories should be seen as separate leather-bound notebooks on a shelf, and selecting each lists the entries in that category as a table of contents. Might make use of twitter-bootstrap javascript for a dynamic feel.
Could consider some twitter-bootstrap accordion folding for tags list too.
add pingdom public page link on info page? http://stats.pingdom.com/fy1sae94ydyi
add cloudflare acknowledgement? (Currently testing if cloudflare additional performance (beyond CDN) improves site load times).
Also twitter now requires even public search by bots be authenticated, so this had to be added.
e.g. see the javascript-based examples here:
http://www.kryogenix.org/code/browser/sorttable/
HTML5 allows tags to be unclosed, e.g. <meta charset="utf-8">
instead of <meta charset="utf-8" />
but this is not valid XML.
See:
Note that tags with no content must be closed with />
(like the meta
example) while tags with content must get a normal closing (<li> item </li>
etc) .
HTML5 spec is kinda logical since closing is syntax redundant even though not closing is not valid XML, see SO question for discussion.
Tables are always full width:
http://www.carlboettiger.info/2012/11/09/better-tagging-practices.html
http://www.carlboettiger.info/2012/07/03/notes.html
http://www.carlboettiger.info/2012/05/09/notes.html
http://www.carlboettiger.info/2012/05/16/value-of-information.html
overall smaller tables (smaller fonts too?) might be better.
While I'd rather not clutter my footer, wondering about adding links to my profile on other social networks I frequently use -- in particular, figshare, G+, possibly stackoverflow.
http://fortawesome.github.com/Font-Awesome/
Not urgent since none of the new icons are needed. Icons are even crisper at the defaul 14pt font, and now can enable sub-setting for speed. Also see issue #43 for CDN that includes FontAwesome icons.
Also:
Issues are not preserved as part of the Git repository, so consequently this data is not backed up anywhere else. Would be useful to use the API to generate a markdown file with the issue number and discussion log preserved. Could live in an issues/ directory in the repository.
Effectively integrating these into notebook entries themselves (or a separate page in the notebook for issues logs) is rather another challenge, but also valuable. See http://www.carlboettiger.info/2012/10/05/notes.html
Could make for faster load times without needing javascript.
First, I tried the following setup in RVM:
Ruby 1.9.3p362 (2012-12-25 revision 38607) [x86_64-linux]
with the following locally installed gems:
activesupport (3.1.9)
addressable (2.3.2)
builder (3.1.4)
bundler (1.2.3)
classifier (1.3.3)
curb (0.7.18)
directory_watcher (1.4.1)
faraday (0.8.4)
faraday_middleware (0.9.0)
fast-stemmer (1.0.1)
feedzirra (0.1.3)
hashie (1.2.0)
i18n (0.6.1)
jekyll (0.12.0)
json (1.7.6)
kramdown (0.13.8)
liquid (2.4.1)
loofah (1.2.1)
maruku (0.6.1)
multi_json (1.5.0, 1.2.0)
multipart-post (1.1.5)
netrc (0.7.7)
nokogiri (1.5.6)
octokit (1.20.0)
pandoc-ruby (0.6.0)
posix-spawn (0.3.6)
pygments.rb (0.3.7)
rake (10.0.3)
rdoc (3.12)
rubygems-bundler (1.1.0)
rvm (1.11.3.5)
sax-machine (0.1.0)
simple_oauth (0.2.0)
syntax (1.0.0)
twitter (4.4.2)
yajl-ruby (1.1.0)
These gems should be the gems installed when running
gem install jekyll feedzirra nokogiri twitter octokit pandoc-ruby
I got the following error when I built the notebook using Jekyll:
Configuration from " /home/oxberry1/carl_lab_notebook.git/_config.yml
/home/oxberry1/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:1637:in raise_if_conflicts': Unable to activate activesupport-3.1.9, because multi_json-1.5.0 conflicts with multi_json (< 1.3, >= 1.0) (Gem::LoadError) from /home/oxberry1/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:746:in
activate'
from /home/oxberry1/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:780:in block in activate_dependencies' from /home/oxberry1/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:766:in
each'
from /home/oxberry1/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:766:in activate_dependencies' from /home/oxberry1/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:750:in
activate'
from /home/oxberry1/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/site_ruby/1.9.1/rubygems.rb:212:in rescue in try_activate' from /home/oxberry1/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/site_ruby/1.9.1/rubygems.rb:209:in
try_activate'
from /home/oxberry1/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:59:in rescue in require' from /home/oxberry1/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:35:in
require'
from /home/oxberry1/carl_lab_notebook.git/_plugins/jekyll-labnotebook-plugins/mendeley_feed.rb:1:in <top (required)>' from /home/oxberry1/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in
require'
from /home/oxberry1/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in require' from /home/oxberry1/.rvm/gems/ruby-1.9.3-p362@jekyll_0_12_0/gems/jekyll-0.12.0/lib/jekyll/site.rb:78:in
block (2 levels) in setup'
from /home/oxberry1/.rvm/gems/ruby-1.9.3-p362@jekyll_0_12_0/gems/jekyll-0.12.0/lib/jekyll/site.rb:77:in each' from /home/oxberry1/.rvm/gems/ruby-1.9.3-p362@jekyll_0_12_0/gems/jekyll-0.12.0/lib/jekyll/site.rb:77:in
block in setup'
from /home/oxberry1/.rvm/gems/ruby-1.9.3-p362@jekyll_0_12_0/gems/jekyll-0.12.0/lib/jekyll/site.rb:76:in each' from /home/oxberry1/.rvm/gems/ruby-1.9.3-p362@jekyll_0_12_0/gems/jekyll-0.12.0/lib/jekyll/site.rb:76:in
setup'
from /home/oxberry1/.rvm/gems/ruby-1.9.3-p362@jekyll_0_12_0/gems/jekyll-0.12.0/lib/jekyll/site.rb:31:in initialize' from /home/oxberry1/.rvm/gems/ruby-1.9.3-p362@jekyll_0_12_0/gems/jekyll-0.12.0/bin/jekyll:238:in
new'
from /home/oxberry1/.rvm/gems/ruby-1.9.3-p362@jekyll_0_12_0/gems/jekyll-0.12.0/bin/jekyll:238:in <top (required)>' from /home/oxberry1/.rvm/gems/ruby-1.9.3-p362@jekyll_0_12_0/bin/jekyll:19:in
load'
from /home/oxberry1/.rvm/gems/ruby-1.9.3-p362@jekyll_0_12_0/bin/jekyll:19:in <main>' from /home/oxberry1/.rvm/gems/ruby-1.9.3-p362@jekyll_0_12_0/bin/ruby_noexec_wrapper:14:in
eval'
from /home/oxberry1/.rvm/gems/ruby-1.9.3-p362@jekyll_0_12_0/bin/ruby_noexec_wrapper:14:in `
So I figured I'd try a second installation in RVM:
Ruby 1.9.1p431 (2011-02-18 revision 30908) [x86_64-linux]
*** LOCAL GEMS ***
activesupport (3.1.9)
addressable (2.3.2)
builder (3.1.4)
bundler (1.2.3)
classifier (1.3.3)
curb (0.7.18)
directory_watcher (1.4.1)
faraday (0.8.4)
faraday_middleware (0.9.0)
fast-stemmer (1.0.1)
feedzirra (0.1.3)
hashie (1.2.0)
i18n (0.6.1)
jekyll (0.12.0)
json (1.7.6)
kramdown (0.13.8)
liquid (2.4.1)
loofah (1.2.1)
maruku (0.6.1)
multi_json (1.5.0, 1.2.0)
multipart-post (1.1.5)
netrc (0.7.7)
nokogiri (1.5.6)
octokit (1.20.0)
pandoc-ruby (0.6.0)
posix-spawn (0.3.6)
pygments.rb (0.3.7)
rake (10.0.3)
rdoc (3.12)
rubygems-bundler (1.1.0)
rvm (1.11.3.5)
sax-machine (0.1.0)
simple_oauth (0.2.0)
syntax (1.0.0)
twitter (4.4.2)
yajl-ruby (1.1.0)
Again, these gems should be installed when running the command
gem install jekyll feedzirra nokogiri twitter octokit pandoc-ruby
I got the following error when building the notebook in Jekyll:
Configuration from /home/oxberry1/carl_lab_notebook.git/_config.yml
Building site: /home/oxberry1/carl_lab_notebook.git -> /home/oxberry1/carl_lab_notebook.git/_site
YAML Exception reading 2010-02-09-Comparative-Phylogenetics-Notebook-(from-OWW).markdown: syntax error on line 2, col 22: tags: [model-choice, ]' YAML Exception reading 2010-02-16-Comparative-Phylogenetics-Notebook-(from-OWW).markdown: syntax error on line 2, col 22:
tags: [model-choice, ]'
YAML Exception reading 2010-03-04-Comparative-Phylogenetics-Notebook-(from-OWW).markdown: syntax error on line 2, col 21: `tags: [code-tricks, ]'
Liquid Exception: undefined method sort_by!' for #<Array:0x000000052fdf50> in tags.html /home/oxberry1/carl_lab_notebook.git/_plugins/tag-cloud.rb:75:in
render'
/home/oxberry1/.rvm/gems/ruby-1.9.1-p431@carl_notebook/gems/liquid-2.4.1/lib/liquid/block.rb:94:in block in render_all' /home/oxberry1/.rvm/gems/ruby-1.9.1-p431@carl_notebook/gems/liquid-2.4.1/lib/liquid/block.rb:92:in
collect'
/home/oxberry1/.rvm/gems/ruby-1.9.1-p431@carl_notebook/gems/liquid-2.4.1/lib/liquid/block.rb:92:in render_all' /home/oxberry1/.rvm/gems/ruby-1.9.1-p431@carl_notebook/gems/liquid-2.4.1/lib/liquid/block.rb:82:in
render'
/home/oxberry1/.rvm/gems/ruby-1.9.1-p431@carl_notebook/gems/liquid-2.4.1/lib/liquid/template.rb:124:in render' /home/oxberry1/.rvm/gems/ruby-1.9.1-p431@carl_notebook/gems/liquid-2.4.1/lib/liquid/template.rb:132:in
render!'
/home/oxberry1/.rvm/gems/ruby-1.9.1-p431@carl_notebook/gems/jekyll-0.12.0/lib/jekyll/convertible.rb:79:in do_layout' /home/oxberry1/.rvm/gems/ruby-1.9.1-p431@carl_notebook/gems/jekyll-0.12.0/lib/jekyll/page.rb:100:in
render'
/home/oxberry1/.rvm/gems/ruby-1.9.1-p431@carl_notebook/gems/jekyll-0.12.0/lib/jekyll/site.rb:204:in block in render' /home/oxberry1/.rvm/gems/ruby-1.9.1-p431@carl_notebook/gems/jekyll-0.12.0/lib/jekyll/site.rb:203:in
each'
/home/oxberry1/.rvm/gems/ruby-1.9.1-p431@carl_notebook/gems/jekyll-0.12.0/lib/jekyll/site.rb:203:in render' /home/oxberry1/.rvm/gems/ruby-1.9.1-p431@carl_notebook/gems/jekyll-0.12.0/lib/jekyll/site.rb:41:in
process'
/home/oxberry1/.rvm/gems/ruby-1.9.1-p431@carl_notebook/gems/jekyll-0.12.0/bin/jekyll:264:in <top (required)>' /home/oxberry1/.rvm/gems/ruby-1.9.1-p431@carl_notebook/bin/jekyll:19:in
load'
/home/oxberry1/.rvm/gems/ruby-1.9.1-p431@carl_notebook/bin/jekyll:19:in <main>' /home/oxberry1/.rvm/gems/ruby-1.9.1-p431@carl_notebook/bin/ruby_noexec_wrapper:14:in
eval'
/home/oxberry1/.rvm/gems/ruby-1.9.1-p431@carl_notebook/bin/ruby_noexec_wrapper:14:in `
As a test, I built the Jekyll-bootstrap site (cloned from its canonical Git repo today) using the two configurations above. The build worked flawlessly with the first configuration, and completed with minor HTML rendering errors in the second configuration. Any suggestions as to what might be going on?
My host OS is Fedora 17-x86_64, in case that matters. You should be able to use RVM and the gem lists above to replicate at least the Ruby part of my configuration.
Generating graphs that work well in both light and dark themes for the notebook is quite tricky. Using solarized colors for the graphs is the natural solution.
Should allow custom url and custom formatting.
_config.yml
variables?Consider white or light grey (github-like?) navbar?
Post latest open & closed issues, github activity
Use octokit, has access to the full v3 API.
Does require I actually learn some Ruby. This intro seems to hit my basic needs (i.e. mostly array handling, also see this SO question )
placed pdfs of my study sheets for the final are in assets/files/pbg-core-notes
.
Ideally this would let me support CiTO ontology and other relevant ontologies.
http://www.carlboettiger.info/2011/05/08/building-a-semantic-notebook.html#comment-679639088
Consider locally indexed search using indextank
or tipue search.
Otherwise it won't track visitors probably (at least, for me). See ketch@338d784 .
Or a short description that better/more accurately unifies post-doc and grad work.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.