@faassen@fosstodon.org
@faassen@fosstodon.org avatar

faassen

@faassen@fosstodon.org

Me grok write code. Python, Rust, Typescript, JavaScript. Created: Morepath, lxml. Also: gardener, science & history fan, living life fan. Husband & father.

I post a lot about programming as well as gardening pictures. If you come for just the gardening pictures the programming talk may baffle you. If you're a programmer, I invite you to enjoy the flowers!

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

mariatta, to python
@mariatta@fosstodon.org avatar

Will it ever be possible to have a kind of formatter / type-checker tool that instead of just saying that I broke mypy, it could just automatically add/fix the type annotations for me? Or is this a stupid question?

faassen,
@faassen@fosstodon.org avatar

@mariatta
There are languages that can do type inference on a whole program basis so in theory you don't need to annotate.
Haskell and Ocaml come to mind. But there are drawbacks - it may infer types for you that are formally correct but not expressing intent. This is why it is common practice in Haskell to specify types for function parameters and return values anyway.

Here is a recent opinionated article which complains about whole program inference:

https://borretti.me/article/type-inference-was-a-mistake

faassen, to random
@faassen@fosstodon.org avatar

LLMs make up plausible stuff based on training data. That may seem like a more damning indictment of them than it is.

The complicating factor is that human brains are also making up plausible stuff. Human memory recall for instance is a plausible reconstruction based on experiences and knowledge, not a recording.

We have reasoning too, but it's well known there are many flaws in our reasoning ability, which is why invented writing, math, science and computers to supplement it

faassen, to programming
@faassen@fosstodon.org avatar

Dependencies are a risk. You don't understand them. Write the code yourself.

Don't reimplement code badly that has a superior implementation elsewhere.

Idioms are good. You can recognize patterns easily.

Boilerplate is bad.

Don't copy code from the web.

Don't use LLMs for generating code.

Learn by reading code.

LLMs are handy!

See the tension? All of these things are true and false, sometimes. Programming is about managing trade-offs, not following rules.

faassen, to random
@faassen@fosstodon.org avatar

I don't know enough about ECS or datalog (or egglog, even) but I wonder whether they would go together well.

Maybe @alice_i_cecile would be kind enough to venture a comment; is this a new thought, and is it a useful one?

#bevyengine

faassen,
@faassen@fosstodon.org avatar

@alice_i_cecile

I am not the only one with that thought:

https://www.reddit.com/r/roguelikedev/s/c2Q9ONp8w8

I am also reminded of the egg Rust library people

https://github.com/egraphs-good/egg

who moved to datalog as they found it easier to work with than Rust APIs for this use case:

https://github.com/egraphs-good/egglog

On my todo list to play with is datalog, someday.

faassen,
@faassen@fosstodon.org avatar

@alice_i_cecile
I like how ideas from logic programming merged with relational algebra to form datalog and then people who are trying to create better compiler optimizations with egraphs built on that and it might just be applicable to ECS.

gregorni, to programming
@gregorni@fosstodon.org avatar

What does your development environment look like right now?

(IDE/Text Editor? Terminal Multiplexer? Package Manager? Shell? Programming Language? Containerization? Command Runner? Terminal Emulator?)

faassen,
@faassen@fosstodon.org avatar

@gregorni

  • Editor: VS Code
  • Terminal emulator: Alacritty
  • Shell: Bash
  • Linux: Fedora
  • Window manager: i3
  • Package manager: dnf with a bit of flatpak
  • Programming language: Rust
  • Keyboard: Dygma Raise
  • Command runner: a Makefile, sometimes

I avoid containerization.

A mix of boring defaults and more exciting stuff. A mixture of both keeps me in the zone. I am not very good at being a power user, sticking to basics of each thing mostly, though in time that may become a wide selection.

faassen, to opensource
@faassen@fosstodon.org avatar

I handed over maintainership of an open source project of mine years ago,the new maintainer did a much better job than I can and has been doing it for almost two decades now. Everyone benefited. It's tragic that malicious actors exploit this trust and sharing of responsibility as it's what is at the heart of successful open source.

#OpenSource

faassen,
@faassen@fosstodon.org avatar

