My website is one binary
j3s.sh
j3s.sh
For example, one of your reasons for rejecting Hugo is that you can’t read all the code including dependencies and future updates yourself. However, you have no problems with using Go, which has a pretty large standard library and a lot of code for its implementation. Have you read through all of it? Sure, choosing Hugo is strictly worse by this metric (because it’s written in Go), but is even the goal of reading all source code and keeping up with changes tractable if Go is a dependency?
Another one is your rejection of GitHub pages for uptime and future maintenance. There are many reasons you might not want to use it, but I don’t think those in particular are compelling ones. If you just use it to host plain or even templated HTML, then the migration cost if and when they fail is pretty low right? Just switch to one of the other HTTPS hosts or do the self hosting thing then?
The maintenance tradeoff for not using GitHub pages is quite high too. I see your website is using HTTPS. In my opinion managing certificates is more maintenance than using GitHub pages. And then there are security updates.
Dynamically generating websites has a security tradeoff too. Are you keeping your toolchain up to date? Go has had vulnerabilities in the past.
BTW, I’m not not criticising your approach, just some of the justification for it. It sounds pretty neat to have a single binary website, but I’m not too sure about all the other justification.
I love seeing solar powered websites, retro computers hosting modern sites, etc. Having a single binary is a neat idea too, even if it's a bit pointless.
It almost reminds me of the woman that came up with binaries that could run on different OS's unchanged. Definitely neat stuff!
Golang is "only" 2 million lines of code, and it's quite easy to go look at the implementation of something, as the docs link directly to the code. It wouldn't be impossible to read through it, particularly if you skipped architectures other than x86 and parts of the standard library you didn't use.
What I've found in the go ecosystem as of the past few years is just this enormous graveyard of projects that didn't really seem to get the zeitgeist of keeping as much as close to the standard lib as possible, and included all the batteries. Now you open those old projects written in such frameworks and the batteries are all leaking all over the place and you got some of the juice on your hand, and the github issues page is just a bunch of people asking if the project is still alive yet. You really don't see that with the ones that kept it as simple as, and relying on as little as possible. My old stuff I wrote like that is still chugging along.
My only dependencies to track in this case are go, my webserver frontend (openbsd httpd) and the OS updates. Wow!
The applications I've written to this end aren't the kind of thing you can host on github pages, they're really dynamic and do all this image processing or handle tons of money a day. Turns out people throw more money around at stuff like that and this alone justifies the means.
Hell I know people who even do this in C or C++. That's right, web applications, usually in even more constrained environments like embedded or for game consoles. They get paid more than me, too.
Generating static files has a smaller attack vector than running an executable on a server.
Keeping a service up and running over a long period of time is much more work than using generic static site hosting.
HTML that works today will likely still work in 10 years time, but a binary you compile today most likely won't, or at least, you'll have wanted to have changed up your server.
The biggest thing to have to deal with really was the mod system. I think that fucked a few dependency-heavy projects out there which you're going to have a hard time compiling today, yet which hilariously still get recommended as if the github issues page isn't full of confused people.
That said I love static site generation when I don't need anything special, but Hugo definitely has that bloated rotten whale smell to it for me after reading other's experiences with it. SSG is like some shit I've done with shell scripts even. It's just at its most basic, slapping html together, with maybe some templating.
With GitHub I didn't catch that the reasons revolving around SLA/uptime percentages rather non-breaking change intervals and probability the service will exist usable as is in 10 years. Migrating to another host doesn't necessarily fix this unless there is a particular one to mention that will guarantee existence of the exact method of operation for the next decade and have a solid guarantee for the service to be offered as is for that long. The choices of Golang's stdlib and Linux provide reasonably solid choices in this regard as neither is going to change in a way that breaks deploying/running the site unless they _absolutely_ need to and both have about as big of support backing as one could reasonably expect to find so are unlikely to pull the rug out from the site on the premise of moving on to something newer and shinier like business offerings are often changed/deprecated for.
Certificates I definitely see a closer balance/argument on. On one hand the Github Pages way is really easy, they do it for you. On the other hand they are trying to avoid services that can disappear from them and are probably using ACME which seems to be pointed at Let's Encrypt right now. If for some reason Let's Encrypt did disappear though, which I'll be honest I'm on the side of that being less likely than some breaking change in the way an automated Github Pages hosted static site would function but I can see that being debated either way, at least it's not particularly hard to change the ACME provider for such a case. There may also be some personal sway on whether it's better to manage your own security certificates or not but I also can see that falling to either side depending on the person.
Regardless of choice the toolchain is going to have to be kept up to date to stay secure. There isn't any option to choose which is indefinitely secure and without security bugs.
I wrote a little blog post about my experience with Hugo - https://madebynathan.com/posts/2021-12-05-how-docker-saved-m...
I struggled with this issue when I realized that it was too much work to update my blog to use the latest version of Hugo. I wasn't able to run the old hugo binary on my new version of MacOS (segfault). And I couldn't even compile the old code from source, because I couldn't get older versions of Go to work. Some of the old Go dependencies had even been renamed or deleted.
Eventually I realized that I could continue using my old version of Hugo forever (0.21) if I run it in a Linux Docker container. The output is still static HTML and CSS, and all the static files are cached and served with a CDN (CloudFlare), so I'm not particularly worried about security updates.
I'm not sure how long this will last though. It would be very nice if new versions of Docker would always provide backwards-compatibility for older Docker images, even in 20-30 years.
The entire site was a single C source file littered with embedded HTML, a few separate HTML files for things like an FAQ, and a directory of compressed user page data in some proprietary format (including images) that was decompressed on-the-fly. Served over Apache with some CGI magic.
https://web.archive.org/web/20000302105807/http://www.expage...
This is pretty neat. I believe that was done to save on server storage, and before client side gunzip was a thing?
https://git.zx2c4.com/cgit/ cgit is the git repo frontend for projects like wireguard
https://undleadly.org has its source code in the sidebar for you to check out in C as well
https://learnbchs.org/ key is OpenBSD or other OS's (less easy to use) sandboxing if you're going to do this remotely safely - check this for more https://learnbchs.org/pledge.html
[0] https://fossil-scm.org/home/file?name=tools/translate.c&ci=t...
[1] https://fossil-scm.org/home/file?name=src/chat.c&ci=trunk
I know that it is a very slender hope but it would be cool to see the source of this.
Also, props for a brutally-minimalist design that’s actually usable on a phone. Most of the sites I encounter like this feel like “this is a motherfucking website”[1] in principle twisted (intentionally or not) to be completely the opposite in spirit.
In portrait, the section headers / titles are aligned right instead of center, which is odd, but the page title itself breaks onto two lines with the second aligned left.
There is also something odd about line breaks in general- I would swear that some lines are breaking early, as if the browser can't figure out that the first word of the next line absolutely looks like it could have fit. I actually switched to horizontal orientation just to see if the weird breaks weren't some odd artistic choice.
I've got to admit, though, that other than those complaints, I really do like the way there is content- just content.
I've tried hand rolling my own blog a number of times, but I always end up in the same position- I remember that I don't actually have anything to say that merits a standalone blog post that I actually would want anyone else to read.
It's interesting that you generate the site dynamically, but then drop everything into a pre tag which makes it very anti-responsive. Like others have mentioned, the word-wrapping is choppy on smaller screens
Your site, your data, your source control and your project (wiki, issues, forum, chat) in a single binary and a single file. Can it get any better!
I had a look since I was also curious and I am none the wiser as I don't see any embedding going on, but maybe I'm missing it.
What I'm not seeing is what the easy dynamic hosting options are, other than a little VPS. Things like FaaS look easy once you've learned their lengthy setup and configuration process, and there's always the risk of a cloud billing nightmare.
Basically I think there should be a cloud version of Visual Basic.
The entire index loads every time, and you can download it. It might be the only truly private search engine because your request is handled in the browser.
But if it works for them, who am I to argue. I do have a website which uses a static html generator that I have not maintained in years, mostly because I don't enjoy having to tangle with the more Operations aspects of it (which are very simple! but still not enjoyable).
I think the lesson that I got from this writeup is: try to optimize for enjoyment on your own personal stuff. Otherwise it will get deprioritized the moment you struggle with time.
> I decided that i would host a website on a machine that i controlled
If you host yourself then you have to maintain that server, but you're in full control. If you pay someone else todo so, you give up full control, but you don't have to maintain the server. It's a tradeoff.
Not at all, every sheet of paper is like that.
For illiterates however it's true what you say.
The open challenge is: how to unclutter writing and educate literates!
It's not as bad as say, writing HTML in JavaScript (JSX).
However I'd opt for the self-made static site generator and even more so annual partitions (for styling etc.), so that things can safely be heterogenous over time.
been using it and have enjoyed it so far.
It seems like an exceptionally perfect thing to just for the sheer joy of creating without regards to anything else.
Golang makes this possible with the embedding feature.
This reminded me of those good times.
It's not like the author is rolling their own encryption library.