1. 2

    I’m still @robey@mastodon.technology. Some of the accounts I seem to enjoy most, for tech talk:

    1. 36

      My rules of thumb: if a third of your submissions are your own stuff, you’re fine. You can go higher if you’re also commenting on other people’s submissions. If your non-authored submissions are low quality or clearly filler, that’s suspicious.

      If you’re only posting your own stuff and it’s high quality, that’s poor etiquette. If you’re only posting your own stuff and it’s low quality, that’s spam. If your stuff is low quality but you’re also submitting other stories and commenting, that’s fine.

      As for rate, I think daily is too high. Weekly is good for diverse writing. If all your authored posts are on the same topic, then monthly is better. Also, show and ask posts should be monthly.

      rants should be less than half your authored stories, if that. Probably less.

      All of these are personal opinions.

      1. 11

        I don’t think looking at just submissions is a good to identify if you’re still promoting too much.

        If you actively involved in the community by commenting, submit your own (relevant, on topic) blog posts, and don’t submit other people’s stuff, that seems fine.

        1. 3

          Yeah you’re right, that’s ok too.

          1. 3

            I am pleased to see this comment. I don’t read super widely – I get basically all my reading material from Lobsters, and when I’m done catching up I close tab and get back to work, so it’s rare I have a good non-authored submission. But I do like to write posts and submit them when on-topic.

          2. 6

            Mostly agree, though I would modify that engagement doesn’t have to be posting articles or writing comments. My engagement is probably 80% upvoting the articles I found most interesting/enlightening and the comments that have already said what I want to say (often better than I could). I think that helps keep the noise level down. I don’t mind if that makes me look quiet – I prefer that. And I would consider that behavior in a poster of high-quality self-written articles to be “good engagement” too.

            1. 3

              Agree very much with this, and it (along with @calvin’s suggested heuristic) is kind of where I stand.

              The reason that I think it’s important to keep a mix favored in terms of external content–for blogs anyways–is that there is a difference in intent and outcome between “I post stuff, regardless of source, that might enrich other Lobsters” and “I post my stuff, because I want to get it in front of other Lobsters”.

              Eventually, you’ll see people start to sneak in their own product placement or brand building–and don’t be mistaken, there is a good deal of incentive for people to build personal brands.

              1. 8

                Eventually, you’ll see people start to sneak in their own product placement or brand building–and don’t be mistaken, there is a good deal of incentive for people to build personal brands.

                Eventually? I’ll have you know I’ve been brand building since day one!

                (The trick is to make “enriching the community” part of your brand)

            1. 1

              This app is meant to demonstrate an imagined world where we don’t care about hierarchical certificate authorities, or going through a three-step process to request and then confirm a request for a certificate to ourselves from ourselves, when that certificate is little more than a gold filigree doily wrapped around a public key.

              It could be good for internal certificate trees that don’t rely on verifying hosts, or verify them through other means. However, in public internet scenarios certificates are meaningless if you don’t have an authority.

              NB: Why is openssl command line harder than this?

              1. 1

                NB: Why is openssl command line harder than this?

                In my experience, nobody uses the openssl CLI without a cheat sheet holding the half dozen or so commands they use. My idealized CLI tool would have good defaults so you rarely need to use options, and if it had a lot of options, the --help page would show the most common usage as examples at the top.

              1. 10

                First they ignore you, then they ridicule you, then they make clumsy imitations of your features while claiming they came up with them.

                1. 14

                  I don’t think they’ll ever again miss the point so spectacularly as when they added Option tho.

                  1. 4

                    Same question as I have for the parent: for someone not following what happens in Java and hasn’t come across any articles about this: what’s wrong with Java’s Option?

                    1. 9

                      My interpretation: Option is what you use when you have non-nullable references, but you want a Nothing value. But in Java, all references are nullable per default, so what does the Option provide? Now you have two Null values: null and Nothing. Ok, then you use NonNull<Option<A>> in concert with your IDE. But that is clumsy.

                      The proper solution would probably involve a new binding syntax, which would be non-nullable by default.

                      1. 6

                        The solution would be to add a type specifier or operator which creates explicitly non-nullable types and support that at language level because we can’t go back in time to make non-nullable a language default.

                        1. 7

                          I think C# is making good progress in that regard. Expect a badly copied version of that in Java 34, I guess.

                        2. 5

                          People always bring this up in discussions about Optional, it’s not a problem in practice. I’ve never seen someone try to return null on a method that returns an Optional and if I did it wouldn’t pass code review.

                          The proper solution, which is planned, is to change it to a “primitive object” that has no identity and cannot be null. This seems to be coming relatively soon considering Valhalla has been in the works for a while and this JEP popped up recently.

                          1. 3

                            primitive object

                            I wonder what will be the final name of this.

                            has no identity

                            I always found this Java-self-invented lingo pretty weird – if it’s possible to ask “is this identical to that”, it has identity. I think Java devs mixing up “same reference” with “identical” caused this confusion.

                            1. 2

                              Primitive object seems to be the final name, they started with value objects, moved to inline object, and then settled on primitive object. I’m not a huge fan of it but there was some rationalization on the mailing lists.

                              I always found this Java-self-invented lingo pretty weird – if it’s possible to ask “is this identical to that”, it has identity. I think Java devs mixing up “same reference” with “identical” caused this confusion.

                              This isn’t unique to Java, C# and Python use identity in the same fashion: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/objects#object-identity-vs-value-equality https://docs.python.org/3/reference/expressions.html#is-not

                              1. 1

                                I guess it’s no coincidence that all those languages have problems with identity/equality around floating points.

                                (Which is not about floating points in particular, but they serve as a nice canary to indicate that their approach to equality/identity is broken.)

                        3. 5

                          Multiple methods are implemented incorrectly and violate monad laws, causing weird behavior around null. But that is “works as intended”, because Java is “pragmatic”.

                          A minor nitpick is that Optional is not marked Serializable, making everyone’s life a bit more miserable than it had to be. (The explanation they gave for that was bullshit for various reasons.)

                          1. 3

                            I believe they forgot to make Optional be iterable, which breaks a lot of the properties it has in other languages.

                            1. 4

                              You can use Optional.stream(), which you can iterate.

                        4. 1

                          For those not following along, what are the issues with Java records?

                        1. 2

                          Been using this for a few years now at work (firmware) and highly recommend it.

                          1. 33

                            My hat to the author for taking the time to not shame the dev and providing context around how “common” the issue is. I really like this article, How to learn cryptography as a programmer and A furry’s guide to end-to-end encryption. Very informative and accessible.

                            1. 8

                              Agreed, it’s all too common for articles like this to have a very condescending tone. Well done, article!

                              One thing I think the article is missing is that it doesn’t mention OTR (https://en.wikipedia.org/wiki/Off-the-Record_Messaging) which solves the specific problem the RSA-using developer was trying to address.

                              1. 2

                                I believe the double ratchet system used in Signal (which is recommended in the article) is a direct descendent of OTR.

                            1. 2

                              This is the kind of thing that makes me want to avoid all layers above the libc API and use raw pthreads.

                              I believe it makes some sense to do that for applications with soft real time performance requirements like this, just to minimise the amount of code which could potentially exhibit a perf bug that causes it to miss a deadline.

                              1. 3

                                That’s generally a great idea, however android used to have first class c API for their A/V stack, but not anymore.

                                The latest iterations are Java only. In our video recording app, we try to put the more sensitive real time code native. But we’re forced to call into Java side to get latest APIs :/

                                1. 1

                                  Is java.lang.Thread not a raw pthread on Android? :(

                                  This seems really unfortunate since you prolly can’t guarantee the GC will never blow a deadline unless you do something like make sure the heap has so few pointers in it that a full collection takes too little time to affect a deadline. To do that in a complex app you’d need to split into multiple processes?

                                2. 2

                                  pthreads are a library implemented on top of (and sometimes within) libc. You probably meant “raw kernel threads”. The turtles, they keep going.

                                  1. 1

                                    I did mean pthreads. The semantic distance isn’t big enough that I would worry about it. Similar to how I wouldn’t really worry about using say C/Rust vs using assembly.

                                    (Back when some pthreads implementations were m:n instead of 1:1, the difference would have been a problem. Those systems essentially don’t exist now. Just some super obsolete versions of FreeBSD and Solaris: both later backed out that decision because it was apparently terrible.)

                                1. 5

                                  I bought this keyboard also, and haven’t had time to give it a proper review, but I generally agree with this one. (I like it!)

                                  1. 1

                                    As someone who switched back to a linux laptop 18 months ago (lobsters): I’m still swimming, and the water’s fine!

                                    1. 8

                                      I find that I don’t use SO obsessively to avoid thinking, but to patch over bad or missing documentation or features.

                                      Usually I get stuck at an obstacle like “I want to make a deep copy of this struct. That should be a simple, common operation, but i can’t find it in the API. Is it a terminology thing? Does this language not call it ‘deep copy’?” Then I punch “how to deep copy in foo language” into google and SO appears with a set of interchangable complex workarounds because the feature is actually missing from the language.

                                      In fact, I often think that if language/library authors saw some of these highly-upvoted questions, they’d have a pretty good prioritized task list of possible improvements.

                                      1. 5

                                        Good riddance to 1.5G. Here’s hoping 1.6G is a happier era!

                                        1. 1

                                          TIL there is a new “xmake” that is completely unrelated to the old (X11) xmake. Wiki doesn’t even mention the old one – I started to think it never really existed, and I was experiencing the Mandela effect, but there is still some evidence here: https://freebsd.pkgs.org/11/freebsd-amd64/xmake-1.06_1.txz.html

                                          I guess there are only a thousand possible project names.

                                          1. 1

                                            They are completely unrelated, just the same name.

                                            1. 3

                                              “Please don’t post this article to Hacker News…”

                                              I’m curious, why not?

                                              1. 1

                                                I just assumed that maybe their hosting cannot handle the load it would generate.

                                                1. 2

                                                  Nah I just prefer to manage the S/N ratio when i can.

                                                  1. 1

                                                    Heh. I originally commented mentioning the huge amount of low quality ‘discussion’ that posting to ‘hacker’ ‘news’ would generate, but then changed my comment to go with the more neutral option.

                                              1. 4

                                                Is this site trustworthy? (It looks like it’s trying to win an award for “shadiest pseudoscience site”, but maybe they just have terrible design…)

                                                Also, i chuckled out loud at their characterization of alpha particles as “naked helium”.

                                                1. 1

                                                  I don’t know if there’s really a hope of net energy output from this approach, but petawatt lasers are definitely real. The original is on The UT Austin campus. I will definitely have to read more about this approach.

                                                1. 1

                                                  Anyone know the “Snoopy calendar” reference?

                                                  0044 Do you have a Snoopy calendar?

                                                  0045 … Is it out-of-date?

                                                  1. 3

                                                    Hey! Here’s everything I know about it – unfortunately, it’s not 100% revealing, otherwise I’d have made a pull request with this two years ago, but at least it’s something:

                                                    Unfortunately what I don’t know is the source of joke in the Real Programmers text, otherwise I’d have made a pull request for this two years ago or so. I suspect that, at one point, it was a popular demo for IBM computers, or at least an usual “toy”. The Real Programmers text is sympathetic towards IBM systems and old-time IBM programmers, and the program’s age and presumably original language (FORTRAN IV) fit.

                                                    FWIW, the calendar is actually pretty cute. A long time ago, when I was very young and had all the walls to myself, I actually had one of those in my room.

                                                    A bazillion thanks to @varjag for the invite so that I can post this!

                                                    1. 1

                                                      Thank you for this deep dive! Very tempted to update this for a little mini A4 calendar. :-)

                                                    2. 2

                                                      This is all new to me.

                                                      [1] https://bigironnewb.blogspot.com/2008/01/real-programmers-dont-eat-quiche.html

                                                      [2] http://www.pbm.com/%7Elindahl/real.programmers.html

                                                      The typical Real Programmer lives in front of a computer terminal. Surrounding this terminal are:

                                                      … Taped to the wall is a line-printer Snoopy calendar for the year 1969.

                                                      I think Snoopy was presumably one of the first ASCII artworks.

                                                      EDIT: see also Fortran source [3] https://gunkies.org/wiki/Snoopy_Calendar

                                                      1. 2

                                                        There’s a plausible reference in this 1982 essay, which is more than twice as old to us than the 1969 Snoopy calendar was to them. O_o

                                                        [edit: forgot the link] http://web.mit.edu/humor/Computers/real.programmers

                                                      1. 2

                                                        This is great, thanks! It’s nice to know I’m not the only one out there allergic to formulas.

                                                        1. 2

                                                          Interestingly, the DOS font I remember is actually 9x16:

                                                          The 8x16 version is used in MCGA text mode. VGA keeps that one, but it also has its own 9x16 version, which once again has wider forms for specific characters and generates the 9th column MDA-like. The 9x16 font is the VGA default, and that’s the one most widely associated with ASCII/ANSI art on the PC… and probably with the entire DOS era in general.

                                                          What does int10h.org mean by “MDA-like”?

                                                          […] characters are stored as 8 pixels wide, but displayed with an additional 9th column (either blank or a duplicate of the 8th, depending on the character).

                                                          1. 2

                                                            Yep! A clever trick when they started, since text modes didn’t need to be the same res as graphics. Bizcat puts inter-glyph spacing on the right, so it should be compatible with this trick, if you have a 720x480 display.

                                                          1. 3

                                                            Critique: m could be better, I’m just not sure how to fix it. The middle stem needs to be more noticeable or something.

                                                            1. 4

                                                              Agreed. 8 pixels just isn’t enough for 3 2-pixel lines, so trickery is needed. I made the middle one skinny, and that looked the best of the options I tried, but it’s still unsatisfying.