Compare commits

...

31 Commits

Author SHA1 Message Date
Abdullah Islam df5bf1d4d4 made navbars and links work again 2024-03-07 19:58:21 +06:00
Abdullah Islam 054c065cf1 some changes 2024-02-23 15:39:03 +06:00
Abdullah Islam bcb6b6c6bf made a few changes to src/index.gmi 2024-02-23 15:38:47 +06:00
Abdullah Islam 2085df93d7 renamed src/useful to src/notes/reviews 2024-02-23 15:38:27 +06:00
Abdullah Islam 6dacd920ec removed src/todo.gmi 2024-02-20 15:57:50 +06:00
Abdullah Islam 8bcffa057a removed some useless comments from Makefile 2024-02-14 12:02:44 +06:00
Abdullah Islam 0b76adc3e7 added some content to src/notes/custom-website-generationg.gmi, will edit later 2024-02-14 12:02:29 +06:00
Abdullah Islam 447d45108e lib/navbar.awk: renamed the functions genNavbarHTML and genNavbarGMI to genHTMLNavbar and genGemtextNavbar; changed the loops at lib/path.awk to use < instead of <= as their condition statement 2024-02-05 14:11:10 +06:00
Abdullah Islam cd9997ecb0 added more points to my note 'custom website generation' 2024-02-02 17:27:52 +06:00
Abdullah Islam e49e939f49 added a drafts directory 2024-02-02 17:18:44 +06:00
Abdullah Islam 13796945d7 made changes to testing 2024-02-02 17:18:31 +06:00
Abdullah Islam 3aef957684 added note 'custom website generation' 2023-11-27 21:33:27 +06:00
Abdullah Islam 395ee7299f made a few changes to the article 'Endless sky is great' and somewhat improved it 2023-11-26 10:39:13 +06:00
Abdullah Islam 18eee588f6 changed styling 2023-11-26 10:38:39 +06:00
Abdullah Islam cce307db3c changed code - the navigation bar generation functions no longer use the website's output path 2023-11-15 15:51:24 +06:00
Abdullah Islam 2d5523fc24 resolved bug - fixed function getRelativePath in lib/path.awk 2023-11-15 15:50:28 +06:00
Abdullah Islam cc03fe67cf made minor changes to my link directory
changed the description for the "This Page is Designed To Last" link, and added some links to other link directories.
2023-11-09 16:41:19 +06:00
Abdullah Islam e3c7c148f9 added testing for functions from lib/path.awk 2023-11-08 21:26:19 +06:00
Abdullah Islam f6d8c46314 restructed my link directory 2023-11-07 18:38:15 +06:00
Abdullah Islam 6b86ef1b40 changed .gitignore 2023-11-07 18:24:19 +06:00
Abdullah Islam e062630a8a added more testing input to testing/ 2023-11-05 17:14:32 +06:00
Abdullah Islam bdf7c1c4ab some script changes 2023-11-04 16:15:28 +06:00
Abdullah Islam e29e3a663f fixed bug in scripts/html.awk
previously, gemini lists would be converted wrong. for example:
* lorem
* ispum

would be turned into:
<ul><li>lorem</li></ul>
<ul><li>ispum</li></ul>

instead of:
<ul>
	<li>lorem</li>
	<li>ispum</li>
</ul>
2023-10-19 14:10:15 +06:00
Abdullah Islam 1cdc5c71a2 fixed sitemap generation 2023-09-27 14:52:52 +06:00
Abdullah Islam 132d0a7b05 changed styling - modified navigation bar 2023-09-24 15:19:51 +06:00
Abdullah Islam 4a5bf3dc88 changed styling 2023-09-23 15:36:34 +06:00
Abdullah Islam b6029d6f52 moved library scripts to lib/ 2023-09-23 10:08:27 +06:00
Abdullah Islam a5ddd023ad Revert "moved library scripts to lib/"
This reverts commit 6d47159efe.
2023-09-23 10:07:54 +06:00
Abdullah Islam 6d47159efe moved library scripts to lib/ 2023-09-23 10:07:44 +06:00
Abdullah Islam 7677de9acf some changes 2023-09-23 10:05:17 +06:00
Abdullah Islam 0e89ab80fc fixed broken links 2023-09-22 09:10:20 +06:00
40 changed files with 779 additions and 234 deletions

1
.gitignore vendored
View File

@ -1,2 +1,3 @@
gmi/
html/
tags

View File

