#🪅-progaming

1 messages · Page 62 of 1

jade stone
#

yea, its not possible

supple whale
#

WHY

valid jetty
#

i just modified the thing that kodetoad sent earlier lol

supple whale
#

its the same values

#

like i dont get it

#

its legit the same typedefs

winged mantle
#

i was

#

dumb

#

you didn't need that

jade stone
supple whale
#

no i meant to meo w

winged mantle
#

no need for object.hasown

jade stone
#

but it's weird, and should be possible

supple whale
#

daaas what i mean

#

i gave up after like 5 mins

#

anyways its not that important

#

its just some cache, where i replicate a gql mutation server offline

winged mantle
#

vee should do audit on my codebase

supple whale
#

because... why not

winged mantle
#

find all typescript horrors

#

it;s fun how i used snake case in database

#

so i'll have to delete the database

#

or do complex migrations

supple whale
#

average TS server moment

#

this is actually p good

#

i guess compiling types for development helped a lot

#

i needed to increase the max memory previously

#

cuz the default 4 gigs wasnt enough lol

jade stone
#

afaik typescript does something like this

lhs is typeof Entry["mediaListEntry"]["status" | "score" | "repeat" | "progress"] which becomes Entry["mediaListEntry"]["status"] & score...repeat & Entry["mediaListEntry"]["progress"]

because the only common type bewteen them is null, you are trying to assign something non-null to something null which errors

winged mantle
#

by the time my bot is finished poffor will be ready 🙏

supple whale
#

i'll release the codebase for this project this month

#

shit will hit the fan

#

maybe type hhints arent the best idea

valid jetty
#

uhhh idk exactly what youre looking for but i would do it like this

function _fillOutKeys<T extends {
  id: number;
  isFavourite: boolean;
  mediaListEntry: {
      id: number | null;
      status: "CURRENT" | "PLANNING" | "COMPLETED" | "DROPPED" | "PAUSED" | "REPEATING" | null;
      progress: number | null;
      repeat: number | null;
      score: number | null;
      customLists: unknown;
  } | null;
}>(entry: T, variables: Omit<NonNullable<T['mediaListEntry']>, 'customLists'> & { lists: (string | null)[] | null | undefined }) {
  const keys = ['status', 'score', 'repeat', 'progress'] as const

  for (const key of keys) {
    (entry.mediaListEntry![key] as any) = variables[key];
  }
}
supple whale
#

they are inferred

valid jetty
#

ah

supple whale
#

they are inferred from the gql api schema which is dynamically generated

valid jetty
#

ok i was gonna say lmao that did seem a little weird that you were manually defining the types

#

but even then why cant you just do (entry.mediaListEntry![key] as any) = variables[key];

supple whale
#

i dont allow any in my codebase

#

doesnt compile

#

:))))

valid jetty
#

husk

supple whale
#

Response.json() is a pain because of that

#

XD

still jolt
#

as unknown blobcatcozystars

supple whale
valid jetty
#

yeah it does

supple whale
#

and gets auto-removed by the linter

#

since its standalone

valid jetty
#

no error

supple whale
#

my setup is GIGA strict

valid jetty
#

with the original setup

supple whale
#

well yeah but then it doesnt have the type safety

#

this is fuckign funny tho

valid jetty
#

do you need type safety for something like this if youre hardcoding the keys anyway lmao

supple whale
valid jetty
#

yeah but if youre hardcoding them why do you need type safety, you know those keys will be in the objects

jade stone
#

@supple whale i might have shown you this before but rate this cursed type

supple whale
#
import { createStore, set, get } from 'idb-keyval'
import { writable } from 'simple-store-svelte'

export default new class LocalSync {
  store = createStore('watchlist', 'local')

  entries = writable<Record<number, StoredMedia>>({})

  constructor () {
    get('entries', this.store).then(s => {
      this.entries.value = s ?? {}
    })
    this.entries.subscribe(entries => {
      set('entries', entries, this.store)
    })
  }
}
supple whale
#

and i want it to error when my code tries to compile

valid jetty
#

hmmmmmm

supple whale
#

and when the api schema changes, my code will automagically detect it

supple whale
#

and go "WOAH THERE, FIX ME"

jade stone
supple whale
#

since i re-build the DB schema every time i open the code editor

valid jetty
supple whale
#

my worst is:

#

which refrences a few other ones, but they dont matter

valid jetty
supple whale
#

idk, there's probably some keyof fix there

#

but i cba tbf

valid jetty
#

look at these beautiful unbound types

jade stone
supple whale
#

if the local offline sync breaks it wont be the end of the world, its only a fallback for a fallback for a mutation

valid jetty
#

but its funnier when i make a parser at the type level

#

btw you get autocomplete with this

jade stone
#

@valid jetty make typescript parser with typescript types

supple whale
#

Fifth: 4

#

💀

valid jetty
#

just like enums

#

yeah because first is 0

#

its the same with real enums

#

not a fault with my impl

#

technically the type level thing does this

#

with some type magic (its just a functional language)

supple whale
valid jetty
#

lol yeah but uhhh

supple whale
#

beautiful strings

jade stone
valid jetty
#

look closely how the autocomplete is generated

#

my fav TS code

type EnumToObject<Keys extends string[], Acc extends string[] = []> =
    Keys extends [infer First extends string, ...infer Rest extends string[]]
        ? { [K in First]: Acc["length"] } & EnumToObject<Rest, [...Acc, First]>
        : {};

type Split<T extends string, D extends string, Acc extends string[] = []> =
    Trim<T> extends `${infer First}${D}${infer Rest}`
        ? Split<Trim<Rest>, D, [...Acc, Trim<First>]>
        : [...Acc, Trim<T>]
        
type Whitespace = " " | "\n" | "\t";
type Trim<T extends string> = 
    T extends `${Whitespace}${infer R}` 
        ? Trim<R> 
        : T extends `${infer R}${Whitespace}` ? Trim<R> : T;

function enu_m<T extends string>(x: T) {
    return x.split('\n').filter(Boolean).reduce(
        (acc, cur, i) => ({ ...acc, [cur.trim()]: i }), 
        {} as EnumToObject<Split<T, '\n'>>
    );
}

const x = enu_m(`
  First
  Second
  Third
  Fourth
  Fifth
`)
#

@supple whale love?

supple whale
#

yeah mine is a server plugin

#

your is a type

valid jetty
supple whale
#

mine simply doesnt scale to so many hundreds of types i have

valid jetty
#

what are you even making lol

supple whale
#

man

#

if you come VC i can explain

#

in text it will take too long to explain

#

