It apparently somehow maps dos text mode to terms, but I don’t understand how that’s supposed to work. Term sizes are determined by the user, and can change at any time by simply resizing your window. But PC text modes operate in few, fixed sizes, and the current mode is determined by the program.


      The documentation (which isn’t rendered in the Github interface but is basically the same as DOSemu’s) recommends that you set the rows and columns with stty. I can attest that it doesn’t work well if you don’t.

      The fixed size of the DOS terminal doesn’t map well to modern terminals. It seems you just have to be mindful of it.

    1. 9

      This is pretty low-content – not even a summary README (and the NEWS hasn’t been updated in a couple years). Even the doc folder is pretty spare.

      For those not familiar, DOSEmu has been around since the 90s. Where DOSBox provided a full virtual environment (emulating graphics and CPU), DOSEmu was more like a bunch of wrapper libraries for DOS programs (so it only worked on x86 machines). It was also stagnant for some time (I had assumed it was dead).

      I would find a post more useful if it addressed some questions like:

      • Is DOSEmu2 still bound to x86 machines?
      • Can it run on 64-bit architectures?
      • What are its benefits/drawbacks compared to: DOSBox, FreeDOS, a full VM like QEMU?
      • Can it containerize?
      • Are there plans to port it to non-linux platforms?


      • A dive into the overall architecture, or a deep dive into a specific difficult area of the software
      • A tutorial on how to set up, use, and troubleshoot problems
      • A case study on using it to run a tricky piece of old software
      • An analysis of the differences between it and alternatives, including examples where each runs notably better or errors out. Possibly with benchmarks.

      A post of a context-free repo with little documentation is disappointing.


        I too was very disappointed in the “content”. I actually tried building DOSemu last night and saw this hoping that some of the issues I’ve already had to patch have been addressed. Looking at the repo, I have no idea what this has in comparison to “version 1”.

      1. 5

        Those threads have been around a long time and I’m kind of used to them, but on the other hand I think they should just be tagged “ask”.

        I’ve felt for the last little while that those threads deserve some sort of special status because they are more like chat than stories. Maybe a “community” or “chat” tag is more appropriate.

        Perhaps instead of a new tag you can just hide the stories?

        1. 5


          I’d rather that’d be used for interesting questions, which is a subset of questions that happens to exclude “what are you doing this weekend?” threads.

          1. 4

            Those threads have been around a long time and I’m kind of used to them, but on the other hand I think they should just be tagged “ask”.

            They’ve been through a couple of iterations in terms of tagging. They were originally tagged with just “ask”, until validation around that tag changed and submissions are now required to add a second tag alongside “ask”. Initially we were tagging them with “ask” and “culture”, around two years ago we changed to using “ask” and “programming”.

            (I’m saying we, because although I try and submit them regularly, I didn’t start submissions way back when and others often submit where I’m unable to so it’s very much a community thread!)

          1. 15

            A blanket ban seems like a bad idea since there are certainly some people who post good stuff that is relevant, for example @ltratt’s latest submission.

            Drawing the line is really hard. Some accounts are just using the site to promote every little thing they write, regardless of how trivial it is, or they are submitting what are clearly unthought out code ideas with no real implementation behind them, possibly looking for feedback. I really don’t care for these submissions and I think they de-value the site.

            I really want to discourage the latter and I really want to see more of the former. I’m content with the system of raising concerns on IRC or to the mods and having a judgement call made that way rather than banning it. Maybe we can stress something on the submission page.

            1. 4

              I agree with your point more than others’. The issue IMO is not self-posting, it’s low-effort posting.

              Stuff like “OpenSSL 1.1.1x released” is worthless, I’m on the mailing list for that. Same goes if your own blog post if it was written in 30 minutes.

              On the other hand, I found @gthm’s latest post about backups to be great, and it sparked a very interesting discussion in comments. The post was submitted by @gthm him/herself.

              1. 3

                Stuff like “OpenSSL 1.1.1x released” is worthless, I’m on the mailing list for that. Same goes if your own blog post if it was written in 30 minutes.

                Yes, exactly. Low-effort blog posts are actually the thing I’m talking about and want to curtail, and my experience is that they’re pretty highly correlated to self-posts.

                1. 6

                  A blanket ban on posting your own articles would be throwing out the baby with the bathwater, IMO. Besides, I don’t have the impression that people who post low-effort blog posts are especially concerned with following community rules/etiquette, so they’d probably get posted anyway.

                  I think a discussion on how we can curtail low-effort self-promotion would be useful, but I’m not sure if anything further can be done about this outside of some drastic limitations which would limit the normal usage of the site too. I think this is one of those “it sucks, but it’s the best we’ve got” kind of things.

                  1. 4

                    and my experience is that they’re pretty highly correlated to self-posts.

                    Do you have any sort of numbers, or is that merely a feeling? If it’s a feeling: mine is that it only correlates to self posts of a few notorious offenders (who get flagged or banned after a while anyway), most others are quite selective of what they share, and most likely it’s content that is not low-effort, even if it doesn’t interest me personally. A blog post every few weeks is certainly fine by me, and I’d consider it harmful to give those people the feeling they shouldn’t share what they do or think about. Don’t let a few bad apples spoil it for the rest of us. After all, there are other safe-guards in place (up-votes, flagging posts, etc…).

              1. 5

                Items marked in italics are not free as in beer

                • I would recommend Alacritty over iTerm2 - if you’re happy to use tmux or screen for tab/window management, it’s better in nearly every way.
                • Scroll Reverser to allow natural scrolling with the trackpad but not with a mouse, since you can’t set them independently by default.
                • Muse for better music display/control on the touchbar.
                • Bartender to manage all your menu bar icons.
                • Iina is an alternative to QuickTime Player with support for a lot more formats.
                • Skim : Preview :: Iina : QuickTime Player.
                • Contexts : Command-Tab :: Skim : Preview.
                • Monit for system stats monitoring.
                • Magnet for window snapping.
                1. 3

                  Alacritty is fine, but the profiles of iTerm2 is are very useful to avoid nested tmux sessions when connecting to remote machines, unless you want lots of terminal windows open. Having used both extensively, I can’t say one is significantly better than the other as a terminal emulator.

                  1. 1

                    the profiles of iTerm2 is are very useful to avoid nested tmux sessions when connecting to remote machines, unless you want lots of terminal windows open

                    Interesting, I haven’t come across a need for that in my daily use of Alacritty. Can you elaborate more on that use case?

                    I can’t say one is significantly better than the other as a terminal emulator

                    That’s fair enough :) I think “one is better than the other” is subjective, anyway, not least because it’s affected so strongly by personal priorities (I probably should have added “in my opinion” in my original comment). I value so much the fast response times of Alacritty that that single thing alone makes iTerm2 unusable for me, but I can understand that isn’t as important for everyone.

                    1. 2

                      I connect to a couple of machines that have long running tmux sessions in them, so if I use Alacritty (which doesn’t have tabs) and I use tmux in Alacritty for tab/window management I end up with a nested tmux session when I connect. It’s a workable situation, but all the ways to deal with it are not great. With iTerm2, I can set up a profile and bind it to a hotkey to connect to the machine in a tab.

                      With respect to response times, the only terminal emulator that I’ve found whose response time was actually noticable was Terminal.app. You really can’t go wrong with either Alacritty or iTerm2.

                  2. 3

                    Another open source alternative terminal is Kitty. I’m a recent convert after being a long-term iTerm2 user. IMHO, it’s lighter and less bloated and has all of the features I need. I did try Alacritty for a little while but find Kitty a little more polished.

                  1. 1

                    Nor can you simply change IFS to a newline. Filenames can also contain newlines.

                    I have done this a few times, and I dont feel bad about it.

                    I have a hard time understanding a valid usecase for having a filename or folder name that contains a newline. I agree that the best separator to use is the null byte, but then POSIX tool support for null separators basically doesnt exist:


                    That is why I think POSIX tools are quite less relevant than they used to be. Nowadays I use stuff like dust, fd, ripgrep, sd. POSIX tools just have too many issues like this that havent been fixed and likely never will be fixed. My current shell is PowerShell, after using Bash for many years. PowerShell has its issues, namely I think its bloated and getting larger, but when I am writing it I dont find myself trying to sidestep pitfalls like I constantly was with Bash.

                    Also I learned that in many cases, a shell script is the wrong tool for the job anyway. Many times you can write a 30 line shell script, or a 10 line Python or PHP script. So I try to pick the right tool. For example if calling a bunch of system commands, shell script is usually right, but just depends.

                    1. 1

                      I have a hard time understanding a valid usecase for having a filename or folder name that contains a newline.

                      There probably isn’t, but the filesystem supports it and it can be used against you, so you have to be mindful of it.

                    1. 22

                      I hesitate to post a Twitter thread in response to a submission of a Twitter thread (I wish foone would do this on a blog), but this is worth pointing out since the teardown makes it seem like the electronics version is a joke.


                      That said, this device is incredibly wasteful and irresponsible, and that the marketing around it is highly questionable.

                      1. 4

                        Thanks for sharing the rebuttal, that is a good perspective. I hesitated for a few days before posting that thread as I wasn’t sure how kosher Twitter was here. I always find these sorts of teardowns fascinating because it makes me realize how much “magic” we assume in things we see around us.

                        And, yes, I wish this was posted on a blog and not just a Twitter roll-up.

                        1. 9

                          In general, submissions of Twitter threads are discouraged, with the occasional exception, mainly because Twitter posts tend to be low content, high impact/drama info tidbits (read: news headlines). In this case I consider it an exception since foone tends to post long threads with lots of information. Still, I wouldn’t make a habit of it.

                          1. 2

                            Thank you, I appreciate the explanation and will certainly be sparing.

                        2. 2

                          The problem I see here is that the original read to me as purely technical “Oh wow, it seems unguessably complicated and in the end it’s an LED and a photo sensor” - (I myself would’ve expected measuring a change of current or resistance in the test material, but I would’ve been very wrong)

                          But this “rebuttal” is more condescending like “look at this idiot dissecting this thing where it COMMON KNOWLEDGE how it works” etc.pp.

                          The post by Naomi Wu is insightful, but I don’t get how people can be mad at foone, because I didn’t see any “omg the people who buy this are so stupid”. And that it’s wasteful to be thrown away after one use is a simple fact, the debate whether it’s worth it something completely different.

                          1. 2

                            What is it about this device you think is irresponsible?

                            1. 1

                              That it is single use and mass produced.

                              1. 0

                                So is the manual test strip inside of it?

                                1. 4

                                  Single-use electronics is much worse than a test strip, I think. Beyond being overkill, it’s polluting to produce, generates long lasting garbage, and consumes rare materials.

                                  1. 1

                                    If it was such a waste of “rare” materials, it would be more expensive.

                                    1. 3

                                      Of course, markets are efficient and always account for externalities 🙄

                                      1. 2

                                        Ah yes, the market is perfect, of course.

                            1. 6

                              This person says they have only been using Gnus for a week. Just means they haven’t used it long enough to know what’s wrong with it. ;) (They also say that they didn’t start following mailing lists until they started using Gnus!)

                              I used Gnus for a few years for mail and mailing lists. It is infinitely configurable but it is very sluggish. This is especially true when you use the search. Setting up search itself is a bit of a pain and it doesn’t get better when you have a lot of content.

                              It also has the problem that nearly every key does something, so if you hit a key by accident, you may end up doing something you didn’t mean to do, and when you try to remember the key to undo the action (M-x undo doesn’t always work) you end up messing something else up. Then it’s back to the tome of a manual to try and find what it is you did.

                              Gnus is okay for Usenet, but Usenet is basically dead. I’d maybe use it for mailing lists on Gmane (or wherever mailing lists are hosted on NNTP these days) but as a mail client it’s kind of annoying.

                              1. 5

                                A little while ago I read another of Traister’s C books, Programming in C for the microcomputer user. It’s equally as bad with respect to understanding C. In fact, it provides more evidence to support my hypothesis that he doesn’t understand the concept of the call stack. It’s also filled with awful examples of C programs that you should not learn from.

                                For example, here’s how he introduces loops in C (pages 38-39 in the book).

                                    int x;
                                    x = 5;
                                    printf("%d\n", x);
                                    goto QRP;
                                1. 1

                                  I guess a resubmit of this was inevitable…

                                  1. 3

                                    Harvesting/canning/drying high season.

                                    1. 1

                                      Nice! What are you canning?

                                      1. 2

                                        peeled tomatos, tomato sauce, dried tomatos, tomato consommé (with the steam juicer). gherkins (pickled and lacto) with various herbs.

                                        pickled zucchini salad is done my by elderly mum this week, I’m only the good-for (good for carrying ;) )

                                        carrots (quartered & frozen, julienne and pickled, quartered and lactofermented)

                                        lots of other stuff frozen (my bro brought some dry ice to tune up the chest freezers).

                                        In case you wonder: my parents have 8m+6m polytunnels and in the 8 raised beds (6×1.2m²) there is much stuff waiting. mostly heirloom variants. you have to scald/chill/skin the tomatos due to the thick skin, but the taste plays in a higher division.

                                        4-6 family staff in two open garages, and the canning took place under the pouch. only 4 jars broken this year :)

                                        Lots of work (I threw the towel sunday at 10pm after rinsing and washing the place), but also lots of fun and pizza and Krautkuchen (looks like https://www.pinterest.de/pin/303641199874222850/).

                                        And on monday you feel the difference in the (unstressed) eyes.

                                    1. 21
                                      • Celebrating 23 years of partnership with my wife.
                                      • Tinkering with a Rock64 board.
                                      • Putting together a new Ryzen system for my home server.
                                      • Running some C compilers that were released around 35 years ago.
                                      1. 16

                                        Email is a widely implemented, federated, decentralized protocol. This inherently makes it closer to the internet that I want to be using. It’s worth emphasizing protocol, and not user interface. That means that I don’t need to force other people to interact with it the way I do.

                                        On top of that, I find that I really dislike dealing with juggling and testing patches through pull requests. The experience just kind of feels clunky. I’d rather just pipe the email to patch(1) from my editor, test things out, comment on it, and if I like it, apply it with git am. But then again, I’ve met very few web UIs that I enjoy using.

                                        I’ll take pull requests on github – code is code – but if you send me pull requests on github, don’t be surprised if it takes an email or two to for me to remember to review it.

                                        1. 12

                                          It’s worth emphasizing protocol, and not user interface.

                                          I feel this is the kind of mindset that makes all these systems doomed to be relegated to comparatively small corners of the internet, rather than being the mainstream. At the end of that day what people really care about is Getting Stuff Done™ and not some fairly abstract argument about some protocol or the nature of the internet. Regardless of the validity of that argument, actually getting stuff done is just more important.

                                          There’s loads of comparatively simple improvements that could be made to email (or IRC for that matter) which would vastly improve the UX. A good start might be adding a simple way to do basic typographical formatting which doesn’t bring in all of HTML/CSS, but people be like “nonono, plain text monospaced 78 column wrapped (or 76? 74? 72?) without attachments is the One True Way™ to send emails!” So the UX sucks. And thus few people use it.

                                          I think this lack of pragmatism and “hacker conservatism” is really unhelpful and ultimately self-defeating. What we really need is a good look at email and the pain points people are running in to, and solve them in a way that makes it all less painful. This might require a compromise or two. This will, of course, never happen. I mean, we still haven’t solved bloody email wrapping problems after 40+ years even though the solution is simple and straightforward.

                                          1. 4

                                            But on the other hand ‘just get stuff done!’ leads to all sorts of negative side effects. One ought not just do things — one should do the right things, the right way.

                                            1. 4

                                              I think the solution to that is to start building protocols/applications/systems/specifications that do things the right way and allow people to get stuff done. Simply put, if the vast majority of people do things “the wrong way”, then there’s probably something wrong with “the right way” that prevents them from using it.

                                              Most people just aren’t very idealistic when it comes to these kind of things. I think that’s okay because there’s a lot of things in the world to be idealistic about, and you can’t be about everything.

                                          2. 3

                                            On top of that, I find that I really dislike dealing with juggling and testing patches through pull requests.

                                            I think the article is pretty clear that Github and Github-style pull requests are not the only alternative (and probably not a great choice).

                                          1. 12

                                            An example: The important part of a Lisp Machine and why people lionize them wasn’t that it was written in Lisp, but that the environment was wide-open and transparent.

                                            1. 13

                                              This is a big part of the appeal of Emacs. Elisp is arguably an awful language, but the ability to jump into source code and debug just about any part of it is very useful.

                                            1. 3

                                              Quite often stories are posted as links and no real conversation occurs

                                              Is a conversation necessary? To be honest, I find less conversation better most of the time. And conversation for the sake of conversation produces a lot of noise to anyone who is not originally part of that converation. I’d much rather read a well thought out response to a submission than a bunch of chatter around it.

                                              1. 1

                                                I perhaps should have used ‘discussion’ in this comment, as ‘conversation’ probably implies some level of banality.

                                                I don’t believe discussion is necessary but was under the impression that technical discussion was a key tenet of the site. These kinds of technical discussions often grow from seemingly innocuous comment exchanges.

                                                I also don’t believe requiring a comment from the initial submitter increases the amount of “conversation for sake of conversation” that occurs. The suggestion for requiring a comment from the submitter is primarily around providing context for the content and how and why it may be interesting to others. If that comment, or any subsequent comments are low quality, or noise, I would expect users to address that with the existing moderation capabilities.

                                              1. 2

                                                Another way is to be explicit in saying what shell the terminal app should run.

                                                1. 1

                                                  Given that the article mentions brew, being explicit would break upon update + cleanup.

                                                  1. 1

                                                    I’ve been using brew for years and haven’t had a problem. /usr/local/bin/zsh is a symlink for a reason.

                                                    1. 1

                                                      Another way is to be explicit in saying what shell the terminal app should run.

                                                      Thought you meant:


                                                      Did I misunderstand the above?

                                                      1. 2

                                                        I think GP is referring to, in this example, /usr/local/bin/zsh.

                                                1. 8

                                                  Emacs 27.1 has a wide variety of new features, including:

                                                  • Portable dumping used instead of unexec

                                                  Wait, really? Wow. I am almost in shock. unexec is one of the most insane things you’ll find in a program. I didn’t think they would ever get rid of it.

                                                  1. 6

                                                    AFAIK the reason for getting rid of it was that glibc wanted to drop the API that made it possible, but I’m not sure about the history on that. But it certainly reflects on the Lisp tradition of Emacs.

                                                    A cool thing about the new dumper is that you can load your configuration is --batch mode, dump it’s state to disk and then quasi instantaneously load it when starting Emacs.

                                                    1. 4

                                                      I never had a problem with the concept. It was the execution that was insane.

                                                    2. 2

                                                      I’m curious if this’ll work on some uh, other platforms I use. I’ve been hesitant to try Emacs because it’s not available on all the systems I work on, and the busted XCOFF64 unexec support was why.

                                                      1. 2

                                                        It was sure never going to work on z/OS! There was an Emacs port for z/OS floating around when I was at IBM but it was old. I think it was Emacs 19 or so. I don’t know what they did about the unexec problem.

                                                        1. 2

                                                          Yeah, Emacs devs tried to keep fixing it, but I don’t think it ever worked for anything but XCOFF32. I tried the portable dumper, and it seems it to work dumping at temacs stage, but not loading. How sad.

                                                          1. 2

                                                            You don’t have to use the dumper stuff in emacs. Emacs runs on a lot of systems that don’t support unexec that aren’t linux.

                                                    1. 1
                                                       FOO="from a file"

                                                      So we edit our script one more time:

                                                       source ./vars
                                                       echo "This is outputted ${FOO:-"from the script"}

                                                      What will happen now?

                                                      It’s instructive to realize what source (which is a synonym for .) does to realize that this is not all that surprising. This is (nearly) the same as writing the contents of vars directly into the file at the point of the source, so it will just (re)define FOO.

                                                      1. 1

                                                        I was content using Alacritty for a while, but then I found it doesn’t work on remote X sessions and in my VMs due to what I assume is a GPU requirement. That’s too bad since I found it to be decent to use.

                                                        1. 7

                                                          The article decries libraries as software bloat, but in 1993, it was the opposite declaration.

                                                          Poor management of software development is another important contributor of flab. Good management would prevent programmers from spending countless hours reinventing wheels, all of which end up on your hard disk.

                                                          Also, OO and reusable objects will save us from oversized software.

                                                          Perhaps the most promising development is the coming of object-oriented operating systems. The upcoming Taligent operating system from Apple and IBM, along with Cairo from Microsoft, promises to save unnecessary code by providing the user with a series of objects that can be purchased, enhanced, and linked together as necessary.

                                                          Byte magazine, April 1993.