From 925d1aa7e35bfb55c542ae86964e365048dd416f Mon Sep 17 00:00:00 2001 From: Jake Howard Date: Fri, 13 May 2016 20:55:08 +0100 Subject: [PATCH] Remove old Django stuff etc --- .gitignore | 3 - .spelling | 38 -------- build | 9 -- data/context.yml | 6 -- data/page_context.yml | 9 -- data/path_switch.yml | 1 - manage.py | 10 --- project/__init__.py | 0 project/blog/__init__.py | 0 project/blog/tests.py | 67 -------------- project/blog/urls.py | 6 -- project/blog/utils.py | 25 ------ project/blog/views.py | 22 ----- project/common/__init__.py | 0 project/common/data.py | 46 ---------- project/pages/__init__.py | 0 project/pages/tests.py | 19 ---- project/pages/urls.py | 7 -- project/pages/utils.py | 29 ------ project/pages/views.py | 33 ------- project/settings.py | 90 ------------------- project/urls.py | 7 -- project/wsgi.py | 8 -- requirements.txt | 10 --- scripts/clean.sh | 15 ---- scripts/fresh.sh | 24 ----- scripts/get-private-data.sh | 9 -- templates/about/index.html | 41 --------- templates/about/me.html | 19 ---- templates/about/website.md | 14 --- templates/base.html | 63 ------------- templates/blog/post.html | 18 ---- templates/college/student-server.md | 15 ---- templates/content_base.html | 21 ----- templates/core/404.html | 23 ----- templates/core/no-js.html | 73 --------------- templates/email/base.html | 11 --- templates/email/contact_message.html | 15 ---- templates/index.html | 74 --------------- templates/markdown_content.html | 9 -- templates/projects/attack-on-blocks.md | 18 ---- templates/projects/bsod-enabler.md | 19 ---- templates/projects/dotfiles.md | 14 --- .../projects/hipchat-emoticons-for-all.md | 17 ---- templates/projects/index.html | 17 ---- templates/projects/morse-code-decoder.md | 15 ---- templates/projects/wiki-game-solver.md | 26 ------ templates/projects/yoga-pal.md | 13 --- templates/robotics/2014/index.html | 38 -------- templates/robotics/2015/code.md | 21 ----- templates/robotics/2015/index.html | 38 -------- templates/robotics/2015/robot.html | 47 ---------- templates/robotics/index.html | 64 ------------- 53 files changed, 1236 deletions(-) delete mode 100644 .spelling delete mode 100644 data/context.yml delete mode 100644 data/page_context.yml delete mode 100644 data/path_switch.yml delete mode 100755 manage.py delete mode 100644 project/__init__.py delete mode 100644 project/blog/__init__.py delete mode 100644 project/blog/tests.py delete mode 100644 project/blog/urls.py delete mode 100644 project/blog/utils.py delete mode 100644 project/blog/views.py delete mode 100644 project/common/__init__.py delete mode 100644 project/common/data.py delete mode 100644 project/pages/__init__.py delete mode 100644 project/pages/tests.py delete mode 100644 project/pages/urls.py delete mode 100644 project/pages/utils.py delete mode 100644 project/pages/views.py delete mode 100644 project/settings.py delete mode 100644 project/urls.py delete mode 100644 project/wsgi.py delete mode 100755 scripts/clean.sh delete mode 100755 scripts/fresh.sh delete mode 100755 scripts/get-private-data.sh delete mode 100644 templates/about/index.html delete mode 100644 templates/about/me.html delete mode 100644 templates/about/website.md delete mode 100644 templates/base.html delete mode 100644 templates/blog/post.html delete mode 100644 templates/college/student-server.md delete mode 100644 templates/content_base.html delete mode 100644 templates/core/404.html delete mode 100644 templates/core/no-js.html delete mode 100644 templates/email/base.html delete mode 100644 templates/email/contact_message.html delete mode 100644 templates/index.html delete mode 100644 templates/markdown_content.html delete mode 100644 templates/projects/attack-on-blocks.md delete mode 100644 templates/projects/bsod-enabler.md delete mode 100644 templates/projects/dotfiles.md delete mode 100644 templates/projects/hipchat-emoticons-for-all.md delete mode 100644 templates/projects/index.html delete mode 100644 templates/projects/morse-code-decoder.md delete mode 100644 templates/projects/wiki-game-solver.md delete mode 100644 templates/projects/yoga-pal.md delete mode 100644 templates/robotics/2014/index.html delete mode 100644 templates/robotics/2015/code.md delete mode 100644 templates/robotics/2015/index.html delete mode 100644 templates/robotics/2015/robot.html delete mode 100644 templates/robotics/index.html diff --git a/.gitignore b/.gitignore index 9e45b85..05c02c9 100644 --- a/.gitignore +++ b/.gitignore @@ -57,6 +57,3 @@ docs/_build/ # PyBuilder target/ - -private/ -database.db diff --git a/.spelling b/.spelling deleted file mode 100644 index 30b8942..0000000 --- a/.spelling +++ /dev/null @@ -1,38 +0,0 @@ -# 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 -Django -SQLite -eg -MyWindowsHosting -nginx -backends -PyGame -easter -_Enabler -Hipchat -DabApps -JakeSidSmith -facepalm -notsureif -wat -premis -hipchat -plugin -firefox -Jetpack -Javascript -facebook -github -morse -wikipedia -iframe -querystring -javascript -jQuery -gists -Lenovo -Collyer's -til diff --git a/build b/build index 6437486..26cc685 100755 --- a/build +++ b/build @@ -14,15 +14,6 @@ set -e pyvenv env env/bin/pip install -r requirements.txt --upgrade -scripts/get-private-data.sh npm install npm run build $@ - -env/bin/python manage.py collectstatic --noinput - -if [[ $BUILD_PRODUCTION ]] -then - echo ">> Running Migrations..." - env/bin/python manage.py migrate -fi diff --git a/data/context.yml b/data/context.yml deleted file mode 100644 index ef3fb5e..0000000 --- a/data/context.yml +++ /dev/null @@ -1,6 +0,0 @@ -links: - github: https://github.com/RealOrangeOne - twitter: https://twitter.com/RealOrangeOne - instagram: https://instagram.com/RealOrangeOne - youtube: https://www.youtube.com/user/TheOrangeOneOfficial - reddit: https://www.reddit.com/user/realorangeone diff --git a/data/page_context.yml b/data/page_context.yml deleted file mode 100644 index 4c9dcf1..0000000 --- a/data/page_context.yml +++ /dev/null @@ -1,9 +0,0 @@ -index: - body_class: index - html_title: Homepage - -projects/hipchat-emoticons-for-all: - header_image: https://hipchat-magnolia-cdn.atlassian.com/assets/img/hipchat/hipchat_og_image.jpg - -projects/yoga-pal: - header_image: http://www.lenovo.com/images/OneWebImages/SubSeries/gallery/laptops/IdeaPad-Yoga-13-Convertible-Laptop-PC-Clementine-Orange-Closed-Cover-View-gallery-940x529.jpg diff --git a/data/path_switch.yml b/data/path_switch.yml deleted file mode 100644 index 7a0d12c..0000000 --- a/data/path_switch.yml +++ /dev/null @@ -1 +0,0 @@ -college/attack-on-blocks: projects/attack-on-blocks diff --git a/manage.py b/manage.py deleted file mode 100755 index 82cfa83..0000000 --- a/manage.py +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env python -import os -import sys - -if __name__ == "__main__": - os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings") - - from django.core.management import execute_from_command_line - - execute_from_command_line(sys.argv) diff --git a/project/__init__.py b/project/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/project/blog/__init__.py b/project/blog/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/project/blog/tests.py b/project/blog/tests.py deleted file mode 100644 index fc705e3..0000000 --- a/project/blog/tests.py +++ /dev/null @@ -1,67 +0,0 @@ -from django.test import TestCase -import requests_mock, json -from . import utils -from django.core.urlresolvers import reverse - - -@requests_mock.mock() -class WordPressAPITestCase(TestCase): - def setUp(self): - self.test_blog_data = { - "title": "Test Blog Post", - "ID": 1, - "content": "

