1.  

    Learning Ada, this all seems obvious. Ada has nice support for subtyping and other things that allow for restricting the domain of subprograms.

    I’m more surprised that this is, apparently, uncommon in Haskell and that Haskell would be prey to bugs such as large integers becoming negative, or am I misunderstanding?

    1.  

      The author’s not writing about integer wrapping where 2 ^ (some power of 2) + 1 evaluates to a negative number, he’s diagnosing places where parameter types or return types allow negative integers when they shouldn’t (an Integer type instead of a Natural type).

    1. 2

      In an ideal world, copyright wouldn’t exist in any form, but it’s a good thing to use it for copyleft while it’s still around, I think. I use the AGPLv3 for most of my work and the CC0 for those very few cases where I’d rather more people use the software. I like that the AGPLv3 scares several companies, as I’d really rather they not use my software to start with; in addition to this, I also have the option of selling exceptions or anything else, if I wanted to, although I don’t really see this in my future.

      1.  

        Abolishing copyright entirely seems to be a too extreme step to me. I’d like to return to a more reasonable time frame though - author’s lifetime or 12 years, whichever is longest.

        1.  

          3-5. Make them earn the monopolies with productivity.

      1. 2

        My main issue with this article is the software it concerns itself with. Damn near all of it is WWW garbage. I don’t really care if ’‘Gatsby’’, ’‘Storybook’’, or ’‘Prettier’’ receive ’‘only’’ hundreds or thousands of dollars in donations. Everything would’ve held much more weight if he’d mentioned more important projects that perhaps receive little or nothing, rather than frivolous projects that are merely underfunded in his eyes.

        As an aside, he recommends some garbage licenses that violate freedom zero at the end, but that’s a relatively minor issue with the rest of this article, I suppose.

        1. 4

          Maybe dial down the anger a little bit and realise that you’re not the final arbiter of value? The merits of the web platform can be debated, but obviously these projects are in some way useful to thousands of people.

        1. 1

          Hey verisimilitude, I know that ACUTE-TERMINAL-CONTROL didn’t make it into quicklisp, but, how about this one? :)

          1. 1

            I don’t believe so, no. I don’t understand the ‘’:)’’.

              1. 1

                So, this is mockery, then? I don’t appreciate that.

                1. 1

                  No, no. I am sorry, there has been a misunderstanding, verisimilitude. I am on your side. I do find quicklisp to be very useful. This highlights the fact that Zach should not be the sole gatekeeper of quicklisp. Thanks for your work!

          1. 4

            I already found the more legitimate versions of these articles to be silly, that concerned themselves with, say, timing information for very specific types of hardware.

            I find this article and its naming scheme that imitates those other articles to be drivel. I can’t write for anyone, sans myself, but I’ve never used this AWS nonsense and never plan to. I find so many willing to recentralize the Internet to be disconcerting. I suppose these numbers would be fine to have if you actually used this AWS nonsense, but why would you be purchasing something before you knew the cost thereof? Is it normal for people to not only rent from a behemoth instead of a VPS or the more respectable self-hosted server and then, in addition, not know what they’re doing until they get a bill?

            1. 9

              I can’t write for anyone, sans myself, but I’ve never used this AWS nonsense and never plan to

              That’s fine, but I don’t think you need to be overly antagonistic at the article author.

              I suppose these numbers would be fine to have if you actually used this AWS nonsense, but why would you be purchasing something before you knew the cost thereof? Is it normal for people to not only rent from a behemoth instead of a VPS or the more respectable self-hosted server and then, in addition, not know what they’re doing until they get a bill?

              You are assuming a lot here. You are making the assumption that companies which requisition AWS’s services are not aware of their TCO (total cost of ownership) by the mere presence of this blog post? I have to disappoint you, but when I was pitching to one of my previous CTO’s about using Redshift, I had to create a spreadsheet of pricing calculations and projected cost depending on varying usage scenarios. We were very aware of what we were getting ourselves into, and the cost/benefit ratio. I imagine any company that likes to stay in business is also aware of such factors.

              You also miss out on one crucial use case that is almost always a net win with cloud infrastructure: extremely bursty workloads.

              Netflix–I can only imagine–must save hundreds of millions annually by leveraging AWS’s elastic nature to spin up insane amounts of compute during Friday evenings, only to spin them down come Monday. It would be extremely wasteful to be paying for tens (hundreds?) of thousands of idling machines during Monday -> Thursday, under the scenario that they have to own enough compute power that commensurate with their peak load.

              1. 1

                Netflix could make a cool buck renting out those servers when they’d otherwise be idle.

                1. 1

                  They’d also have to pay a buck to cool them ;)

                  1. 1

                    They have an internal spot market afaik

                2. 4

                  One of the best arguments against (or for) centralizing is cost. This article helps attempt to give better information about that for people that might want to host things themselves.

                  Your dismissal of it and, more importantly, the people who might find it useful could drive off more folks than you would have convinced if it had been friendlier.

                1. 3

                  I dump my files into /var/www/html/ for Apache and that’s the end of it. I write all of the HTML, SVG, and whatnot by hand and when I want to add a new article I copy the HEAD and all of that from a previous article. Then, I add the article to index.html and that’s the end of it.

                  There is one question I have, however. I’ve recently wanted to add the ability to comment on my website and the current mechanism is sending me an email, as explained here, but this seems a high enough barrier that I’ll receive very few, as I’ve received none so far. I figured it would be sufficient to add a form to that page, but I don’t know how to attach an arbitrary program to a form. As I’ll be doing this all manually, it would even be enough to simply have Apache log the POST requests sent to a certain URL, but every option I’ve come across so far requires me to either install something or perform some heavy configuration, both of which I’m reluctant to do.

                  I suppose I could tell it to vomit the POST to a port I have listening, but surely there’s a better way, right?

                  1. 3

                    This is actually a great use case for php. Since you already have Apache set up, you would use it with mod_php and direct the post request to a php controller. From there you can do whatever you want in process, probably the simplest thing would just have the server itself email you and then optionally log the data or action somewhere. So no messing around with sockets or other processes on the host side or spinning up and managing arbitrary interpreters as the module handles those details.

                    1. 1

                      You can also write cgi modules for python and your favorite language, though php is basically made for this. So you have choices that can also lead to “easy to write scripts for single endpoints”

                    2. 2

                      This is close to the sort of thing I’m talking about. Static assets are easy - but what do you do when you just want to add a small dynamic part, like a contact form? A full “web app” with the accompanying sysadmin headaches just seems like massive overkill.

                      1. 2

                        Couldn’t you just use some plain JavaScript via XMLHttp​Request?

                        POST Example

                        var xhr = new XMLHttpRequest();
                        xhr.open("POST", '/server', true);
                        
                        //Send the proper header information along with the request
                        xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                        
                        xhr.onreadystatechange = function() { // Call a function when the state changes.
                            if (this.readyState === XMLHttpRequest.DONE && this.status === 200) {
                                // Request finished. Do processing here.
                            }
                        }
                        xhr.send("foo=bar&lorem=ipsum");
                        // xhr.send(new Int8Array()); 
                        // xhr.send(document);
                        
                        1. 2

                          I don’t know JavaScript and I don’t know PHP. I want to avoid adding something to Apache and if I were to use any JavaScript, then it wouldn’t work in Links, Lynx, w3m, Dillo, or Netsurf; it would be the only JavaScript on my entire website. I’ve taken special precaution to have my website be usable in every WWW browser I test with and so that’s not an option.

                          Really, I’m actually surprised this is so complicated, all to add a single form that wouldn’t even create a dynamic page.

                          1. 2

                            It sounds like you want cgi scripts then. https://httpd.apache.org/docs/2.4/howto/cgi.html which still take a touch of config.

                            Or you want to log the post data and just manually grep it later, this page gives you three options, two of which are modules and the other one is use an application layer: https://www.simplified.guide/apache/log-post#log-post-request-data-in-apache-in-application.

                            On the bright side you definitely don’t need js to send a simple post so that’s good.

                      1. 1

                        I enjoyed watching the video and recommend others do the same. Think about that graphical language from 1968 the next time you see someone boast about ’‘the power of the command line’’ or claim Douglas McIlroy ’‘invented pipes’’.

                        1. 22

                          I’ve never used CockroachDB, but I certainly wouldn’t consider it now, as it’s proprietary. As others have pointed out, these companies don’t pay for the compilers, operating systems, HTTP servers, or other things they use. This is all some people screaming ’‘The buck stops with me.’’; now that they’re more well-known, they find it fine to switch from a permissive license to a proprietary one, but if they actually wanted to stop some of this, they’d have been using something such as the AGPL the entire time.

                          Now, with regards to @matt :

                          Amazon has amply demonstrated that, left to their own devices, they will happily run SaaS at a loss until they run an Open Source project’s funding arm out of business, and then privatize all future development by keeping their modifications internal.

                          You’re prevented from doing this if you use the AGPL. Secondly, there are plenty of projects, such as GNU and OpenBSD, which are funded by donations and whatnot.

                          Freedom is an inherently self-contradictory concept — we need to limit your freedom to swing your fist if we’re to preserve the freedom of others’ faces to remain unpunched.

                          This is what the GPL and its variations do, enabling freedom and preventing making Free Software proprietary. That example has nothing to do with this proprietary license that has been adopted by this company.

                          If we treat it as an absolute, “freedom zero” ends in zero freedom when it comes to any kind of distributed infrastructure software, with Amazon leveraging their vast economies of scale to effectively co-opt and close-source any non-hobbyist Open Source projects they wish.

                          Well, you said it yourself, ’‘non-hobbyist’’; so, Free Software written by people who aren’t paid for it doesn’t matter much to you? The many Free Software projects doing just fine that people are paid to work on don’t matter to you? You are naive to believe this ’‘venture capitalist’’ rhetoric and pretend that freedom zero is an issue. You’re either arguing in bad faith or don’t know what you’re writing about, in my eyes.

                          1. 2

                            I’ve never used CockroachDB, but I certainly wouldn’t consider it now, as it’s proprietary

                            That’s simply false. Every version released so far remains open source, parts of what is released in the future remains open source and other parts revert to open source after three years.

                            1. 2

                              As others have pointed out, these companies don’t pay for the compilers, operating systems, HTTP servers, or other things they use.

                              People keep bringing this up but I’m not sure how much it really matters to you all. As in, how important it is in your decision-making on what products to use. So, let’s say it ran on Windows Server where Microsoft made about everything you described and they charged an extra $10,000. Would you say the same then? Or what if they made a donation to each project or component writer that’s similar to the market rate for those things in proprietary software? Would you cheer them on with the new license given they paid for what they used before asking others to do the same? That’s my main question here.

                              Although I think it’s about ethics, I noticed another issue: your stated preference might cause indirect harm to F/OSS in the startup world if they acted on what you said. I doubt you intended that. The scenario is a group of people with barely any money on top of labor who have to iterate as fast as possible. In most situations, they’ll go for whatever is easiest. Outside major foundations (eg Linux, Apache), it’s actually harder to locate and pay F/OSS suppliers than it is proprietary suppliers or just paid support for popular F/OSS who aren’t the developers. If startups followed your motto, then they’d probably send more funding away from F/OSS developers just because other people are easier to pay. I mean, proprietary vendors that aren’t huge like Oracle go out of their way to make getting paid easy. So, your expectation might backfire in situations where team is highly time-constrained, buyers are just lazy, or corporate buyer is mainly paying for name to assign blame to.

                            1. 3

                              So, this title is a joke, right?

                              Now, I use Emacs as my mail client, but it’s not really cute to see some project claim it’s ’‘the world’s best’’. How many people could have their project on this website with a claim like that and not be considered egotistical at best and spam at worst?

                              1. 1

                                It’s okay. You were right first time.

                                1. 1

                                  How can “the best” without a specific criteria for being “best” ever be taken seriously? There is no “best”.

                                1. 3

                                  This article entirely ignores M-expressions and Steve Russell’s contributions. The relationship between the AI researcher John McCarthy and a painter is tenuous at best, as presented. It’s interesting to read what is supposed to be an article concerning itself with Lisp that goes on a tangent to talk about the evil KKK for no good reason.

                                  In brief, I didn’t care for it. I find this to be drivel.

                                  1. 1

                                    What are the things you look for in an algorithmic open source project?

                                    It should be reusable and written correctly. It should be widely applicable, I suppose. It must have a license I agree with and it should be something I don’t want to write myself. Following with this, it should be an efficient solution.

                                    Are there any assumptions that get made that make a project less attractive?

                                    I’m supposing this is written in Python, which is enough for me.

                                    What are your best practices?

                                    I use the AGPLv3 license and I document my work. I make certain it works.

                                    Would you rather release it now (in an OK state) v. later (in an excellent state)?

                                    This is an academic project, I take it, so it should only be released in an excellent state. If it were to contain any flaws or whatnot, that would be rather damning, don’t you agree?

                                    1. 1

                                      OK that’s useful.

                                      To answer two parts of your questions in one go. It’s actually a webserver wrapper/API and an implementation framework which indeed is written in Python. But uniquely pulls in a R library and also a Python C++ binding module. So with regard to correctness it can be somewhat subjective in this regard. For the maths I agree that there should be no leering errors.

                                      1. 1

                                        I’d just caution about the license. It’s worth the afternoon in research to understand why people recommend MIT or LGPL-2.0 or AGPL-3.0 or any of the other multitudes of licenses.

                                        Put shortly: the more free your license, the more people can and will use your code. The more restrictive your license, the more people have to release changes and improvements back into the open source world if they make any. It’s a trade-off most often made on philosophical grounds.

                                        My best practice would probably be the Apache-2.0 license, for the freedom it offers. I personally see an AGPL license as enough to not use a project. There are people who disagree, and that’s ok too.

                                    1. 2

                                      As is usual for C, this introduction relies on unportable behaviour, the macros aren’t safe in even trivial ways, and the implementation is marked by other issues.

                                      In Common Lisp and Ada, I can very easily declare such arrays and get the full breadth of bounds-checking and whatnot, without the need to wastefully do this myself, as the article states:

                                      The C programming language provides all the necessary operations to allow the programmer (= you) to implement an “array of bits” data structure.

                                      That’s really something that should be done for me, but C is at the same time high level and inefficient, while also being unsuited to true low-level programming in any decent way.

                                      Moving on, Common Lisp permits bit arrays, boolean arrays, and treating integer types as their twos’ complement representation of bits. I’m not guaranteed to get the most efficient implementation, but that’s because Common Lisp is a high-level language. Furthermore, since Common Lisp supports operations such as LDB, DPB, MASK-FIELD, and DEPOSIT-FIELD for doing these manipulations and more, an implementation that does support the efficient representation can also very easily use whatever instructions the machine provides for doing this, whereas the C lacks this and relies on either nonstandard compiler-provided functions being used or extremely-specific patterns being detected by the compiler and transformed into such instructions, which is a big reason a language such as Common Lisp can very easily have a smaller and less complicated compiler than a ’‘simple’’ language such as C.

                                      With Ada, it’s simple to see how such arrays are supported and Ada also provides features for manipulating some number types in similar ways. Ada has a very high-level notion of an array that permits a compiler to choose an optimal representation and, unlike Common Lisp, it’s perhaps more likely a compiler will in every case, such as with an array of booleans.

                                      I did like this page’s CSS.

                                      1. 7

                                        Your comment would be a lot more actionable I think if you gave examples (actual code!) of the things you talk about, both in C and other languages.

                                        I think a lot of people are so numb to others saying “b-b-b-b-b-but undefined behavior, use $PET_LANGUAGE” that we don’t really care unless given both the precise example of UB and also sample code in the other language for how it’s handled.

                                        tl,dr; code snippets over flamebait.

                                      1. 3

                                        Enkiv2, a critic of not just the modern web, but the early web, too, responded with an article titled Avoiding the gravity well of webbiness in gopher.

                                        I recall this Gopher document. It’s a Gopher menu composed entirely of i item types, sans one entry. What an abuse, I thought. The first time I saw Bitreich’s system for displaying git files as a Gopher menu composed almost entirely of i item types, I was bewildered and that bewilderment gave way to disgust.

                                        My Gopher hole entirely lacks i item types and I found it wasn’t particularly hard to get what I wanted without them, with just a little thought. I was surprised to find my general approach surprising to some; all I do is, for those articles that need other documents, use a menu to represent the document where the actual article is one entry and the accompanying files are others. An example can be found in my 2019-02-12 article which has many accompanying images.

                                        With regards to the rest of this article, I generally don’t like the idea of any aspect of the WWW making its way into Gopher, which is one reason I avoid using Gopher URLs in general, along with not supporting Gopher selectors of robots.txt or caps.txt, the latter being particularly bad because (I believe) it was created for use with Gopher and is merely a ’‘name=value’’ format, with comments, that has no resemblance to anything in Gopher whatsoever.

                                        With regards to @arp242 and his comment about monospaced text, I have two solutions: For those articles that warrant having several available formats, simply provide those; I may eventually have TeX versions of several of my articles, as an example; and secondly would be that solution which involves a client simply reflowing the text in an appropriate way, since lines of text are generally amicable to such things unless they depend on monospaced text for diagrams or whatnot.

                                        I could continue with this, but I suppose my general point has been made well enough.

                                        1. 2

                                          Where can one find your 2019-02-12 article?

                                          Edit: Found the details in your profile.

                                          1. 3

                                            gopher://verisimilitudes.net:70/1/2019-02-12

                                          2. 2

                                            The caps.txt file exists as a way to programmatically define a way to navigate through a gopher site based upon gopher selectors. Technically, they’re opaque identifiers with no meaning except to the gopher server. Most gopher servers use paths as a selector, but not all (mine for example—if you end up here it’s hard to say what the “parent” directory would be). I have no idea how useful it is.

                                          1. -8

                                            My team and I were contacted by different people to warn us that they were uncomfortable with the participation of a speaker and her boyfriend in our conference.

                                            We also talked with the organizers of other conferences and with dev that are part of gender groups focalized in technology and all of them recommended us to take distance from them.

                                            So, you asked the church if someone they disagreed with was a heretic.

                                            At this point I found out this man is an internationally renowned information security specialist.

                                            That seems like something you should’ve already known.

                                            I had to leave the conference, depressed by the whole situation. Luckily, my girlfriend and other friends were there to help me. I was just attending a conference and was subjected, along with my acquaintances, to a very unpleasant moment by being unfairly accused by a person I didn’t know.

                                            You never at any point in this article consider this is how the speaker rejected by a mob you listened to had felt.

                                            Some people consider that software conferences are focusing too much on inclusion and diversity. What they want is for conferences to be exclusively technical. This makes sense only in abstract.

                                            I vehemently disagree with you here. The entire point of a technical conference is the technical matters and not the race or sex of those attending or presenting. I’m reminded of that conference that was cancelled because a blind selection process only chose white men anyway and this was considered unacceptable.

                                            The problem with this is that they aren’t taking into account that many people can’t partake in the way they could and would like to. There is no way of making a technical conference if some people feel insecure or uncomfortable.

                                            You can’t help people feel insecure or uncomfortable if such people insist on feeling this way.

                                            This is why inclusion and diversity are essential in these kinds of events, as well as the participation of the groups that promote these values.

                                            The latter half of this sentence is telling. Those are lobbying organizations, effectively. You’re naive if you believe they have anything but their own interests in mind. They want power.

                                            It is important to generate a space where everybody, no matter what gender, ethnicity, religion or ideology, is able to share knowledge in a friendly, pleasant environment with a collaboration spirit.

                                            Giving discounts to those minorities that have less resources is another way.

                                            The tried-and-true method of not discriminating works well for many. Discriminating against groups you deem privileged is in opposition to these goals.

                                            The best way to face this type of situation is to always be faithful to the code of conduct, not give in to undue pressure and consult groups dedicated to ethics, gender and minorities in technology because they know the most about these issues.

                                            That is giving power to those groups that generally have nothing to do with technology, programming, etc., but still want in. This sentence reminds me of ’‘developer advocates’’, which are cretins who can’t program, but still want the attention associated with it.

                                            I can’t claim to know about this situation and I haven’t looked at the other side of it, but these are my thoughts, in any case.

                                            1. 16

                                              I can’t claim to know about this situation and I haven’t looked at the other side of it

                                              Thank you for adding to the sum of all human knowledge despite these setbacks.

                                              1. 9

                                                You never at any point in this article consider this is how the speaker rejected by a mob you listened to had felt.

                                                Was the speakers rejection and its cause publicly announced?

                                                1. 7

                                                  We also talked with the organizers of other conferences and with dev that are part of gender groups focalized in technology and all of them recommended us to take distance from them.

                                                  So, you asked the church if someone they disagreed with was a heretic.

                                                  If you want to phrase it that way: no, they verified with the church that someone who they didn’t yet have sufficient knowledge about was indeed a known heretic according to various groups within the church, who could have easily disagreed with each other or who could have reported not having any knowledge of previous heretic behaviour.

                                                  Or, if you want to state it without using a loaded analogy and without assuming things: they asked various communities about someone’s history.

                                                  But as you phrased it it disqualifies your response as possibly interesting, because it demonstrates a clear presumption of negligence, wrong behaviour and guilt.

                                                1. 1

                                                  I don’t see the appeal.

                                                  Why would you want a clone of a Python library in Common Lisp, especially when Common Lisp has rather good mathematical support standard?

                                                  1. 5

                                                    You should see the animated gif in the readme, it is self explanatory.

                                                  1. 2

                                                    This wasn’t a bad article, but I feel it would’ve been better, albeit not more approachable, to focus on having a personal node on the Internet, rather than a personal website on the WWW. Even this isn’t enough, however, considering domain name and hosting providers have shown a disgusting willingness to stop service or steal domain names at their leisure; the likelihood of this happening is much less than a ’‘social media’’ company stealing or deleting things, however.

                                                    The author doesn’t focus on the increasing consolidation of WWW browsers at all, which is an issue, as that’s effectively a different form of lock-in. I only begrudgingly host a website, as one service, because that’s currently what people expect, and it will be the first service I drop when I can, but I test my website in Dillo, Netsurf, and use tags such as CENTER instead of CSS so that things also look nice in Lynx, Links, and w3m. I also host things over GOPHER and this protocol entirely lacks this server client dearth. Some mentioning of this issue would’ve been nice, but the author instead focuses on people playing with complexity that only newer WWW browsers implement in any form and the only other things discussed are mere extensions to the already gargantuan set of WWW protocols/conventions.

                                                    The mention of ’‘web rings’’ and whatnot was nice. I learned about affiliation years back and I do that now, as it’s a nice way to learn of others and is also a pleasant protest against most ’‘search engines’’.

                                                    Webmention is a W3C recommendation that describes a simple protocol to notify any URL when a website links to it, and for web pages to request notifications when somebody links to them.

                                                    Without looking at it, I get the impression this is simply another WWW kludge looking to approximate part of Project Xanadu, after the fact.

                                                    Also, don’t hesitate to write about little ideas and observations that might seem too small or unimportant to share. We all have our unique perspectives and even the smallest experience is worth sharing.

                                                    I prefer to have articles for topics that are large enough to warrant articles, although that doesn’t equate with length. A more proper way to do this for smaller thoughts, I’d think, is FINGER, which is another service I intend to provide soon.

                                                    This article seems to equate the WWW with the Internet too much for my liking. I also would’ve preferred to see something about email hosting, as that’s another important service and one under attack from corporate interests at that, but there was naught.

                                                    1. 1

                                                      For a few years I thought that Dillo was dead but it seems it is not completely neglected. For me, its “Gopher with nice fonts”. Its speed is amazing.

                                                    1. 2

                                                      This relates to my opinions about encrypted HTTP, which is that it shouldn’t be mandatory.

                                                      If you have a well-designed system that only works with encryption, then sure, but this idea of using the same mistaken systems as the WWW clearly doesn’t work well.

                                                      I’ve never seen a Tor Hidden Service fail because of something expiring.

                                                      Much of this nonsense about encrypting everything, without reason and excuse, is to protect advertisements from being modified.

                                                      That this hit Tor Browser and disabled NoScript is damning, but I already disable JavaScript in about:config and I’m not even using a version of Firefox this new, anyway.

                                                      I can’t tell if my opinion of Mozilla is lower or if it can’t get lower.

                                                      1. 1

                                                        Repeating my prior thoughts concerning Unicode, this is a symptom of systems that don’t have any good UI facilities besides displaying text, so the character set becomes the UI tool.

                                                        I’d like for the WWW to take Unicode with it when it falls. This is an unmanageable, complicated mess that’s been pushed on everyone.

                                                        1. 5

                                                          Firefox capitulates to DRM, adds advertising extensions, corroborates with Google in slowly blocking things Google doesn’t like, is not only supporting ’‘DNS over HTTPS’’ but is doing so with Cloudflare under the guise of improving privacy, and is participating in the same disgusting expansion of the already disgusting set of WWW protocols purely to help solidify its position as one of the only WWW browsers.

                                                          As we can learn from Microsoft’s failures it is at this point unrealistic to believe that a new browser can be written from scratch. Our rendering and JavaScript engines are at this point so complicated that creating a new product from scratch is less realistic than creating an entire new operating system together with various user space programs.

                                                          Yes, and that’s exactly how Google and Mozilla like and want it.

                                                          It appears that with the way things are heading right now the complexity of our web standards will lead to a downwfall of the web as we know it.

                                                          I really would enjoy that happening. Firefox is, sans UNIX-likes themselves, the worst piece of software I, unfortunately, regularly use and once the WWW is dead and gone I’ll never install another awful piece of Mozilla software on my machine again.

                                                          I hold the idea that one should ideally implement the standards they use themselves, if capable, but the WWW is large enough to prevent that, which is wrong.

                                                          In closing, Mozilla is maybe not as bad as Google, but at least you don’t have as many people running around defending Google, unlike these Mozilla cretins who’ll sell you down the river while claiming they’re the good guys.

                                                          1. 14

                                                            at least you don’t have as many people running around defending Google

                                                            oh god I wish this were true

                                                          1. 2

                                                            I could understand liking vi’s command set, I suppose, but I don’t share in the lauding of the program itself. Not only is it nothing special, but it’s not an enviable design to start with.

                                                            These relevant passages from chapter six, ’‘Terminal Insanity’’, of the ’‘The UNIX-HATERS Handbook’’ come to mind:

                                                            Unix (through the hand of Bill Joy) took a third approach. The techniques for manipulating a video display terminal were written and bundled together into a library, but then this library, instead of being linked into the kernel where it belonged (or put in a shared library), was linked with every single application program.

                                                            As a result, Unix never developed a rational plan or model for programs to interact with a VDT.

                                                            If the Unix aficionados are right, and there really are many users for each Unix box (versus one user per DOS box), then well over two-thirds of the people using Unix are stuck doing so on poorly supported VDTs. The most interactive tool they’re using is probably vi.

                                                            I’ve thought the ’‘editor war’’ has long been solved, because most people don’t use vi, they use vim, and vim may as well be a far worse Emacs. Emacs also has a first-class notion of an interface that isn’t a terminal, with my understanding that Vim’s is a hack in comparison. In any case, the relatively uncustomizable and ’‘traditional’’ vi has largely been left. I’m not claiming Emacs is by any means perfect or even ideal, merely clearly better; does Vim even have an online help system as Emacs does?

                                                            Wouldn’t you agree that lauding a program originally written in 1976, a text editor at that, shows a severe lack of progress?

                                                            1. 6

                                                              Emacs also has a first-class notion of an interface that isn’t a terminal, with my understanding that Vim’s is a hack in comparison

                                                              Indeed. Neovim forked Vim and rewrote the UI subsystem, decoupling the layout from the terminal display. This means that Neovim’s terminal UI is merely a client to the Neovim UI server, just like all other Neovim UIs.

                                                              Emacs has nothing like this. This architecture later inspired xi editor.

                                                              does Vim even have an online help system as Emacs does?

                                                              Vim has :help, although Emacs’ help is more “alive” (I seem to recall it having orgmode-like code execution).

                                                              Wouldn’t you agree that lauding a program originally written in 1976, a text editor at that, shows a severe lack of progress?

                                                              If progress were made, would you notice it? Vim has online help, but you didn’t notice that…

                                                              1. 2

                                                                Emacs has nothing like this.

                                                                Emacs does have a client-server system. You start the server and spawn clients whenever you want to use it. You can even remotely connect to a headless Emacs server through TCP (although it’s a hack, you’re better off just sshing).

                                                                It’s just that there’s no alternative client written to communicate with the server. Decoupling the interface from the underlying software is a good idea though.

                                                                1. 3

                                                                  Emacs does have a client-server system

                                                                  Obviously. But it does not have a UI protocol, it is not possible to write an alternative Emacs UI via RPC.

                                                                  1. 1

                                                                    It’s not possible at all. It’s just never done so far because it’s not meant to be used outside Emacs itself and the protocol is undocumented. After all, it’s all done through Unix domain sockets (or plain TCP).

                                                                    1. 1

                                                                      “I could do that, I just don’t want to” is the standard response that I found in my 12 months in the Emacs community. What specifically are you referring to? I hope something other than emacsclient.

                                                                      After all, it’s all done through Unix domain sockets (or plain TCP).

                                                                      emacsclient -t receives literal terminal sequences sent from the emacs --daemon. This is not a decoupled UI, it is quite literally the opposite.

                                                                      Here’s a sample from strace showing the emacs server sending a blob of terminal sequences, representing the statusline and minibuffer:

                                                                      write(7, "\33[10;1H\33[30m\33[47m-UUU:@----F2  \33[39;49m\33[1m\33[30m\33[47m*scratch*   \33[0m\33[39;49m\33[30m\33[47m   All (5,0)      (
                                                                      

                                                                      That fd 7 refers to -tty /dev/pts/9 which was sent by the client to the server, so the server itself is writing to the tty, that doesn’t even go over the socket.

                                                                      1. 1

                                                                        “I could do that, I just don’t want to” is the standard response that I found in my 12 months in the Emacs community.

                                                                        Okay, you’re right about that one. I don’t like it one bit myself either. It’s harder to write an actual program to work outside Emacs itself than just writing Emacs Lisp scripts.

                                                                        emacsclient -t receives literal terminal sequences sent from the emacs --daemon. This is not a decoupled UI, it is quite literally the opposite.

                                                                        Yes, the server keeps the text data you’re working on. The client is literally just a detached UI, meaning you can work with separate clients working on different buffers held in the same Emacs server. (Or on the same buffer. The clients update simultaneously when the buffer is edited.) I don’t see how this disqualifies it from being a UI.

                                                                        1. 1

                                                                          Yes, the server keeps the text data you’re working on.

                                                                          I didn’t say anything about text. Terminal sequences are much more than “text data”.

                                                                          The client is literally just a detached UI,

                                                                          I showed above that emacsclient -t only tells the server which tty to connect-to, and then the server itself writes directly to the tty.

                                                                          So emacsclient is not a UI–but this was never the central point (nor did I even make that claim), merely a funny result found on closer inspection.

                                                                          I don’t see how this disqualifies it from being a UI.

                                                                          “Decoupled” is the operative word, not “UI”. Emacs server renders the UI, rather than sending a logical representation of the UI. Supporting multiple clients was never in question.

                                                                          Neovim server does not send terminal sequences to the client, it sends structured data with a well-defined protocol so that UIs can use any rendering engine or even layout. Emacs has nothing like this.

                                                                          1. 2

                                                                            Neovim server does not send terminal sequences to the client, it sends structured data with a well-defined protocol so that UIs can use any rendering engine or even layout. Emacs has nothing like this.

                                                                            I think I see what you mean now. Yes, Emacs has nothing like that. Whilst it’s very modular in terms of functionality, its actual display code is notoriously monolithic and tied up. I don’t think the UI can be separated that deeply without a total rewrite of display code, something everyone wants since ’90s but no one actually does.

                                                              2. 4

                                                                Wouldn’t you agree that lauding a program originally written in 1976, a text editor at that, shows a severe lack of progress?

                                                                …wasn’t Emacs also released in 1976?

                                                                1. 3

                                                                  Yes, in its original incarnation. The version most people would use today is GNU Emacs, which is from 1985 (the second time rms was involved with creating Emacs).

                                                                  But I agree that a program dating from 1976 doesn’t tell us anything about progress. Part of why Emacs is so good is because it’s been around for so long.