too complex XD

valid jetty
#

i cant really atm lol

royal nymph
#

voice message time

valid jetty
#

true

supple whale
#

OH

#

good idea

#

i dont have the plugin tho

winged mantle
#

use vencord voice message plugin

#

😭

jade stone
#

do you not have vencord installed

winged mantle
valid jetty
#

its such an elegant way to do a trim

jade stone
supple whale
winged mantle
supple whale
#

that's about as simple as i can explain it

#

ofc on top of that data i built an entire app

valid jetty
# supple whale

thats cool but what website could POSSIBLY need all of that

supple whale
#

and still work seamlessly

#

as if you never went offline

#

\o/

valid jetty
#

i mean true

supple whale
leaden crater
#

who uses Netflix

valid jetty
#

are you making a sailing the high seas netflix

#

me

leaden crater
#

123movies

supple whale
leaden crater
#

used miruro

valid jetty
#

noooo pls 😭 make the logo 見る

#

just hiragana is killing me inside

supple whale
still jolt
#

nice website ​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

leaden crater
supple whale
#

its a torrent streaming app

leaden crater
#

so basically vlc

supple whale
#

shouldnt have spoofed ur resolution

valid jetty
supple whale
leaden crater
#

i don't use torrents anyways

supple whale
still jolt
leaden crater
#

only magnet for games

valid jetty
#

no i have scrollling acceleration on

still jolt
#

I'm on normal vanilla firefox

deep mulch
#

@leaden crater you

leaden crater
#

@deep mulch ja was

still jolt
#

seems like the entire website just became oneko somehow

supple whale
supple whale
#

i'm re-making it from scratch with cooler tech simply

#

i mean its just a website to download the app

valid jetty
#

pls pls make the logo 見る not みる 🙏

leaden crater
#

you're being so arrogant

supple whale
#

not characters tho

#

i need a proper actual logo

#

can unironically pay u if u make one

royal nymph
winged mantle
royal nymph
#

i hate js smooth scrolling

winged mantle
#

took too long to type..

#

it makes scrolling feel stiff

supple whale
supple whale
#

i just wanted to fuck with it

royal nymph
#

i am on chrome

#

it's not about not working

supple whale
#

i'll nuke it in the future

royal nymph
#

it's just that I despise when websites mess with my scrolling

supple whale
#

cope

leaden crater
#

next time I'll enable hide blocked users

winged mantle
supple whale
winged mantle
#

(you know when things snap to pixels in the middle of animations)

supple whale
#

and just left it in as a toy

royal nymph
supple whale
#
export default function (t, { speed = 120, smooth = 10 } = {}) {
  if (!settings.value.smoothScroll) return
  let moving = false
  let pos = 0
  let scrollTop = 0
  let lastTime = null
  t.addEventListener('wheel', e => {
    e.preventDefault()
    // is trackpad
    const spd = (e.deltaY !== (e.deltaY | 0) || e.wheelDelta % 10 !== 0) ? speed / 10 : speed
    pos = Math.max(0, Math.min(pos - Math.max(-1, Math.min(1, e.deltaY * -1)) * spd, (t.scrollHeight - t.clientHeight) + (smooth * 2)))
    if (!moving) {
      lastTime = null
      update()
    }
  }, { capture: true, passive: false })

  function getDeltaTime () {
    const now = performance.now()
    if (!lastTime) {
      lastTime = now
      return 1
    }
    const deltaTime = now - lastTime
    lastTime = now
    return deltaTime / 14
  }

  t.addEventListener('pointerup', () => { pos = scrollTop = t.scrollTop })

  function update () {
    const delta = pos - scrollTop === smooth * 2 ? 0 : ((pos - scrollTop) / smooth) * getDeltaTime()
    scrollTop += delta

    t.scrollTo(0, scrollTop < 1.3 ? 0 : scrollTop)
    moving = Math.abs(delta) > 0.1 && !!requestAnimationFrame(update)
  }
}
#

but the code for it was cool

#

XD

frosty obsidian
supple whale
winged mantle
supple whale
#

that entire project is just "hm i have a cool idea on the shitter, lets see how i can make it"

deep mulch
#

one of you is going to betray me

supple whale
leaden crater
#

scrolling using h shifter when

supple whale
#

code is cool, end result not so much xd

valid jetty
winged mantle
#

i uh

#

so many questions

supple whale
valid jetty
#

zoot doesnt even know how to solve an inequality problem with the simplex tableau smh

supple whale
#

thought "why not"

deep mulch
supple whale
#

and it fucking worked

leaden crater
leaden crater
winged mantle
#

why would you name a function parameter a single letter in js so it's hard to know what type it is

leaden crater
#

maaaan

winged mantle
supple whale
#

@valid jetty so no logo?

#

:c

winged mantle
#

was this on purpose

#

to confuse skids

royal nymph
winged mantle
#

i mean i guess it's obviously an element but what element

royal nymph
#

like e for event

winged mantle
#

what's its purpose

#

and you'd have to look into method code

winged mantle
#

because people use it for both

#

so it's ambigious

#

i just do event and error

still jolt
#

e for event, error and element, why not blobcatcozystars

supple whale
#

nah error is err

#

nodejs style

winged mantle
#

err is valid

leaden crater
#

2.718281828459045

still jolt
#

I usually do ev, err, el

supple whale
#

i usually do destructuring

#

so i dont have to name shit

#

XD

still jolt
#

you can still rename stuff when destructuring though blobcatcozystars

supple whale
#

never.

#

god fuckign never.

winged mantle
#

my variable names are like the opposite of yours

winged mantle
#

element_to_apply_to

supple whale
#
function pip (enable = !$pictureInPictureElement) {
  return enable ? burnIn(video, subtitles, deband) : document.exitPictureInPicture()
}
deep mulch
#

single letter variable names

supple whale
winged mantle
#

burnIn

leaden crater
winged mantle
#

does it cause monitor burnin

deep mulch
#

@leaden crater

supple whale
leaden crater
supple whale
winged mantle
#

wondering if you could make an extension to stop sites from changing scroll anim

#

description: screw you miru

supple whale
#

its a bad idea for scrollspy tho

#

since you'd break anything scrollspy based

winged mantle
#

i don't really like when websites mess with scrolling at all

supple whale
#

unless you overwrote the event and made preventDefault do nothing

valid jetty
winged mantle
#

can't you use css instead of js

leaden crater
#
let_me_now_the_variable = 0xFFFFFF
if let_me_now_the_variable != 0xFFFFFF
      wipefs
winged mantle
#

oh wait

#

how did i misunderstand that