Test blog post content

", - "slug": "test-post" - } - self.invalid_blog_data = { - "title": "Invalid blog post", - "content": "

", - "slug": "invalid" - } - - def test_gets_correct_data(self, m): - payload = json.dumps(self.test_blog_data) - m.get(utils.build_url(self.test_blog_data['slug']), text=payload) - blog_data = utils.get_post(self.test_blog_data['slug']) - self.assertEqual(blog_data, self.test_blog_data) - - def test_invalid_response(self, m): - payload = json.dumps(self.invalid_blog_data) - m.get(utils.build_url(self.invalid_blog_data['slug']), text=payload) - blog_data = utils.get_post(self.invalid_blog_data['slug']) - self.assertFalse(blog_data) - - def test_invalid_status(self, m): - payload = json.dumps(self.test_blog_data) - m.get(utils.build_url(self.test_blog_data['slug']), text=payload, status_code=500) - blog_data = utils.get_post(self.test_blog_data['slug']) - self.assertFalse(blog_data) - - def test_no_slug(self, m): - blog_data = utils.get_post('') - self.assertFalse(blog_data) - - -@requests_mock.mock() -class BlogViewTestCase(TestCase): - def setUp(self): - self.test_blog_data = { - "title": "Test Blog Post", - "ID": 1, - "content": "

Test blog post content

