• Jamal
    9.2k
    @Michael @Leontiskos

    As of today I’ve got Discourse running now on a host that does managed Discourse hosting. Some people on meta.discourse.org say they’re very reliable. I think this is the way to go. I don’t want to deal with hosting. These folks take care of backups, software updates, and all the rest, while I have the power and control of the Discourse admin (e.g.,

    Can I download my data?
    Yes. You own your own data. A copy of your files (including uploads and avatars) and databases (full dumps) can be downloaded from the Backups menu of the Discourse admin panel at any time.

    ) and members get most of the features they've been asking for for years.

    I actually set one up there a few years ago and didn’t pursue it just because I wasn’t in the mood or I didn’t want to face the data issue. This time I hope to see it through, some time in the next weeks or months. In the meanwhile I’ll invite testers once I’ve fine-tuned it (this week probably but I don’t know when I’ll get around to it).

    Plush seems like it's working pretty well. I really like the feature where I can click on the title bar and return to the post I just quoted. My concern is that Plush seems near the end of its lifecycle. If you look at the second half of my post <here>, you can see a number of the things Plush hasn't managed, despite requests. Most of that stuff has been standard for years now, along with ignore lists and strong moderation tools. If Plush won't budge on those things, then I have to wonder if they are in maintenance mode, nearing their expiration date. NodeBB and Discourse don't show evidence of this lifecycle issue.Leontiskos

    Yep, and Discourse would take care of most of the feature requests, I’m guessing?

    I think your experience is not normal because your moderation is not normal. I think that's why your forum is so much better than the alternatives: you have superior moderation and your moderators have a good grasp of philosophy.Leontiskos

    Glad you think so :smile:

    P.S. One significant feature that NodeBB hasn't yet managed is composer keyboard shortcuts. For example, Ctrl-i won't give you italics.Leontiskos

    It's kind of a small thing, but I use that all the time, including here. Of course, when using Markdown you don't need it so much because it's so easy to just type the markup.
  • Michael
    14.3k
    I think you misunderstand what an SPA is.

    Think of a website as a book. In traditional MPAs (multi-page apps), you ask the website to give you a page. You read it and then ask for another page. In SPAs (single-page apps), you ask the website to give you a book. There are still pages but you don't have to ask for the website to give you them each individually.

    So in a way the "P" in "SPA" and "MPA" is a bit of a misnomer.

    Although even this analogy is a little off as with code-splitting you do get given each page individually, but it only gives you the new stuff, e.g. the particular block of the website that is about to change. You don't have to be sent all the surrounding stuff as well. This makes it faster.
  • Alkis Piskas
    2.1k

    What I undestood is what https://www.techtarget.com/whatis/definition/single-page-application-SPA says, which is not what you are saying.
    Anyway, thanks.
  • Leontiskos
    1.4k
    As of today I’ve got Discourse running now on a host that does managed Discourse hosting. Some people on meta.discourse.org say they’re very reliable. I think this is the way to go. I don’t want to deal with hosting. These folks take care of backups, software updates, and all the rest, while I have the power and control of the Discourse admin (e.g.,Jamal

    Sweet. :up:

    So on NodeBB a lot of the customization comes through themes and plugins, which can be substituted, created, shared, etc. But the access to this customization is somewhat host-dependent (and this is especially true when it comes to hosts that do not allow command line SSH server access). If a similar thing holds with Discourse, then I would suggest double-checking that the hosting company allows that deeper level of customization (and ideally command line access). You could easily leverage the deeper level of customization if you have need in the future, given the many developers among your users.

    Yep, and Discourse would take care of most of the feature requests, I’m guessing?Jamal

    Yes, I certainly think so.

    It's kind of a small thing, but I use that all the time, including here.Jamal

    Oh, I use it all the time as well. Small things like that can make a difference when two competitors are so close.

    I actually set one up there a few years ago and didn’t pursue it just because I wasn’t in the mood or I didn’t want to face the data issue. This time I hope to see it through, some time in the next weeks or months. In the meanwhile I’ll invite testers once I’ve fine-tuned it (this week probably but I don’t know when I’ll get around to it).Jamal

    This sounds great. I am of course willing to help as I am able, although I should say that this is precisely the time of the year that gets busy for me.
  • Jamal
    9.2k
    So on NodeBB a lot of the customization comes through themes and plugins, which can be substituted, created, shared, etc. But the access to this customization is somewhat host-dependent (and this is especially true when it comes to hosts that do not allow command line SSH server access). If a similar thing holds with Discourse, then I would suggest double-checking that the hosting company allows that level of deeper customization (and ideally command line access). You could easily leverage the deeper level of customization if you have need in the future, given the many developers among your users.Leontiskos

    I actually don't think we'll need SSH access, and I don't want to need it. I'd prefer to separate off my coding and sysadmin type work away from TPF as much as possible (even though I was briefly toying with the idea of building my own). The host says they'll install any plugin we want, including any we write specifically for TPF. And there's an active community of Discourse coders making new plugins.

    This sounds great. I am of course willing to help as I am able, although I should say that this is precisely the time of the year that gets busy for me.Leontiskos

    Thanks, your guidance will be valuable since you have all this forum configuration experience, but I won't burden you too much. :smile:
  • Leontiskos
    1.4k
    The host says they'll install any plugin we want, including any we write specifically for TPF.Jamal

    Cool. I think that's all you need.

    Thanks, your guidance will be valuable since you have all this forum configuration experience, but I won't burden you too much.Jamal

    Sounds good. :up:
  • Leontiskos
    1.4k
    Yep, and Discourse would take care of most of the feature requests, I’m guessing?Jamal

    I was thinking of hitches that could be preempted, and one thing did come to mind. It seems that your users aren't fond of the reputation system. For example, they enjoy the ability to 'like' posts, but they won't accept it at the cost of replacing the user's visible post count with their reputation. I agree, and I had already found a plugin to sideline reputation in NodeBB even before I joined TPF.

    From what I know of Discourse, they tout their "trust system" (reputation) and their "gamification." Jeff Atwood was a CEO and founder of Discourse, and he was also one of the founders of Stack Exchange. He is big on gamification. My guess is that the reputation system is a cornerstone of Discourse, and is no more avoidable than infinite scroll. It may be worth checking into this and seeing to what extent it can be circumvented. It is one thing that would bear on your users' desires.
  • Jamal
    9.2k


    Good point. I just had a look. Likes are quite heavily integrated but it is just about possible to remove them, it seems. I mean, it’s easy to hide them with CSS or remove the icon from the post menu, but then it takes some faffing around to remove the various references to likes elsewhere.

    Anyway, I think you have to go to the user’s profile to see how many they’ve accrued, so it’s not like the number appears under their name in discussions. There are badges, which are connected with likes (at least by default), that do show in the user popup in threads, but they can be turned off.

    I’ll have to read the discussions that were had here about it to remind myself of how it works on Plush and what people didn’t like about it.
  • Leontiskos
    1.4k


    Okay, that sounds pretty similar to NodeBB. I can neutralize the logic of reputation so that it does not trigger any events or rewards, and I can remove the visible number that would appear under their name in discussions (last I checked), but it remains visible in the user's profile.

    I’ll have to read the discussions that were had here about it to remind myself of how it works on Plush and what people didn’t like about it.Jamal

    Sure. Just from my fallible memory, there was a minority of users who "voted" against both likes and visible reputation, a smaller minority of users who "voted" for both likes and visible reputation, and a plurality of users who "voted" for likes but against visible reputation. Plush supports both minority positions but not the plurality position. That is, on Plush if you turn on likes, then a user's reputation is automatically displayed on every post (instead of their post count).
  • Outlander
    1.8k
    SPAs don't require Ajax.Michael

    If it's an obituary for a cat or memoirs of the owner of said cat, sure. At that point it might as well be a single page website with a floating sidebar of whatever section you wish to scroll to or at least a fixed menu of the sort. I suppose it does save browser memory- the content not being rendered by the browser and stored in the JavaScript as text, especially images or videos not rendered and when changed they are thus freeing up the memory from any images or video previous rendered when you change to the new "page".

    But for anything useful like a public forum or guestbook, or say billing or payment application where an action could have been made from another avenue ie. by phone and needs to be updated, it really ought to communicate with the server, wouldn't you say? Am I wrong? if so, how and why. with examples.

    I get the concept (I think?). For a small or medium sized business. You load every single item (thousands), image link, and description (often lengthy) when someone visits your homepage? That doesn't seem efficient to me. I suppose it simply loads the blank "default item" page and clicking the item individually loads its information? That would still require every single item in inventory's ID, picture, title, and usually price to be loaded from the first homepage visit. That seems a bit much.

    Sure for many places, a restaurant or small business it seems fine that just links to an image of a menu or something. Not sure what greater benefit an SPA would offer as opposed to HTML-based page browsing from the user's end? (assuming they have a good connection)
  • Michael
    14.3k
    You load every single item (thousands), image link, and description (often lengthy) when someone visits your homepage? That doesn't seem efficient to me. I suppose it simply loads the blank "default item" page and clicking the item individually loads its information? That would still require every single item in inventory's ID, picture, title, and usually price to be loaded from the first homepage visit. That seems a bit much.Outlander

    Not if you use code-splitting. On the initial page load it just pulls down something like "index.js" and then runs the code in that. When you click the "/about" link it pulls down "about.js" and then runs the code in that. If you go back to the home page it re-uses the "index.js" that has already been downloaded. And the same if you return to "/about". This can make for a faster user experience and reduce the load on the server.

    But for anything useful like a public forum or guestbook, or say billing or payment application where an action could have been made from another avenue ie. by phone and needs to be updated, it really ought to communicate with the server, wouldn't you say?Outlander

    Yes. Many SPAs will use Ajax. I was just pointing out the technical point that SPAs and Ajax are independent technologies.

    As for "AJAX vs. HTML page loading" as you say, again it's a matter of allowing for a faster user experience and reducing server load. With an SPA when navigating to the second page of a discussion it only needs to return a JSON object of the second page's post data and then rebuild the section of the page that displays the post, whereas with an MPA it has to return all the HTML for the entire page as well as run any additional processes/queries to generate any of the surrounding data (e.g. using TPF as an example, the list of categories and the logged-in user's mention, comment, and discussion count).
  • Outlander
    1.8k


    No I get it. The constants of the site are loaded (header/footer ie. core HTML structure, images, universal JS/CSS, etc) and any content can be a simple albeit long string along with functions needed only for the specific page vs. requesting the aforementioned over again. Although I was under the impression all browsers "cache" the aforementioned and minus the 1-1 handshake that the server is still reachable, which would have to be done anyway to request "about.js" or whatever new content medium in the first place, doesn't seem to differentiate the two methodologies by very much? Perhaps I misunderstand. Fair enough. However..

    Reveal
    var me = document.getElementById('Outlander');
    
    me.onclick = function()
    {
      alert( 'But what about someone who does not have Javascript functionality either inherently or disabled for security reasons?' );
    
      // just for fun
      for ( var i = 0; i < 2; i++ )
      {
        i--; alert( 'Ye cannot escape! Mwahaha!' );
        // or if you really want to get twisted
        // window.open( 'http://www.adultwebsite.com', _blank );
      }
    
    }
    
  • baker
    5.6k
    What does Cal say, and why do you think it's important? Is it something like, stop scrolling through Instagram and go for a walk instead?Jamal

    Cal Newport is Professor of Computer Science at Georgetown University.

    Digital minimalism is a philosophy that helps you question what digital communication tools (and behaviors surrounding these tools) add the most value to your life. It is motivated by the belief that intentionally and aggressively clearing away low-value digital noise, and optimizing your use of the tools that really matter, can significantly improve your life.
    /.../
    The bottom line of this general thinking is that a simple, carefully curated, minimalist digital life is not a rejection of technology or a reactionary act of skepticism; it is, by contrast, an embrace of the immense value these new tools can offer…if we’re willing to do the hard work of figuring out how to best leverage them on behalf of the things we truly care about.

    https://calnewport.com/on-digital-minimalism/

    And he wrote a book about it. (Which I actually bought last week, and I rarely buy books. This one's a keeper.)
  • Jamal
    9.2k


    Very good, though on the face of it it just seems like common sense. I suppose a systematic approach would be good though, so I’ll give it a tentative :up:

    I’d be interested to see the details. Interested to a degree somewhere between mildly and rather.
  • Jamal
    9.2k


    When you're attempting to contribute to a discussion it's better to go into more detail than "just read this book". If you're actually interested in this discussion, maybe you'll tell us about it when you've finished.

    Thanks for alerting us all to its existence though.
  • baker
    5.6k
    Oh. I have the book in translation in my native language, so that's awkward to backtranslate the terminology. So I looked up some reviews in English that I think are fitting.
    Besides, I seem to be the only one here in this thread following this theme. You did say any thoughts on the state of web applications and websites are welcome. Perhaps a separate thread is in order.
  • Jamal
    9.2k
    You did say any thoughts on the state of web applications and websites are welcome.baker

    Yes, it's cool, I just wanted a bit more detail, that's all. No worries :up:

    Perhaps a separate thread is in order.baker

    Could be interesting.
  • Michael
    14.3k
    @Jamal

    I was bored so spent the last day and a half building an experimental JSON-powered JavaScript framework. The idea came to me whilst getting my hair cut.

    https://github.com/on-js/on-js
  • Jamal
    9.2k


    Very cool. That use of attributes reminds me of HTMX.
  • Michael
    14.3k
    htmx and hyperscript are what inspired it
  • Jamal
    9.2k
    That explains it then! :grin:

    Yeah I like the approach a lot.
  • Jamal
    9.2k
    When I started getting back into this stuff a month or so ago, I was intending on learning React and brushing up on Django, but I somehow got distracted into doing things with Crystal, Elm, Elixir, and other things more or less obscure. There are many choices now, and Python is so slow.

    I see you're using Typescript. I've stayed away from it so far, but I'm appreciating the static typing in the server-side languages like Crystal, so I really see the benefit. Plus it's doubtful I'll be able to stay away from JavaScript frameworks as much as I want to, so I guess I'd better start using it.

    By the way, amongst the front-end frameworks, I've found Svelte to be the most enjoyable to work with.
  • Michael
    14.3k
    I see you're using Typescript.Jamal

    My first time trying it. It takes some getting used to. I'm finding it more complicated that PHP's static typing.

    By the way, amongst the front-end frameworks, I've found Svelte to be the most enjoyable to work with.Jamal

    I've been using Preact at work. I like how small and fast it is. Briefly tried Vue and had a glance at Svelte, but my colleague is suggesting htmx for future projects so that's what I've been doing recently and what inspired me to make this.

    There's just so much to learn. :shade:

    I'm also in the process of building a PHP framework, inspired by Laravel but much smaller and faster. I just keep getting distracted by other things. :lol:

    It's a work in progress so not yet open source but parts of it are public anyway so check it out if you're interested: https://github.com/wtframework

    I'm particularly proud of the SQL statement builder (https://github.com/wtframework/sql). My intention is to allow for the full spec. Just need to finish off some CREATE and ALTER stuff (mostly to do with partitions).
  • Jamal
    9.2k
    I'm also in the process of building a PHP framework, inspired by Laravel but much smaller and faster.Michael

    Hey, everyone is building a framework these days. :grin:

    my colleague is suggesting htmx for future projects so that's what I've been doing recently and what inspired me to make this.Michael

    I'm on board. I'd attempt to go down that route exclusively if I could choose all my tech myself (and use a compiled language on the server).

    Funny to see how the frameworks come and go. Below is a chart plotting interest in frameworks over time.

    framework-interest.webp
    Attachment
    framework-interest.webp (90K)
  • Jamal
    9.2k
    It's a work in progress so not yet open source but parts of it are public anyway so check it out if you're interested: https://github.com/wtframework

    I'm particularly proud of the SQL statement builder (https://github.com/wtframework/sql). My intention is to allow for the full spec. Just need to finish off some CREATE and ALTER stuff (mostly to do with partitions).
    Michael

    I just saw this bit. Great stuff, but the SQL stuff is a bit yikes to me.

    Cool name.
  • Michael
    14.3k
    the SQL stuff is a bit yikes to me.Jamal

    You might also say "what the fuck?" ;)

    Hence the name.
  • Outlander
    1.8k


    Exactly what I was worrying about, how greatly PHP has changed, or "advanced" allegedly.

    I'm a solid "OOP'er" as that is, in my eyes, the peak "pinnacle" point of PHP advancement. The last and only paradigm shift as far as I judge.

    $framework = new MyFramework; $framework->function( $some, $variables, $here );
    

    Anything beyond that has always been a hard pass for me. Simply for reasons of not being needed.

    The furthest I go into modern PHP (post 2007) is the use of the double scope (::) operator and even that is for convenience/compatibility purposes.

    As example, this is the only use case of the newly introduced scope operator in my framework:
    function __construct() { $this->appName = strtolower( parent::class ); $this->sectionName = strtolower( static::class ); }
    

    And that's of course out of necessity. I view myself as fairly adept in PHP, at least in the period of time I was most active in it. Hopefully things haven't changed too much...
  • Michael
    14.3k
    Hopefully things haven't changed too much...Outlander

    How about

    class Person
    {
      public function __construct(
        public readonly string $name,
        public readonly int $age
      ) {}
    }
    
bold
italic
underline
strike
code
quote
ulist
image
url
mention
reveal
youtube
tweet
Add a Comment

Welcome to The Philosophy Forum!

Get involved in philosophical discussions about knowledge, truth, language, consciousness, science, politics, religion, logic and mathematics, art, history, and lots more. No ads, no clutter, and very little agreement — just fascinating conversations.