Basic rebuilt complete

This commit is contained in:
Awstin 2024-03-24 10:45:16 -04:00
parent 7f86500a86
commit 191acb54dd
58 changed files with 733 additions and 157 deletions

BIN
assets/favicon.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Binary file not shown.

BIN
assets/images/ConvolutionTime.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

BIN
assets/images/CurrentDrop-1.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

BIN
assets/images/CurrentDrop-2.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

BIN
assets/images/CurrentDrop.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

BIN
assets/images/CurrentMove-1.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

BIN
assets/images/CurrentMove-2.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

BIN
assets/images/CurrentMove.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

BIN
assets/images/Horizontal3x3.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
assets/images/Horizontal9x9.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

BIN
assets/images/InputImage.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 881 KiB

BIN
assets/images/LevelingTool.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 MiB

BIN
assets/images/Output3x3.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 309 KiB

BIN
assets/images/Output9x9.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 394 KiB

BIN
assets/images/TakPieces.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9 KiB

BIN
assets/images/TakProgram.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

BIN
assets/images/Vertical3x3.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
assets/images/Vertical9x9.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

BIN
assets/images/Victory.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View file

@ -96,6 +96,11 @@ code {
color: var(--red); color: var(--red);
} }
img {
max-width: 100%;
height: auto;
}
@media (max-width: 1024px) { @media (max-width: 1024px) {
html { html {
line-height: 1.75rem; line-height: 1.75rem;

9
src/html/api.rs Normal file
View file

@ -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!"
}

389
src/html/blog.rs Normal file
View file

@ -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,
}

View file

@ -3,6 +3,10 @@ use axum::{
http::StatusCode, http::StatusCode,
response::{Html, IntoResponse, Response}, 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. /// A wrapper type that we'll use to encapsulate HTML parsed by askama into valid HTML for axum to serve.
pub struct HtmlTemplate<T>(pub T); pub struct HtmlTemplate<T>(pub T);

39
src/html/projects.rs Normal file
View file

@ -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;

75
src/html/root.rs Normal file
View file

@ -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;

View file

@ -1,11 +1,4 @@
use anyhow::Context; use anyhow::Context;
use askama::Template;
use axum::{
response::IntoResponse,
routing::get,
Router,
};
use tower_http::services::ServeDir;
use tracing::info; use tracing::info;
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt}; use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
mod html; mod html;
@ -19,22 +12,9 @@ pub async fn run() -> anyhow::Result<()> {
.with(tracing_subscriber::fmt::layer()) .with(tracing_subscriber::fmt::layer())
.init(); .init();
info!("initializing router..."); info!("initializing router...");
let assets_path = std::env::current_dir().unwrap();
let port = 8000_u16; let port = 8000_u16;
let addr = std::net::SocketAddr::from(([0, 0, 0, 0], port)); 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 = html::root::get_router();
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())),
);
info!("router initialized, now listening on port {}", port); info!("router initialized, now listening on port {}", port);
axum::Server::bind(&addr) axum::Server::bind(&addr)
.serve(router.into_make_service()) .serve(router.into_make_service())
@ -42,61 +22,3 @@ pub async fn run() -> anyhow::Result<()> {
.context("error while starting server")?; .context("error while starting server")?;
Ok(()) 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!"
}

View file