", - "slug": "test-post", - "date": "2000-01-01T18:05:00+00:00" - } - - def test_accessable(self, m): - payload = json.dumps(self.test_blog_data) - m.get(utils.build_url(self.test_blog_data['slug']), text=payload) - response = self.client.get(reverse('blog:blog-post', args=[self.test_blog_data['slug']])) - self.assertEqual(response.status_code, 200) - - def test_correct_content(self, m): - payload = json.dumps(self.test_blog_data) - m.get(utils.build_url(self.test_blog_data['slug']), text=payload) - response = self.client.get(reverse('blog:blog-post', args=[self.test_blog_data['slug']])) - self.assertContains(response, self.test_blog_data['content']) - self.assertEqual(response.context['html_title'], self.test_blog_data['title']) diff --git a/project/blog/urls.py b/project/blog/urls.py deleted file mode 100644 index 51d5239..0000000 --- a/project/blog/urls.py +++ /dev/null @@ -1,6 +0,0 @@ -from django.conf.urls import url -from . import views - -urlpatterns = [ - url(r'^(?P.+)/?$', views.BlogView.as_view(), name='blog-post'), -] diff --git a/project/blog/utils.py b/project/blog/utils.py deleted file mode 100644 index a2af234..0000000 --- a/project/blog/utils.py +++ /dev/null @@ -1,25 +0,0 @@ -import requests, iso8601 -from django.conf import settings - -API_PATH = "https://public-api.wordpress.com/rest/v1.1/sites/{0}/posts/slug:{1}" - - -def build_url(slug): - if not slug: - return - return API_PATH.format(settings.WORDPRESS_URL, slug) - - -def get_post(slug): - if not slug: - return - response = requests.get(build_url(slug)) - - if response.status_code != 200: - return - data = response.json() - return data if "ID" in data else False - - -def reformat_date(iso_date): - return iso8601.parse_date(iso_date).strftime("%x %I:%M") diff --git a/project/blog/views.py b/project/blog/views.py deleted file mode 100644 index 6ceed9d..0000000 --- a/project/blog/views.py +++ /dev/null @@ -1,22 +0,0 @@ -from django.views.generic import TemplateView -from .utils import get_post, reformat_date -from django.http import Http404 - - -class BlogView(TemplateView): - template_name = "blog/post.html" - - def get_context_data(self, **kwargs): - context = super().get_context_data(**kwargs) - context['blog'] = self.blog_data - context['blog']['date'] = reformat_date(self.blog_data['date']) - context['html_title'] = self.blog_data['title'] - if 'featured_image' in self.blog_data: - context['header_image'] = self.blog_data['featured_image'] - return context - - def dispatch(self, request, *args, **kwargs): - self.blog_data = get_post(kwargs['slug']) - if not self.blog_data: - raise Http404 - return super().dispatch(request, *args, **kwargs) diff --git a/project/common/__init__.py b/project/common/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/project/common/data.py b/project/common/data.py deleted file mode 100644 index 1794cd2..0000000 --- a/project/common/data.py +++ /dev/null @@ -1,46 +0,0 @@ -import os.path -import yaml -from glob import glob -from project.pages.utils import get_title_from_markdown, parse_content - - -def get_data_from_file(base_dir, filename): - with open(os.path.join(base_dir, 'data', filename)) as data_file: - return yaml.load(data_file) or {} - - -def generate_config(base_dir): - default = get_data_from_file(base_dir, 'context.yml') - page = get_data_from_file(base_dir, 'page_context.yml') - switcher = get_data_from_file(base_dir, 'path_switch.yml') - - # Add projects config - default['projects'] = generate_projects(base_dir) - # Join projects config with it's page context - for i in range(len(default['projects'])): - project = default['projects'][i] - if project['path'] in page: # If there's a custom config - default['projects'][i] = dict(project, **page[project['path']]) - - return default, page, switcher - - -def generate_projects(base_dir): - projects_path = os.path.join(base_dir, 'templates/projects') - files = [] - for path in glob(projects_path + '/*.*'): - filename = path.replace(projects_path, '') - if filename == '/index.html': - continue - with open(path) as f: - if filename.split('.')[1] == 'md': - parsed_content = parse_content(f.read(), filename.split('.')[1]) - filename = get_title_from_markdown(parsed_content) - else: - filename = filename.split('.')[0] - files.append({ - "name": filename, - "path": 'projects' + path.replace(projects_path, '').split('.')[0], - "url": '/projects' + path.replace(projects_path, '').split('.')[0], - }) - return files diff --git a/project/pages/__init__.py b/project/pages/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/project/pages/tests.py b/project/pages/tests.py deleted file mode 100644 index 7f2554e..0000000 --- a/project/pages/tests.py +++ /dev/null @@ -1,19 +0,0 @@ -from django.test import TestCase -from django.conf import settings -import os.path -from glob import glob - - -class PagesTestCase(TestCase): - def setUp(self): - directories = glob(os.path.join(settings.BASE_DIR, 'templates') + '/**/*.*') - self.urls = [] - for directory in directories: - if 'email' in directory or 'blog' in directory: - continue - self.urls.append(directory.replace(os.path.join(settings.BASE_DIR, 'templates'), '').split('.')[0].replace('index', '')) - - def test_pages_accessable(self): - for path in self.urls: - response = self.client.get(path) - self.assertEqual(response.status_code, 200) diff --git a/project/pages/urls.py b/project/pages/urls.py deleted file mode 100644 index b597e68..0000000 --- a/project/pages/urls.py +++ /dev/null @@ -1,7 +0,0 @@ -from django.conf.urls import url -from .views import page_view - - -urlpatterns = [ - url(r'^(?P.*)', page_view, name='page'), -] diff --git a/project/pages/utils.py b/project/pages/utils.py deleted file mode 100644 index c14cf37..0000000 --- a/project/pages/utils.py +++ /dev/null @@ -1,29 +0,0 @@ -from django.conf import settings -from bs4 import BeautifulSoup -import markdown2 - - -def get_context(path): - if path in settings.PAGE_CONTEXT: - context = dict(settings.DEFAULT_CONTEXT, **settings.PAGE_CONTEXT[path]) - else: - context = dict(settings.DEFAULT_CONTEXT) - return context - - -def get_title_from_markdown(md): - html_tree = BeautifulSoup(md, "html.parser") - tag = html_tree.find('h1') - return tag.contents[0] - - -def parse_content(content, extension): - if extension == 'md': - return markdown2.markdown(content) - return content - - -def swap_page(path): - if path in settings.PAGE_SWITCH: - return settings.PAGE_SWITCH[path] - return path diff --git a/project/pages/views.py b/project/pages/views.py deleted file mode 100644 index f5ce62a..0000000 --- a/project/pages/views.py +++ /dev/null @@ -1,33 +0,0 @@ -import os.path -from django.conf import settings -from django.http import HttpResponse, Http404 -from django.template.loader import get_template -from .utils import get_context, parse_content, get_title_from_markdown, swap_page - - -def page_view(request, path): - template = None - if path.endswith('/'): # Strip trailing slash - path = path[:-1] - - path = swap_page(path) - - if os.path.isdir(os.path.join(settings.BASE_DIR, 'templates', path)): - path = os.path.join(path, 'index') - for extension in ['md', 'html']: - try: - template = get_template("{}.{}".format(path, extension)) - break - except: - pass - if not template: - raise Http404 - context = get_context(path) - parsed_content = parse_content(template.render(context, request), extension) - if extension == 'md': - template = get_template('markdown_content.html') - context['markdown_content'] = parsed_content - context['page_title'] = get_title_from_markdown(parsed_content) - context['html_title'] = context['page_title'] - parsed_content = template.render(context, request) - return HttpResponse(parsed_content) diff --git a/project/settings.py b/project/settings.py deleted file mode 100644 index f7933f5..0000000 --- a/project/settings.py +++ /dev/null @@ -1,90 +0,0 @@ -# Build paths inside the project like this: os.path.join(BASE_DIR, ...) -import dj_database_url, os -from private import export - -BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) - - -# Quick-start development settings - unsuitable for production -# See https://docs.djangoproject.com/en/1.8/howto/deployment/checklist/ - -# SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = export('SECRET_KEY') - -# SECURITY WARNING: don't run with debug turned on in production! -DEBUG = True - -ALLOWED_HOSTS = ['too.ctf.sh', 'theorangeone.net'] - -# Application definition -INSTALLED_APPS = ( - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.staticfiles', - - 'project.pages', - 'project.common', - 'project.blog' -) - -MIDDLEWARE_CLASSES = ( - 'django.contrib.sessions.middleware.SessionMiddleware', - 'django.middleware.common.CommonMiddleware', - 'django.middleware.csrf.CsrfViewMiddleware', - 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', - 'django.contrib.messages.middleware.MessageMiddleware', - 'django.middleware.clickjacking.XFrameOptionsMiddleware', - 'django.middleware.security.SecurityMiddleware', -) - -ROOT_URLCONF = 'project.urls' - -TEMPLATES = [ - { - 'BACKEND': 'django.template.backends.django.DjangoTemplates', - 'DIRS': [os.path.join(BASE_DIR, 'templates')], - 'APP_DIRS': True, - 'OPTIONS': { - 'context_processors': [ - 'django.template.context_processors.debug', - 'django.template.context_processors.request', - 'django.contrib.auth.context_processors.auth', - 'django.contrib.messages.context_processors.messages', - ], - }, - }, -] - -WSGI_APPLICATION = 'project.wsgi.application' - - -# Database -# https://docs.djangoproject.com/en/1.8/ref/settings/#databases -DATABASES = { - 'default': dj_database_url.config(default='sqlite://memory') -} - -EMAIL_BACKEND = os.environ['EMAIL_BACKEND'] - -# Internationalization -# https://docs.djangoproject.com/en/1.8/topics/i18n/ -LANGUAGE_CODE = 'en-gb' -TIME_ZONE = 'UTC' -USE_I18N = True -USE_L10N = True -USE_TZ = True - -# Static files (CSS, JavaScript, Images) -# https://docs.djangoproject.com/en/1.8/howto/static-files/ -STATIC_URL = '/static/' -STATIC_ROOT = os.path.join(BASE_DIR, 'collected-static') -STATICFILES_DIRS = ( - os.path.join(BASE_DIR, 'static', 'build'), -) - -WORDPRESS_URL = "realorangeone.wordpress.com" - -# Generate config data -from project.common.data import generate_config -DEFAULT_CONTEXT, PAGE_CONTEXT, PAGE_SWITCH = generate_config(BASE_DIR) diff --git a/project/urls.py b/project/urls.py deleted file mode 100644 index 47926c7..0000000 --- a/project/urls.py +++ /dev/null @@ -1,7 +0,0 @@ -from django.conf.urls import include, url - - -urlpatterns = [ - url(r'^blog/', include('project.blog.urls', namespace='blog')), - url(r'', include('project.pages.urls', namespace='pages')) -] diff --git a/project/wsgi.py b/project/wsgi.py deleted file mode 100644 index 81b9179..0000000 --- a/project/wsgi.py +++ /dev/null @@ -1,8 +0,0 @@ -import os -os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings") - -from django.core.wsgi import get_wsgi_application -from whitenoise.django import DjangoWhiteNoise - -application = get_wsgi_application() -application = DjangoWhiteNoise(application) diff --git a/requirements.txt b/requirements.txt index 09e7b03..9330cf2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,13 +1,3 @@ -beautifulsoup4==4.4.1 coverage==4.0.3 colorama==0.3.6 -Django==1.8.11 -dj-database-url==0.3.0 flake8==2.5.0 -iso8601==0.1.11 -markdown2==2.3.0 -PyYAML==3.11 -requests==2.9.1 -requests-mock==0.7.0 -whitenoise==2.0.6 -waitress==0.8.10 diff --git a/scripts/clean.sh b/scripts/clean.sh deleted file mode 100755 index 0064077..0000000 --- a/scripts/clean.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env bash - -set -e - - -echo ">> Removing VirtualEnv..." -rm -rf env/ - -echo ">> Removing Node Modules..." -rm -rf node_modules/ - -echo ">> Removing Static Build Directory..." -rm -rf static/build/ - -echo "> Cleaning Complete." diff --git a/scripts/fresh.sh b/scripts/fresh.sh deleted file mode 100755 index 4338659..0000000 --- a/scripts/fresh.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/env bash - -set -e - - -echo ">> Removing VirtualEnv..." -rm -rf env/ - -echo ">> Removing Collected Static Files..." -rm -rf collected-static/ - -echo ">> Removing Private Data..." -rm -rf private/ - -echo ">> Removing Node Modules..." -rm -rf node_modules/ - -echo ">> Removing Static Build Directory..." -rm -rf static/build/ - -echo ">> Removing Stray Files and Folders..." -rm -rf htmlcov/ .coverage - -echo "> Much Fresher!" diff --git a/scripts/get-private-data.sh b/scripts/get-private-data.sh deleted file mode 100755 index c4b6d0e..0000000 --- a/scripts/get-private-data.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env bash - -set -e - -echo ">> Removing old Private Data..." -rm -rf private/ - -echo ">> Getting Private Data..." -git clone git@bitbucket.org:TheOrangeOne/theorangeone.net-site-private-data.git --branch master --single-branch private/ diff --git a/templates/about/index.html b/templates/about/index.html deleted file mode 100644 index dd5ce6a..0000000 --- a/templates/about/index.html +++ /dev/null @@ -1,41 +0,0 @@ -{% extends 'content_base.html' %} -{% block pageTitle %}About all the things{% endblock %} - -{% block content %} -
-
-
-
-