@xahteiwi
Tragic because of the inherent problem it exposes. We need to trust each other to function but people abuse that trust. It's an ancient problem, but we are dealing with at different levels of scale and risk (low for the threat actors, high for the rest of us)

Tragedies caused by malicious actors are inherently infuriating.

faassen, to programming
@faassen@fosstodon.org avatar

So what you would an infinitely fast CPU for?

faassen, to rust
@faassen@fosstodon.org avatar

Usually when the borrow checker in Rust really bothers me it pushes me towards a better, simpler design. I have yet to figure out how to describe how that happens. Rust tends to frown a little on complex references, dynamic code and such.

As I got more comfortable with references in structs (and lifetimes) I find myself using them more, but owned data is still king/queen

Rust: if in doubt, own and clone

faassen, to programming
@faassen@fosstodon.org avatar

I can do some pretty fancy computer programming things now, but not because I had innate ability. I was fortunate to have both interest and opportunity, but most importantly I keep trying stuff, playing, learning. A growth mindset makes a lot of difference in the long term

I figured I could learn stuff about software development, so did, for a long time. Now I can do all kinds of things, from developing a framework to a giant application, to implementing a programming language.

faassen, to programming
@faassen@fosstodon.org avatar

Developers like to complain about bloated applications taking too many computer resources, but we keep creating more.

Developers also like to complain about code having far too many dependencies; "my node_modules is 100 gigs", and how code should not depend on too many things. Yet we keep using many dependencies.

We complain these things are bad, yet keep doing it. How bad do we really think it is, then?

And let's not just blame management here. Too easy.

janriemer, to rust

The combinator experience:

  1. Writing multiple parser combinator functions ✅
  2. The most "higher up" parser fails ❌
  3. Investigate reason 🔍
  4. Find out it's a whitespace char that has been parsed too eagerly 💡
  5. Fix eagerly parsed whitespace 🔧
  6. All tests pass ✅
  7. Rinse and repeat ➰

In all seriousness: 95% of errors I have are due to me parsing whitespace too eagerly (this is good!).

I'm using , btw (beautifully designed parser combinator crate!).

faassen,
@faassen@fosstodon.org avatar

@janriemer
Eventually I learned that the whitespace rules I needed in my parser requires a separate tokenizer. Chumsky (at least alpha) supports that, luckily

faassen,
@faassen@fosstodon.org avatar

@janriemer
Sorry, I should have used the word "lexer" instead. I used Logos with Chumsky. You split the text into tokens, handling whitespace rules at this level and then let the parser operate on the token level instead of the character level

faassen, to Paranormal
@faassen@fosstodon.org avatar

The heart of the definition of the word "cryptid":

  • Maybe this creature is real

Along with corollaries:

  • The creature, if real, would be very cool

  • Unfortunately it's almost certainly not real

#cryptid

futurebird, to random
@futurebird@sauropods.win avatar

NYC needs a cryptid. Why can't we have a cool sneaky creature that people keep seeing? Maybe it steals lobster rolls or something. It's gotta fly obviously and run over rooftops.

And it makes cellphones loose signal and electronics go haywire.

faassen,
@faassen@fosstodon.org avatar

@aural

@futurebird

I was going to mention the sewer alligators, aren't they supposed to be albino? I featured them in a rpg scenario once, though corrupted by an alien mind altering fungus that found reptiles easier to suborn than mammals, though it was working on that.

futurebird, to random
@futurebird@sauropods.win avatar

We think of the big adaptations of human civilization:

farming
livestock
grain storage
irrigation and sewers
dense cities
multi-story dwellings
specialized labor

As achievements of human intelligence and technology. But considering ants have all of these same adaptations maybe they are a function of massive cooperative populations, rather than intelligence.

faassen,
@faassen@fosstodon.org avatar

@futurebird
The size differential of the individuals involved is interesting. The biggest eusocial animal is the damaraland mole-rat, slightly bigger than the naked mole-rat.

Both species have complex burrows and specialized labor, at least naked mole-rats manage regenerating tubers as harvest, with only up to 300 individuals.

So perhaps the population doesn't need to be as massive? Is large scale cooperation harder with larger individuals with bigger brains?

faassen, to ai
@faassen@fosstodon.org avatar

