7 ms·
My website is one binary (2022)
- Quitschquat 1y agoI do this with CLOG, save-lisp-and-die
- liampulles 1y agoI wrote a Go program to generate my blog (which is just a static site hosted on Github pages). I made it so that I could write blog posts with a "widget builder" DSL, which is a good compromise for me between customizabiity for individual pages vs being able to write 95% of everything with markdown. Example of DSL: https://github.com/liampulles/liampulles.github.io/blob/master/htmlgen/site/blog_jira-tickets.go https://github.com/liampulles/liampulles.github.io/blob/mast... Blog post with more info, and my site: https://liampulles.com/moving-blog.html https://liampulles.com/moving-blog.html
- lelanthran 1y agoMy blog[1] is also generated from nothing but markdown, but I leaned on pandoc heavily for this: https://gist.github.com/lelanthran/2634fc2508c93a437ba5ca511fafa99d https://gist.github.com/lelanthran/2634fc2508c93a437ba5ca511... --------------------- [1] www.lelanthran.com
- liampulles 1y agoInteresting approach, I like it!
- yboris 1y agoAwesome! I'm curious if you considered Hugo and if yes, why you preferred to build your own Go website generator :)
- liampulles 1y agoI considered Hugo, but I wanted to do my own thing mainly because I'm very fussy about the raw HTML in my site, i.e. I want to use semantic HTML5 tags as much as possible. I haven't used Hugo though so I could not say how good or bad it is.
- cookiengineer 1y agoJust FYI: The meta viewport tag disallows zooming/using your website. I had to switch to Desktop mode on my Android phone to be able to read half the content that was overflowing and not visible.
- liampulles 1y agoThanks for the feedback, I will look into this.
- paranoidxprod 1y agoFrom one of these user's most recent posts here https://j3s.sh/thought/blogs-rot-wikis-wait.html https://j3s.sh/thought/blogs-rot-wikis-wait.html: p.s. i'm working on a new wiki to replace my website with - something new, from the ground up. git.j3s.sh/abyss - stay tuned I wonder if they'll still be using a similar approach for the new site.
- j3s 1y agoit's still in the works, but here's the plan: - written in golang, one binary - custom markup lang - very short urls (https://j3s.sh/$pagename https://j3s.sh/$pagename) - pages are saved as text-files-written-to-disk with git autocommits (similar to mycorrhiza[0]) - "blocks" that process parts of pages differently - similar to edna[1] - pages editable via web interface (rudimentary phone support) - autolinks between pages - simple picture upload interface (^V with a pic in clipboard will upload the pic + paste appropriate markup) - single user system, intended as a personal knowledge base this system will replace https://j3s.sh https://j3s.sh and https://abyss.j3s.sh https://abyss.j3s.sh eventually -- all old links will redirect to the new wiki. it's been quite an undertaking, but i think the end result will be worth it :3 [0]: https://github.com/bouncepaw/mycorrhiza https://github.com/bouncepaw/mycorrhiza [1]: https://edna.arslexis.io https://edna.arslexis.io
- lelanthran 1y agoSee my comment upthread; I'm very curious why PHP would not have worked for you.
- j3s 1y agobecause i don't enjoy working with PHP
- lelanthran 1y agoI'm not seeing the point here, TBH. What use-case does this author's single-binary satisfy? 1. You just want to serve static files from your blog? Install a webserver and knock yourself out in your editor, creating html and css (and maybe js) files. 2. You want to serve static files, with some dynamic crap stuffed inside here and there like the examples given in the article? Install the mod_php or equivalent for your webserver, and go mad with the editor. 3. You want fully generated content? Install one of the many backend frameworks in any language you want to use, and then go mad in your IDE. What use-case does "one binary I wrote in Go" satisfy that isn't covered above? From everything I gleaned from the article, the PHP solution is even easier, while still technically being "one single binary". EDIT: as an example of over-engineering, here is the authors code for a specific use-case: func ipHandler(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "text/plain") fmt.Fprintf(w, r.Header.Get("X-Forwarded-For")+"\n") } ... http.HandleFunc("/ip", ipHandler) And here is the equivalent in PHP: header('Content-Type: text/plain'); echo $_SERVER['REMOTE_ADDR'];
- malwrar 1y agoEasier to deploy? No need for packaging everything or installing runtime stuff, just copy one file on your server and run it.
- indigodaddy 1y agoRedbean is another good candidate for accomplishing this.
- _mlbt 1y agoI think a lot of younger developers don't realize that there was a time where you simply FTPed your files up to a directory on a web server. If you wanted to live dangerously, you could even edit them live on the server through a shell account.
- hkon 1y agosigh
- 1y ago
- deleted 1y ago[deleted]
- throwmeaway222 1y agoSo I guess one docker image is also one binary...
- j3s 1y agoi have some thoughts about this >:) https://abyss.j3s.sh/hypha/docker https://abyss.j3s.sh/hypha/docker
- OptionOfT 1y agoA Docker container can launch a single process or multiple processes [0] (please don't do this, use docker as the separation & health checker). In the former case we have a single executable. We can now choose to statically compile all dependencies with musl. We can also statically compile all the assets (HTML, images) into the binary. Then you take your Docker image and build a FROM scratch image, copy in your binary and you've got a super-lightweight container. [0] https://www.bugsink.com/blog/multi-process-docker-images/ https://www.bugsink.com/blog/multi-process-docker-images/
- xandrius 1y agoAnytime I see someone writing without any capital letters, I stop and close the page. I understood that they care more about themselves (the writer) than the reader, so I let them write without my reading, as they signaled they don't care about it. Respectable.
- imperialdrive 1y agoit is likely an informal, stylistic choice, nbd honestly
- quesera 1y agoHow do you feel about people who speak with accents?
- lelanthran 1y ago> How do you feel about people who speak with accents? You think people with accents do it on purpose? How do you feel about people who talk to you in a fake accent for no reason whatsoever? This looks like the same thing.
- quesera 1y agoLooks like it, but it often is not. Affectation is one thing, but the behaviour you describe is as much cultural and contextual as it is affectation. Just like an accent. Very very much not worth thinking about too hard, except for its anthropological implications. IMO, of course.
- fragmede 1y agogood to know. so now you've closed this page now and gotten back to work? i wonder where else you read things on the internet
- simpaticoder 1y agoI believe that similar concerns/aesthetics drove the development of https://redbean.dev/ https://redbean.dev/
- indigodaddy 1y agoThis is actually a great post. Love the idea of single binary and low dependencies to keep things as lean as possible.
- usixk 1y agoPleasantly surprised how jovial this post was. Thanks!
- sha16 1y agoI was using Python's Pelican static site generator for some time until I wanted to further customize the template fragments of a theme. Started running into issues and even helped fix a bug with the build command. Eventually I couldn't be bothered and wrote my own static site, except with Nextjs instead of plain HTML. Didn't take long and I don't have to mess around with awkward jinja templates anymore.
- vunderba 1y agoSimilarly I started out with Pelican but eventually needed more fine control over the site using MDX/etc. so I migrated my site over to Astro and have been pretty happy with it.
- daitangio 1y agoYes hugo+template+isso (my Giorgi.com setup) has some hidden dependencies but you can get a fancy site in very little time. A dynamic web site is exciting to design, but require a lot of effort… I suggest to use Python Django: it has a tutorial for a blog!
- exiguus 1y agoI like the idea, but I don't like that the result is not accessible. For example, there are no headlines, lists, or paragraphs—just a huge pre, or if you remove the 'thoughtbody' class from the p element, you can see how well a screen reader can read it. I also have extensive experience with static sites, starting from using just Apache Directory Listing (Footer, Header, SSI), to writing my own in Perl, Ruby on Rails, Go, and TypeScript, using frameworks like Astro, Next, or Zola. Apart from the Apache setup and some Perl scripts, all of them had one thing in common: I used Markdown because it is easy to transform into HTML, which means it is accessible.
- minroot 1y agoIt's true, static sites are low energy.
- Twey 1y agoRather than a compiled blob generated from a language propped up by Google (a company famed for killing beloved projects) that is compiled and therefore unmodifiable and unrecoverable if the source or toolchain is lost, it feels like these goals would have been better served by writing it as some POSIX-compatible sh scripts, or even a (pre-packaged/no-build) JavaScript bundle — we've been trying to kill that thing for decades, and it's still kicking!
- ribcage 1y ago[dead]
- dang 1y agoRelated: My website is one binary - https://news.ycombinator.com/item?id=44345752 https://news.ycombinator.com/item?id=44345752 - June 2025 (1 comment) My website is one binary (2022) - https://news.ycombinator.com/item?id=37964917 https://news.ycombinator.com/item?id=37964917 - Oct 2023 (168 comments) My website is one binary - https://news.ycombinator.com/item?id=30937515 https://news.ycombinator.com/item?id=30937515 - April 2022 (67 comments)