commit
9ee63be709
75 changed files with 509 additions and 726 deletions
22
.circleci/config.yml
Normal file
22
.circleci/config.yml
Normal file
|
@ -0,0 +1,22 @@
|
|||
version: 2.0
|
||||
|
||||
jobs:
|
||||
build:
|
||||
docker:
|
||||
- image: circleci/node:6.10
|
||||
environment:
|
||||
- npm_config_loglevel: notice
|
||||
steps:
|
||||
- checkout
|
||||
- run:
|
||||
name: Install Hugo
|
||||
command: wget https://github.com/gohugoio/hugo/releases/download/v0.29/hugo_0.29_Linux-64bit.deb -O /tmp/hugo.deb && sudo dpkg -i /tmp/hugo.deb
|
||||
- run:
|
||||
name: Install dependencies
|
||||
command: npm install
|
||||
- run:
|
||||
name: Build site
|
||||
command: make release
|
||||
- run:
|
||||
name: Run Tests
|
||||
command: make test
|
87
.spelling
87
.spelling
|
@ -1,99 +1,52 @@
|
|||
# markdown-spellcheck spelling configuration file
|
||||
# Format - lines beginning # are comments
|
||||
# global dictionary is at the start, file overrides afterwards
|
||||
# one word per line, to define a file override use ' - filename'
|
||||
# where filename is relative to this configuration file
|
||||
_enabler
|
||||
_link
|
||||
_list
|
||||
_path
|
||||
_title
|
||||
120mm
|
||||
16-core
|
||||
A.L.I.C.E
|
||||
AiO
|
||||
astrill
|
||||
backends
|
||||
bsod-enabler
|
||||
catalog
|
||||
centers
|
||||
collyer's
|
||||
Collyer's
|
||||
config
|
||||
dabapps
|
||||
desktop.txt
|
||||
DabApps
|
||||
dotfiles
|
||||
easter
|
||||
ethernet
|
||||
everyones
|
||||
facepalm
|
||||
fastmail
|
||||
firefox
|
||||
gists
|
||||
gittime
|
||||
header.jpg
|
||||
hipchat
|
||||
hotmail
|
||||
Hotmail
|
||||
iframe
|
||||
img
|
||||
Inspiron
|
||||
jakesidsmith
|
||||
javascript
|
||||
jetpack
|
||||
Javascript
|
||||
jQuery
|
||||
jsfuckify
|
||||
kickstart
|
||||
LanSchool
|
||||
lenovo
|
||||
Lenovo
|
||||
linux
|
||||
morese-code-decoder
|
||||
morse
|
||||
morse-code
|
||||
notsureif
|
||||
olds
|
||||
OpenVPN
|
||||
openvpn-compatable
|
||||
owncloud
|
||||
PCPartPicker
|
||||
plugin
|
||||
protonmail
|
||||
pygame
|
||||
OpenVPN-compatable
|
||||
ProtonMail
|
||||
PyGame
|
||||
querystring
|
||||
qwerks
|
||||
rackspace
|
||||
runbox
|
||||
screenfetch
|
||||
sitemap.xml
|
||||
spec
|
||||
swiss
|
||||
TekSyndicate
|
||||
til
|
||||
txt
|
||||
wat
|
||||
wikipedia
|
||||
Wikipedia
|
||||
stacktrace
|
||||
iGPU
|
||||
nodejs
|
||||
NodeJS
|
||||
securityheaders.io
|
||||
nsp
|
||||
npm.click
|
||||
Django
|
||||
dependancy-check
|
||||
pypiup
|
||||
seositecheckup
|
||||
nextcloud
|
||||
switcheroo
|
||||
eg
|
||||
glitching
|
||||
dokku
|
||||
letsencrypt
|
||||
d.c.
|
||||
smallpiece
|
||||
Dokku
|
||||
LetsEncrypt
|
||||
Smallpeice
|
||||
timezones
|
||||
busse
|
||||
Sourcebots
|
||||
gopro
|
||||
codeacademy
|
||||
pycharm
|
||||
Busse
|
||||
SourceBots
|
||||
GoPro
|
||||
CodeAcademy
|
||||
PyCharm
|
||||
edu
|
||||
tstatic
|
||||
nginx
|
||||
|
@ -101,3 +54,7 @@ systemd
|
|||
mirrorlist
|
||||
pacman
|
||||
MortenLinderud
|
||||
StartBootstrap
|
||||
Hugo
|
||||
Vec
|
||||
RealOrangeOne
|
||||
|
|
8
Makefile
8
Makefile
|
@ -6,11 +6,15 @@ STATIC_BUILD=$(BASEDIR)/static/build
|
|||
OUTPUT_DIR=$(BASEDIR)/public
|
||||
|
||||
|
||||
release: build
|
||||
$(NODE_BIN)/speedpack $(OUTPUT_DIR) -o $(OUTPUT_DIR)
|
||||
|
||||
|
||||
build: install
|
||||
rm -rf $(OUTPUT_DIR)
|
||||
rm -rf $(STATIC_BUILD)
|
||||
mkdir -p $(STATIC_BUILD)/js $(STATIC_BUILD)/css
|
||||
hugo gen chromastyles --style=tango > $(STATIC_SRC)/scss/highlight.css
|
||||
hugo gen chromastyles --style=monokai > $(STATIC_SRC)/scss/highlight.css
|
||||
$(NODE_BIN)/browserify $(STATIC_SRC)/js/index.js -o $(STATIC_BUILD)/js/app.js
|
||||
$(NODE_BIN)/node-sass $(STATIC_SRC)/scss/style.scss $(STATIC_BUILD)/css/style.css --source-map-embed
|
||||
cp -r $(BASEDIR)/node_modules/font-awesome/fonts $(STATIC_BUILD)/fonts
|
||||
|
@ -20,7 +24,7 @@ build: install
|
|||
cp static/keybase.txt public/keybase.txt
|
||||
|
||||
server: build
|
||||
hugo server --noHTTPCache
|
||||
hugo server --noHTTPCache --disableFastRender
|
||||
|
||||
|
||||
clean:
|
||||
|
|
12
circle.yml
12
circle.yml
|
@ -1,12 +0,0 @@
|
|||
machine:
|
||||
node:
|
||||
version: 6.11.2
|
||||
|
||||
dependencies:
|
||||
pre:
|
||||
- wget https://github.com/gohugoio/hugo/releases/download/v0.29/hugo_0.29_Linux-64bit.deb -O /tmp/hugo.deb && sudo dpkg -i /tmp/hugo.deb
|
||||
|
||||
test:
|
||||
override:
|
||||
- make build
|
||||
- make test
|
|
@ -5,10 +5,11 @@ title: TheOrangeOne
|
|||
params:
|
||||
author: TheOrangeOne
|
||||
author_name: Jake Howard
|
||||
summary_length: 125
|
||||
summary_length_long: 200
|
||||
nav_items: 5
|
||||
index_items: 6
|
||||
iso8601: "2006-01-02T15:04:05"
|
||||
|
||||
summaryLength: 40
|
||||
|
||||
outputFormats:
|
||||
markdown:
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: College
|
||||
---
|
||||
|
||||
My college years were where I really started to develop my knowledge. I found my love for technology, security and [robotics](/robotics/), all in 2 short years! Whilst most of what I did is private, there are still some parts I can share.
|
|
@ -1,20 +0,0 @@
|
|||
---
|
||||
title: Student Server
|
||||
subtitle: The college needed a server, but didn't have any server admins
|
||||
---
|
||||
|
||||
When I was in college, we needed a server for computing students to learn how to use FTP, and script on a server using python CGI and [PHP](http://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/#an-analogy), as well as possibly for some students coursework.
|
||||
Fortunately, the college already had one, running the IT students microsite for extra course information. The problem was that it was rather out of date, and no one really new how to use it. It was up to me and my friend Alex to bring the server up to date, and get it ready for the students who needed it.
|
||||
|
||||
The original plan was to update the server's OS (at that stage running Ubuntu 12.04 LTS), install python and [PHP](http://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/#an-analogy) backends, add student users, and then make sure they couldn't edit each others documents. In the end, because we had no idea how the server worked, because it was setup a long time ago, we decided it was just easier to backup what we needed, then do a complete fresh install. Meaning we could set things up exactly how we wanted them, and install the tools we needed.
|
||||
|
||||
## User Creation
|
||||
I knew we would need user accounts for all the computing teachers and the students doing A2 computing. I wasn't expecting that to amount to over 50 user accounts. Fortunately Alex had started writing a basic script for this, which I quickly modified to permission their home directories and setup passwords.
|
||||
|
||||
The basis of the script was to load information about the users from a database I had created (by hand) with all the required students in, create users based on this information, and configure the permissions for the user and their home directory. The script also allowed for manual entering of users with the same permission template, in case single users needed to be created. An additional feature that I added which has proved useful now that I've left is the ability to delete users manually, and from that original database, to make sure that no student will have access to the server once they have left, well, other than me that is!
|
||||
|
||||
### The script
|
||||
Because a lot of the accounts are still active, and that new user accounts are being created in the same way the exact script cannot be shown, for security reasons.
|
||||
|
||||
## What next?
|
||||
Now that I've left college, I've passed on the server to other people, although I do still have an account. From what I hear, fewer students are using the server. However, they have made the microsite look infinitely better!
|
|
@ -1,7 +1,4 @@
|
|||
---
|
||||
title: Blog
|
||||
linktitle: Posts
|
||||
show_images: true
|
||||
sort_by: Date
|
||||
sort_order: desc
|
||||
---
|
||||
|
|
|
@ -13,7 +13,7 @@ I'm also one of those _crazy_ people who uses arch on my work machine. Craziness
|
|||
After running updates this morning, as I normally would, I went to start the project I was working on today locally, and was met with this wonderful message:
|
||||
|
||||
```text
|
||||
django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: /home/jake/Projects/******/env/lib/python3.5/site-packages/psycopg2/.libs/libresolv-2-c4c53def.5.so: symbol __res_maybe_init, version GLIBC_PRIVATE not defined in file libc.so.6 with link time reference
|
||||
django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: /home/jake/Projects/******/env/lib/python3.5/site-packages/psycopg2/.libs/libresolv-2-c4c53def.5.so: symbol __res_maybe_init, version GLIBC_PRIVATE not defined in file libc.so.6 with link time reference
|
||||
```
|
||||
|
||||
As this was a work machine, I didn't have the time to research into the correct solution. I knew this was something to do with updates, because that's all that had changed between the last time it worked and now. But I had a feeling rolling back updates to a given date, especially on arch, would be fairly painful. Much to my surprise, it was super simple!
|
||||
|
|
|
@ -6,7 +6,7 @@ subtitle: Incredibly secure, easy to use, but are it's trade-offs worth it?
|
|||
tags: [security]
|
||||
---
|
||||
|
||||
Throughout my life, I've had many different email providers, starting with [hotmail](https://hotmail.com) almost 10 years ago. Recently, I've been focusing more on ways I can secure my emails. No, I may not have anything to hide, but [that doesn't matter](http://www.ted.com/talks/glenn_greenwald_why_privacy_matters)!
|
||||
Throughout my life, I've had many different email providers, starting with [Hotmail](https://hotmail.com) almost 10 years ago. Recently, I've been focusing more on ways I can secure my emails. No, I may not have anything to hide, but [that doesn't matter](http://www.ted.com/talks/glenn_greenwald_why_privacy_matters)!
|
||||
|
||||
Originally I thought the best way to keep things secure, and out of the hands of any government body was to host it all myself. This came with a number of problems, mostly due to my lack of experience running anything like this, which lead to problems with my spam filter blocking legitimate emails, and any emails I did send ending up in their spam folder.
|
||||
|
||||
|
|
22
content/posts/why-i-rewrote-my-website.md
Normal file
22
content/posts/why-i-rewrote-my-website.md
Normal file
|
@ -0,0 +1,22 @@
|
|||
---
|
||||
title: Why I rewrote my website
|
||||
date: 2017-11-13
|
||||
image: /img/new-site-screenshot.png
|
||||
---
|
||||
|
||||
I've had a website for around 4 years now, starting with a python CGI-based site hosted at [1&1](https://www.1and1.co.uk/), and evolving into it's current form, powered by [Hugo](https://gohugo.io/).
|
||||
|
||||
Although I'm a web developer, I'm very far from a designer. I really can't design anything!
|
||||
|
||||
## Alternatives
|
||||
In the past, I've used services like [StartBootstrap](https://startbootstrap.com/) and [HTML5UP](https://html5up.net/). These allow me to just throw together a site, and not really worry how it looks, because the design is done for me. The issue with these is that any slight modifications I need to make to the theme, end up spiralling out of control and wrecking the theme.
|
||||
|
||||
## Solution
|
||||
After deciding to do yet another redesign, I had an epiphany. Rather than using a fancy, modern-looking design, let's use something simple! The Hugo theme [_Vec_](https://themes.gohugo.io/hugo-theme-vec/) looked _almost_ perfect. I used _Vec_ as a base for a complete redesign of my site. Rather than actually using _Vec_, I used Bootstrap to replicate it closely, with a few optimisations of my own.
|
||||
|
||||
Making the design this simple means there's very little to go wrong. If the whole site looks so simple, it's very hard for it to look quite so bad.
|
||||
|
||||
## Implementation
|
||||
I implemented it in just over 2 weeks, in a [single PR](https://github.com/RealOrangeOne/theorangeone.net/pull/1). In this refactor, I also fixed many things I didn't like about my sites build process. I even installed a [compressor](https://github.com/gschier/speedpack) for deployment.
|
||||
|
||||
Overall I'm really happy how the rewrite looks, It's far nicer and more original than my previous sites. Now, to push it live!
|
|
@ -9,7 +9,7 @@ The export step is really simple, you just login to the web portal, create an en
|
|||
|
||||
{{% gist %}}
|
||||
|
||||
The above script will split out the files and save them into separate directories for each config file. These files can then be imported and used in an openvpn-compatable application.
|
||||
The above script will split out the files and save them into separate directories for each config file. These files can then be imported and used in an OpenVPN-compatable application.
|
||||
|
||||
### Is it even needed?
|
||||
Certain network managers do support importing `.ovpn` files directly, and sets everything up for you, including the files for the keys etc, without needing to extract them before. Gnome's `network-manager` does this. This does make my script useless to me, but hopefully someone will find it useful!
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
---
|
||||
title: Attack on blocks game
|
||||
repo: RealOrangeOne/attack-on-blocks
|
||||
download_link: https://github.com/RealOrangeOne/attack-on-blocks/archive/master.zip
|
||||
---
|
||||
|
||||
Attack on Blocks is a space invaders style game I wrote for my IT coursework, for the games development unit. We could make any game we wanted, provided it could be done within the time limits, was very easy to play, and easily run on the college computers (which were pretty terrible).
|
||||
|
|
|
@ -4,7 +4,7 @@ gist: 7da9a3dd1bf90ecdf7be
|
|||
subtitle: Simple script to win the Wiki Game
|
||||
---
|
||||
|
||||
[The Wiki Game](http://thewikigame.com) is an online game where you attempt to navigate through wikipedia from a start page to a goal page using as few other pages as possible.
|
||||
[The Wiki Game](http://thewikigame.com) is an online game where you attempt to navigate through Wikipedia from a start page to a goal page using as few other pages as possible.
|
||||
|
||||
Not long after I was shown the it, I realised that I _really_ wasn't very good at it. After about 15 minutes of coming in last place all the time, I started to wonder how it worked, and how I could beat it.
|
||||
|
||||
|
@ -26,7 +26,7 @@ The game was won when the iframe was at the final page location, or at least a c
|
|||
With this, I started to write something that would change the location of the iframe to the goal. Fortunately for me, the goal URL was on the page. So all it took was a little switcheroo to win!
|
||||
|
||||
### Source
|
||||
The source for this was written in pure JS, and relies heavily on the fact that the wiki game uses jQuery so I can plug into components and events really easily. The code can be found in the GitHub gists below. Both the standard and compact versions are available.
|
||||
The source for this was written in pure JS, and relies heavily on the fact that the wiki game uses jQuery so I can plug into components and events really easily. The code can be found in the GitHub gist below. Both the standard and compact versions are available.
|
||||
|
||||
{{% gist %}}
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ This script worked great, doing exactly what it said it did, nicely and quickly,
|
|||
|
||||
So I wrote my own CLI, based off the above script, that would allow me to tweak everything, so the laptop can be used as it was intended. With a simple command, I could swap the _mode_ of the laptop to match how I was using it.
|
||||
|
||||
eg:
|
||||
For example:
|
||||
|
||||
```bash
|
||||
$ yoga mode tablet # Set to tablet mode
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
title: Student Robotics 2015
|
||||
linktitle: 2015
|
||||
image: https://farm9.staticflickr.com/8700/17404219256_a9ba1ac510_o_d.jpg
|
||||
show_images: true
|
||||
---
|
||||
|
||||
Welcome to the homepage of Collyer's Student Robotics Team 2015 (The 'A' Team) - Creators of _A.L.I.C.E_! Here you can see everything that goes on throughout the competition.
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
title: Student Robotics 2016
|
||||
linkTitle: 2016
|
||||
image: https://farm2.staticflickr.com/1466/26707090961_9b44a94f31_o_d.jpg
|
||||
show_images: true
|
||||
---
|
||||
|
||||
Student Robotics 2016
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
title: Student Robotics 2017
|
||||
linkTitle: 2017
|
||||
image: https://farm3.staticflickr.com/2837/33771948196_bd306d2a8f_o_d.jpg
|
||||
show_images: true
|
||||
---
|
||||
|
||||
Student Robotics 2017
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
title: Student Robotics
|
||||
linktitle: Robotics
|
||||
image: https://c2.staticflickr.com/8/7674/17308375182_a172a341d6_h.jpg
|
||||
show_images: true
|
||||
---
|
||||
|
||||
Student Robotics is the the place where my development knowledge really started to grow. Thanks to the other people in my team teaching me. I had never done anything robotics related, and so when my computing teacher initially told us about it, I wasn't really interested. After I found out that my friend was also doing it, I signed up, and went along to the kickstart. From then on I was hooked, getting involved with all aspects of the development and design, as well as helping out other teams on the IRC room.
|
||||
|
@ -17,6 +16,3 @@ Being at college for 2 years, meant I was able to enter 2 years of competitions,
|
|||
|
||||
### Post 2015
|
||||
Unfortunately, after I left college, I also left behind entering Student Robotics as a competitor. Fortunately however, [they're always looking for volunteers](https://studentrobotics.org/volunteer/) to help run the competition itself, as a _Blue Shirt_. The college kept on working, and keep [their website](http://robotics.collycomp.uk/) updated.
|
||||
|
||||
## SmallPiece
|
||||
[Smallpiece](/robotics/smallpiece) is a competition run in part by members of Student Robotics. It's basically the entire Student Robotics year, compressed into just 5 days! Details on this can be found on the [Smallpiece](/robotics/smallpiece) page.
|
||||
|
|
|
@ -1,12 +1,11 @@
|
|||
---
|
||||
title: Smallpiece 2017
|
||||
title: Smallpeice 2017
|
||||
image: https://farm5.staticflickr.com/4426/35552704294_5aa52e2ed6_k_d.jpg
|
||||
linkTitle: 2017
|
||||
date: 2017-08-05
|
||||
show_images: true
|
||||
---
|
||||
|
||||
Smallpiece 2017 was my first experience into the realm of smallpiece's _Computing and Micro Electronics_ course. This took place between the 29th July and 5th August, for me. The students were only around 31st to 4th.
|
||||
Smallpeice 2017 was my first experience into the realm of Smallpeice's _Computing and Micro Electronics_ course. This took place between the 29th July and 5th August, for me. The students were only around 31st to 4th.
|
||||
|
||||
## The Game
|
||||
|
|
@ -7,13 +7,13 @@ date: 2017-08-02
|
|||
|
||||
One of my highlights of the whole week was on Wednesday, a cyber-security talk from Dr Denis Nicole, a lecturer at the university. As soon as I saw this talk on the calendar, I knew I had to be there! The talk went into great detail on the NSA's PRISM project, and the various other communication-tapping schemes by other governments.
|
||||
|
||||
This was the day the finishing touches were done to the arena in the cube. Now that the scaffolding was completely setup, we needed to setup lighting, screens, and the gopro we'd mount to the lighting rig. Setting up lighting is in fact much harder than it seems, as the axis of movement are relative to the light rather than me.
|
||||
This was the day the finishing touches were done to the arena in the cube. Now that the scaffolding was completely setup, we needed to setup lighting, screens, and the GoPro we'd mount to the lighting rig. Setting up lighting is in fact much harder than it seems, as the axis of movement are relative to the light rather than me.
|
||||
|
||||
## GoPro
|
||||
|
||||
![View from the sky](https://farm5.staticflickr.com/4400/36220386672_e459081ddd_o_d.jpg)
|
||||
|
||||
The gopro we mounted to the lighting was to serve multiple purposes. Not only did it allow judges to see the entire arena from the balcony, but it also allowed us to record the entire arena for a match, without spectators getting in the way of the camera.
|
||||
The GoPro we mounted to the lighting was to serve multiple purposes. Not only did it allow judges to see the entire arena from the balcony, but it also allowed us to record the entire arena for a match, without spectators getting in the way of the camera.
|
||||
|
||||
We also aimed to try using this feed for automatic judging in future games. Unfortunately the markers we have weren't particularly visible from that far up, so another idea will have to be tried.
|
||||
|
|
@ -11,11 +11,11 @@ As teams moved into the cube, the arena became crowded, as multiple teams tried
|
|||
|
||||
## _Birthday of the Busse_
|
||||
|
||||
One of our team members, Andy, had a birthday over the week, Wednesday. Apparently it's a Smallpiece tradition to sing students _Happy Birthday_ when it's theirs, so we thought we'd steal that tradition with a slight twist.
|
||||
One of our team members, Andy, had a birthday over the week, Wednesday. Apparently it's a Smallpeice tradition to sing students _Happy Birthday_ when it's theirs, so we thought we'd steal that tradition with a slight twist.
|
||||
|
||||
I can't take the credit for the idea, but I can for the execution. As I was the one running tinker time, I informed students of our plan, quietly, then we called Andy into the room for an unrelated reason, and I took to the stage:
|
||||
|
||||
> Is there an Andy Busse in the audience? Andy, a little, Alistair-sized birdie told me it was your birthday yesterday. And so, from everyone here from Sourcebots, SmallPiece, and everyone else in the room, we'd like to wish you a happy birthday. Now, I you all know the words, so, 1, 2, 3...
|
||||
> Is there an Andy Busse in the audience? Andy, a little, Alistair-sized birdie told me it was your birthday yesterday. And so, from everyone here from SourceBots, Smallpeice, and everyone else in the room, we'd like to wish you a happy birthday. Now, I you all know the words, so, 1, 2, 3...
|
||||
|
||||
And so, all the students and staff proceeded to sing him _Happy Birthday_. I neglected to consider filming this, but needless to say Andy wasn't exactly thrilled with his oh-so public celebration.
|
||||
|
|
@ -4,5 +4,7 @@ title: Soundtrack
|
|||
|
||||
At the arena, we had music playing in the background, through the competition stages, and the testing phase.
|
||||
|
||||
<!--more-->
|
||||
|
||||
{{% spotify "spotify:user:theorangeone97:playlist:4ZaS9NTwF1erqqpE1IxHlP" %}}
|
||||
|
7
content/robotics/smallpeice/_index.md
Normal file
7
content/robotics/smallpeice/_index.md
Normal file
|
@ -0,0 +1,7 @@
|
|||
---
|
||||
title: Smallpeice
|
||||
hide_in_list: true
|
||||
---
|
||||
|
||||
Smallpeice is a compressed version of Student Robotics run by the Smallpeice Trust and University of Southampton. Rather than being run over 6 months like Student Robotics, Smallpeice is run over just 5 days.
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
---
|
||||
title: Smallpiece
|
||||
hide_in_list: true
|
||||
show_images: true
|
||||
---
|
||||
|
||||
Smallpiece is a compressed version of Student Robotics run by the Smallpiece Trust and University of Southampton. Rather than being run over 6 months like Student Robotics, Smallpiece is run over just 5 days.
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Search
|
||||
linkTitle: 🔎
|
||||
layout: search
|
||||
---
|
|
@ -8,7 +8,7 @@ My setup is my everything, I use my computer daily to browse the internet, work
|
|||
|
||||
Over the years, my setup has evolved from a single monitor i5 computer, to a triple monitor AMD FX-based monster.
|
||||
|
||||
{{% pcpartpicker ZhMzr7 %}}
|
||||
{{% pcpartpicker 7wswP6 %}}
|
||||
|
||||
### Next Generation
|
||||
|
||||
|
@ -16,7 +16,7 @@ I've been using the current generation for around 5 years now, and it's worked p
|
|||
|
||||
The next generation of my build isn't actually a thing yet, but I'm actively working on what it's going to look like and the components inside it. You can find the current parts list at the link below, the list is always changing.
|
||||
|
||||
##### [Next-Gen Parts List]()
|
||||
{{% pcpartpicker W26kLk %}}
|
||||
|
||||
#### OS
|
||||
I use Arch Linux on all my machines now, But some days I miss the windows-only applications / games, so I plan to use a virtual machine running windows, with a graphics card hardware pass-through to it to run windows applications, and play windows-only games. I got the idea for doing this from [here](https://www.youtube.com/watch?v=16dbAUrtMX4) and [here](https://www.youtube.com/watch?v=aLeWg11ZBn0).
|
||||
|
@ -27,4 +27,4 @@ The first generation was the first custom build I'd ever done. When I first buil
|
|||
|
||||
Many of the parts from this build, including DVD drive, RAM and card reader, still live on in the current generation. The card reader and DVD were bought so I'd never need to buy another again!
|
||||
|
||||
{{% pcpartpicker zZ8pvV %}}
|
||||
{{% pcpartpicker wPrZLk %}}
|
||||
|
|
|
@ -2,6 +2,6 @@
|
|||
title: Public web server
|
||||
---
|
||||
|
||||
My public server one of the VMs on my dedicated server, running [Dokku](http://dokku.viewdocs.io/dokku/), allowing me to easily deploy applications no matter what they're written in! Many people have tried to convert me to other methods, such as just using nginx + systemd, or `docker-compose`, but dokku is just so simple and easy. Yes the domain routing has some issues, but it's still much nicer than doing it all manually!
|
||||
My public server one of the VMs on my dedicated server, running [Dokku](http://dokku.viewdocs.io/dokku/), allowing me to easily deploy applications no matter what they're written in! Many people have tried to convert me to other methods, such as just using nginx + systemd, or `docker-compose`, but Dokku is just so simple and easy. Yes the domain routing has some issues, but it's still much nicer than doing it all manually!
|
||||
|
||||
The best feature of dokku is the easy integration with [LetsEncrypt](https://letsencrypt.org/), so I can easily add `HTTPS` connection to applications, even if they don't natively support it!
|
||||
The best feature of Dokku is the easy integration with [LetsEncrypt](https://letsencrypt.org/), so I can easily add `HTTPS` connection to applications, even if they don't natively support it!
|
||||
|
|
|
@ -73,3 +73,8 @@ footer_accounts:
|
|||
- flickr
|
||||
- bitbucket
|
||||
- keybase
|
||||
|
||||
navbar_accounts:
|
||||
- github
|
||||
- twitter
|
||||
- keybase
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
{{ define "main" }}
|
||||
<header id="index-header" class="d-flex align-items-center">
|
||||
<div class="text-center m-auto text-light">
|
||||
<h1 class="display-1">There's nothing here!</h1>
|
||||
<p class="lead">The page you were looking for could not be found</p>
|
||||
</div>
|
||||
</header>
|
||||
{{ end }}
|
27
layouts/_default/baseof.html
Normal file
27
layouts/_default/baseof.html
Normal file
|
@ -0,0 +1,27 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="Content-Language" content="{{ .Site.Language.Lang }}" />
|
||||
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width" />
|
||||
<link rel="alternate" type="application/rss+xml" href="{{ .Site.RSSLink }}" />
|
||||
<meta name="superfish" content="nofish" />
|
||||
<meta name="application-name" content="{{ .Site.Title }}" />
|
||||
<link rel="icon" type="image/png" href="{{ .Site.BaseURL }}/img/logo-transparent.png" />
|
||||
<link rel="stylesheet" href="{{ .Site.BaseURL }}/css/style.css" />
|
||||
|
||||
<title>{{ .Title }} :: {{ .Site.Title }}</title>
|
||||
|
||||
{{ partial "metadata.html" . }}
|
||||
</head>
|
||||
<body>
|
||||
{{ partial "navbar.html" . }}
|
||||
|
||||
{{ block "main" . }}{{ end }}
|
||||
|
||||
{{ partial "footer.html" . }}
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js" integrity="sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4" crossorigin="anonymous"></script>
|
||||
<script src="{{ .Site.BaseURL }}/js/app.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,20 +1,17 @@
|
|||
{{ partial "page_start.html" . }}
|
||||
<section id="main" class="container">
|
||||
{{ partial "content.html" . }}
|
||||
{{ if ne .Params.hide_pages "true" }}
|
||||
<div class="row">
|
||||
{{ $parent := . }}
|
||||
{{ $sorted_pages := sort .Site.Pages (default "Title" .Params.sort_by) (default "asc" .Params.sort_order)}}
|
||||
{{ $valid_pages := where $sorted_pages ".Parent" "!=" nil }}
|
||||
{{ $valid_pages := where $valid_pages ".Params.hide_in_list" "!=" "true" }}
|
||||
{{ range where $valid_pages ".Parent.UniqueID" $parent.UniqueID }}
|
||||
{{ if $parent.Params.show_images }}
|
||||
{{ partial "box_image.html" . }}
|
||||
{{ else }}
|
||||
{{ partial "box.html" . }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ end }}
|
||||
</section>
|
||||
{{ partial "page_end.html" . }}
|
||||
{{ define "main" }}
|
||||
<div id="main">
|
||||
<div class="container">
|
||||
{{ partial "content.html" . }}
|
||||
{{ if .Content }}
|
||||
<hr />
|
||||
{{ end }}
|
||||
{{ $parent := . }}
|
||||
{{ $sorted_pages := sort .Site.Pages (default "Title" .Params.sort_by) (default "asc" .Params.sort_order)}}
|
||||
{{ $valid_pages := where $sorted_pages ".Parent" "!=" nil }}
|
||||
{{ $valid_pages := where $valid_pages ".Params.hide_in_list" "!=" "true" }}
|
||||
{{ range where $valid_pages ".Parent.UniqueID" $parent.UniqueID }}
|
||||
{{ partial "list_item.html" . }}
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
|
|
@ -1,17 +0,0 @@
|
|||
{{ partial "page_start.html" . }}
|
||||
<section id="main" class="container">
|
||||
{{ partial "content.html" . }}
|
||||
<div class="search-input-container">
|
||||
<input id="search" type="text" placeholder="⌕"/>
|
||||
</div>
|
||||
|
||||
<div class="row search-results">
|
||||
{{ $valid_pages := where .Site.Pages ".Parent" "!=" nil }}
|
||||
{{ $valid_pages := where $valid_pages "Kind" "page" }}
|
||||
{{ $valid_pages := where $valid_pages ".UniqueID" "!=" .UniqueID }}
|
||||
{{ range (sort $valid_pages ".LinkTitle") }}
|
||||
{{ partial "box_image.html" . }}
|
||||
{{ end }}
|
||||
</div>
|
||||
</section>
|
||||
{{ partial "page_end.html" . }}
|
|
@ -1,5 +1,7 @@
|
|||
{{ partial "page_start.html" . }}
|
||||
<section id="main" class="container">
|
||||
{{ partial "content.html" . }}
|
||||
</section>
|
||||
{{ partial "page_end.html" . }}
|
||||
{{ define "main" }}
|
||||
<div id="main">
|
||||
<div class="container">
|
||||
{{ partial "content.html" . }}
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
|
|
@ -1,10 +1,13 @@
|
|||
{{ partial "page_start.html" . }}
|
||||
<section id="main" class="container">
|
||||
{{ partial "content.html" . }}
|
||||
<div class="row">
|
||||
{{ define "main" }}
|
||||
<div id="main">
|
||||
<div class="container">
|
||||
{{ partial "content.html" . }}
|
||||
{{ if .Content }}
|
||||
<hr />
|
||||
{{ end }}
|
||||
{{ range .Pages.ByTitle }}
|
||||
{{ partial "box_image.html" . }}
|
||||
{{ partial "list_item.html" . }}
|
||||
{{ end }}
|
||||
</div>
|
||||
</section>
|
||||
{{ partial "page_end.html" . }}
|
||||
</div>
|
||||
{{ end }}
|
||||
|
|
|
@ -1,10 +1,13 @@
|
|||
{{ partial "page_start.html" . }}
|
||||
<section id="main" class="container">
|
||||
{{ partial "content.html" . }}
|
||||
<div class="row">
|
||||
{{ define "main" }}
|
||||
<div id="main">
|
||||
<div class="container">
|
||||
{{ partial "content.html" . }}
|
||||
{{ if .Content }}
|
||||
<hr />
|
||||
{{ end }}
|
||||
{{ range .Pages.ByTitle }}
|
||||
{{ partial "box_image.html" . }}
|
||||
{{ partial "list_item.html" . }}
|
||||
{{ end }}
|
||||
</div>
|
||||
</section>
|
||||
{{ partial "page_end.html" . }}
|
||||
</div>
|
||||
{{ end }}
|
||||
|
|
|
@ -1,94 +1,8 @@
|
|||
{{ partial "page_start.html" . }}
|
||||
<section id="banner">
|
||||
<h2>{{ title .Site.Title }}</h2>
|
||||
<p><i>{{ title .Site.Params.author_name }}</i></p>
|
||||
</section>
|
||||
|
||||
<section id="main" class="container">
|
||||
<section class="box special">
|
||||
<header class="major">
|
||||
<h2>{{ plainify .Content }}</h2>
|
||||
<p>I'm Jake. A software engineer with a passion for security and privacy. This is my website, a home for my projects, blog posts, and anything else for that matter.</p>
|
||||
</header>
|
||||
</section>
|
||||
|
||||
<section class="box special features">
|
||||
<div class="features-row">
|
||||
<section>
|
||||
{{ with .Site.GetPage "section" "posts" }}
|
||||
<a href="{{ .Permalink }}" class="no-underline">
|
||||
<span class="icon major fa-comments accent2"></span>
|
||||
<h3>{{ .LinkTitle }}</h3>
|
||||
</a>
|
||||
<p>
|
||||
{{ partial "summary_string.html" . }}
|
||||
</p>
|
||||
{{ end }}
|
||||
</section>
|
||||
<section>
|
||||
{{ with .Site.GetPage "section" "projects" }}
|
||||
<a href="{{ .Permalink }}" class="no-underline">
|
||||
<span class="icon major fa-code accent3"></span>
|
||||
<h3>{{ .LinkTitle }}</h3>
|
||||
</a>
|
||||
<p>
|
||||
{{ partial "summary_string.html" . }}
|
||||
</p>
|
||||
{{ end }}
|
||||
</section>
|
||||
</div>
|
||||
<div class="features-row">
|
||||
<section>
|
||||
{{ with .Site.GetPage "section" "setup" }}
|
||||
<a href="{{ .Permalink }}" class="no-underline">
|
||||
<span class="icon major fa-desktop accent4"></span>
|
||||
<h3>{{ .LinkTitle }}</h3>
|
||||
</a>
|
||||
<p>
|
||||
{{ partial "summary_string.html" . }}
|
||||
</p>
|
||||
{{ end }}
|
||||
</section>
|
||||
<section>
|
||||
{{ with .Site.GetPage "section" "robotics" }}
|
||||
<a href="{{ .Permalink }}" class="no-underline">
|
||||
<span class="icon major fa-cogs accent5"></span>
|
||||
<h3>{{ .LinkTitle }}</h3>
|
||||
</a>
|
||||
<p>
|
||||
{{ partial "summary_string.html" . }}
|
||||
</p>
|
||||
{{ end }}
|
||||
</section>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div class="index-list" id="projects">
|
||||
<div class="align-center">
|
||||
<h2><a href="/projects/">Projects</a></h2>
|
||||
</div>
|
||||
<div class="row">
|
||||
{{ range first .Site.Params.index_items (where .Data.Pages.ByDate "Section" "projects") }}
|
||||
{{ partial "box_image.html" . }}
|
||||
{{ end }}
|
||||
</div>
|
||||
<div class="align-center">
|
||||
<h4><a href="/projects/">All Projects</a></h4>
|
||||
</div>
|
||||
{{ define "main" }}
|
||||
<header id="index-header" class="d-flex align-items-center">
|
||||
<div class="text-center m-auto text-light">
|
||||
<h1 class="display-1">{{ .Site.Params.author_name }}</h1>
|
||||
<p class="lead">{{ .RawContent }}</p>
|
||||
</div>
|
||||
|
||||
<div class="index-list" id="recent-posts">
|
||||
<div class="align-center">
|
||||
<h2><a href="/posts/">Recent Posts</a></h2>
|
||||
</div>
|
||||
<div class="row">
|
||||
{{ range first .Site.Params.index_items (where .Data.Pages.ByDate "Section" "posts") }}
|
||||
{{ partial "box_image.html" . }}
|
||||
{{ end }}
|
||||
</div>
|
||||
<div class="align-center">
|
||||
<h4><a href="/posts/">All Posts</a></h4>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
{{ partial "page_end.html" . }}
|
||||
</header>
|
||||
{{ end }}
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
<div class="col-sm-6">
|
||||
<section class="box special">
|
||||
<a href="{{ .Permalink }}">
|
||||
<h3>{{ title .LinkTitle }}</h3>
|
||||
</a>
|
||||
{{ partial "summary_string.html" . }}
|
||||
</section>
|
||||
</div>
|
|
@ -1,16 +0,0 @@
|
|||
<div class="col-sm-6">
|
||||
<section class="box special image">
|
||||
{{ if .Params.image }}
|
||||
<a href="{{ .Permalink }}">
|
||||
<span class="image featured" data-image="{{ .Params.image }}"></span>
|
||||
</a>
|
||||
{{ end }}
|
||||
{{ if .Params.date }}
|
||||
<small title="{{ .Date.Format "January 2 2006" }}">{{ .Date.Format "2006-01-02" }}</small>
|
||||
{{ end }}
|
||||
<a href="{{ .Permalink }}">
|
||||
<h3>{{ title .LinkTitle }}</h3>
|
||||
</a>
|
||||
{{ partial "summary_string.html" . }}
|
||||
</section>
|
||||
</div>
|
|
@ -1,18 +1,25 @@
|
|||
<header>
|
||||
<h2>{{ title .Title }}</h2>
|
||||
{{ partial "subtitle_string.html" . }}
|
||||
|
||||
{{ if .Params.date }}
|
||||
<small title="{{ .Date.Format "January 2 2006" }}">{{ .Date.Format "2006-01-02" }}</small>
|
||||
{{ end }}
|
||||
</header>
|
||||
{{ if .Content }}
|
||||
<div class="box">
|
||||
{{ if .Params.image }}
|
||||
<span class="image featured main" data-image="{{ .Params.image }}"></span>
|
||||
{{ end }}
|
||||
{{ .Content }}
|
||||
</div>
|
||||
{{ if .Params.image }}
|
||||
<div class="mb-3 image header-image" data-image="{{ .Params.image }}"></div>
|
||||
{{ end }}
|
||||
<h1 class="display-5">{{ .Title }}</h1>
|
||||
<h5 class="my-3">{{ partial "subtitle.html" . }}</h5>
|
||||
<p>
|
||||
{{ if .Params.date }}
|
||||
<span class="pr-4" title='{{ .Date.Format "January 2 2006" }}'>{{ .Date.Format "2006-01-02" }}</span>
|
||||
{{ end }}
|
||||
|
||||
{{ partial "tags.html" . }}
|
||||
{{ range .Params.tags }}
|
||||
<a href="/tags/{{ urlize . }}" class="badge badge-dark tag mr-2">
|
||||
<i class="fa fa-tag"></i> {{ . }}
|
||||
</a>
|
||||
{{ end }}
|
||||
</p>
|
||||
<hr />
|
||||
<div class="content mt-3">
|
||||
{{ if .TableOfContents }}
|
||||
<div class="float-lg-right ml-3 bg-light p-3">
|
||||
{{ .TableOfContents }}
|
||||
</div>
|
||||
{{ end }}
|
||||
{{ .Content }}
|
||||
</div>
|
||||
|
|
|
@ -1,21 +1,20 @@
|
|||
<footer id="footer">
|
||||
<ul class="icons">
|
||||
{{ range .Site.Data.social.footer_accounts }}
|
||||
{{ $account := index $.Site.Data.social.accounts . }}
|
||||
<li><a href="{{ $account.link }}" class="icon {{ $account.icon }}">
|
||||
<span class="label">{{ $account.name }}</span>
|
||||
</a></li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
<ul class="copyright">
|
||||
<li>© {{ title .Site.Params.author }} {{ now.Year }}.</li>
|
||||
{{ if .OutputFormats.Get "txt" }}
|
||||
{{ with .OutputFormats.Get "txt" }}
|
||||
<li><a href="{{ .Permalink }}">View Raw</a></li>
|
||||
{{ end }}
|
||||
{{ else }}
|
||||
<li><a href="{{ .Site.Data.social.accounts.github.link }}theorangeone.net">View Source</a></li>
|
||||
{{ end }}
|
||||
<li>Design: <a href="http://html5up.net">HTML5 UP</a></li>
|
||||
</ul>
|
||||
<footer class="bg-light p-5 {{ if eq .IsHome false }}mt-5{{ end }}">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<p>
|
||||
© {{ now.Year }} <a href="{{ .Site.BaseURL }}">{{ .Site.Title }}</a>.
|
||||
</p>
|
||||
<p></p>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<h3 class="text-right">
|
||||
{{ range .Site.Data.social.footer_accounts }}
|
||||
{{ $account := index $.Site.Data.social.accounts . }}
|
||||
<a href="{{ $account.link }}"><i class="mx-1 fa {{ $account.icon }}" aria-hidden="true" title="{{ $account.name }}"></i></a>
|
||||
{{ end }}
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
|
|
@ -1,23 +0,0 @@
|
|||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="Content-Language" content="{{ .Site.Language.Lang }}" />
|
||||
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width" />
|
||||
<link rel="alternate" type="application/rss+xml" href="{{ .Site.RSSLink }}" />
|
||||
<meta name="superfish" content="nofish" />
|
||||
<meta name="application-name" content="{{ .Site.Title }}" />
|
||||
<link rel="icon" type="image/png" href="/img/logo-transparent.png" />
|
||||
|
||||
<link rel="stylesheet" href="/css/style.css" />
|
||||
|
||||
|
||||
{{ if .Parent }}
|
||||
{{ if ne .Parent .Site.Home }}
|
||||
<title>{{ .Title }} | {{ .Parent.Title }} | {{ .Site.Title }}</title>
|
||||
{{ end }}
|
||||
<title>{{ .Title }} | {{ .Site.Title }}</title>
|
||||
{{ else }}
|
||||
<title>{{ .Title }} | {{ .Site.Title }}</title>
|
||||
{{ end }}
|
||||
|
||||
{{ partial "metadata.html" . }}
|
||||
</head>
|
15
layouts/partials/list_item.html
Normal file
15
layouts/partials/list_item.html
Normal file
|
@ -0,0 +1,15 @@
|
|||
<div class="media list-page-item mb-3">
|
||||
{{ if .Params.image }}
|
||||
<div class="d-none d-md-block align-self-center img-wrapper mr-3">
|
||||
<a href="{{ .Permalink }}">
|
||||
<div class="image" data-image="{{ .Params.image }}"></div>
|
||||
</a>
|
||||
</div>
|
||||
{{ end }}
|
||||
<div class="media-body">
|
||||
<a href="{{ .Permalink }}">
|
||||
<h5 class="mt-0">{{ .Title }}</h5>
|
||||
</a>
|
||||
<p>{{ partial "summary.html" . }}</p>
|
||||
</div>
|
||||
</div>
|
|
@ -2,7 +2,7 @@
|
|||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:site" content="{{ .Site.Data.social.accounts.twitter.username }}" />
|
||||
<meta name="twitter:title" content="{{ .Title | htmlUnescape }}" />
|
||||
<meta name="twitter:description" content="{{ .Summary | plainify | chomp | htmlUnescape | truncate .Site.Params.summary_length_long "..." }}" />
|
||||
<meta name="twitter:description" content="{{ .Summary | plainify | chomp | htmlUnescape }}{{ if .Truncated }}...{{ end }}" />
|
||||
<meta name="twitter:creator" content="{{ .Site.Data.social.accounts.twitter.username }}" />
|
||||
{{ if .Params.image }}
|
||||
<meta name="twitter:image" content="{{ absURL .Params.image }}" />
|
||||
|
@ -15,21 +15,21 @@
|
|||
{{ if .Params.image }}
|
||||
<meta property="og:image" content="{{ absURL .Params.image }}" />
|
||||
{{ end }}
|
||||
<meta property="og:description" content="{{ .Summary | plainify | chomp | htmlUnescape | truncate .Site.Params.summary_length_long "..." }}" />
|
||||
<meta property="og:description" content="{{ .Summary | plainify | chomp | htmlUnescape }}{{ if .Truncated }}...{{ end }}" />
|
||||
<meta property="og:site_name" content="{{ title .Site.Title | htmlUnescape }}" />
|
||||
<meta property="og:locale" content="{{ .Site.Language.Lang }}" />
|
||||
|
||||
<meta itemprop="name" content="{{ .Title | htmlUnescape }}" />
|
||||
<meta itemprop="description" content="{{ .Summary | plainify | chomp | htmlUnescape | truncate .Site.Params.summary_length_long "..." }}" />
|
||||
<meta itemprop="description" content="{{ .Summary | plainify | chomp | htmlUnescape }}{{ if .Truncated }}...{{ end }}" />
|
||||
{{ if .Params.image }}
|
||||
<meta itemprop="image" content="{{ absURL .Params.image }}" />
|
||||
{{ end }}
|
||||
|
||||
<meta name="article:author" content="{{ title .Site.Params.author }}" />
|
||||
<meta name="article:modified_time" content="{{ .Lastmod }}" />
|
||||
<meta name="article:published_time" content="{{ .Date }}" />
|
||||
<meta name="article:modified_time" content="{{ .Lastmod.Format .Site.Params.iso8601 }}" />
|
||||
<meta name="article:published_time" content="{{ .Date.Format .Site.Params.iso8601 }}" />
|
||||
<meta name="article:section" content="{{ .Type }}" />
|
||||
<meta name="description" content="{{ .Summary | plainify | chomp | htmlUnescape | truncate .Site.Params.summary_length_long "..." }}" />
|
||||
<meta name="description" content="{{ .Summary | plainify | chomp | htmlUnescape }}{{ if .Truncated }}...{{ end }}" />
|
||||
<meta name="author" content="{{ title .Site.Params.author }}" />
|
||||
<meta name="canonical" content="{{ .Permalink }}" />
|
||||
|
||||
|
|
13
layouts/partials/nav_pages.html
Normal file
13
layouts/partials/nav_pages.html
Normal file
|
@ -0,0 +1,13 @@
|
|||
{{ $home := .Site.GetPage "home" }}
|
||||
|
||||
{{ $sections := where (where .Site.Pages.ByTitle "Kind" "section") "Parent.UniqueID" $home.UniqueID }}
|
||||
{{ $pages := where (where .Site.Pages.ByTitle "Kind" "page") "Section" "" }}
|
||||
{{ $nav_pages := union $pages $sections }}
|
||||
|
||||
{{ range sort $nav_pages "LinkTitle" }}
|
||||
<li class="nav-item">
|
||||
<a href="{{ .Permalink }}" class="nav-link">
|
||||
<code>~/{{ urlize .LinkTitle }}</code>
|
||||
</a>
|
||||
</li>
|
||||
{{ end }}
|
24
layouts/partials/navbar.html
Normal file
24
layouts/partials/navbar.html
Normal file
|
@ -0,0 +1,24 @@
|
|||
<nav class="navbar navbar-expand-sm navbar-dark bg-black fixed-top">
|
||||
<a class="navbar-brand" href="{{ .Site.BaseURL }}"><code>/home/{{ lower .Site.Title }}</code></a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarNav">
|
||||
<ul class="navbar-nav mr-auto">
|
||||
{{ partial "nav_pages.html" . }}
|
||||
</ul>
|
||||
|
||||
<div class="d-none d-lg-block">
|
||||
<ul class="navbar-nav">
|
||||
{{ range .Site.Data.social.navbar_accounts }}
|
||||
{{ $account := index $.Site.Data.social.accounts . }}
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="{{ $account.link }}">
|
||||
<i class="fa {{ $account.icon }}" title="{{ $account.name }}"></i>
|
||||
</a>
|
||||
</li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
|
@ -1,15 +0,0 @@
|
|||
|
||||
<header id="header" {{ if .IsHome }}class="alt"{{ end }}>
|
||||
<h1><a href="/" class="navbar-brand">{{ title .Site.Title }}</a></h1>
|
||||
<nav id="nav">
|
||||
<ul>
|
||||
{{ partial "navbar/sections.html" . }}
|
||||
|
||||
{{ partial "navbar/pages.html" . }}
|
||||
|
||||
<li class="top-level">
|
||||
<a class="show-mobile" href="/">Home</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
|
@ -1 +0,0 @@
|
|||
<a href="{{ .Permalink }}">{{ .LinkTitle }}</a>
|
|
@ -1,7 +0,0 @@
|
|||
{{ range where .Site.Pages.ByTitle "Kind" "page" }}
|
||||
{{ if eq .Section "" }}
|
||||
<li class="top-level">
|
||||
{{ partial "navbar/link-item.html" . }}
|
||||
</li>
|
||||
{{ end }}
|
||||
{{ end }}
|
|
@ -1,34 +0,0 @@
|
|||
{{ $valid_children := where (where .Site.Pages ".Parent" "!=" nil) ".Params.hide_in_nav" "!=" "true" }}
|
||||
|
||||
{{ $home := .Site.GetPage "home" }}
|
||||
{{ range where .Site.Pages.ByTitle "Kind" "section" }}
|
||||
{{ if eq .Parent $home }}
|
||||
{{ $sorted_pages := sort $valid_children (default "Title" .Params.sort_by) (default "asc" .Params.sort_order)}}
|
||||
{{ $children := where $sorted_pages ".Parent.UniqueID" .UniqueID }}
|
||||
<li class="top-level">
|
||||
{{ partial "navbar/link-item.html" . }}
|
||||
{{ if $children }}
|
||||
<ul>
|
||||
{{ range first .Site.Params.nav_items $children }}
|
||||
<li>
|
||||
{{ partial "navbar/link-item.html" . }}
|
||||
{{ $children := where $sorted_pages ".Parent.UniqueID" .UniqueID }}
|
||||
{{ if $children }}
|
||||
<ul>
|
||||
{{ range first .Site.Params.nav_items $children }}<li>{{ partial "navbar/link-item.html" . }}</li>{{ end }}
|
||||
{{ if ge (len $children) .Site.Params.nav_items }}
|
||||
<li><a href="{{ .Permalink }}"><i>See more</i></a></li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
{{ end }}
|
||||
</li>
|
||||
{{ end }}
|
||||
|
||||
{{ if ge (len $children) .Site.Params.nav_items }}
|
||||
<li><a href="{{ .Permalink }}"><i>See more</i></a></li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
{{ end }}
|
||||
</li>
|
||||
{{ end }}
|
||||
{{ end }}
|
|
@ -1,5 +0,0 @@
|
|||
{{ partial "footer.html" . }}
|
||||
</div>
|
||||
{{ partial "scripts.html" . }}
|
||||
</body>
|
||||
</html>
|
|
@ -1,11 +0,0 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
{{ partial "head.html" . }}
|
||||
|
||||
{{ if .IsHome }}
|
||||
<body class="landing">
|
||||
{{ else }}
|
||||
<body>
|
||||
{{ end }}
|
||||
{{ partial "navbar/index.html" . }}
|
||||
<div id="page-wrapper">
|
|
@ -1,2 +0,0 @@
|
|||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js" integrity="sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4" crossorigin="anonymous"></script>
|
||||
<script src="/js/app.js"></script>
|
7
layouts/partials/subtitle.html
Normal file
7
layouts/partials/subtitle.html
Normal file
|
@ -0,0 +1,7 @@
|
|||
{{ if .Params.subtitle }}
|
||||
{{ markdownify .Params.subtitle }}
|
||||
{{ else if .Params.repo }}
|
||||
{{ (getJSON "https://api.github.com/repos/" .Params.repo).description }}
|
||||
{{ else if .Params.gist }}
|
||||
{{ (getJSON "https://api.github.com/gists/" .Params.gist).description }}
|
||||
{{ end }}
|
|
@ -1,7 +0,0 @@
|
|||
{{ if .Params.subtitle }}
|
||||
<p>{{ .Params.subtitle | markdownify }}</p>
|
||||
{{ else if .Params.repo }}
|
||||
<p>{{ (getJSON "https://api.github.com/repos/" .Params.repo).description }}</p>
|
||||
{{ else if .Params.gist }}
|
||||
<p>{{ (getJSON "https://api.github.com/gists/" .Params.gist).description }}</p>
|
||||
{{ end }}
|
12
layouts/partials/summary.html
Normal file
12
layouts/partials/summary.html
Normal file
|
@ -0,0 +1,12 @@
|
|||
{{ if eq .Section "posts" }}
|
||||
{{ .Summary | plainify | chomp }}{{ if .Truncated }}…{{ end }}
|
||||
{{ else if .Params.subtitle }}
|
||||
{{ .Params.subtitle | markdownify }}
|
||||
{{ else if .Content }}
|
||||
{{ .Summary | plainify | chomp }}{{ if .Truncated }}…{{ end }}
|
||||
{{ else if .Params.repo }}
|
||||
{{ (getJSON "https://api.github.com/repos/" .Params.repo).description }}
|
||||
{{ else if .Params.gist }}
|
||||
{{ (getJSON "https://api.github.com/gists/" .Params.gist).description }}
|
||||
{{ end }}
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
{{ if eq .Section "posts" }}
|
||||
{{ .Summary | truncate .Site.Params.summary_length "..." }}
|
||||
{{ else }}
|
||||
{{ if .Params.subtitle }}
|
||||
{{ .Params.subtitle | markdownify }}
|
||||
{{ else if .Params.repo }}
|
||||
{{ (getJSON "https://api.github.com/repos/" .Params.repo).description }}
|
||||
{{ else if .Params.gist }}
|
||||
{{ (getJSON "https://api.github.com/gists/" .Params.gist).description }}
|
||||
{{ else }}
|
||||
{{ .Summary | truncate .Site.Params.summary_length "..." }}
|
||||
{{ end }}
|
||||
{{ end }}
|
|
@ -1,9 +0,0 @@
|
|||
{{ if .Params.tags }}
|
||||
<div class="align-center" id="tags">
|
||||
{{ range .Params.tags }}
|
||||
<h5><a href="/tags/{{ urlize . }}" class="badge badge-dark">
|
||||
<i class="fa fa-tag"></i> {{ . }}
|
||||
</a></h5>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ end }}
|
17
layouts/posts/list.html
Normal file
17
layouts/posts/list.html
Normal file
|
@ -0,0 +1,17 @@
|
|||
{{ define "main" }}
|
||||
<div id="main">
|
||||
<div class="container">
|
||||
{{ $paginator := .Paginate (.Data.Pages.GroupByDate "2006-01") }}
|
||||
<h1 class="display-4">{{ .Title }}</h1>
|
||||
{{ range $paginator.PageGroups }}
|
||||
{{ $month := (print .Key "-01") }}
|
||||
<h3 class="mt-5">
|
||||
<time datetime="{{ $month }}" title='{{ dateFormat "January 2006" $month }}'>{{ dateFormat "2006-01" $month }}</time>
|
||||
</h3>
|
||||
{{ range .Pages.ByDate }}
|
||||
{{ partial "list_item.html" . }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
|
@ -1,23 +0,0 @@
|
|||
{{ partial "page_start.html" . }}
|
||||
<div id="page-wrapper">
|
||||
<section id="main" class="container">
|
||||
{{ partial "content.html" . }}
|
||||
|
||||
<div class="box">
|
||||
<ul class="actions fir">
|
||||
{{ if .Params.download_url }}
|
||||
<li><a class="button special fit" href="{{ .Params.download_url }}">Download {{ .Title }}</a></li>
|
||||
{{ end }}
|
||||
{{ if .Params.repo }}
|
||||
{{ $data := getJSON "https://api.github.com/repos/" .Params.repo }}
|
||||
<li><a class="button special fit" href="{{ $data.html_url }}"><i class="fa fa-github fa-lg"></i> View Source</a></li>
|
||||
{{ end }}
|
||||
{{ if .Params.gist }}
|
||||
{{ $data := getJSON "https://api.github.com/gists/" .Params.gist }}
|
||||
<li><a class="button special fit" href="{{ $data.html_url }}"><i class="fa fa-github fa-lg"></i> View Source</a></li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
{{ partial "page_end.html" . }}
|
32
layouts/robotics/list.html
Normal file
32
layouts/robotics/list.html
Normal file
|
@ -0,0 +1,32 @@
|
|||
{{ define "main" }}
|
||||
<div id="main">
|
||||
<div class="container">
|
||||
{{ partial "content.html" . }}
|
||||
|
||||
{{ if .Content }}<hr />{{ end }}
|
||||
|
||||
{{ $parent := . }}
|
||||
{{ $sorted_pages := sort .Site.Pages (default "Title" .Params.sort_by) (default "asc" .Params.sort_order)}}
|
||||
{{ $valid_pages := where $sorted_pages ".Parent" "!=" nil }}
|
||||
{{ $valid_pages := where $valid_pages ".Params.hide_in_list" "!=" "true" }}
|
||||
{{ range where $valid_pages ".Parent.UniqueID" $parent.UniqueID }}
|
||||
{{ partial "list_item.html" . }}
|
||||
{{ end }}
|
||||
|
||||
{{ if eq .CurrentSection (.Site.GetPage "section" "robotics") }}
|
||||
<div class="mt-5" />
|
||||
{{ with .Site.GetPage "section" "robotics/smallpeice"}}
|
||||
{{ partial "content.html" . }}
|
||||
<hr />
|
||||
{{ $parent := . }}
|
||||
{{ $sorted_pages := sort .Site.Pages (default "Title" .Params.sort_by) (default "asc" .Params.sort_order)}}
|
||||
{{ $valid_pages := where $sorted_pages ".Parent" "!=" nil }}
|
||||
{{ $valid_pages := where $valid_pages ".Params.hide_in_list" "!=" "true" }}
|
||||
{{ range where $valid_pages ".Parent.UniqueID" $parent.UniqueID }}
|
||||
{{ partial "list_item.html" . }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
|
@ -1,13 +1,6 @@
|
|||
{{ $id := .Get 0 }}
|
||||
{{ $data := getJSON "https://uk.pcpartpicker.com/qapi/partlist/markup/?mode=markdown&partlist=" $id }}
|
||||
|
||||
<p>
|
||||
<a class="btn btn-primary" data-toggle="collapse" href="#collapse{{ $id }}" aria-expanded="false" aria-controls="collapse{{ $id }}">
|
||||
View Parts List
|
||||
<a class="" href="https://uk.pcpartpicker.com/user/TheOrangeOne/saved/#view={{ .Get 0 }}">
|
||||
<i class="fa fa-desktop"></i>
|
||||
View on PCPartPicker
|
||||
</a>
|
||||
<div class="collapse" id="collapse{{ $id }}">
|
||||
<div class="card card-block">
|
||||
<p>{{ $data.content | markdownify }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</p>
|
||||
|
|
|
@ -9,33 +9,31 @@
|
|||
</h3>
|
||||
</a>
|
||||
|
||||
<table>
|
||||
<table class="table table-hover table-striped">
|
||||
<caption><a href="{{ $playlist.url }}">View playlist on Spotify</a></caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>Track</th>
|
||||
<th>Artist</th>
|
||||
<th>Album</th>
|
||||
<th scope="row">Track</th>
|
||||
<th scope="row">Artist</th>
|
||||
<th scope="row">Album</th>
|
||||
<th scope="row"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{ range sort $playlist.tracks "name" }}
|
||||
<tr>
|
||||
<td>
|
||||
<span>
|
||||
<a class="icon" href="{{ .preview_url }}"><i class="fa fa-play"></i></a>
|
||||
</span>
|
||||
</td>
|
||||
<td><a href="{{ .url }}">{{ .name }}</a></td>
|
||||
<td>
|
||||
{{ range $i, $e := .artists }}{{ if $i }}, {{ end }}{{ .name }}{{ end }}
|
||||
</td>
|
||||
<td>{{ .album.name }}</td>
|
||||
<td>
|
||||
<audio controls class="mejs__player" data-plyr='{"controls": ["play", "progress"]}'>
|
||||
<source src="{{ .preview_url }}" type="audio/mpeg" />
|
||||
</audio>
|
||||
</td>
|
||||
</tr>
|
||||
{{ end }}
|
||||
<tr><td colspan="4">
|
||||
<a href="{{ $playlist.url }}">View playlist on Spotify</a>
|
||||
</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
|
20
package.json
20
package.json
|
@ -10,21 +10,21 @@
|
|||
},
|
||||
"author": "Jake Howard <git@theorangeone.net>",
|
||||
"devDependencies": {
|
||||
"browserify": "14.3.0",
|
||||
"browserify": "14.5.0",
|
||||
"eslint-config-dabapps": "github:dabapps/eslint-config-dabapps#v3.0.0",
|
||||
"markdown-spellcheck": "0.11.0",
|
||||
"node-sass": "4.5.2",
|
||||
"sass-lint": "1.10.2",
|
||||
"yaml-lint": "0.0.4"
|
||||
"markdown-spellcheck": "1.2.0",
|
||||
"node-sass": "4.6.1",
|
||||
"sass-lint": "1.12.1",
|
||||
"yaml-lint": "1.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"bootstrap": "4.0.0-beta",
|
||||
"club-alpha": "0.0.3",
|
||||
"bootstrap": "4.0.0-beta.2",
|
||||
"font-awesome": "4.7.0",
|
||||
"jquery": "3.2.1",
|
||||
"lg-thumbnail": "1.0.3",
|
||||
"lightgallery": "1.4.0",
|
||||
"pygments-css": "1.0.0",
|
||||
"lg-thumbnail": "1.1.0",
|
||||
"lightgallery": "1.6.4",
|
||||
"plyr": "2.0.17",
|
||||
"speedpack": "0.2.0",
|
||||
"tstatic": "1.1.0"
|
||||
}
|
||||
}
|
||||
|
|
BIN
static/src/img/new-site-screenshot.png
Normal file
BIN
static/src/img/new-site-screenshot.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.1 MiB |
|
@ -1,42 +0,0 @@
|
|||
'use strict';
|
||||
/*
|
||||
Alpha by HTML5 UP
|
||||
html5up.net | @ajlkn
|
||||
Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
|
||||
*/
|
||||
|
||||
$(function() {
|
||||
var $body = $('body');
|
||||
|
||||
// Dropdowns.
|
||||
$('#nav > ul').dropotron({
|
||||
alignment: 'right'
|
||||
});
|
||||
|
||||
// Navigation Button.
|
||||
$(
|
||||
'<div id="navButton">' +
|
||||
'<a href="#navPanel" class="toggle"></a>' +
|
||||
'</div>'
|
||||
).appendTo($body);
|
||||
|
||||
// Navigation Panel.
|
||||
$(
|
||||
'<div id="navPanel">' +
|
||||
'<nav>' +
|
||||
$('#nav').navList() +
|
||||
'</nav>' +
|
||||
'</div>'
|
||||
)
|
||||
.appendTo($body)
|
||||
.panel({
|
||||
delay: 500,
|
||||
hideOnClick: true,
|
||||
hideOnSwipe: true,
|
||||
resetScroll: true,
|
||||
resetForms: true,
|
||||
side: 'left',
|
||||
target: $body,
|
||||
visibleClass: 'navPanel-visible'
|
||||
});
|
||||
});
|
|
@ -3,13 +3,10 @@
|
|||
require('./jquery-global');
|
||||
require('bootstrap');
|
||||
|
||||
// Install alpha things
|
||||
require('club-alpha/assets/js/jquery.dropotron.min');
|
||||
require('club-alpha/assets/js/util');
|
||||
require('lightgallery/dist/js/lightgallery');
|
||||
require('lg-thumbnail/dist/lg-thumbnail');
|
||||
require('./alpha/main');
|
||||
require('./search');
|
||||
|
||||
require('plyr').setup();
|
||||
|
||||
|
||||
$('.image').each(function () { // setup div-image hybrids
|
||||
|
@ -30,9 +27,19 @@ $(document).ready(function () {
|
|||
preload: 2,
|
||||
download: false
|
||||
});
|
||||
|
||||
// HACK: ToC has blank li if no initial header
|
||||
$('#TableOfContents').each(function () {
|
||||
var ele = $(this);
|
||||
if (ele.find('a').length <= 3) {
|
||||
ele.parent().remove();
|
||||
} else if (ele.children('ul').children('li').length === 1) {
|
||||
ele.children('ul').replaceWith(ele.children('ul').children('li').children('ul'));
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$('.navbar-brand').bind('click', function (event) {
|
||||
$('.navbar-brand').on('click', function (event) {
|
||||
if ($('html').scrollTop() > 100) {
|
||||
$('html, body').stop().animate({
|
||||
scrollTop: 0
|
||||
|
|
|
@ -1,18 +0,0 @@
|
|||
'use strict';
|
||||
|
||||
$(document).ready(function() {
|
||||
var FADE_SETTINGS = {
|
||||
duration: 400
|
||||
};
|
||||
|
||||
$('input#search').keyup(function() {
|
||||
var filter = new RegExp($(this).val(), 'gi');
|
||||
$('div.search-results > div').each(function() {
|
||||
if ($(this).text().search(filter) === -1) {
|
||||
$(this).fadeOut(FADE_SETTINGS);
|
||||
} else {
|
||||
$(this).fadeIn(FADE_SETTINGS);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
1
static/src/scss/alpha.min.css
vendored
1
static/src/scss/alpha.min.css
vendored
File diff suppressed because one or more lines are too long
|
@ -1,50 +1,26 @@
|
|||
$fa-font-path: "../fonts";
|
||||
@import "node_modules/font-awesome/scss/font-awesome";
|
||||
|
||||
@import "node_modules/bootstrap/scss/bootstrap-grid";
|
||||
@import "node_modules/bootstrap/scss/_mixins";
|
||||
@import "node_modules/bootstrap/scss/_transitions";
|
||||
@import "node_modules/bootstrap/scss/_card";
|
||||
@import "node_modules/bootstrap/scss/_badge";
|
||||
@import "node_modules/lightgallery/src/sass/lightgallery";
|
||||
@import "variables";
|
||||
|
||||
@import "highlight"; // Generated by Hugo
|
||||
|
||||
@import "alpha.min";
|
||||
@import "node_modules/lightgallery/src/sass/lightgallery";
|
||||
@import "node_modules/bootstrap/scss/bootstrap";
|
||||
@import "node_modules/plyr/src/scss/plyr";
|
||||
|
||||
.box .box {
|
||||
border-radius: 0;
|
||||
|
||||
html, body {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.box {
|
||||
width: 100%;
|
||||
a {
|
||||
transition: color 0.5s;
|
||||
color: $primary;
|
||||
|
||||
h1 {
|
||||
font-size: 2.75em;
|
||||
&:hover {
|
||||
color: $black;
|
||||
}
|
||||
|
||||
img {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.box a .image {
|
||||
margin-top: -3em !important;
|
||||
border-radius: 0 !important;
|
||||
}
|
||||
|
||||
.dropotron {
|
||||
width: initial;
|
||||
}
|
||||
|
||||
ul.actions {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#banner {
|
||||
background-attachment: fixed;
|
||||
background-image: url("../img/header.jpg");
|
||||
background-size: 100%;
|
||||
}
|
||||
|
||||
pre code {
|
||||
|
@ -53,7 +29,6 @@ pre code {
|
|||
border-radius: 0;
|
||||
background: none;
|
||||
padding: 0;
|
||||
font-size: 0.75em;
|
||||
}
|
||||
|
||||
code {
|
||||
|
@ -75,68 +50,6 @@ code {
|
|||
}
|
||||
}
|
||||
|
||||
a.no-underline {
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
a .icon {
|
||||
cursor: inherit !important;
|
||||
}
|
||||
|
||||
blockquote p {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
#header nav > ul > li a {
|
||||
padding: 0 0.8em;
|
||||
}
|
||||
|
||||
|
||||
nav {
|
||||
a {
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
|
||||
@media screen and (max-width: 840px) {
|
||||
overflow: hidden;
|
||||
|
||||
&.link.depth-2 {
|
||||
display: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: 840px) {
|
||||
&.show-mobile {
|
||||
display: none !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.dropotron.level-0 {
|
||||
margin-top: 0.4em;
|
||||
}
|
||||
|
||||
.dropotron.level-1 {
|
||||
right: 100% !important;
|
||||
left: initial !important;
|
||||
margin-top: 0.1em;
|
||||
}
|
||||
|
||||
#main > header {
|
||||
margin-bottom: 2em;
|
||||
|
||||
p {
|
||||
padding: 1em 0 0.5em;
|
||||
}
|
||||
|
||||
small {
|
||||
display: block;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
}
|
||||
|
||||
.yt-embed {
|
||||
position: relative;
|
||||
padding-top: 30px;
|
||||
|
@ -156,6 +69,7 @@ nav {
|
|||
#light-gallery {
|
||||
a {
|
||||
display: inline-block;
|
||||
margin-bottom: $grid-gutter-width;
|
||||
border-bottom: 0;
|
||||
cursor: zoom-in;
|
||||
width: 100%;
|
||||
|
@ -170,25 +84,108 @@ nav {
|
|||
opacity: 0.7;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.index-list {
|
||||
margin-top: 4em;
|
||||
}
|
||||
|
||||
#tags > * {
|
||||
display: inline-block;
|
||||
padding: 0 2px;
|
||||
}
|
||||
|
||||
.search-input-container {
|
||||
margin: 20px 40px;
|
||||
|
||||
input {
|
||||
text-align: center;
|
||||
& + h4 {
|
||||
margin-top: -$grid-gutter-width / 2;
|
||||
}
|
||||
}
|
||||
|
||||
table td {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.navbar {
|
||||
padding-top: 0;
|
||||
padding-bottom: 0;
|
||||
|
||||
.navbar-brand {
|
||||
font-size: $font-size-base;
|
||||
}
|
||||
|
||||
.nav-link {
|
||||
padding-right: $font-size-base !important;
|
||||
padding-left: $font-size-base !important;
|
||||
}
|
||||
}
|
||||
|
||||
.bg-black {
|
||||
background-color: $black;
|
||||
}
|
||||
|
||||
|
||||
#index-header {
|
||||
background-image: url("/img/header.jpg");
|
||||
width: 100%;
|
||||
height: calc(100% - 110px);
|
||||
}
|
||||
|
||||
footer {
|
||||
position: static;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
height: 110px;
|
||||
color: $gray-700;
|
||||
|
||||
a {
|
||||
color: $gray-700;
|
||||
|
||||
&:hover {
|
||||
color: $black;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#main {
|
||||
margin-top: $spacer * 6;
|
||||
}
|
||||
|
||||
.list-page-item {
|
||||
.img-wrapper {
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
.image {
|
||||
width: 100%;
|
||||
height: 10vh;
|
||||
}
|
||||
}
|
||||
|
||||
#TableOfContents {
|
||||
& > ul {
|
||||
margin-bottom: 0;
|
||||
padding-left: $spacer;
|
||||
}
|
||||
}
|
||||
|
||||
ul ul, ol ol {
|
||||
padding-left: $spacer * 1.5;
|
||||
}
|
||||
|
||||
pre.chroma {
|
||||
margin: $spacer 0;
|
||||
padding: $spacer;
|
||||
}
|
||||
|
||||
.content {
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
margin-top: $spacer;
|
||||
}
|
||||
}
|
||||
|
||||
.plyr {
|
||||
min-width: initial;
|
||||
}
|
||||
|
||||
p code {
|
||||
@extend .chroma;
|
||||
padding: $spacer * 0.25;
|
||||
}
|
||||
|
||||
.header-image {
|
||||
width: 100%;
|
||||
height: 35vh;
|
||||
}
|
||||
|
||||
.tag {
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
|
1
static/src/scss/variables.scss
Normal file
1
static/src/scss/variables.scss
Normal file
|
@ -0,0 +1 @@
|
|||
$primary: #E85537;
|
Loading…
Reference in a new issue