Live data from Hacker News

Show HN: Orange Forum – Web 1.0 style forum written in Go

goodoldweb.com

161–170 of 178 posts

Re: Show HN: Orange Forum – Web 1.0 style forum written in Go

#161

Earlier quoted context omitted.

I love HN's design. It's the "Craig's List school of design" -- simple presentation of information with no distractions. The WWW has been heading in a terrible direction (animation, over-saturated colors) over the past few years. People use too much JS and CSS3 because it's possible, not because it's a good idea. Have you tried turning of JS on Discourse forums? It should render a minimal HTML page via the elements.…

HN is no where close to Craig's List in terms of design. They are both minimal, fast and task driven, but Craig's is a work of art. HN is a roughshod hackers tool. Frankly, it never occurred to me that Discourse could ever run w/o JS. Next time I am near my ipad, I'll definitely test it out. I'd use a combo of allow/deny. Remember when we used "gradual enhancement" ? I think there should be a standard way for the cli…

The low resource usage version is a great idea.

Re: Show HN: Orange Forum – Web 1.0 style forum written in Go

#162
post #68

Earlier quoted context omitted.

> Like getting notified when someone @mentions or replies to you Really? _that_ is complicated? Serious question, do you find it complicated because you're still a beginner, or is there something I'm missing? What language(s) did you use?

Well this @mention is a bit more complicated than what one might think. For example: If someone creates a post, without any @mention, then edits it, and adds a @mention — then, do you detect this, when looking at the edits, and send a @mention notification now? And what if s/he edits the post again, and removes the @mention, then, do you remove the notification? Cancel the email if it hasn't been sent yet? And if the…

Exactly. Great post.

Can someone @mention (and thus notify) everyone on the forum in one post? Of course not, just take the first 6 unique mentions.

But what if they edit their post and @mention 6 different people? Easy, edits don't trigger notifications. Well, what if someone forgot to mention someone or typo'd someone's name and they just want to make that edit. Seems pretty lame that they can't fix their mentions.

So if you want to allow the latter but not the former, you need to start tracking historical mentions per post in the database. Which you needed anyway so that someone can't @mention, delete the @mention, and then @mention again to trigger dupe notifications.

And what does the notification actually look like if someone edits a one-week-old post to add a @mention? It's kinda confusing for a user to see "Foo mentioned you in post #123", click the link, and see that the post is a week old. They report it as a forum bug. So maybe you now have some logic that sends a notification with "Foo edited post #123 to mention you." Yet another if-statement.

We both could go on and on.

And this is how every feature goes. They are hard problems without a best solution, only trade-offs.

At least if you're building a generalized forum like phpbb, you're solving a problem that will compound across thousands of users deploying your forum software. Meanwhile my forum was completely bespoke for my community and I couldn't shake the feeling that I was wasting my time.

So then it was tempting to wonder if I should work on generalizing my forum so others could use it. Well, now you're even in the bigger hell of generalizing software in a pond with dozens of formidable competitors in a world where you're pretty certain that traditional forums are slowly dying. Good luck with that.

Re: Show HN: Orange Forum – Web 1.0 style forum written in Go

#163

Earlier quoted context omitted.

Good plan for your own sanity. Is there a way to disable the signup and just load users?

Signup can be disabled. Loading users will need some SQL.

Thanks, SQL doesn't bother me much - I just was looking at it for suitability for a student forum.

Re: Show HN: Orange Forum – Web 1.0 style forum written in Go

#164
post #143

I really like this movement of going back to the basics, web 1.0 style web apps/sites. I do feel however that there can be a compromise, I think we can build our web applications in the 1.0 style and power them up in the 2.0 style, allowing the capability of the client drive the presentation of the application. For hints on how I'm doing this for Remarkbox ( https://www.remarkbox.com ) - please read http://russell.ba…

I looked into your work - remarkbox and read through all the while hoping/wishing for there would be a self-hosted version that is not prohibitively expensive for a free personal blog. No luck for me. Back to tinkering with self-hosted isso[1] comment system to make it work for me. https://posativ.org/isso/