@ -5,31 +5,30 @@
<div id="content"> <div id="content">
<ul class="no-bul"> <ul class="no-bul">
<li><a href="/blog/FirstStepsToDigitalIndependence">First Steps to Digital Independence</a></li> <li><a href="/blog/fsdi">First Steps to Digital Independence</a></li>
<li><a href="/blog/Independence">Independence</a></li> <li><a href="/blog/independence">Independence</a></li>
<li><a href="/blog/PetsWorryAndInformation">Pets, Worry, and Information</a></li> <li><a href="/blog/pri">Pets, Worry, and Information</a></li>
<li><a href="/blog/GraduateSchool">Graduate School</a></li> <li><a href="/blog/gs">Graduate School</a></li>
<li><a href="/blog/SpeedReadingWorkbook">Speed Reading Workbook</a></li> <li><a href="/blog/srw">Speed Reading Workbook</a></li>
<li><a href="/blog/ThisWebsite">This Website</a></li> <li><a href="/blog/tw">This Website</a></li>
<li><a href="/blog/LevelingTool">Leveling Tool</a></li> <li><a href="/blog/lt">Leveling Tool</a></li>
<li><a href="/blog/Writing">Writing</a></li> <li><a href="/blog/writing">Writing</a></li>
<li><a href="/blog/LessIsMore">Less is More</a></li> <li><a href="/blog/lim">Less is More</a></li>
<li><a href="/blog/ImmersiveLearningAndExperimentation">Immersive learning and Experimentation</a></li> <li><a href="/blog/ile">Immersive learning and Experimentation</a></li>
<li><a href="/blog/DoingMoreWithMyIdeas">Doing more with my Ideas</a></li> <li><a href="/blog/dmwi">Doing more with my Ideas</a></li>
<li><a href="/blog/WhyAndGettingLost">Why and Getting Lost</a></li> <li><a href="/blog/wgl">Why and Getting Lost</a></li>
<li><a href="/blog/PersonalUpdate2021-03">Personal Update March 2021</a></li> <li><a href="/blog/dm">Discipline and Motivation</a></li>
<li><a href="/blog/DisciplineAndMotivation">Discipline and Motivation</a></li> <li><a href="/blog/llf">Looking like a Fool</a></li>
<li><a href="/blog/LookingLikeAFool">Looking like a Fool</a></li> <li><a href="/blog/habits">Habits</a></li>
<li><a href="/blog/Habits">Habits</a></li> <li><a href="/blog/deepwork">Deep Work</a></li>
<li><a href="/blog/DeepWork">Deep Work</a></li> <li><a href="/blog/ewt">Exercising with little time</a></li>
<li><a href="/blog/ExercisingWithoutTime">Exercising with little time</a></li> <li><a href="/blog/afh">Asking for Help</a></li>
<li><a href="/blog/AskingForHelp">Asking for Help</a></li> <li><a href="/blog/mfn">A Mind for Numbers</a></li>
<li><a href="/blog/AMindForNumbers">A Mind for Numbers</a></li> <li><a href="/blog/sdl">Self Directed Learning</a></li>
<li><a href="/blog/SelfDirectedLearning">Self Directed Learning</a></li> <li><a href="/blog/foundation">The Foundation</a></li>
<li><a href="/blog/TheFoundation">The Foundation</a></li> <li><a href="/blog/mop">The Myth of Perfection (in scheduling)</a></li>
<li><a href="/blog/TheMythOfPerfection">The Myth of Perfection (in scheduling)</a></li> <li><a href="/blog/onreading">On Reading</a></li>
<li><a href="/blog/OnReading">On Reading</a></li> <li><a href="/blog/thestart">The Start</a></li>
<li><a href="/blog/TheStart">The Start</a></li>
</ul> </ul>
</div> </div>

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content"> <div id="content">
<h2> <h2>
A Mind for Numbers 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
</p> </p>
<p> <p>
Books like this do their part to fix the problem of studying faced by students everywhere. 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. 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.
</p> </p>
<p> <p>
@ -104,5 +108,6 @@ the more that we know of and use them the better off we will all be.
</div> </div>
<footer> <footer>
2021-02-05 <a href="/blog/SelfDirectedLearning">previous</a> / <a href="/blog/AskingForHelp">next</a> <a href={{previous}}>previous</a> / <a href={{next}}>next</a>
</footer> </footer>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content"> <div id="content">
<h2> <h2>
Asking for Help Asking for Help
@ -130,5 +134,6 @@ It also forced me to improve my work ethic.
</div> </div>
<footer> <footer>
2021-02-12 <a href="/blog/AMindForNumbers">previous</a> / <a href="/blog/ExerciseWithoutTime">next</a> <a href={{previous}}>previous</a> / <a href={{next}}>next</a>
</footer> </footer>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content"> <div id="content">
<h2> <h2>
Deep Work Deep Work
@ -155,5 +159,6 @@
</div> </div>
<footer> <footer>
2021-02-27 <a href="/blog/ExercisingWithoutTime">previous</a> / <a href="/blog/Habits">next</a> <a href={{previous}}>previous</a> / <a href={{next}}>next</a>
</footer> </footer>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content"> <div id="content">
<h2> <h2>
Discipline and Motivation Discipline and Motivation
@ -64,5 +68,6 @@
</div> </div>
<footer> <footer>
2021-03-20 <a href="/blog/LookingLikeAFool">previous</a> / <a href="/blog/PersonalUpdate2021-03">next</a> <a href={{previous}}>previous</a> / <a href={{next}}>next</a>
</footer> </footer>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content"> <div id="content">
<h2> <h2>
Doing more with my Ideas Doing more with my Ideas
@ -94,5 +98,6 @@
</div> </div>
<footer> <footer>
2021-04-10 <a href="/blog/WhyAndGettingLost">previous</a> / <a href="/blog/ImmersiveLearningAndExperimentation">next</a> <a href={{previous}}>previous</a> / <a href={{next}}>next</a>
</footer> </footer>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content"> <div id="content">
<h2> <h2>
Exercising with Little Time Exercising with Little Time
@ -133,5 +137,6 @@
</div> </div>
<footer> <footer>
2021-02-19 <a href="/blog/AskingForHelp">previous</a> / <a href="/blog/DeepWork">next</a> <a href={{previous}}>previous</a> / <a href={{next}}>next</a>
</footer> </footer>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content"> <div id="content">
<h2>First Steps to Digital Independence</h2> <h2>First Steps to Digital Independence</h2>
<p> <p>
@ -44,7 +48,7 @@
Some of the packages available on Arch are different than OpenBSD so I had to sort out some replacements. Some of the packages available on Arch are different than OpenBSD so I had to sort out some replacements.
</p> </p>
<p> <p>
The differences you can see <a href="/projects/ArchServer">here</a>. The differences you can see <a href="/projects/archserver">here</a>.
</p> </p>
<p> <p>
So far I am using it to run my calendar and contacts, some file backups, a personal git server, and this website. 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 @@
</div> </div>
<footer> <footer>
2023-08-28 <a href="/blog/Independence">previous</a> <a href={{previous}}>previous</a>
</footer> </footer>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content"> <div id="content">
<h2> <h2>
@ -93,5 +97,6 @@
</div> </div>
<footer> <footer>
2022-01-07 <a href="/blog/SpeedReadingWorkbook">previous</a> / <a href="/blog/PetsWorryAndInformation">next</a> <a href={{previous}}>previous</a> / <a href={{next}}>next</a>
</footer> </footer>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content"> <div id="content">
<h2> <h2>
Habits Habits
@ -177,5 +181,6 @@
</div> </div>
<footer> <footer>
2021-03-05 <a href="/blog/DeepWork">previous</a> / <a href="/blog/LookingLikeAFool">next</a> <a href={{previous}}>previous</a> / <a href={{next}}>next</a>
</footer> </footer>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content"> <div id="content">
<h2> <h2>
Immersive Learning and Experimentation Immersive Learning and Experimentation
@ -119,5 +123,6 @@
</div> </div>
<footer> <footer>
2021-04-16 <a href="/blog/DoingMoreWithMyIdeas">previous</a> / <a href="/blog/LessIsMore">next</a> <a href={{previous}}>previous</a> / <a href={{next}}>next</a>
</footer> </footer>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content"> <div id="content">
<h2> <h2>
Independence Independence
@ -36,5 +40,6 @@
</div> </div>
<footer> <footer>
2023-07-05 <a href="/blog/PetsWorryAndInformation">previous</a> / <a href="/blog/FirstStepsToDigitalIndependence">next</a> <a href={{previous}}>previous</a> / <a href={{next}}>next</a>
</footer> </footer>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content"> <div id="content">
<h2> <h2>
Less is More Less is More
@ -83,5 +87,6 @@
</div> </div>
<footer> <footer>
2021-04-24 <a href="/blog/ImmersiveLearningAndExperimentation">previous</a> / <a href="/blog/Writing">next</a> <a href={{previous}}>previous</a> / <a href={{next}}>next</a>
</footer> </footer>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content"> <div id="content">
<h2> <h2>
Leveling Tool Leveling Tool
@ -26,7 +30,7 @@
The result was this. The result was this.
</p> </p>
<figure> <figure>
<img src="/images/LevelingTool.jpg" alt="LevelingTool" /> <img src="/assets/images/LevelingTool.jpg" alt="LevelingTool" />
<figcaption>Version 0.1 Leveling Tool</figcaption> <figcaption>Version 0.1 Leveling Tool</figcaption>
</figure> </figure>
<p> <p>
@ -53,5 +57,6 @@
</div> </div>
<footer> <footer>
2021-06-28 <a href="/blog/Writing">previous</a> / <a href="/blog/ThisWebsite">next</a> <a href={{previous}}>previous</a> / <a href={{next}}>next</a>
</footer> </footer>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content"> <div id="content">
<h2> <h2>
Looking Like a Fool Looking Like a Fool
@ -83,5 +87,6 @@
</div> </div>
<footer> <footer>
2021-03-13 <a href="/blog/Habits">previous</a> / <a href="/blog/DisciplineAndMotivation">next</a> <a href={{previous}}>previous</a> / <a href={{next}}>next</a>
</footer> </footer>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content"> <div id="content">
<h2> <h2>
On Reading On Reading
@ -68,5 +72,6 @@
</div> </div>
<footer> <footer>
2021-01-08 <a href="/blog/TheStart">previous</a> / <a href="/blog/TheMythOfPerfection">next</a> <a href={{previous}}>previous</a> / <a href={{next}}>next</a>
</footer> </footer>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content"> <div id="content">
<h2> <h2>
Personal Update March 2021 Personal Update March 2021

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content"> <div id="content">
<h2> <h2>
@ -77,5 +81,6 @@
</div> </div>
<footer> <footer>
2022-07-23 <a href="/blog/GraduateSchool">previous</a> / <a href="/blog/Independence">next</a> <a href={{previous}}>previous</a> / <a href={{next}}>next</a>
</footer> </footer>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content"> <div id="content">
<h2> <h2>
Self directed learning Self directed learning
@ -82,5 +86,6 @@
</div> </div>
<footer> <footer>
2021-01-29 <a href="/blog/TheFoundation">previous</a> / <a href="/blog/AMindForNumbers">next</a> <a href={{previous}}>previous</a> / <a href={{next}}>next</a>
</footer> </footer>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content"> <div id="content">
<h2> <h2>
@ -44,7 +48,7 @@
</p> </p>
<p> <p>
<a href="/files/SpeedReadingWorkbook.epub" download>Epub Download here</a><br><a href="/files/SpeedReadingWorkbook.pdf" download>PDF Download here</a> <a href="/assets/files/SpeedReadingWorkbook.epub" download>Epub Download here</a><br><a href="/assets/files/SpeedReadingWorkbook.pdf" download>PDF Download here</a>
</p> </p>
<p> <p>
@ -57,5 +61,6 @@
</div> </div>
<footer> <footer>
2021-07-10 <a href="/blog/ThisWebsite">previous</a> <a href="/blog/GraduateSchool">next</a> <a href={{previous}}>previous</a> / <a href={{next}}>next</a>
</footer> </footer>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content"> <div id="content">
<h2> <h2>
The Foundation The Foundation
@ -72,5 +76,6 @@
</div> </div>
<footer> <footer>
2021-01-22 <a href="/blog/TheMythOfPerfection">previous</a> / <a href="/blog/SelfDirectedLearning">next</a> <a href={{previous}}>previous</a> / <a href={{next}}>next</a>
</footer> </footer>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content"> <div id="content">
<h2> <h2>
The Myth of Perfection The Myth of Perfection
@ -71,5 +75,6 @@
</div> </div>
<footer> <footer>
2021-01-15 <a href="/blog/OnReading">previous</a> / <a href="/blog/TheFoundation">next</a> <a href={{previous}}>previous</a> / <a href={{next}}>next</a>
</footer> </footer>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content"> <div id="content">
<h2> <h2>
Where I started: Where I started:
@ -45,5 +49,6 @@
</div> </div>
<footer> <footer>
2021-01-01 <a href="/blog/OnReading">next</a> <a href={{next}}>next</a>
</footer> </footer>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content"> <div id="content">
<h2> <h2>
This Website 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 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. 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. 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 <a href="/blog/Habits">habits</a> where the cost is now and the rewards are later. Kind of like good <a href="/blog/habits">habits</a> where the cost is now and the rewards are later.
</p> </p>
<p> <p>
@ -98,5 +102,6 @@
</div> </div>
<footer> <footer>
2021-07-05 <a href="/blog/LevelingTool">previous</a> / <a href="/blog/SpeedReadingWorkbook">next</a> <a href={{previous}}>previous</a> / <a href={{next}}>next</a>
</footer> </footer>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content"> <div id="content">
<h2> <h2>
Why Why
@ -98,5 +102,6 @@
</div> </div>
<footer> <footer>
2021-04-02 <a href="/blog/PersonalUpdate2021-03">previous</a> / <a href="/blog/DoingMoreWithMyIdeas">next</a> <a href={{previous}}>previous</a> / <a href={{next}}>next</a>
</footer> </footer>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content"> <div id="content">
<h2> <h2>
Writing Writing
@ -71,5 +75,6 @@
</div> </div>
<footer> <footer>
2021-05-08 <a href="/blog/LessIsMore">previous</a> / <a href="/blog/LevelingTool">next</a> <a href={{previous}}>previous</a> / <a href={{next}}>next</a>
</footer> </footer>
{% endblock %}