- -

-
-

About Website

-

- Some info about my website, which clearly works well as you're using it right now! -

-

- More Info -

-
-
-
-
-
-

- -

-
-

About Me

-

- Some info about me. Although not very much. Because Privacy! -

-

- More Info -

-
-
-
-
-
-{% endblock %} diff --git a/templates/about/me.html b/templates/about/me.html deleted file mode 100644 index c6546af..0000000 --- a/templates/about/me.html +++ /dev/null @@ -1,19 +0,0 @@ -{% extends 'content_base.html' %} - -{% block pageTitle %}About Me{% endblock %} - -{% block content %} - -
-
-
-

Stuff

-
-
-
-
-
-
- - -{% endblock %} diff --git a/templates/about/website.md b/templates/about/website.md deleted file mode 100644 index b567582..0000000 --- a/templates/about/website.md +++ /dev/null @@ -1,14 +0,0 @@ -# About my website -My website is the culmination of all my knowledge, compiled into 1 place. It not only contains all my projects, but it in itself is a project. Making sure this website works properly is a tall order, especially considering it's self hosted. - -## The Website -The website itself is written in python, using the Django framework, and a SQLite database. For what I need it's more than overkill, but hey, why not! - -I went with the Django framework because it's what I use with at work, as well as the fact it's simple, clean and easy. It also allows for some server side assets, eg blogging. - -The only reason I have a database is because certain sections require it. For this reason I went with SQLite, because it's really lightweight and simple. - -## The server -The website is hosted on my UK VPS. Previous versions have been hosted on 1&1 and MyWindowsHosting. - -The Django application itself is served using waitress. This get's it's port from a custom reverse proxy allowing me to host multiple sites on a single server easily. This is the same one I use for local development. The main web-facing server is nginx, because it's simple to setup, and damn fast! diff --git a/templates/base.html b/templates/base.html deleted file mode 100644 index 11ed523..0000000 --- a/templates/base.html +++ /dev/null @@ -1,63 +0,0 @@ -{% load staticfiles %} - - - - {{ html_title }} | TheOrangeOne - - - - - - - -
- {% block baseContent%}{% endblock %} -
- - - - - {% if js_redirect %} - - {% endif %} - - diff --git a/templates/blog/post.html b/templates/blog/post.html deleted file mode 100644 index 2a0339c..0000000 --- a/templates/blog/post.html +++ /dev/null @@ -1,18 +0,0 @@ -{% extends 'content_base.html' %} - -{% block pageTitle %}{{ html_title }}{% endblock %} - -{% block content %} -
-
-
- {{ blog.content | safe }} -
-
-
Published: {{ blog.date }}
-
{{ blog.like_count }}
-
View Post
-
-
-
-{% endblock %} diff --git a/templates/college/student-server.md b/templates/college/student-server.md deleted file mode 100644 index 3186e17..0000000 --- a/templates/college/student-server.md +++ /dev/null @@ -1,15 +0,0 @@ -# Student Server -Back 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 majorly out of date, and no one really new how to use it properly. 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, the students doing A2 computing. I wasn't expecting this to amount to over 50 user accounts that needed to be created, and permissions setup for their accounts. Fortunately Alex had started writing a basic script for this, which I quickly modified. - -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! diff --git a/templates/content_base.html b/templates/content_base.html deleted file mode 100644 index e8ad6f0..0000000 --- a/templates/content_base.html +++ /dev/null @@ -1,21 +0,0 @@ -{% extends 'base.html' %} - -{% block baseBodyClass %} - {% block bodyClass %}{% endblock %} -{% endblock%} - -{% block baseContent %} -
-
-

