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);
}
img {
max-width: 100%;
height: auto;
}
@media (max-width: 1024px) {
html {
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,
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<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 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!"
}

View file

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

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content">
<h2>
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>
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.
</p>
<p>
@ -104,5 +108,6 @@ the more that we know of and use them the better off we will all be.
</div>
<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>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content">
<h2>
Asking for Help
@ -130,5 +134,6 @@ It also forced me to improve my work ethic.
</div>
<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>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content">
<h2>
Deep Work
@ -155,5 +159,6 @@
</div>
<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>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content">
<h2>
Discipline and Motivation
@ -64,5 +68,6 @@
</div>
<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>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content">
<h2>
Doing more with my Ideas
@ -94,5 +98,6 @@
</div>
<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>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content">
<h2>
Exercising with Little Time
@ -133,5 +137,6 @@
</div>
<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>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content">
<h2>First Steps to Digital Independence</h2>
<p>
@ -44,7 +48,7 @@
Some of the packages available on Arch are different than OpenBSD so I had to sort out some replacements.
</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>
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>
<footer>
2023-08-28 <a href="/blog/Independence">previous</a>
<a href={{previous}}>previous</a>
</footer>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content">
<h2>
@ -93,5 +97,6 @@
</div>
<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>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content">
<h2>
Habits
@ -177,5 +181,6 @@
</div>
<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>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content">
<h2>
Immersive Learning and Experimentation
@ -119,5 +123,6 @@
</div>
<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>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content">
<h2>
Independence
@ -36,5 +40,6 @@
</div>
<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>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content">
<h2>
Less is More
@ -83,5 +87,6 @@
</div>
<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>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content">
<h2>
Leveling Tool
@ -26,7 +30,7 @@
The result was this.
</p>
<figure>
<img src="/images/LevelingTool.jpg" alt="LevelingTool" />
<img src="/assets/images/LevelingTool.jpg" alt="LevelingTool" />
<figcaption>Version 0.1 Leveling Tool</figcaption>
</figure>
<p>
@ -53,5 +57,6 @@
</div>
<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>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content">
<h2>
Looking Like a Fool
@ -83,5 +87,6 @@
</div>
<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>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content">
<h2>
On Reading
@ -68,5 +72,6 @@
</div>
<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>
{% endblock %}

View file

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

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content">
<h2>
@ -77,5 +81,6 @@
</div>
<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>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content">
<h2>
Self directed learning
@ -82,5 +86,6 @@
</div>
<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>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content">
<h2>
@ -44,7 +48,7 @@
</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>
@ -57,5 +61,6 @@
</div>
<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>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content">
<h2>
The Foundation
@ -72,5 +76,6 @@
</div>
<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>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content">
<h2>
The Myth of Perfection
@ -71,5 +75,6 @@
</div>
<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>
{% endblock %}

View file

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

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content">
<h2>
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 <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>
@ -98,5 +102,6 @@
</div>
<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>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content">
<h2>
Why
@ -98,5 +102,6 @@
</div>
<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>
{% endblock %}

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content">
<h2>
Writing
@ -71,5 +75,6 @@
</div>
<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>
{% endblock %}

View file

@ -5,12 +5,12 @@
<div id="content">
<ul class="no-bul">
<li><a href="/projects/ArchServer">Arch Server</a></li>
<li><a href="/blog/SpeedReadingWorkbook">Speed Reading Workbook</a></li>
<li><a href="/blog/ThisWebsite">This Website</a></li>
<li><a href="/blog/LevelingTool">Leveling Tool</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/archserver">Arch Server</a></li>
<li><a href="/blog/srw">Speed Reading Workbook</a></li>
<li><a href="/blog/tw">This Website</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/ed">Edge Detection</a></li>
</ul>
</div>

View file

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

View file

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

View file

@ -1,3 +1,7 @@
<!-- prettier-ignore -->
{% extends "base.html" %}
{% block content %}
<div id="content">
<h2>
Tak
@ -24,7 +28,7 @@
Here is the program interface.
</p>
<figure>
<img src="/images/TakProgram.png" alt="Home Board" />
<img src="/assets/images/TakProgram.png" alt="Home Board" />
<figcaption>Tak Program</figcaption>
</figure>
<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.
</p>
<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>
</figure>
<p>
@ -62,8 +66,8 @@
Then they are dropped from the “bottom” of this inverted stack as you move.
</p>
<figure>
<img src="/images/CurrentMove-2.png" alt="Move view" />
<img src="/images/CurrentDrop-2.png" alt="Drop view" />
<img src="/assets/images/CurrentMove-2.png" alt="Move view" />
<img src="/assets/images/CurrentDrop-2.png" alt="Drop view" />
</figure>
<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.
@ -81,7 +85,7 @@
If a move creates a road for both players the active player wins.
</p>
<figure>
<img src="/images/Victory.png" alt="Victory" />
<img src="/assets/images/Victory.png" alt="Victory" />
<figcaption>Victory!</figcaption>
</figure>
<p>
@ -115,3 +119,4 @@
<footer>
<a href="/projects">Back to Projects</a>
</footer>
{% endblock %}