1. 1

    Hm, I used to convert web logs to JSON records – one per line – and then use grep to do a pre-filter! It can filter out 90% or 99% of the lines that need to be filtered, and then you parse JSON to get the exact filter.

    grep is amazingly fast! This seems like the same idea taken a little further. I’ll have to look at how they do it in more detail.

    1. 2

      Section 7.2 of the paper actually uses grep/ripgrep as a basis of comparison. It seems the two have the same or better performance than Sparser, which still wins out by a small margin for the most selective queries.

      1. 2

        Yes. Always use grep first, even if one awk would do. This special one purpose only tool really cut the time down. Especially when you want to work on less than 100 million lines out of a billion lines.

      1. 12

        The whole point of shell scripting is getting shit done and move on to focus on more important stuff.

        Once the script takes the life of its own and try to grow up, just spend some time on this teenager and make it speak in a real adult language. Another option that is sometimes preferable would be keeping it young and little, while replacing its limbs with cybernetics made of the real grownup stuff.

        1. 3

          I would say the point of shell is composing other programs well, not hacking stuff poorly, that is what python/perl is for :)

          That being said, I agree with you, shell has so much potential, but is so shitty for some unknown reason.

          1. 3

            For me the whole point of shell scripting is that if it breaks, I can easily decompose the program into parts, and execute each part independently.

            For getting things done, I’d rather use any general-purpose dynamically-typed scripting language.

          1. 2

            Intel KNLs just work in Julia.

            I wonder what “just work” actually means here. It runs. Sure, it’s still x86. How is the performance really? What is the programming model? Anybody here has more insight?

            1. 2

              This is a really long rant about how 1-dimensional ascii text makes poor representation for elementary school math. I’m not going in to any higher math. But ultimately, math is really about abstraction. It’s about make a name for a blob of things, and forget the things inside the blob. Now you have more mental ability to think about other blobs and name them and collect all the new names and put them all together and repeat the process. All the way goes higher and higher.

              Just like software engineering.

              For people working on a specific level of abstraction, it is enough if they only hold that level of abstraction. So anybody on Rails wouldn’t care if malloc is a new grape variety. Unfortunately the usual elementary school math is so informationally denser than a common piece of code, that every encounter of one line formula could make the code reviewer’s mind implode, simply because every one of those + - * / actually means one operation, and usually that single line involves more than a handful of variables.

              If it could make your reviewer happy, name all the formula and put each in a separate functions. Instead of

                  s = (1/2)*a*t^2
              

              write

                  s = calculate_distance(a,t)
              

              and throw that function toward the end of the file. OUT of SIGHT.

              1. 7

                Worth noting that s-expressions avoid a lot of legibility problems discussed in the article. If we look at the first example under the “providing immediate feedback” section where traditional notation looks like:

                50.04 + 34.57 + 43.22 / 3
                

                this would be expressed as:

                (+ 50.04 34.57 (/ 43.22 3))
                

                which would be hard to confuse with:

                (/ (+ 50.04 34.57 43.22) 3)
                

                A lot of people seem to have the impression that s-expressions are harder to read than traditional syntax, but I find the opposite to be the case. With s-expressions you have simple and predictable rules that remove a lot of mental overhead around figuring out what the code is doing.

                1. 2

                  Similarly just having the same precedence and associativity for everything would give you an easy-to-predict and easy-to-read syntax. This way you gain terseness, but you have to get used to the associativity of whatever mechanism you’re using, whereas s-expressions (or *shudder* XML, etc) are more portable, but require you to explicitly state the tree with more characters.

                  For example, right associative:

                  50.04 + 34.57 + 43.22 / 3
                  

                  And for the sum of everything over three, it would be:

                  (50.04 + 34.57 + 43.22) / 3
                  

                  This is the style that APL/J/K and various languages inspired by them tend to use (they also add different precedence for certain operations that take another operation as one of their inputs, such as fold). Many people use such languages as an enhanced calculator (there are plotting utilities made for them, etc). For example, in K, where division is % and assignment is ::

                  force: (6.67e-11*mymass*collidingmass)%radius*radius
                  yearlybill: 12*rent+electric+internet
                  

                  Or with functions, where / is fold:

                  force:{[m1;m2;radius](6.67e-11*m1*m2)%radius*radius}
                  yearlybill:{[monthlyutilities]12*+/monthlyutilities}
                  
                  1. 1

                    Then you get the situation that 1 * 2 + 3 and 3 + 1 * 2 mean different things, which is horrible, because people will always assume that they don’t.

                    I don’t know why people have such a problem with a + b + c / 3 meaning a + b + (c / 3). It’s just something you have to get used to, it’s not really that difficult and there are much bigger problems that need solving. But if it’s really such a big deal, just make it a function \frac{a + b + c}{3} in LaTeX is good enough for mathematicians, so frac(a + b + c, 3) should be good enough for programmers.

                    1. 1

                      Then you get the situation that 1 * 2 + 3 and 3 + 1 * 2 mean different things, which is horrible, because people will always assume that they don’t.

                      I don’t know why people have such a problem with 1 * 2 + 3 and 3 + 1 * 2 meaning different things. It’s just something you have to get used to when using a different language, it’s not really that difficult and there are much bigger problems that need solving.

                      1. 2

                        The universal rules of mathematical expressions create a strong precedent. People expect them to hold. They get confused when they don’t. Even if they are arbitrary.

                        I’m not aware of any language anywhere in all of programming or mathematics that uses different rules and has sustained any kind of popularity. Seems like a hard requirement to ever be successful in my experience.

                        1. 1

                          They aren’t “universal”. See my other comment. Sustained any kind of popularity is a vacuous statement Forth is used extensively in embedded applications. Your calculator uses a left to right operator precedence and yet you don’t struggle to translate from PEMDAS or whatever system you use.

                          1. 2

                            They are absolutely universal. All mathematicians agree on the order of operations here.

                            1. 2

                              Funny because every mathematician I’ve talked to, and listened to about order ambiguity agrees with me and says you should put parentheses to disambiguate.

                              The reality is that because it is cultural means it does not matter if you have a solution to the problem if not everyone is using it. In my opinion abandoning order of operations is much simpler and the order is arbitrary, needlessly convoluted, and does not afford for the expansion of operators. You can make things abundantly clear by using polish notation.

                              - / 2x 3y 1

                              Before you throw your arms up in frustration yes there are proofs done in this format, and they’re great.

                              1. 0

                                because it is cultural

                                Yeah but it isn’t cultural. It’s universal. as I’ve explained

                                1. 1

                                  I suppose since it is universal that there are severe pedagogical deficiencies, which doesn’t surprise me terribly. Still would have been completely avoided with a simpler and clearer precedence system. It took me a while to realize that you were talking about strictly mathematicians whereas I was talking about all people. Apologies for my poor communication.

                        2. 1

                          “Order of operations” have been an arbitrary curse on mathematics since their creation, different cultures don’t actually agree, in addition it restricts the creation of new operators. I’m not particularly invested in left to right or right to left, but either would be much simpler than the random format we have now.

                          1. 2

                            Cultures that don’t use ÷ and × often don’t write sentences left-to-right and pages top-to-bottom. They might not even use arabic numerals.

                            I don’t see how it restricts the creation of new operators. Mathematicians seem to have no problem introducing new operators: ∧, ∨, →, ↔, dots, existing operators in circles and all sorts of silly new operators are used all over algebra without any real issue. If it’s not obvious from context, you put brackets in.

                            1. 1

                              What order precedence does modulus have? Is it the same as division or should it be done first, or last? If we had a order precedence that can accomodate new operators this question wouldn’t need to be asked and I wouldn’t have to use parentheses which lets be honest is a hack.

                              1. 1

                                Modulus isn’t a standard mathematical operator. But if you defined it, you could just say what its precedence is.

                        3. 1

                          wait are you using PEMDAS or BODMAS?

                          1. 1

                            Same thing. Brackets = parenthesis, multiplication and division are done at the same time and so their order is whatever sounds better when reading out the abbreviation. What synonym of exponent does ‘O’ stand for?

                            1. 1

                              Multiplication and division are not done at the same time. Orders I believe. http://www.math.harvard.edu/~knill/pedagogy/ambiguity/

                              1. 1

                                Multiplication and division are always done at the same time (with left-associativity - a÷b÷c = (a÷b)÷c in mathematics and this follows over into programming languages that use * and / to emulate × and ÷.

                                2x/3y-1 is not well-defined notation. It’s not mathematics, because mathematics doesn’t use a slash in the middle of some linear text for division (it uses a horizontal line or ÷ depending on the context, although really depending on the level, because I haven’t seen anyone use ÷ since primary school), and it’s not any programming language I’m aware of either. Randomly writing down some text then claiming it’s ambiguous is pretty silly.

                                2 × x ÷ 3 × y - 1 is completely unambiguous, on the other hand: (((2 × x) ÷ 3) × y) - 1. Try putting it into google, or asking someone what 2 × 9 ÷ 3 × 2 - 1 is. Their answer is 11.

                                Mathematicians almost never use ÷ anyway, we write (2 x) / (3 y) where the line is horizontal (not possible on this platform as far as I can tell). But the same rule applies to addition and subtraction: 2 + x - 3 + y - 1 is universally agreed to be (((2 + x) - 3) + y) - 1.

                                Programming languages usually approximate ÷ and × with / and * for the sake of ASCII, so the same rules apply as with those operators. I’m not sure I know of any programming language where you can multiply variables by juxtaposition.

                                I once saw a proposal that it should be based on whitespace: 1+x * 3+y would be (1 + x) * (3 + y), while 1 + x*3 + y would be 1 + x * 3 + y. I thought it was quite a cute proposal, if perhaps prone to error.

                                1. 2

                                  Americans use a slash in the middle of linear text to mean division. You clearly didn’t even read the article. Just because you can do multiplication and division from left to right doesn’t mean that’s what people do.

                                  1. 1

                                    Americans use a slash in the middle of linear text to mean division.

                                    Don’t think so.

                                    You clearly didn’t even read the article.

                                    The article has a bunch of monospace ASCII.

                                    Just because you can do multiplication and division from left to right doesn’t mean that’s what people do.

                                    It’s what literally everybody in the entire world does.

                    1. 2

                      The first things I checked is if there is anything in between 2336 and 237A. Nope.

                      1. 3

                        (APL symbols, for folks following along at home)

                        1. 2

                          I don’t think there should be. This is for iconic fonts, where they put a bunch of useful “icons” in the private use area of of the Unicode code space, and then you can use those codepoints wherever you use text to get useful little icons.

                          The project linked here patches other fonts (including, presumably, those that have APL characters) to include these icons.

                          (Note that I don’t really like the use of icon fonts, but that’s neither here nor there…)

                        1. 2

                          Is there a list of SQL operations that are optimal in SQL and that are not?

                          What are the operations that SQL truly excels? What are the operations better handled with commands for text streams/files?

                          1. 4

                            No. There are no SQL operations that are “not optimal” in SQL. A query is a description of a result, not the execution strategy. Any execution strategy can be chosen by a SQL engine, and obviously optimizers aim to choose the optimal one.

                            There is only one situation where using text streams is objectively better: the operation you want to do isn’t implemented efficiently by your SQL engine, which is a problem with your engine, not SQL itself. There are even SQL engines that operate on text streams directly, e.g. Hive, or q.

                            The author has a different problem, they don’t know enough about SQL / their SQL engine to make this query work. Which the author actually states in the post.

                            As experimenting with each suggestion could easily take at least half a day, I proceeded with a way I knew would work efficiently and reliably.

                            This query is an “optimal” case where SQL typically excels: most SQL engines are perfectly capable of using this exact execution plan. Given that personal constraint, they made a reasonable choice to run the query outside of their database using an approach they understand.

                          1. 1

                            Is there any implementation similar to /mnt/acme? The standard acme heavily uses the file server internally, and all the custom scripts depends on the availability of /mnt/acme too.

                            1. 1

                              It says that is a future TODO.

                            1. 2

                              They [TrueType fonts] look ugly in my opinion and rendering of these is slower (you can measure it).

                              It’s true they render slower. I have never found it to be a problem. (And I don’t get the author’s deep affection for the Terminus font.)

                              1. 5

                                It is strange, taste in fonts. I’ve searched for a different programming/terminal font a few times but Terminus looks best to me.

                                1. 4

                                  It’s pretty much the difference between dot-matrix printing and laser printing.

                                  All the bitmap fonts become either ugly or unreadable on a true retina screen.

                                1. 2

                                  (1) The memory sizes are some fixed numbers. E.g, 32, 64, 128, etc, not random;

                                  I had a hard time parse this line. What does “fixed numbers” even mean? Does it mean the numbers have to be compile time constants?

                                  1. 2

                                    Sorry for my poor English. Because I use memory size as the key of the hashtable, and the key space of hashtable will affect performance. If user only uses some “fixed” size memory, it will have a better performance. Otherwise, the performance may be downgraded. For example, I use CUDA to do some mathematical computation, and only allocate memory in some size: 8K, 16K, the performance gets a remarkable improvement compared using the original CUDAMalloc* APIs, thanks!

                                    1. 2

                                      I still don’t understand what you are saying.

                                      What is a ’“fixed” size memory?

                                      Some magic numbers picked by tuning performance? Do I need compile time known constants? Can I give a number at runtime?

                                      I guess you actually want to do a page aligned allocation. Is this what you are saying?

                                      1. 2

                                        What “fixed” size means in this case is that you expect to have many allocations/frees of the same size, i.e., you are allocating and freeing many objects of the same size throughout execution of the program.

                                        And you very likely do not want to page-align ever allocation of, say, 100 bytes. It would be very inefficient if every allocation of 100 bytes was on a different 4K page.

                                        1. 1

                                          Yes, it should be “arbitrary”. Sorry for my poor English.

                                          1. 1

                                            I update README, hope this can make clear. But sorry again for my poor English.

                                          2. 1

                                            I think “arbitrary” is what you mean rather than “random”.

                                        1. 17

                                          Hi Lobsters, author here.

                                          I wanted to give a little bit of background on the motivation behind this post. For a while, I’ve been making academic posters using PowerPoint, Keynote, or Adobe Illustrator, and while it’s possible to get a high-quality result from these tools, I’ve always been frustrated by the amount of manual effort required to do so: having to calculate positions of elements by hand, manually laying out content, manually propagating style changes over the iterative process of poster design…

                                          For writing papers (and even homework assignments), I had switched to LaTeX a long time ago, but for posters, I will still using these frustrating GUI-based tools. The main reason was the lack of a modern-looking poster theme: there were existing LaTeX poster templates and themes out there, but most of them felt 20 years old.

                                          A couple weeks ago, I had to design a number of posters for a conference, and I finally decided to take the leap and force myself to use LaTeX to build a poster. During the process, I ended up designing a poster theme that I liked, and I’ve open-sourced the resulting theme, hoping that it’ll help make LaTeX and beamerposter slightly more accessible to people who want a modern and stylish looking poster without spending a lot of time on reading the beamerposter manual and working on design and aesthetics.

                                          1. 4

                                            Yes, I use LaTeX or ConTeXt for most of my writings, apart from notes in plain text.

                                            No, I just don’t think TeX is a great way for posters. Probably because I am a control freak in making posters, I really want my prominent content/figures exactly where they are supposed to be and how large I want them to be on a poster. Sometimes I ferociously shorten my text to just be able to get the next section a little higher, so the section title does not fall off the main poster viewing area. So, yes, I still use pages.

                                            I guess the difference is whether I am more focused on explaining things, which I use LaTeX, or I am more focused on laying out text blocks and figures, which GUI-based tools excel.

                                            1. 2

                                              I often want something in between. Like I want to click and draw arrows and figures but have that turned into LaTeX code so I can still style around that.

                                          1. 5

                                            The $30 level is totally worth it for The Linux Programming Interface, which is a beautiful reference for anyone who’s doing systems programming or wants to know how all the syscalls and administration commands like “chmod” really work. Very authoritative!

                                            1. 1

                                              Really? I always feel the manual pages are much better documenting these than that particular book. The Linux man pages are much easier to search for particular things than a book, paper or electronic version.

                                            1. 7

                                              This is a great usability improvement. Thank you Peter Hessler :)

                                              That said, it’s still a little bit sad that this is only just being introduced in 2018.

                                              1. 33

                                                That said, it’s still a little bit sad that this is only just being introduced in 2018.

                                                Technically - OpenBSD has had various toolings (1, 2, 3 and others) to do this very task for quite a long time. But none of them were considered the correct approach.

                                                Also, this is something that’s pretty unique to OpenBSD IMO. The end result is the same as with other systems.. sure. But this is unique among the unix world.

                                                Q: What’s the difference?

                                                Glad I asked! This is entirely contained within the base system and requires no tools beyond ifconfig!

                                                Linux has ip, iw, networkmanager, iwconfig..(likely others)… and they are all using some weird combo of wpa_supplicant.. autogen’d text files.. and likely other things.

                                                Have you ever tried to manually configure wireless on linux? It’s a nightmare. Always has been.

                                                NetworkManager does a really good job of making it feel like there isn’t a kludge going on behind the scenes.. It does this by gluing all the various tools together so you don’t have to know about them. IMO this is what happens when you “get it done now” vs “do it right”.

                                                With great simplicity comes great security:

                                                NetworkManager@6c3174f6e0cdb3e0c61ab07eb244c1a6e033ff6e:

                                                github.com/AlDanial/cloc v 1.74  T=28.62 s (48.2 files/s, 45506.1 lines/s)
                                                --------------------------------------------------------------------------------
                                                Language                      files          blank        comment           code
                                                --------------------------------------------------------------------------------
                                                PO File                          66         125328         161976         457879
                                                C                               541          71112          66531         321839
                                                C/C++ Header                    528          10430          15928          34422
                                                XML                              59           1406           2307           6692
                                                make                              6            885            229           5009
                                                Python                           40           1189           1128           4597
                                                NAnt script                      65            626              0           3968
                                                m4                                8            237            123           1958
                                                Lua                              11            212            453           1314
                                                Bourne Shell                     21            232            238           1115
                                                XSLT                              5             65              3            929
                                                Perl                              4            166            243            480
                                                Bourne Again Shell               11             30             35            241
                                                C++                               4             62            121            178
                                                YAML                              4             12              6            161
                                                JavaScript                        1             33             21            130
                                                Ruby                              3             39             92            110
                                                Lisp                              2             15             24             23
                                                --------------------------------------------------------------------------------
                                                SUM:                           1379         212079         249458         841045
                                                --------------------------------------------------------------------------------
                                                

                                                VS

                                                ifconfig@1.368:

                                                github.com/AlDanial/cloc v 1.74  T=0.12 s (32.2 files/s, 58201.7 lines/s)
                                                -------------------------------------------------------------------------------
                                                Language                     files          blank        comment           code
                                                -------------------------------------------------------------------------------
                                                C                                2           1009            345           5784
                                                C/C++ Header                     1              7             16             58
                                                make                             1              3              1              6
                                                -------------------------------------------------------------------------------
                                                SUM:                             4           1019            362           5848
                                                -------------------------------------------------------------------------------
                                                

                                                Anyway - I guess my point is this:

                                                • Almost every OS achieves this goal.. sure.
                                                • Most have had this feature for quite some time.. agree (Including OpenBSD!).
                                                • None of them have it implemented as simply and well-thought-out as OpenBSD.
                                                1. 5

                                                  Have you ever tried to manually configure wireless on linux? It’s a nightmare. Always has been.

                                                  No. The Linux’s I use come with an out-of-the-box experience that makes wireless as easy as clicking a box, clicking a name, typing in the password, it works, and it reconnects when nearby. They have been like that since I bought an Ubuntu-specific Dell a long time ago. They knew it was a critical feature that needed to work easily with no effort with some doing that upon installation so parts of the install could be downloaded over WiFi. Then, they did whatever they had to do in their constraints (time/talent/available code) to get it done.

                                                  And then I was able to use it with only breaks being wireless driver issues that had answers on Q&A sites. Although that was annoying, I didn’t have to think about something critical I shouldn’t have to think about. Great product development in action for an audience that has other things to do than screw around with half-built wireless services. That’s a complement about what I used rather than a jab at OpenBSD’s which I didn’t use. I’m merely saying quite a few of us appreciate stuff that saves us time once or many times. If common and critical, adoption can go up if it’s a solved problem with minimal intervention out of the box.

                                                  That said, props to your project member who solved the problem with a minimally-complex solution in terms of code and dependencies. I’m sure that was hard work. I also appreciate you illustrating that for us with your comparisons. The difference is almost comical in the work people put in with very different talents, goals and constraints. And m4 isn’t gone yet. (sighs)

                                                  1. 7

                                                    No. The Linux’s I use come with an out-of-the-box experience that makes wireless as easy as clicking a box, clicking a name, typing in the password, it works, and it reconnects when nearby.

                                                    And then something goes wrong in the fragile mess of misfeatures, and someone has to dig in and debug, or a new feature comes along and someone has to understand the stack of hacks to understand it, before it can be added. There’s something to be said for a system that can be understood.

                                                    1. 4

                                                      There is something to be said for a system to be understood. I totally agree. I also think there’s something to be said for a reliable, more-secure system that can be effortlessly used by hundreds of millions of people. A slice of them will probably do things that were worth the effort. The utilitarian in me says make it easy for them to get connected. The pragmatist also says highly-usable, effortless experience leads to more benefits in terms of contributions, donations, and/or business models. These seemingly-contradicting philosophies overlap in this case. I think end justifies the means here. One can always refactor the cruddy code later if it’s just one component in the system with a decent API.

                                                      1. 3

                                                        One can always refactor the cruddy code later if it’s just one component in the system with a decent API.

                                                        The problem isn’t the code, it’s the system that it’s participating in.

                                                        1. 2

                                                          One can always refactor the cruddy code later if it’s just one component in the system with a decent API.

                                                          This just leads to systemd, and more misfeatures…

                                                          1. 3

                                                            There’s Linux’s without systemd. Even those that had it didn’t before they got massive adoption/impact/money. So, it doesn’t naturally lead to it. Just bad, decision-making in groups controlling popular OS’s from what I can tell. Then, there’s also all the good stuff that comes with their philosophy that strict OS’s like OpenBSD haven’t achieved. The Linux server market, cloud, desktops, embedded, and Android are worth the drawbacks if assessing by benefits gained by many parties.

                                                            Personally, I’m fine with multiple types of OS being around. I like and promote both. As usual, I’m just gonna call out anyone saying nobody can critique an option or someone else saying it’s inherently better than all alternatives. Those positions are BS. Things things are highly contextual.

                                                    2. 1

                                                      This is really great. I wish all other projects can do that, preferring elegancy to throwing code on the wall, but sometimes life really takes its toll and we cave and just make Frankenstein to get shit done.

                                                      I really appreciate all the works by OpenBSD folks. Do you have any idea how other *BSD’s deal with the wireless?

                                                      1. 1

                                                        Do you have any idea how other *BSD’s deal with the wireless?

                                                        I don’t - sorry :D

                                                    3. 3

                                                      Whats really sad is that the security of other operating systems can’t keep up despite having more man power.

                                                      1. 2

                                                        It’s almost like if you prioritize the stuff that truly matters, and be willing to accept a little bit of UX inconvenience, you might happen upon a formula that produces reliable software? Who would have thought?

                                                        1. 2

                                                          That’s what I told OpenBSD people. They kept on a poorly-marketed monolith in unsafe language without the methods from CompSci that were knocking out whole classes of errors. They kept having preventable bugs and adoption blockers. Apparently, the other OS developers have similarly, hard-to-change habits and preferences with less focus on predictable, well-documented, robust behavior.

                                                        2. 1

                                                          I think this is just a matter of what you think matters. There’s no sadness here. The ability to trade off security for features and vice versa is good. It lets us accept the level of risk we like.

                                                          On the other hand, it’s really sad, for instance, that OpenBSD has had so many public security flaws compared to my kernel ;P

                                                          1. 1

                                                            On the other hand, it’s really sad, for instance, that OpenBSD has had so many public security flaws compared to my kernel ;P

                                                            What’s your kernel?

                                                            1. 2

                                                              It’s a joke. Mine is a null kernel. It has zero code, so no features, so no security flaws. Just like OpenBSD has fewer features and fewer known security flaws than Linux, mine has fewer features but no security flaws.

                                                              Unlike OpenBSD, mine is actually immune to Meltdown and Spectre.

                                                              1. 1

                                                                Not having public flaws doesn’t mean you don’t have flaws. Could mean not enough people are even considering checking for flaws. ;)

                                                                1. 1

                                                                  Oh OK lol.

                                                          2. 0

                                                            That said, it’s still a little bit sad that this is only just being introduced in 2018.

                                                            Would you like to clarify what you mean by this comment? Cause right now my interpretation of it is that you feel entitled to have complicated features supported in operating systems developed by (largely unpaid) volunteers.

                                                            1. 11

                                                              I’m getting a bit tired of every complaint and remark being reduced to entitlement. Yes, I know that there is a lot of unjustified entitlement in the world, and it is rampant in the open source world, but I don’t feel entitled to anything in free or open source software space. As someone trying to write software in my spare time, I understand how hard it is to find spare time for any non-trivial task when it’s not your job.

                                                              Though I am not a heavy user, I think OpenBSD is an impressive piece of software, with a lot of thought and effort put into the design and robustness of the implementation.

                                                              I just think it’s somewhat disheartening that something this common (switching wireless networks) was not possible without manual action (rewriting a configuration file, or swapping configuration files, and restarting the network interface) every time you needed to switch or moved from home to the office.

                                                              Whether you feel like this is me lamenting the fact that there are so few contributors to important open source projects, me lamenting the fact that it is so hard to make time to work on said project, or me being an entitled prick asking for features on software I don’t pay for (in money or in time/effort) is entirely your business.

                                                              1. 5

                                                                Just for the record I didn’t think you sounded entitled. The rest of the comment thread got weirdly sanctimonious for some reason.

                                                                Volunteers can work on whatever they want, and anybody’s free to comment on their work. Other operating systems have had the ability to switch wifi networks now for a long time, so it’s fair to call that out. And then Peter went and did something about it which is great.

                                                                Previously I’ve been using http://ports.su/net/wireless for wifi switching on my obsd laptop, but will use the new built-in feature when I upgrade the machine.

                                                                Some of the delay for the feature may be because the OS, while very capable, doesn’t seem designed to preemptively do things on the user’s behalf. Rather the idea seems to be that the user knows what’s best and will ask the OS to do things. For instance when I dock or undock my machine from an external monitor it won’t automatically switch to using the display. I have a set of dock/undock scripts for that. I appreciate the simple “manual transmission” design of the whole thing. The new wifi feature seems to be in a similar spirit, where you rank each network’s desirability and the OS tries in that order.

                                                                1. 2

                                                                  Interesting, I didn’t know about that to. I used my own bash script to juggle config files and restart the interface, but the new support in ifconfig itself is much easier.

                                                                  I think the desire for OpenBSD to not do things without explicit user intent are certainly part of why this wasn’t added before, as well as limited use as a laptop OS until relatively recently.

                                                                2. 2

                                                                  Thanks for taking the time to respond.

                                                                  To be clear, I don’t believe you’re some sort of entitled prick – I don’t even know you. But, I do care that people aren’t berating developers with: “That’s great, but ____” comments. Let’s support each other, instead of feigning gratitude. It wasn’t clear if that’s what you were doing, hence, my request for clarification.

                                                                  That being said, my comment was poorly worded, and implied a belief that you were on the wrong side of that. That was unfair, and I apologize.

                                                                  I just think it’s somewhat disheartening that something this common (switching wireless networks) was not possible without manual action (rewriting a configuration file, or swapping configuration files, and restarting the network interface) every time you needed to switch or moved from home to the office.

                                                                  Well, I’m just not going to touch this…. :eyeroll:

                                                                  1. 1

                                                                    I apologize if my response was a little bit snide. I’ve been reading a lot of online commentary that chunks pretty much everything into whatever people perceive as wrong with society (most commonly: racism, sexism, or millenial entitlement - I know these are real and important issues, but not everything needs to be about them). I read your remark in the context and may have been a little harsh.

                                                                    Regarding the last segment - how WiFi switching worked before - there may have been better ways to do this, but I’m not sure they were part of the default install. When I needed this functionality on OpenBSD, I basically wrote a bash script to do these steps for me on demand, and that worked alright for me. It may not have been the best way, so my view of the OpenBSD WiFi laptop landscape prior to the work of Peter may not be entirely appropriate or accurate.

                                                                  2. 1

                                                                    I just think it’s somewhat disheartening that something this common (switching wireless networks) was not possible without manual action (rewriting a configuration file, or swapping configuration files, and restarting the network interface) every time you needed to switch or moved from home to the office.

                                                                    I’m more blunt here that leaving that to be true in a world with ubiquitous WiFi was a bad idea if they wanted more adoption and donations from market segment that wanted good, out-of-the-box support for WiFi. If they didn’t want that, then it might have been a good choice to ignore it for so long to focus on other things. It all depends on what their goals were. Since we don’t know them, I’ll at least say that it was bad, neutral, or good depending on certain conditions like with anything else. The core userbase was probably OK with whatever they had, though.

                                                                  3. 3

                                                                    First, both free speech and hacker culture say that person can gripe about what they want. They’re sharing ideas online that someone might agree with or act on. We have a diverse audience, too.

                                                                    Second, the project itself has developers that write cocky stuff about their system, mock the other systems, talk that one time about how they expect more people to be paying them with donations, more recently talk about doing things like a hypervisor for adoption, and so on. Any group doing any of that deserves no exception to criticism or mockery by users or potential users. It’s why I slammed them hard in critiques, only toning it down for the nice ones I met. People liking critiques of other projects or wanting adoption/donations should definitely see others’ critiques of their projects, esp if its adoption/donation blockers. I mean, Mac’s had a seemless experience called Rendevous or something in 2002. If I’m reading the thread right, that was 16 years before OpenBSD something similar they wanted to make official. That OpenBSD members are always bragging when they’re ahead of other OS’s on something is why I’m mentioning it. Equal treatment isn’t always nice.

                                                                    “But, I do care that people aren’t berating developers with: “That’s great, but ____” comments. Let’s support each other, instead of feigning gratitude. It wasn’t clear if that’s what you were doing, hence, my request for clarification.”

                                                                    I did want to point out that we’ve had a lots of OpenBSD-related submissions and comments with snarky remarks about what other developers or projects were doing. I at least don’t recall you trying to shut them down with counterpoints assessing their civility or positivity toward other projects (say NetBSD or Linux). Seems a little inconsistent. My memory is broken, though. So, are you going to be countering every negative remark OpenBSD developers or supporters make about projects with different goals telling them to be positive and supportive only? A general rule of yours? Or are you giving them a pass for some reason but applying the rule to critics of OpenBSD choices?

                                                                    1. 1

                                                                      I at least don’t recall you trying to shut them down with counterpoints assessing their civility or positivity toward other projects (say NetBSD or Linux). Seems a little inconsistent.

                                                                      I’m not the Internet Comment Police, but you seem to think you are for some reason… Consider this particular instance “me griping about what I want.”

                                                                      Or are you giving them a pass for some reason but applying the rule to critics of OpenBSD choices?

                                                                      This wasn’t about OpenBSD at all. This started out as a request for clarification on the intent of an ambiguous comment that seemed entitled. There seems to be a lot of that happening today, and a lot of people defending it for whatever reason, which is even worse.

                                                                      1. 1

                                                                        I’m not the Internet Comment Police

                                                                        Your comments came off that way to me between the original and follow-ups. Far as not about OpenBSD, it’s in a thread on it with someone griping it lacked something they wanted. The OpenBSD members griping about third party projects not having something they wanted to see more of typically got no comment from you. The inconsistency remains. I’m writing it off as you’re just a fan of their style of thinking on code, quality, or something.

                                                                    2. 2

                                                                      i think he’s sad that there haven’t been enough volunteers to make it happen sooner

                                                                      1. 2

                                                                        That’s certainly one possibility, but not how I took it initially, and why I asked for clarification. I’ve seen too many people over the years attempt to disguise their entitlement by saying “thanks.”

                                                                        I’d have liked to see this comment worded as:

                                                                        This is a great usability improvement. Thank you Peter Hessler :) It’s a shame that there isn’t a better way to bring these important usability features to OpenBSD faster. What is the best way to help make that happen? Donations to the OpenBSD Foundation? Sponsor the work directly? Something else?

                                                                        Now, it’s also possible that the OP has ties to OpenBSD, and the comment was self-deprecating. But, one can’t infer that from the information we see without investigating who the OP is, and their affiliations…

                                                                        1. 0

                                                                          one can’t infer anything beyond what they said

                                                                          1. 2

                                                                            I’m not sure you understand what infer means. One certainly can infer meaning from a comment, based on previous actions, comments, etc..

                                                                            My point remains: It’d be nice if the OP would clarify what they mean. My interpretation of the OP’s comment is just as likely as your interpretation. My interpretation is damaging to the morale of existing volunteer contributors to FOSS, and gives potential contributors to FOSS reasons to not contribute all together. I don’t know about you, but I want to encourage people to contribute to FOSS, as doing so moves us closer to a free and open society. And, that alone, is the reason I’m even bothering to continue responding to this thread…

                                                                            1. 1

                                                                              he said “it’s sad.” that’s all we know. the leap is that this means “entitlement.”

                                                                              1. 1

                                                                                “It’s pretty sad that it took someone else so long to prioritize work I think is necessary.”

                                                                                I think it’s pretty easy to take what was written and read it this way. But maybe my glass is half empty today.

                                                                              2. 0

                                                                                One can infer based on a comment, but the inference will most likely be dimwitted bullshit.

                                                                                Without the magic trifecta of body language, vocal intonation, and facial expression us monkeys are just shit at picking up on any extra meaning. So take the comment at face value.

                                                                                It expresses gratitude, it focuses on a specific recipient, and it lauds the feature. After, it regrets that it couldn’t/didn’t happen earlier.

                                                                                There’s no hidden meaning here, and if the commenter intended a hidden meaning he’s a dufus too, because there’s no unicode character for those. U+F089A6CDCE ZERO WIDTH SARCASTIC FUCK YOU MARK notwithstanding.

                                                                                At some point we all need to stop insisting that we have near-telepathic powers, especially outside of meatspace.

                                                                                1. 2

                                                                                  So, what you’re saying is that I can write anything I want, and since you can’t see or hear other clues, there’s no way you can downvote (in good faith) this comment as trolling?

                                                                                  Not sure text works that way…

                                                                          2. 1

                                                                            They had the solution to do it all the time, but it wasn’t invented here, so it’s bad.

                                                                      1. 5

                                                                        “missing” out of the box for composition and revision are tools for version control

                                                                        There’s RCS and CVS in the base system for that.

                                                                        One thing that I find somewhat unfortunate is that OpenBSD has a lot of great text editing tools, yet it’s missing any kind of typesetter (troff, TeX) in the base system.

                                                                        1. 3

                                                                          …editing because @xorhash had been kind enough to remind me of rcs(1) and cvs(1)…

                                                                          OpenBSD’s base system doesn’t provide dictionary searches or spell check, either, but I’m fine with that. I’m grateful they provide X Window as part of the base system. Stuff like git, troff, aspell, diction, pandoc, and dictd I’m happy to install using the package mangler.

                                                                          What I would love to know is why OpenBSD ports has the dict server but none of the dictionaries. If I want a dict daemon on my laptop so I can check definitions offline, I have to get the actual dictionary archives out of the FreeBSD port’s distfiles because ftp.dict.org is dead. While I can do that, I’d rather not have to. :)

                                                                          1. 3

                                                                            I second xorhash’s mention of RCS. (Though, I’m no BSD user.)

                                                                            I heard somewhere that RCS was designed with your sort of use case in mind! Maybe it was this post (2009)?

                                                                            It’s certainly an easily understood, unixy tool. Maybe I’ll try using it one day. ;)

                                                                            1. 3

                                                                              That’s an excellent introduction. Thanks.

                                                                              However, RCS isn’t actually suited to my use case because I don’t use one file per novel. Instead, I write novels the way I code at my day job, with text distributed across various files in a directory tree. Yes, it’s probably overkill, but it beats paying a shitload of money for a Mac so I can use Scrivener or Ulysses.

                                                                              My hierarchy currently looks somewhat like this:

                                                                              $SERIES/
                                                                                $TITLE/
                                                                                  title
                                                                                  dedication
                                                                                  disclaimer
                                                                                  acknowledgements
                                                                                  $SUBPLOT1/
                                                                                    01.scene
                                                                                    02.scene
                                                                                    01.revision01.sed
                                                                                  $SUBPLOT2/
                                                                                    01.scene
                                                                              

                                                                              When I’m ready to read what I’ve done as a whole, I’ll assemble the whole mess using cat and fmt. Likewise when I’m done with all revisions and am ready to submit to a publisher. At that point I’ll put everything together into a file like “submission01”, mark it up with with Markdown or reStructuredText (depending on whether I was pretentious enough to include footnotes), run it through pandoc and convert it to Word format (unless the publisher is hip enough to accept an OpenDocument Text file, and then edit the output in LibreOffice to suit the publisher’s house style.

                                                                              You can’t manage something like this with RCS. CVS would be more appropriate, but as I mentioned in another comment I’m already familiar with git. I use it when tinkering with static site generators, build websies, and at my day job.

                                                                              1. 4

                                                                                I don’t know much about the BSDs but I use Scrivener on Debian via WINE, flawlessly! Just a note.

                                                                                1. 3

                                                                                  Apparently there’s an AppImage of the unfinished Linux version for people who don’t want to use WINE.

                                                                                  Believe it or not, I’ve tried Scrivener. It’s not a bad app, but I don’t like that it stores everything in RTF files. When I’m drafting something, I’d rather work in plain text.

                                                                                  Also, as @qznc noted, a tool like ed(1) is great if you have a tendency to go back and edit unfinished work. I have this tendency in spades.

                                                                                2. 2

                                                                                  I don’t see why you can’t use RCS.

                                                                                  % ed test
                                                                                  a
                                                                                  this is a test of using
                                                                                  RCS for version control.
                                                                                  .
                                                                                  w
                                                                                  49
                                                                                  !ci -l % 
                                                                                  ci -l test
                                                                                  test,v  <--  test
                                                                                  enter description, terminated with single '.' or end of file:
                                                                                  NOTE: This is NOT the log message!
                                                                                  >> test check in
                                                                                  >> .
                                                                                  initial revision: 1.1
                                                                                  done
                                                                                  !
                                                                                  ,n
                                                                                  1	this is a test of using
                                                                                  2	RCS for version control.
                                                                                  a
                                                                                  
                                                                                  Now we add a new paragraph.
                                                                                  .
                                                                                  w
                                                                                  78
                                                                                  !ci -l %
                                                                                  ci -l test
                                                                                  test,v  <--  test
                                                                                  new revision: 1.2; previous revision: 1.1
                                                                                  enter log message, terminated with single '.' or end of file:
                                                                                  >> new paragraph 
                                                                                  >> .
                                                                                  done
                                                                                  !
                                                                                  ,n
                                                                                  1	this is a test of using
                                                                                  2	RCS for version control.
                                                                                  3	
                                                                                  4	Now we add a new paragraph.
                                                                                  q
                                                                                  

                                                                                  Compared to git, the only thing that’s missing is keeping track of contents that get moved from one file to another.

                                                                                  1. 2

                                                                                    RCS is one repository per file. That’s not what I want. I want one repository for the entire project. And I want the master repository to live on BitBucket (or some other provider I trust because I’m too lazy to self-host on a VPS). This lets me sync between multiple machines.

                                                                                    This way, when I’m dead because somebody got upset about me typing in public and decided to beat me into the ground with my laptop, it’s possible that some other nerd who overdosed on JRPGs and Blue Öyster Cult albums as a kid might find it and take over. :)

                                                                                    1. 1

                                                                                      In the true spirit of unix, you use one tool for one purpose only. Just use a separate tool for syncing. scp(1) works. rsync(1) works better. unison(1) beats everything.

                                                                                      You can’t really call RCS a ‘repository’. It is, after all, just one ‘,v’ file for the version history of a single file. You can setup rsync or unison to sync up ‘,v’ files exclusively, which essentially transforms rcs to a hand-rolled cvs.

                                                                          1. 3

                                                                            lsub has been doing quite interesting research in extending the UI from the line of plan 9. There is plan B, Olive, Clive.

                                                                            Honesty questions: When are they going to make these research product usable? Do they plan to ship? What does it take for the masses to adopt such OS/UI?

                                                                            1. 1

                                                                              Those are research projects. Universities are not product incubators. So unless you find someone that takes this into her own hands to make a commercial product out of that, nothing will happen.

                                                                              1. 1

                                                                                Well put!
                                                                                Research means nothing… only profit matters!

                                                                                  .-'---`-.  
                                                                                ,'          `.  
                                                                                |             \  
                                                                                |              \  
                                                                                \           _  \  
                                                                                ,\  _    ,'-,/-)\  
                                                                                ( * \ \,' ,' ,'-)  
                                                                                 `._,)     -',-')  
                                                                                   \/         ''/  
                                                                                    )        / /  
                                                                                   /       ,'-'
                                                                                
                                                                                
                                                                                1. 1

                                                                                  All it takes is for somebody to turn them into an actual tool, I mean the plan 9 user space stuff is already very usable, though I’ve never used the lsub stuff. The source code is available: http://lsub.org/ls/projects.html

                                                                              1. 1

                                                                                If somebody has one afternoon to spare, it may be quite rewarding to get plan9port to work on Windows. Since now there is Bash on Windows and the devdraw should be readily portable from the code base of drawterm.

                                                                                1. 2

                                                                                  A glorified (or nodified) ed. huh.

                                                                                  1. 2

                                                                                    Eh, I think ed would be a little better one some fronts, because with this one is constantly typing cheq (or an alias) to manipulate said lists, where with Ed, you’re at a (sort of) interactive prompt. Adding an interactive mode here could be an interesting addition, maybe behind an -i flag

                                                                                    1. 1

                                                                                      The checklist data is stored as JSON in the default cache folder for your user in your operating system (maybe something like ~/.cache/cheq/data.json) so that makes it easy to work with.

                                                                                      I also built a little PHP page on my web server that reads the same JSON file from my disk and builds a tiny bit of HTML so I have a pretty preview of my checklist that others can check to see where I’m at on things: http://caduceus.io/todo.php

                                                                                      :3

                                                                                      1. 2

                                                                                        I’m sure it is a good exercise for you to familiarize yourself with node / json / php / html / web server, and I sincerely hope you have learned a lot through this process.

                                                                                        The following is just my end of day rant on the modern computing. So much things is just piles upon piles of garbage trying to implement simple old tools. Here is the ed implementation to the functionality in the gif (seriously, what’s the point of video taping scrolling texts?),

                                                                                        % ed
                                                                                        ,n
                                                                                        ?
                                                                                        a
                                                                                        x Task 1
                                                                                        x Task 2
                                                                                        x Task 3
                                                                                        x Task 4
                                                                                        . 
                                                                                        ,n
                                                                                        1	x Task 1
                                                                                        2	x Task 2
                                                                                        3	x Task 3
                                                                                        4	x Task 4
                                                                                        1s/$/ #work/
                                                                                        2s/$/ #work/
                                                                                        ,n
                                                                                        1	x Task 1 #work
                                                                                        2	x Task 2 #work
                                                                                        3	x Task 3
                                                                                        4	x Task 4
                                                                                        g/#work/n 
                                                                                        1	x Task 1 #work
                                                                                        2	x Task 2 #work
                                                                                        1s/^x/o/
                                                                                        2s/^x/o/
                                                                                        3s/^x/o/
                                                                                        g/^x/n
                                                                                        4	x Task 4
                                                                                        g/^o/n
                                                                                        1	o Task 1 #work
                                                                                        2	o Task 2 #work
                                                                                        3	o Task 3
                                                                                        g/^o/d
                                                                                        ,n
                                                                                        1	x Task 4
                                                                                        1c
                                                                                        x New title 
                                                                                        .
                                                                                        ,n
                                                                                        1	x New title
                                                                                        1s/$/ #something/
                                                                                        ,n
                                                                                        1	x New title #something
                                                                                        1s/ #.*//
                                                                                        ,n
                                                                                        1	x New title
                                                                                        
                                                                                    2. 1

                                                                                      It’s my first non-web-related software project, and the first time I’m distributing prebuilt binaries for windows/linux/mac!

                                                                                    1. 3

                                                                                      Reads like Miss Marple.

                                                                                      I would assume K&R had much more influence than Traister.

                                                                                      1. 5

                                                                                        I would assume K&R had much more influence than Traister.

                                                                                        I sincerely hope so.

                                                                                      1. 5

                                                                                        The last thing we want to do is adding more functionalities to the tty layer and adding more signals.

                                                                                        1. 1

                                                                                          Actually, it’s a standard feature that is missing as far some (old) people are concerned.

                                                                                          Standard since at least the early 1970s and implemented in TOPS-10, TENEX, TOPS-20, RSTS, and VMS, but not RSX, as I recall. I believe it was a feature of WAITS as well.

                                                                                          I don’t recall it in V7M or 32V, and it was certainly not in System III or System V.

                                                                                          Not sure when it was implemented in BSD, but it is present 2.11BSD.

                                                                                          1. 1

                                                                                            Also, in the earlier systems, Control-T was actually implemented in the monitor, so it would elicit a response even if pretty much everything else was swamped or broken.

                                                                                            The downside is that sending a flood of Control-T’s would slow down everything else and could be used for annoyance.

                                                                                        1. -5

                                                                                          It is only a disaster if your business relies on making use of other people work, in which they own the copyright.

                                                                                          Not everybody can afford to create stuff and give it away for free, and there are plenty of people who want to earn money from there creative work.

                                                                                          Those who have made a living from steeling other peoples’ material are up in arms that their free lunch not going to be free anymore.

                                                                                          1. 17

                                                                                            Or you run any kind of site where users can input anything that another visitor can see. Not just video and file sharing sites; Lobsters users could paste copyrighted content into a comment/PM and I’d be liable for not having a system implementing some kind of copyright controls.

                                                                                            (To say nothing of Article 11 wanting us to start paying the news sites we link to for privilege of sending them traffic.)

                                                                                            1. -2

                                                                                              If somebody posted something here that I owned the copyright to, and I asked Lobsters admin to remove the material, then I imagine they would. If somebody kept posting this material they could be banned.

                                                                                              Or are you saying that the Lobsters’ site should be a place where anybody can post copyright material, without any recourse by the copyright holder?

                                                                                              1. 13

                                                                                                The new law changes this standard safe harbor behavior. Lobsters (me) is presumptively at fault for copyright infringement for not proactively checking for possibly-copyrighted material before posting. So yes, your scenario is the current, reasonable law and accurately describes why everyone is concerned about this change.

                                                                                                1. -2

                                                                                                  Lots of FUD being generated by those who will lose out. Copyright holders not making much noise about the fact they will probably make some money (or rather lose less).

                                                                                                  Some good points about what is going on.

                                                                                                2. 4

                                                                                                  The law isn’t about that, though. The new law doesn’t say admins must take-down on request (that’s already the case under existing law) but rather that they must have an AI system that prevents any infringing uploads from happening in the first place.

                                                                                                  The link tax is a much bigger problem, especially lobsters, but both articles are very bad.

                                                                                                  1. 1

                                                                                                    AI system that prevents any infringing uploads from happening in the first place.

                                                                                                    How is that any different from what @pushcx said? As the owner/operator of lobste.rs he would have to abide by this law and produce, or buy access to some sort of copyrighted work database in order to test for it for all content that is created on lobsters.

                                                                                                    That’s not going to make it easy for startups. That’s not going to make it easy for privately owned, independent side projects. That’s just going to hurt.

                                                                                                    1. 2

                                                                                                      ALSO, you’d better not quote any part of my message if you reply, because I could, apparently, legitimately sue lobsters for not enforcing my copyright. e.g. there’s no such thing as fair use anymore.

                                                                                                      (yes, that’s a stretch, but that seems to be the basic threat)

                                                                                                      1. 1

                                                                                                        I replied before @pushcx and yes, it seems we agree on how bad it is :)

                                                                                                        1. 2

                                                                                                          Blargh! I am sorry. I misread the thread and thought you were replying to pushcx.

                                                                                                3. 6

                                                                                                  Or lobster gets a fine when you submit a link to any European news sites.

                                                                                                  1. 1

                                                                                                    What’s worse is that people will devise a way to signal what content is linkable and what only with license. This will limit quality news dissemination and strengthen fake news position. This will help to kill EU. Sad, right?

                                                                                                  2. 1

                                                                                                    most probably that lobster will be not able to post most of the links