{% block pageTitle %}{% endblock %}

- {% block header_image %} - {% if header_image %} -
- {% endif %} - {% endblock %} - -
- -
- {% block content %}{% endblock %} -{% endblock %} diff --git a/templates/core/404.html b/templates/core/404.html deleted file mode 100644 index f55ae54..0000000 --- a/templates/core/404.html +++ /dev/null @@ -1,23 +0,0 @@ -{% extends 'base.html' %} - -{% block htmltitle %}404 - It's not here!{% endblock %} - -{% block bodyClass %}four-o-four{% endblock %} - -{% block content %} -
-

Uh Oh - There's nothing here!

-
-
-
-
-

The page you were looking for could not be found.

-

Don't worry, I've send these badass tech ninjas to go and find it. Rest assured it will be found.

-
-
-
-
-

Nope, there's nothing more down here either. Why not Go back or Return Home

-
-
-{% endblock %} \ No newline at end of file diff --git a/templates/core/no-js.html b/templates/core/no-js.html deleted file mode 100644 index f35d402..0000000 --- a/templates/core/no-js.html +++ /dev/null @@ -1,73 +0,0 @@ -{% extends 'base.html' %} -{% load staticfiles %} -{% block htmltitle %}Javascript is Disabled!{% endblock %} -{% block bodyClass %}no-js{% endblock %} -{% block content %} -
-
-

You have Javascript is disabled!

-
-
-
-

- You appear to have javascript disabled. For my site to function properly, javascript must be enabled! The javascript is used to dynamically change the webpage on your device. Without them then the site will break, cause a tonne of errors, and not look right, all of which aren't very nice, for you or me. -

-

- The javascript on this page won't damage your computer in any way, and has been written entirely by me, or has used trusted and open-source 3rd-party libraries. You can trust this site! Re-enabling the javascript functions inside your browser is very easy, and helpful tutorials can be found below! -

-
-
-

Re-enabling Javascript in your browser

-
-
-

Re-enabling in Firefox

-
-
-
    -
  1. Navigate to 'about:config', using the browsers address bar.
  2. -
  3. Accept the security warning, and notice that no dragons lie ahead.
  4. -
  5. In the search bar, enter 'javascript'
  6. -
  7. Find the entry 'Javascript.enabled' (possibly using ctrl + F)
  8. -
  9. Toggle the entry by either double-clicking the entry, or right-clicking and selecting 'Toggle'.
  10. -
-
-
- -
-
-

Re-enabling in Chrome

-
-
-
    -
  1. Click the Chrome menu icon () in the top right hand corder of the window.
  2. -
  3. Click 'Settings'.
  4. -
  5. Under the 'Privacy' section, select 'Content settings'.
  6. -
  7. Under 'Javascript', select 'Allow all sites to run Javascript(Recommended)'.
  8. -
-
-
- -
-
-

Re-enabling in Internet Explorer

-
-
- -
    -
  1. Select the gear icon in the top right hand corner , and click 'Internet Options'.
  2. -
  3. Select Security > Internet > Custom Level.
  4. -
  5. Scroll down until you find 'Scripting', and select 'Enable'
  6. -
-

- Also: If you are using Internet Explorer (Or Microsoft Edge for that matter), Stop! Use one of the other ones. They're much faster, and better, especially Firefox! -

-
-
-
-
-
- After enabling javascript, the page should automatically redirect to the homepage. If it doesn't, just refresh the page, or Click here to return home. -
-
- -{% endblock%} \ No newline at end of file diff --git a/templates/email/base.html b/templates/email/base.html deleted file mode 100644 index f031be1..0000000 --- a/templates/email/base.html +++ /dev/null @@ -1,11 +0,0 @@ -{% block subject %} - {% block subjectcontent %}{% endblock %} -{% endblock %} - -{% block body %} - {% block bodycontent %}{% endblock %} -{% endblock %} - -{% block html %} - {% block htmlcontent %}{% endblock %} -{% endblock %} diff --git a/templates/email/contact_message.html b/templates/email/contact_message.html deleted file mode 100644 index a996dd3..0000000 --- a/templates/email/contact_message.html +++ /dev/null @@ -1,15 +0,0 @@ -{% extends 'email/base.html' %} - -{% block subjectcontent %}Message from {{ name }}{% endblock %} - -{% block bodycontent %} - You have recieved a message from {{ name }}. - The message reads: - {{ message }} -{% endblock %} - -{% block htmlcontent %} -

You have recieved a message from {{ name }}.

-

The message reads:

-
{{ message }}
-{% endblock %} diff --git a/templates/index.html b/templates/index.html deleted file mode 100644 index 8f1b1b2..0000000 --- a/templates/index.html +++ /dev/null @@ -1,74 +0,0 @@ -{% extends 'base.html' %} -{% load staticfiles %} -{% block baseContent%} - -
-
-

Bacon ipsum dolor amet pork chop biltong venison pork belly, pig meatball kevin cow ham pancetta pork fatback doner flank. Flank turducken swine leberkas andouille, tongue ball tip cow chicken ham hock sausage. Ball tip swine tri-tip salami turkey beef ribs doner pancetta shankle pork chop prosciutto. Spare ribs biltong pork loin, flank beef leberkas ribeye t-bone alcatra ball tip. Pork rump sausage capicola, beef ribs pancetta drumstick doner. Kielbasa fatback turducken turkey jowl strip steak. Landjaeger andouille t-bone, bacon cupim prosciutto short ribs.