supple whale
#

like actually?

#

or mem'ing?

winged mantle
#

yea i wanna break this

supple whale
#

cuz i ahve pointers

#

if u want

winged mantle
#

scroll spying is really
creepy

supple whale
#

you dont even know what the new name will be

#

@valid jetty

#

XD

winged mantle
supple whale
#

laughs in C

winged mantle
#

reallocs you

#

or whatever that thing to grow a pointer is i forgot

valid jetty
supple whale
#

wrong name XD

valid jetty
#

lol oh well

#

i thought the る kinda looks like an eye

#

so i tried to fill it

supple whale
#

i dm'ed ya

#

with info

#

if u actually want to try seriously

formal belfry
#

what a gooner

jade stone
valid jetty
dawn ledge
#

biome has the opposite of this (no explicit) and its fucking annoying

jade stone
#

when i explicitly type any, i do it for a reason

dawn ledge
#

nvim does it nicely (they put all the hints at the end in sequence

#

would you rather use records or mapped types

jade stone
dawn ledge
#

i actually like and hate how rust forces specifying the return type
since implicit returns exist you'll not end up with oopsies and also just prevents mishaps if types change downstream

dawn ledge
#

but its annoying

jade stone
#

you would have to be insane to enable it

valid jetty
#

the refactoring would be uhhhhhhhh

#

not fun

dawn ledge
austere idol
#
import json


class Test:
    def __init__(self, data):
        self.data = data
        self.open = open

    def __del__(self):
        with self.open("data.json", "w") as file:
            file.write(json.dumps(self.data))


a = Test({"a": "banned noises"})

while True:
    pass
dawn ledge
#

why self.open

austere idol
dawn ledge
#

insane

fleet cedar
#

Yeah python and rust don't do implicit self.foo like c++ and java do

dawn ledge
#

(and they said open global func doesnt exist in __del__)

gaunt badge
#

That is every type

dawn ledge
#

what

#

what are you on about

gaunt badge
#

Mostly mocking people who create massive objects that essentially do everything. A god object is a sort of joke about that.

#

In object-oriented programming, a god object (sometimes also called an omniscient or all-knowing object) is an object that references a large number of distinct types, has too many unrelated or uncategorized methods, or some combination of both. The god object is an example of an anti-pattern and a code smell.

dawn ledge
gaunt badge
#

It is a Bad Thing that OOP encourages/allows devs to do when they don’t know how to structure their code well

dawn ledge
#

literally NOT what i want to do

gaunt badge
#

This is a positive thing

winged mantle
#

trol

supple whale
gaunt badge
winged mantle
#

useful for when i make a mistake and the code just locks up forever

gaunt badge
winged mantle
#

(string parsing)

gaunt badge
#

Unless it's actually necessary

gaunt badge
winged mantle
#

it uses regex

#

read_word reads up until \s

#

but if you call read_word() twice it will always return an empty string or throw an exception (end of string)

#

because it reads up to the space and if you call it again there's nothing to read

#

so this could potentially freeze

while (reader.can_read())
read.read_word();

fleet cedar
#

As of my last project I'm a big fan of separate lexer phase

winged mantle
#

i wrote json parser without lexer before

#

i literally just wrote it without researching patterns of how to design a parser

#

same with every time i've written a custom command parser

#

i just learned from my spaghetti mess and rewrote it better

#

(over the last few days)

#

simply by splitting up responsibility

#

the result seems to be similar to mojang's command parsing

#

well apart from i did not have the responsibility of any string parsing in the stringreader

#

i split it into three modules: command parsing, primitive parsing, and a basic string wrapper which uses the concept of a cursor

gaunt badge
winged mantle
#

Resident Evil 2

gaunt badge
#

Guaranteed runtime Regex

#

It's absolutely miserable to use

winged mantle
#

javascript's regex is pretty

#

catstare emoji

fleet cedar
#

I don't know about command parsing, but for real languages token trees are really nice

winged mantle
#

gotta do this to match from the cursor

#

i wish i had made the cursor represent the next char instead of the current one

#

the latter is super confusing

gaunt badge
fleet cedar
#

Makes error recovery a breeze

gaunt badge
winged mantle
#

i mean that would probably be good for user input regex

#

why not just use lewi's rust regex wrapper

gaunt badge
#

Yea, it's what Cloudflare moved to iirc after the...

#

Accident

#

Catastrophic anti-XSS Regex

winged mantle
#

this is what i create

#

(i might be slightly defensive in my programming)

#

i need an eslint rule to require i always type return types

gaunt badge
#

Also I'd Object.freeze(array) before returning get_result(). The properties of this._result are read only but the arrays are still mutable

#

Unless that's intentional

winged mantle
#

it's not

#

well i don't think it worried me that much this class is just here to try and stop the wrong types getting in the wrong places

#

but this code could be wrong i guess

#

would it be better for this to be a unit test's responsibility

#

idrk

#

this literally reparses everything marked as a user, channel etc to make sure it's a valid snowflake

gaunt badge
#

Also

throw new Error(`typeof value === 'string' && is_snowflake('${typeof value}') is false; expected true`);

Are you actually meaning typeof value a second time?

winged mantle
#

uh

#

oops

#

thank you

gaunt badge
#

No problem

#

This do be what I do

winged mantle
#

object.freezze does not prevent array from being changed

#

unless you mean freeze each array

supple whale
winged mantle
#

oh?

supple whale
#

no implicit return

winged mantle
#

oh cool

#

thank you

supple whale
#

ywyw

winged mantle
#

maybe i don't need eslint

supple whale
#

you do

winged mantle
#

would be useful for awaits though

#

i have not set up eslint

#

it's another tool to learn for me

#

hence why i have put it off

#

(this project has been massive learning with node and typescript, tools which i both used a bit before but not much until this project)

#

oh god i should check out my probaably really insecure node projects from 2020

gaunt badge
#

Also

winged mantle
#

one of my node.js projects has a netbeans directory

#

😭 😭

#

lmao

#

/^\/(Africa|America|Antarctica|Asia|Atlantic|Australia|Europe|Indian|Pacific)\/.*$/.test(path.pathname)

#

i think this is a php project i ported

gaunt badge
#

I'd use Object.entries() instead of for (const key in schema) and if (!Object.hasOwn(schema, key))

winged mantle
#

i started using that because it seemed stackoverflow had elected in as the best

gaunt badge
#

Fair enough

winged mantle
#

for perf reasons iirc?

#

but i don't think it makes a lot of difference either way

gaunt badge
#

It doesn't, and it IS a lot more readable

winged mantle
winged mantle
gaunt badge
#
for (const key in schema) {
    if (!Object.hasOwn(schema, key))
        continue;

    const option = this._schema[key];

    if (option === undefined)
        continue;

    const value = (option.array ?? false) ? [] : null;
    this._result_define(key, value);

    if (option.required ?? false)
        this._missing.add(key);
}

vs.

for (const [key, option] of Object.entries(schema)) {
    if (option === undefined)
        continue;

    const value = (option.array ?? false) ? [] : null;
    this._result_define(key, value);

    if (option.required ?? false)
        this._missing.add(key);
}
winged mantle
#

the former feels more explicit

#

maybe I could make a helper which uses iterator instead of array

#

then i would feel less paranoid

#

I would prefer to avoid Object.entries everywhere in case the performance does matter somewhere than mix and match

fleet cedar
#

But does performance matter

#

In this instance

gaunt badge
#

It's very very negligible performance impact, you're only gonna feel it on millions of iterations

#

You forget how good modern hardware is

#

And hold on

fleet cedar
#

Optimizing things that don't matter is a waste of time

dawn ledge
winged mantle
#

if you call read_word() twice the second time it will not advance the cursor

#

idk if that's bad design

fleet cedar
winged mantle
#

but it would seem weird for reading a word to also skip whitespace

gaunt badge
#
function* objectEntries<T extends object>(obj: T): IterableIterator<[keyof T, T[keyof T]]> {
    for (const key in obj) {
        if (Object.hasOwn(obj, key)) {
            yield [key, obj[key]];
        }
    }
}
#

Teehee

#

Like this?

winged mantle
#

it doesn't waste any time really in this case

#

i prefer to just use the faster thing where it makes hardly any difference to readability

dawn ledge
#

js and py arent the sharpest tool in the shed for speed

gaunt badge
#

Never have been

winged mantle
#

js is pretty good for an interpreted language thanks to v8 and bun though

dawn ledge
#

@valid jetty i have succumbed to my intrusive thoughts
help me name my language

#

havent decided on the syntax yet
probably zig-esque

winged mantle
#

i don't really like using things which allocate a bunch of stuff for no reason lol

#

I still use for of loops because c style loop is less readable

winged mantle
#

i think if you use Object.hasOwn the intent is actually clearer

gaunt badge
#

Best of luck

winged mantle
#

.cs

#

not to be confused with C# (.cs)

winged mantle
gaunt badge
#

If arhsm is making a scripting language it would surprise me

winged mantle
#

try to optimise the parts which matter the least by rewriting in rust

dawn ledge
#

its gonna be compiled, blazing fast, memory safe!

gaunt badge
#

Rustaceans don't work like that

winged mantle
#

just for the meme

gaunt badge
#

YEP

#

I knew it loooool

winged mantle
#

so people can see i tried really hard to optimise unimportant stuff

#

(tbf i did do js benchmarking for ages)

#

(on stuff that didn't matter that much)

#

you would've though on a discord bot command parsing would be a lukewarm path

gaunt badge
dawn ledge
#

hmmm

winged mantle
#

name it lobotomy

#

.lb

gaunt badge
winged mantle
#

bloblang

#

bloblangcozy

valid jetty
#

sounds funny but i was genuinely THIS close to calling it rosielang

winged mantle
#

call it rose

#

🌹

valid jetty
#

call it "ts"Script 🥀

winged mantle
#

ts script

#

type script script

dawn ledge
#

this shit script

winged mantle
#

imagine the best language
a combination of assembly, php, and actionscript

valid jetty
#

ok but on a real note

winged mantle
#

high level but still impossible to use

dawn ledge
#

inchresting
had to lower it from 10k to 100 to not take 200 years since i had to add console.log to make it not be jitted to oblivion

valid jetty
#

i would call the language after a flower

#

but thats just me

#

if not, aim for something short and snappy

#

dont wanna call it mycutelangscript

dawn ledge
#

thats actually a good idea since my favorite unicode character is also ✿

valid jetty
#

you could call it Calla with .cl or Hana with .ha or Hazel with .hzl or Ivy with .ivy or Peony with .pny or Zinnia with .zn

blazing haven
#

or rosie with .pie

gaunt badge
dawn ledge
#

i cant be arsed to write a random non numeric key generator now

gaunt badge
#

Yeah they were in fact correct to use for...in for performance

dawn ledge
#

AmigaOS, MorphOS, WarpOS, AROS, Windows, macOS, Linux, Android, and iOS.
what are these horrors

hoary sluice
#

wheres serenityos

#

haikuos

dawn ledge
#

.hn it is

#

DOS era format; uses arithmetic/Markov coding

#

nvm .ha it is

gaunt badge
#

Lole

#

Yeah that's never getting used

#

Honestly I'm also not allergic to my code file formats being more than two letters

#

.hna wouldn't offend me

supple whale
#

is so cusrsed

#

how the fuck does that even work

#

jesus

#

that's abuse as fuck

#

didnt even know u can abuse builtins like that

dawn ledge
#

lol

gaunt badge
royal nymph
dawn ledge
#

no clue

royal nymph
#

there's only this but no one writes code like that

dawn ledge
royal nymph
#

Object.hasOwn is hasOwnProperty

dawn ledge
#

is it

#

oh

#

it is

#

well whatever

winged mantle
#

so it could be if for some reason you're passing a class idk

royal nymph
#

class methods and the likes are all non enumerable

#

so it makes no difference

winged mantle
#

no but

class Agh extends Base {
    a = "a";
    b = "b";
}
class Base {
    beeMovieScript = "According to all known laws of aviation...";
}
#

if you create new Agh it will also have beeMovieScript

#

which would be iterated with in

#

though will Agh still fit into Record<string, "a" | "b"> idk

#

probaly not

#

that wouldn't make sense

#

i guess it's only an issue if you set the prototype directly because there might be extra values which don't conform to the record

formal belfry
#

pro gamers

royal nymph
#

pretty sure class property assignments are just sugar for

constructor() {
  this.a = "a";
}
#

so they aren't inherited, they are direct properties

supple whale
#

it interacts differently with super()

winged mantle
#

but isn't beeMovieScript inhereted

#

ohh wait

#

so when you do agh it's not like the super class is initialised separately and becomes the proto

#

and this refers to that other instance in the super constructor

#

that would be weird lol

#

oh yeah i think the proto would have the functions and be equivilent to ClassName.prototype?

dense sand
#

Duality of a man

leaden crater
#

both

formal belfry
leaden crater
valid jetty
#

typst <33333

#

you can do SUCH cool stuff in typst

dense sand
#

It looks soooo much cleaner and easier than latex

valid jetty
#

i did this thing

// これには「context」が要る
#let 日本語() = text.lang == "jp"
#let i18n(..args) = context args.at(int(not(日本語())))
#let demo(..args) = context if 日本語() {
  args.at(0)
} else [
  #args.at(0)
  Translated:
  #args.at(1)
  #text(0.8em, luma(120))[
    The above is for demonstrational purposes only.
  ]
]

