BatmanAoD

@BatmanAoD@programming.dev

This profile is from a federated server and may be incomplete. Browse more on the original instance.

BatmanAoD,

Do you mean Grace Hopper, who wrote the first assembler?

BatmanAoD,

Perl programs are, by definition, text. So “paint splatters are valid Perl” implies that there’s a mapping from paint splatters to text.

Do you have a suggested mapping of paint splatters to text that would be more “accurate” than OCR? And do you really think it would result in fewer valid Perl programs?

BatmanAoD,

I agree that a symbolic representation of the splatters would probably be more interesting. The whole point is that random character sequences are often valid Perl, though, so changing the generation method wouldn’t change that aspect.

BatmanAoD,

I tried NeoVim pretty early on, I think, around 2014. My primary editor at the time was gVim (I prefer a proper graphical front-end to running in a terminal).

I used nvim on and off, primarily with nvim-qt as the front-end, though briefly with a custom setup that launched a new terminal emulator window and ran nvim there.

Once nvim incorporated nvim-qt into the base install, I started using it more regularly; eventually I switched entirely to Neovide and haven’t even installed gVim on my last few work computers.

I now primarily use VSCode with nvim integration. Unfortunately, I do have a weird issue where “undo” combines more operations than I’d expect, or, in some rare cases, it seems to corrupt the buffer and produce states that didn’t previously exist (!!). I don’t know if that’s an issue with the plugin, though.

BatmanAoD,

I don’t really understand the connection between the blog post and your comment. Could you expand on the connection between his stance against CLAs and your paraphrase about mega-corps and how we should “suck it up because of principles”?

BatmanAoD,

I guess I read his point more as being that it’s effectively impossible for a license or CLA to distinguish “good” freeloaders from “bad” freeloaders, so it was inevitable that businesses would start doing license “rug-pulls” like the examples he gives.

BatmanAoD, (edited )

I’m not sure I understand what issue Linus et al. are trying to solve. If the full hash is used whenever a commit reference is saved somewhere, then why does it matter how core.abbrev is configured? In particular, why use a static value, when git’s default behavior is to compute a value based on the current number of objects in the repository? (Edit: just noticed this post is over 10 years old. Maybe git didn’t have this automatic default behavior back then.)

For what it’s worth, jj has an even better solution, which is to highlight the shortest unique prefix in each specific hash it displays.

BatmanAoD,

I think you missed the last sentence of the post:

Finally, when you reference a Git hash for posterity, e.g. in another commit message, I’d recommend always using the full value.

The git config is just for display purposes in terminal output. That only needs to be unique as of the time it’s displayed; and as I noted, the current default behavior is to adjust the size dynamically, so the displayed hash segment is always unique no matter how big the repo is.

BatmanAoD,

Not quite what you’re asking for, but I wish Erlang had gotten popular before Java took off. I think that could have massively changed the course of “mainstream” languages. Maybe the JVM itself would have been BEAM-inspired. Heck, in an ideal world, the Netscape corporation and Brendan Eich would have created something based on Erlang/BEAM to ship with Navigator, instead of inventing JavaScript.

BatmanAoD,

Elixir is running on the BEAM. It wasn’t invented until 2012, though, so it couldn’t have become popular in time to influence the JVM or Netscape.

BatmanAoD,

BEAMScript!

BatmanAoD,

But in the browser. My complaint with JavaScript is that it was effectively the only choice for in-browser logic up until WebAssembly was stabilized, and even now it requires JS glue code.

BatmanAoD,

Have you considered that one property of actual, real-life human intelligence is being “too complicated to have precise guidelines”?

BatmanAoD,

We can create rules and a human can understand if they are breaking them or not…

So I take it you are not a lawyer, nor any sort of compliance specialist?

They aren’t thinking about it and deciding it’s the right thing to do.

That’s almost certainly true; and I’m not trying to insinuate that AI is anywhere near true human-level intelligence yet. But it’s certainly got some surprisingly similar behaviors.

BatmanAoD,

…I didn’t say that it does.

BatmanAoD,

And in fact it’s not specific to Rust, and Rust is the first language with a fix available. (Thanks to some other comments for pointing this out.) Java has apparently declared it “won’t fix.”

flatt.tech/…/batbadbut-you-cant-securely-execute-…

BatmanAoD,

How so? This exploit requires running a shell command in a way that permits an attacker to control the arguments provided. That doesn’t seem like it would be particularly common in build scripts.

BatmanAoD,

What custom implementation? The escaping logic?

