1. 15

    Apart from buggy syntax highlighting, broken scrolling and others

    It is explicitly advertised as “Pre-alpha - not yet usable!”, so picking on bugs doesn’t seem especially fair to me.

    Want to contribute to Onivim? Don’t. They make a profit out of your contributions.

    Vim was used to write Google, and they make billions and billions off that. Is that not worse than spending a few bucks for someone’s time?

    I don’t really have any opinion about this OniVim thing. Perhaps it’s great, perhaps it’s not. But it’s clearly people spending time writing code. What’s wrong with paying them?

    We really need to get away from this “zomg making profit from code is bad” attitude. The “please please please donate”-model doesn’t work very well, and it’s time for some new options. The “time-delayed license” doesn’t strike me as a good option for various reasons, but the article doesn’t state any of them. It just goes “profit bad!” Not very insightful.

    If you want to write really good software you need to spend time. Quite a lot of it. Right now writing free software is often like a job, except that you don’t get paid.

    Imagine if the supermarket worked this way: “this bread is €2, but you can also take it for free, if you want”. That would be an unthinkable business model: people still need to actually make the bread, and they’re not going to do it in the evening after their day job. Software can be distributed for free – so it’s not exactly like bread – but people still do actually need to make the software.

    1. 3

      I think the argument might be made that Vim was created as a hobby project and then transformed into a charitable one: the popularity of Vim is used as a vehicle to raise awareness and increase donations for a charity. In many ways, then, Vim is a charity project before it is an open source project.

      With that being said, piggygbacking of Vim is “worse” than piggybacking off of other software. Hobbyist software exists to be used, raise the profile of the author(s), etc. The “mission” of that software is to be used. The “mission” of Vim is to raise money for needy children in Uganda. There’s nothing wrong with wanting to be paid for your software if that’s what you want, but that’s not what Vim’s authors wanted. If the authors of Onivim were to, say, donate 10% or something of their proceeds to those children, I would be 100% on board with this…but it at least appears as though they are taking a project designed to help charity and making a profit from it.

      (Note that I’m playing Devil’s Advocate here. I’m not particularly invested in either side of the debate.)

      1. 3

        Vim was used to write Google, and they make billions and billions off that. Is that not worse than spending a few bucks for someone’s time?

        I don’t understand this argument.

        1. 3

          I don’t think Vim is created for the Uganda charity, it just so happens that Bram does and cares about both. But you’ll have to ask Bram to be sure.

          I’m also not so sure if Omivim would really take out a significant chunk of the donations. It’s not that they get that many donations anyway (I did a detailed summary a while ago)

          Either way, the linked post doesn’t make any of these arguments; it merely asserts that profit==bad.

          1. 2

            Either way, the linked post doesn’t make any of these arguments; it merely asserts that profit==bad.

            Profit is bad. The only way people get rich is off the unpaid wages of the workers.

            1. 2

              Whever my wife asks what I want to do today I always say “help realize class consciousness and establish a dictatorship of the proletariat.”

              We’re still married after 11 years so I’m assuming she either agrees with me or has given up.

          2. 1

            In many ways, then, Vim is a charity project before it is an open source project.

            Before I read this, I had never seen Vim as “a project designed to help charity” and I hadn’t even heard of the Uganda thing. And I’ve used Vim for … many years. (So, arguably, the existence of Onivim brings more attention to this charity.)

            There’s nothing wrong with wanting to be paid for your software if that’s what you want, but that’s not what Vim’s authors wanted.

            Is this actually in Vim’s license? To me, it just seems as though Vim’s authors don’t want to be paid themselves for their work; there’s no indication that they think this should apply to everyone else.

          3. 3

            I think you misunderstand me. By not supporting Onivim, I mean, not making contributions in the form of issues or pull requests. I never mentioned anything about the profit they make from distributing Onivim because you can make your own free (as in price) builds.

            What you are suggesting is, “Open source software doesn’t make money, go proprietary instead!”. This is simply not the way to go, there is no sense of community here. Devs should try to sell the service and not the product. This is a tried and tested model, followed by the likes of RedHat and IBM. Please do look at business models of open source projects, they exist.

            I also want readers to realize that, Onivim was born out of free (as in freedom) and open source projects like neovim (oni1 was a gui for neovim) and vim.

            A couple of other popular misconceptions in your post:

            1. There is nothing stopping devs from earning from free (as in freedom) software. Donations aren’t the only source of income.
            2. Their proprietary license prevents other devs from contributing, and goes against the spirit of open source. If my pull request doesn’t get merged for some reason, there is no way for me to share my version with others!
            3. The bread analogy does not work. Software is different from bread, you can make copies of software. So the supermarket would say, “here are the ingredients (source code), make it yourself, or purchase one for $2, feel free to add new ingredients and share it with others!”

            I didn’t quite understand this:

            Vim was used to write Google, and they make billions and billions off that.

            1. 6

              Devs should try to sell the service and not the product. This is a tried and tested model,

              Let’s say I write a super-secure PNG decoder library. It is faster than libpng, is a drop-in replacement for libpng, and has zero security flaws. How do I sell that as a service? There is a real funding problem for software infrastructure that cannot easily be made into a service.

              As someone interested in bootstrapping (e.g. making a product and selling it on the side), I’ve gradually realized that programmers in general are an awful target market. They’re averse to change, don’t understand the value of their money WRT time, don’t always have purchasing power, and heavily favor low-quality/free solutions (e.g. OSS).

              FWIW I’d pay for a copy of Vim that I didn’t have to screw around with for hours in order for it to be pleasant. This is coming from someone who has used Vim for a long time. With each passing year I detest the “infinite configurability as long as your time is free!” idea, because my time is never free, and I’d rather be actually making things instead of configuring software to help me write software.

              1. 1

                heavily favor low-quality/free solutions (e.g. OSS).

                If you think that an FOSS project and a closed source program are comparable goods in any meaningful way then you are failing to understand the products in question. Perhaps before you blame your consumers, you should evaluate what their incentives are, and what the product provides differently other than “free as in money”. You can’t meaningfully break into any market with the attitude of “The consumers are wrong”, instead you need to actually evaluate why they hold the opinions they do and what shapes their preferences.

                1. 1

                  That’s why I’m not actually a bootstrapper.

                  But I do see these threads and there’s a crab like mentality where people get all weird at the idea that they’d have to pay for things, esp around dev tools.

                  1. 1

                    I think the fear of selling the product isn’t rooted in having to pay for something, but rather that the product and the code that gets run on your machine becomes a trade secret. The other aspect is that when code is locked down, if the business owner goes away or sells the company, I cannot rely on that tool anymore. If the tool were instead open , theoretically I could get many many more years out of it. Emacs is 43 years old and I would not be surprised if 43 years later it will still have a bustling community.

                    1. 1

                      That’s fair. How do I sell dev tools that aren’t cloud based, then?

                      1. 2

                        Service does not mean “cloud”. Service can be support. Service can be a tailored solution. There are a lot of ways you can go. Red Hat for example is not strictly speaking cloud based.

                        1. 1

                          There’s a few successful (that is, making money) products in this category which have a ‘source available’ pro edition (react on rails, sidekiq).

                  2. 1

                    You lost it at drop-in replacement. It needs to require or at least warrant some service, and be good enough to be worth it.

                    1. 3

                      I’m sure imgur.com might appreciate it, as their business relies on accepting potentially malicious input.

                      Why wouldn’t we pay money for good software components? What’s the difference between charging money for access to an API and integrating a paid-for component into a larger system?

                      1. 1

                        Ok, sure, if your lib is closed-source, works well and is api-compatible. Then you sell licenses, not a service.

                        And I’m ok with paying money for good things :)

                      2. 1

                        Offer a support contract. I think many businesses would go for a PNG decoder with paid support over an otherwise-identical PNG decoder with a license fee.

                    2. 1

                      Devs should try to sell the service and not the product. This is a tried and tested model, followed by the likes of RedHat and IBM. Please do look at business models of open source projects, they exist.

                      Super profitable model for big corporations.

                    3. 1

                      Heh. Using bread for your example is quite pertinent.

                      1. 1

                        I can’t see how it’s unfair. There’s a difference between releasing a buggy product that everyone can contribute to and benefit from, and selling a buggy proprietary product. If it’s not usable, why are you even selling it to begin with?

                        1. 1

                          Well, using an open source tool in the way it’s supposed to be used is something else than extending it and selling it. That being said, if Bram wanted to avoid this, he should have used the GNU license or something similar (which basically states that you’re free to use, modify, and distribute if you publish your code under the same license).

                        1. 10

                          If the basic critique is, “I want Emacs/Vim/Atom/… to work like Sublime”, then yes, Sublime will do a better job. Maybe if you try real hard and use the best elisp-fu you’ve got, you could get somewhere close, but honestly, I think that’s just as much the telos of Emacs (specifically) as an NES Emulator.

                          Nevertheless, I’ll attempt a defence of Emacs:

                          Another problem with this pile-of-hacks design is that nothing was consistent or discoverable.

                          While hacks usually have a negative connotation, as in not well designed, I think of Emacs being more like a miracle hack (as in the fact that Emacs is usable contradicts all known laws of computer science). It has some good fundamental abstractions that if employed will reward the user. Take for instance discoverability. This is true, if you haven’t engaged with the Emacs help system. You can easily see what key is bound to what command, open the command documentation, find out about options through it’s hypertext system, etc. Enter a prefix key (such as C-x, M-s, …) and then C-h (for help) to generate a listing of command with (for the most part) telling names.

                          I will admit that consistency is a different issue. AucTeX, markdown-mode and Org all use different key bindings to generate markup. But on the flip side, all modes deriving from special-mode have a lot of keys and customisation in common. So this is a active design issue, not a problem of the “pile-of-hacks design”. Other examples might be that by defining the forward-sexp-function or turning on subword-mode, basic text-concepts can be modified, while keeping the keybindings for quite a few commands (since for example kill-sexp is based on forward-sexp that in turn uses the value of forward-sexp-function).

                          Also, regarding “pile-of-hacks design” – I have the feeling that the more transparent a system is, the more one is inclined to critique it. Think of a friend trying to explain a philosophical idea of his, as compared to him trying to explain an “established” concept. Same with people disregarding Linux/Free Software, because it wasn’t developed by a serious company. Just by obfuscating the source, the idea might seem more credible, without changing the idea. So too, will Emacs “open door” policy let you see some of the rough edges and elegant “hacks”. From my knowledge of Sublime, you are shielded from the internals, invited rather to enjoy the possible illusion of order and cleanness – essentially promoting a “consumer” rather than a “user” attitude towards ones own tools.

                          I tried to do this in Emacs once, and had to spend a ton of Googling and investigating M-x listings:

                          • Look up how to search in project without regex (I’ve never figured out a way to do this)
                          • Look up the shortcut for pasting into the minibuffer (I use Evil so I can’t use p like usual).
                          • Hope that the command is Helm-based so I can edit my query, otherwise re-type everything to narrow it down.
                          • Look up how to replace in project without regex, oops it’s an entirely different command from searching.
                          • Re-enter everything into the new command and run it.

                          My suggestion, use find-grep and add the -F flag (for “fixed strings”). A buffer should pop up with all the matches, you can navigate these by jumping to the exact matches with C-c <right>/<left>. Pasting should just be C-y, unless Evil/Spacem. unbinds this (which is why knowing the platform your higher-order-platform is based on is helpful – just like with grep earlier).

                          Replacing could ether be done with a conditional macro (see kbd-macro-query) or with an extension like wgrep.

                          Also, re-entering/editing commands doesn’t require Helm. Usually M-n/M-p do what you mean.

                          The main point is again, know the mindset of the tool you’re using. I tried VSCode a while back and disturbed that I couldn’t use it like Emacs – it then occurred to me that this is the same complaint I hear from Emacs-newcomers, and I had to laugh.

                          There’s three main ways for working with files in Emacs: buffers, files and windows.

                          Uhh, not quite. It’s more like you have buffers that might refer to files that might be displayed in windows. It’s all the same thing.

                          I tried using buffers but the problem is that buffer switching is slow and difficult.

                          If you enter anything, anywhere, you’re using a buffer. Other than that, C-x b for a specific switch, C-x C-b for a list and C-x <right>/<left> make buffer actually quite comfortable, imo. Especially with an enhanced completing-read frontend such as Ivy or Helm that might even integrate “virtual buffers” (eg. recently closed buffers) with flexible regular expressions, and quick filtering.

                          Navigating using normal find-file and helm mechanics has a similar problem: switching is just slow. It takes a lot of key strokes, and those strokes sometimes involve waiting for a list to appear that you can read.

                          This has been an annoyance for me too, but recently I’ve started using counsel-find-jump to select any file below the current file system hierarchy. But generally this can be annoying.

                          With Sublime Text I use tabs, which are amazing. I can switch quickly and directly between files with cmd+1 to cmd+9, see all the files I’m working with at a glance, and navigate with the mouse if I want to.

                          Emacs is actually mouse friendly – maybe even more so since it can distinct between a quite wide range of different mouse events. But if the main point is that you can quickly switch between a set number of buffers, this is just an example of a “consumer attitude” I mentioned before (which surprises me since this guy has participated quite a lot to Spacemacs). There are many ways you could go about this issue in fact. Write a elisp function that uses something like (nth n (buffer-list)), use registers/bookmarks, … If tabs are “amazing”, then this really only speaks of a rather inefficient usage of the default facilities that Emacs has to offer.

                          Yes, Emacs has plugins to add tabs but they are hacks. They’re ugly, slow, break when used with other plugins, don’t have good keyboard shortcuts, and display tons of useless buffers I don’t care about.

                          Here just the bold part (my emphasis): You’re ideal keybindings are always two steps away:

                          1. a good keybinding
                          2. a define key

                          you might guess that the real art is in the first step.

                          They look super efficient since they’re furiously typing things or navigating directories, but often the file they are opening is one that they looked at just a minute ago and would have taken me a single keystroke to switch to.

                          I would want to claim that most text editing doesn’t consist of “switching between directories and files”. Then again, narrowing by typing the name really doesn’t that that much time compared to a “single keystroke” (that’s still limited to only 8 buffers and requires a possibly diagonal keystroke from control to 7 for example). Especially with extensions/external tools like counsel-rg, jumping anywhere in a project is really easy.


                          Anyway, this had gone on for too long – it’s more of a blog post in it’s own right actually. I didn’t even realize how long this became, since I didn’t write in all in one go, but to not just appear as a Emacs maniac, I want to clarify that my main issue is the stance towards software that the author seems to have, especially towards free software as a practical software philosophy, that disturbed me. But in the end, my main point was said in the first sentence: Don’t expect the best when you force one paradigms over another tool.

                          1. 6

                            I’m a power Emacs user (no Spacemacs for me like the author though), and I found myself agreeing with many of his points, but most of all two that are there, but not explicitly spelled out: (1) defaults matter, (2) optimize the common case.

                            Regarding defaults, the best Emacs packages I’ve installed in the past few years is Ivy and its Counsel companions. The reason why I love these packages so is that I have just two configurations for them; otherwise, the out-of-the-box experience is exactly what I want. I’ve put a few of my favorite commands (e.g., counsel-rg, counsel-git, counsel-recentf, swiper, etc.) on easy-to-access shortcuts and that’s the extent of my effort configuring Ivy. In contrast, I tried Helm a few years ago (back when I used Ido), but I quickly gave up because, like the author, I found myself putting in too much effort to get the behaviour that I wanted, and the result was just crappy.

                            Ivy and Counsel are also great examples of optimizing the common case. When I use counsel-rg, it’s smart enough to find the root of my Git project and start the search from there. I didn’t need to configure this and it’s exactly what I want.

                            I agree with your point that you need to use an editor the way it’s meant to be used; but maybe Emacs needs to evolve a bit. I was encouraged by the addition of line-number-mode in Emacs 26: many users requested that feature, some of the old hands pushed back, but in the end it was added to provide a faster and more solid experience for all. There’s currently discussion of a built-in indentation highlighting feature for Emacs 27. I find that this is the kind of work that Emacs needs to do to remain relevant: listen to users, provide the common functionality out of the box, and make the defaults so good that most people don’t need to modify them.

                            1. 1

                              I agree with your point that you need to use an editor the way it’s meant to be used; but maybe Emacs needs to evolve a bit.

                              I don’t see why there should be a contradiction between these two goals. Using Emacs as Emacs is exactly improving on it. But yes, I too think that the defaults are suboptimal, and should be reconsidered – thought I don’t think that this means that the users shouldn’t be invited to modify them.

                            2. 4

                              Don’t expect the best when you force one paradigms over another tool.

                              I think the article is a response to the countless people who think that editors other than Vim and Emacs aren’t as good or efficient, when clearly, Sublime Text is better for the overwhelming majority of people – even including power users. I have used and loved Emacs extensively, and it’s a wonderful Lisp machine, but not a very polished editor. It’s hard to describe; everything just feels a bit clunky.

                              There are plenty of people who give unfair criticism to Emacs, and I don’t like that, but this article is fair.

                              1. 1

                                That argument would make sense, and I would agree, but it was sections like

                                They look super efficient since they’re furiously typing things or navigating directories, but often the file they are opening is one that they looked at just a minute ago and would have taken me a single keystroke to switch to.

                                that (in my eyes) try to imply that Emacs/Vim/etc. are all just editors with a lot of typing overhead, where I had to disagree.

                                1. 1

                                  Sure, I agree that’s more of a matter of preference. But the fact that Emacs doesn’t support tabs (in any non-clunky, non-hacky way) is a good example of how limited it is by its historical baggage.

                                  1. 1

                                    Yeah, there’s a lot of historical baggage, where tabs are the least-bad example. What I think is more annoying is that the point always has to be visible in the current buffer. There’s something about the cursor and the point being connected on older terminal frontends, maybe even with the current curses interface. Or that C-i/C-m/… can’t be rebound without changing tab, enter, etc. does.

                                    The only qualification I would like to add to that would be to keep the architecture/concept of Emacs (as a lisp interpreter with text-editing side effects) mentally distinct from it’s particular implementations – with all it’s achievements and faults on both sides.

                            1. 4

                              Great post. Sublime Text is really the best cross-platform editor, hands down. Clean design, fast, feels lightweight…

                              nearly everything I contributed was fixing a bug or annoyance I encountered while trying to get something done, often writing the elisp to fix an earlier problem.

                              Yes, this is the problem with Emacs… it’s too fun to configure the editor that you don’t do any actual work.

                              1. 34

                                There are two main types of emails on the internet: plaintext and HTML.

                                What about MIME? You can just send both as multipart/alternative, which is what many clients actually do.

                                The former is strongly preferred, but often isn’t set up by default.

                                There is a reason for that: even the most basic typography such as bold text isn’t supported. In addition many clients render with proportional fonts by default, and stuff like aligned tables are essentially impossible in plain text email.

                                Look, I’m not a huge fan of HTML email either, I send plain text emails, but it does exist for a reason, and “always use plain text” without addressing the reasons it exists doesn’t strike me as very constructive.

                                I remember a “text/rtf” MIME type being proposed at some point (IIRC in some RFC, not related to Microsoft’s RTF format) which is essentially a stripped down version of HTML for email. That never really went anywhere though. Something like markdown rendering might also work.

                                1. 6

                                  Interestingly enough Gnus will highlight text as bold in a markdown-esqe way, just like it makes links clickable. After all, Markdown’s syntax was just a (kind-of) formalisation of the style that was commonly used for email exchange.

                                  1. 4

                                    It does /italics/ and _underlining_ too. It also has a whole bunch of other cool features, like linkifying/buttonizing things like C-h v gnus-button-alist RET or (info "(elisp) Integer Basics"). Highly recommend anyone using Gnus to skim through gnus-art.el at some point.

                                  2. 4

                                    text/enriched, RFC 1563. I’m pretty sure Apple Mail used to use it before they switched to HTML.

                                    1. 1

                                      Ah yes, this is what I meant. Thanks. I don’t know why I remembered it as text/rtf.

                                    2. 2

                                      Sometimes I wish that basic formatting, like bold/italic/underlined, were part of Unicode, in the form of characters similar to ANSI escape codes, and you’d be able to use bold text everywhere.

                                      1. 15

                                        𝔜𝔬𝔲 𝔠𝔞𝔫.

                                        1. 4

                                          Please don’t do this, it badly breaks screen readers.

                                          1. 4

                                            It could say mathimatical fraktur “you can” end mathematical fractur or something. I mean honestly this also makes screen readers a pain for reading mathematical texts as well so I don’t think that it’s completely reasonable to call this “working as intended”. It’s really working in the laziest and simplest possible interpretation. The goal shouldn’t be to only use characters that screen readers currently support, it should be to fund and sponsor screen reader development such that they can be used. If each character over and entire word or sentence uses a character modifier, it’s really stupid for it to repeat it over and over. Additionally, you don’t need to say “Mathematical Fraktur” because there’s only one Fraktur, kinda hinting at how this screenreader is busted. NVDA has a thing where you can flip on to normalize the characters, which is a perfectly sensible solution.

                                            It is important to point out that it does badly break voiceover though, and probably JAWS so good catch. This is coming from someone who uses screenreaders at times. Yes it sucks to have a busted screenreader, no the solution is not to avoid using anything that breaks the busted screenreader.

                                            1. 4

                                              Yes it sucks to have a busted screenreader, no the solution is not to avoid using anything that breaks the busted screenreader.

                                              Totally – but also we have a really well-supported near-universal markup language that works for making text bold/italic/underlined right now and not just for latin letters and it also works well with all sorts of existing display and indexing systems and MUAs and MTAs and it’s called HTML.

                                              1. 2

                                                fair. When I don’t have it I’ll probably resume abusing unicode.

                                        2. 3

                                          you can encode underlined and bold text with overstriking. for example a bold a would be a^Ha and an underlined b would be b^H_ . i wouldn’t do it in email though.

                                        3. 2

                                          Microsoft Outlook actually supports “Rich Text”

                                          https://support.office.com/en-us/article/change-the-message-format-to-html-rich-text-format-or-plain-text-338a389d-11da-47fe-b693-cf41f792fefa

                                          Which they claim is supported only by:

                                          Microsoft Exchange Client versions 4.0 and 5.0

                                          All versions of Outlook

                                          1. 2

                                            Yes, that’s the RTF-based format Exchange used to use.

                                        1. 35

                                          …and following Betteridge’s law of headlines, even the author says the answer is no (albeit in the footnote at the end of the article, behind a door with a sign saying “beware of the leopard”).

                                          1. 6

                                            Well that is the Headline Answer Department.

                                            1. 1

                                              Is this really an example of Betteridge’s law? The author paints a picture for us, one that might or might not be true. It’s not a simple “no” answer.

                                              1. 5

                                                😈 I don’t actually believe it was a false flag…

                                                Yes.

                                                1. 0

                                                  But my point is that the article doesn’t conclude that the answer is no, unlike typical Betteridge’s law examples. Rather, it presents a good argument for the opposite (even if the author admits that he doesn’t believe it).

                                                  You can’t summarize the article with “no”, and you can’t change the title to “Go’s Try Proposal Wasn’t a False Flag”, making this not an example of Betteridge’s law, in my eyes.

                                                  1. 6

                                                    You’re right, this is all reverse psychology. The author is actually playing 10 dimensional chess with our minds. Betteridge’s law doesn’t apply in the cases where you thought that think that you thought but you didn’t think that you thought but instead was made to think that you had thought that you think so. It all makes sense now.

                                                    1. 1

                                                      the cases where you thought that think that you think

                                            1. 13

                                              except… that’s not what a false flag is…

                                              A false flag operation is flying/painting/wearing someone else’s flag with intent to deceive an adversary about who is engaging in the operation for some strategic purpose. (Usually to keep the enemy off their guard or avoid political blame.) The who is important. The Go team neither raised nor withdrew the propsal while pretending to be someone else.

                                              What TFA describes is merely ulterior motive.

                                              Further, and I have zero horses in this game since I don’t know Go, the propsal review committee dude stated pretty well why the proposal was being declined: communication and collaboration around the proposal sucked and it was either solving a problem that a lot of people didn’t believe was actually a real problem, or it didn’t solve the problem well enough, I can’t tell. Hard to see how that’s a bad thing. First rule of language improvements should always be, first do no harm. Far better to miss a potentially useful feature than to have to deal with the consequences of a poorly executed one for decades after.

                                              1. 4

                                                At this point, I think the meaning of “false flag” has faded so much that almost no one bat an eye when reading the article.

                                                Further, it’s not just a proposal with an ulterior motive; the proposal in itself was false and untruthful (if we accept the theory).

                                              1. 1

                                                On OpenBSD, I usually edit man pages with vi, convert it to text (with ANSI escape sequences) and view it in my modified version of less that reloads the file in-place upon receiving SIGHUP.

                                                Via watch, the last two steps are performed whenever I save the man page.

                                                But if I had a Mac, I think I’d use this program.

                                                1. 2
                                                  1. “ets” or “et cetera”
                                                  2. “libb”
                                                  3. “char” (as in charcoal)
                                                  4. “eff-sick”
                                                  5. “skeema” / ”skeemas” probably
                                                  1. 4

                                                    Here is a version I did in C: https://github.com/jocap/repl.c

                                                    1. 1

                                                      Nice and clean. :)

                                                    1. 16

                                                      Using a static site generator means that you have to keep track of two sources: the actual Markdown source and the resulting HTML source.

                                                      This is not representative of my experience. I can delete my generated /public folder and re-run Hugo again to generate a new site. I only have to keep track of my source.

                                                      Finally, you constantly have to work around the limitations of your static site generator.

                                                      This is very true. I use Hugo, and it changes very fast, often breaking some things. Also, it started out as a blog site generator, and adding features to make it a generic site generator has required paying attention to releases and updating my custom theme to prevent my site from breaking.

                                                      But how can I then keep the style and layout of all my posts and pages in sync?

                                                      I actually think this is kind of neat. I like the idea of a web of interconnected pages each similar but a little different, evolving over time. It reminds me of the old web.

                                                      🤔 I should redesign my website.

                                                      1. 5

                                                        Hugo is dang frustrating. Recently I accidentally updated it from the distro, jumping ahead 15 versions. At some point they made pygments go from rendering my site in <100ms to rendering in 15s. Then I tried switching to Chroma, but it turns out there’s no extension system, so to tweak my code highlighters I needed to manually compile Chroma and then manually compile Hugo.

                                                        Then I found out that you use a tweet shortcode, you can’t preview your site offline. That broke me and I went back to a 2016 build.

                                                        1. 1

                                                          I feel you. That is why I use specific versions of hugo for my site, not one supplied by a distro.

                                                          Also I recommend using hljs. I like it (progressive enhancement) better than the pygments. I’ve had some problems with pygments in the past, but I cannot recall it. (Also had some minor annoyances with hljs, but I’m generally OK with it).

                                                          Regarding the tweet shortcode… I never used that (I prefer screenshots of tweets and links, as I do not trust linking third party sources. They can change/disappear, and it would ruin my point). Could you link an issue or something so I could understand it? It made me curious.

                                                          1. 1

                                                            Yeah, I think I’ve been lucky in that not much has broken for me.

                                                            The biggest issue I ran into a couple of months ago was a change that prevent me from using a / in a tag name to fake sub-paths. I used this to match my old URL schema from before I was using Hugo.

                                                            Hugo removed (”“fixed””) the tag issue, so I updated my blog to use another solution, BUT then Hugo reverted the change. Ha!

                                                          2. 4

                                                            I used to write my blog (for the past 19 years) in raw HTML. Then a few months ago I implemented my own markup language (based upon Orgmode with a lot of extensions for how I write posts), but I still only keep the rendered HTML, not the original source. That way, I’m not stuck with supporting outdated versions of my markup formatter.

                                                            1. 2

                                                              This is not representative of my experience. I can delete my generated /public folder and re-run Hugo again to generate a new site. I only have to keep track of my source.

                                                              But even then, you must keep both the source and the result in your head, because you have to worry about how your Markdown will be translated to HTML (dependent on the version and implementation of Markdown) and how your posts will be arranged in public/.

                                                              This is very true. I use Hugo, and it changes very fast, often breaking some things. Also, it started out as a blog site generator, and adding features to make it a generic site generator has required paying attention to releases and updating my custom theme to prevent my site from breaking.

                                                              This is a great summary of the problem! Websites created with static site generators are quite fragile.

                                                              1. 4

                                                                But even then, you must keep both the source and the result in your head, because you have to worry about how your Markdown will be translated to HTML (dependent on the version and implementation of Markdown) and how your posts will be arranged in public/.

                                                                I’m still not aligned with you on this. I do have to think about my HTML when I am building my custom theme, not when I’m building the site or uploading it.

                                                                The only thing I have to consider when creating new content is where my feature image is located and use the correct path in my content’s meta data. The thumbnails and their use in the page are auto-generate, and the content is put where it needs to be, and related links menu items and homepages are all updated per my theme.

                                                                1. 1

                                                                  I suppose it depends on what type of content you write, but I find it hard to maintain things like footnotes and tables across different implementations of Markdown and static site generators (or even the same generator but a different version). Not to mention things like elements with custom classes and inline HTML.

                                                                  What I mean is, if you’re writing HTML directly you always know what the resulting HTML will be. If you write in Markdown, you always have to spend time thinking about what the HTML will look like. You usually have a good enough idea, but you could be wrong.

                                                                  1. 1

                                                                    What I mean is, if you’re writing HTML directly you always know what the resulting HTML will be. If you write in Markdown, you always have to spend time thinking about what the HTML will look like.

                                                                    I think this is why I hate ORMs. Instead of just writing the SQL I want, I have to learn how to express it in whatever weird interface the library exposes – assuming it’s even expressive enough.

                                                                    1. 1

                                                                      Is Markdown really in that much of a state of flux?

                                                                      I’m using the OG Daring Fireball edition, I do know that there’s been some work to integrate stuff like footnotes and ToC (which Gruber opposed on philosophical grounds). It’s been frozen since… 2011? 2004

                                                                      I’d rather use a tool that made it easier for me to write a blog post every day (let’s face it, every month more like it) than worry about future incompatibility in the HTML rendering tool I’m using.

                                                                      1. 1

                                                                        Is Markdown really in that much of a state of flux?

                                                                        Not Gruber’s Markdown, but yes, certainly if you’re switching between implementations (or versions thereof) or static site generators (or versions thereof) that use different implementations.

                                                                        I’d rather use a tool that made it easier for me to write a blog post every day (let’s face it, every month more like it) than worry about future incompatibility in the HTML rendering tool I’m using.

                                                                        Indeed – that’s exactly how I feel writing posts in HTML. Nothing can go wrong, no matter what system I’m using or what programs I have installed.

                                                                  2. 2

                                                                    Websites created with static site generators are quite fragile.

                                                                    Only if the site generator ever changes. I use one written in Clojure that has not been changed in years.

                                                                    1. 1

                                                                      That is why I made my own. A few lines of Python and your ready.

                                                                    2. 1

                                                                      I actually think this is kind of neat. I like the idea of a web of interconnected pages each similar but a little different, evolving over time. It reminds me of the old web.

                                                                      🤔 I should redesign my website.

                                                                      This cracked me the hell up :D

                                                                    1. 12

                                                                      This appeals to me. However:

                                                                      But how can I then keep the style and layout of all my posts and pages in sync? Simple: don’t! It’s more fun that way. Look at this website: if you read any previous blog post, you’ll notice that they have a different stylesheet. This is because they were written at different times. As such, they’re like time capsules.

                                                                      While that’s kind of cool in its own way, I don’t prefer it. Especially when it comes to a site menu.

                                                                      My first web sites were hand-coded HTML. My motivation to learn PHP was that I wanted a consistent menu across all pages, and copy-paste was not maintainable, so I landed on PHP’s include. From there it was down the rabbit hole to becoming a web developer.

                                                                      I use a static site generator now for nathanmlong.com, which I mostly write in Markdown. It wouldn’t kill me to write HTML, but I don’t want to copy and paste a menu everywhere.

                                                                      1. 8

                                                                        Case in point about the downsides, the cv link is correct on the author’s homepage. It is not correct on this page. That’s an easy mistake to make, and I’ve definitely made versions of it. However, it’s much more pleasant to fix when you can fix it everywhere by updating a template.

                                                                        1. 3

                                                                          Thanks for the heads up :-)

                                                                          Edit: Solved by sed -i 's,href="cv",href="../cv",' */*.html. In my mind, simpler than a CMS or static site generator.

                                                                          1. 3

                                                                            “Simpler”, sure, maybe. At least for now. But maybe it won’t always be such a trivial sed command. Maybe you wrote the html slightly different in certain spots.

                                                                            A simple or custom-built static site generator would avoid mistakes like this altogether. You could have one file for your head element. Nicer menus, sidebar, etc. And you could still write most or all of it in pure html if you wanted to.

                                                                            Simpler doesn’t necessarily mean better.

                                                                            1. 1

                                                                              If you need the same template for all of your pages, then yes – a templating engine is a good idea.

                                                                              But if you don’t need this, then a templating system makes the process unnecessarily complicated. Creating a template in a special language and fitting all pages to the same mold takes much more effort than most realize, especially in comparison with just writing single HTML pages.

                                                                              For example, look at my software page. I have some fancy HTML and CSS to render sidenotes in the margin (unless you use a small screen). Because the page is “self-contained”, I don’t have to worry if I ever edit the style sheet for other posts. But if I used a templating engine, I would have to worry about it.

                                                                        2. 5

                                                                          Everything old is new again (or something like that)… you can always use server side includes for common elements.

                                                                          1. 2

                                                                            I like keeping my content and the final HTML site separate, and using the content to generate the site. It makes my content more flexible, but also makes generating the global menus easy, which is important to me so that my readers get a good experience.

                                                                            1. 2

                                                                              I haven’t actually used it but the caddy web server appears to have built-in templating features: https://caddyserver.com/docs/template-actions

                                                                              1. 1

                                                                                Dreamweaver supported keeping sites’ themes consistent when I tried it long ago. It was templates or something. Maybe one of the open editors can do that, too. Otherwise, it would be a good feature for them to add.

                                                                                1. 1

                                                                                  I hear you. I think the obvious solution then is to use something like PHP or SSI. Of course, that’s another layer of complexity, but not as much as a static site generator or CSS.

                                                                                1. 16

                                                                                  One benefit of using a CMS or site generator is an automatic RSS feed. Hint: this blog currently has no RSS feed ;)

                                                                                  1. 5

                                                                                    I was really considering writing a blog that actually uses an RSS feed as the source of truth, then uses XSLT to generate the HTML…

                                                                                    1. 6

                                                                                      Pro tip: use an Atom feed. RSS 2.0 is pretty loose, spec wise.

                                                                                      1. 1

                                                                                        This brings back old memories. Back in 2006, I think, I used a CMS called Symphony that would generate XML and then you’d style your blog using XSLT. Since I was a junior developer back then, it was quite handy to learn XML and XSLT, which were still the rage back then :-)

                                                                                      2. 2

                                                                                        That is very true, but I’m working on a shell script to generate a feed from HTML.

                                                                                        Edit: Here’s a preliminary version of the script (results).

                                                                                        1. 3

                                                                                          Be careful your shell script doesn’t turn into a static site generator!

                                                                                          1. 1

                                                                                            Indeed! I saw it coming too, so now I’ve switched to a PHP script (feed.php) that generates it on the server from my index.html, so that I don’t have to worry about generating it :-)

                                                                                      1. 1

                                                                                        I think a lot of the difficulties that people have with static sites is really a problem with the generators. The static site generator I use — ikiwiki — predates the current trend for static site generators (Hugo, et al). It has its quirks, and I’m concerned that it is fading into abandonware, so I would like to move elsewhere. But all the newer, popular ones seem to have enormous design flaws (complete lack of any kind of internal linking support; rigid ideas about source file layout…), so I’m stuck with IkiWiki for the time being. All the problems I have with IkiWiki however, are “internal” matters, and are not particularly reflected in the output, which I continue to be very happy with.

                                                                                        1. 2

                                                                                          But all the newer, popular ones seem to have enormous design flaws (complete lack of any kind of internal linking support; rigid ideas about source file layout…), so I’m stuck with IkiWiki for the time being.

                                                                                          A good summary of the state of the majority of static site generators, even the best and most popular ones. I hope you that ikiwiki continues to work for you, or that you find something else!

                                                                                          1. 2

                                                                                            Why does it matter if it’s “abandomware”? If it works, keep using it. What’s the obsession with continuously changing software?

                                                                                            1. 2

                                                                                              It might not run after a while. If it’s written in standard portable C, it’s likely to keep working for a long time. But if it’s written in, for example, Python 2, lots of distributions are phasing out Python 2 in favor of Python 3.

                                                                                              1. 2

                                                                                                Bit rot. Bugs are not getting fixed. Patches are not being reviewed or applied. Long standing paper cuts continue to bleed. Unfortunately network software can’t generally stand still, because it needs to adapt to the changing circumstances it is deployed upon.

                                                                                            1. 3

                                                                                              I write in straight-up HTML all the time, thank you very much :)

                                                                                              1. 2

                                                                                                :-)

                                                                                              1. 2

                                                                                                Seamonkey is like the Windows XP of web browsers. Horribly out of date but still hanging on despite all common sense…

                                                                                                1. 5

                                                                                                  I don’t agree. In terms of functionality and interface, it’s one of the best browsers out there, and it’s one of the only WYSIWYG HTML editors out there.

                                                                                                  I think its continued existence is healthy for the web ecosystem; I’m afraid that sentiments like the one in your comment are increasingly leading to a monoculture controlled by Google.

                                                                                                  1. 1

                                                                                                    Preaching to the choir, buddy. I used Seamonkey back when it was just called “Mozilla” and “Netscape Navigator” before that. And then on and off once Firefox became a thing. It’s sad that they’ve basically just been playing catch-up to Firefox since.

                                                                                                    1. 1

                                                                                                      Well, I didn’t know you were part of the choir. It didn’t seem that way from your original comment.

                                                                                                      It’s sad that they’ve basically just been playing catch-up to Firefox since.

                                                                                                      Yes, Seamonkey is a great piece of software, and it’s sad that they don’t have enough resources or developers to properly maintain and develop it.

                                                                                                1. 3

                                                                                                  If you fancy this, you might like sblg (disclaimer: it’s mine), which merges together HTML pages—template and content—with smarts to handle navigation, tags, and so on. You don’t even need to do the content in HTML: I do many of mine in markdown, bracketing the md->html output with the article tags sblg needs. I’ve used this for slide presentations, websites (e.g., Not Awful UW Photography, and so on. All managed by simple Makefiles.

                                                                                                  1. 2

                                                                                                    I like sblg, and I think it’s better than most static site generators (especially because it doesn’t use Jekyll’s awkward “front matter” system), but for my purposes, most of the same problems still apply.

                                                                                                  1. 2
                                                                                                    export PS1="%(!.=> .-> )"
                                                                                                    export RPS1="%1~"
                                                                                                    ``` and I would show you what that looks like but lobsters collapses all the spaces between the two parts.
                                                                                                    
                                                                                                    I use zsh, without any extension framework, so it's pretty fast. The current directory name is on the right and an arrow is on the left (double stem for root).
                                                                                                    
                                                                                                    It's simple. Everything else I might want I can easily type, and I find that the slight effort in typing say `whoami` or `pwd` is worth more than a cluttered prompt (even if the clutter is useful). Most of the time I can remember what machine I'm on because I don't use many.
                                                                                                    
                                                                                                    1. 0

                                                                                                      FYI: Lobsters doesn’t support GitHub’s special ``` code block syntax.

                                                                                                      1. 1

                                                                                                        That’s not the case, at least on my end.

                                                                                                        I did indeed mess up the formatting by ending the backticks on the same line as the next paragraph, but it’s definitely monospaced.

                                                                                                        On another note, I didn’t know it from Github, which I’ve never significantly used, but from Pandoc.

                                                                                                        1. 1

                                                                                                          Oh, it seems you’re right! I saw the weird formatting of your post and thought that Lobsters didn’t support the syntax. Thanks for clarifying!

                                                                                                          1. 1

                                                                                                            no worries!

                                                                                                            I would fix it, but I can’t find an edit button, if there even is one.

                                                                                                            1. 1

                                                                                                              I think you can only edit your post for a few minutes after publishing it.

                                                                                                              1. 1

                                                                                                                It’s a bit longer than a few minutes but there is a time limit.

                                                                                                    1. 2

                                                                                                      I thought I’d share some of my thoughts on HTML and static site generators. In this post, I explain and argue for what works best for me.

                                                                                                      1. 2
                                                                                                        PS1='${PWD##+(?)/} $ '
                                                                                                        

                                                                                                        My prompt shows only the basename of the current directory. The substitution above removes everything up to and including the final forward slash in PWD, except if there is only one slash in it:

                                                                                                        / $ cd home
                                                                                                        /home $ cd john
                                                                                                        john $ cd prj
                                                                                                        prj $
                                                                                                        

                                                                                                        I find this keeps the prompt short enough, while still helping me keep track of where I am.

                                                                                                        1. 1

                                                                                                          This is really neat. It’s fascinating how much PHP has changed in its life and how open to change the developers are still.