1. 17

    I’m missing some context: what are the shortcomings of Markdown and/or LaTeX that this proposal will fix. Thanks.

    1. 4

      Same here, it was not really clear to me what problem the new format is trying to solve.

      It looks like a literate programming language specialized to output HTML. Does it mean that a new interpreter / compiler / stdlib has to be written?

      It looks like a prerequisite to understand this text is to read up on all the bullet points presented in the “Summary of inspiration” section.

      The control character codes are reused because they are hardly used with web and HTML

      this was my main clue and it’s quite late in the document

      1. 2

        It’s better to turn it upside down and think that we can improve upon Markdown. We definitely have to support and work with it quite some while, just like other common formats that we have now.

        I’ve used markdown every week, so I am well-aware of how it works for me and against in writing text.

        Markdown assigns meanings to character sequences: '#', '=', '-', '**', '_', '~~', '*', '1.', '+', '[', ']', '(', ')', ']:', '![', '>', ...

        The implementations parse these by block processing over the text with regular expressions. You can escape those sequences when you use them in the text, but it means that you got to stay on your toes when introducing these elements. Usually you catch it in previewing your message. There’s small differences in how different markdown implementations parse text that will cause inconvenience when switching among them.

        Markdown’s grammar of things it understands is fairly small. You get headers, links, few ways to mark text, images, quotes, lists, tables. You fall back to html when it doesn’t understand things, but it results in a weird, html-specific document. Extensions to markdown are implementation-specific and do not translate between them. This can result in the texts being monotonic as you tend to stick into what markdown offers.

        Formatting-characters trip ordinary users and frustrate them. This happens no matter how many there are of them. The proposal removes the need for this, as well as for the use of escape-characters. The idea would be to produce a form of rich-text editing that augments, but doesn’t obscure the existing structure of a text document.

        I’ve left open the choice of a meta-language, thinking that you’d use this interleaving existing programming languages and plain text together. In the web you’d restrict this to some nice, constrained, standardized declarative language that has the amount of annotations you prefer to allow.

        1. 7

          To me the attraction of markdown (and latex) is that its really just plain text. What I understand is that documents in your proposal are binary documents readable in the same way Microsoft word documents are readable: islands of text interspersed by encoded formatting directives.

          1. 1

            I cleaned up the demo that I did and pasted the files into the github. I used it in gvim, but also tried in vim. Probably from the vim it doesn’t do clean pastes without any help from the terminal.

            https://gist.github.com/cheery/2a34769a2398a345ad77235e8d1c3693

            I guess microsoft word documents are harder to read as plain-text without a dedicated editor.

            1. 2

              Some thoughts that come to mind

              1. Is the formatting going to be restricted to one or a few characters, or could we have strings of characters representing particular formats, like highlighting, colors, styles etc.
              2. Will there be complexity like macros, with variables (i.e. a DSL behind it)

              Depending on how this is setup I fear you will end up reinventing one of the document formats from the 1990s and 2000s and on (e.g. Microsoft doc format). You’ll need a particular piece of software to view the document as intended. Without this software, depending on the complexity of the intent of the formatting code the text part of the document could become unreadable. Pretty soon there will be viruses masquerading as such documents and so on and so forth.

              I guess I haven’t understood enough of this scheme to be convinced that we haven’t visited this before and found it as unsatisfactory as anything else, if not more.

              1. 2

                I guess that if you stretch it, you could have something like [i color=red:This text is red], but it’s probably something I wouldn’t like to add. I would prefer that the occurrences of structures may be indexed and then referenced in the program text portion to attribute into them.

                For example, if you used a Prolog-like language in the program portion, it might look something like this in the text editor:

                Hello [span.marked:Word]
                $ color(span.marked, "red"). ¤
                

                It’d probably take some time for people to hack the support for the format into their languages.

                There’s real concern for what you’re saying though. I can imagine how this could turn into something that can be no longer properly read with a text editor. I’m convinced that an eager enough person, not ready to sit down and think, would easily turn this into yet another wysiwyg. We’ve got numerous records of similar disasters. :)

                I did look at the .doc format from the 1990s. It’s been divided into 128-byte sized blocks with the text dropped somewhere in the middle. It looked like you’d be perhaps able to leak information with it. But also you couldn’t pop it open in a text editor and expect to be able to edit it without corrupting the file.

          2. 5

            Markdown was never meant to be something like {SG/HT/X}ML, it was meant to be a lightweight markup language for stuff like comments and blog posts. The fact that you can fall back to HTML is great in my opinion, it means I can integrate those features into my writing quite seamlessly (mostly anchor links and tables).

        1. 3

          I’m confused and disappointed by the reactionary, defensive comments here. Who’s ranting or yelling? Is the author accusing someone of stupidity if they cannot understand complex comparison expressions?

          I’m not ashamed to admit we enforce this rule at work. It yields consistency and simplicity that is important for us to cut out unnecessary mental overhead during code review. Across dozens of contributors and hundreds of repositories, it makes a difference. And happily, not one person of our team has rejected the rule out of arrogance that they are “smart enough” to eschew it.

          I think of it this way: if someone has written a complex boolean expression that is deeply nested and mixes the and/or/not operations arbitrarily, I suggest they apply De Morgan’s laws and simplify the expression into a normal form. It isn’t that I cannot understand a complex, non-normalized expression—I don’t want to have to!

          That’s all this rule is, a normal form for comparisons.

          1. 1

            The linked post contains the sentence

            This is such a nice way to express numbers I wonder why programming languages allow for the greater than sign ( > ) at all.

            If this isn’t indicative of a piece that’s more akin to a rant than a reasoned discussion, I don’t know what is.

            I fully support coding conventions that encourage consistent usage of range operators, but to go from there to actually removing a character from the ASCII set to address what is, in the grand scheme of things, a rather minor issue is pretty extreme.

            1. 1

              I don’t see it as lengthy, impassioned, or angry. It meets exactly none of the criteria I would use to qualify ranting. It’s merely controversial.

          1. 3

            This week I learned Microsoft is also making Android apps/games. I never thought I’d see that day. Perhaps the two are related?

            1. 7

              Microsoft has been making Android apps for a long while. The entire Office suite, Cortana, Outlook, and others have been available for years, plural. This would be comparably new, but the thing I’d cite as the precedent wouldn’t be Android apps, but rather Electron apps (notably Visual Studio Code and the Azure data browser).

              1. 1

                The office apps I use for work on Android (Outlook and OneNote) are polished apps.

              1. 1

                TIL SCSI was used for things like scanners!

                1. 2

                  There are plenty of older higher-end scanners who require a correspondingly old computer with SCSI and an older OS to run the software.

                1. 3

                  I attempted at quickly created a fork with the proper logic to grab private photos however it appears that you need to go through the annoying OAuth process to grant access to your account, to your own Flickr app to request private photos.

                  I don’t understand this complaint. Annoying or not, that’s the way it should work. It’s really not too hard to setup, either.

                  1. 3

                    You’re totally right that It’s not hard but you have to admit it is annoying to implement an OAuth flow for the Nth time. This would also be different if they had higher quality language bindings that helped you do this versus community supported ones where I’m afraid my API key is going to be leaked to someone else.

                    It’s not so much a complaint about setting up an OAuth process for oneself, but the fact that Flickr doesn’t provide an API key for one’s own account access. I’m not building an app, I just want programmatic access to my own data. Something that many other API / services provide today.

                    1. 2

                      Many years ago I used the Perl Flickr module to write my own downloader. It was a pretty involved process, that was documented obscurely by Flickr, but it was possible. It allows me to download all my pics and metadata, even private ones.

                      Something that many other API / services provide today.

                      Flickr IIRC was one of the first mainstream services that allowed API access. I agree they might have kept it up to date and streamlined it, but there’s been a lot of churn at Flickr with regards to ownership and I don’t think it’s been a priority.

                      Right now the biggest image sharing site (Instagram) has no user-accessible API and is actively hunting down and closing 3rd-party apps that allow stuff like automated uploading.

                  1. 14

                    I feel like a hipster saying it but I’m gonna do it in rust.

                    1. 6

                      I think the hipster choice would be rifle through your dad’s 486 and do it in Pascal.

                      1. 5

                        Rust was all the rage last year… and the year before that people seemed to love Elixir. To be a true hipster you need something so cool it hasn’t sold out yet.

                        1. 4

                          I’ll be using a new language that you probably haven’t even heard of yet.

                          /s

                        2. 1
                          1. 1

                            Hey same here! Figure it’s a good way to learn a new language

                            1. 3

                              I solved all of last years problems in rust and you could say it wasn’t really that fun - rust (just like c++ in previous years) was generating fast enough code so that I never really had to optimize anything ;)

                          1. 4

                            While the new design looks really good, is there a reason why the contents of the ‘community’ pages differs so much? In particular the omission of IRC channels (likewise for the ‘Social’ at the bottom of the page). Is this indicative of an official shift away from IRC to Discord?

                            1. 4

                              Seeing the discord logo at the footer was probably the most saddening part of this design.

                              1. 2

                                I’m not a fan, but there’s ton of practical advantages that Discord gave us. I prefer Zulip, but they lacked crucial features when we evaluated. (Now fixed)

                                Also note that we only publish resources our moderation team can cover and that one is stretched thin currently.

                                1. 2

                                  Not everyone on Discord is a gamer Nazi. Joining a community that’s actually filled with decent people gave me an insight into the good parts of Discord, compared to IRC and compared to Slack (granted I don’t have that much experience of Slack).

                                  Good stuff includes:

                                  • pinnable topics with multiple lines
                                  • a great mobile interface
                                  • persistent identities (not 100% if this is universal thing though)

                                  The game-centric stuff is a bit off-putting but if it helps keep the servers running I’m fine with it.

                                  1. 4

                                    I don’t care about the other users on discord. I care that its a proprietary memory hog application that connects to a centralized server.

                                    1. 1

                                      Thanks for clarifying your viewpoint.

                                    2. 3

                                      Seeing people assume that the biggest problem with Rust’s adaptation of Discord is that it’s also used by “gamer Nazis” was probably the saddest part of this comment thread.

                                      (The biggest problem with Discord is that it is a closed-source proprietary platform used as a primary means of communication for an open-source project, that the developers of that project don’t seem to have a problem with. There’s no reason in principle why it’s bad for Rust-related chat to use the same technology that gamers with politics that some people don’t like use.)

                                      1. 2

                                        The funny thing is that I don’t even know what “gamer Nazi” is even referencing in the context of Discord. (A Google search shows some interesting results.) To my uneducated eye, Discord is just another chat platform. I like IRC personally, but it’s a weakly held preference that probably has more to do with familiarity. Although, one of my favorite things about IRC is that I can keep logs in a plain text format and easily grep them. I use that functionality a lot. I don’t know how to do that with Discord. Nevertheless, I hang out there because other people are there, and we make sure it’s just as friendly as any other official Rust space.

                                        1. 2

                                          As sad as I am to say it, the reason for most working groups (not all!) ending up on Discord is literally: it works and has mobile clients that notify properly. It’s better than Slack, exposes less personal information and actually has moderation features.

                                    3. 2

                                      A huge part of the community page was outdated and frequently checking it became unfeasible. This includes a lot of the IRC channels. With Mozillas IRC channel becoming more and more a target for spammers and such, there is also a move away from them, especially for project members. You can chat there, but there is a high likeliness that you can’t interact with the project if you want. It’s indicative of a practical shift. By policy, the Rust project does not enforce any place to chat.

                                      Also, the old style of the community page was great for a young community. We could literally show everything on there. Paradoxically, that becomes unfeasible when the community grows. A lot of things have moved to other places.

                                      We felt that a lot of the things now present on the page were not well presented before. For example, conferences were not well presented.

                                      Is there anything you absolutely miss from the old page?

                                      1. 3

                                        Hello, there is not something that I miss per se, but I just found it interesting that the contents differed so much - thank you for your clarification on that.

                                        I was not aware of the shift towards Discord. It came as bit of a shock, and while I understand that this is not the correct place to further the discussion, I must confess to be a bit saddened by it (especially with open source alternatives).

                                        Regardless, congratulations once again on the new design!

                                        1. 2

                                          I’m fine with having that discussion, but the short version is: we evaluated a lot of chats and they ranged from functionally broken to lacking features that we need (most notably: moderation). For example, when we evaluated it, Zulip had some very glaring flaws making it hard to use for open projects. (Zulip fixed those in 1.9)

                                          Discord fares surprisingly well there. I’m not happy with the state, but there’s almost no good FOSS tools with a thought through moderations story that work well.

                                          I have a very rough writeup of our experiences there: https://yakshav.es/from-the-rider-down/

                                      2. 1

                                        It’s already been discussed to death. And the answer is: yes, there is an official shift from IRC to Discord. irc.mozilla.org#rust is probably never going away, but having built-in logging and persistence is a big enough deal to recommend it as the default.

                                        1. 2

                                          Matrix/Riot also does these things. Over the last year they have made it a whole lot faster as well.

                                      1. 4

                                        I hope they change the tag line: “Rust: The programming language that empowers everyone to become a systems programmer.”

                                        In my experience, “systems programmer” is used to mean “I write programs that are hard, so I can look down on people who do mere ‘scripting’ programming”

                                        1. 9

                                          I think Wikipedia sums it well:

                                          […] application programming aims to produce software which provides services to the user directly (e.g. word processor), whereas systems programming aims to produce software and software platforms which provide services to other software, are performance constrained, or both […]

                                          Source: https://en.wikipedia.org/wiki/System_programming

                                          1. 3

                                            I’ve just now realized that to me, “systems programming” is basically equivalent to “not having to care about unicode”.

                                            I really like this.

                                            1. 1

                                              So an alternative to find would not have to deal with filenames or directory names that contain Unicode?

                                              Or if you’re writing a database engine, you don’t have to support Unicode?

                                              I’m being a tiny bit sarcastic, but it’s also interesting to investigate the boundary between “user” and “systems” programming.

                                              Edit wording

                                              1. 1

                                                It’s certainly a matter of perspective to a large degree (one developer’s platform is another developer’s application), but from where I sit, yes, find, databases and such are definitely more in the “applications” direction.

                                                The “systems programming” I deal with consists of things like filesystems (please please please don’t shove unicode in there), block storage layers, thread scheduling, memory allocators, etc.

                                                1. 2

                                                  The “systems programming” I deal with consists of things like filesystems (please please please don’t shove unicode in there)

                                                  Hah, doesn’t one of the new macOS file systems do this? IIRC, they require valid UTF-8 and I think even do normalization. With that said, I am not knowledgeable about file systems, so I don’t actually know at which level of abstraction these rules are implemented.

                                                  Anyway, I love Unicode. A significant fraction of the work I’ve done in Rust land has involved Unicode in one form or another. But my area of interest is text search, so that makes sense. Whether that’s “systems” or not, I dunno. ¯\_(ツ)_/¯

                                                  1. 3

                                                    Hah, doesn’t one of the new macOS file systems do this?

                                                    I haven’t really been paying too much attention to Apple recently, though it certainly seems believable – their filesystems have been case-insensitive since time immemorial, so madness of that sort was already well-established there…

                                          2. 6

                                            I thought this was a really great description of both the ambiguity of the term and its origin.

                                            http://willcrichton.net/notes/systems-programming/

                                            1. 4

                                              Thanks for sharing. This article does a good job of exploring why this is such an ill-defined term. In particular I find the early pre-Osterhout definitions to make much more sense than the modern usage. His dichotomy really seems to have set the discourse back significantly.

                                              1. 1

                                                Huh, I thought the definitive treatise on the nature of systems programming was this.

                                              2. 6

                                                We’re not fully happy with the tag line currently and happily take suggestions. “systems programming” being a fuzzy term is one of the problems. The spirit is definitely what we want, but if someone were to find a better way to phrase it, I’d be very happy.

                                                1. 6

                                                  My translation of “systems programmer” is “we don’t do GUIs”. ;)

                                                  1. 3

                                                    Yet many GUIs outside of the web context are written in systems programming languages :)

                                                    1. 1

                                                      Sounds like rust alright.

                                                    2. 4

                                                      I like the spirit of the tagline. Systems programming is a real thing, it’s genuinely difficult to do correctly - and Rust is helping make that situation better, so that more people can write less buggy systems code.

                                                      1. 1

                                                        This is cynical, although sometimes true.

                                                        1. -6

                                                          Systems programming is genuinely difficult in a way that, frankly, GUI programming just isn’t.

                                                          1. 10

                                                            If you just switch “GUI programming” and “Systems Programming”, this statement checks out, too. Modern GUI programming with backends and networks is a complexity beast. Add translation and such on top and it becomes incredibly hard.

                                                        1. 6

                                                          I do not find the words “microphone”, “audio”, or “sound” anywhere in this pdf. Are you trying to suggest something?

                                                          1. 3

                                                            Maybe OP is… hearing things?

                                                            1. 2

                                                              Sorry forgot to link the audio part in the description. Somebody took the research and extended it to infer key timings from the keyboard sound

                                                              1. 2

                                                                On a page labelled Ferros, I found one called KeyTap plus a related work about SSH that was labeled as an academic paper. I think he meant to submit the first. @yogthos can use this link if that’s the case.

                                                              1. 5

                                                                People who’re participating, what languages are you using? I’m starting to learn Typescript, so I’m thinking of using that for practical reasons, though I’d probably rather do OCaml or something a bit more esoteric.

                                                                1. 8

                                                                  Last year I used 6 languages, and this year my goal is to use 12! Carp, Fennel, and Reason are some new-to-me languages I hope to touch on. I will likely do most of the problems in clojure because I enjoy manipulating data-structures in it so much, but rarely feel like it’s the practical choice for my projects.

                                                                  1. 2

                                                                    So, the 12 languages of Christmas?

                                                                  2. 6

                                                                    If it is fine with you to not be able to complete a task in 24h than AoC is a great way to learn new language.

                                                                    1. 6

                                                                      I’m learning Clojure and liking it so far, so my AoC has a perfect timing this year to be full of parenthesis

                                                                      1. 2

                                                                        Let’s compare solutions!

                                                                      2. 3

                                                                        Planning on giving ReasonML and Elm a shot.

                                                                        1. 3

                                                                          I did 2015 and 2017 in Racket, and had a pretty good time. I tried 2016 in Erlang, and really struggled.

                                                                          This year, I’m going to try it with Pony.

                                                                          1. 2

                                                                            As much as I am tempted to try ReasonML, I wrote a modest amount of Elixir back in 1.2 (three years ago, and stable is now 1.7), and have an upcoming need for it again. Will probably do that to brush up on any changes.

                                                                            In an attempt to make it challenging is I am going to try and pick up Emacs while doing so. I have heard that the lineage inherited from Erlang provides a decent ecosystem in Emacs for other BEAM languages. Does anyone know if that perception is correct?

                                                                            1. 1

                                                                              Cannot edit my post anymore, but it looks like not only is that the case, there are multiple Elixir-specific packages as well (elixir-mode and alchemist).

                                                                            2. 2

                                                                              I’ll probably take a shot with Haskell again, or possibly F#.

                                                                              1. 2

                                                                                Crystal. Figured I should brush up on making actual programs instead of one-off scripts and thus style and “architecture” will be my focus.

                                                                                1. 2

                                                                                  Pretty ballsy that a project will try to reclaim that name from the horror that is Crystal Reports. Kudos!

                                                                                2. 2

                                                                                  I use Perl 5. Life + day job doesn’t give much time for actual programming so I’m really happy to just try to solve problems in a language I know well.

                                                                                  Plus Perl makes parsing the problem input a breeze.

                                                                                  1. 1

                                                                                    I’ve been looking into D a bit recently so going to give that a try.

                                                                                    1. 1

                                                                                      I think this year I’ll forego going for leaderboard, and use the opportunity to brush up on my Elixir skills. I haven’t had a good chance to touch it for quite a while, so it should be a good refresher. I really enjoy thinking in and solving problems with the toolset available in Elixir.

                                                                                      1. 2

                                                                                        Jose Valim is going to stream his own solutions to each challenge one day afterward (in Elixir of course):

                                                                                        http://blog.plataformatec.com.br/2018/11/lets-learn-elixir-together-with-advent-of-code/

                                                                                        1. 1

                                                                                          Fantastic! Thanks for the heads up!

                                                                                    1. 6

                                                                                      I am so looking forward to this… in fact, I am planning to set my alarm at 06:00 on Saturday (local time when the challenge drops) to get to work ASAP.

                                                                                      1. 10

                                                                                        I woke up 06:00 everyday Dec1-Dec25 last year to solve the problems and stream myself doing it. Expect yourself to stumble for minutes on stuff that your fully-awake-you would do in seconds :)

                                                                                        Also, if you can automate copy-pasting the input from the website, do it. Nothing worse than accidentally deleting a line-break or a character during manual copy-pasting and then spending an hour figuring out what the hell’s wrong.

                                                                                        Here’s my automation with curl, sed and tmux: https://github.com/Janiczek/advent-of-code/blob/master/start.sh

                                                                                        1. 3

                                                                                          Thanks a lot!

                                                                                          I’m purposefully not going to stress trying to get on the leaderboard this year (because it was much harder last year than 2016!), I’m just really hyped to get some brain candy!

                                                                                      1. 5

                                                                                        We have our own custom payroll system, and I agree payroll is crazy. I find it’s a mixture of 2 things that make it hard:

                                                                                        • People are very fuzzy and super hard to concretely define.
                                                                                        • People care A LOT about money, which increases their fuzzy nature, to competing ends, the company wants to minimize payroll as much as possible, while employees want to maximize (their) payroll, so we have a bunch of fuzzy people fighting over literal pennies in a never-ending game.

                                                                                        Not to mention all the laws from many different jurisdictions and payroll is ripe for insane complications.

                                                                                        Whenever people say payroll should be “easy” I just laugh and laugh.

                                                                                        1. 4

                                                                                          Was thinking about this. Many of those various complicated benefits that specific subgroups of people are entitled to are just something someone negotiated once. They’re worth a certain amount of money to that person and there’s some amount of money which you could pay them in return for them not having that benefit any more.

                                                                                          Has anyone seriously tried to do an ROI analysis of offering people more money to switch to less-complicated renumeration schemes… against the amount of money saved by making the payroll code some % simpler?

                                                                                          edit: obviously this doesn’t apply to most of the really complicated things like taxation, but some of these things they talk about like “these five specific people negotiated a remuneration scheme under which these slightly different rules apply to them and no one else” scenarios which are mentioned there.

                                                                                          1. 2

                                                                                            I think it’s interesting, but the people that fight over the $$’s are basically never the people that are very involved in having to implement said payroll system to pay those $$‘s. At least in my experience. So I’d be quite surprised if it was ever done at any large scale. That and by now, most payroll systems are sufficiently broad enough that most insanities perpetrated by companies can be implemented without new code… usually.

                                                                                            1. 1

                                                                                              That’s an interesting analysis in general, and one I don’t think I have thought of before. Not having feature X will cost us money, because reasons (X will be manual, won’t be done as fast, we’ll have to do Y which is costlier, etc), but adding X will increase code complexity a lot, resulting in added maintenance cost in the future. So, which is cheaper in the long run?

                                                                                              1. 3

                                                                                                I’m really hoping that someone else might have done that analysis and written about it somewhere because I would not even know where to begin with that myself. :)

                                                                                              2. 1

                                                                                                Has anyone seriously tried to do an ROI analysis of offering people more money to switch to less-complicated renumeration schemes… against the amount of money saved by making the payroll code some % simpler?

                                                                                                The incentives aren’t aligned.

                                                                                                Has anyone ever used a time reporting software that isn’t a huge pain to use? It’s because the people making those don’t sell them to the peons reporting times, they sell it to the managers looking at the results. Those people probably get great UI!

                                                                                                In similar ways, trying to get a union to accept simpler renumeration just to save the company some money reporting payroll and not having to pay expensive consultants - now you’ve pissed off the union and the consultants!

                                                                                              3. 3

                                                                                                The software I support at work generates schedules for people, so naturally customers want to use that data as a basis for payroll.

                                                                                                It’s a nightmare, especially since we were “nice” to customers in the beginning and hacked together custom solutions for their Payroll/HR systems without considering reusability etc. I once brought down an installation because I had to manually edit XML config files to add new holiday dates and forgot to save them in UTF-16…

                                                                                                Somewhere someone has dreams of the universal PayrollXML interchange format, but this is where the messy part of human relations (in the large) meets the part where programmers just want to have one interface - think how streamlined it will be!

                                                                                                This is why smart contracts will probably never work, either.

                                                                                              1. 6

                                                                                                My god I hate Eric Raymond’s writing style so much. There are some interesting tidbits in here though that are worth reading.

                                                                                                What bugs me the most is the sneering attitude. So Go is mostly faster than Python. OK, and? So you found a better implementation language for your problem set. Great! Why does that mean that Python is on the wane?

                                                                                                grumble

                                                                                                1. 3

                                                                                                  In fairness, ESR does explain that here (I generally dislike him and all his works and thoughts). His point is that python is both undergoing a language split (which I think is healing) and increasingly is falling behind things that can easily make use of parallel processing.

                                                                                                  This is sort of true, and I think python will lose share for the kinds of tasks where modern system programming languages fill the gap.

                                                                                                  1. 3

                                                                                                    How in touch with the Python community are you? There has been a positively enormous amount of work around async programming, both in the core language and in all the surrounding frameworks in various areas.

                                                                                                    I’m not suggesting you’re wrong, I don’t have a really good way to draw a bead on adoption in specific areas where that kind of parallel processing performance is a solid requirement.

                                                                                                    I think the “language split” argument doesn’t hold water. Sure, Python 3 introduces some syntax changes, but it’s nowhere near a profound enough change to call it a “split”. ESR just got all crotchety about Python 3 and refused to jump the gap to the new version.

                                                                                                    One area where Go does have a real advantage is packaging, and that’s beyond debate IMO.

                                                                                                    1. 2

                                                                                                      First of all, it’s entirely possible that ESR is wrong.

                                                                                                      positively enormous amount of work around async programming

                                                                                                      But those don’t use multiple cores unless using process-pool backed options.

                                                                                                      I’ve generally used futures-based concurrency in python, and it works for worker-type cases. I haven’t really used any of the modern system programming languages in order to compare intelligently.

                                                                                                      1. 4

                                                                                                        That’s correct. The Python async solutions don’t use multiple cores because of the GIL.

                                                                                                        Let me drop back and punt here: What bugs the CRAP out of me with ESRs posts is his attitude.

                                                                                                        I can’t think of anyone who’d argue that Golang is a better choice for reposurgeon than Python. How does “I found a better tool for my use case” translate into “The waning of Python”?

                                                                                                        Also, what’s wrong with using the process as the unit of tasking? Python has superb support for that.

                                                                                                        1. 3

                                                                                                          Pundits gonna pundit. Being opinionated and cocksure is kinda ESR’s thing.

                                                                                                          Don’t worry about what one has-been internet denizen thinks, concentrate on what’s good instead.

                                                                                                1. 3

                                                                                                  This can be interesting as I’m learning I started to use Clojure not so long ago. But the beginning of December can be hard as I’m moving from Canada to Brazil :(

                                                                                                  1. 9

                                                                                                    what’s the rush, took me 6 months to do 2017’s aoc! i really enjoyed doing it mostly in clojure

                                                                                                    1. 3

                                                                                                      Interesting, I’ll try them. But I imagine that after some time the chat around it start to cool down.

                                                                                                      1. 3

                                                                                                        Sometimes that’s better; you don’t want to be spoiled! I did it last year as a way to learn Ruby.

                                                                                                        1. 2

                                                                                                          Plus the subreddit is always there if you get stuck

                                                                                                    2. 7

                                                                                                      If you don’t get caught up in the “must be done before the next one drops”, it’s perfectly fine to do them at ones own pace!

                                                                                                    1. 6

                                                                                                      I love and use emacs every day as a text editor. Tools like org mode and just general emacs customization is great!

                                                                                                      However, outside of the text editing sphere, the emacs implementation of thing such as shell, email, and a window manager always seem “almost there” but unfortunately not useable. This saddens me because I would love to never leave emacs.

                                                                                                      That being said, things like TRAMP completely shifted my ideas on how to manage remote files, so who knows. I am optimistic about the continued progress of the emacs ecosystem.

                                                                                                      1. 8

                                                                                                        Yes, I agree! For the shell environment, the brawback of emacs buffers becomes apparent. Most shell emulations (emacs has several) work fine as long as the executed programs do not produce much text, like cating a large file. When that happens, the shell becomes sluggish or freezes up, which in turn increases the cognitive burden, i. e. “May I execute this line or will this stop my workflow?” This is a major reason why I do not use the shell within Emacs. In general st feels much more resonsive than Emacs and that saddens me.

                                                                                                        For mail, I simply do not have that much mail that I consider the elaborate mail configurations necessary. Mostly I just do IMAP searches to find a messge I’m looking for and that works well enough for me. But I still find the approach with offline mailboxes quite nice; but there are still some smaller corners.

                                                                                                        As far as I understand it, when exwm is used, the window manager will freeze up, if emacs hangs and that is something that I do not want to experience, hence I’ve tried to make emacs play nicer with the window manager by mostly opening new Emacs frames instead of the internally managed windows. I’m satisfied with that setup.

                                                                                                        TRAMP is almost there. I wish it had a mosh-like connection to the remote server, but I understand that this is actually quite hard to implement. But still ssh editing via tramp works quite nicely, especially once you configure ssh aliases and keys properly.

                                                                                                        1. 4

                                                                                                          As a heavy Emacs in terminal user I’m pretty happy with the ability to just bg emacs and run cat and less when needed. And having a terminal multiplexer helps too of course.

                                                                                                          But I realize that if you’re in a windowing environment having everything in Emacs becomes more desirable.

                                                                                                          As an aside, isn’t a “normal” terminal emulator like rxvt already much faster than Emacs? What does st bring to the table?

                                                                                                          1. 3

                                                                                                            bg

                                                                                                            May I ask you how you put a emacs (in terminal mode, i.e. emacs -nw) in the background? I am running emacs with spacemacs + evil configuration (mostly for org-mode) and C-z messes the state completely up, the key-bindings don’t work as usual, but doesn’t put emacs in the background. Maybe it’s spacemacs’ fault. Just wondering.

                                                                                                            1. 2

                                                                                                              I use vanilla emacs, running under tmux. I just hit Ctrl-Z and it’s in the background, visible in the output of jobs. fg brings it back.

                                                                                                              I think it’s your specific configuration in this case.

                                                                                                              1. 1

                                                                                                                Thank you! Then indeed it’s probably the spacemacs configuration in the terminal mode. Will have to look there.

                                                                                                                1. 3

                                                                                                                  Ctrl-z is the default toggle key for evil. You can set evil-toggle-key to some other shortcut:

                                                                                                                  https://askubuntu.com/questions/99160/how-to-remap-emacs-evil-mode-toggle-key-from-ctrl-z

                                                                                                                  1. 1

                                                                                                                    Many thanks! It helped indeed and I learned something.

                                                                                                                    I find it so strange, that Ctrl-Z has been chosen for this toggle mode, if this is the combination that is used in terminals to send programs to the background. Maybe there are not many people using emacs in the terminal with evil mode.

                                                                                                                    1. 1

                                                                                                                      The dude in the answers who modified the source to fix this really doesn’t understand the Emacs mindset ;)

                                                                                                              2. 3

                                                                                                                Yeah, I prefer the window environment, especially for writing TeX documents and using pdf-tools to view it. Most of the time I have a terminal around somewhere, so I use both simultanously. For example, I have three windows open with the TeX code in one emacs frame, the pdf in another an then the terminal that runs latexmk -pvc.

                                                                                                                As an aside, isn’t a “normal” terminal emulator like rxvt already much faster than Emacs? What does st bring to the table?

                                                                                                                Yes, I used urxvt before but switched to st at some point. The differnces between those two are minor compared to a shell inside emacs. The blog post by Dan Luu showed that st performed quite well, and further highlights the point about throughput of the emacs shells. But yeah, the preference for st is mostly personal.

                                                                                                                1. 2

                                                                                                                  Alright, that’s giving me LaTeX flashbacks from uni, I know just what you mean!

                                                                                                              3. 1

                                                                                                                Most shell emulations (emacs has several) work fine as long as the executed programs do not produce much text, like cating a large file. When that happens, the shell becomes sluggish or freezes up, which in turn increases the cognitive burden, i. e. “May I execute this line or will this stop my workflow?” This is a major reason why I do not use the shell within Emacs. In general st feels much more resonsive than Emacs and that saddens me.

                                                                                                                I’ve found it’s long lines that cause Emacs to freeze. I tried working around this by having a comint filter insert newlines every 1000 characters, which worked but with really long lines that filter itself would slow down Emacs. One day I got fed up, and now I pipe the output of bash through a hacked version of GNU fold to do this newline insertion more efficiently. Unfortunately bash behaves differently when part of a pipe, so I use expect to trick it into thinking it’s not. Convoluted, but WorksForMe(TM)!

                                                                                                                (The code for this is in the fold.c and wrappedShell files at http://chriswarbo.net/git/warbo-utilities/git/branches/master ).

                                                                                                              4. 2

                                                                                                                However, outside of the text editing sphere, the emacs implementation of thing such as shell, email, and a window manager always seem “almost there” but unfortunately not useable. This saddens me because I would love to never leave emacs.

                                                                                                                Shell depends, as @jnb mentions, for a lot of text it’s cumbersome, but especially with eshell, if you alias find-file and find-file-other-window (eg. ff and ffo) then you get something you can get very used to, very quickly.

                                                                                                                Maybe it’s not universal, but I’ve been using Gnus for a while now, and I just can’t change to anything else ^^. Integration to org-mode is great, the only thing that’s lacking imo is good integrated search with IMAP.

                                                                                                                Honestly, I can’t say anything about window managers. I use Mate, and it works.

                                                                                                                1. 1

                                                                                                                  The search in Gnus and various other quirks (like locking up sometimes when getting new mail) caused me to finally switch to notmuch recently. I miss some of the splitting power, but notmuch gets enough of what I need to be content. The search in notmuch is really good, although it has a potentially serious hinderance, so I can’t recommend it without reservations.

                                                                                                                  find-file from eshell is why I’ve been making a serious effort to try it out. I also implemented a /dev/log virtual target (M-x describe-variable <RET> eshell-virtual-targets) so I could redirect output to a new buffer easily.

                                                                                                                2. 2

                                                                                                                  Regarding the shell. I also had shell issues but now use the shell exclusively in emacs. I work over ssh/tmux into a remote machine and only use the emacs term. I made a little ansi-term wrapper to allow the benefits of eshell (well the scrolling, yanking, etc) but it uses ansi-term still so it can use full screen stuff like htop. I’ve been using it for years now. Might help be worth checking out.

                                                                                                                  plug: https://github.com/adamrt/sane-term

                                                                                                                  1. 1

                                                                                                                    Oh my God. Not only that is beautiful and perfectly suits what I was aiming to do, it also solves a couple of tangent problems I had with the section about loading the environment variables from .profile. Thank you so much!

                                                                                                                    1. 1

                                                                                                                      definitely will! I always run into issues with curses programs in emacs shell modes, which is the only thing that keeps me from using emacs shell exclusively,

                                                                                                                  1. 2
                                                                                                                    1. 6

                                                                                                                      This is interesting, in relation to another current thread here.

                                                                                                                      A comment on an issue where a maintainer has passed control to another party, who then allegedly inserted malware into the release:

                                                                                                                      You put at risk millions of people, and making something for free, but public, means you are responsible for the package.

                                                                                                                      (source: https://github.com/dominictarr/event-stream/issues/116#issuecomment-441161123)

                                                                                                                      So… maintainers who burn out should hand over their project to someone else, but they are somehow indefinitely responsible for the code after all? And there zero blame laid on the party that uses the code? That does seem to encapsulate the entitlement issue.

                                                                                                                      1. 3

                                                                                                                        Thanks for posting this here - if you didn’t, I was going to, as it’s the main thing that has been bugging me about the whole episode.

                                                                                                                        This is a hard problem to solve! How far can you trust your contributors or fellow maintainers? What constitutes a reasonable effort to ensure that your software is in good hands, and frankly how much of a reasonable effort do you owe people when you’re providing something on your own time, for free?

                                                                                                                        I hope we can build better tools and practices to protect against this sort of thing in future but, in line with your post and the main article, I can’t blame the author for handing over a project he didn’t want to someone who offered to maintain it.

                                                                                                                        1. 4

                                                                                                                          The offer to maintain an “abandoned” project could be seen as a form of social engineering. Presumably the new maintainer (or a team they were a part of) identified the vulnerability of the NPM infrastructure and tried to find a way to exploit it.

                                                                                                                          They then acted as a “good citizen” of the open source community (affinity fraud) to get access to the source and the NPM uploader rights.

                                                                                                                          (It would be interesting to see if other packages that have been used in the targeted applications have a similar vulnerability. Presumably the team has other aliases or identities in this case.)

                                                                                                                          Dealing with this is tough as heck. A maintainer who wishes to remain a good security citizen would have to set the repo readonly, and require extensive vetting to open it again… but that can have a massive chilling effect, and is pretty trivially defeated through straight-up fraud. Or people will look at this and see that a successful open source project simply doesn’t give enough ROI financially or emotionally to invest time in. If you “mess up” at any time in the future you will suffer the consequences.

                                                                                                                          As usual, bad actors makes life worse for honest people. But it’s the way of the world. I guess it’s surprising that NPM hasn’t already been hit with something like this (or maybe it has but it’s not shown up yet).

                                                                                                                          1. 4

                                                                                                                            how much of a reasonable effort do you owe people

                                                                                                                            You owe no one anything. It is polite to inform users of the new maintainership, but that is all.

                                                                                                                            If people choose to blindly source from an upstream with no vetting or even knowledge when it changes hands, that’s on them, not you.

                                                                                                                          1. 1

                                                                                                                            The linked post is an advertorial for Storj.io, which is a decentralized alternative.

                                                                                                                          1. 2

                                                                                                                            The cryptocurrency blog CCN reports that the repo has been used in numerous Bitcoin wallets:

                                                                                                                            https://www.ccn.com/breaking-numerous-bitcoin-wallets-may-have-been-compromised-by-rogue-developer/

                                                                                                                            1. 1

                                                                                                                              Site is readable with image and CSS. Their code snippet I’m prompted to “take a moment to really consider” is not. I allow JS from medium.com. Nothing. From embed.ly and embed.com. Nothing. I allow every piece of crap on this page only to see a pop-up:

                                                                                                                              Pardon the interruption.

                                                                                                                              We’ve seen you here before. Let’s make things official

                                                                                                                              [Sign up with Google]

                                                                                                                              [Sign up with Facebook]

                                                                                                                              Already have an account? Sign in

                                                                                                                              To make Medium work, we log user data and share it with service providers. Click “Sign up” above to accept Medium’s Terms of Service & Privacy Policy.

                                                                                                                              No content. Just wasted time and traffic.

                                                                                                                              I’m happy to filter out all medium.com content from now on. Why the heck does such an appereantly popular website have to be so astonishingly fucked up?

                                                                                                                              1. 3

                                                                                                                                Why the heck does such an appereantly popular website have to be so astonishingly fucked up?

                                                                                                                                They need to make money.

                                                                                                                                Sadly they’re validating every warning people voiced when Medium took off - that letting your content live in a silo was a good way of letting that content be taken hostage by the silo’s owners.