BatmanAoD,

I’m not familiar with pyo3_async, but I don’t think you can force Python asyncio to use the Tokio event loop. This is discussed in the documentation of a different PyO3 async crate, pyo3-asyblncio: docs.rs/pyo3-asyncio/latest/pyo3_asyncio/-two…

BatmanAoD, (edited )

The thing about Rust’s type inference that seems wild to anyone who hasn’t seen Hindley-Milner/ML style type systems before is that it’s “bidirectional” (in quotes because that’s not a proper type theory term as far as I know). The type of the left-side of an assignment can determine the type (and behavior!) of the right side. For instance, this is ambiguous:


<span style="font-weight:bold;color:#a71d5d;">let</span><span style="color:#323232;"> foo </span><span style="font-weight:bold;color:#a71d5d;">= </span><span style="color:#323232;">[(</span><span style="color:#183691;">"a"</span><span style="color:#323232;">, </span><span style="color:#0086b3;">1</span><span style="color:#323232;">), (</span><span style="color:#183691;">"b"</span><span style="color:#323232;">, </span><span style="color:#0086b3;">2</span><span style="color:#323232;">)].</span><span style="color:#62a35c;">into_iter</span><span style="color:#323232;">().</span><span style="color:#62a35c;">collect</span><span style="color:#323232;">();
</span>

The expression creates an iterator over the (letter, number) pairs, and collect() stores the elements in a newly created container. But which container type? Here are two valid variants:


<span style="font-weight:bold;color:#a71d5d;">let</span><span style="color:#323232;"> foo: Vec<</span><span style="font-weight:bold;color:#a71d5d;">_</span><span style="color:#323232;">> </span><span style="font-weight:bold;color:#a71d5d;">= </span><span style="color:#323232;">[(</span><span style="color:#183691;">"a"</span><span style="color:#323232;">, </span><span style="color:#0086b3;">1</span><span style="color:#323232;">), (</span><span style="color:#183691;">"b"</span><span style="color:#323232;">, </span><span style="color:#0086b3;">2</span><span style="color:#323232;">)].</span><span style="color:#62a35c;">into_iter</span><span style="color:#323232;">().</span><span style="color:#62a35c;">collect</span><span style="color:#323232;">();
</span>

This creates a vector with items (“a”, 1) and (“b”, 2).


<span style="font-weight:bold;color:#a71d5d;">let</span><span style="color:#323232;"> foo: HashMap<</span><span style="font-weight:bold;color:#a71d5d;">_</span><span style="color:#323232;">, </span><span style="font-weight:bold;color:#a71d5d;">_</span><span style="color:#323232;">> </span><span style="font-weight:bold;color:#a71d5d;">= </span><span style="color:#323232;">[(</span><span style="color:#183691;">"a"</span><span style="color:#323232;">, </span><span style="color:#0086b3;">1</span><span style="color:#323232;">), (</span><span style="color:#183691;">"b"</span><span style="color:#323232;">, </span><span style="color:#0086b3;">2</span><span style="color:#323232;">)].</span><span style="color:#62a35c;">into_iter</span><span style="color:#323232;">().</span><span style="color:#62a35c;">collect</span><span style="color:#323232;">();
</span>

This creates a mapping where “a” and “b” are keys, and 1 and 2 are the corresponding values.

Playground link in case you’d like to mess with this concept: play.rust-lang.org/?version=stable&mode=debug&edi…

BatmanAoD,

Kotlin isn’t just for Android; IMO unless you’re trying to do purely functional programming, it’s preferable to Scala for JVM work.

BatmanAoD,

They also changed the wording from “closed” to “on hold” years ago, and I don’t think I’ve ever seen the people complaining about the site take any notice.

BatmanAoD,

That’s fair, but if you edit the question to explain how it’s different (without which, how could anyone even answer your question?), it can be (and often is) reopened.

BatmanAoD,

To be fair, I’m a pretty thorough code reviewer and I’ve definitely made a mistake of this kind.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • JUstTest
  • rosin
  • GTA5RPClips
  • Durango
  • ethstaker
  • ngwrru68w68
  • DreamBathrooms
  • thenastyranch
  • magazineikmin
  • everett
  • Youngstown
  • mdbf
  • slotface
  • kavyap
  • megavids
  • tacticalgear
  • cubers
  • normalnudes
  • anitta
  • tester
  • khanakhh
  • osvaldo12
  • InstantRegret
  • modclub
  • provamag3
  • Leos
  • cisconetworking
  • lostlight
  • All magazines