-

Doner turducken bacon tail ham hock. Cow corned beef shankle pork chop frankfurter turducken. Pig ball tip tri-tip, meatloaf filet mignon cow andouille cupim swine pork corned beef sausage spare ribs chuck. Beef jowl bacon shank capicola. Kevin turkey ground round pork loin t-bone. Tri-tip turducken ham, short ribs prosciutto kevin pork loin fatback doner pig kielbasa tenderloin.

-
-
- -
-
-
-
-
Twitter widget broken - repair coming soon!
-
- -
-
-
- -
-
-
-

All Projects

- {% for project in projects %} -
- {% if project.header_image %} -
- image -
-

{{ project.name }}

- - Read More - -
-
- {% else %} -
-
-

{{ project.name }}

- - Read More - -
-
- {% endif %} -
- {% endfor %} -
- -
-
-
-
-{% endblock %} diff --git a/templates/markdown_content.html b/templates/markdown_content.html deleted file mode 100644 index 6115de5..0000000 --- a/templates/markdown_content.html +++ /dev/null @@ -1,9 +0,0 @@ -{% extends 'content_base.html' %} - -{% block pageTitle %}{{ page_title }}{% endblock %} - -{% block content %} -
- {{ markdown_content | safe }} -
-{% endblock %} diff --git a/templates/projects/attack-on-blocks.md b/templates/projects/attack-on-blocks.md deleted file mode 100644 index da721ab..0000000 --- a/templates/projects/attack-on-blocks.md +++ /dev/null @@ -1,18 +0,0 @@ -# Attack on Blocks Game! - -Attack on Blocks is a space invaders style game that I wrote for my IT coursework, for the games development unit. We were allowed to make any game that we wanted, provided it could be done within the time limits, be very easy to play, and easily run on the college computer (which were pretty terrible). I had never written a game before, so I knew this was going to be a challenge. - -I decided to write the game in Python, seeing as there were other people in the class that could help me bug report and test features, and because it was easy to run on the college computers. I used PyGame for the graphics library, even though I had never used it before, because it was really simple to use, and there was a lot of support and documentation online. - -## Easter Eggs -One of the key features of this take on space invaders (and unfortunately the thing I spent the most time on), is the easter eggs. There are a few dotted around the game, which make the game either much easier, or way more fun! At the moment, there are 3 main easter eggs, the first enabling the other 2. If you would like to know what they are, click the button below. If not, pay the game and try and find them, or search through the source to find them (it's not too hard through the source). - -As you will see (If and when you find the easter eggs), most of them are completely useless, and completely unrelated to the game or anything else. The main reason they were put in was because I'm friends with people that pester to the point it's just easier to give in. Hence there are some really very odd ones! - - - diff --git a/templates/projects/bsod-enabler.md b/templates/projects/bsod-enabler.md deleted file mode 100644 index 6df8b76..0000000 --- a/templates/projects/bsod-enabler.md +++ /dev/null @@ -1,19 +0,0 @@ -# BSOD Enabler - -For those that use Windows, the famous [Blue Screen of Death](https://en.wikipedia.org/wiki/Blue_Screen_of_Death) is an annoyance that plagues computers, causing error, frustration, and even data loss. They happened to me a lot whilst I was trying to configure my computer, and I thought _I wonder who else I can annoy with a BSOD_ - -__And thus the BSOD_Enabler was born!__ - -After researching into it for a while, it turns out that there are a few different ways to cause a BSOD, unfortunately most of which are by doing things that are meant to cause a BSOD, and can therefore be dangerous to a computer, something I didn't really want. Then I stumbled upon [this article](http://www.wikihow.com/Force-a-Blue-Screen-in-Windows), which shows that you can in fact raise a BSOD without causing any errors or damage to your computer. Now to write a program that can do it too! - -Obviously there are many different ways, and probably far better ways of doing this, but I wanted something that was simple to use, fast, and could be done by anyone, no matter how technically illiterate. So I decided to write it in C#, and use a windows console interface. - -Below you can find a download link to the application, as well as a link to the source code. I am hoping to upgrade the project in the future to allow for automated triggering, a much faster UI, with options, as well as a simple one-click setup and BSOD. - - - diff --git a/templates/projects/dotfiles.md b/templates/projects/dotfiles.md deleted file mode 100644 index 9f85ceb..0000000 --- a/templates/projects/dotfiles.md +++ /dev/null @@ -1,14 +0,0 @@ -# My Dotfiles - -### What are dotfiles? -Dotfiles are a way for people to store their settings and preferences to make setting up a new computer that much easier. They can usually be found in a persons VCS profile. - -### Taking dotfiles 1 step further -I use both my laptop and work machines almost every day, and want them to be setup in an almost identical way, despite the fact that 1 runs Ubuntu, and the other runs Arch. The main things I needed synced over were my `.bashrc` file and my atom config. - -## How I did it -Originally, I used my owncloud server to sync all my dotfiles between my computer, and then used symlinks to split out the relevant files into the relevant locations. - -This worked brilliantly, config files were automatically synced as soon as I made a change. This was especially great for my `.bashrc` file! The main problem was with atom packages, I had to manually store what files were installed, then manually install them on the other machine from the saved file. This was made easier by `apm` allowing me to list them and automatically save them in a file, but it wasnt perfect. - -Eventually, after looking into possible solutions, I came across the [`Sync settings`](https://atom.io/packages/sync-settings) package, which seemed to be the answer to my prayers! It saved all my config data for atom into a gist, which I could then backup and restore too from within the application. It also warned me when my local data was out of date from the remote, and prompt me to downnload the updated data. diff --git a/templates/projects/hipchat-emoticons-for-all.md b/templates/projects/hipchat-emoticons-for-all.md deleted file mode 100644 index 80d1614..0000000 --- a/templates/projects/hipchat-emoticons-for-all.md +++ /dev/null @@ -1,17 +0,0 @@ -# Hipchat Emoticons for All - -After starting my new job at DabApps, I was introduced to the world of [Hipchat](https://hipchat.com), and it's wonderful array of emoticons, as well as the ones added. It was wonderful, it made communicating with friends and colleagues much more interesting! - -Unfortunately, the emoticons on the other services we use, like [GitHub](https://github.com), were terrible in comparison. So it was after a discussion with [@JakeSidSmith](https://github.com/jakesidsmith) about him just using things like (facepalm), (notsureif), and (wat) in [Facebook messenger](https://www.messenger.com/) and hoping people understand what it means, that I decided to make 'Hipchat Emoticons for all', so people like him could use a much better set of emoticons. - -The premis is very simple, whenever it sees a hipchat emoticon code, like (notsureif), it replaces it with an emoticon. If only writing the code could have been this simple! I started writing the plugin in firefox, using [Jetpack](https://wiki.mozilla.org/Jetpack), which uses Javascript. The initial stages of the code were very simple, but I encountered problems making sure that anything loaded after the page was loaded (such as a facebook message), be changed too. - -Fortunately after many hours of testing, and changing the code, I finally got everything working perfectly, and in a way that made adding new sites incredibly easy! The code isn't the greatest in terms of performance, and there are some things that could have obviously been done better, but this was all done to help with a shared codebase between Chrome and Firefox, which don't play nice when it comes to extensions. - -Currently the application is in very beta stages right now, only having tested partial support for github, but the code is all available on GitHub, if people have their own suggestions of improvements. - - diff --git a/templates/projects/index.html b/templates/projects/index.html deleted file mode 100644 index 649b16c..0000000 --- a/templates/projects/index.html +++ /dev/null @@ -1,17 +0,0 @@ -{% extends 'content_base.html' %} - -{% block pageTitle %}All Projects{% endblock %} - -{% block content %} -
-
- {% for project in projects %} -
- -