#let 設定 = yaml("config.yaml")
#let 名前 = yaml(if "名前" in 設定 { 設定.名前 } else { "name.public.yaml" })

#let code(..args) = if "両方" in 設定 and 設定.両方 {
  demo(..args)
} else {
  context args.at(int(not(日本語())))
}

#set text(
  lang: if "日本語" in 設定 and 設定.日本語 or false { "jp" } else { "en" },
  font: if "日本語" in 設定 and 設定.日本語 or false { "Hiragino Mincho Pro" } else { () },
)

// 例
#code(

いちご
関数 メイン()『
   プリント(「こんにちは、世界!」)。


rs
fn main() {
print("Hello, world!");
}

)
#

and you can define custom syntaxes for custom languages too

#

its soooo cool

leaden crater
#

i don't have a preference between latex and typst but I'm really used to latex

valid jetty
#

basically depending on a key in config.yaml you can toggle between these like super easily (literally just a bool away)

#

its so much better than latex because compilation is instant

pearl stagBOT
# dawn ledge i use chrome + tinymist for auto previews, you can probably adopt this slop as a...

typst-preview.nu: Lines 1-26

#!/usr/bin/env nu

def main [
  --url: string
  --port: int
  --websocat: string
  --user-data-dir: string
] {
  try {
    let endpoint = (http get $"http://127.0.0.1:($port)/json" | get 0.webSocketDebuggerUrl) 
    let query = $'Page.navigate { "url": "($url)" }'

    echo "Session exists, navigating..."

    echo ($query) | ^($websocat) -n1 --jsonrpc --jsonrpc-omit-jsonrpc ($endpoint)
  } catch {
    (
      google-chrome-stable
        --disable-first-run-ui
        --no-first-run
        --remote-debugging-port=($port)
        --user-data-dir=($user_data_dir)
        --app=($url)
    )
  }
}

