How does one begin to blog?
An exploration of the journey to begin a blog
I have a tendency to write overengineered, needlessly-clever code and get overwhelmed by decisions that don't matter in the process. It takes conscious thought to keep things simple and stay focused. [...] Still, I think a significant fraction of programmers have the same tendencies as I do. Overly-clever, needlessly-complex code is everywhere.
My personal website journey
This is my 3rd
attempt at making a blog or perhaps finishing a blogging website that I felt at peace enough (peace in terms of the design and the number of personally created complexities) to write my thoughts and ideas on.
A brief timelime
The one that was meant to keep my motion design career alive, well it didn't get to exist so that's that
That one website on Fly.io with the repo named prog (written in golang)
I guess this one, built with gleam, markdoc and cloudflare workers
I have tried several times, but something always comes up, it just never felt enough or right or whatever.
This time around I had ammased inspiration, many of them infact and I was feeling more confident. With all the exploration and research (looking at other people's blogs, and writing some code), I was ready to build my own over-engineered™ blog/personal website.
How I stacked this blog
To understand the stack we have to explore the interests I have had in exploring programming languages, this way we can safetly identify the languages I wanted to explore to build this.
Earlier in the year, I had come across
Zig
and also watched
theprimegan's
video on the language and why he was moving away from
rust
, which by the way I have very much an interest in learning for embedded systems along with
embassy
, I have also recently started considering
swift
for the purpose of learning embedded systems; which I have been exploring for
Swift UI
and MacOS/iOS development as I wanted to do some consulting work on an iOS App project.I am planning to try OCaml>https://blog.janestreet.com/introducing-oxcaml/ someday, maybe Perl>https://www.perl.org/ soon as well
So far we have mentioned
Zig
,
rust
,
swift
; If you remember from the timeline we made earlier, I have worked on a blog before (sweet dear
prog
) which was in
golang
; a programming language I also like and enjoy. You might start to begin to see a theme here, well... I like programming languages, and there are many more I have tried and consider trying in the future.Random aside, I believe Go has the most beautiful TUI packages, courtesy of charmbracelet>https://github.com/charmbracelet
Something that was important for was that I didn't want to do react
or JS
frameworks, I had done some JS
framework projects for some client and I have just had enough. I wanted to have fun, and do stuff in my own overcomplicated™ way.
Gleam
So I chose gleam
, why? I just did. There is no particular reason, well maybe that's not true. I had a few:
- It reminded me of Rust, with
case
, as well asResult
, I mean it is written withrust
. - I had fun writing it, so much fun.
- I wanted to learn more about its features
decoders
, as well as how to useffi
Now that I has a stack...Wait, there was the whole thing with using
markdown
well
markdoc
as well.I had wanted to have a sort of CMS like Keystatic written in gleam for my blog but got uninterested and I have come to like my current approach and I know its gonna get crazier and cooler.
Markdoc
My first experience with it was in Astro/Keystatic as part of a client project, that's where I fell in love, with both Markdoc and Keystatic; which in some ways kind of inspired the starting point of this project
- I liked how it allowed me to define components
- It offered something interesting for me to engineer into my blog as well as continue in my overengineering™ crusade.
This is where the ffi
learning and stuff came in, it was fun! and I learnt a lot.
// ffi.gleam
/// Markdoc AST type for parsing markdown documents
pub type MarkdocAst
/// Parse markdown content into Markdoc AST
@external(javascript, "./ffi/markdoc_ffi.js", "parse")
pub fn parse(content: String) -> MarkdocAst
/// Transform Markdoc AST with custom tags
@external(javascript, "./ffi/markdoc_ffi.js", "transform")
pub fn transform(ast: MarkdocAst, tags: String, nodes_config: String) -> String
For a future project I want to do some work with wasm
+ rust/zig/swift
+ gleam
.
So now we have:
- A language,
gleam
- My markup language for writing posts,
markdoc
- Syntax highlighter,
shiki
What next?
Well I built it, and that's why we are here reading it. I will make another post to go in depth.I will use this as a way to keep the momentum of writing and documenting going.