{{ project.name }}

- Read More -
- {% endfor %} -
-
-{% endblock %} diff --git a/templates/projects/morse-code-decoder.md b/templates/projects/morse-code-decoder.md deleted file mode 100644 index ea5875e..0000000 --- a/templates/projects/morse-code-decoder.md +++ /dev/null @@ -1,15 +0,0 @@ -# Morse Code Decoder - -It's not often someone will need to decode text into morse code (and visa-versa), but if I had something like this when I needed it, it would have saved me hours of time! - -I originally wrote this code for the [Student Robotics 2015](/robotics/2015/) Entry, to convert a string message into a morse code message that would be transmitted using LEDs, for aesthetics and debugging. Unfortunately due to a fixed time frame, this idea was scraped before it could be fully implemented. Fortunately the decoder worked perfectly! - - -## Usage - -In order to make it accessible for as many people in as many different languages as possible, the data is in JSON format. Just find a JSON library for your desired language, and it'll work perfectly! - -The source of the library is on github as a gist. I recommend downloading the file to use yourself, however for testing you can use github's raw view as a hotlink. - - - diff --git a/templates/projects/wiki-game-solver.md b/templates/projects/wiki-game-solver.md deleted file mode 100644 index 50ed255..0000000 --- a/templates/projects/wiki-game-solver.md +++ /dev/null @@ -1,26 +0,0 @@ -# Wiki Game Solver - -For those who don't know what the Wiki Game is: [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. Once I was shown the Wiki Game by my friend, and after I realised that I really wasn't very good at it, I looked into how the system worked, and how I could beat it. - -I couldn't see how the back end worked, but after playing a few games and checking what happened on the page,the way that the game was won was when the iframe was at the final page location, or at least a clone of it on their servers with extra querystring information. - -With this information, I started to write some javascript that would change the location of the iframe to the goal. Fortunately for me, there was already a link to the real winning page, so I could use that to construct the final URL, and direct the iframe to it, meaning I was able to win the game in 1 turn. - -## Source -Naturally, the source for this was written in javascript, 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. - - - -## Usage - -1. Start a new game on [Wiki Game](http://thewikigame.com/speed-race), __don't__ press start! -2. Open your browser's developers console. This will vary from browser. -3. Open the Javascript console -4. Paste the compact version of the code there, and execute it (press enter) -5. Congratulations, you just won! - -If you want to win more games, just re-paste the code, it works as often as you like! - -### Disclaimer - -As I experienced whilst developing this, the people that play Wiki Game don't tend to like people cheating. There were a lot of people getting very annoyed whilst I was developing and testing. So please use this at your own risk! At the moment I don't think there is any kind of banning system, but be warned! diff --git a/templates/projects/yoga-pal.md b/templates/projects/yoga-pal.md deleted file mode 100644 index cf57833..0000000 --- a/templates/projects/yoga-pal.md +++ /dev/null @@ -1,13 +0,0 @@ -# Yoga Pal - -Once I started work, I bought myself a _Lenovo Yoga 3 14"_ laptop, because I needed a thin and light for trains etc. Unfortunately this came with windows, which within 10 minutes was running Ubuntu Gnome! Ubuntu greatly increased the performance, but I had to sacrifice all the screen, touchpad and keyboard customisation when changing 'modes'. - -I found [this thread](askubuntu.com/questions/450066/rotate-touchscreen-and-disable-the-touchpad-on-yoga-2-pro-in-rotated-mode) on _Ask Ubuntu_ with someone else trying to find a solution to this, to find a nice way of rotating the screen when in tablet mode. On the thread was a really nice simple [script](http://askubuntu.com/a/485685/432138) that rotated the screen perfectly, and did the touchscreen too. This script worked great, doing exactly what it said it did, nicely and quickly, however it wasn't a great solution for me. Yes it worked, but it didn't allow me to change anything else, like the touchpad. - -So I started working on my own CLI, based off the above script, to allow me to tweak everything, so the laptop can be used as it was intended. - - diff --git a/templates/robotics/2014/index.html b/templates/robotics/2014/index.html deleted file mode 100644 index 295ff5a..0000000 --- a/templates/robotics/2014/index.html +++ /dev/null @@ -1,38 +0,0 @@ -{% extends 'content_base.html' %} - -{% block pageTitle %}Student Robotics 2014{% endblock %} - -{% block header_image %}
{% endblock %} - -{% block content%} -
-
-
- -
-
-

Welcome to the homepage of Collyer's Student Robotics 2014 team. Originally, this page was a part of the competition, but due to 3 different site rewrites, the original content and formatting has been lost.

-
-
-
- - -
-
-
-

The Competition

-

The game for this year was called Slots. Teams compeated to get as many of their tokens into a scoring zone in 3 minutes. Teams would also get extra points if they could get the token into a zones 'slot', an area the size of a token, raised by around 3 cm.

-

To see a copy of the rules from the competition, Click Here!

