1. 20

    the next time I have to buy a UPS for a piece of equipment that requires power 24/7, I will buy a line-interactive UPS rather than a standby UPS

    I’ve been wondering why one would get an office, standby UPS for a server (home or otherwise), but then I realized someone who has never been designing server installations indeed has no way to even know what keywords to look for.

    And now that fewer and fewer companies even have on-premises server rooms, it may be becoming a somewhat obscure knowledge even among professional sysadmins.

    Maybe it’s time for a collaborative “how to make a server closet” manual…

    1. 6

      I would certainly welcome a guide like that.

      1.  

        I second this. It would be extremely valuable to some of us who are less familiar with this.

      2.  

        That would be a lovely piece for all of us with nascent home datacenters. :-)

        1.  

          “how to make a server closet” manual

          Time to dig through the photos I still have for “how not to make a network/server closet!”

          1.  

            Maybe it’s time for a collaborative “how to make a server closet” manual…

            That would be awesome.

          1. 1

            Not much more than sharing a dank meme and plugging some dude’s book. Points for sharing; valid points nonetheless.

            1. 2

              I am delighted and disappointed that this was something for hypervisors! OVH has a wonderful KVM on their control panel. It’s been touch and go for me with it, mostly because they use something like getty over SSH, I think. (Change your SSH port, it removes a lot of the noise in logs! Less headache to sort through!) Right now I’m looking into something similar but am plugging straight into QEMU’s system console (not the monitor, yet. QMP is really cool! Also, libvirt is too big, it’s a little less domain-specific).

              Very interesting use of a capture card.

              1. 14

                I request a follow up post where an existing blog post is rewritten to show how it could be improved!

                Even better, I’d like to see the author of this post show a finished blog post, and the process of getting there from an imperfect original? How do you debug a blog post?!

                1. 6

                  I was thinking about doing something like this back in January.

                  If anyone has a blog post they would like me to edit, feel free to send it my way (e-mail, PM, etc.). If I think it can be improved and it overlaps with my areas of interest / knowledge, I could either offer suggestions, or rewrite it myself (although I do have a lot of my own posts to write, so no promises).

                  Warning: I’ll likely delete 50% of the words in the post while retaining the meaning. My last editing pass almost always consists of deleting words.

                  And I suppose you should be comfortable showing the before-and-after, because that’s the request here. (And of course I’ll be interested if anyone thinks the “after” version is worse :) )


                  For context, I’ve received a lot of good feedback on the technical writing in my blog:

                  • This is a great write up! I wish I saw more of these types of posts

                  https://old.reddit.com/r/programming/comments/7xlca1/commonmark_is_a_useful_highquality_project/

                  Another warning is that good writing requires more effort / more rewrites than most people are willing to put in. Unfortunately I’ve backed off on that for the last couple years, but I want to get back to it. It’s good to know that you can do it if you put enough time in, even if you’re not always willing or able to.

                  So it would be ideal if you have a lot of time to spend on one blog post (and that might be true for more people now due to the state of the world.)


                  I should also point out that I borrowed a CSS rule or two from http://bettermotherfuckingwebsite.com/ :)

                  http://www.oilshell.org/css/all-2020.css

                  1. 1

                    You could try linting your blog post: https://www.gnu.org/software/diction/

                    Works ok for me.

                    1. 1

                      This is an awesome idea! Something like https://motherfuckingwebsite.com/!

                      Not just technical people are bad at this, neither. Communicating effectively is difficult in every context. We don’t always say what we mean; abstract concepts are even harder to talk about than something you can touch.

                      How do you debug a blog post?!

                      I used to be very harsh with editing whenever somebody asked me about writing in college…

                      1. 3

                        I have an obligation to mention http://bettermotherfuckingwebsite.com/ as well.

                    1. 17

                      I wish they’d release the art assets under some kind of CC license, maybe even non-commercial, when they open-source old games. I owned a legal copy of RA, but it has long since disappeared through moving, etc.

                      1. 6

                        I wonder if this has to do with a retailer like GOGames or Steam still selling copies/full licenses.

                        1. 5

                          I guess the reasoning is that having the code freely available doesn’t cost the publisher anything in sales, whereas releasing everything (including art) would. I think this makes sense.

                          1. 4

                            You don’t need the art to make mods. If you want to make a mod that uses the art, don’t distribute it, reference a person’s existing installation. I feel like this is a really fair compromise between profit and mod-ability. This is what id software has been doing for decades now with Doom, Quake, etc. I believe Doom’s source code was released in 1997 or so.

                          2. 2

                            Pretty often, it’s that some assets are acquired with a license to only use it in that product. This pretty often applies to music, sound effects and visual art. Very often, the code of old games is produced almost entirely in-house, though, or they just use common API. It’s far easier to make that ready for release.

                          1. 4

                            “Porting machine go BRRRRR”

                            I’m not sorry

                            1. 8

                              “But first, we need to talk about parallel universes”

                              1. 1

                                Well crap I knew I missed something. I’ll see if I can fix that.

                              1. 9

                                Disclaimer: opinions are my own, and I no longer do IT or software development for a living.

                                Anyways, I work for an ISP (cable TV) doing installation and troubleshooting. One of our internal tools for telemetry (mostly modem signal level/quality statistics over time, used for provisioning service and diagnosing if there is a problem with someone’s service) is wonderful and checks all boxes.

                                It makes our jobs in the field infinitely easier. A customer with chronic issues with their internet or telephone service will call in, and have a technician out. When one of us is out at their home or business, we find nothing wrong with any of their cabling from the telephone pole to their modem. At this point, most technicians can only throw their hands up and say that it isn’t a problem here, have a nice day.

                                Our telemetry allows us to conveniently (from a smartphone) change orders for obscure provisioning issues, and most importantly, view statistics for an entire network (generally bound geographically) and say that yes, we are having issues in the area and that you, dear customer, are not the only person having issues with your service, look and let me explain. Now, I can use the proof I have from our telemetry to present this to our “outside plant” maintenance crew or my boss, and hopefully get things fixed.

                                Whether or not anything ever gets fixed in a timely matter is a different topic. :)

                                The development team is always looking for input and for ways to make our telemetry more useful. The user interface is intuitive, and the important information it is forthright with. From the outside looking in, that team is having one hell of a fun time developing a useful product, mostly because their objective is helping out our other departments, not making a profit or gaining internet cred.

                                1. 1

                                  I mostly live in bash.

                                  19:16:43 kbjensen@obsidian:~/prog
                                  0 $ 
                                  

                                  Here’s the string with the escapes:

                                  PS1+="\[\033[38;5;32m\]\t \[\033[38;5;34m\]\u\[\033[38;5;37m\]@\[\033[38;5;31m\]\h\[\033[38;5;37m\]:\[\033[38;5;32m\]\w\n\[\033[38;5;34m\]\$? \[\033[38;5;37m\]\$ \[\033[0m\]"
                                  
                                  1. 17

                                    I’d like a tag that covers the internet minus the web - email, NNTP, gopher, IRC…

                                    1. 7

                                      So, https://lobste.rs/t/networking?

                                      (Although that tag could definitely use a more useful description, it’s listed as “networking - Networking” right now.)

                                      1. 22

                                        networking feels best suited to the protocol layer 3, such as IPv4, IPv6, or IPsec, and their management through routing, firewalling, etc.

                                        But that is like my opinion. I still add networking tag for email protocols from time to time.

                                      2. 4

                                        Seconded.

                                        1. 5

                                          This. If email is a tag, why not ssh? If ssh is a tag, why not telnet? If telnet is a tag… and so on.

                                          1. 26

                                            It’s because tags are not a complete, idealized series of protocols or other topics. Rather they are metadata under the site’s computing-focused theme. They’re created by “submitting, discussing, and voting on meta-tagged requests about them,” for which each tag has to make it’s own case for inclusion. The resulting ontology is fit for the purpose of discussion on this site and is not trying to be anything more than that.

                                            Tags are used to organize and filter topics, with this community more interested in some protocols, tags, topics, or subjects than others.

                                            1. 9

                                              HTTP is not a tag. SMTP / IMAP / MIME / POP / DKIM / SPF / Sieve are not tags.

                                              Web is a topic. Web is a tag. Email is a topic. Can email be a tag?

                                              That OTOH, I would welcome a protocol for discussing about a particular/alternative email protocol.

                                              1. 8

                                                Because the tag system is not meant to form a complete taxonomy for all submissions but to serve the purpose of allowing users of the website to focus on topics or ignore them.

                                                Think of it like the ideas behind a Huffman code but for focusing/ignoring stories. When there are many stories that share some common element, you can focus/ignore by using a short tag. When there are few, you just focus/ignore by handling the individual stories.

                                                1. 2

                                                  Do the work to show there is the demand for those tags (as had been done here, for this proposal) then maybe people would support their addition too.

                                              1. 13

                                                I always thought that as should be reused here: if foo.bar() as x: , which seemed to provide appropriate symmetry with the with statement, that solves a similar binding problem.

                                                Regardless of the bike shed color, though, I used to wish for this everyday for years, so I am glad it finally came!

                                                1. 8

                                                  That would introduce ambiguity in the normal with statement. Now with x as y: could be a simple assignment or could be creation of a context manager. Instead with the new syntax

                                                  with y := f(x) as z:
                                                  

                                                  we have that y would be assigned f(x) and z would be assigned y.__enter__() (I think… well, I hope).

                                                  https://www.python.org/dev/peps/pep-0572/#alternative-spellings

                                                  1. 4

                                                    Serious question: If using a with statement, whose job it is to manage the context manager, why do you actually need anything more than what z is, generally speaking?

                                                    Additionally, I had to stop and really think about what with y := f(x) as z: is doing.

                                                    That link also says the following:

                                                    To the contrary, the assignment expression does not belong to the if or while that starts the line …

                                                    I disagree. In the same way that the with statement owns the result of whatever.__enter__(), the if statement owns the result when evaluating the conditional in a boolean context. But, perhaps that means the as z should then provide the boolean value, which is useless given, the branch taken implies it.

                                                    I don’t have a horse in this race, as I haven’t seriously done Python in 6 years or more. I’m happy they’ve made a change.

                                                  2. 3

                                                    Very disappointing to see Lobsters replicating this style of comment from HN and voting it right to the top. The top response to a post like this should not be bikeshedding syntax.

                                                    1. 6

                                                      Wholehearted agreement. I’ve noticed that as the lobsters community has grown, its focus has shifted much farther off-center with a growing noise-to-signal ratio, including the stories, not just the comments.

                                                      1. 2

                                                        I am not sure what type of discussion you are looking for on an article like this, and even praise posts: “great feature addition!” “Woohoo! Pat everyone on the back!” have the potential to get bike sheddy.

                                                        “Uhh, it’s not a feature, it’s a backwards incompatible language change!”

                                                        “Why are you praising this? It’s obviously a horrible idea!”

                                                        “Patting someone on the back is offensive! Instead, you should send a donation to the PSF to ensure developers are compensated for these kinds of changes, to say thanks.”

                                                        Further, to get really really meta here, I don’t like the color you are painting my comment. My comment offered a statement of my surprise and then specifically said: “no matter! I am glad the feature now exists!”

                                                        I hoped for a reply that summed up the argument for doing it the way it was done, since the article doesn’t do so—received one, and then asked a follow on because I still don’t see a solid reason to introduce := over as. Feel free to downvote that part of the thread as troll, because you could certainly read it that way.

                                                        Lastly, I really dislike these bike shed comments about the Lobsters community in comparison to HN. There are social rules in place here, and facilities for ensuring discussion is on topic and useful. Obviously, a number of community members agreed with my sentiment and voted it up. Perhaps these folks were an elite squad of programming language designers… but, they are the community we have, so…

                                                        1. 2

                                                          I don’t have a problem with your comment, I have a problem with people just upvoting easy to consume content. That’s a criticism of the way upvotes work (I think they should probably require a reason, just like downvotes: insightful, correction, helpful, etc. as options), a criticism of the site, not a criticism of you. I apologise that I didn’t convey that in my comment.

                                                          1. 1

                                                            In a way, it may not be your comment so much as the attention it gets. Having a variety of voices in a community is important and your opinion is valid. Whether it should be head and shoulders above other comments might be more of the issue. It gives an impression of authority and undercuts other comments. (I.e., what this person says must be important because so many people agree with them and what this other person says must not be important because no one has agreed with them.)

                                                            Up-voting and down-voting aren’t terrible because they do provide a way to scan through lots of comments and articles, but the game changes when the audience grows.

                                                          2. 1

                                                            I totally agree. There have been a number of changes, both proposed and accepted to Python that made me say “Enh? REALLY?” but this one is not among them.

                                                        1. 4
                                                          1. Absolutely: rework code until warnings are 0 because of exactly this + issues across compilers and platforms

                                                          -2. Did not understand why the fill bits are not 0 but the last bit-

                                                          https://stackoverflow.com/questions/6555094/what-does-cltq-do-in-assembly

                                                          Gives the answer: its a signed expansion.

                                                          1. 5

                                                            Yes! And I’d go a step further: once you get down to warning-zero, turn on -Werror to make sure no one introduces another warning.

                                                            1. 3

                                                              bonus points for -Wall -Wpedantic

                                                              1. 1

                                                                Not quite. The only warning I let slide is:

                                                                warning: ISO C forbids assignment between function pointer and `void *'
                                                                

                                                                But that’s because POSIX requires that behavior. But otherwise, yes, I will crank up the warnings when compiling.

                                                            1. 3

                                                              The problem is, that we have to treat work as an environment where we do not feel like we are surrounded by predators. Sure, you can steal somebodies purse and car keys or even lunch to prove a point, but honestly, I do not see where that leads to. Yes there are bad guys and all that, but things have to stay in balance. Are we all supposed to have firearms on ourselves just in case? That is what this seems to lead to. Be afraid of everybody and trust nobody. What kind of a world is that?

                                                              Also, laptop locks are funny these days where everybody has a Mac and no way to lock them…

                                                              1. 7

                                                                Be afraid of everybody and trust nobody. What kind of a world is that?

                                                                Capitalism?

                                                                1. 2

                                                                  “An armed society is a polite society.” -Robert Heinlein, Beyond This Horizon

                                                                  The point of the talk is that security starts at the physical world, and that everyone is afraid of “evil hackers” or Russia/China, when they should be concerned about who’s in their facilities.

                                                                  An unrecognized face should definitely be questioned, which is why at high security facilities (i.e. an airport), keys and cards are required to get into say, the data room, with an escort. Obviously, visitor badges should be required, and an escort is a good option, also, in order to keep out the bad guys at the physical layer (obviously, this doesn’t include security at every other layer, such as a legacy telephone system voicemail running on NT 4.0 that can be NetMeetinged into and compromised very simply, or someone having a 0-day for a service ran on-site and exposed to the public).

                                                                  1. 3

                                                                    “An armed society is a polite society.” -Robert Heinlein, Beyond This Horizon

                                                                    By that definition the US is the politest place in the world. It clearly is not.

                                                                    1. 1

                                                                      It may not be, but then again, not everybody in the U.S. owns a firearm.

                                                                      1. 10

                                                                        The US does own many more firearms than other notoriously more-polite societies (Japan, say) though.

                                                                        The obvious conclusion here is that there’s no real reason to think that the fun Sci-Fi Writer had any real insight into or facts to support his take on the topics of armed civilians, trust, and what makes for a livable society – at the end of the day it’s just a pithy turn of phrase.

                                                                        1. 4

                                                                          Im a pro-gun person from a former, murder capital in the South: Memphis, TN. Most of us would laugh at the quote given the number of assholes and thugs we’ve run into in our lives.

                                                                          We do think a high amount of firearms, esp concealed, reduces number or success of physical attacks since many attackers are basically wimps or arent in top shape mentally. Many of us think of it as check against government worst-case scenarios. For many others, it’s a tradition, recreational activity, family bonding, protecting cattle/crops, and/or self reliance for food sources. A few deer can feed a poor family quite a while for the price of some bullets. Grocery stores nowhere near that cheap.

                                                                          It doesn’t make the area more polite, though. Some situations are even scarier when they might have concealed weapons. Hell, some calm people become assholes when they have power of life and death at their fingertip.

                                                                          1. 4

                                                                            An armed society is a society that thinks problems should be solved with arms.

                                                                            1. 1

                                                                              An armed society is one that thinks a corrupt government might be a problem that takes guns to solve. That problem and solution is how America itself was created.

                                                                              Then, they created a Constitution. It said most problems are to be solved by individual citizens within the country’s laws, legislative bodies, executive branch/agencies, and court system. And in pro-gun America, that most problems are resolved using those instead of the guns totally disproves your point in general case. Cops and gun owners rarely shoot people out here. Mostly gangsters doing that.

                                                                  1. 5

                                                                    I’ve been working on a follow-up to a discussion I had on how GNU’s implementation of yes had a higher throughput than any other implementation from their use of buffering two pages of "yes\n". (Reddit post on r/unix, lobsters)

                                                                    I’m interested now in benching the speed of a virtual terminal, hopefully it’ll be ready by the end of this week!

                                                                    1. 10

                                                                      I’ve only read Masters of Doom this year, I haven’t been reading much this year. I think someone else recommended this book here on lobsters, and I would very strongly recommend it, it goes behind the scenes of Doom’s development and id Software’s internal structure and how it influenced the games id developed.

                                                                      It’s about 350 pages, I think I finished it in about a week.

                                                                      1. 6

                                                                        Finally getting around to finishing Masters of Doom. Excellent story about Doom, id Software, some of the engine technology, and the culture surrounding all of it.

                                                                        1. 1

                                                                          What do you think of it? It’s been on my reading list for years.

                                                                          1. 3

                                                                            I loved it. Very engaging story and well-written. I don’t think anyone interested in the subject matter would be disappointed with the book.

                                                                        1. 17

                                                                          This is so cool! I really like the structure of this post: recognizing something one person has done well (and therefore other people have failed) and then explaining it

                                                                          1. 10

                                                                            “done well”

                                                                            https://github.com/openbsd/src/blob/master/usr.bin/yes/yes.c https://github.com/coreutils/coreutils/blob/master/src/yes.c

                                                                            optimizing to the extreme for fun is kind of interesting, but to do it at the expense of clarity with nothing really to gain seems like a loss.

                                                                            1. 9

                                                                              I really don’t like GNU’s implementation, NetBSD and COHERENT seem to have the most readable yes out of all the yesses I looked over (BusyBox had the worst). It may be possible to apply this to other utilities like dd and cat, which I plan to look into soon (unless someone else beats me!).

                                                                              1. 4

                                                                                Who on Earth thinks that BusyBox thing is a good idea? I’d hate to see anything even remotely complicated from whomever wrote that.

                                                                                1. 5

                                                                                  It’s super compact both in code size and resource consumption (one stack variable!!), and it’s still relatively easy to understand. I’d say it’s doing its job marvellously.

                                                                                  1. 3

                                                                                    Havent had time to look at the code, but alpine linux uses it by default. And it’s targeted mostly to embeded linux, so I’m guessing ultra optimization is more important to them than readability in this case.

                                                                                    1. 1

                                                                                      Yeah, that isn’t cool. I thought they were just trying to avoid reusing a variable, then I realised they were reusing a variable, and/or moving on to argv[1] :(

                                                                                  2. 8

                                                                                    with nothing really to gain

                                                                                    One poster on Hacker News suggested this: https://news.ycombinator.com/item?id=14543640

                                                                                    1. 4

                                                                                      Classic HN. Always reject the mundane explanation that the program is fast because somebody wanted it to go fast in favor of a narrative involving an epic struggle against corporate overlords.

                                                                                      1. 5

                                                                                        Check the thread again, GNU explicitly asks people to do this: https://www.gnu.org/prep/standards/standards.html#Reading-Non_002dFree-Code

                                                                                        1. 1

                                                                                          So why did they wait so long to make this change?

                                                                                          1. 5

                                                                                            I’m rejecting your characterization of that HN comment, because this is a common method for GNU programs. I am not rejecting your assessment of why it changed though.

                                                                                    2. 5

                                                                                      This wasn’t done “with nothing really to gain” (although the gain might be subjective). It was performed as a reaction to a filed bug: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=20029

                                                                                      1. 2

                                                                                        Interesting, I wonder what the backstory to that is. The example is oddly specific enough (involving a pipeline of yes, echo, a shell range expansion, head, and md5sum), that it look like an unexpected slowdown someone actually ran into in practice, vs. just a bored person benchmarking yes.

                                                                                      2. 1

                                                                                        If “yes” was written once, decades ago, and someone spent all of one entire week validating, I’m ok with getting a 10x performance increase on every *nix system in existence ongoing.

                                                                                        I love it when pipelines/shell scripts can scale vertically for a long time before having to rewrite in some native language.