Since self-hosted is a requirement (?), then you might also find EffectiveDiscussons (ED) interesting — here's how embedded comments looks:

https://www.kajmagnus.blog/new-embedded-comments (scroll down to the bottom)

it has more "modern" features than Isso, e.g. FB and Gmail login, & some new ideas. Here's an about page with more info: https://www.effectivediscussions.org/blog-comments

(I'm developing it.)

Embedded comments requires JS, but ... the discussion forum part of ED (not embedded) works like Web 2.0, that can fallback to Web 1.0 (I mean, static HTML with no JS). Although this is only partly implemented.

Re: Show HN: Orange Forum – Web 1.0 style forum written in Go

#165
post #68

Earlier quoted context omitted.

> Like getting notified when someone @mentions or replies to you Really? _that_ is complicated? Serious question, do you find it complicated because you're still a beginner, or is there something I'm missing? What language(s) did you use?

Well this @mention is a bit more complicated than what one might think. For example: If someone creates a post, without any @mention, then edits it, and adds a @mention — then, do you detect this, when looking at the edits, and send a @mention notification now? And what if s/he edits the post again, and removes the @mention, then, do you remove the notification? Cancel the email if it hasn't been sent yet? And if the…

If you want requirements you gotta write 'em yourself~

Adding more complexity to the example - what about offering a digest-format where a user opts in to only receiving one email a day.

Re: Show HN: Orange Forum – Web 1.0 style forum written in Go

#166

Earlier quoted context omitted.

Then maybe you'd be interested in EffectiveDiscussions, like, item 4 in your list: https://www.effectivediscussions.org (I'm developing it) I have copied ideas from Discourse — so yes it has some of Discourse's features. Plus features from Slack (i.e. chat), HackerNews (best comments rise to the top) and StackOverflow (question-answers) & Disqus (embedded comments). More things you mentioned: It's not PHP (it's Scala…

Looks good. One suggestion: it doesn't work with JS off, so I don't see content when I arrive. I made a personal commitment not to use Facebook's software (React) whenever there are suitable alternatives available, because I don't want to support that awful company in any way, but hope that your project goes well.

Interesting commitment. Can I ask which URL didn't work for you, & which browser?

For me, when I disable JS in Chrome Dev Tools, the website still loads properly, incl homepage, forum index and discussion topics. (but one cannot leave comments, that still requires JS). I tested a bit in Lynx also.

Re: Show HN: Orange Forum – Web 1.0 style forum written in Go

#167
post #126

Earlier quoted context omitted.

Then maybe you'd be interested in EffectiveDiscussions, like, item 4 in your list: https://www.effectivediscussions.org (I'm developing it) I have copied ideas from Discourse — so yes it has some of Discourse's features. Plus features from Slack (i.e. chat), HackerNews (best comments rise to the top) and StackOverflow (question-answers) & Disqus (embedded comments). More things you mentioned: It's not PHP (it's Scala…

Wow! Seriously, you're doing an excellent job. It looks GREAT!

Ok thanks :- ) (If there's any particular feature/benefit you're especially interested in, it'd be interested to know. Or if something seems missing.)

Re: Show HN: Orange Forum – Web 1.0 style forum written in Go

#168

Earlier quoted context omitted.

Obviously there are a great many layers to caching (there's a whole multitude of other solutions out there that you've also missed off :p). However with regards to the specific points you've raised: 1) You cannot cache server rendered pages in a CDN (see footnote) if those pages contain user specific information (like this topic does). Information such as a user name, message read status - even on public messages, et…

1) nor can you cache client-side rendered pages in a CDN ... you can only cache EMPTY information-free pages in a CDN 2) Agreed, but again, same problem as one Truth of the matter: Javascript rendered pages 1) request(s) for the page 2) response for the page 3) at least one AJAX request (in practice: dozens) (cannot be akamai'ed) 4) waiting for all responses Server side rendering without AJAX 1) request page 2) respo…

Again, this is where the question of scale comes in. Server side may well work out quicker when you only have a few hundred visitors. But when you've got hundreds of thousands, being able to offload > 90% of your content makes a massive difference. JASON APIs are less expensive to get generate than full HTML pages which include the same content. It might only be a fraction less work on the servers but multiply that by several hundred thousand and you quickly enable yourself to scale down your back end infrastructure.

This isn't stuff I'm blindly guessing on either, I've worked on several hugely busy UK and international services that started out as monolithic code bases pushing HTML and migrated them to APIs. Each time the language remained the same, the main body of the backend logic even remained the same, but instead of pulling HTML templated from the backend and pushing out the completed contents, the move was to push out the templates and have the client side render them. Each time that change was made the back end infrastructure could shrink. In some instances by a factor of 10!! The drawback is the client side took longer to render the page upon first impression, however the application ran faster from then on in and the hosting costs were reduced as well.

So this is why I keep saying scale matters when discussing APIs Vs server side HTML generation. For the vast majority of project that people build, there isn't going to be much in the way of difference (heck even my own personal project are built API-less unless I specifically need an API for other - none performance relates - purposes. But when you start talking about hundreds of thousands or millions of concurrent users, then even small changes can have a real impact and thus that's when you really start to appreciate some of the advantages API driven development can offer

Re: Show HN: Orange Forum – Web 1.0 style forum written in Go

#169

Earlier quoted context omitted.

I think what you say makes no sense at all. The idea of AJAX/SPA was to provide interactivity and a less technical UI that caters to the average Joe. AJAX/SPA moves some of the computation from the backend to the frontend so the service scales better for millions of users. This forum is not going to be fast for millions of users (it might not even be for hundreds of simultaneous users) because the server has to rende…

> AJAX/SPA was to provide [...] a less technical UI I hadn't heard that reason before. Can you please talk more about this? > This forum is not going to be fast for millions of users (it might not even be for hundreds of simultaneous users) because the server has to render everything again for everyone. This theory doesn't match reality. In reality, multipage applications are faster than single-page ones. In fact, mo…

> Can you please talk more about this?

Average Joes want spinners, buttons, draggable stuff, toggles etc. that don't lead to a page load everytime you press them. Sure, you can say that "well just make a multipage app with some jquery". But at some point you're just approaching a SPA with SSR support.

Imagine facebook's chat but everytime you hit enter you had a full page reload :D

> In reality, multipage applications are faster than single-page ones.

I agree. They are faster for a single user when the usecase is a semi static page like a forum. However, the SPA + API model makes stuff easier for the backend side and allows that average Joe UI stuff. It scales well to millions of users.

The thing is, it's not about you. It's about everyone. We want to build services that please the majority and backends that stay up when the majority is logged in.

Also, it really isn't possible to build realtime/dynamic stuff with a "let's render some HTML on the server" mindset. How do you do realtime chat? Realtime games? How do you do a collaborative text editor? and so on.

JSON/SPA/AJAX are not there to so your static forum page loads fast. They are there because of the next generation of the web.

Re: Show HN: Orange Forum – Web 1.0 style forum written in Go

#170

Earlier quoted context omitted.

I think what you say makes no sense at all. The idea of AJAX/SPA was to provide interactivity and a less technical UI that caters to the average Joe. AJAX/SPA moves some of the computation from the backend to the frontend so the service scales better for millions of users. This forum is not going to be fast for millions of users (it might not even be for hundreds of simultaneous users) because the server has to rende…

If it were to scale to millions of users, caching would help. At that point, you'd have to cache the JSON responses just the same, so the complexity of cache invalidation would be there in the exact same way. But you would still not have the additional load and bloat on the user browser.

You are correct; caching is always hard.

Load and bloat? Well that depends. If you're doing a realtime collaborative texteditor with a realtime chat, I just don't see how you'd get anything even remotely nice without what you call "load and bloat".

However, to return to the original topic. Which is simpler: a) creating a performant data API b) creating a performant server that handles data stuff just like a) AND all the rendering & UI stuff

Surely the latter is more complex since it has more responsibilities?

Post reply on HN