@ -1,62 +1,66 @@
SHELL = /bin/sh
SOURCES = $(shell find src/ -type f)
SITEMAP_INDEX_FILES = $(wildcard src/*/*)
all: subdirs \
$(SOURCES:src/%.gmi=html/%.html) \
$(SOURCES:src/%.png=html/%.png) \
$(SOURCES:src/%.webp=html/%.webp) \
$(SOURCES:src/%.gmi=gmi/%.gmi) \
$(SOURCES:src/%.png=gmi/%.png) \
$(SOURCES:src/%.webp=gmi/%.webp) \
gmi/sitemap.gmi \
gmi/feed.atom \
html/sitemap.html \
html/feed.atom \
html/style.css
$(SOURCES:src/%.gmi=build/html/%.html) \
$(SOURCES:src/%.png=build/html/%.png) \
$(SOURCES:src/%.webp=build/html/%.webp) \
$(SOURCES:src/%.gmi=build/gmi/%.gmi) \
$(SOURCES:src/%.png=build/gmi/%.png) \
$(SOURCES:src/%.webp=build/gmi/%.webp) \
build/gmi/sitemap.gmi \
build/gmi/feed.atom \
build/html/sitemap.html \
build/html/feed.atom \
build/html/style.css
upload:
scp -r gmi/* techn0path@vern.cc:public_gemini
scp -r html/* techn0path@vern.cc:public_html
scp -r build/gmi/* techn0path@vern.cc:public_gemini
scp -r build/html/* techn0path@vern.cc:public_html
test: testing/input.gmi testing/input_feed.txt
mawk -f scripts/navbar.awk -f scripts/path.awk -f scripts/html.awk -- testing/input.gmi > testing/output.html
mawk -f scripts/navbar.awk -f scripts/path.awk -f scripts/gemini.awk -- testing/input.gmi > testing/output.gmi
mawk -f scripts/path.awk -f scripts/feed.awk -- testing/input_feed.txt > testing/output.atom
html5validator testing/output.html
test: testing/input/index.gmi testing/input/feed.txt
echo '' | mawk -f scripts/lib/navbar.awk -f scripts/lib/path.awk -f scripts/test.awk > testing/output/functionOutputs.txt
mawk -f scripts/lib/navbar.awk -f scripts/lib/path.awk -f scripts/html.awk -v 'sourcePath=testing/input' -v 'destPath=testing/output' -- testing/input/index.gmi > testing/output/index.html
mawk -f scripts/lib/navbar.awk -f scripts/lib/path.awk -f scripts/gemini.awk -v 'sourcePath=testing/input' -v 'destPath=testing/output' -- testing/input/index.gmi > testing/output/index.gmi
mawk -f scripts/lib/path.awk -f scripts/feed.awk -- testing/input/feed.txt > testing/output/feed.atom
traverse:
find src/ \
\(-mindepth 1 -type d -fprintf tmp/directories '%P\0'\) , \
\(-type f -fprintf tmp/sources\) | xargs -0 -I{} mkdir -p build/gmi/{} build/html/{}
subdirs:
find src -mindepth 1 -type d -printf '%P\0' | xargs -0 -I{} mkdir -p gmi/{} html/{}
find src -mindepth 1 -type d -printf '%P\0' | xargs -0 -I{} mkdir -p build/gmi/{} build/html/{}
html/%.png: src/%.png
build/html/%.png: src/%.png
cp $< $@
gmi/%.png: src/%.png
build/gmi/%.png: src/%.png
cp $< $@
html/%.webp: src/%.webp
build/html/%.webp: src/%.webp
cp $< $@
gmi/%.webp: src/%.webp
build/gmi/%.webp: src/%.webp
cp $< $@
html/style.css: src/style.css
cp $< $@
build/html/style.css: src/style.scss
sass $< > $@
html/%.html: src/%.gmi scripts/html.awk scripts/navbar.awk
mawk -f scripts/navbar.awk -f scripts/path.awk -f scripts/html.awk -- $< > $@
build/html/%.html: src/%.gmi scripts/html.awk scripts/lib/navbar.awk
mawk -f scripts/lib/navbar.awk -f scripts/lib/path.awk -v 'sourcePath=src/' -v 'destPath=build/html/' -f scripts/html.awk -- $< > $@
gmi/%.gmi: src/%.gmi scripts/gemini.awk scripts/navbar.awk
mawk -f scripts/navbar.awk -f scripts/path.awk -f scripts/gemini.awk -- $< > $@
build/gmi/%.gmi: src/%.gmi scripts/gemini.awk scripts/lib/navbar.awk
mawk -f scripts/lib/navbar.awk -f scripts/lib/path.awk -v 'sourcePath=src/' -v 'destPath=build/html/' -f scripts/gemini.awk -- $< > $@
gmi/sitemap.gmi: $(SITEMAP_INDEX_FILES) scripts/sitemap_gmi.awk scripts/navbar.awk
mawk -f scripts/navbar.awk -v 'sourcePath=src/' -f scripts/path.awk -f scripts/sitemap_gmi.awk -- $(SITEMAP_INDEX_FILES) > $@
build/html/sitemap.html: $(SOURCES) scripts/sitemap_html.awk scripts/lib/navbar.awk
mawk -f scripts/lib/navbar.awk -f scripts/lib/path.awk -v 'sourcePath=src/' -v 'destPath=build/html/' -f scripts/sitemap_html.awk -- $(SOURCES) > $@
html/sitemap.html: $(SITEMAP_INDEX_FILES) scripts/sitemap_html.awk scripts/navbar.awk
mawk -f scripts/navbar.awk -v 'sourcePath=src/' -f scripts/path.awk -f scripts/sitemap_html.awk -- $(SITEMAP_INDEX_FILES) > $@
build/gmi/sitemap.gmi: $(SOURCES) scripts/sitemap_gmi.awk scripts/lib/navbar.awk
mawk -f scripts/lib/navbar.awk -f scripts/lib/path.awk -v 'sourcePath=src/' -v 'destPath=build/html/' -f scripts/sitemap_gmi.awk -- $(SOURCES) > $@
gmi/feed.atom: scripts/feed.awk
git log --diff-filter=A --pretty=format:'%aI "%s"' --name-only src/ | mawk -f scripts/path.awk -f scripts/feed.awk -- - > $@
build/html/feed.atom: scripts/feed.awk
git log --diff-filter=A --pretty=format:'%aI "%s"' --name-only src/ | mawk -v 'willConvertLinks=1' -f scripts/lib/path.awk -f scripts/feed.awk -- - > $@
html/feed.atom: scripts/feed.awk
git log --diff-filter=A --pretty=format:'%aI "%s"' --name-only src/ | mawk -v 'willConvertLinks=1' -f scripts/path.awk -f scripts/feed.awk -- - > $@
build/gmi/feed.atom: scripts/feed.awk
git log --diff-filter=A --pretty=format:'%aI "%s"' --name-only src/ | mawk -f scripts/lib/path.awk -f scripts/feed.awk -- - > $@

View File

@ -0,0 +1,24 @@
# Brain Dump
The Empire is awesome. Or is it? You see, humanity has been living under an unjust system for centuries. How did nobody fight back? Or is it really unjust? Is an empire ihnerently unjust?
The Soromoid are cool. Unfortunately, they are xenophobic. No, they aren't. Well, they are humans who genetically modified themselves to survive a pandemic, and are the closest to alien in Naev's universe.
The Dvaered are bad people. They are colonistic. Their people are brutes. Oh no.
House Za'lek are who I vibe with. They are smart. They love science and live by science.
The Pirates are bad people, but not very powerful. If organized crime was more organized, it might take over the whole universe?
Are there aliens in the universe of Naev? Are they in the Milkyway? Are they simply beyond the web of hyperlanes colonized by humans? Are the Soromoid alien? Are they?
House Proteron - the big bad. They were a dystopian society, and tried to topple the Empire, but failed. Why has there been no rebellion against the empire in it's centuries of rule?
However, there can be hyperlane networks that are disconnected. Perhaps the aliens are simply disconnected from us?
One thing I like about Naev is the exploration. You can take notes for star systems. You have to discover Jump Points yourself. While you can buy maps for large portions of the universe, you still have to discover some things yourself. But why? Shouldn't someone have made a map of the entirety of human space by now?
At first I thought that the Incident (a goofy name, the Solar Explosion should be used instead) was a supernova of Sol itself. Since judging by the technology level Sol would not explode that early, I suspected the cause of the Incident to be artificial... suggesting at aliens.
I was surprised to learn that the cause was not aliens, but indeed artificial, though unfortunately through spoilers. In their mission of galactic domination, House Proteron accidentally made a hypergate at Sol explode, causing The Incident.
What a drastic event! What a galaxy-changing event. But obviously, people moved on.

View File

@ -0,0 +1,34 @@
# Naev is great
Topic: Naev is great
Purpose: To inform why Naev is a fun game
Audience: Those who have never played Naev and want to know its quality
## Strong points
### The game's limits force you to be creative and resourceful
* the outfit slot system
* restricts weapons, forcing you to make good use of what you already have
* is limited to prevent you from making an all-purpose ship
* mass limits
* make you use lighter outfits
* force you to make a trade-off between speed and capability
* restricted fleet capability
* makes you specialize your ships
* prevents you from mothballing a deadly fleet
* makes you use your ship's manouverability to your advantage
* bigger and beefier ships are less manouverable, forcing you to make a trade-off between speed and capability
* an exception is the starbridge, with both decent weapon space, cargo space, and manouverability
### The game has recurring elements that keep it fresh and entertaining
* search & destroy
* makes you search
* gives you satisfaction when you kill your target
* point of interest missions
* some promise lore tidbits and unique outfits
* all of them give you something valuable, such as money or data matrixes at least
* code-breaking puzzle
* memory-moving puzzle
### The game's lore is rich and interesting
* each faction is distinct
* each faction is rich in depth
* the soromoid are the closest thing to alien in known space

View File

@ -0,0 +1,77 @@
# Unix Notetaking
I have seen people (like Thomas Frank) use apps like Notion and Evernote for note-taking. Personally, I use plain text files.
Plain text files are simplier then note-taking apps. They do not have many moving parts, so they have less parts that can break, and less parts to keep track off. They are lightweight and take very little space.
They are flexible. You can arrange them however you want. They can be read by plenty of applications, unlike Notion or Evernote, which can only be used by those apps. Wait what?
Alright, so the files of Notion or Evernote can only be read by those applications.
They are independent of any particular operating system, environment, application, or ecosystem. Again, they don't need a third-party who can do whatever they want with you.
A clever person could build scripts to do various things with their plain text notes.
For writing plain text notes, I only need a keyboard. This is great, and faster, since switching between a mouse and keyboard takes time.
Funny idea: you could also write plain text notes on paper. You could also write them using Notepad, Notepad++, Gedit, and more. As opposed to a word processor file, that could only be processed by a handful of applications.
When writing plain text notes, you should structure them using directories. Generally, you want a logical structure that can be extended, and is similar to how your brain organizes files. You could also organize by date. Generally though, you want to organize by category.
For example:
- notes
- log
- 2019
- 2020
- 2024
- drafts
- guides
Note that this is not necessarily my note directory structure. It is just an example.
You should also use atomic notes, meaning that each note is dedicated to a single topic. For example:
- recipes
- beef
- chicken
- chicken sandwich
- bread
instead of
- recipes.md
This makes them easier to manage. On the other hand, a single file is also easier to manage. It depends on the situation and your preferences.
You should use markup when writing plain text notes. For example:
```
# File
## Subheading
This is content
#### Subsubheading
This is related content
```
You could also have custom syntax:
```
% tags: food, tech
% description: How to make a blender.
```
Yes, I could possibly add this syntax to my website source files. That would be nice.
The end file could be:
```
# How to make a blender
% tags: guide, food, tech
% description: How to make a blender.
## Introduction
Making a blender....
```
Plain text files also work offline. If you are offline, you won't be constantly distracted by things (or distract yourself). This is also great if you are offgrid (like some people like Wrongthink or Luke Smith)
I also use plain text notes to write this website. I could add custom syntax if I wanted.
I have a drafts directory.
Overall, I don't understand why one would use or need complex applications like Notion or Evernote when we have Plain Text Files. It's simple.

View File

@ -0,0 +1,31 @@
# Unix Notetaking
## Benefits
### Simplicity
Plain text notes have very few moving parts, reducing setup time and cost, failure points, and cognitive load. All of the benefits of plain text notes are for free, without any additional setup.
### Versatility
Plain text files are versatile, and have a flexible directory structure.
If you are using the right text editor, writing plain text notes only requires a keyboard, which is faster than switching between a mouse and a keyboard all of the time.
### Portability
Plain text files are independent of any particular program, environment, ecosystem, or operating system, and have no dependencies, apart from a text editor.
They do not rely on a third-party with control over how you take notes, unlike Notion, Evernote, Microsoft Office, and so on.
They work offline; useful for those at rural areas, living offgrid, or who want to reduce distractions.
## Usage
### Markdown
Markdown is an excellent markup language for writing plain text notes. It is very clean, and readable by moth humans and machines alike. Unfortunately, it does not have one specification, so the one I use is [CommonMark](https://commonmark.org). There are tools such as glow for rendering or otherwise using Markdown files.
### Custom Formats
You could also add custom markup to your plain text notes. For example:
```
% tags: food, tutorial, tech
% description: How to make a Solar Cooker
```
### Git
To manage your notes, you can use a version control system like Git. A version control system gives a user the ability to track changes and undo them, or put them in a seperate branch, which can later be merged with another branch. Git also allows collaboration between different users, as each can have their own local copy, while keeping it synced with the Main Repository.

View File

@ -0,0 +1,34 @@
# Unix Notetaking
## Introduction
I have seen many people (like Thomas Frank) take notes using programs like Notion or Evernote. Personally, I take notes using plaintext files, as they are simpler, more flexible, and more portable than the alternatives.
## Benefits
### Simplicity
Plain text files have a small amount of moving parts, which reduces setup time and cost, failure points, and cognitive load. All of the benefits of plain text files are built-in and intrinsic to them.
### Flexiblity
One can arrange plain text files however they want. Plain text files are not tied to a specific format, so mix and match as you like! They are accesible to a wide variety of tools.
This also means that with the right text editor, writing plain text files only requires using a keyboard, rather than constantly switching between a mouse and a keyboard.
### Portability
Plain text files are independent of any particular program, environment, ecosystem, or operating system, and have no dependencies other than a text editor. They work offline, useful for those at rural areas, who are living offgrid, or who want to reduce distractions, as the internet is a huge source of distractions (for me at least). They use no third-party with control over you, unlike Notion, Evernote, Microsoft Office, and other proprietary programs.
## Usage
### Markdown
Markdown is an excellent clean markup language for writing, readable by both humans and machines alike. Unfortunately, it has many different specifications, so I use the [CommonMark](https://commonmark.org) specification.
For rendering markdown files, use glow.
### Custom Formats
You could also add custom markup to your plain text files. For example:
```
% description: How to make a Solar Cooker
% tags: food, tutorial, tech
```
### Git
To manage file changes, use a version control system like Git. A version control system tracks changes and allows a user to reverse them, or put them in a seperate development branch, and merge development branches. Git also allows collaboration between different users, where each have their own local copy, while keeping it synchronized with the main repository.
### Conclusion

View File

@ -0,0 +1,31 @@
# Unix Notetaking
## Audience
Those who are using programs like Notion or Evernote. Mostly a non-technical audience, whom I assume don't use the command line, but have some basic computer skills.
## Topic
The advantages of plain text notes over other methods.
## Purpose
To convince the audience that plain text files are the best way to keep notes.
## Points
* benefits
* plain text files are simple
* low setup time
* less failure points
* lower cognitive load
* plain text files are versatile
* flexible directory structure
* only a keyboard is needed
* faster, as switching between a keyboard and mouse takes time
* plain text files are portable
* no dependencies
* readable almost anywhere
* does not rely on a third-party
* offline
* this increases focus, as the internet is a nice distraction
* this is good for those who are living offgrid or at rural areas
* usage
* markdown
* custom formats
* git

View File

@ -1,5 +1,5 @@
BEGIN {
printf "%s", genNavbarGMI(FILENAME, "src/", "gmi/")
printf "%s", genGemtextNavbar(FILENAME, sourcePath)
}
{ print }

View File

@ -4,6 +4,8 @@ BEGIN {
subHeadings[0] = ""
}
/^[ ]*$/ { next }
/^#[^#]/ {
match($0, "^#[ ]*")
headingText = substr($0, RSTART + RLENGTH)
@ -51,6 +53,7 @@ BEGIN {
sub("\.gmi$", ".html", link)
if (description == "") description = link
gsub("&", "\\&amp;", description)
gsub("<", "\\&lt;", description)
gsub(">", "\\&gt;", description)
@ -58,32 +61,35 @@ BEGIN {
gsub("\"", "\\&quot;", description)
body = body sprintf("<a href='%s'>%s</a><br>\n", link, description)
next
}
/^```/ {
body = body "<pre>\n"
while (getline == 1) {
if ($0 ~ "^```") break
getline
while (match($0, "^```") == 0) {
gsub("&", "\\&amp;")
gsub("<", "\\&lt;")
gsub(">", "\\&gt;")
gsub("'", "\\&apos;")
gsub("\"", "\\&quot;")
body = body $0 "\n"
if (getline != 1) break
}
body = body "</pre>\n"
next
}
/^>/ {
body = body "<blockquote>\n"
while (getline == 1 && match($0, "^>[ ]*")) {
while (match($0, /^>[ ]*/) != 0) {
text = substr($0, RSTART + RLENGTH)
gsub("&", "\\&amp;", text)
@ -93,6 +99,8 @@ BEGIN {
gsub("\"", "\\&quot;", text)
body = body text "<br>\n"
if (getline != 1) break
}
body = body "</blockquote>\n"
@ -102,7 +110,7 @@ BEGIN {
/^\*/ {
body = body "<ul>\n"
while (getline == 1 && match($0, "^\\*[ ]*")) {
while (match($0, /^\*[ ]*/) != 0) {
gsub("&", "\\&amp;")
gsub("<", "\\&lt;")
gsub(">", "\\&gt;")
@ -110,12 +118,15 @@ BEGIN {
gsub("\"", "\\&quot;")
body = body sprintf("<li>%s</li>\n", substr($0, RSTART + RLENGTH))
if (getline != 1) break
}
body = body "</ul>\n"
next
}
{
gsub("&", "\\&amp;")
gsub("<", "\\&lt;")
@ -127,7 +138,7 @@ BEGIN {
}
END {
delete subHeadings[0]
delete subHeadings[0] # this index at subHeadings contains nothing
if (length(subHeadings) > 0) {
tocText = "<details id='toc'> <summary>Table of content</summary> <ol>\n"
@ -144,12 +155,11 @@ END {
tocText = tocText "</ol> </details>\n"
}
navbarText = genNavbarHTML(FILENAME, "src/", "html/")
navbarText = genHTMLNavbar(FILENAME, sourcePath, destPath)
dirname = getDirname(FILENAME)
gsub(/(\.|\[|\]|\*)/, "\\&", sourcePath)
gsub(sourcePath, outputPath, dirname)
gsub(sourcePath, outputPath, filename)
stylesheetPath = getRelativePath(dirname, sourcePath "/style.css")
printf "<!DOCTYPE html>\n\
<html>\n\
@ -159,7 +169,7 @@ END {
<meta name='referrer' content='no-referrer' />\n\
<meta name='viewpoint' content='width=device-width,initial-scale=1.0' />\n\
\n\
<link ref='stylesheet' href='%s'>\n\
<link rel='stylesheet' href='%s'/>\n\
</head>\n\
<body>\n\
<header>\n\

38
scripts/lib/navbar.awk Executable file
View File

@ -0,0 +1,38 @@
function genHTMLNavbar(filename, sourcePath, destPath) {
if (filename == "-" || filename == "/dev/stdout/")
return ""
filename = resolvePath(filename)
dirname = getDirname(filename)
return sprintf("<nav id='navbar'>\n\
<a href='%s'>home</a> | \n\
<a href='%s'>notes</a> | \n\
<a href='%s'>sitemap</a> | \n\
<a href='%s'>feed</a> | \n\
<a href='http://git.vern.cc/techn0path/'>git</a>\n\
</nav><hr>\n", \
getRelativePath(dirname, sourcePath "/index.html"), \
getRelativePath(dirname, sourcePath "/notes/index.html"), \
getRelativePath(dirname, sourcePath "/sitemap.html"), \
getRelativePath(dirname, sourcePath "/feed.atom"))
}
function genGemtextNavbar(filename, sourcePath, destPath) {
if (filename == "-" || filename == "/dev/stdout/")
return ""
dirname = getDirname(filename)
return sprintf("Navigation:\n\
=> %s home\n\
=> %s notes\n\
=> %s sitemap\n\
=> %s feed\n\
=> https://git.vern.cc/techn0path/ git\n\n", \
getRelativePath(dirname, sourcePath "/index.gmi"), \
getRelativePath(dirname, sourcePath "/notes/index.gmi"), \
getRelativePath(dirname, sourcePath "/sitemap.gmi"), \
getRelativePath(dirname, sourcePath "/feed.atom"))
}

View File

@ -2,12 +2,12 @@ function getDirname(path, pathComponents, dirname) {
dirname = ""
pathComponents[1] = ""
sub(/\/+$/, "", path)
path = resolvePath(path)
split(path, pathComponents, "/")
if (length(pathComponents) < 2) return "."
for (i in pathComponents)
for (i = 1; i < length(pathComponents); i++)
dirname = dirname pathComponents[i] "/"
return dirname
@ -20,35 +20,44 @@ function resolvePath(path, resolvedPath, pathComponents) {
sub(/\/+$/, "", path)
split(path, pathComponents, "/")
for (i in pathComponents)
if (pathComponents[i] == "." || pathComponents[i+1] == ".." || pathComponents[i] == "")
for (i = 1; i < length(pathComponents) + 1; i++)
if (pathComponents[i] == "." || pathComponents[i] == "")
continue
else
else if (pathComponents[i+1] == "..") {
i++
continue
} else
resolvedPath = resolvedPath pathComponents[i] "/"
sub(/\/+$/, "", resolvedPath)
return resolvedPath
}
function getRelativePath(base, path, resolvedPath, baseComponents, pathComponents, commonPrefix) {
path = resolvePath(path)
base = resolvePath(base)
pathComponents[1] = ""
baseComponents[1] = ""
isCommonPrefixUnfinished = 1
commonPrefixEnd = 1
resolvedPath = ""
sub(/\/+$/, "", base)
sub(/\/+$/, "", path)
base = resolvePath(base)
path = resolvePath(path)
split(path, pathComponents, "/")
split(base, baseComponents, "/")
for (i in pathComponents)
if (baseComponents[i] == pathComponents[i] && isCommonPrefixUnfinished)
resolvedPath = resolvedPath "../"
else {
isCommonPrefixUnfinished = 0
resolvedPath = resolvedPath pathComponents[i] "/"
}
while (commonPrefixEnd < length(baseComponents) + 1 &&
commonPrefixEnd < length(pathComponents) + 1 &&
baseComponents[commonPrefixEnd] == pathComponents[commonPrefixEnd])
commonPrefixEnd++
for (i = commonPrefixEnd; i < length(baseComponents) + 1; i++)
resolvedPath = resolvedPath "../"
for (i = commonPrefixEnd; i < length(pathComponents) + 1; i++)
resolvedPath = resolvedPath pathComponents[i] "/"
sub(/\/+$/, "", resolvedPath)
return resolvedPath
}

View File

@ -1,38 +0,0 @@
function genNavbarHTML(filename, sourcePath, outputPath) {
if (filename == "-" || filename == "/dev/stdout/")
return ""
dirname = getDirname(filename)
gsub(/(\.|\[|\]|\*)/, "\\&", sourcePath)
gsub(sourcePath, outputPath, dirname)
gsub(sourcePath, outputPath, filename)
return sprintf("<nav id='navbar'>\n\
<a href='%s'>home</a> | \n\
<a href='%s'>sitemap</a> | \n\
<a href='%s'>feed</a> | \n\
<a href='http://git.vern.cc/techn0path/'>git</a>\n\
</nav><br>\n", \
getRelativePath(dirname, outputPath "/index.html"), \
getRelativePath(dirname, outputPath "/sitemap.html"), \
getRelativePath(dirname, outputPath "/feed.atom"))
}
function genNavbarGMI(filename, sourcePath, outputPath) {
if (filename == "-" || filename == "/dev/stdout/")
return ""
dirname = getDirname(filename)
gsub(/(\.|\[|\]|\*)/, "\\&", sourcePath)
gsub(sourcePath, outputPath, dirname)
gsub(sourcePath, outputPath, filename)
return sprintf("Navigation:\n\
=> %s home\n\
=> %s sitemap\n\
=> %s feed\n\
=> https://git.vern.cc/techn0path/ git\n\n", \
getRelativePath(dirname, outputPath "/index.gmi"), \
getRelativePath(dirname, outputPath "/sitemap.gmi"), \
getRelativePath(dirname, outputPath "/feed.atom"))
}

View File

@ -2,14 +2,15 @@
# - sourcePath
BEGIN {
printf "%s", genNavbarGMI(FILENAME, "src/", "gmi/")
printf "%s", genGemtextNavbar(FILENAME, sourcePath)
}
{
gsub("^" sourcePath, "", FILENAME)
linkAddress = FILENAME
gsub("^" sourcePath, "", linkAddress)
pathComponents[1] = ""
split(FILENAME, pathComponents, "/")
split(linkAddress, pathComponents, "/")
oldFolderName = folderName
folderName = pathComponents[1]
@ -25,6 +26,6 @@ BEGIN {
}
{
printf "=> %s %s\n", FILENAME, title
printf "=> %s %s\n", linkAddress, title
nextfile
}

View File

@ -1,15 +1,16 @@
BEGIN {
body = "<h1>Sitemap</h1>"
pathComponents[1] = ""
}
{
sub("^" sourcePath, "", FILENAME)
linkAddress = FILENAME
sub("^" sourcePath, "", linkAddress)
if (link !~ "^[a-zA-Z0-9_]*:")
sub("\.gmi$", ".html", FILENAME)
sub("\.gmi$", ".html", linkAddress)
pathComponents[1] = ""
split(FILENAME, pathComponents, "/")
split(linkAddress, pathComponents, "/")
oldFolderName = folderName
folderName = pathComponents[1]
@ -25,12 +26,14 @@ BEGIN {
}
{
body = body sprintf("<a href='%s'>%s</a><br>\n", FILENAME, title)
body = body sprintf("<a href='%s'>%s</a><br>\n", linkAddress, title)
nextfile
}
END {
dirname = getDirname(FILENAME)
stylesheetPath = getRelativePath(dirname, sourcePath "/style.css")
printf "<!DOCTYPE html>\n\
<html>\n\
<head>\n\
@ -40,11 +43,7 @@ END {
<meta name='referrer' content='no-referrer' />\n\
<meta name='viewpoint' content='width=device-width,initial-scale=1.0' />\n\
\n\
<style>\n\
body { margin: 20px; }\n\
#content { max-width: 80ch; }\n\
.permalink { margin-left: 15px; }\n\
</style>\n\
<link rel='stylesheet' href='%s'/>\n\
</head>\n\
<body>\n\
<header>\n\
@ -55,6 +54,7 @@ body { margin: 20px; }\n\
</article>\n\
</body>\n\
</html>", \
genNavbarHTML(FILENAME, "src/", "html/"), \
stylesheetPath, \
genHTMLNavbar(FILENAME, sourcePath), \
body
}

30
scripts/test.awk Executable file
View File

@ -0,0 +1,30 @@
function assert(expectedValue, actualValue) {
if (expectedValue == actualValue) {
printf("%s == %s\n", expectedValue, actualValue)
} else {
printf("%s != %s\n", expectedValue, actualValue)
}
}
END {
print "=> getDirname('../path/deep/down/here')"
assert("../path/deep/down/", getDirname("../path/deep/down/here"))
print "=> getDirname('a_single_directory')"
assert(".", getDirname("a_single_directory"))
print "=> resolvePath('./path/to/irrelevant_directory/../file.txt')"
assert("path/to/file.txt", resolvePath("./path/to/irrelevant_directory/../file.txt"))
print "=> resolvePath('path/to/file.txt/')"
assert("path/to/file.txt", resolvePath("path/to/file.txt/"))
print "=> resolvePath('path/to/file.txt')"
assert("path/to/file.txt", resolvePath("path/to/file.txt"))
print "=> getRelativePath('parent/directory/', 'parent/path/to/file.txt')"
assert("../path/to/file.txt", getRelativePath("parent/directory", "parent/path/to/file.txt"))
print "=> getRelativePath('parent/directory/', 'parent/directory/path/to/file.txt')"
assert("path/to/file.txt", getRelativePath("parent/directory", "parent/directory/path/to/file.txt"))
}

View File

@ -6,6 +6,7 @@ On this personal website of mine, I talk about stuff.
## Highlights
The content on this site I am most proud of. :)
=> notes/awk-make-sh.gmi Use awk + make + sh for website generation
=> notes/custom-website-generation.gmi Custom Website Generation
=> notes/on-personal-websites.gmi On personal websites
=> useful/addons.gmi Useful addons
=> useful/links.gmi Useful Links

View File

@ -0,0 +1,13 @@
# Custom Website Generation
I thought it would be interesting to discuss how I put together this website. I use a custom setup composed of make, awk, and shell, as none of the static site generators that I have seen directly use gemtext as their input format. My approach is also easy to extend.
## Writing using gemtext
First, I write content in gemtext. gemtext seperates presentation from content (and doesn't have presentation ) allowing me to focus purely on content. Since I am publishing to Gemini as well, and gemtext is more convenient.
## Building using make
Then, I run make to generate the static pages, as adding new recipes is easy. By default, make only re-runs a recipe if the files it requires have been changed. The source directory's structure translates to the build directories. make generates static pages for both the WWW and Gemini.
## Processing using awk
During the build process, make runs several scripts written in awk, a language designed to process text. There are some awk library scripts written by me, since running awk-native functions is usually faster than running external programs. awk scripts are very easy and fast to write.
For building pages for Gemini, awk simply adds headers to the source files. For building pages for HTML, awk goes through the entire source file, building the body and table of content as it goes, then outputting at the end.

View File

@ -0,0 +1,20 @@
# Endless Sky is great
WARNING: light spoilers
## Introduction
Endless Sky is an open-source top-down open-world space trading and combat game, inspired by Escape Velocity (I never played Escape Velocity however). I started playing it around 2022, and have thoroughly enjoyed it. Here are some reasons why:
## Endless Sky's world is well thought out
Each faction in Endless Sky is distinct from the others, and you'd be hard-pressed to find a faction that is similiar to another one. Each faction is well fleshed out, and has a rich history.
## Instead of using cutscenes, Endless Sky delivers the same content using text and images
Many games use video cutscenes, but Endless Sky uses text to convey its story, with the occasional images. Endless Sky's excellent writing immerses you into the world, with plenty of tidbits about the cultures of its universe thrown in, allowing one to imagine extra details.
## Gameplay is fun
Endless Sky doesn't restrict you to a single gameplay style. Each ship has limited outfit space, so you have to choose your outfits wisely. You can play using a single ship, or build giant death fleets that lay waste to your enemies.
## Conclusion
Overall, Endless Sky is a worthy succesor to Escape Velocity.
## Related
=> https://endless-sky.github.io/

View File

@ -0,0 +1,3 @@
# Naev is great
## Introduction
Naev is a space trading and combat game inspired by Escape Velocity (which I never played).

View File

@ -1,7 +1,22 @@
# On Personal Websites
The main purpose of this website for me is having fun; designing, writing, and structuring are enjoyable. But there are other reasons too. my experiences are pressented for others to learn, I could recieve feedback. Of course, there are many reasons to build a website: personal branding, restoring the Old web, learning about the web stack, or having fun like me.
## Introduction
I haven't seen many people build personal websites. I believe that more people should create personal websites. Here are some reasons why:
## Websites teach you about the web stack
Building a website requires several skills, such as web server managment, writing HTML (not really if you are using a Content Managment System, but oh well), and writing content. Building a personal website is a good way to learn several skills at once.
## Websites allow you to benefit the world
My experiences are presented for others to learn from, and I can recieve feedback. Writing a website allows you to benefit the world, obviously.
Do you think that you have no original content to write? Well, during writing, you think and come up with new ideas. This is because the physical act of writing (or typing) gets you to think. And, when writing, your thoughts are dumped onto something (a piece of paper, or maybe your screen), leaving your brain free to think more. See? Your brain is for making ideas, not storing them.
## Websites make you hone in your writing skills
Doesn't writing for a blog every week make you improve your writing skills. To improve at any field, you must practice regularly. People can also give feedback on your content, helping you further.
## Websites are fun to make
The main purpose of this website for me is having fun; designing, writing, and structuring are enjoyable.
## Related
=> awk-make-sh.gmi One way to build a website, I guess
=> custom-website-generation.gmi One way to build a website, I guess
=> https://ijver.me/blog/internet-tenancy/ Internet tenancy is a major problem
=> https://www.jvt.me/posts/2019/07/22/why-website/ Jamie Tanna: Why I have a website and why you should too

View File

@ -0,0 +1,16 @@
# Game Review
## Endless Sky
Endless Sky is an open-source top-down open-world space trading and combat game, inspired by Escape Velocity (I never played Escape Velocity however). I started playing it around 2022, and have thoroughly enjoyed it. Here are some reasons why:
Each faction in Endless Sky is distinct from the others, and you'd be hard-pressed to find a faction that is similiar to another one. Each faction is well fleshed out, and has a rich history.
Many games use video cutscenes, but Endless Sky uses text to convey its story, with the occasional images. Endless Sky's excellent writing immerses you into the world, with plenty of tidbits about the cultures of its universe thrown in, allowing one to imagine extra details.
Endless Sky doesn't restrict you to a single gameplay style. Each ship has limited outfit space, so you have to choose your outfits wisely. You can play using a single ship, or build giant death fleets that lay waste to your enemies.
=> https://endless-sky.github.io/
## Naev
Naev is a space trading and combat game inspired by Escape Velocity (which I never played).
## Pioneer

View File

@ -0,0 +1,65 @@
# Useful Web Links
A one-man one-page link directory.
## Personal
=> https://drewdevault.com Drew DeVault
=> https://lukesmith.xyz Luke Smith
=> https://seirdy.one Seirdy
=> https://atthis.link Marc
=> https://ewontfix.com EWONTFIX
=> https://ntietz.com/atom.xml Nicole
=> https://www.karl.berlin/ Karl Bartel
=> https://koshka.love/ Koshka
=> https://shadowm00n.neocities.org/ Shadowm00n
## Web
### Link Directories
=> https://ooh.directory/ Ooh! Directory
A directory of blogs.
=> https://curlie.org/ Curlie
A directory of websites.
## Services
=> https://wttr.in wttr.in
A minimalist weather service, meant to be used with cURL.
## Technology
=> https://wiki.archlinux.org Arch Linux Wiki
A guide for Arch Linux, and things that aren't specific to Arch, including GRUB, partitioning, and minimalist setups.
=> https://samwho.dev/bloom-filters/ Bloom Filters
A nice explanation of bloom filters.
=> https://useplaintext.email Use Plaintext Email: Why, and how.
=> http://searchingspot.com Searching Spot
A guide for effectively using search engines.
=> https://landchad.net LandChad
A guide for self-hosting public-facing services.
=> https://spyware.neocities.org Spyware Watchdog
A guide to unsolicited connections made by software, and how to mitigate them.
=> https://darrenburns.net/posts/piece-table/ Darren Burns: Piece Tables
An excellent explanation of data structures called piece tables for beginners. Helped me to understand them when I was stumped!
=> https://lukesmith.xyz/articles/notes-on-learning-languages/ Luke Smith's notes on learning languages
Tips for learning languages.
=> https://paulgraham.com/talk.html Paul Graham: Write like you talk
An article detailing why you should use a conversational tone in your writings.
=> http://www.catb.org/~esr/halloween/index.html The Halloween Documents
A series of leaked Microsoft memos that clearly show that Microsoft wanted to destroy Linux, and that Linux presented a real threat against them.
=> https://anybrowser.org/campaign The Any Browser Campaign
A campaign about designing for all browsers.
=> https://tante.cc/the-third-web Tante: Web3
An article covering why Web3 is A Bad Idea.
=> https://jeffhuang.com/designed_to_last Jeff Huang's Manifesto "This Page Is Designed To Last"
A guide to increasing the maintainability of your webpages, and reducing the chance you will abandon them.

View File

@ -0,0 +1,26 @@
# Useful Software
Here is a list of software that I use, useful enough to be worth mentioning:
## Password Store, or pass,
Password Store, or pass, is a CLI password manager that stores your passwords locally at ~/.password-store (or another location defined by the user) with optional git integration.
## AWK
AWK is a programming language for processing text files, with scripts that are quick and easy to write. I use AWK to generate the static pages on this website!
## VIS
Vis is a modal text editor, inspired by VIM, with several modes of operation. Macros repeat operations again and again, transforming hours of editing into minutes.
## mitmproxy
mitmproxy is a proxy that displays connections sent through it; useful for checking software for spyware.
## sdcv
sdcv is an offline dictionary program that is a CLI version of StarDict.
## qalc
qalc is a calculator that supports both GUI and CLI interfaces, seamless unit conversion, and even custom units.
## emptty
emptty is a TUI login manager.
## newsboat
newsboat is a TUI RSS Feed reader.

View File

@ -1,5 +1,3 @@
#content { max-width: 70ch; margin: auto; padding: 10px; }
#navbar { max-width: 70ch; margin: auto; padding: 10px; background: teal; color: white; }
#navbar a { color: white; }
hr { max-width: 70ch; }
#navbar { max-width: 70ch; margin: auto; padding: 10px; }
.permalink { margin-left: 15px; }

View File

@ -1,6 +0,0 @@
# Todo
* Add a search-engine targeted sitemap document
* Make the AWK scripts more efficient
* Make the 'upload' make rule more efficient, by making it only upload files that have been changed
* Use a single find command to gather data about all of the files at once, then use the results of that find command across the setup. This will avoid the need to scan the same directory multiple times.
* Instead of using src/feed.ass for ATOM feed generation, make a single feed.json file at the root, then add content to it using a script, which will take in a filepath of a recently updated file, and a description as an input.

View File

@ -1,72 +0,0 @@
# Useful Web Links
Basically a one-man one-page link directory. These link directories also somewhat tell you generally who the author is. I disagree with some of the views of these authors.
Tags:
* #FOSS
* #tradition
* #AI
* #programming
* #internet
* #unix
* #writing
* #languages
* #privacy
## People
=> https://drewdevault.com Drew DeVault
- #FOSS, #programming
=> https://lukesmith.xyz Luke Smith
- #tradition, #FOSS
=> https://seirdy.one Seirdy
- #FOSS
=> https://atthis.link Marc
- #FOSS, #AI
=> https://ewontfix.com EWONTFIX
A blog about bugs in software. #programming
## RTFM
=> https://wiki.archlinux.org Arch Linux Wiki
A helpful guide to manage an Arch Linux system, and it also covers IN DETAIL things that aren't specific to Arch, such as GRUB, and partitioning. #unix
=> https://useplaintext.email Use Plaintext Email: Why, and how.
- #internet
=> http://searchingspot.com Searching Spot
A guide for using search engines more effectively. #internet
=> https://landchad.net LandChad
An internet service self-hosting guide. #internet
## Software / Services
=> https://spyware.neocities.org Spyware Watchdog
A guide to unsolicited connections made by software, and how to mitigate them. #privacy
=> https://wttr.in wttr.in
A minimalist weather service, meant to be used with cURL.
## Articles
=> https://lukesmith.xyz/articles/notes-on-learning-languages/ Luke Smith's notes on learning languages
Some tips for learning languages. #languages
=> https://paulgraham.com/talk.html Paul Graham: Write like you talk
An excellent article by Paul Graham detailing why you should use a conversational tone in your writings. #writing
=> http://www.catb.org/~esr/halloween/index.html The Halloween Documents
A series of leaked Microsoft memos that clearly show that Microsoft wanted to destroy Linux, and that Linux presented a real threat against them. #linux, #FOSS
=> https://anybrowser.org/campaign The Any Browser Campaign
A campaign about designing for all browsers. #internet
=> https://tante.cc/the-third-web Tante: Web3
An article covering why Web3 is A Bad Idea. #internet
=> https://jeffhuang.com/designed_to_last Jeff Huang's Manifesto "This Page Is Designed To Last"
A manifesto on how to increase the maintainability of your webpages. Many webpages die simply because it was too much of a hassle for the author, which is avoidable by following these principles. #internet
## Media
=> https://yewtu.be/channel/UCECl4aNz5hvuRzW5fgCOHKQ Jerobeam Fendorson
A YouTube channel containing Osilloscope music.

View File

@ -1,10 +0,0 @@
# Great Software
execline is a non-interactive scripting language that uses chain loading, where one program executes another program after ending. Since scripting glues programs instead of creating them, execlineb lacks functions.
Password Store, or pass, is a password manager that stores your passwords locally at ~/.password-store, and optionally uses git for reversing accidents. Core utilities easily manipulate passwords stored using pass.
AWK is a programming language for processing text files. AWK Scripts are easy and quick to write.
Vis is a modal text editor; think of it as if you are giving commands to edit text files. Macros repeat commands again and again.
mitmproxy is a proxy that displays connections sent through it. It is useful for checking software for spyware.

View File

@ -0,0 +1,2 @@
# Notes
Notes are good!

View File

@ -0,0 +1,2 @@
# Useful
Useful things are good!

View File

@ -0,0 +1,14 @@
=> getDirname('../path/deep/down/here')
../path/deep/down/ == ../path/deep/down/
=> getDirname('a_single_directory')
. == .
=> resolvePath('./path/to/irrelevant_directory/../file.txt')
path/to/file.txt == path/to/file.txt
=> resolvePath('path/to/file.txt/')
path/to/file.txt == path/to/file.txt
=> resolvePath('path/to/file.txt')
path/to/file.txt == path/to/file.txt
=> getRelativePath('parent/directory/', 'parent/path/to/file.txt')
../path/to/file.txt == ../path/to/file.txt
=> getRelativePath('parent/directory/', 'parent/directory/path/to/file.txt')
path/to/file.txt == path/to/file.txt

31
testing/output/index.gmi Normal file
View File

@ -0,0 +1,31 @@
Navigation:
=> testing/input/index.gmi home
=> testing/input/notes/index.gmi notes
=> testing/input/sitemap.gmi sitemap
=> testing/input/feed.atom feed
=> http://git.vern.cc/techn0path/ git
# Testing Input
This is testing input.
And this text should be <escaped>, so that the characters work in 'HTML.
> Quotes should work.
> - Me
```
And code should work too.
Right?
> Well quotes within code don't work.
```
* Unordered lists
* should work properly, hopefully
* And spaces seperate lists
## Level 2 Subheadings work
### Level 3 Subheadings work
#### But not beyond that.

54
testing/output/index.html Normal file
View File

@ -0,0 +1,54 @@
<!DOCTYPE html>
<html>
<head>
<title>Testing Input</title>
<meta name='author' content='techn0path' />
<meta name='referrer' content='no-referrer' />
<meta name='viewpoint' content='width=device-width,initial-scale=1.0' />
<link rel='stylesheet' href='style.css'/>
</head>
<body>
<header>
<nav id='navbar'>
<a href='index.html'>home</a> |
<a href='notes/index.html'>notes</a> |
<a href='sitemap.html'>sitemap</a> |
<a href='feed.atom'>feed</a> |
<a href='http://git.vern.cc/techn0path/'>git</a>
</nav><hr>
</header>
<article id='content'>
<details id='toc'> <summary>Table of content</summary> <ol>
<li><a href='#level_2_subheadings_work'>Level 2 Subheadings work</a></li>
</ol> </details>
<h1>Testing Input</h1>
<p>This is testing input.</p>
<p>And this text should be &lt;escaped&gt;, so that the characters work in &apos;HTML.</p>
<blockquote>
Quotes should work.<br>
- Me<br>
</blockquote>
<pre>
And code should work too.
Right?
&gt; Well quotes within code don&apos;t work.
</pre>
<ul>
<li>Unordered lists</li>
<li>should work properly, hopefully</li>
</ul>
<ul>
<li>And spaces seperate lists</li>
</ul>
<h2 id='level_2_subheadings_work'>Level 2 Subheadings work</h2>
<a href='#level_2_subheadings_work'>Permalink</a><br/><br/>
<h3>Level 3 Subheadings work</h3>
<p>#### But not beyond that.</p>
<p>If you have any suggestions, let me know at <a href='mailto:logicartist123@gmail.com'>logicartist123@gmail.com</a>. Sorry, I still use GMail. :/</p>
</article>
</body>
</html>

View File

@ -0,0 +1,88 @@
<?xml version='1.0' encoding='UTF-8' ?>
<feed xmlns='http://www.w3.org/2005/Atom'>
<title>techn0path</title>
<link rel='self' href='' />
<author>
<name>techn0path</name>
</author>
<updated>2023-05-20T21:12:38+06:00</updated>
<id>urn:uuid:dad753cc-9f1a-55c9-afa5-0f6e50594ed5</id>
<entry>
<title>"renamed feed.txt to feed.tsv. added hooks. made all of the scripts in scripts/ executable" (hooks/post-commit)</title>
<link href='hooks/post-commit' />
<id>urn:uuid:</id>
<updated>2023-05-20T21:12:38+06:00</updated>
<summary>"renamed feed.txt to feed.tsv. added hooks. made all of the scripts in scripts/ executable"</summary>
</entry>
<entry>
<title>"added feed.txt, as well as scripts/new_feed_entry.el. i will soon generate my ATOM feeds using feed.txt instead of src/feed.ass" (feed.txt)</title>
<link href='feed.txt' />
<id>urn:uuid:</id>
<updated>2023-05-18T15:36:40+06:00</updated>
<summary>"added feed.txt, as well as scripts/new_feed_entry.el. i will soon generate my ATOM feeds using feed.txt instead of src/feed.ass"</summary>
</entry>
<entry>
<title>"added feed.txt, as well as scripts/new_feed_entry.el. i will soon generate my ATOM feeds using feed.txt instead of src/feed.ass" (scripts/new_feed_entry.el)</title>
<link href='scripts/new_feed_entry.el' />
<id>urn:uuid:</id>
<updated>2023-05-18T15:36:40+06:00</updated>
<summary>"added feed.txt, as well as scripts/new_feed_entry.el. i will soon generate my ATOM feeds using feed.txt instead of src/feed.ass"</summary>
</entry>
<entry>
<title>"renamed testing/example.ass and testing/example.gmi to testing/input.ass and testing/input.gmi. also added more content to testing/input.gmi for further testing" (testing/input.gmi)</title>
<link href='testing/input.gmi' />
<id>urn:uuid:</id>
<updated>2023-05-17T19:40:57+06:00</updated>
<summary>"renamed testing/example.ass and testing/example.gmi to testing/input.ass and testing/input.gmi. also added more content to testing/input.gmi for further testing"</summary>
</entry>
<entry>
<title>"consolidated navigation bar generation logic into scripts/navbar.awk. also recorded new output testing/output.html as correct." (scripts/navbar.awk)</title>
<link href='scripts/navbar.awk' />
<id>urn:uuid:</id>
<updated>2023-05-17T19:07:04+06:00</updated>
<summary>"consolidated navigation bar generation logic into scripts/navbar.awk. also recorded new output testing/output.html as correct."</summary>
</entry>
<entry>
<title>"added a glossary" (src/glossary.gmi)</title>
<link href='src/glossary.gmi' />
<id>urn:uuid:</id>
<updated>2023-05-14T15:33:50+06:00</updated>
<summary>"added a glossary"</summary>
</entry>
<entry>
<title>"minor changes to scripts/html.awk. i dunno, stuff to do with the navigation bar i guess. also added snapshot testing via git-diff" (testing/example.ass)</title>
<link href='testing/example.ass' />
<id>urn:uuid:</id>
<updated>2023-05-14T15:30:49+06:00</updated>
<summary>"minor changes to scripts/html.awk. i dunno, stuff to do with the navigation bar i guess. also added snapshot testing via git-diff"</summary>
</entry>
<entry>
<title>"minor changes to scripts/html.awk. i dunno, stuff to do with the navigation bar i guess. also added snapshot testing via git-diff" (testing/example.gmi)</title>
<link href='testing/example.gmi' />
<id>urn:uuid:</id>
<updated>2023-05-14T15:30:49+06:00</updated>
<summary>"minor changes to scripts/html.awk. i dunno, stuff to do with the navigation bar i guess. also added snapshot testing via git-diff"</summary>
</entry>
<entry>
<title>"minor changes to scripts/html.awk. i dunno, stuff to do with the navigation bar i guess. also added snapshot testing via git-diff" (testing/output.atom)</title>
<link href='testing/output.atom' />
<id>urn:uuid:</id>
<updated>2023-05-14T15:30:49+06:00</updated>
<summary>"minor changes to scripts/html.awk. i dunno, stuff to do with the navigation bar i guess. also added snapshot testing via git-diff"</summary>
</entry>
<entry>
<title>"minor changes to scripts/html.awk. i dunno, stuff to do with the navigation bar i guess. also added snapshot testing via git-diff" (testing/output.gmi)</title>
<link href='testing/output.gmi' />
<id>urn:uuid:</id>
<updated>2023-05-14T15:30:49+06:00</updated>
<summary>"minor changes to scripts/html.awk. i dunno, stuff to do with the navigation bar i guess. also added snapshot testing via git-diff"</summary>
</entry>
<entry>
<title>"minor changes to scripts/html.awk. i dunno, stuff to do with the navigation bar i guess. also added snapshot testing via git-diff" (testing/output.html)</title>
<link href='testing/output.html' />
<id>urn:uuid:</id>
<updated>2023-05-14T15:30:49+06:00</updated>
<summary>"minor changes to scripts/html.awk. i dunno, stuff to do with the navigation bar i guess. also added snapshot testing via git-diff"</summary>
</entry>
</feed>

View File

@ -1,7 +1,9 @@
Navigation:
=> gmi/index.gmi/ home
=> gmi/sitemap.gmi/ sitemap
=> gmi/feed.atom/ feed
=> src/index.gmi home
=> index.gmi/src/useful useful
=> index.gmi/src/notes notes
=> src/sitemap.gmi sitemap
=> src/feed.atom feed
=> http://git.vern.cc/techn0path/ git
# Testing Input

View File

@ -1,3 +1,6 @@
src/
testing/input.gmi
testing/
<!DOCTYPE html>
<html>
<head>
@ -6,22 +9,18 @@
<meta name='referrer' content='no-referrer' />
<meta name='viewpoint' content='width=device-width,initial-scale=1.0' />
<style>
#content { max-width: 70ch; margin: auto; padding: 10px; }
#navbar { max-width: 70ch; margin: auto; padding: 10px; background: teal; color: white; }
#navbar a { color: white; }
hr { max-width: 70ch; }
.permalink { margin-left: 15px; }
</style>
<link rel='stylesheet' href='src/style.css'/>
</head>
<body>
<header>
<nav id='navbar'>
<a href='html/index.html/'>home</a> |
<a href='html/sitemap.html/'>sitemap</a> |
<a href='html/feed.atom/'>feed</a> |
<a href='src/index.html'>home</a> |
<a href='index.html/src/useful'>useful</a> |
<a href='index.html/src/notes'>notes</a> |
<a href='src/sitemap.html'>sitemap</a> |
<a href='src/feed.atom'>feed</a> |
<a href='http://git.vern.cc/techn0path/'>git</a>
</nav><br>
</nav><hr>
</header>
<article id='content'>
@ -31,10 +30,9 @@ hr { max-width: 70ch; }
<h1>Testing Input</h1>
<p>This is testing input.</p>
<p></p>
<p>And this text should be &lt;escaped&gt;, so that the characters work in &apos;HTML.</p>
<p></p>
<blockquote>
Quotes should work.<br>
- Me<br>
</blockquote>
<pre>
@ -42,17 +40,16 @@ And code should work too.
Right?
&gt; Well quotes within code don&apos;t work.
</pre>
<p></p>
<ul>
<li>Unordered lists</li>
<li>should work properly, hopefully</li>
</ul>
<ul>
<li>And spaces seperate lists</li>
</ul>
<h2 id='level_2_subheadings_work'>Level 2 Subheadings work</h2>
<a href='#level_2_subheadings_work'>Permalink</a><br/><br/>
<p></p>
<h3>Level 3 Subheadings work</h3>
<p></p>
<p>#### But not beyond that.</p>
<p>If you have any suggestions, let me know at <a href='mailto:logicartist123@gmail.com'>logicartist123@gmail.com</a>. Sorry, I still use GMail. :/</p>