[HN Gopher] Bear Blog - A privacy-first, fast blogging platform ___________________________________________________________________ Bear Blog - A privacy-first, fast blogging platform Author : janandonly Score : 209 points Date : 2022-07-17 14:57 UTC (8 hours ago) (HTM) web link (bearblog.dev) (TXT) w3m dump (bearblog.dev) | Geee wrote: | This would be excellent with LNURL-auth for better privacy and | UX.[0] | | [0] https://lightninglogin.live | janandonly wrote: | Another honorable mention goes to: https://telegra.ph | bayindirh wrote: | https://smol.pub and https://mataroa.blog are also nice | examples. I host my blog in Mataroa, and love the experience so | far. | Groxx wrote: | On https://mataroa.blog/ Pricing - | Premium -- all features - $9/year | | A blog hosting price that's actually reasonable! The trend of | everything being $5-10/month is ridiculous, this is nice to | see. | dunefox wrote: | I need images and code blocks + formulas. Is that doable | with mataroa? I'd be happy to pay 9EUR for that. | bayindirh wrote: | Mataroa supports markdown, with images (and you can store | your images on Mataroa servers), and syntax highlighted | code blocks (which is something they don't openly say). I | normally don't use formulae in my blog posts, so I don't | know that part. | | In every case, Mataroa has a free tier, so you can always | try before you buy. If you want to see, my blog is at | https://blog.bayindirh.io. | bayindirh wrote: | Yes, Mataroa is a great service, and https://smol.pub is | $5, one time, for now. | qudat wrote: | For a terminal based workflow, https://prose.sh is pretty | great. Authentication happens via SSH so all you need is a key- | pair to register. Uploading posts is as simple as `scp hello- | world.md prose.sh:/`. This also means that you can bring your | own editor and you control the source files. | | Coming from hugo, prose.sh has been much easier to publish | content since I pretty much live in the terminal anyway. | AnonC wrote: | I recall trying this a few years ago using my Telegram account, | but I could never figure out how to edit a published post or | delete it. There were also some other drawbacks that I don't | recall now. | __mp wrote: | Hugo in combination with the Congo Theme (see | https://github.com/jpanther/congo) has scratched this itch for | me. The theme is well thought out and has all the features I | need. | | There's the usual youtube and vimeo integration, but also | | - integration with Flowcharts through mermaid | https://jpanther.github.io/congo/samples/diagrams-flowcharts... | | - charts through Chart.js | https://jpanther.github.io/congo/samples/charts/ | | - and even LaTeX support: | https://jpanther.github.io/congo/samples/mathematical-notati... | kirillbobyrev wrote: | Thanks a lot for posting it! I wanted to blog for quite a while | but am too lazy to finish some basic blog setup with my "own | theme". Bear looked great and I was upset none of the Hugo | themes I looked at were exactly what I wanted. This one does! | sureglymop wrote: | All of that's great... but wouldn't it be much better to render | the latex, mermaid etc server side? I'm a bit baffled that | apparently Hugo can't do that. | __mp wrote: | Sure, there's certainly interest in doing this. See this post | for more details: | https://misha.brukman.net/blog/2022/04/writing-math-with- | hug... (I'm not the author of this post) | | Client-side rendering works well enough for me, and has been | for years (as a visitor). I don't see a benefit to integrate | a custom Hugo patch to get server-side rendering for my | simple personal blog. | tyingq wrote: | >no stylesheets | | Well, there is a fair amount of css wrapped in <style> tags. Not | sure I understand the upside of not putting it in a separate | file. | | Though the look is reasonably pleasant. | | Edit: The example blog also loads js, despite the "no javascript" | claim. Like: _< script src="https://cdn.usefathom.com/script.js" | data-site="WKWMFTPV" defer></script>_. Perhaps that's not a | default thing, but it seems odd to link to an example blog that | doesn't match the sales pitch. | KronisLV wrote: | > Edit: The example blog also loads js, despite the "no | javascript" claim. Like: <script | src="https://cdn.usefathom.com/script.js" data-site="WKWMFTPV" | defer></script>. Perhaps that's not a default thing, but it | seems odd to link to an example blog that doesn't match the | sales pitch. | | Seems like this is loading Fathom analytics: | https://usefathom.com/ | | Probably safe to turn off, as uBlock Origins and other ad | blocking solutions would, depending on your settings. So I | guess in a way the site itself works just fine without JS | enabled and doesn't _require_ it, but the authors have chosen | to add analytics to see who uses their site, then. | twohaibei wrote: | Depending on the styles inside of that style tag it can be | faster because of lack of separate http request to fetch it. | kabirgoel wrote: | Yep, although on HTTP/2 this shouldn't be an issue anyway. | Kaze404 wrote: | Inline CSS has the benefit of not making a second HTTP request, | as well as (if I recall correctly) rendering the page styled | from the get go, as opposed to once unstyled and once again | when the CSS has finished downloading. | numlock86 wrote: | Separate CSS has the advantage that it can get cached, so you | ideally only transfer it once. | wbobeirne wrote: | HTML can be cached too, with the right headers. | mccorrinall wrote: | Most blogs consist of more than a single html page and | usually reuse the same styles. | josephg wrote: | True, but most visitors to your blog won't read more than | one page. | stefs wrote: | true, but for a blog, the html would be cached per page, | which means that if you look at n pages the same css is | loaded n times too. | | depending on _how_ you cache it, there might be a cache | invalidation round trip for your css (Q: has this | changed? A: no), which might or might not transfer more | data than your embedded css anyway. | fsociety wrote: | How does that make the website better though? | Kaze404 wrote: | I don't know. You'll have to ask the people who made it. | treve wrote: | The issue you're describing only happens when JavaScriptis | used to render the CSS. | julianlam wrote: | The fact that this needed to be said is concerning. | | There's no FOUC if you add a stylesheet to <head>, and it | concerns me that people seeing that flash have come to | expect it as a fault of CSS, when it's really these | frameworks making a decision to load the stylesheet via | javascript. | agraddy wrote: | I completely agree. I'm promoting a concept called TACE | to get back to the principles of the web that were being | promoted between 2000-2010. I've realized that a lot of | web developers these days don't understand the basic | principles of HTML, CSS, and JS because they initially | learned web development using a Javascript framework. | | https://www.agraddy.com/introducing-tace | Kaze404 wrote: | I feel like this is an overblown reaction to a single | person getting something wrong in the internet? It's not | really concerning that not everyone knows everything with | a 100% degree of certainty. | josephcsible wrote: | Why is seeing plain text before the stylesheet is loaded | considered to be worse than seeing nothing at all before | the stylesheet is loaded? | egypturnash wrote: | reflow while you're trying to read something sucks | tyingq wrote: | Perhaps, though I thought the net benefit of newer http | protocols was to make that second request very lightweight. | Then it's also cached if they visit a second page on the | blog. | datalopers wrote: | It's text and is transmitted gzipped. This is as close to a | non-issue as I can think of. | tyingq wrote: | Normally, yes, but the sales pitch is "no stylesheets" + | "fast", etc. So it becomes a topic of interest. | butz wrote: | One might argue, that inline CSS cannot be cached by browser | and are loaded with each HTTP document, thus increasing total | download size. And using HTTP/2 making additional requests | ain't such a big problem anymore. | | All in all I think developers have considered all options and | chose the best solution for their particular use case. | quest88 wrote: | The browser can cache the http page too! | gbear605 wrote: | True, but they can't cache a portion of the page that | happens to be shared across every page on the website. If | I go to a dozen different pages on the site, any in-http- | page styles will be loaded a dozen times, while a | separate style sheet will only be loaded once. | onlyrealcuzzo wrote: | True but blogs are not Facebook. People generally don't | visit thousands of pages. 1 visit and bounce is very | common for blogs. | josephg wrote: | Visiting 1 article then bouncing is the most common | pattern for blogs by a long way. | | Also the amount of time taken to download a CSS file is | usually much less than the round trip time for requesting | the file. Especially in the p90/p99 end of the latency | distribution. Here in Australia, I can download a 10kb | css file in less than 1ms. But simply requesting that CSS | file from America will take 200ms. | | For a blog, inlining the css is absolutely the way to go. | Especially if the css is small (which it should be!). | chrismorgan wrote: | If the stylesheet is less than a few kilobytes, it will | generally be faster to inline it even for subsequent page | views with an immutable cache header. Caches and separation | into external files still aren't free. | | One other thing that is almost always overlooked is that | you don't tend to use all styles on a given page, and you | could strip out the unused styles. For example, the front | page linked here has over 4KB of stylesheet, unminified and | with unused styles; minified, it's 3KB; with unused styles | removed (including the wonky body:hover), it's about 662 | bytes. Something in the vicinity of 1KB is for specific | pages, and 1KB for editing (form fields and such). If you | try actively minimising the front page (removing | unnecessary whitespace and attribute quotation marks, | minifying and paring the stylesheet, and removing a few | pointless elements), the whole thing ends up under 3.4KiB | (down from 7.8KiB). | | (Mind you, most browsers can do some degree of intra- | session sharing of an in-memory representation of a | stylesheet, for performance and memory usage reasons, and | doing this _will_ thwart that. But that's only likely to | make things faster over inlining if you've got much heavier | styles, dozens or hundreds of kilobytes, the sort that you | wouldn't be so likely to inline anyway.) | | As for the "making additional requests thing": you still | have to remember _latency_ , because you're adding another | whole round trip to the waterfall. In the case of | bearblog.dev which is hosted somewhere on the other side of | the world from me (I'm in Australia), that will add an | absolute minimum of over 260ms, more commonly half a second | or more. Inlining of small resources like this when you | have a very short waterfall already significantly improves | load performance. The HTTP/2 and HTTP/3 improvements are | about requesting more than just a couple of resources: in a | case like this if you had one HTML and one CSS resource | from the same host, HTTP/2 would not improve anything over | HTTP/1.1. | Kaze404 wrote: | Great points. I completely forgot about HTTP/2, thank you. | [deleted] | muglug wrote: | The easiest part of a blog is figuring out a hosting platform (or | building it yourself). I have spent many (fruitful) hours down | rabbit holes. | | The hardest part of a blog is actually filling it with compelling | content -- research, writing and editing. | amelius wrote: | This is like how many PhD students spend 80% of their time | learning LaTeX and only 20% on thinking what to write. | indymike wrote: | No stylesheets is untrue. There is a <style> tag in the head that | contains a stylesheet. | akmittal wrote: | I think they mean no user customized stylesheets. | tyingq wrote: | It seems to have user customized stylesheets: | | https://github.com/HermanMartinus/bearblog/issues/152 | numlock86 wrote: | > no stylesheets | | > uses stylesheets anyway | | I don't get this part. | Barrera wrote: | I like the idea, but to echo another comment, the hardest part of | running a blog is not selecting the blogging engine or how to | host it. The hardest part is keeping new posts flowing through | the engine. | | What blogging platforms focus on this side of things? Which ones | help solve the "What do I write next?" problem? | hypertele-Xii wrote: | If you have nothing to write about, you should not write; Not | write about nothing. | | You should write about nothing though, it's a good writing | exercise. Just maybe don't publish it? Publish what you write | _after that,_ when you _know_ what to write about. | drakonka wrote: | This looks really cool. No reason to switch from my self-hosted | Hugo setup, but if I was just starting out with blogging I'd be | happy to have this available vs the bloated Wordpress site I | started out with in the beginning. | janandonly wrote: | Previous post: https://news.ycombinator.com/item?id=23312339 | orliesaurus wrote: | I use bearblog for my .dev website [1]. It's a one pager and | works great for me. | | I inject some CSS to make it work for me, i.e. fonts - and simple | colors and I removed most of the "extra" pages because I wanted | to keep it as a one pager. It's a great platform and I wish there | was a version where I could self host it like `hexo.js` | | Thanks for your work herman! | | [1] orlie.dev - Currently using it behind Cloudflare! | bearzdev wrote: | I can't bear the contradictions. | | - "No trackers, no javascript, no stylesheets" - inline js. - | inline stylesheets. - uses favicon which can be used for | tracking. - not self hosted. - requires an account to sign up - | "TOS" > "Bear may disclose personally identifiable information | under special circumstances, such as to comply with subpoenas or | when your actions violate the Terms of Service." - can't be | bothered to indent the html. - payment system could require real | identity. | SkyMarshal wrote: | Fyi, HN uses a limited version of markdown which doesn't | recognize standard markdown list syntax. If you want to make a | bullet list, you have to put blank lines between each bullet | point, like this: | | ---- | | - "No trackers, no javascript, no stylesheets" | | - inline js. | | - inline stylesheets. | | - uses favicon which can be used for tracking. | | - not self hosted. | | - requires an account to sign up | | - "TOS" > "Bear may disclose personally identifiable | information under special circumstances, such as to comply with | subpoenas or when your actions violate the Terms of Service." | | - can't be bothered to indent the html. | | - payment system could require real identity | bearzdev wrote: | Thanks for taking the time to provide this. | chrismorgan wrote: | Please don't say HN uses any form of Markdown. It's its own | thing entirely with absolutely no foundation in Markdown--the | only points of _any_ similarity between Markdown and HN | comment formatting predate both by multiple decades. HN's | formatting gives you paragraph breaks (by blank lines), | linkification (with no delimiter, _unlike_ stock Markdown | which requires angle brackets, to the surprise of many), | monospaced blocks (by two space indentation), italics (with | asterisk delimiter), backslash escaping for asterisks, and | that's _all_. Every element of this, or a very slight | variant, has been common in lightweight markdown languages | since before Markdown, and all but the backslash escaping and | hyperlinks (which hadn't been invented yet!) have been in | conventional use in communication since well before the web | (and match some typewriter conventions from before the | invention of _computers_ ). | | Markdown is not the only game in town. Yes, for now it's the | dominant lightweight markup language (more's the pity--it's a | right mess, thoroughly unsound and inconsistent in a great | many ways), but a lot of stuff exists beyond its horizons; | it's only an instance of LMLs, not the whole class. | jer0me wrote: | The favicon is actually a URL-encoded SVG with an emoji. It's | an open source Django app and can be self hosted. | IshKebab wrote: | How do you expect them to _not_ comply with subpoenas? Or | collect payment without a real identity. | | As far as I understand bitcoin is mostly useless for actual | payment these days. | bearzdev wrote: | If an organization or person is selling a product focused on | privacy and there is a TOS that focuses on the org or person | avoiding liability but lacks documentation or links to | resources to help users to lower their liability and increase | privacy, its a red flag to me. | | Their servers are located in the Netherlands. Its good that | they list that. It would be better to hoist information into | something that is less policy/legal oriented and perhaps | provide an overview of the laws of that region. | | Other things that should be listed is how is the data stored, | transferred, how is it protected, are there any steps to | anonymize the data, hash the data, or provide a way to bring | your on key for data encryption. | | Is there any telemetry gathered or stored by the server? Is | the code in the github project the same that is deployed in | production or is there a private repo that augments the code? | SkyMarshal wrote: | Bitcoin works fine for payments, just hope you didn't put | your life savings into it at the top of the bubble. | popcorncowboy wrote: | I suspect what he _means_ is "this is a safe space" in | contrast to the open/hostile internet "out there", i.e. there | is no nefarious intent. As you point out, this is really mostly | virtue signalling (and probably well-meant). The fact that | _actually_ there is JS, there are trackable signals, your PII | can and will be disclosed etc is sorta beside the point of | sites like this. | trykondev wrote: | The simplicity of this is awesome. I've vaguely wanted to start | blogging for many years, but suffered from analysis paralysis on | where/how to get started. This was so simple -- took me less than | 2 minutes to get set up and start writing. Thanks for making | this! | johndhi wrote: | I needed a blogging platform for my hyper simple website and I | may have found it. | | Was annoyed I'd have to pay to have a custom domain but seeing | it's a one time payment and not a subscription, I am probably on | board. | | Personally the minimalism is what drew me more than privacy | stuff. | hownottowrite wrote: | The privacy-first platform that cannot be self-hosted. So many | contradictions. | Stampo00 wrote: | Maybe not directly, but if you like the style, you have some | options: https://github.com/HermanMartinus/bearblog/#can-bear- | blog-be... | hownottowrite wrote: | What style? | Stampo00 wrote: | If you like the style of the blog, there's a theme | available for Hugo and a Go-based clone available for self- | hosting. Links in the project README. | [deleted] | tarr11 wrote: | Not quite a blog, but Obsidian Publish has been scratching the | "easy publish" itch for me. | | https://obsidian.md/publish | awestroke wrote: | 20 usd per month, that's bizarre | selykg wrote: | Yea, their stuff is so dang expensive. I really don't know | how they are able to charge so much. | julianlam wrote: | I ended up building my own blog hosted atop Github Gist. It's | pretty quick once the data is cached, and uses almost no | resources. | | https://devnull.land/github-gist-blog | | I only feel sort of bad that I basically use Gist as my data | store. | staindk wrote: | Why not host it for free through Github Pages? They only host | static sites so it's technically quite different to your | blog... but if you are only going to be blogging it may as well | be a static site IMO. | | Edit: I do like how neat it sounds to just query a user's | public Gists though. | | https://pages.github.com/ | julianlam wrote: | I opted not to use GH pages because I wanted to stay open to | the possibility of adding some dynamic elements (e.g. | comments integration) | staindk wrote: | Ah that's fair enough. | | I've actually been thinking about different ways of adding | exactly that to a static site - technically you could have | something like a comments form that just writes to a text | file somewhere (perhaps updating a Gist with the API you | mentioned[1]), which the static site reads from upon page | reload. | | Sounds a bit inelegant I guess, but could be interesting to | implement. | | [1] https://docs.github.com/en/rest/gists/gists#update-a- | gist | lmas wrote: | I've encountered https://github.com/utterance/utterances, | which relies on github issues for providing a blog | comments system of a sort. | | Alternatively there's https://github.com/giscus/giscus, | which instead uses github discussions. | | Haven't used either so can't comment (heh) on their | "performance". | staindk wrote: | Ha, wow those are both great, thanks for the links! | sureglymop wrote: | Well.. can i self host it? | podviaznikov wrote: | http://montaigne.io - made this one for myself. Just publishes | website from Apple Notes. Every time time I update note on my | laptop or iPhone the site is updated automatically. | janandonly wrote: | That sounds extremely useful. | | Is it possible for others to use this as well ? | podviaznikov wrote: | It's still early stages. So I have like 5 sites build with it | so far. Eg my personal site https://podviaznikov.com | | But try to signup. It should work for other people too now. | It just not polished yet. | recroad wrote: | I actually am looking to migrate raptorsrepublic.com off | Wordpress to something simpler, but the lack of Home Page | customization makes this a no-go. ___________________________________________________________________ (page generated 2022-07-17 23:00 UTC)