It's surprising how many people dismiss AI as having no "true understanding" as "it's just crunching data". Clearly neural network tech is not like a human in understanding, as it's much more limited and not embedded in the world as we are, but what do people think physical neurons do? There's no magic understanding juice in our brains either.

I never was convinced by Searle's Chinese room argument but clearly so many people are. Maybe I am the one who is wrong.

#ai

faassen,
@faassen@fosstodon.org avatar

@deshipu someone else has tried it, but I guess we are going to have to debate the word "arbitrary text" now:

https://medium.com/akvelon/is-gpt-4-better-at-translation-than-google-translate-2fd39730af0e

Note how they used a dataset from after the training cutoff point.

Could you give me some examples of what you mean?

faassen,
@faassen@fosstodon.org avatar

@deshipu ChatGPT 3.5: "Es wird gesagt, dass ein großes Sprachmodell einen Satz nicht ins Deutsche übersetzen kann, es sei denn, es wurde zuvor gesehen. Dies liegt daran, dass es einfach das nächste Wort vorhersagt und für einen völlig neuen Satz, den es noch nie zuvor gesehen hat, gibt es nichts, worauf es die Übersetzung stützen kann. Ein großes Sprachmodell ist einfach nicht dazu in der Lage."

faassen,
@faassen@fosstodon.org avatar

@deshipu Gemini: "Es heißt, dass ein großes Sprachmodell einen Satz nicht ins Deutsche übersetzen kann, es sei denn, es hat ihn schon einmal gesehen. Das liegt daran, dass es einfach das nächste Wort vorhersagt, und bei einem völlig neuen Satz, den es noch nie gesehen hat, gibt es nichts, worauf es die Übersetzung stützen kann. Ein LLM ist dazu einfach nicht in der Lage."

faassen,
@faassen@fosstodon.org avatar

@deshipu I'm not a native speaker of German so I can't evaluate the nuances of meaning. So here's ChatGPT 3.5 to Dutch:

"Er wordt gezegd dat een groot taalmodel een zin niet naar het Duits kan vertalen, tenzij het eerder is gezien. Dit komt doordat het eenvoudig het volgende woord voorspelt en voor een volledig nieuwe zin die het nog nooit eerder heeft gezien, is er niets waarop het de vertaling kan baseren. Een groot taalmodel is hier eenvoudigweg niet toe in staat."

faassen,
@faassen@fosstodon.org avatar

@deshipu And Gemini to Dutch: "Er wordt gezegd dat een groot taalmodel een zin niet naar het Nederlands kan vertalen tenzij het die al eerder heeft gezien. Dit komt omdat het simpelweg het volgende woord voorspelt en voor een volledig nieuwe zin die het nog nooit heeft gezien, is er niets waarop het de vertaling kan baseren. Een LLM is daar gewoon niet toe in staat."

Both look okay to this native speaker of Dutch.

faassen,
@faassen@fosstodon.org avatar

@deshipu For a longer text the lack of conceptual understanding will likely probably create more problems, but to me this capability demonstrates quite a bit of understanding of vocabulary and grammar of these languages as well as how they relate to each other. I get that to you, it doesn't.

But this is a question of functional evaluation, and I don't get your point there? Do you think this sentence was already in its training corpus?

faassen,
@faassen@fosstodon.org avatar

@deshipu
My apologies if this novel translated text doesn't reflect your position; I didn't claim it did. It's probably a mistranslation, as LLMs can't translate text.

I tried my best to be polite and charitable in this conversation, and communicate my position,and try to interpret yours, but you aren't interested in that, I take it.

You can have a conversation without inflicting pain, you know. These barbs aren't required. But you will have to try it on someone else.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • HellsKitchen
  • kavyap
  • DreamBathrooms
  • mdbf
  • magazineikmin
  • cubers
  • Youngstown
  • slotface
  • tacticalgear
  • InstantRegret
  • cisconetworking
  • everett
  • thenastyranch
  • rosin
  • bokunoheroacademia
  • osvaldo12
  • GTA5RPClips
  • ethstaker
  • Leos
  • modclub
  • tester
  • khanakhh
  • Durango
  • normalnudes
  • lostlight
  • relationshipadvice
  • anitta
  • sketchdaily
  • All magazines