1. 1

    Lovely practical walkthrough of how this was reverse-engineered, thanks.

    I assume this is a low priority fix as most people are not interested in endangering their jobs by stealing coffee!

    However I have worked at more than one place where people noticed that the coffee machine’s “free vend” mode could be activated with the default PIN of 1234…

    1. 1

      most people are not interested in endangering their jobs by stealing coffee

      Why would it? What’s the connection between these two?

      1. 1

        Mainly a guess, but I’m assuming these smart card machines are used in a corporate setting. In that case I doubt many people would go as far as loading up a smart card with fake money just to get free coffee at work - although perhaps “endangering their jobs” is a bit extreme since it would be hard to detect.

        Either way, what I meant is that I don’t see this happening enough for the person paying for the vending machine to really notice the lost revenue. If so, Nespresso might move to newer cards but the business impact is minimal - they don’t have a lot of incentive to hurry, or to upgrade existing machines to fix this.

        1. 2

          Ah ok, I understand now, thanks!

          Having to pay for coffee at work sounds weird though, is this a US thing?

          1. 3

            Coffee here is free, but we have to pay for soft drinks and snacks. It’s in Sweden though, charging for coffee in the workplace would cut your hiring pool by ~85%…

    1. 1

      Badly! I keep a notebook throughout the day which is used for short-term notes and tracking tasks.

      I don’t do task tracking every day, but particularly when I’m busy I find it invaluable to stop looking at a screen for a few minutes, write a list and prioritise items. Those lists are dead information after a day or so and I often tear out old pages if they don’t have other content on them.

      For projects which require more formal/structured note-taking I use Joplin.

      Anything I want to keep from either is usually project-specific and gets put into shared company documentation.

      Otherwise, I’ve found in the past that trying to keep more general notes on things I’ve learnt has limited value because I don’t revisit it effectively. Maybe I could make an effort to fix that but so far it hasn’t been necessary - the act of writing notes helps me to process information, and it’s usually faster to refresh my knowledge from Google than dig through old notebooks or Joplin files.

      1. 2

        It’s a good list! I see some comments noting that not everybody has the same interests, which is fair, but you can’t expect every internet list to match your needs perfectly.

        Then again, maybe I’m biased because this does map to my personal interests pretty well.

        1. 8

          As this is the expected denoumentd of the Elasticsearch license change, might be worth folding into https://lobste.rs/s/qtsjh1/elasticsearch_does_not_belong_elastic for context.

          1. 1

            Seems like a good call, I hadn’t realised we’d linked those stories. Thanks!

            I think that’s something a mod would need to do, if appropriate, right?

            1. 3

              Yes, it has to be done by the Lone Ranger Mod[1], @pushcx

              [1] so far

              1. 4

                Hey, we still have Irene!

                1. 2

                  I can’t believe I forgot that. Apologies.

          1. 18

            This was a super interesting read, thanks!

            I’m particularly impressed that you managed to explain this in such a way that it could be understood by me, an idiot in this field. I suspect I’ll be coming back to it with a highlighter to go off and do some more in-depth reading, but I didn’t feel I missed anything.

            1. 2

              Question from a noob: are we supposed to upload our work to GitHub? I saw some other lobsters posting links. If so, is there a place to register your repo once you upload it?

              1. 3

                There’s no requirement to upload your work. But feel free to share it somewhere if you like!

                1. 3

                  It’s up to you if you do or not, I like to for archival’s sake. I don’t know of any central place to register your repo, but it can be useful for posting links to your solutions in discussions.

                  1. 4

                    This was a thing a few years ago

                    https://github.com/a-red-christmas

                    Not sure who’s responsible for it now. I remember it being pretty clunky.

                    Simplest way to share code is probably to stick a link in ones lobste.rs bio and let people know that way.

                    I’ve personally set up a bunch of scripts that allow me to make short blog posts for each entry and stick them in one place: http://gerikson.com/blog/comp/Advent-of-Code-2020.html

                  2. 1

                    If you log in to adventofcode.com with github, you can choose to let it link to your github profile.

                    No option for sr.ht :(

                    1. 1

                      Well, if they allow for the officially hosted sr.ht login then they might feel obligated to also support all self-hosted instances.

                      1. 2

                        Yes indeed, though I was actually hoping for the ability to use any URL as my link, not to use my sr.ht login on AoC. I understand why this might lead to some ‘interesting’ links from the AoC, though!

                  1. 5

                    Started my new job, gotta figure life out and learn to live alone :)

                    1. 1

                      Congratulations on the new job!

                      1. 2

                        Thank you! I’m not sure if all programmer positions are like this, but I didn’t really look for this job, so I’m guessing I won’t be having trouble finding different ones in the future ^^

                    1. 3

                      Trying not to despair over the department I work in. The QA engineer assigned to our department left last week, one of our developers in the department is leaving at the end of next week, and my manager is retiring sometime next year. That leaves just me as the sole developer by this time next year (my manager still does programming). And the code we work on is critical to our customer (an oligarchic cell phone company) and brings most of the revenue.

                      1. 4

                        Ouch. That sounds like a tough situation to be in.

                        I don’t think you should give too much thought about how the company you work for is doing (unless you have significant amount of shares). Focus on your own situation. If it becomes untenable, bail. Bringing in “most of the revenue” shouldn’t be your responsibility, it should be management’s.

                        1. 3

                          I just wanted to second this, because I agree with @gerikson but also because I know that actually leaving in a situation like this is much easier said than done.

                          Please look after your health first, and keep an eye out for the signs of stress. Hopefully it won’t get to that point for you! But as somebody who has suffered from burnout in the past, I was still hoping it wouldn’t get to that point when I realised I’d already been there for weeks. Once you’re in that hole, there’s nothing to do except stop digging.

                          In case you need to hear it, people move jobs a lot in the tech world and nobody who matters will be anything but happy for you if you go somewhere that’s better for you.

                          Best of luck, whatever happens.

                      1. 28

                        I don’t quite know where to start with this article. In general, I agree with the sentiment that we should be promoting more competition to the increasing default choice of “GitHub or GitLab”. And there are some good options appearing!

                        But at the same time, part of my job is giving developers in a company the tools they need and versions of those tools that they enjoy using: and I think we need to accept that GitHub has been winning out because it offers UI and workflow advantages that other options have traditionally not. Likewise, because GitLab is also called out in the article: GitLab has been a good alternative because the team took lessons from what GitHub offered and put their own spin on it.

                        I know that some people don’t like the PR workflow that GitHub pushes, and I’m keen to entertain arguments for and against. We should have that discussion and I know members of the lobste.rs community have some Opinions on this :)

                        But my issue with this article (and the reason I’m writing a long, barely focused rant) is that I don’t think this article offers any real arguments. The binary choice of Git{Hub,Lab} is a straw man in this piece and, for me at least, hard-to-quantify statements like “we have lost our soul” aren’t enough to knock it down.

                        1. 6

                          Right. The basic premise of the article is a fine hill, but there are externalities when it comes to entry-level, collaborative development that are harder elsewhere then in social systems like GitHub and GitLab.

                        1. 4

                          This is great, I wish I’d had it to hand last time I was maintaining a Postgres DB! Lovely clear visualisation of the stats available.

                          1. 12

                            The comments in this thread are a shame to this website. Come on, people, grow up.

                            Just having to post this makes me feel like an advertisement on a London bus. ‘Some people have kinks, get over it!’

                            1. 3

                              Some people will laugh at your kinks, get over it. FWIW, I think your underdeveloped sense of humor is itself just a little too funny to be shameful.

                              1. 9

                                I deleted the sex jokes. I agree - they’re no credit to anyone here. Whatever my own beliefs about taboos on sex, this kind of humor is unprofessional and doesn’t belong in a place as public as lobste.rs. It’s important to know the difference between joking behind closed doors, and joking in a public way that excludes people.

                                With that said, it is also legitimate to disagree on that point, and to discuss that disagreement. Try to be polite about it please.

                                1. 11

                                  this kind of humor is unprofessional and doesn’t belong in a place as public as lobste.rs

                                  This seems to imply that professional conduct should be adhered to in any public place, not just work. I bet there are people here that do drugs, even publicly, that they wouldn’t do at work. I don’t think professional conduct is about what you do in public vs. private (even though, of course, there are certain ways you might conduct yourself in private that you wouldn’t in public).

                                  More seriously, it seems like personal opinion masquerading as professionalism. What makes something unprofessional or not? Because if professionalism is the standard for lobste.rs, there are a lot of people who would say that swearing is unprofessional, so should we get rid of all the submissions that use the word, “fuck”, like these?:

                                  (I’m not accusing you of being inconsistent per se, maybe you’re a new mod; I don’t know, since I’m relatively new myself.)

                                  A lot of professional conduct is just about making sure to be inclusive to the lowest common denominator that has enough sympathy or political power, and sometimes about not offending or disgusting. Someone who might do certain drugs, even while working as a lone wolf in a bootstrapped startup of one, might not do them in a company where he’s working with others, so as to allow the office environment to be palatable to good workers who can’t be around drugs.

                                  I think that’s the kind of professionalism that people are talking about when they say, ‘that’s unsuitable for this place because it’s unprofessional’. Obviously, professionalism demands not writing obfuscated code, for example, but no mod here would remove a submission for an entry to the Obfuscated C Code Contest.

                                  That said, when people say, ‘this is unprofessional and therefore not suitable for this place’, what I hear is, ‘this seems like behaviour a professional person — i.e. a member of polite society — wouldn’t stoop to or do in polite company, as judged by my standards of what’s acceptable for polite company or at all[; at all if I’m the lowest common denominator being catered to]’. (I don’t mean “lowest common denominator” as an insult; we’re not necessarily talking about desirable traits here, such as intelligence, just anything that affects compatibility with others.)

                                  In that sense, simply justifying something as unacceptable in polite company or at all due to its unprofessionalism can be quite circular, like justifying something because of policy; okay, but why is that the policy or why is that what should be accepted as professional? You’re essentially just saying, ‘this doesn’t belong here because it’s either unacceptable or unsuitable for present company in this context’. For that reason, to me, it sounds like a smokescreen for a personal or political opinion the person has who’s removing the offence citing professionalism.

                                  Please bear in mind, I’m not necessarily opposed to there being a rule against immature jokes. I just think your current stated reasoning of professionalism is shallow.


                                  Also, the stated reason left for removing sex joke comments:

                                  Sex jokes exclude people

                                  Do they? As a matter of course?


                                  Try to be polite about it please.

                                  Is this in reference to @minimax’ statement?:

                                  Some people will laugh at your kinks, get over it.

                                  1. 3

                                    Ah - I replied to your other lengthy comment before I saw this one. I think you raise some good philosophical points, but I’d prefer to not have two open discussions between us, it could be hard for others to follow.

                                    I will say at least that I think figuring out how to define “professionalism” - or any other policy - is an exercise in making choices about a particular space. In some cases there are several right choices, but you still need to make a choice. We can get into that in more depth another time if you want.

                                    1. 2

                                      I will say at least that I think figuring out how to define “professionalism” - or any other policy - is an exercise in making choices about a particular space.

                                      Yes, this is my point. But I’m not just asking in general, I’m asking why this choice was made in particular? Why are we setting the bar for professionalism to removing genital jokes?

                                      1. 2

                                        I think that’s been addressed at this point. I would particularly draw your attention to the comments by bitrot and dpk, who I thank for saying that stuff better than I could have.

                                        In response to your remark that “This seems to imply that professional conduct should be adhered to in any public place, not just work.”, I do not agree with that stronger proposition and will not attempt to defend it. However, I think that significant aspects of professionalism in the workplace are worth importing to Lobsters in particular. That’s because we are trying to be a place for nuanced conversations among people with deep knowledge of technical subjects, and that sort of thing is significantly easier when people behave professionally.

                                        1. 1

                                          I’ve read all of both bitrot and dpk’s comments already, they both say quite a few things. What, in particular, do you want to draw attention to?

                                          I understand dpk’s reasoning of feeling excluded when the jokes stigmatise a kink that the reader happens to have. I don’t see how this is relevant to your gender-based reasoning, which she specifically said does not apply to her.

                                          I don’t quite understand bitrot’s point about making gendered jokes being alienating to gendered minorities without qualification. Surely, that’d depend heavily on the joke (or the person, but recall the rule about catering to the lowest common denominator)? No one is the butt of a joke in a pun, which is what most of these jokes were, according to other comments. I guess we’re just doing a blanket ban on gendered jokes just so there’s no grey area, which… okay, I guess.

                                          I’ll ignore the comments about the biases of the users here, except to say that I don’t know why technical ethics would be off-topic here, and if it is, I’m against that as well.

                                          1. 2

                                            I think the entire comments are worth reading; all the background they discuss was in my mind and informed this decision.

                                            The reference to technical ethics was because there have been a lot of previous conversations as to whether it’s a subject that belongs on lobste.rs. My personal opinion (not the site’s official position) is that it does. I am, I think, in the minority with that view, so I’m pleased to learn that I agree with you. However, with that topic we are trying to wait until there’s something closer to a consensus among community members; if we ever impose any top-down rules about it they will be informed by those discussions.

                                  2. 6

                                    Well, I’m glad to have had a chance to appreciate them before you “tidied up”.

                                    Your (and I do mean the plural “you mods”, although anyone here can read the mod log and see who the “mod team” really is) tireless efforts at sanitizing, “professionalizing”, and generally gentrifying this site will be its eventual demise, because you are quite literally excluding people. I find it quite ironic.

                                    Carry on, though. I’m sure whatever remains will be quite to your taste.

                                    1. 6

                                      You are entitled to have those positions.

                                      1. 4

                                        And you are so very entitled to tell me how entitled I am while wearing your big hat. What a nice discussion this is turning out to be.

                                        EDIT: I think what I meant is “THANK YOU MA’AM MAY I PLEASE HAVE ANOTHER”

                                        1. 6

                                          Hey man, let’s not do it this way. It’s beneath you.

                                          1. 6

                                            Telling someone they are entitled to their opinion is just passive aggressive — they know that, so you’re obviously trying to communicate something else — and I think an aggressive response is no worse than a passive aggressive one.

                                            To be fair, minimax’ initial comment was itself quite harsh, but really, if you don’t want to engage with the person, just don’t engage; never close with a “you’re entitled” as the sole response, that’ll definitely fan the flames.

                                            1. 5

                                              I see your point, but unfortunately it’s part of being a mod that you don’t always get to simply “not engage”.

                                              Sometimes you need to acknowledge that somebody has raised points for consideration, but that continuing the current discussion is unlikely to add anything new.

                                              I think that’s especially true when you have the unenviable job of moderating a thread on a contentious topic like this and are responding to multiple people on different fronts.

                                              Personally I didn’t read it as passive aggressive, but hey! Communication on the internet is hard, so let’s give people a little room for error.

                                              1. 4

                                                What would have been lost if Irene had simply not responded to that particular comment of minimax’? Her comment doesn’t acknowledge that minimax has raised points for consideration.

                                                I’m sure she didn’t mean to be passive aggressive, but I don’t think passive aggression requires intention. It’s just a way of communicating explicitly politely but implicitly sending messages of contempt, either deliberately or accidentally (though of course, it’s possible to misread the implicit).

                                                In this case, Irene’s comment explicitly communicates that minimax is entitled to his position. Well, we all know that, so of course, her comment explicitly communicates nothing new and therefore might as well have communicated nothing except the implicit.

                                                What’s the implicit? Well, she’s communicated that she’s seen the comment. She’s communicated that after seeing it, she decided it’s not worth her time to truly engage with the points that minimax raised. She’s communicated that she still felt compelled to respond. She hasn’t communicated the reason she felt compelled to respond, but it’s not a major leap — for someone maybe struggling with applying the principle of charity due to being in a bad mood caused by her own mod actions in this very thread — from there to, “she has contempt for me or my position and wanted to communicate that fact and even wanted to do so in a dishonest way”.

                                                1. 4

                                                  I was probably too terse, and I regret that. My goal was to communicate that dissent is welcome. (Edit to add: I also wanted to communicate that I disagree with the position I was responding to, of course.)

                                                  There was nothing else to say; I wasn’t going to change anybody’s mind by continuing to argue.

                                                  1. 1

                                                    I think that’s communicated by just not removing minimax’ comments.

                                                    It’s all good.

                                                    I don’t mean to attack your comment — I’m not that angry, and I understand that you are dealing with a lot of comments and a response here or there can easily come out in a way that can be misunderstood — merely explain minimax’ response, since he doesn’t seem to be doing a good job of humanising himself judging by friendlysock’s response to him, and he’s roughly representing my position on this matter.

                                                    1. 3

                                                      That makes sense. The exploration of why it was received badly was helpful, thank you.

                                                      I also realized belatedly that there’s two meanings to “entitled”; I wasn’t trying to comment on minimax’s mental state. I’ll know to avoid that word next time.

                                      2. 2

                                        “Gentrifying”?

                                1. 5

                                  I bought the book in question back when it was early access and it’s been revisited many times - though I’m embarrassed to admit I’ve still not read it cover-to-cover. It’s an excellent book and I’m glad Dr Kleppmann has seen success from it.

                                  Really nice reflection and solid advice for anyone thinking of going the same way.

                                  1. 1

                                    Thanks for this! Yurichev’s reverse engineering book is also excellent and available from the same site.

                                    1. 1

                                      Interesting analysis!

                                      Anecdotally, when I’m hiring, if a CV lists a GitHub profile I will probably take a look and if what I see reassures me about the candidate’s coding skills (and/or ability to interact with people in bug tickets or code review) that’s one less question to ask at the interview.

                                      I suppose I might be concerned if someone was consistently and recently committing unreadable, broken code or getting into fights with maintainers.

                                      However I can’t hold it against people if they don’t have one listed, or it’s not really active. Mine isn’t either.

                                      I believe this bias exists in hiring but I also wonder how many places simply list this because somebody non-technical is screening CVs and wants an extra datapoint to distinguish between candidates?

                                      1. 2

                                        I’d be careful with that though. Judging someone by their 2 stars-2 issues-0 PRs code dump doesn’t sound fair unless they specifically show it as an example.

                                        1. 1

                                          Yes, fair point. I definitely have projects with no stars and no issues that I wouldn’t want to be judged by…

                                      1. 4

                                        A lot of companies seem to think that if they gave out what their process looks like, their process will be gamed and cheated. So I don’t expect them to change their mind.

                                        1. 2

                                          I think you’re correct, sadly. I have worked at companies which took this view and don’t think it’s a coincidence that in at least one case the interview process was a common cause of poor reviews on Glassdoor. But it’s a weird view to take!

                                          If somebody is capable of learning the things they need to perform well in your interview, you would hope they are capable of learning what they need to perform well at the job. If that doesn’t hold true, perhaps the interview process has a problem.

                                          1. 2

                                            If somebody is capable of learning the things they need to perform well in your interview, you would hope they are capable of learning what they need to perform well at the job.

                                            I think that sometimes this is the issue. The interview bears only passing resemblance to the job, so you see other tests to check for stuff like algorithmic implementation ability.

                                            In the places I had any control over the interview process, I tried to make it as close to the job experience as possible (in terms of resources they could use, interactions with the team, and tasks). This, in my opinion, is best for both the candidate and the company.

                                            1. 1

                                              This plan is fine until you get 400 resumes for a job.

                                        1. 9

                                          This is amazingly pretty. Some further reading tells me that the author also co-created Cinder, which I didn’t even know existed, but now has sparked my curiosity about making art-through-code. Does anyone have further reading on creating… gesticulates wildly at article this?

                                          1. 4

                                            Possibly not quite what you’re looking for? But I’ve been enjoying Robin Sloan’s development diary for a game called “Perils of the Overworld”:

                                            https://www.robinsloan.com/overworld/week/1/

                                            It’s a bit wider ranging, covering things from map generation (which is why I thought of it here) to story, mechanics and storefront considerations. But, particularly as a fan of his writing, I’ve found the discussion of the process to be very interesting.

                                            1. 3

                                              Not quite what I was looking for, but an excellent read where I sort of read the entire thing the first go anyways. Thanks for the new reading material!

                                          1. 17

                                            Weird timing (posting the story now as the article is from 2019) with the Perl 7 PR a few days ago. I think like a lot of other programming languages, it will no go away or “die”. The Perl 6/Raku take a clear different path, Perl 7 and 8 coming. The syntax is weird by today standard, yes but is it a problem? I mean we have see the rise of Clojure with a s-expression syntax, functional, etc. making it almost mainstream, why not the idiosyncrasies of Perl?

                                            1. 16

                                              s-expressions provide regularity. Perl’s idiosyncrasies are truly idiosyncratic. There are a large number of operators that are single punctuation characters. Many of these behave different in different contexts. This makes it so that when looking at other people’s code you are constantly encountering new idioms. So when I’m looking at a legacy code base I’m seeing idioms from 2015, 2010, 2005, 2000 and earlier.

                                              1. 5

                                                That’s why I like Perl. Once I am old and tired, I will find a job maintaining an obscure tool written in Perl, and I will have job security. ‘Maintainable’ software is an evil ploy from corporations scheming to pit employees against each other.

                                                1. 4

                                                  Obligatory: `perl -e ‘print reverse “dog”’

                                                  In Vyatta and then VyOS, we’ve had our butts bitten by stuff like this countless times, even with strict and warnings. Strict and warnings only take you that far. Then there’s error handling. Exceptions aren’t there, and monadic approach isn’t really possible because there are no types. Then there’s a GC that hopefully will learn how to break circular references in Perl7, four decades after everyone else.

                                                  The code we’ve rewritten in Python has much fewer bugs on average, and when there are bugs, it’s much easier to track them down. Of course it’s not just because of the language, we are fixing old design flaws at the same time, but just rewriting the same code word for word would already be an improvement.

                                                  It’s more like, you can make C safe and reliable by memorizing the MISRA rules and installing an external checker. Or you can switch to Ada or Rust and get a whole bunch of great features in addition to built-in safety checks.

                                                  1. 2

                                                    As a friend is fond of saying: 90% automation, 10% job security

                                                    1. 2

                                                      Ha, ha. Be careful what you wish for. While we achieve a work life balance that corporations are incapable of, I’m on the hook for several dozen different collaborations with huge budgets grinding to a halt during outages. Those muons are not going to research themselves.

                                                1. 42

                                                  I’ve always felt the whole “terminal size” thing is a massive irrelevant distraction; I wrap lines (usually at 80) because I think shorter lines are easier to read.

                                                  Obsessively wrapping at 80 (or any other limit) is not helpful though; 90 or 100 can be fine too; the important question is “is it easier to read?” and often – but far from always – I find a length of 80 “easier to read”.

                                                  People/tools that are obsessive about “80” are annoying as it forces unnatural weird line-breaks and make things harder to read, and that’s basically the issue at hand here; the change that prompted this discussion:

                                                  -ssize_t __kernel_write(struct file *file, const void *buf, size_t count, loff_t *pos)
                                                  +ssize_t __kernel_write(struct file *file, const void *buf, size_t count,
                                                  +               loff_t *pos)
                                                  

                                                  The original line was 85 characters, and it makes little sense to break there IMO.

                                                  1. 14

                                                    The TeX papers cited a study that showed that humans read best (on average) when lines are 66 non-whitespace characters. That actually corresponds pretty well to an 80-column terminal (14 words, average word length 4-5, a bit longer if you have leading whitespace for indentation). I wrote a style guide a long time ago that included that as the rule: lines should not be longer than 66 non-whitespace characters unless breaking them would harm readability.

                                                    The get-out clause is important, because sometimes you really can’t usefully make them shorter, but often you can. The non-whitespace rule is important because it avoids one of the problems the Linux kernel has: they define their tab width to be 8 characters and so any line in a function has only 72 characters to play with and one inside an if block has only 64, which is a tighter restriction than you need for readability.

                                                    1. 20

                                                      I assume that study was about prose rather than code though. Code is fundamentally different: more punctuation, fewer “words”, and heavy use of indentation that shrinks the line count for the majority of lines in any codebase.

                                                      I wouldn’t expect a study tested on prose to completely generalize to code. As a hypothesis, I would suspect that people tend to skim through code looking at the “shape” of the text: looking at indentation, statements, balancing parentheses, etc. Lines that are too short means more cases where that shape is modified due to wrapping, hampering readability.

                                                      1. 5

                                                        I don’t know if anyone has done the study for code, but I have recently been surprised by some that show that they are more similar than I would have thought. For example, most of us know that syntax highlighting makes it easier to read code. There was a study that I read a couple of years ago for English text that applied part-of-speech tagging and then highlighted words based on this (so nouns, verbs, and so on were coloured differently). They found either an increased retention rate when reading at the same speed or an increased reading speed for the same retention rate.

                                                        I’d be really interested in seeing a study on comprehension related to line length for code, especially compared across languages (any HCI folks looking for a grant idea?). I’m also not sure how generalisable the originals studies were to across Latin-alphabet languages and I’d be curious if the difference between English and Python is more or less pronounced than the difference between English and German or C and Python.

                                                      2. 1

                                                        The TeX papers cited a study that showed that humans read best (on average) when lines are 66 non-whitespace characters.

                                                        What TeX papers are you referring to here?

                                                        1. 2

                                                          Knuth and the PhD students that he had working on TeX published a load of papers about how and why the system works. They’re a great resource for anyone interested in typesetting because they describe the algorithms they implemented, the algorithms they wanted to implement but couldn’t because of resource constraints, and the rationale for picking those algorithms.

                                                          The paper describing the hyphenation algorithm, for example, describes a technique that MIT is now making a big fuss about where you train a simple ML model (in their case, as I recall, a two-deep Markov chain) and then record the instances where it makes the wrong prediction. For English, the entire hyphenation dictionary is the single model + about 70 outliers. It’s both small and very fast to search.

                                                      3. 12

                                                        One reason for “strong feelings” (for the lack of a better word) is multiple buffers open side-by-side in vim for example. I often tend to have 2 buffers open split screen in vim, one with the source file and the other one with the test. Shorter lines make it much easier to support this workflow.

                                                        1. 1

                                                          Can you have no more than a width of 160 characters comfortably displayed on your monitor?

                                                          1. 9

                                                            With my current hardware that number is about 180-200 (leaving out the space that the file browser plugin takes up on the left).

                                                            Any more characters and I would have to decrease the font size to still be able to work with split buffers. But I’ve noticed that I feel strain in my eyes when the font size is too low.

                                                            1. 1

                                                              If you close the file browser, and have two files side by side, does the file length really have to be limited to 80 for the font size to be comfortably large to read? I find this hard to belive unless you have an unusually small monitor.

                                                              1. 4

                                                                With the file browser disabled, each buffer can accommodate about 115 characters at font size 12 (~110 to still have some spacing for comfortable reading). While that’s certainly more than 80, I feel my personal upper limit would be 90-ish. More than that I think I would have to either change my workflow or invest in a new display.

                                                                Also, yes my hardware might qualify as being slightly dated. The laptop I use has a max resolution of 1920x1080. I do have an external display but that’s even older than the laptop and only supports 1440x900. ¯\_(ツ)_/¯

                                                                1. 1

                                                                  That makes sense. I vote for 90 being the new default maximum line length, then. ;)

                                                        2. 10

                                                          I agree in spirit, but in practice many people lack common sense. Subjective criteria alone are not enough.

                                                          1. 4

                                                            Besides the common sense issue, some people appreciate hard formal restrictions for their creations. For example, that’s the whole point of poetry: to write stuff according to arbitrary rules that are orthogonal to the meaning. A sonnet has 14 lines of 10 syllables, just as linux kernel code has indentations of width 8 and a maximum of 80 columns per line.

                                                            1. 6

                                                              I would find it hard to argue that arbitrarily limiting the length of a line of code makes it any more “poetic”, in some way?

                                                              More to the point, much as we like to compare code and poetry, real-world concerns impose. Sometimes it’s preferable to do the less poetic/more verbose thing in the name of keeping your code maintainable and (hopefully by extension) working in the future, for example.

                                                              1. 4

                                                                I think what GP is getting at is that (for many people, anyway) one of the top killers of creativity is, ironically, the blank canvas. The total freedom. One of the most common tips for getting around creative blockage is imposing arbitrary constraints.

                                                                Not saying software engineering is 100% creativity, but at least a part of it is?

                                                                1. 4

                                                                  Yes, that was exactly my point. I have found that artificially adhering to 80 chars per line and 8-width tabs forces me to code in a very productive way (and especially, that functions have at most 30 or 40 lines). Sure, I have to rewrite and refactor the code quite a few times until it reaches that state, but I do not feel like I’m losing my time, quite the contrary.

                                                              2. 2

                                                                Quite the opposite, rules such as the sonnet format are anything but arbitrary. They exist so the message can be delivered in a specific poetic fashion. They allow for a singer or a poetry reader to resource to a certain set of vocal/techniques techniques.

                                                                It might sound counter intuitive, but meaning of a particular sonnet is not easily transferable to other formats. Much like the meaning of a ballad would hardly had the same strength if passed as an heavy metal song.

                                                                I do not think there is an equally strong point at all when it comes to people wanting hard formal restrictions in their code because they like it. Engineering should be more pragmatic than this. If there are valid reasons, such as screen real estate in old days, that’s ok. But reasons without practical motivation become an unnecessary annoyance in my experience.

                                                                1. 2

                                                                  Quite the opposite, rules such as the sonnet format are anything but arbitrary.

                                                                  I have the exact opposite view on the nature of poetry (not that there’s anything wrong with that). While the origins of poetic forms may have something to do with singing, this is not what the poetic thing is about. For example, when writing the lyrics of a song you may need to add an extra syllable on one of your lines and this will not matter: the singer will simply pronounce the two syllables faster, it happens all the time. However, if you add a single spurious syllable in a sonnet or a haiku, then the whole thing falls apart and ceases to be a sonnet or a haiku.

                                                                  If you read modern poetry (i.e., not influenced by any musical form that motivated it) you’ll find that the best poems can be also read as perfect prose, and the strict formal properties (rhythm, rhyme) just fall casually into place.

                                                            2. 2

                                                              I wrap to 80 characters almost always when creating a patch, just so there’s one less thing for people to complain about. However, I think wrappings like the above are a particularly egregious failure case. Sometimes adding or modifying a single argument can necessitate a second line…

                                                            1. 2

                                                              I love my e-ink ebook reader. It’s convenient, lightweight, it can be read one-handed or easily propped up when I’m cooking or standing on public transport. I don’t have to worry about books being damaged in a bag while I’m travelling.

                                                              Barring books where I really want the physical item to keep (and some reference books), I will often buy an ebook over physical copy because I know that honestly I will find it harder to make space for reading a physical copy.

                                                              But I agree that the current options for buying ebooks are largely predatory and that DRM offers an incredibly bad user experience for most people. I try to buy DRM-free where I can, and sadly I do sometimes buy and jump through hoops to remove DRM where I can’t find content another way.

                                                              My normal trick is to look directly at the publisher’s site for DRM-free copies. Does anyone have any good recommendations for stores which only offer DRM-free content?

                                                              1. 16

                                                                We, um, don’t seem to have a pascal tag. So, there’s that I guess.

                                                                1. 4

                                                                  Wow! I wonder how many games on Steam are written in Pascal.

                                                                  1. -1

                                                                    Why? It is a mature and tried language. It’s not fancy enough. Unlike Rust. /s

                                                                    1. 4

                                                                      at least now we have the possibility to rewrite it in rust!11