1. 7

    Only in the Caveats section does it hint as to what OSH is (“Think of OSH as a programming language rather than an interactive shell. It has basic interactive features, and I want it to be a good bash or zsh replacement, but it’s not there yet”).

    1. 2

      If you click through on the OSH text, it gives you more of a description:

      A statically-parseable language based on the common use of shell, in particular bash. In almost all cases, it’s indistinguishable from bash.

      Also clicking on the upper right “Home” gives more info. Happy to answer any questions though!

      1. 5

        He means that the explanation of OSH should be given first. A user shouldn’t have to navigate around to get that crucial information.

        1. 3

          OK fair enough, I edited the post. I’ve had many posts on Lobsters over the last several months, so I thought people would know, but it’s good to have it in a release announcement.

    1. 3

      I’m with @nickpsecurity here. Also exactly what does it mean? I know plenty of software packages which have both proprietary and OSS flavors - Sidekiq, Redash, etc etc. Does the tag apply to those, or not?

      1. 7

        I had to check several times before I realized how you got his username wrong.

        1. 2

          Not a bad username itself, though :p

          1. 4

            Appreciate it. I always post under my actual name Nick P. It was taken on some places and I was only one on security sites with those initials that I could tell. So, nickpsecurity.

            Only one that took creativity was my high-security brand and email. Had to be catchy plus convey highly-robust, but not bulletproof, security to lay persons. Settled on Digital Kevlar. Main account was Swiss (“Harbinger”) but a Gmail for public one for mitigating DDOS or availability risks better. So, that’s the story behind alias and email.

        2. 2

          I think it would be most useful if the tag referred to software that was only available under a proprietary license. So Sidekiq probably wouldn’t, but if there were a press release about Sidekiq features exclusive to the proprietary variant, then it would be marked proprietary. Anyone else have thoughts on this?

          Could you elaborate on why you think the tag wouldn’t be useful?

        1. 7

          So, I have actually been kicking around the idea of offering a similar tag.

          How would you feel about performance instead of just optimizing?

          I think it’d be handy to denote when an article has as a primary focus the issues of speed and efficiency.

          1. 5

            performance too is okay for me.

            1. 4

              I think performance has better prosody and doesn’t lose any meaning. :)

              1. 2

                Performance isnt the only optimization. Space is the other one. It requires sacrificing performance in extremes. Theres other forms like flexibility, cost, etc. So, if we do it, optimization is a better generic term.

                Note: There’s also a chunk of CompSci work on general-purpose optimization that’s just called optimization.

                1. 2

                  One of the reasons I don’t like optimization is that that is also a field of mathematics for things like linear programming and curve fitting and whatnot.

                  1. 1

                    Don’t forget outlier exclusion, the most important step in obtaining the right result.

                    1. 1

                      They are indeed general-purpose techniques in the field of optimization that can be applied to achieving the optimizer’s goals. Out of curiosity, I tried to cross-reference your techniques against goal of performance. I found that both of those are used in optimizing the performance of computer programs. Amuses me for some reason.

                      Use of linear programming and GA’s, two general-purpose optimizations, for code generation in compiler http://liu.diva-portal.org/smash/get/diva2:416671/FULLTEXT01

                      Far as curve fitting, I mostly found links saying not to use it to improve performance. Especially in financial applications. Other, general-purpose optimizations that led to better software or hardware than human designers in specific cases include heuristic search + backtracking, genetic programming, geometric, stochastic, annealing, and well-trained neural. Human annotations and brainpower + tool support… “augmented” methods… remain best.

                      The methods are general purpose. Some are domain-specific. Each applies one or more algorithms to change something until a measurable aspect matches one or more requirements. Common goals include speed, memory, activity per watt, unit cost, NRE cost, flexibility, or even yield/defects.

                    2. 1

                      Performance is, however, the most common thing to optimize for.

                      1. 1

                        It is. That doesn’t mean we define the superset category with name of a subset just because it’s common. In that case, the site wouldn’t need browser, desktop, mobile, or server OS tags. Especially niche like BSD’s. There’s about two, dominant subsets in each of those that it would use instead excluding all others. I question that logic.

                        The one reason performance should be used over optimization is if vast majority of users were uninterested in alternative optimizations such as reducing memory, energy-use, cost, unpredictability (eg real-time), or physical footprint. Seems like an easy way to decide whether performance or optimization tag is better. Could use CompSci for general-purpose optimizations if performance was adopted as the academics usually come up with them.

                    3. 1

                      Kind of similar to scaling, no?

                      1. 1

                        I don’t really think so–scaling to me is somewhat more in the vein of “How do I bring this service up for a lot of users?”, and the answer could just be “throw even more money into the fires at Heroku and AWS!”.

                        performance is more about “How can we write this code as tightly as possible, or at least reduce glaring inefficiencies?” So, it covers things as diverse as:

                        • Fixing untuned PG queries
                        • Avoiding practices that brainfuck the Ruby method cache
                        • Helping GCC do smarter vectorization of C loops
                        • Reliably hitting the 60 hz framerate using graphics libraries
                        • “scaling down” assembly to run in limited environments like MSP430s.

                        It’s a tag I don’t think is super useful on its own, but one that adds a helpful additive delineation to any number of tags we currently have.

                        1. 1

                          In optimization, you usually have multiple variables involved. Different goals tweak them in different ways. A system designed for high-scalability requires tweaks that could reduce max, single-threaded performance or minimum necessary RAM/disk. Those are two commonly optimized for that you trade against in many high-scale designs. One can also apply techniques from optimization like constraint solving or genetic algorithms on components in that domain.

                          So, it’s not totally optimization but has a lot in common with that. Just different property one is optimizing.