View file

@ -5,12 +5,12 @@
<div id="content"> <div id="content">
<ul class="no-bul"> <ul class="no-bul">
<li><a href="/projects/ArchServer">Arch Server</a></li> <li><a href="/projects/archserver">Arch Server</a></li>
<li><a href="/blog/SpeedReadingWorkbook">Speed Reading Workbook</a></li> <li><a href="/blog/srw">Speed Reading Workbook</a></li>
<li><a href="/blog/ThisWebsite">This Website</a></li> <li><a href="/blog/tw">This Website</a></li>
<li><a href="/blog/LevelingTool">Leveling Tool</a></li> <li><a href="/blog/lt">Leveling Tool</a></li>
<li><a href="/projects/Tak">Tak (Board Game)</a></li> <li><a href="/projects/tak">Tak (Board Game)</a></li>
<li><a href="/projects/EdgeDetection">Edge Detection</a></li> <li><a href="/projects/ed">Edge Detection</a></li>
</ul> </ul>
</div> </div>

View file

@ -1,8 +1,7 @@
<style> <!-- prettier-ignore -->
ul { {% extends "base.html" %}
@apply list-inside;
} {% block content %}
</style>
<div id="content"> <div id="content">
<h2> <h2>
Arch Server Arch Server
@ -280,3 +279,4 @@
<footer> <footer>
<a href="/projects">Back to Projects</a> <a href="/projects">Back to Projects</a>
</footer> </footer>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content"> <div id="content">
<h2> <h2>
Edge Detection Edge Detection
@ -19,7 +23,7 @@
This is the sample input image we used for some of the testing. This is the sample input image we used for some of the testing.
</p> </p>
<figure> <figure>
<img src="/images/InputImage.png" alt="Input" /> <img src="/assets/images/InputImage.png" alt="Input" />
<figcaption>Input image</figcaption> <figcaption>Input image</figcaption>
</figure> </figure>
<p> <p>
@ -34,8 +38,8 @@
3×3 was the smallest kernel that we used. 3×3 was the smallest kernel that we used.
</p> </p>
<figure> <figure>
<img src="/images/Horizontal3x3.png" alt="Horizontal line 3x3 kernel" /> <img src="/assets/images/Horizontal3x3.png" alt="Horizontal line 3x3 kernel" />
<img src="/images/Vertical3x3.png" alt="Vertical line 3x3 kernel" /> <img src="/assets/images/Vertical3x3.png" alt="Vertical line 3x3 kernel" />
<figcaption>3x3 Soebel Kernels (left:Horizontal, right:Vertical)</figcaption> <figcaption>3x3 Soebel Kernels (left:Horizontal, right:Vertical)</figcaption>
</figure> </figure>
<p> <p>
@ -43,7 +47,7 @@
This includes their reflections in the water below, though the reflection did dampen the edges a fair bit. This includes their reflections in the water below, though the reflection did dampen the edges a fair bit.
</p> </p>
<figure> <figure>
<img src="/images/Output3x3.png" alt="3x3 detection output" /> <img src="/assets/images/Output3x3.png" alt="3x3 detection output" />
<figcaption>3x3 Edge detection output</figcaption> <figcaption>3x3 Edge detection output</figcaption>
</figure> </figure>
<p> <p>
@ -52,8 +56,8 @@
Here are the 9×9 kernels we used. Here are the 9×9 kernels we used.
</p> </p>
<figure> <figure>
<img src="/images/Horizontal9x9.png" alt="Horizontal line 9x9 kernel" /> <img src="/assets/images/Horizontal9x9.png" alt="Horizontal line 9x9 kernel" />
<img src="/images/Vertical9x9.png" alt="Horizontal line 9x9 kernel" /> <img src="/assets/images/Vertical9x9.png" alt="Horizontal line 9x9 kernel" />
<figcaption>9x9 Soebel Kernels (left:Horizontal, right:Vertical)</figcaption> <figcaption>9x9 Soebel Kernels (left:Horizontal, right:Vertical)</figcaption>
</figure> </figure>
<p> <p>
@ -61,7 +65,7 @@
This results in a much more textured image. This results in a much more textured image.
</p> </p>
<figure> <figure>
<img src="/images/Output9x9.png" alt="9x9 detection output" /> <img src="/assets/images/Output9x9.png" alt="9x9 detection output" />
<figcaption>9x9 Edge detection output</figcaption> <figcaption>9x9 Edge detection output</figcaption>
</figure> </figure>
<p> <p>
@ -80,7 +84,7 @@
CUDA uses the graphics card so has many more cores to work with but has more overhead. CUDA uses the graphics card so has many more cores to work with but has more overhead.
</p> </p>
<figure> <figure>
<img src="/images/ConvolutionTime.png" alt="Convolution time graph" /> <img src="/assets/images/ConvolutionTime.png" alt="Convolution time graph" />
</figure> </figure>
<p> <p>
Unless you have access to a large number of CPU cores CUDA is almost always better. Unless you have access to a large number of CPU cores CUDA is almost always better.
@ -96,3 +100,4 @@
<footer> <footer>
<a href="/projects">Back to Projects</a> <a href="/projects">Back to Projects</a>
</footer> </footer>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content"> <div id="content">
<h2> <h2>
Tak Tak
@ -24,7 +28,7 @@
Here is the program interface. Here is the program interface.
</p> </p>
<figure> <figure>
<img src="/images/TakProgram.png" alt="Home Board" /> <img src="/assets/images/TakProgram.png" alt="Home Board" />
<figcaption>Tak Program</figcaption> <figcaption>Tak Program</figcaption>
</figure> </figure>
<p> <p>
@ -44,7 +48,7 @@
The capstone has the best characteristics of both and can squish walls to flat if it lands on them alone. The capstone has the best characteristics of both and can squish walls to flat if it lands on them alone.
</p> </p>
<figure> <figure>
<img src="/images/TakPieces.png" alt="Pieces" /> <img src="/assets/images/TakPieces.png" alt="Pieces" />
<figcaption>Tak pieces (left to right: flat, wall, capstone)</figcaption> <figcaption>Tak pieces (left to right: flat, wall, capstone)</figcaption>
</figure> </figure>
<p> <p>
@ -62,8 +66,8 @@
Then they are dropped from the “bottom” of this inverted stack as you move. Then they are dropped from the “bottom” of this inverted stack as you move.
</p> </p>
<figure> <figure>
<img src="/images/CurrentMove-2.png" alt="Move view" /> <img src="/assets/images/CurrentMove-2.png" alt="Move view" />
<img src="/images/CurrentDrop-2.png" alt="Drop view" /> <img src="/assets/images/CurrentDrop-2.png" alt="Drop view" />
</figure> </figure>
<p> <p>
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. 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. If a move creates a road for both players the active player wins.
</p> </p>
<figure> <figure>
<img src="/images/Victory.png" alt="Victory" /> <img src="/assets/images/Victory.png" alt="Victory" />
<figcaption>Victory!</figcaption> <figcaption>Victory!</figcaption>
</figure> </figure>
<p> <p>
@ -115,3 +119,4 @@
<footer> <footer>
<a href="/projects">Back to Projects</a> <a href="/projects">Back to Projects</a>
</footer> </footer>
{% endblock %}