typstpreview.lua: Lines 40-49

  return ('%s --url "%%s" --port %s --websocat "%s" --user-data-dir "%s"'):format(script, port, websocat, user_data_dir)
end

local open_cmd = make_open_command()

return {
  open_cmd = open_cmd,
  dependencies_bin = {
    ["tinymist"] = "tinymist",
  },
dawn ledge
#

tinymist handles the auto update (so you dont have to constantly reload) and my script makes document switching easier

valid jetty
dawn ledge
#

yes

leaden crater
dawn ledge
#

math in typst is actually sane

valid jetty
#

you can do that in typst too except the syntax is sane

#

yeah

dawn ledge
#

latex is cbt

leaden crater
#

latex is insane but I'm too

valid jetty
#

arent we all

dawn ledge
#

true

valid jetty
#

bell??????

leaden crater
#

is that mizuena

valid jetty
#

yes

formal belfry
#

@valid jetty tolling

valid jetty
#

tole tole [happy]

leaden crater
#

mizuena is the best thing to exist

valid jetty
winged mantle
#

regex makes everything so much better

leaden crater
#

but Sega confirmed no?

valid jetty
#

nop

leaden crater
#

Sega kil

winged mantle
#

-a lazy developer 2025

valid jetty
#

they never explicitly confirmed she was trans in mizu5 it’s just HEAVILYYYYYY implied (like “that’s the whole point/plot of the story” kind of implied) but it’s never explicitly stated she’s trans

leaden crater
#

i didn't read mizu5 but i saw a lot on tt and yt

valid jetty
#

mizu5 was SUPPOSED to end the gender war that existed but instead it turned it into trans allies vs transphobes

leaden crater
#

mizuki is the cutest in the game idk how people can be like that

winged mantle
#

i am finally realising that readonly is important in typescript

#

because if you make one array readonly it can't be passed into a non-readonly array pameter

#

so i should probably be adding it everywhere it's not mutated

dawn ledge
#

@valid jetty can you man 2 write for me

winged mantle
#

wait ugh but object can also be readonly

#

who does readonly interfaces for function parameters i never see that

royal nymph
#

no one

dense sand
shrewd canopy
#

jdk

winged mantle
#

is there any reason to do Array.isArray instead of instanceof Array when you're using node.js

dense sand
#

i thought you are talking about java

#

i was like: "use .getClass().isArray()"

winged mantle
#

instanceof Object[] also works

#

just not for primitive arrays

#

because yes

dense sand
#

in js?

winged mantle
#

no not in js

dense sand
#

please add defer to C

winged mantle
#

the type becomes implicitly any[] if you use isArray

#

if you use instanceof it infers them correctly

#

oh readonly array

#

does anyone use readonly arrays they seem kind of afdjkhs

fleet cedar
#

Mutability annotations are useless in all languages except rust

winged mantle
#

unsafe

#

what about c++

#

const actually stops the inner data from being modified

fleet cedar
#

Nope

deep mulch
#

@winged mantle

winged mantle
#

any issues are more related to memory safety rather than issues with const

fleet cedar
#

Const in c++ is not transitive, and nothing stops the data from being mutated behind your back through a different pointer

winged mantle
#

but you would need to cast away the const... which is comparable to an unsafe in rust i would say

fleet cedar
#

For example the const in const unique_ptr<T> doesn't mean shit

winged mantle
#

that's because you're not making T const

#

you're making the pointer const

#

i dunno if you can make the pointer const but probably

fleet cedar
#

That's ub if the pointer points to something that is const, but if it's been casted to const you can cast it away just fine

fleet cedar
valid jetty
# dense sand please add defer to C

i wrote this recently

#define __DEFER_INTERNAL__(f, v) \
    auto void f(char*); \
    char v __attribute__((__cleanup__(f))); \
    auto void f(char*)
#define __DEFER_WITH_COUNTER__(x) \
    __DEFER_INTERNAL__(__f##x##__, __v##x##__)
#define __DEFER__(N) __DEFER_WITH_COUNTER__(N)
#define defer __DEFER__(__COUNTER__)

int main() {
    int *x = malloc(6 * sizeof(int));
    defer { free(x); };

    return 0;
}
``` but it relies on the cleanup func extension in GCC
winged mantle
#

it's the equivilent to const T* const i believe

#

or wahtever it is

dense sand
dense sand
#

just make the preprocessor more powerful 😭

winged mantle
#

why not use zig

#

or something

#

or write custom c transpiler

#

would be a fun and educational project but also lots of time wasted

dense sand
#

i think its just an easy regex find & replace tbh

dawn ledge
#

transpile to RUST

winged mantle
#

how to parse c with regex

dense sand
#

you dont have to parse anything tbh

#

or i mean it depends how complex do you want it to have

winged mantle
#

don't you need to find the exit of the function

dense sand
#

well nvm you would need normal parser

winged mantle
#

that seems hard to do

dense sand
winged mantle
#

what if it's implicit return

#

what if return exists in a string

#

what if macros do some stuff

dense sand
#

true

lavish frigate
dawn ledge
dense sand
#

just use antlr4

fleet cedar
winged mantle
#

the let _ thing is kind of weird

#

they should just use [[maybe_unused]]

fleet cedar
#

_ pattern is very important

#

let _ = is nonsensical though

dawn ledge
#

must_use in question:

mossy ether
fleet cedar
#

Sure

#

It's a reasonable way to say "I am deliberately not using or storing this value"

dawn ledge
fleet cedar
#

There already exists a worse-than-rust -> rust transpiler, it's called tac

valid jetty
#

or not inspiration but to laugh at it

dawn ledge
#

show show

valid jetty
#

keep in mind this was before i really learnt rust

// Import statements follow a lib:file@{method1, method2...} format;
use elle:io@{print};
use elle:int@{random};

const languageName = "Elle";

// Use `pub` to make functions public so they can be imported by other files
// You *must* expose the main function for it to be runnable
pub op main() {
    let resWithThree: Int = randomWithMultiplier(3); // Returns a random number between 0 and 10 multiplied by 3 using positional arguments
    let resWithSixteen: Int = randomWithMultiplier(multiplier: 16); // Returns a random number between 0 and 10 multiplied by 16 using keyword arguments
    printMessage(
        "First result is %d and second is %d", 
        resWithThree, 
        resWithSixteen
    );

    let maybeRes: Int? = randomWithPossibleError();

    if (maybeRes) {
        // In this scope, maybeRes is just Int32 not Int32?
        printMessage("Result is %d", maybeRes);
    } else {
        // This is a character because it's a single quote.
        printMessage('a');
        printMessage("Oh no! We failed.");
    }
}

op randomWithMultiplier(Int multiplier) -> Int {
    // If a function uses keyword arguments they must *all* be keyword arguments
    // Use the ret keyword to return from the operation
    ret random(between: 0, and: 10, included: true) * multiplier;
}

// Operations can either return a value or void.
// `nil` is the undefined/null value in Elle.
// Use the '?' operator at the end of the return type to denote that the function can return nil.
op randomWithPossibleError() -> Int? {
    let result: Int = random(0, 5, true);

    // Match keyword works very similar to other languages
    ret match result {
        3 -> nil,
        val -> val,
    }
}

// No return argument needed if function returns void
// Note that this is *only* if the function returns void
op printMessage(String message) {
    printf(`[%s] %s`, languageName, message);
}
dawn ledge
#

interesting

#

kotlin vibes

valid jetty
#

idk what i was doing with op and ret lmao

#

I FOUND AN OLDER ONE

#
// Import statements follow a lib:file@{method1, method2...} format;
require elle:io;
require elle:int@{random};

// Use `expose` to export functions so they can be imported by other files
// You *must* expose the main function for it to be runnable
expose op main() {
    Int32 resWithThree = randomWithMultiplier(3); // Returns a random number between 0 and 10 multiplied by 3 using positional arguments
    Int32 resWithSixteen = randomWithMultiplier(multiplier: 16); // Returns a random number between 0 and 10 multiplied by 16 using keyword arguments
    printMessage(`First result is %{resWithThree} and second is %{resWithSixteen}`);

    Int32? maybeRes = randomWithPossibleError();

    if (maybeRes) {
        // In this scope, maybeRes is just Int32 not Int32?
        printMessage(`Result is %{maybeRes}`);
    } else {
        // This is a character because it's a single quote.
        printMessage('a');
        printMessage("Oh no! We failed.");
    }
}

op randomWithMultiplier(Int32 multiplier) -> Int32 {
    // If a function uses keyword arguments they must *all* be keyword arguments
    // Use the ret keyword to return from the operation
    ret random(between: 0, and: 10, included: true) * multiplier;
}

// Operations can either return a value or void.
// `nil` is the undefined/null value in Elle.
// Use the '?' operator at the end of the return type to denote that the function can return nil.
op randomWithPossibleError() -> Int32? {
    Int32 result = random(0, 5, true);

    // Match keyword works very similar to other languages
    ret match result {
        3 -> nil,
        val -> val,
    }
}

// No return argument needed if function returns void
// Note that this is *only* if the function returns void
op printMessage(string message) {
    io::print(message);
}
leaden crater
#

I'll definitely take inspiration

valid jetty
#

modern elle can do all which that can do except match statements, keyword arguments, and string interpolation :3

dense sand
#

still more features than java /s

valid jetty
#

java is such a slop

dense sand
#

when documenting code, and the 2nd function is essentially the same but with a different parameter, would you copy paste the docs or just leave it empty like this?

valid jetty
# valid jetty keep in mind this was before i really learnt rust ```rs // Import statements fol...

anyway "modern" elle

use std/prelude;
use std/option;

const LANGUAGE_NAME = "Elle";

fn random_with_multiplier(i32 multiplier) -> i32 {
    return rand::random(0, 10) * multiplier;
}

fn random_with_possible_error() -> Option<i32> {
    result := rand::random(0, 5);

    if result == 3 {
        return Option::None();
    } else {
        return Option::Some(result);
    }
}

fn print_message<T>(T message) {
    $printf("[{}] {}", LANGUAGE_NAME, message);
}

fn main() {
    rand::seed(time(nil));
    resWithThree := random_with_multiplier(3);
    resWithSixteen := random_with_multiplier(16);
    print_message("First result is {} and second is {}".format(resWithThree, resWithSixteen));

    maybeRes := random_with_possible_error();

    if maybeRes.is_some() && res := maybeRes.unwrap() {
        print_message("Result is {}".format(res));
    } else {
        print_message('a');
        print_message("Oh no! We failed.");
    }
}
valid jetty
#

make it explicit

valid jetty
#

typeof maybeRes === Option<i32>

#

you could have a res you could not have a res

#

so you maybe have a res

#

hence maybeRes

leaden crater
#

wow

#

3 valued boolean logic when

valid jetty
#

the infamous enum 💔

leaden crater
#

what does that do

valid jetty
#

if you ever need 3 states you can literally just

enum Foo {
  A,
  B,
  C
}

fn foo(x: Foo) {
    match x {
        Foo::A => ...,
        Foo::B => ...,
        Foo::C => ...
    }
}  
``` (this is rust not elle)
leaden crater
#

i was thinking about a 3 valued bool the other day and i told a friend about it and he absolutely despised the idea

0 for no
1 for yes
2 for idk maybe

valid jetty
#

yeah thats basically a 3 valued bool

#

thats kinda a solved problem by enums

leaden crater
#

maybe I'll try rust

#

seems to fix my problems

valid jetty
#

thats not a rust thing lol

#

a lot of langauges have enums

#

heck even TS and C have enums

leaden crater
#

yes but i hate c

lavish frigate
leaden crater
#

i was doing some c yesterday for school and the problem took almost one hour, when it would take 1 minute in cpp

valid jetty
#

what was the problem

leaden crater
valid jetty
#

im sure theres a more elegant way to do it

#

was it the suffix thing

leaden crater
# valid jetty what was the problem

it was to find a certain ascii character in a string and find how many occurrences there are and replace each occurrence with the total number of occurrences

example: apple
we say p
a22le

leaden crater
valid jetty
#

oh run length encoding???

#

oh

#

similar ish

leaden crater
#

i hate str... functions for c

#

i wish they would explode

valid jetty
#

yeah thats justified

#

are there any restrictions on the code???

#

because thats pretty easy lol

leaden crater
#

not really, just using the ascii value

leaden crater
#

would it be simple in rust, should i give up c and learn rust

valid jetty
#
#include <stdio.h>
#include <string.h>

char *replace_with_count(char *str, char target) {
    char *copy = strdup(str);
    int count = 0;

    // count occurences
    for (char *p = str; *p; p++) {
        if (*p == target) count++;
    }

    if (count == 0) return copy;

    // replace occurences with count
    for (char *p = copy; *p; p++) {
        if (*p == target) *p = '0' + count; // ('0' + x) is an easy way to convert a number into its char representation
    }
    
    return copy;
}

int main() {
    char *word = replace_with_count("apple", 'p');
    printf("%s\n", word); // a22le

    return 0;
}
``` easy enough
leaden crater
#

@lavish frigate is rust learnable in 3 months

valid jetty
#

idk i dont think that should take an hour lol

leaden crater
#

well okay maybe i was exaggerating a bit but they take a lot of time for me

#

i really don't get c strings

dense sand
#

why do i have 2 autocompletes 😭

lavish frigate
valid jetty
#

i’ve been learning rust while making elle for at least a year

leaden crater
valid jetty
#

because i have commits from a year ago

valid jetty
#

find stuff you need and try to write it in rust

lavish frigate
valid jetty
#

ask questions as you go

lavish frigate
#

yep

#

and you can use rust for basically anything

leaden crater
#

can i ask here or would it be too bothersome

lavish frigate
#

sure you can ask here

valid jetty
#

yeah

leaden crater
#

I'll utilize my free time to learn rust because anyways the school year is almost over

#

but i don't really know where to start, like,

#

i don't know how to write in rust

hazy pine
#

theres a book

leaden crater
dense sand
#

id just pick a project and learn while working on it

leaden crater
#

i don't know if i can focus enough to read through a book

#

but I'll try

hazy pine
#

the book is so good that it rust comes with it preinstalled

hazy pine
leaden crater
#

well if i read pacman manual entries i think this is doable

lavish frigate
#

explaining a bunch of concepts

leaden crater
#

I'll start today (if i finish schoolwork) or tomorrow

#

i still have to write 6 more c stupid problems for Monday

lavish frigate
#

👍

leaden crater
hazy pine
#

crazy

lavish frigate
#

you install rustup with curl which is basically an official version manager

#

and then you install cargo and rustc using rustup

leaden crater
#

yes but pacman -S rustup

lavish frigate
#

sure

leaden crater
#

i already have rust installed because of that prime problem a while ago

hoary sluice
#

you can learn to read it in 15 minutes

#

you can learn everything you need to write a compiler in a day

#

you can learn to use it well in way less than 3 months

lavish frigate
#

you can learn to use it well in a week fueled by pure dedication

hazy pine
#

i really want to learn rust but like

hoary sluice
#

i took a day to learn it then wrote an interpreter but my code ended up being super ugly so now im rewriting it on and off

hazy pine
#

ive read the entire book, i understand the concept (mostly), now what?

#

what do i make

hoary sluice
#

a compiler

lavish frigate
hoary sluice
#

or do aoc

leaden crater
#

i learned to install and manage arch problems that i have (besides nvidia) in 2-3 days because of dedication

hazy pine
#

i dont make anything anymore, i dont got ideas

leaden crater
#

fuck nixos

hoary sluice
#

have u ever used it

lavish frigate
leaden crater
#

hyfetch --DISTRO nixos

hoary sluice
#

hyfetch husk

leaden crater
hazy pine
lavish frigate
hazy pine
#

but god do i want to do more

hazy pine
hoary sluice
#

at least dont say fuck nixos then

hoary sluice
hazy pine
hoary sluice
hazy pine
#

a compiler is scary

hoary sluice
#

no its not

leaden crater
hoary sluice
#

its fun

hoary sluice
leaden crater
#

@hazy pine you can recode doom in rust

hazy pine
#

you guys are too good at coding

leaden crater
#

I'm not

#

I'm literally so bad

hazy pine
#

suree buddy

leaden crater
#

I'm really bad

hazy pine
#

sureeee

leaden crater
#

it took me 30 minutes to do something in c

hazy pine
#

ok you could be bad but like comparatively

#

to me

leaden crater
#

something as easy as possible

hazy pine
#

i cant do ANYTHING in c

lavish frigate
#

i tried to make dynamic arrays in c once

#

never again

leaden crater
#

should i use vim, nano, nvim, or visual for rust

hoary sluice
hoary sluice
lavish frigate
# lavish frigate never again

it segfaulted 15 times within a microsecond, crashed my computer, it rebooted, it bluescreened, tried to start, c installed linux, linux started, i tried to get out, it deleted all my data, i shut my pc down, c turned it back on again, it deleted linux again, installed windows, it bluescreened, started again, hacked into the NSA, got my data back, fixed my code, recompiled and then it worked

hoary sluice
#

u should use nvim for everything besides kotlin and qt

lavish frigate
hoary sluice
leaden crater
hoary sluice
#

it severely hinders productivity

hazy pine
hoary sluice
lavish frigate
#

because you are comfy with it doesnt mean others are

hoary sluice
leaden crater
lavish frigate
#

i tried nvim, used it for a week, got all those fancy plugins and whatever people recommended and even learnt how to use lua to config it
i still below half my productivity level as with vscode just because its so unfamiliar and just does not work for me

hoary sluice
#

i had to use nano a bit ago cause nixos comes with only nano preinstalled and it was the most horrible experience of my life and i dont understand how anyone could ever use nano to actually write software, i can understand vscode or jetbrains ides but nat nano

hoary sluice
lavish frigate
#

no

hoary sluice
#

how are u navigating then

lavish frigate
#

keybinds or mouse

hoary sluice
#

what keybinds

#

arrow keys, home, pg up, pg down, end?

dense sand
hoary sluice
lavish frigate
#

idfk the default vscode keybinds

hazy pine
dense sand
hoary sluice
hazy pine
#

honestly im using nvim cause vscode is too heavy

hazy pine
lavish frigate
#

i tried vim motions and it sucked for me

hoary sluice
#

vim motions dont require nvim

hazy pine
#

still absolutely suck at vim motions

lavish frigate
#

again i did try nvim, i still use vim on the server

#

i tried vim motions on jetbrains and vscode

#

it just does not work for me

#

and telling others to force your ways again is just stupid

dense sand
#

I need a new vim setup blobcatcozy

hoary sluice
# lavish frigate i tried vim motions and it sucked for me

yea it sucks for the first week or month cause ur not used to it yet, like literally everything in life, it doesnt mean u should give up, i was garbage at vim for a long time but now im so glad that i learned it cause when i see other people writing code without vim its just painfully slow

lavish frigate
#

😭

#

dude

hoary sluice
#

it makes no difference in my life if you use vim or not

#

im just telling you its worth it

lavish frigate
#

why are you trying so hard then 😭

dense sand
#

The 0.2 seconds it takes to my hand to get to the arrow keys isnt that bad

hoary sluice
lavish frigate
#

yea from using nvim

hoary sluice
#

lmao

lavish frigate
#

hop back on vscode to avoid burnout

#

vscode will fix all your problems

#

use vscode immediately

#

it will 1000x your productivity

leaden crater
#

@hoary sluice just type :qa!

hoary sluice
#

i did that for a week and gok burnt out

#

still burnt out from it

leaden crater
#

use nano

hoary sluice
#

need to do a bit more vimming to cool down

hoary sluice
leaden crater
#

i feel like people hate nano with no ground whatsoever, it's actually pretty good

lavish frigate
#

the linux poisoned mind will never understand this

hoary sluice
lavish frigate
hoary sluice
leaden crater
#

I'll use whatever i want

hoary sluice
#

its jusn a barebones editor made for people getting started with editing in the terminal

lavish frigate
#

if someone prefers that experience over the alternatives who are you to tell them off

lavish frigate
hoary sluice
leaden crater
#

ok

hoary sluice
lavish frigate
#

nobodo actually learns nvim because its a good editor, they use it because other people force them into learning it

leaden crater
#

it's very simple to use and gets the job done

hoary sluice
lavish frigate
#

im not making fun of you

#

im copying what you are doing so you realize that what you are saying is insane

hoary sluice
lavish frigate
#

except people actually use nano as their main editor?

leaden crater
hoary sluice
hazy pine
#

is nvim really that bad

leaden crater
hoary sluice
lavish frigate
leaden crater
#

i use codeblocks, visual, nano

lavish frigate
#

but someone here is arguing about preference

hoary sluice
hoary sluice
#

if you know someone feel free to show me

lavish frigate
#

¯_(ツ)_/¯

hoary sluice
leaden crater
hoary sluice
#

pls say vscode not visual

#

visual is the name of vi, the predecessor to vim

#

its confusing

lavish frigate
#

been experimenting with fuzzy find in vscode blobcatcozy i like it a lot

hoary sluice
#

been experimenting with fuzzy find in nvim :blobcatcozy: i like it a lot

#

why did it not send

hazy pine
#

teach me your ways

lavish frigate
hoary sluice
lavish frigate
#

its just not like in vscode

hoary sluice
#

ah ok that explanation makes sense and i now understand why nvim fzf is worse

winged mantle
#

lol the biggest bottleneck of my parsing code is Object.defineProperty

lavish frigate
winged mantle
#

oh yeah

#

i remember why i was doing this

#

if i make my parser a library who knows what insane things people will try

lavish frigate
#

Replicube is an open-ended programming puzzle game/toy about writing code to replicate 3D voxel-based objects.

SOLVE PUZZLES

The main content of the game involves trying to match a reference object by working out code that will replicate it.  There is no "right answer", if your code produces the same object, it's correct!

Release Date

Apr 24, 2025

▶ Play video
winged mantle
#

single process for 1m discord servers

hoary sluice
lavish frigate
#

you sure?

hoary sluice
#

yes im sure

lavish frigate
#

maybe its something with your computer being slow in general idk for me nvim fzf is just extremely slow while everything else is fast

hoary sluice
#

they literally use the same tool idk what youre on about

#

the only way its not instant is if i start vim in the root directory and search for something

#

which is almost 200GB of files

#

and even there it takes less than a second and updates live so you see more and more files show up as it searches

#

both vscode and nvim use ripgrep in fzf so they have the exact same speed because they use the same tool

hoary sluice
#

unless you were working in a gigantic project (hundreds of GB of non excluded files) and were using normal grep in nvim and ripgrep in vscode

dawn ledge
lavish frigate
dawn ledge
#

true

lavish frigate
#

if you are an ass to me when i try to change the convo to something better i will just start ragebaiting

#

and the easiest way to do that on nvim users is to lie about speed

dense sand
#

yes thanks im havign anxiety from C

lavish frigate
#

what search engine is that...

dawn ledge
#

looks like bing

hoary sluice
#

duckduckgo

dense sand
#

like bruh i literally compiled with it and it correctly crashes when running in gdb environment, but it wont trigger on any leaks...

valid jetty
#

forget “what’s the best linux distro” this guy’s asking the real questions

dawn ledge
#

literally just a vscode reskin

lavish frigate
leaden crater
#

@valid jetty typst looks very complex, like spaghetti compared to latex (project from a friend)
too much paranthesis

lavish frigate
dawn ledge
#

its literally better and more readable than latex

#

you just gotta format it properly

lavish frigate
leaden crater
#

i find latex more readable

dawn ledge
#

almost all of these parens are unnecessary