-
- -
-
-{% endblock %} diff --git a/templates/robotics/2015/code.md b/templates/robotics/2015/code.md deleted file mode 100644 index a7c3867..0000000 --- a/templates/robotics/2015/code.md +++ /dev/null @@ -1,21 +0,0 @@ -# The Code | SR2015 - -The code used for this competition was by far the most complicated and advanced code that had ever been written by a Collyer's team. - -The main change between any other year was using an entirely co-ordinate based movement system. Any input taken in from the camera was converted to co-ordinates in terms of the arena, so we could plot our movement more accurately and allow for any immovable objects such as the internal walls. - -The addition of this coordinate system allowed us to create the killer feature of this year, the position correction code. This code allowed us to automatically correct our position after we scanned for a marker, meaning we could allow for any imperfections in the build. - -There were a lot of really great features in this years code, that made our robot function much faster: - -- Position correction -- co-ordinate based movement -- Arc movement -- Distance based movement -- _move 'til touch_ -- Camera rotation - -### So, where is this code? -Unfortunately, due to the number of features, we have decided to keep the source private, so that only other Collyer's teams may access it. A lot of blood, sweat and tears (not literally) went into writing this code, and it would be a shame if that were to be used to help any of our opponents. - -You can however see the code from our other years on our [GitHub organisation](https://github.com/SR-CLY). diff --git a/templates/robotics/2015/index.html b/templates/robotics/2015/index.html deleted file mode 100644 index 96d8705..0000000 --- a/templates/robotics/2015/index.html +++ /dev/null @@ -1,38 +0,0 @@ -{% extends 'content_base.html' %} - -{% block pageTitle %}Student Robotics 2015{% endblock %} - -{% block content%} -
-
-
- -
-
-

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.

-
-
-
- -
-
-
-

The Competition

-

As was announced at kickstart, the game for this year is a take on the classic gamemode Capture the Flag. 4 teams compete over 5 flags to move as many of them as they can into their scoring zones. The person with the most flags in their scoring zone wins.

-

The 'flags' are 25cm cubes of wood on caster wheels weighing roughly 2kg. The rules prevent us from lifting them, so the idea is to drag them around!

-

To see a copy of the rules from the competition, Click Here!

-
- -
-
-
-{% endblock %} diff --git a/templates/robotics/2015/robot.html b/templates/robotics/2015/robot.html deleted file mode 100644 index dd6401f..0000000 --- a/templates/robotics/2015/robot.html +++ /dev/null @@ -1,47 +0,0 @@ -{% extends 'content_base.html' %} - -{% block pageTitle %}The Robot - A.L.I.C.E{% endblock %} - -{% block content%} -
-

- Our entry for 2015, named 'ALICE', was a massive improvement over last years model, in both design, and the code for it. Before ALICE was built, the design team built us a very basic chassis usind scrap parts from 2014, which allowed us to write a large amount of the code base before we even had the robot built. Originally I wanted the final chassis to be built before the end of January, so we had a lot of time to test out the design for the robot and test using the final, in reality, it was closer to the middle of march before this was a reality. -

-
-
-
-
- -
-
-
-
-

- The entire chassis was made from sheets of plywood, which we laser cut in college, allowing us to be very precise in the design of the robot to make sure that all the pieces would fit together properly, making the chassis less likely to break. -

-

- The initial design was concieved by Ben, at kickstart, and was then refined over the coming weeks by me and the rest of the building team. This was made much easier from the use of the 3d model, that ben made, which helped us visualize any changes that were to be made, as well as work out strategy by seeing the measurements we had to work with. -

-

- Once the build was completed, it was to a much higher design and quality than I could have ever imagined! It allowed us to forget about any shortcomings when it came to chassis, not having to compensate for weight distribution, or worry about the grip on the wheels. -

-
- -
- -
-

Why call it 'ALICE'?

-

The decision to name the robot 'Alice' was a decision made by the whole group!

-

Thats a lie, Ben suggested it and as no one had any better ideas and because he gets overruling vote on this, for some reason , it stuck.

-

After this decisions was made, I decided to set out to find the cheesiest acronym we could for 'Alice', to make the name slightly more interesting, and not some random girls name pulled from thin air on the bus ride home from kickstart. There were a few rather good ideas, most of them coming from Sam:

-

    -
  • 'Automated Laser-cut Interactive Capturing Entity'
  • -
  • 'Abnormally Lame and Innacurate Control-less Engine'
  • -
  • 'Anti-Losing Immaculate Competitive Extravaganza'
  • -

-

One idea was also suggested that we name the robot after the first sponsor we got, but as we didnt get one until after the team split, the other team took that name instead. In the end we decided to go with one that Sam initially suggested, so 'ALICE' officially stands for:

-

'Autonomous Logistics and Inevitable Collision Engine'

-
- -
-{% endblock %} diff --git a/templates/robotics/index.html b/templates/robotics/index.html deleted file mode 100644 index 56fa05c..0000000 --- a/templates/robotics/index.html +++ /dev/null @@ -1,64 +0,0 @@ -{% extends 'content_base.html' %} -{% load static %} -{% block pageTitle %}Student Robotics{% endblock %} - -{% block header_image %}
{% endblock %} - -{% block content %} -
-

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 wasnt 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.

-
- -
-

What is Student Robotics?

-
Student Robotics is a volunteer organisation that runs an annual robotics competition for 16-18 year olds. It was originally founded by students from the University of Southampton in 2006, and now includes volunteers (“Blue Shirts”) from multiple other universities, including the University of Bristol and Grenoble INP. It primarily takes teams and volunteers from the UK, but also some from Germany and France.
-

More information can be found on their website.

-
- -
-

My Entries

-

Being at college for 2 years, meant I was able to enter 2 years of competitions, SR14, and SR15. We were encouraged to gain an online presence for our team, so I created a website for both years. Unfortunately due to account inactivity, and me changing my website 3 times since, The original pages have been lost, however all the content still remains.

-
- -
-
-
-
- Lucy -
-

Student Robotics 2014

-

Robot Name: Lucy -
(No, it doesn't stand for anything) -

More Info

-
-
-
- -
-
- A.L.I.C.E -
-

Student Robotics 2015

-

Robot Name : A.L.I.C.E -
(Autonomous Logistics and Inevitable Collision Engine)

-

More Info

-
-
-
-
-
-
- -
-

Adult volunteer

-

- Unfortunately, after I left college, I also left behind entering Student Robotics as a competitor. Fortunately for me however, they're always looking for volunteers to help run the competition itself. -

-

- Years -

-
    -
  • 2016
  • -
-
-{% endblock %}