Compare commits
No commits in common. "dfb1bf4ee5656ce73f06c719ef719b44fc143de5" and "591e4e85ef18aa510a438be40485c696249c30d1" have entirely different histories.
dfb1bf4ee5
...
591e4e85ef
@ -9,20 +9,3 @@ Spotify
|
|||||||
normie
|
normie
|
||||||
syscall
|
syscall
|
||||||
syscalls
|
syscalls
|
||||||
aspell
|
|
||||||
catppuccin
|
|
||||||
cli
|
|
||||||
config
|
|
||||||
formatter
|
|
||||||
Foss
|
|
||||||
fosscat
|
|
||||||
Gitea
|
|
||||||
Gokarna
|
|
||||||
LSP
|
|
||||||
markdownlint
|
|
||||||
md
|
|
||||||
Pre
|
|
||||||
RSS
|
|
||||||
submodule
|
|
||||||
TILs
|
|
||||||
webp
|
|
||||||
|
@ -50,10 +50,6 @@ if command -v aspell &> /dev/null; then
|
|||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
done <<< "$ERRORS"
|
done <<< "$ERRORS"
|
||||||
echo -e "\nMisspelled words:\n"
|
|
||||||
while IFS= read -r word; do
|
|
||||||
echo "$word"
|
|
||||||
done <<< "$ERRORS"
|
|
||||||
MISSPELLED=1
|
MISSPELLED=1
|
||||||
echo ""
|
echo ""
|
||||||
fi
|
fi
|
||||||
|
109
CLAUDE.md
109
CLAUDE.md
@ -1,109 +0,0 @@
|
|||||||
# CLAUDE.md
|
|
||||||
|
|
||||||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
||||||
|
|
||||||
## Architecture Overview
|
|
||||||
|
|
||||||
This is a Hugo static site for the Foss Cat blog (fosscat.com), using the Gokarna theme. The site
|
|
||||||
includes blog posts, TILs (Today I Learned), and project pages.
|
|
||||||
|
|
||||||
Key architectural components:
|
|
||||||
|
|
||||||
- **Hugo framework**: Static site generator with content in Markdown
|
|
||||||
- **Gokarna theme**: Git submodule theme providing the site's design
|
|
||||||
- **Content structure**: Posts in `content/posts/`, TILs in `content/tils/`, projects in `content/projects/`
|
|
||||||
- **Static assets**: Images and other assets in `static/` directory
|
|
||||||
- **Custom layouts**: Overrides in `layouts/` for TILs and other content types
|
|
||||||
- **Configuration**: Main site config in `config.toml`
|
|
||||||
|
|
||||||
## Development Commands
|
|
||||||
|
|
||||||
### Environment Setup
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Initialize git submodules (theme)
|
|
||||||
git submodule init
|
|
||||||
git submodule update
|
|
||||||
|
|
||||||
# Enter Nix development environment (if using Nix)
|
|
||||||
nix develop
|
|
||||||
```
|
|
||||||
|
|
||||||
### Building and Development
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Start development server with live reload
|
|
||||||
hugo server
|
|
||||||
|
|
||||||
# Build static site for production
|
|
||||||
hugo
|
|
||||||
|
|
||||||
# Build with drafts included
|
|
||||||
hugo --buildDrafts
|
|
||||||
```
|
|
||||||
|
|
||||||
### Linting and Quality Checks
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Lint markdown files
|
|
||||||
markdownlint content/**/*.md
|
|
||||||
|
|
||||||
# Format markdown files
|
|
||||||
prettier --write content/**/*.md
|
|
||||||
|
|
||||||
# Spell check (requires aspell with English dictionary)
|
|
||||||
aspell check --mode=markdown --lang=en --personal=./.aspell.en.pws [filename.md]
|
|
||||||
```
|
|
||||||
|
|
||||||
### Git Hooks
|
|
||||||
|
|
||||||
- Pre-commit hooks automatically installed via `scripts/install_hooks.sh`
|
|
||||||
- Hooks run markdown linting and spell checking on staged `.md` files
|
|
||||||
- Personal dictionary in `.aspell.en.pws` for spell checking
|
|
||||||
|
|
||||||
## Content Management
|
|
||||||
|
|
||||||
### Creating New Content
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Create new blog post
|
|
||||||
hugo new posts/post-title.md
|
|
||||||
|
|
||||||
# Create new TIL
|
|
||||||
hugo new tils/til-title.md
|
|
||||||
|
|
||||||
# Create new project
|
|
||||||
hugo new projects/project-name.md
|
|
||||||
```
|
|
||||||
|
|
||||||
### TILs (Today I Learned)
|
|
||||||
|
|
||||||
- Custom archetype in `archetypes/tils.md`
|
|
||||||
- Custom layouts in `layouts/tils/` for list and single views
|
|
||||||
- Accessible via `/tils/` URL path
|
|
||||||
|
|
||||||
## Site Configuration
|
|
||||||
|
|
||||||
- **Base URL**: <https://fosscat.com/>
|
|
||||||
- **Theme**: Gokarna (git submodule)
|
|
||||||
- **Syntax highlighting**: catppuccin-frappe style
|
|
||||||
- **Content language**: English (en-us)
|
|
||||||
- **Social icons**: Configured for Gitea, Twitch, RSS
|
|
||||||
- **Navigation menu**: Defined in `config.toml`
|
|
||||||
|
|
||||||
## Development Environment
|
|
||||||
|
|
||||||
This repository uses Nix flakes for reproducible development environment including:
|
|
||||||
|
|
||||||
- Hugo static site generator
|
|
||||||
- Marksman (Markdown LSP)
|
|
||||||
- Prettier (code formatter)
|
|
||||||
- markdownlint-cli
|
|
||||||
- aspell with English dictionaries
|
|
||||||
|
|
||||||
## Quality Assurance
|
|
||||||
|
|
||||||
- Markdown linting enforced via `.markdownlint.jsonc` configuration
|
|
||||||
- Spell checking with personal dictionary support
|
|
||||||
- Pre-commit hooks prevent commits with linting/spelling errors
|
|
||||||
- Use `git commit --no-verify` to bypass hooks if needed
|
|
@ -1,27 +0,0 @@
|
|||||||
---
|
|
||||||
date: 2025-10-03T16:19:07-06:00
|
|
||||||
description: ""
|
|
||||||
lastmod: 2025-10-03T16:19:07-06:00
|
|
||||||
showTableOfContents: true
|
|
||||||
type: "tils"
|
|
||||||
title: "TIL: We Created Dogs and Dogs Created Us"
|
|
||||||
image: "images/otto-1.webp"
|
|
||||||
image_alt: "Image of my sweet pup Otto, Irish Setter 7 months"
|
|
||||||
tags: ["life", "dogs", "history"]
|
|
||||||
---
|
|
||||||
|
|
||||||
# Context
|
|
||||||
|
|
||||||
I started listening to [_Sapiens: A Brief History of Human
|
|
||||||
kind_](https://en.wikipedia.org/wiki/Sapiens:_A_Brief_History_of_Humankind) and was struck at the significance of dogs
|
|
||||||
in human history. I [realized](https://fosscat.com/tils/people-are-actually-right/) that dogs really are man's best
|
|
||||||
friend, and only animal that has evolved alongside us since the hunter gatherer period. Its incredible!
|
|
||||||
|
|
||||||
# Reflection
|
|
||||||
|
|
||||||
Otto (pictured above) is my first dog. I feel like having a dog isn't for everybody, but having humans is for every dog.
|
|
||||||
I've found such satisfaction in my relationship with him. We really mutually benefit each other. Dogs are so malleable,
|
|
||||||
they really pick up on so much of what you do and how you want them to behave. There is some learning required from
|
|
||||||
you as the human, and moments to stop and think critically about what it is you want from them. But, once you train
|
|
||||||
something only a handful of times, dogs _learn it_, they _understand_ us. What an incredible relationship us monkeys
|
|
||||||
created with these wolves.
|
|
@ -1,125 +1,6 @@
|
|||||||
{{ define "main" }}
|
{{ define "main" }}
|
||||||
|
|
||||||
<style>
|
{{- partial "post.html" . -}}
|
||||||
.post-image {
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
margin: 1.5rem 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.post-image img {
|
|
||||||
height: auto;
|
|
||||||
border-radius: 8px;
|
|
||||||
border: 1.5px solid var(--light-secondary-color);
|
|
||||||
box-shadow: rgba(0, 0, 0, 0.1) 0px 2px 8px;
|
|
||||||
object-fit: cover;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Mobile - small images fit better */
|
|
||||||
@media (max-width: 480px) {
|
|
||||||
.post-image img {
|
|
||||||
width: 100%;
|
|
||||||
max-width: 300px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Tablet - medium size */
|
|
||||||
@media (min-width: 481px) and (max-width: 768px) {
|
|
||||||
.post-image img {
|
|
||||||
width: 80%;
|
|
||||||
max-width: 400px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Desktop - larger but not overwhelming */
|
|
||||||
@media (min-width: 769px) {
|
|
||||||
.post-image img {
|
|
||||||
width: 60%;
|
|
||||||
max-width: 500px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
html[data-theme="dark"] .post-image img {
|
|
||||||
border-color: var(--dark-secondary-color);
|
|
||||||
box-shadow: rgba(0, 0, 0, 0.3) 0px 2px 12px;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<div class="post container">
|
|
||||||
<div class="post-header-section">
|
|
||||||
<h1>{{ .Title | markdownify }}</h1>
|
|
||||||
|
|
||||||
{{/* Determine whether to display the date & description based on tags */}}
|
|
||||||
|
|
||||||
{{ $displayDate := true }}
|
|
||||||
{{ $displayDescription := true }}
|
|
||||||
{{ $postTags := or .Params.Tags slice }}
|
|
||||||
{{ $hiddenTags := or .Site.Params.Hidden.Tags slice }}
|
|
||||||
{{ $tagsHidePostDate := or .Site.Params.Hidden.TagsPostDate slice }}
|
|
||||||
{{ $tagsHidePostDescription := or .Site.Params.Hidden.TagsPostDescription slice }}
|
|
||||||
|
|
||||||
{{ if gt ($tagsHidePostDate | intersect $postTags | len) 0 }}
|
|
||||||
{{ $displayDate = false }}
|
|
||||||
{{ end }}
|
|
||||||
|
|
||||||
{{ if gt ($tagsHidePostDescription | intersect $postTags | len) 0 }}
|
|
||||||
{{ $displayDescription = false }}
|
|
||||||
{{ end }}
|
|
||||||
|
|
||||||
{{ if $displayDescription }}
|
|
||||||
<small role="doc-subtitle">{{ .Description }}</small>
|
|
||||||
{{ end }}
|
|
||||||
|
|
||||||
{{ if $displayDate }}
|
|
||||||
<p class="post-date">{{ dateFormat (or .Site.Params.dateFormat "January 2, 2006") .Date}}
|
|
||||||
{{ if lt .Date .Lastmod }} | Updated {{ dateFormat (or .Site.Params.dateFormat "January 2, 2006") .Lastmod }}{{ end }}
|
|
||||||
</p>
|
|
||||||
{{ end }}
|
|
||||||
|
|
||||||
<ul class="post-tags">
|
|
||||||
{{ range $tag := $postTags }}
|
|
||||||
{{ if not (in $hiddenTags $tag) }}
|
|
||||||
<li class="post-tag"><a href="{{ "tags/" | absLangURL }}{{ . | urlize }}">{{ . }}</a></li>
|
|
||||||
{{ end }}
|
|
||||||
{{ end }}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{{/* Display image if present in front matter */}}
|
|
||||||
{{ if .Params.image }}
|
|
||||||
<div class="post-image">
|
|
||||||
<img src="{{ .Params.image | absURL }}" alt="{{ .Params.image_alt | default .Title }}">
|
|
||||||
</div>
|
|
||||||
{{ end }}
|
|
||||||
|
|
||||||
<div class="post-content">
|
|
||||||
{{ .Content }}
|
|
||||||
{{ if .Site.Config.Services.Disqus.Shortname }}
|
|
||||||
<div class="post-comments">
|
|
||||||
{{ template "_internal/disqus.html" . }}
|
|
||||||
</div>
|
|
||||||
{{ end }}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="prev-next">
|
|
||||||
{{ if eq .Site.Params.TogglePreviousAndNextButtons "true" }}
|
|
||||||
{{ if or .PrevInSection .NextInSection }}
|
|
||||||
{{ partial "prev-next.html" . }}
|
|
||||||
{{ end }}
|
|
||||||
{{ end }}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Back to top button -->
|
|
||||||
{{ if .Site.Params.ShowBackToTopButton }}
|
|
||||||
{{ partial "back-to-top.html" . }}
|
|
||||||
{{ end }}
|
|
||||||
{{ if .Site.Params.CustomCommentHTML }}
|
|
||||||
<div id="comments">
|
|
||||||
{{ .Site.Params.CustomCommentHTML | safeHTML }}
|
|
||||||
</div>
|
|
||||||
{{ end }}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{{- partial "toc.html" . -}}
|
{{- partial "toc.html" . -}}
|
||||||
|
|
||||||
{{ end }}
|
{{ end }}
|
Binary file not shown.
Before Width: | Height: | Size: 1.1 MiB |
Binary file not shown.
Before Width: | Height: | Size: 126 KiB |
Loading…
Reference in New Issue
Block a user