diff --git a/assets/favicon.png b/assets/favicon.png new file mode 100755 index 0000000..825b9e6 Binary files /dev/null and b/assets/favicon.png differ diff --git a/assets/files/SpeedReadingWorkbook.epub b/assets/files/SpeedReadingWorkbook.epub new file mode 100755 index 0000000..7855afa Binary files /dev/null and b/assets/files/SpeedReadingWorkbook.epub differ diff --git a/assets/files/SpeedReadingWorkbook.pdf b/assets/files/SpeedReadingWorkbook.pdf new file mode 100755 index 0000000..332886c Binary files /dev/null and b/assets/files/SpeedReadingWorkbook.pdf differ diff --git a/assets/images/ConvolutionTime.png b/assets/images/ConvolutionTime.png new file mode 100755 index 0000000..339ddcc Binary files /dev/null and b/assets/images/ConvolutionTime.png differ diff --git a/assets/images/CurrentDrop-1.png b/assets/images/CurrentDrop-1.png new file mode 100755 index 0000000..a0daf14 Binary files /dev/null and b/assets/images/CurrentDrop-1.png differ diff --git a/assets/images/CurrentDrop-2.png b/assets/images/CurrentDrop-2.png new file mode 100755 index 0000000..12292d6 Binary files /dev/null and b/assets/images/CurrentDrop-2.png differ diff --git a/assets/images/CurrentDrop.png b/assets/images/CurrentDrop.png new file mode 100755 index 0000000..a0daf14 Binary files /dev/null and b/assets/images/CurrentDrop.png differ diff --git a/assets/images/CurrentMove-1.png b/assets/images/CurrentMove-1.png new file mode 100755 index 0000000..d3f748e Binary files /dev/null and b/assets/images/CurrentMove-1.png differ diff --git a/assets/images/CurrentMove-2.png b/assets/images/CurrentMove-2.png new file mode 100755 index 0000000..cedd9a8 Binary files /dev/null and b/assets/images/CurrentMove-2.png differ diff --git a/assets/images/CurrentMove.png b/assets/images/CurrentMove.png new file mode 100755 index 0000000..d3f748e Binary files /dev/null and b/assets/images/CurrentMove.png differ diff --git a/assets/images/Horizontal3x3.png b/assets/images/Horizontal3x3.png new file mode 100755 index 0000000..be2ce7f Binary files /dev/null and b/assets/images/Horizontal3x3.png differ diff --git a/assets/images/Horizontal9x9.png b/assets/images/Horizontal9x9.png new file mode 100755 index 0000000..c3c198c Binary files /dev/null and b/assets/images/Horizontal9x9.png differ diff --git a/assets/images/InputImage.png b/assets/images/InputImage.png new file mode 100755 index 0000000..d2c84a0 Binary files /dev/null and b/assets/images/InputImage.png differ diff --git a/assets/images/LevelingTool.jpg b/assets/images/LevelingTool.jpg new file mode 100755 index 0000000..17ee2d2 Binary files /dev/null and b/assets/images/LevelingTool.jpg differ diff --git a/assets/images/Output3x3.png b/assets/images/Output3x3.png new file mode 100755 index 0000000..0017aaf Binary files /dev/null and b/assets/images/Output3x3.png differ diff --git a/assets/images/Output9x9.png b/assets/images/Output9x9.png new file mode 100755 index 0000000..3b309ea Binary files /dev/null and b/assets/images/Output9x9.png differ diff --git a/assets/images/TakPieces.png b/assets/images/TakPieces.png new file mode 100755 index 0000000..13b6a7a Binary files /dev/null and b/assets/images/TakPieces.png differ diff --git a/assets/images/TakProgram.png b/assets/images/TakProgram.png new file mode 100755 index 0000000..7367d22 Binary files /dev/null and b/assets/images/TakProgram.png differ diff --git a/assets/images/Vertical3x3.png b/assets/images/Vertical3x3.png new file mode 100755 index 0000000..aa756f8 Binary files /dev/null and b/assets/images/Vertical3x3.png differ diff --git a/assets/images/Vertical9x9.png b/assets/images/Vertical9x9.png new file mode 100755 index 0000000..139caf7 Binary files /dev/null and b/assets/images/Vertical9x9.png differ diff --git a/assets/images/Victory.png b/assets/images/Victory.png new file mode 100755 index 0000000..7a57ed5 Binary files /dev/null and b/assets/images/Victory.png differ diff --git a/assets/main.css b/assets/main.css index 7d1c613..79ee5ed 100644 --- a/assets/main.css +++ b/assets/main.css @@ -96,6 +96,11 @@ code { color: var(--red); } +img { + max-width: 100%; + height: auto; +} + @media (max-width: 1024px) { html { line-height: 1.75rem; diff --git a/src/html/api.rs b/src/html/api.rs new file mode 100644 index 0000000..dda7421 --- /dev/null +++ b/src/html/api.rs @@ -0,0 +1,9 @@ +use axum::{routing::get, Router}; + +pub fn get_router() -> Router { + Router::new().route("/hello", get(hello_from_the_server)) +} + +async fn hello_from_the_server() -> &'static str { + "Hello!" +} diff --git a/src/html/blog.rs b/src/html/blog.rs new file mode 100644 index 0000000..dee2741 --- /dev/null +++ b/src/html/blog.rs @@ -0,0 +1,389 @@ +use crate::html; +use askama::Template; +use axum::response::IntoResponse; +use axum::{routing::get, Router}; + +pub fn get_router() -> Router { + Router::new() + .route("/", get(html::root::blog)) + .route("/fsdi", get(fsdi)) + .route("/independence", get(independence)) + .route("/pri", get(pri)) + .route("/gs", get(gs)) + .route("/srw", get(srw)) + .route("/tw", get(tw)) + .route("/lt", get(lt)) + .route("/writing", get(writing)) + .route("/lim", get(lim)) + .route("/ile", get(ile)) + .route("/dmwi", get(dmwi)) + .route("/wgl", get(wgl)) + .route("/dm", get(dm)) + .route("/llf", get(llf)) + .route("/habits", get(habits)) + .route("/deepwork", get(deepwork)) + .route("/ewt", get(ewt)) + .route("/afh", get(afh)) + .route("/mfn", get(mfn)) + .route("/sdl", get(sdl)) + .route("/foundation", get(foundation)) + .route("/mop", get(mop)) + .route("/onreading", get(onreading)) + .route("/thestart", get(thestart)) +} + +async fn fsdi() -> impl IntoResponse { + let template = FirstStepsToDigitalIndependenceTemplate { + previous: "independence", + }; + html::HtmlTemplate(template) +} + +#[derive(Template)] +#[template(path = "blog/FirstStepsToDigitalIndependence.html")] +struct FirstStepsToDigitalIndependenceTemplate<'a> { + previous: &'a str, +} + +async fn independence() -> impl IntoResponse { + let template = IndependenceTemplate { + previous: "pri", + next: "fsdi", + }; + html::HtmlTemplate(template) +} + +#[derive(Template)] +#[template(path = "blog/Independence.html")] +struct IndependenceTemplate<'a> { + previous: &'a str, + next: &'a str, +} + +async fn pri() -> impl IntoResponse { + let template = PetsWorryAndInformationTemplate { + previous: "gs", + next: "independence", + }; + html::HtmlTemplate(template) +} + +#[derive(Template)] +#[template(path = "blog/PetsWorryAndInformation.html")] +struct PetsWorryAndInformationTemplate<'a> { + previous: &'a str, + next: &'a str, +} + +async fn gs() -> impl IntoResponse { + let template = GraduateSchoolTemplate { + previous: "srw", + next: "pri", + }; + html::HtmlTemplate(template) +} + +#[derive(Template)] +#[template(path = "blog/GraduateSchool.html")] +struct GraduateSchoolTemplate<'a> { + previous: &'a str, + next: &'a str, +} + +async fn srw() -> impl IntoResponse { + let template = SpeedReadingWorkbookTemplate { + previous: "tw", + next: "gs", + }; + html::HtmlTemplate(template) +} + +#[derive(Template)] +#[template(path = "blog/SpeedReadingWorkbook.html")] +struct SpeedReadingWorkbookTemplate<'a> { + previous: &'a str, + next: &'a str, +} + +async fn tw() -> impl IntoResponse { + let template = ThisWebsiteTemplate { + previous: "lt", + next: "srw", + }; + html::HtmlTemplate(template) +} + +#[derive(Template)] +#[template(path = "blog/ThisWebsite.html")] +struct ThisWebsiteTemplate<'a> { + previous: &'a str, + next: &'a str, +} + +async fn lt() -> impl IntoResponse { + let template = LevelingToolTemplate { + previous: "writing", + next: "tw", + }; + html::HtmlTemplate(template) +} + +#[derive(Template)] +#[template(path = "blog/LevelingTool.html")] +struct LevelingToolTemplate<'a> { + previous: &'a str, + next: &'a str, +} + +async fn writing() -> impl IntoResponse { + let template = WritingTemplate { + previous: "lim", + next: "lt", + }; + html::HtmlTemplate(template) +} + +#[derive(Template)] +#[template(path = "blog/Writing.html")] +struct WritingTemplate<'a> { + previous: &'a str, + next: &'a str, +} + +async fn lim() -> impl IntoResponse { + let template = LessIsMoreTemplate { + previous: "ile", + next: "writing", + }; + html::HtmlTemplate(template) +} + +#[derive(Template)] +#[template(path = "blog/LessIsMore.html")] +struct LessIsMoreTemplate<'a> { + previous: &'a str, + next: &'a str, +} + +async fn ile() -> impl IntoResponse { + let template = ImmersiveLearningAndExperimentationTemplate { + previous: "dmwi", + next: "lim", + }; + html::HtmlTemplate(template) +} + +#[derive(Template)] +#[template(path = "blog/ImmersiveLearningAndExperimentation.html")] +struct ImmersiveLearningAndExperimentationTemplate<'a> { + previous: &'a str, + next: &'a str, +} + +async fn dmwi() -> impl IntoResponse { + let template = DoingMoreWithMyIdeasTemplate { + previous: "wgl", + next: "ile", + }; + html::HtmlTemplate(template) +} + +#[derive(Template)] +#[template(path = "blog/DoingMoreWithMyIdeas.html")] +struct DoingMoreWithMyIdeasTemplate<'a> { + previous: &'a str, + next: &'a str, +} + +async fn wgl() -> impl IntoResponse { + let template = WhyAndGettingLostTemplate { + previous: "dm", + next: "dmwi", + }; + html::HtmlTemplate(template) +} + +#[derive(Template)] +#[template(path = "blog/WhyAndGettingLost.html")] +struct WhyAndGettingLostTemplate<'a> { + previous: &'a str, + next: &'a str, +} + +async fn dm() -> impl IntoResponse { + let template = DisciplineAndMotivationTemplate { + previous: "llf", + next: "wgl", + }; + html::HtmlTemplate(template) +} + +#[derive(Template)] +#[template(path = "blog/DisciplineAndMotivation.html")] +struct DisciplineAndMotivationTemplate<'a> { + previous: &'a str, + next: &'a str, +} + +async fn llf() -> impl IntoResponse { + let template = LookingLikeAFoolTemplate { + previous: "habits", + next: "dm", + }; + html::HtmlTemplate(template) +} + +#[derive(Template)] +#[template(path = "blog/LookingLikeAFool.html")] +struct LookingLikeAFoolTemplate<'a> { + previous: &'a str, + next: &'a str, +} + +async fn habits() -> impl IntoResponse { + let template = HabitsTemplate { + previous: "deepwork", + next: "llf", + }; + html::HtmlTemplate(template) +} + +#[derive(Template)] +#[template(path = "blog/Habits.html")] +struct HabitsTemplate<'a> { + previous: &'a str, + next: &'a str, +} + +async fn deepwork() -> impl IntoResponse { + let template = DeepWorkTemplate { + previous: "ewt", + next: "habits", + }; + html::HtmlTemplate(template) +} + +#[derive(Template)] +#[template(path = "blog/DeepWork.html")] +struct DeepWorkTemplate<'a> { + previous: &'a str, + next: &'a str, +} + +async fn ewt() -> impl IntoResponse { + let template = ExercisingWithoutTimeTemplate { + previous: "afh", + next: "deepwork", + }; + html::HtmlTemplate(template) +} + +#[derive(Template)] +#[template(path = "blog/ExercisingWithoutTime.html")] +struct ExercisingWithoutTimeTemplate<'a> { + previous: &'a str, + next: &'a str, +} + +async fn afh() -> impl IntoResponse { + let template = AskingForHelpTemplate { + previous: "mfn", + next: "ewt", + }; + html::HtmlTemplate(template) +} + +#[derive(Template)] +#[template(path = "blog/AskingForHelp.html")] +struct AskingForHelpTemplate<'a> { + previous: &'a str, + next: &'a str, +} + +async fn mfn() -> impl IntoResponse { + let template = AMindForNumbersTemplate { + previous: "sdl", + next: "afh", + }; + html::HtmlTemplate(template) +} + +#[derive(Template)] +#[template(path = "blog/AMindForNumbers.html")] +struct AMindForNumbersTemplate<'a> { + previous: &'a str, + next: &'a str, +} + +async fn sdl() -> impl IntoResponse { + let template = SelfDirectedLearningTemplate { + previous: "foundation", + next: "mfn", + }; + html::HtmlTemplate(template) +} + +#[derive(Template)] +#[template(path = "blog/SelfDirectedLearning.html")] +struct SelfDirectedLearningTemplate<'a> { + previous: &'a str, + next: &'a str, +} + +async fn foundation() -> impl IntoResponse { + let template = TheFoundationTemplate { + previous: "mop", + next: "sdl", + }; + html::HtmlTemplate(template) +} + +#[derive(Template)] +#[template(path = "blog/TheFoundation.html")] +struct TheFoundationTemplate<'a> { + previous: &'a str, + next: &'a str, +} + +async fn mop() -> impl IntoResponse { + let template = TheMythOfPerfectionTemplate { + previous: "onreading", + next: "foundation", + }; + html::HtmlTemplate(template) +} + +#[derive(Template)] +#[template(path = "blog/TheMythOfPerfection.html")] +struct TheMythOfPerfectionTemplate<'a> { + previous: &'a str, + next: &'a str, +} + +async fn onreading() -> impl IntoResponse { + let template = OnReadingTemplate { + previous: "thestart", + next: "mop", + }; + html::HtmlTemplate(template) +} + +#[derive(Template)] +#[template(path = "blog/OnReading.html")] +struct OnReadingTemplate<'a> { + previous: &'a str, + next: &'a str, +} + +async fn thestart() -> impl IntoResponse { + let template = TheStartTemplate { + next: "onreading" + }; + html::HtmlTemplate(template) +} + +#[derive(Template)] +#[template(path = "blog/TheStart.html")] +struct TheStartTemplate<'a> { + next: &'a str, +} diff --git a/src/html.rs b/src/html/mod.rs similarity index 94% rename from src/html.rs rename to src/html/mod.rs index b3cc214..64c6bec 100644 --- a/src/html.rs +++ b/src/html/mod.rs @@ -3,6 +3,10 @@ use axum::{ http::StatusCode, response::{Html, IntoResponse, Response}, }; +pub mod root; +pub mod blog; +pub mod projects; +pub mod api; /// A wrapper type that we'll use to encapsulate HTML parsed by askama into valid HTML for axum to serve. pub struct HtmlTemplate(pub T); diff --git a/src/html/projects.rs b/src/html/projects.rs new file mode 100644 index 0000000..04c1383 --- /dev/null +++ b/src/html/projects.rs @@ -0,0 +1,39 @@ +use crate::html; +use askama::Template; +use axum::response::IntoResponse; +use axum::{routing::get, Router}; + +pub fn get_router() -> Router { + Router::new() + .route("/", get(html::root::projects)) + .route("/archserver", get(archserver)) + .route("/tak", get(tak)) + .route("/ed", get(ed)) +} + +async fn archserver() -> impl IntoResponse { + let template = ArchServerTemplate {}; + html::HtmlTemplate(template) +} + +#[derive(Template)] +#[template(path = "projects/ArchServer.html")] +struct ArchServerTemplate; + +async fn tak() -> impl IntoResponse { + let template = TakTemplate {}; + html::HtmlTemplate(template) +} + +#[derive(Template)] +#[template(path = "projects/Tak.html")] +struct TakTemplate; + +async fn ed() -> impl IntoResponse { + let template = EdgeDetectionTemplate {}; + html::HtmlTemplate(template) +} + +#[derive(Template)] +#[template(path = "projects/EdgeDetection.html")] +struct EdgeDetectionTemplate; diff --git a/src/html/root.rs b/src/html/root.rs new file mode 100644 index 0000000..5a5e28e --- /dev/null +++ b/src/html/root.rs @@ -0,0 +1,75 @@ +use crate::html; +use askama::Template; +use axum::response::IntoResponse; +use axum::{routing::get, Router}; +use tower_http::services::ServeDir; + +pub fn get_router() -> Router { + let assets_path = std::env::current_dir().unwrap(); + Router::new() + .nest("/api", html::api::get_router()) + .nest("/blog", html::blog::get_router()) + .nest("/projects", html::projects::get_router()) + .route("/", get(home)) + .route("/now", get(now)) + .route("/about", get(about)) + .route("/contact", get(contact)) + .nest_service( + "/assets", + ServeDir::new(format!("{}/assets", assets_path.to_str().unwrap())), + ) +} + +async fn home() -> impl IntoResponse { + let template = HomeTemplate {}; + html::HtmlTemplate(template) +} + +#[derive(Template)] +#[template(path = "home.html")] +struct HomeTemplate; + +pub async fn blog() -> impl IntoResponse { + let template = BlogTemplate {}; + html::HtmlTemplate(template) +} + +#[derive(Template)] +#[template(path = "blog.html")] +struct BlogTemplate; + +pub async fn projects() -> impl IntoResponse { + let template = ProjectsTemplate {}; + html::HtmlTemplate(template) +} + +#[derive(Template)] +#[template(path = "projects.html")] +struct ProjectsTemplate; + +async fn now() -> impl IntoResponse { + let template = NowTemplate {}; + html::HtmlTemplate(template) +} + +#[derive(Template)] +#[template(path = "now.html")] +struct NowTemplate; + +async fn about() -> impl IntoResponse { + let template = AboutTemplate {}; + html::HtmlTemplate(template) +} + +#[derive(Template)] +#[template(path = "about.html")] +struct AboutTemplate; + +async fn contact() -> impl IntoResponse { + let template = ContactTemplate {}; + html::HtmlTemplate(template) +} + +#[derive(Template)] +#[template(path = "contact.html")] +struct ContactTemplate; diff --git a/src/lib.rs b/src/lib.rs index bd06daa..5f033f6 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,11 +1,4 @@ use anyhow::Context; -use askama::Template; -use axum::{ - response::IntoResponse, - routing::get, - Router, -}; -use tower_http::services::ServeDir; use tracing::info; use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt}; mod html; @@ -19,22 +12,9 @@ pub async fn run() -> anyhow::Result<()> { .with(tracing_subscriber::fmt::layer()) .init(); info!("initializing router..."); - let assets_path = std::env::current_dir().unwrap(); let port = 8000_u16; let addr = std::net::SocketAddr::from(([0, 0, 0, 0], port)); - let api_router = Router::new().route("/hello", get(hello_from_the_server)); - let router = Router::new() - .nest("/api", api_router) - .route("/", get(home)) - .route("/blog", get(blog)) - .route("/projects", get(projects)) - .route("/now", get(now)) - .route("/about", get(about)) - .route("/contact", get(contact)) - .nest_service( - "/assets", - ServeDir::new(format!("{}/assets", assets_path.to_str().unwrap())), - ); + let router = html::root::get_router(); info!("router initialized, now listening on port {}", port); axum::Server::bind(&addr) .serve(router.into_make_service()) @@ -42,61 +22,3 @@ pub async fn run() -> anyhow::Result<()> { .context("error while starting server")?; Ok(()) } - -async fn home() -> impl IntoResponse { - let template = HomeTemplate {}; - html::HtmlTemplate(template) -} - -#[derive(Template)] -#[template(path = "home.html")] -struct HomeTemplate; - -async fn blog() -> impl IntoResponse { - let template = BlogTemplate{}; - html::HtmlTemplate(template) -} - -#[derive(Template)] -#[template(path = "blog.html")] -struct BlogTemplate; - -async fn projects() -> impl IntoResponse { - let template = ProjectsTemplate{}; - html::HtmlTemplate(template) -} - -#[derive(Template)] -#[template(path = "projects.html")] -struct ProjectsTemplate; - -async fn now() -> impl IntoResponse { - let template = NowTemplate{}; - html::HtmlTemplate(template) -} - -#[derive(Template)] -#[template(path = "now.html")] -struct NowTemplate; - -async fn about() -> impl IntoResponse { - let template = AboutTemplate{}; - html::HtmlTemplate(template) -} - -#[derive(Template)] -#[template(path = "about.html")] -struct AboutTemplate; - -async fn contact() -> impl IntoResponse { - let template = ContactTemplate{}; - html::HtmlTemplate(template) -} - -#[derive(Template)] -#[template(path = "contact.html")] -struct ContactTemplate; - -async fn hello_from_the_server() -> &'static str { - "Hello!" -} diff --git a/templates/blog.html b/templates/blog.html index aa854e0..f6c1b34 100644 --- a/templates/blog.html +++ b/templates/blog.html @@ -5,31 +5,30 @@
diff --git a/templates/blog/AMindForNumbers.html b/templates/blog/AMindForNumbers.html index 4223a0d..bdac513 100755 --- a/templates/blog/AMindForNumbers.html +++ b/templates/blog/AMindForNumbers.html @@ -1,3 +1,7 @@ + +{% extends "base.html" %} + +{% block content %}

A Mind for Numbers @@ -95,7 +99,7 @@ If you can explain it in a way that they can understand you have a very good gra

Books like this do their part to fix the problem of studying faced by students everywhere. -the more that we know of and use them the better off we will all be. + The more that we know of and use them the better off we will all be. So if this sounds interesting to you take a look at the book A Mind for Numbers and save on time and frustration when learning something new.

@@ -104,5 +108,6 @@ the more that we know of and use them the better off we will all be.

+{% endblock %} diff --git a/templates/blog/AskingForHelp.html b/templates/blog/AskingForHelp.html index 4f492d9..f9384fc 100755 --- a/templates/blog/AskingForHelp.html +++ b/templates/blog/AskingForHelp.html @@ -1,3 +1,7 @@ + +{% extends "base.html" %} + +{% block content %}

Asking for Help @@ -130,5 +134,6 @@ It also forced me to improve my work ethic.

+{% endblock %} diff --git a/templates/blog/DeepWork.html b/templates/blog/DeepWork.html index 146658e..80835c1 100755 --- a/templates/blog/DeepWork.html +++ b/templates/blog/DeepWork.html @@ -1,3 +1,7 @@ + +{% extends "base.html" %} + +{% block content %}

Deep Work @@ -155,5 +159,6 @@

+{% endblock %} diff --git a/templates/blog/DisciplineAndMotivation.html b/templates/blog/DisciplineAndMotivation.html index 52c7543..1f5d4d5 100755 --- a/templates/blog/DisciplineAndMotivation.html +++ b/templates/blog/DisciplineAndMotivation.html @@ -1,3 +1,7 @@ + +{% extends "base.html" %} + +{% block content %}

Discipline and Motivation @@ -64,5 +68,6 @@

+{% endblock %} diff --git a/templates/blog/DoingMoreWithMyIdeas.html b/templates/blog/DoingMoreWithMyIdeas.html index 7c8afed..c039b59 100755 --- a/templates/blog/DoingMoreWithMyIdeas.html +++ b/templates/blog/DoingMoreWithMyIdeas.html @@ -1,3 +1,7 @@ + +{% extends "base.html" %} + +{% block content %}

Doing more with my Ideas @@ -94,5 +98,6 @@

+{% endblock %} diff --git a/templates/blog/ExercisingWithoutTime.html b/templates/blog/ExercisingWithoutTime.html index 7a4c735..bbcac4d 100755 --- a/templates/blog/ExercisingWithoutTime.html +++ b/templates/blog/ExercisingWithoutTime.html @@ -1,3 +1,7 @@ + +{% extends "base.html" %} + +{% block content %}

Exercising with Little Time @@ -133,5 +137,6 @@

+{% endblock %} diff --git a/templates/blog/FirstStepsToDigitalIndependence.html b/templates/blog/FirstStepsToDigitalIndependence.html index 381c969..b517267 100755 --- a/templates/blog/FirstStepsToDigitalIndependence.html +++ b/templates/blog/FirstStepsToDigitalIndependence.html @@ -1,3 +1,7 @@ + +{% extends "base.html" %} + +{% block content %}

First Steps to Digital Independence

@@ -44,7 +48,7 @@ Some of the packages available on Arch are different than OpenBSD so I had to sort out some replacements.

- The differences you can see here. + The differences you can see here.

So far I am using it to run my calendar and contacts, some file backups, a personal git server, and this website. @@ -60,5 +64,6 @@

+{% endblock %} diff --git a/templates/blog/GraduateSchool.html b/templates/blog/GraduateSchool.html index 9efbbc4..20847e2 100755 --- a/templates/blog/GraduateSchool.html +++ b/templates/blog/GraduateSchool.html @@ -1,3 +1,7 @@ + +{% extends "base.html" %} + +{% block content %}

@@ -93,5 +97,6 @@

+{% endblock %} diff --git a/templates/blog/Habits.html b/templates/blog/Habits.html index c3e5365..9014060 100755 --- a/templates/blog/Habits.html +++ b/templates/blog/Habits.html @@ -1,3 +1,7 @@ + +{% extends "base.html" %} + +{% block content %}

Habits @@ -177,5 +181,6 @@

+{% endblock %} diff --git a/templates/blog/ImmersiveLearningAndExperimentation.html b/templates/blog/ImmersiveLearningAndExperimentation.html index 8819e9d..0f20e56 100755 --- a/templates/blog/ImmersiveLearningAndExperimentation.html +++ b/templates/blog/ImmersiveLearningAndExperimentation.html @@ -1,3 +1,7 @@ + +{% extends "base.html" %} + +{% block content %}

Immersive Learning and Experimentation @@ -119,5 +123,6 @@

+{% endblock %} diff --git a/templates/blog/Independence.html b/templates/blog/Independence.html index b8f6487..e79617d 100644 --- a/templates/blog/Independence.html +++ b/templates/blog/Independence.html @@ -1,3 +1,7 @@ + +{% extends "base.html" %} + +{% block content %}

Independence @@ -36,5 +40,6 @@

+{% endblock %} diff --git a/templates/blog/LessIsMore.html b/templates/blog/LessIsMore.html index 8ff2338..3eb66a1 100755 --- a/templates/blog/LessIsMore.html +++ b/templates/blog/LessIsMore.html @@ -1,3 +1,7 @@ + +{% extends "base.html" %} + +{% block content %}

Less is More @@ -83,5 +87,6 @@

+{% endblock %} diff --git a/templates/blog/LevelingTool.html b/templates/blog/LevelingTool.html index c08a8db..b1d31d1 100755 --- a/templates/blog/LevelingTool.html +++ b/templates/blog/LevelingTool.html @@ -1,3 +1,7 @@ + +{% extends "base.html" %} + +{% block content %}

Leveling Tool @@ -26,7 +30,7 @@ The result was this.

- LevelingTool + LevelingTool
Version 0.1 Leveling Tool

@@ -53,5 +57,6 @@

+{% endblock %} diff --git a/templates/blog/LookingLikeAFool.html b/templates/blog/LookingLikeAFool.html index 3bb3b04..b268641 100755 --- a/templates/blog/LookingLikeAFool.html +++ b/templates/blog/LookingLikeAFool.html @@ -1,3 +1,7 @@ + +{% extends "base.html" %} + +{% block content %}

Looking Like a Fool @@ -83,5 +87,6 @@

+{% endblock %} diff --git a/templates/blog/OnReading.html b/templates/blog/OnReading.html index 8dc3f53..f980136 100755 --- a/templates/blog/OnReading.html +++ b/templates/blog/OnReading.html @@ -1,3 +1,7 @@ + +{% extends "base.html" %} + +{% block content %}

On Reading @@ -68,5 +72,6 @@

+{% endblock %} diff --git a/templates/blog/PersonalUpdate2021-03.html b/templates/blog/PersonalUpdate2021-03.html index 5f07aa5..550091a 100755 --- a/templates/blog/PersonalUpdate2021-03.html +++ b/templates/blog/PersonalUpdate2021-03.html @@ -1,3 +1,7 @@ + +{% extends "base.html" %} + +{% block content %}

Personal Update March 2021 diff --git a/templates/blog/PetsWorryAndInformation.html b/templates/blog/PetsWorryAndInformation.html index 8668dee..f809997 100755 --- a/templates/blog/PetsWorryAndInformation.html +++ b/templates/blog/PetsWorryAndInformation.html @@ -1,3 +1,7 @@ + +{% extends "base.html" %} + +{% block content %}

@@ -77,5 +81,6 @@

+{% endblock %} diff --git a/templates/blog/SelfDirectedLearning.html b/templates/blog/SelfDirectedLearning.html index 2599b9b..fb34b54 100755 --- a/templates/blog/SelfDirectedLearning.html +++ b/templates/blog/SelfDirectedLearning.html @@ -1,3 +1,7 @@ + +{% extends "base.html" %} + +{% block content %}

Self directed learning @@ -82,5 +86,6 @@

+{% endblock %} diff --git a/templates/blog/SpeedReadingWorkbook.html b/templates/blog/SpeedReadingWorkbook.html index 38bf226..94e56a1 100755 --- a/templates/blog/SpeedReadingWorkbook.html +++ b/templates/blog/SpeedReadingWorkbook.html @@ -1,3 +1,7 @@ + +{% extends "base.html" %} + +{% block content %} +{% endblock %} diff --git a/templates/blog/TheFoundation.html b/templates/blog/TheFoundation.html index 3a66bd7..726ce55 100755 --- a/templates/blog/TheFoundation.html +++ b/templates/blog/TheFoundation.html @@ -1,3 +1,7 @@ + +{% extends "base.html" %} + +{% block content %}

The Foundation @@ -72,5 +76,6 @@

+{% endblock %} diff --git a/templates/blog/TheMythOfPerfection.html b/templates/blog/TheMythOfPerfection.html index f591ecc..077a7af 100755 --- a/templates/blog/TheMythOfPerfection.html +++ b/templates/blog/TheMythOfPerfection.html @@ -1,3 +1,7 @@ + +{% extends "base.html" %} + +{% block content %}

The Myth of Perfection @@ -71,5 +75,6 @@

+{% endblock %} diff --git a/templates/blog/TheStart.html b/templates/blog/TheStart.html index 3d0f828..381225f 100755 --- a/templates/blog/TheStart.html +++ b/templates/blog/TheStart.html @@ -1,3 +1,7 @@ + +{% extends "base.html" %} + +{% block content %}

Where I started: @@ -45,5 +49,6 @@

+{% endblock %} diff --git a/templates/blog/ThisWebsite.html b/templates/blog/ThisWebsite.html index 26428bb..f1f3bc4 100755 --- a/templates/blog/ThisWebsite.html +++ b/templates/blog/ThisWebsite.html @@ -1,3 +1,7 @@ + +{% extends "base.html" %} + +{% block content %}

This Website @@ -83,7 +87,7 @@ It is important to take the time to ensure that the things that we create are as simple as possible while still doing everything they need to do. It often makes them harder to make in the first place but the extra investment of time and energy upfront make maintaining and modifying them much simpler. Overall it saves much more time then it takes, but the time saved is spread out over years and is less noticeable. - Kind of like good habits where the cost is now and the rewards are later. + Kind of like good habits where the cost is now and the rewards are later.

@@ -98,5 +102,6 @@

+{% endblock %} diff --git a/templates/blog/WhyAndGettingLost.html b/templates/blog/WhyAndGettingLost.html index d15e772..e6acd36 100755 --- a/templates/blog/WhyAndGettingLost.html +++ b/templates/blog/WhyAndGettingLost.html @@ -1,3 +1,7 @@ + +{% extends "base.html" %} + +{% block content %}

Why @@ -98,5 +102,6 @@

+{% endblock %} diff --git a/templates/blog/Writing.html b/templates/blog/Writing.html index 0b15dfd..8593084 100755 --- a/templates/blog/Writing.html +++ b/templates/blog/Writing.html @@ -1,3 +1,7 @@ + +{% extends "base.html" %} + +{% block content %}

Writing @@ -71,5 +75,6 @@

+{% endblock %} diff --git a/templates/projects.html b/templates/projects.html index d1b7264..ffecc5d 100644 --- a/templates/projects.html +++ b/templates/projects.html @@ -5,12 +5,12 @@ diff --git a/templates/projects/ArchServer.html b/templates/projects/ArchServer.html index d9b7b05..257d52a 100755 --- a/templates/projects/ArchServer.html +++ b/templates/projects/ArchServer.html @@ -1,8 +1,7 @@ - + +{% extends "base.html" %} + +{% block content %}

Arch Server @@ -280,3 +279,4 @@ +{% endblock %} diff --git a/templates/projects/EdgeDetection.html b/templates/projects/EdgeDetection.html index ba993d9..5ac37f7 100755 --- a/templates/projects/EdgeDetection.html +++ b/templates/projects/EdgeDetection.html @@ -1,3 +1,7 @@ + +{% extends "base.html" %} + +{% block content %}

Edge Detection @@ -19,7 +23,7 @@ This is the sample input image we used for some of the testing.

- Input + Input
Input image

@@ -34,8 +38,8 @@ 3×3 was the smallest kernel that we used.

- Horizontal line 3x3 kernel - Vertical line 3x3 kernel + Horizontal line 3x3 kernel + Vertical line 3x3 kernel
3x3 Soebel Kernels (left:Horizontal, right:Vertical)

@@ -43,7 +47,7 @@ This includes their reflections in the water below, though the reflection did dampen the edges a fair bit.

- 3x3 detection output + 3x3 detection output
3x3 Edge detection output

@@ -52,8 +56,8 @@ Here are the 9×9 kernels we used.

- Horizontal line 9x9 kernel - Horizontal line 9x9 kernel + Horizontal line 9x9 kernel + Horizontal line 9x9 kernel
9x9 Soebel Kernels (left:Horizontal, right:Vertical)

@@ -61,7 +65,7 @@ This results in a much more textured image.

- 9x9 detection output + 9x9 detection output
9x9 Edge detection output

@@ -80,7 +84,7 @@ CUDA uses the graphics card so has many more cores to work with but has more overhead.

- Convolution time graph + Convolution time graph

Unless you have access to a large number of CPU cores CUDA is almost always better. @@ -96,3 +100,4 @@

+{% endblock %} diff --git a/templates/projects/Tak.html b/templates/projects/Tak.html index 2953a51..81c8d10 100755 --- a/templates/projects/Tak.html +++ b/templates/projects/Tak.html @@ -1,3 +1,7 @@ + +{% extends "base.html" %} + +{% block content %}

Tak @@ -24,7 +28,7 @@ Here is the program interface.

- Home Board + Home Board
Tak Program

@@ -44,7 +48,7 @@ The capstone has the best characteristics of both and can squish walls to flat if it lands on them alone.

- Pieces + Pieces
Tak pieces (left to right: flat, wall, capstone)

@@ -62,8 +66,8 @@ Then they are dropped from the “bottom” of this inverted stack as you move.

- Move view - Drop view + Move view + Drop view

The comparison needs to be done from the “bottom” of the inverted stack in your hand to the top of the stack that the piece will land on. @@ -81,7 +85,7 @@ If a move creates a road for both players the active player wins.

- Victory + Victory
Victory!

@@ -115,3 +119,4 @@

+{% endblock %}