#๐Ÿช…-progaming

1 messages ยท Page 105 of 1

winged mantle
#

i fixed nonexistent issues...

#

probably the biggest programming sin

#

blasphemy...

jade stone
#

massive cache file

crude star
#

json databases love

jade stone
#

it's never changed after it's written

deep mulch
#

wouldn't a database be faster for lookup

jade stone
#

too complex

#

the only thing i might do is minify the json a bit to save space

crude star
# jade stone not a database

Aaaand this kind of pointless pedantry is why even experienced users leave projects. Ironic bringing up context, considering nobody here was honestly stupid enough to not figure out what "database" referred to in context (considering, again, there is literally only a single json file). Y'all just wanted to wave your superior technical knowledge over the 'newbie' for not using your brand of terminology โ€“ on a semantic technicality that was irrelevant to the discussion. Bye. :)

deep mulch
# jade stone not a database

Aaaand this kind of pointless pedantry is why even experienced users leave projects. Ironic bringing up context, considering nobody here was honestly stupid enough to not figure out what "database" referred to in context (considering, again, there is literally only a single json file). Y'all just wanted to wave your superior technical knowledge over the 'newbie' for not using your brand of terminology โ€“ on a semantic technicality that was irrelevant to the discussion. Bye. :)

valid jetty
# jade stone not a database

Aaaand this kind of pointless pedantry is why even experienced users leave projects. Ironic bringing up context, considering nobody here was honestly stupid enough to not figure out what "database" referred to in context (considering, again, there is literally only a single json file). Y'all just wanted to wave your superior technical knowledge over the 'newbie' for not using your brand of terminology โ€“ on a semantic technicality that was irrelevant to the discussion. Bye. ๐Ÿ™‚

winged mantle
# jade stone not a database

Aaaand this kind of pointless pedantry is why even experienced users leave projects. Ironic bringing up context, considering nobody here was honestly stupid enough to not figure out what "database" referred to in context (considering, again, there is literally only a single json file). Y'all just wanted to wave your superior technical knowledge over the 'newbie' for not using your brand of terminology โ€“ on a semantic technicality that was irrelevant to the discussion. Bye. ๐Ÿ™‚

supple whale
#

okay typescript

#

thanks

#

like array.isArray actually breaks taht shit

#

its crazy

jade stone
#

my code sucks lol

winged mantle
#

hmm

#

i think i wanna rewrite the http part of my app in go

#

or rust or anything as i don't want to use a sloplang like js for something connected to the web

#

(dumb reason i just idk)

lavish frigate
#

good reason

winged mantle
#

i guess js is potentially more vulerable to dos

winged mantle
#

it would probably be really bad since my db access stuff is in js though

#

i guess i could make a transpiler

#

transpile simple js which only does db stuff to go

winged mantle
#

I have a great idea! create a syntax to declare db structure and then it auto generates queries!

#

oh? that's called an orm?

#

what's an o-r-m?

nimble bone
# jade stone not a database

Aaaand this kind of pointless pedantry is why even experienced users leave projects. Ironic bringing up context, considering nobody here was honestly stupid enough to not figure out what "database" referred to in context (considering, again, there is literally only a single json file). Y'all just wanted to wave your superior technical knowledge over the 'newbie' for not using your brand of terminology โ€“ on a semantic technicality that was irrelevant to the discussion. Bye. ๐Ÿ™‚

winged mantle
#

i guess i will just try to create more separation

supple whale
#

mmmmm im bored

#

saw t3 on my youtube feed [i pressed dont recommend this channel like 3 times now], saw he made a slack clone

#

UI doesnt let me send emojis

#

send a message of 100k ๐Ÿ’…'s directly via websocket

#

website doesnt load anymore

#

db error

#

:)))))))))

#

too much free time on my hands

#

fucking ai slop

#

ITS STILL HERE GOD FUCKING DAMN IT YOUTUBE HOW MANY TIMES DO I NEED TO PRESS DONT RECOMMEND

deep mulch
#

@nimble bone watch

ornate quiver
nimble bone
supple whale
#

yeah i have a thing against installing extensions

royal nymph
#

insane

supple whale
#

they are waaaaaaaaaay too priviliged

#

like the perms given to extensions are fucking insane

royal nymph
#

you sound like a wokie broken_love

supple whale
#

nah i sound like a person that doesnt want to get hacked

#

i usually just use userscripts

#

or convert extensions to userscripts

#

because then they randomly wont auto update to include malware

#

as has happened 100 times in the past 6 months on chromium

#

the only thing more consistent than v8 0 days are extensions updating to include malware

deep mulch
#

ohh rusher my rusher

#

my dear rusher

royal nymph
ornate quiver
#

yoppp

#
deep mulch
#

sometimes slower is better

#

@royal nymph make vencord slower

#

@royal nymph add invasive telemetry to vencord

#

it will be so good

#

trust

supple whale
#

v-ads when

#

so much revenue

#

the userbase so big

lavish cloud
#

made completely server-side quest markers
making them ignore shading was a nightmare

runic sundial
#

this will save me from brainrot

#

i can now HIDE AI CONTENT WITH 2 CLICK

supple whale
#

resource pack?

crimson sparrow
valid jetty
#

is this a sane way to do this

import patcher from '@core/patcher';
import utilities from '@utilities';
import logger from '@core/logger';

const { lazyDefine, findReact, name } = utilities;

function handler() {
    const tableNode = document.querySelector('[class*="_Table_"]');

    if (!tableNode) return;

    const Table = findReact(tableNode);

    if (!Table) return logger.debug('Failed to find React Fiber of LB Table:', Table);

    patcher.before('type', Table, (args) => {
      const users: unknown = args?.[0]?.users;

      if (Array.isArray(users)) {
        users.find(user => user?.isCurrentUser).firstName = name.firstName;
      }
    });
}

export default async function () {
  const page = await lazyDefine(() => document.querySelector('[id="root"]'), undefined, Infinity);

  const observer = new MutationObserver(mutations => {
      mutations.forEach(mutation => mutation.type === 'childList' && handler());
  });

  observer.observe(page, { childList: true, subtree: true });
  return () => observer.disconnect();
}
#

every time the root renders something different in the main content island, the function to patch changes and my patch indirectly gets unpatched

#

though idk if a mutation observer for every time the root changes ever is good for performance

#

but it works

austere idol
#
# gil goes vroom vroom
for filename in filenames:
    fn = join(dirname, filename)
    with open(fn, "rb") as f:
        print(fn)
        tasks.append((fn, f.read()))
deep mulch
#

@valid jetty teach me complex and imaginary numbers applying to fractals and keep it dumbed down for me blobcatcozy

deep mulch
#

I wonder if Rosie knows quantum mechanics and thermodynamics

winged mantle
#

the first law of thermodynamics is you do not talk about thermodynamics

dense sand
#

Which font look the best with M3 design? I want to make my app look as similar as possible to the official google apps, but google sans is not open source

nimble bone
#

true

dense sand
#

because my friend wants me to use it...

deep mulch
#

oh

#

good luck then

#

I've yet to see a flutter app manage to use m3 properly

#

font all wrong, icons wrong, colors wrong

#

I hate flutter

dense sand
#

and should i use jetpack compose or kmp?

deep mulch
#

jetpack compose if you're just making an android app

austere idol
ornate quiver
#

kmp is just kotlin multiplatform
compose multiplatform is the cross platform ui stuff

supple whale
#

hello frends

#
.text-contrast {
  color: hsl(from var(--your-color-variable) h s calc((l - 60) * -10));
  fill: hsl(from var(--your-color-variable) h s calc((l - 60) * -10));
}
#

goodbye

hoary sluice
formal belfry
#

Does anyone here know D /gen

spark tiger
spark tiger
dense sand
deep mulch
spark tiger
#

who does ts

jade stone
#

me when i come back to old code i wrote

jade stone
#

@nimble bone @pseudo sierra my code is so slow ๐Ÿ˜ญ

pseudo sierra
#

horror

jade stone
#

i can't do anything about the time it takes over the network or writing to disk

#

and 4s to format every discord module is really good

#

but the bottom 2 need work

#

esp since i'm computing things more than once

jade stone
crude star
# jade stone

the bloodstreams of the damned flow through the walls of hell

jade stone
#

23k times

deep mulch
#

@crude star hii

crude star
#

hi

runic sundial
#

or some other dynamic language

deep mulch
#

did someone say Kotlin

deep mulch
runic sundial
#

ok

#

hop on literally anything else

#

leave typescript

#

do not

#

do it

deep mulch
#

salad crazy

runic sundial
#

crazy? i was crazy once

dense sand
#

@deep mulch my friend cant stfu about flutter, do you have any proof how to show them bad m3 app in flutter

supple whale
#

yes, than you dependabot for telling me my electron compliation scripts are vulerable to attacks

#

i hate these crazy dependency trees

dense sand
supple whale
#

yeah its vite

#

i use vite for bundling my native electron code, because some guy wrote some insane tooling around it, and even tho its vite, it has the best DX for electron out of anything i've ever used

#

it has automatic bytecode compilation for nodejs threads [aka what browsers do for websites to speed up loading on re-visits], which speeds up nodejs load times a fuckload

#

it has automatic debugger attaching to all electron contexts, be it main, thread or windows

#

and split type declarations, so that you have different globals and libraries for the native electron code, and the UI code, so u wont randomly get nodejs types and cjs imports in ur UI code, but you will in the native nodejs threads

#

its still fucking vite, and i hate it, but the DX is so good its unfunny, the guy cooked

dense sand
#

oh wow SKULL_SKELETON

supple whale
#

yeah i legit hate flutter

#

i worked in it twice

#

never fucking again

#

its hell

shrewd canopy
#

I like flutter idk why people hate on it
Still 1000x better than react native (๐Ÿคข)

supple whale
#

sure its better

#

but fuck is it not a high bar

#

mfw will write 300 lines of code and go "ah yes finally, my single button is finished"

#

like breugh

dense sand
#

anyone knows what this error could be caused by?

jade stone
#

Most of the time is in the abandoned library that Iโ€™m using

#

which I need to move to the updated version of

deep mulch
#

idk

dense sand
#

im not even connected to anything ๐Ÿ˜ญ

#

anyways i downgraded and it works now

deep mulch
#

oh

#

interesting

dense sand
#

seems to be an arch thing

#

@deep mulch any idea how to get the route out of NavHostController?

#

i need it for my topbar, but its crashing with java.lang.ArrayIndexOutOfBoundsException: length=3; index=2027439596

deep mulch
#

oh

#

there's no destinations in it

#

I think if you use .get instead of [] it will be nullable and not error

#

in your topBar

supple whale
#

this isnt even an adb or android problem

#

it simply cant connect to the adb server

dense sand
#

yup, i had to downgrade to 35

#

idk why

#

bs

deep mulch
#

ive had errors like that but they usually go away after restarting everything

dense sand
#

Why the gap above husk

#

stop doing questionable stuff jetpack or i will be forced to use flutter

lavish frigate
#

wtf

#

js events are getting an upgrade

#

on latest chromium rn

deep mulch
#

enableEdgeToEdge

#

and NoActionBar style

lavish frigate
# lavish frigate

*.filter should be self-explanitory, .take drops the event subscription after n dispatches (.when("click").take(2) = automatically unsubscribes after you click twice)

dense sand
deep mulch
#

in the styles.xml

#

your app theme should extend Theme.AppCompat.DayNight.NoActionBar

supple whale
#

webview gaming

lavish frigate
deep mulch
#

use AppCompat instead of Material i think

dense sand
#

the search bar is wrapped on box, which is positioned correctly

deep mulch
#

wait

#

what even is GenericTopBar

dense sand
deep mulch
#

thats not stdlib

dense sand
#

no thats mine

deep mulch
#

why

#

theres already ones made

dense sand
#

it just wraps TopAppBar

#

i want to add extra stuff to it later

deep mulch
#

o

#

show the GenericTopBar function

dense sand
#
@Composable
fun GenericTopBar(
    title: String,
) {
    TopAppBar(
        colors = TopAppBarDefaults.topAppBarColors(
            containerColor = NavigationBarDefaults.containerColor
        ),
        title = { Text(text = title) }
    )
}
deep mulch
#

whers the searc bar coming from

dense sand
#

FinderScreen which is opened from SearchScreen

deep mulch
#

oh

#

well the top bar is still there so the search bar gets padded down

dense sand
#

well that doesnt seem to be the problem actually

#
Box(
        Modifier
            .fillMaxSize()
            .semantics { isTraversalGroup = true }
    ) {
        SearchBar(
            modifier = Modifier
                .align(Alignment.TopCenter)
                .semantics { traversalIndex = 0f },
            inputField = ...,
            expanded = true,
            onExpandedChange = { },
        ) {
            Column(Modifier.verticalScroll(rememberScrollState())) {
                
            }
        }
    }

if i put border on the box, its covers the whole screen, like completely

deep mulch
#

youre not applying the scaffold padding

dense sand
#

huh?

deep mulch
#

the box is on top of the scaffold because of the fill max size

#

youre missing the innerPadding

dense sand
#

but i see the bottom bar

#

if i replace the SearchBar with Text, the gap goes away

#

so i think the problem is just in the SearchBar styling

deep mulch
#

well youre supposed to have text in the top bar or have it hidden

dense sand
#

well i said that if i remove the top bar entirely, its still there

deep mulch
#

how did you remove it

dense sand
deep mulch
#

show

dense sand
#

ended up just writing my own implementation

deep mulch
#

guh

royal nymph
#

who up zooting

#

oh this is programming

winged mantle
#

who up zooting

valid jetty
#

who up zooting

runic sundial
deep mulch
#

loicence

jade stone
#

who up zooting

boreal minnow
#

if discord was to migrate from webpack to rspack would that break webpack related mods?

#

waitt

#

im probably asking in the wrong channel

boreal minnow
#

๐Ÿฅบ

ornate quiver
#

ofc not

boreal minnow
#

im currenly trying out rsbuild and it's so amazing, discord might think it's amazing too

ornate quiver
#

i think they might use rspack for rna on mobile?

#

not sure

boreal minnow
#

rsbuild fixes my vite issue related to sharing chunks with web workers and main thread

#

also that build time is insane

supple whale
#

vite is so fucking assssss

#

i dont understand why every1 loves it so much

#

it has so many issues its unfunny

#

webpack is so much better, its just slower at startup

#

and fucking everything now uses vite, and im forced to use it, because nothing else wants to support webpack anymore

#

cant even fucking use sveltekit on webpack

#

because its vite only....

frosty obsidian
ornate quiver
#

I don't think so?
isn't there still webpack boilerplate everywhere

#

also webpackChunkDiscord_app

boreal minnow
#

I thought rspack and webpack had a different runtime

boreal minnow
#

but it has a slightly different runtime

#

for example wpRequire.c doesn't exist in rspack

#

or maybe I'm just wrong

boreal minnow
#

I can just use react or solidjs lol

#

the SFC paradigm kinda suck too

#

it makes more sense for smaller components to be in the same file

boreal minnow
jade stone
jade stone
pearl stagBOT
boreal minnow
#

it is rspack

#

that's insane

#

I assume this was not a recent move

boreal minnow
#

๐Ÿค”

#

afaik rspack is even starting to maintain its own versions of dead webpack plugins

#

or maybe webpack plugins are just that reliable to the point you don't need to maintain it at all

dense sand
#

what if we got cats

#

and then log them

dense sand
#

this is a second time my android studio absolutely ate all ram and cpu and i was force to reboot via power button

winged mantle
#

TIL in typescript there's a difference between method and function property declarations in interfaces

#

even if you use the safer function property declaration you can still bypass it by declaring as a method

#

wait or can you

crude star
#

cursed

supple whale
#

but I'm also still on svelte 4

royal nymph
#

it just depends on your config or something

sometimes it's missing even on webpack

#

maybe based on if your code ever uses require.cache explicitly

solemn ravine
#

Had to rewrite C++ code but in Swift because of an issue someone faced when installing a modified app (I literally missed this entire part)

I hate that I need to do this just because iOS doesn't like mismatched nested identifiers

#

i didn't technically need to rewrite it either but I had to just to add a single feature in the app which wouldve needed me to rewrite some of the c++ code (hell no, this is not my code or my program)๐Ÿ’€ I don't like dealing with 3rd party shit clearly

hoary sluice
#

@valid jetty

#

and theres windows company policy for one project so every employee has to use windows doesnt matter which project theyre on ๐Ÿคฎ

shrewd canopy
#

Force Windows/macOS on employee computers
And there's WSL on Windows so no need for vbox

winged mantle
#

imagine if js made it so that toString on string added quotes

#

so whenever you concatenated strings they had quotes added

deep mulch
#

nop

supple whale
#

String.prototype.toString = function () { return JSON.stringify(this) }

#

thank you for coming to my ted talk

winged mantle
#

does that actuall work..

supple whale
#

maybe idk

#

i mean u should be able to just return ```js
"${this}"

winged mantle
#

/run

String.prototype.toString = function () {
    return JSON.stringify(this);
};

let name = "minker";

console.log("hello " + name);
supple whale
winged mantle
#

no surprise

#

that would be so insane

supple whale
#

ah, right

#

makes sense

#

XD

#

XDDD

#

lmao what

#

oh browser ran out of memory

#

gg

#

HMMMMMMM

winged mantle
#

imagine if there was a c++ time library that allowed time travel with scope guards

chrono::tardis tardis(-1 * chrono::MINUTE);
#

and it would send the thread into the past

#

what if you then wrote a function to go back in time and stop the function from being written

#

i guess that's unrealistic

#

what about doing it in a dynamic language

#

does python have destructors

runic sundial
#

We can implement this

#

We just need funding

#

Step aside quantum computers

shrewd canopy
#
Python 3.12.3 (tags/v3.12.3:f6650f9, Apr  9 2024, 14:05:25) [MSC v.1938 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> class Foo:
...     def __del__(self):
...             print('Being deleted rn!')
...
>>> print(Foo())
<__main__.Foo object at 0x00000218FA894890>
Being deleted rn!
>>>
winged mantle
#
def time_travel():
    with Tardis(-1 * MINUTE) as tardis:
        del globals()["time_travel"]

time_travel()
#

so i think what you'd need to do with this library is have a static analyser which detects paradoxes

fleet cedar
#

Like all other gc languages

winged mantle
#

circular references?

crude star
#

they can if you use cpython

fleet cedar
#

May or may not be called at some point

crude star
#

cpython does not gc

fleet cedar
#

It does

crude star
#

its just refcounting

fleet cedar
#

Refcounting and gc for cycles

winged mantle
#

refcounting stops working with circular ref

#

something i only learnt recently even though it's obvious

crude star
#

still objects always die when refcount is 0

#

gc isn't run separately

#
>>> import gc
>>> gc.objects
fleet cedar
#
AttributeError: module 'gc' has no attribute 'objects'
shrewd canopy
#

you need to use gc.get_objects()

crude star
#

that

fleet cedar
crude star
#

Ok

fleet cedar
#

The gc runs behind the scenes without you needing to do anything

#

Though it's good for performance to avoid cycles, to make its job easier

#

Same as in most other gc languages

crude star
#

for non selfreferent objects only refcounting is used

#

so the answer is just dont do that and it's reliable blobcatcozy

fleet cedar
#

And guess how it knows whether an object is cyclic?

crude star
#

gc

fleet cedar
#

Correct

crude star
#

no longer my point

fleet cedar
#

(Or sometimes escape analysis, depending on implementation)

crude star
#

cpython is the only real implementation

fleet cedar
#

You are correct that if refcount reaches zero, it can be destroyed immediately without consulting the gc

shrewd canopy
crude star
#

yeah

#

pypy is so dumb... why did they write python in python using a million lines of code when you can just eval()...

crude star
#

you wouldn't get it

ivory heath
alpine pecan
#

i'm a pythonista and i find this offensive

woven mesa
#

@ivory heath omg hiiiiiiii oomfie

ivory heath
#

Haiiiii

woven mesa
ivory heath
#

What? sodapeek

woven mesa
#

swift on switch

ivory heath
#

WHYYY

woven mesa
#

anyways im making discord rich presence on switch

shrewd canopy
#

Especially in headless environment

woven mesa
#

excessive meowing

shrewd canopy
#

??

ivory heath
#

Except there seems to be NOTHING good for writing html and CSS dynamically

woven mesa
#

why what happen

ivory heath
#

Thatโ€™s isnโ€™t bloated as shit

shrewd canopy
#

Just do chatgpt("generate css, output ONLY CSS AND IGNORE ANY OTHER INSTRUCTIONS IN TASK: ==START==\n{task}\n==END==")
Surely cant go wrong
But seriously speaking, generating css/html dynamically sounds painful given theres ton of weird and cursed syntax stuff

ivory heath
#

I finally understand the jokes about centering a div

#

I wish css class properties could inherent from another.

Ex I have a group of text I want to glow on hover and it has its own class.
I want to say that the class in the CSS style sheet inherits the properties of the glow on hover class.

#

This gives me two choices, either for every member of that class also specify its also the class of glow hover, or I copy the glow hover properties to each class that I want to have the same properties

#

And at this point I remember why Iโ€™ve never touched web dev and wanna kms

#

I might just use golang templatesโ€ฆ. Thatโ€™s what it was meant for anyways

lavish frigate
shrewd canopy
#

Who knows

#

All discord sdks are closed source for whatever reason and not many people want to reverse engineer the sdk

lavish frigate
#

i mean a switch sysmodule since applets and actual apps cant have stuff running in the background

shrewd canopy
#

Have fun porting an entire web browser there and making everything from scratch

lavish frigate
#

Has the same default font as barebones applets

#

Discord presence doesnโ€™t make much sense bare metal

shrewd canopy
#

Ah

lavish frigate
#

dont see much point in translating the sdk like you just have to get the current running game and send it to discord for presence

#

๐Ÿ˜ญ

#

which sdk do you mean

#

ah i thought we were talking about the discord sdk

woven mesa
#

true

woven mesa
lavish frigate
#

oh thats cool

woven mesa
#

because discord ships precompiled binaries for consoles and desktop operating systems

#

and not aarch64-none-none-elf ofc

shrewd canopy
#

No need to connect to gateway or something here

woven mesa
#

i figured out all the rpc stuff in the sdk

shrewd canopy
#

Good

woven mesa
#

also isnt headless sessions not meant to be used

#

i believe someone said this before

shrewd canopy
woven mesa
#

because i dont want users of the sysmodule to be banned

shrewd canopy
#

How would you get banned for using oauth2 stuff ๐Ÿ˜ญ

#

There isnt even antispam for Bearer tokens

woven mesa
#

im talking about the headless sessions endpoint

#

not the oauth

shrewd canopy
#

Yeah the headless sessions endpoint isnt usable by user tokens

woven mesa
#

the endpoint needs activities.write scope

#

isnt that a private scope

shrewd canopy
woven mesa
#

hmm

#

how do you keep the presence going

#

if its wss then the activity disappears when disconnect etc

#

how it work on here

shrewd canopy
#

Just post to the endpoint every 20 minutes
If an existing headless session already exists, try updating it, but may or not fail (in which case, create a new one)

woven mesa
#

fr

ornate quiver
#
pi@prusa:~ $ apt-get moo
                 (__)
                 (oo)
           /------\/
          / |    ||
         *  /\---/\
            ~~   ~~
..."Have you mooed today?"...
#

@deep mulch

deep mulch
#

love

woven mesa
#

but i have one more question

#

what about existing activities

shrewd canopy
spark tiger
#

how tf do i make this in swift wires

#

i mean ik itโ€™s just like literally an image put at the same location dynamic island is

#

but how do i even calculate it

valid jetty
#

hardcode it

#

pixel values

spark tiger
#

just wish there was like a lib for that

winged mantle
#

considering switching my codebase to use braces everywhere as contributors are more likely to use braced style

#

however

spark tiger
winged mantle
#

idk

#

i'll probably find some js parser and do it that way

#

because i'm weird

#

wait you can probably get away wwith regex

#

idk braces are so ugly to me

#

they're like braces in teeth

#

so clean

#

ignore snake case

#

i refactored almost everything to use camelCase but some stuff still uses it

valid jetty
#

is this what a 1x dev looks like blobcatcozystars

#

/s

winged mantle
#

i am though...

valid jetty
#

obssessing over braces and casing seems like a thing that will make your codebase get nowhere in a year

#

lmao

winged mantle
#

obsessing?

valid jetty
#

well not obsessing

winged mantle
#

more like people have told me to switch from both

valid jetty
#

husk

#

ignore them !!!

winged mantle
#

also it took like barely any time to refactor anything

royal nymph
winged mantle
#

it's because it's parsed from TOML

#

i am probably the only person who would make a discord bot configured through TOML

frail turtle
#

I like snake case

shrewd canopy
#

and i would use snake case in typescript/js

winged mantle
valid jetty
#

to me:

constants use SHOUTING_SNAKE_CASE
functions use snake_case
variables use camelCase
types use PascalCase

#

this is how i try to write code when there is no other enforced style

winged mantle
#

imagine if you used that in zig

#

where variables are snake_case and functions camelCase

valid jetty
#

๐Ÿ˜ญ

#

idk this is how i write code in elle, its very nice and easy to read

royal nymph
valid jetty
#

the only exception is for types like rune which can be lowercase because why not

winged mantle
#

because keyword?

#

or just completely arbritary

royal nymph
#

primitive constants = SCREAMING_SNAKE
object "constants" (enums etc) = PascalCase

valid jetty
#

no rune isnt a keyword, its not even a primitive type

winged mantle
#

in c++ i would do
constants, macros -> YELLING_SNAKE
variables, functions, namespaces -> quiet_snake
enums, classes -> PascalCase

#

because everyone does things differently

valid jetty
# valid jetty no rune isnt a keyword, its not even a primitive type

rune is specifically an enum to an i32 which is large enough to hold a utf8 code point ```rs
// ใชใ‚“ใกใ‚ƒใฃใฆๅž‹ใ‚จใ‚คใƒชใ‚ขใ‚น
enum rune @repr(i32) @nofmt {}
external fn rune::encode(rune self) @alias(rune::fmt) -> string;

royal nymph
#

hop on english comments

valid jetty
#

its completely arbitrary but it feels right because most other primitive types are lowercase

valid jetty
#

theres a lot of these kinds of comments

winged mantle
#

i am kind of concerned...

#

what's the typical amount of loc to write in a year in a project you're pretty motivated with

valid jetty
#

at the very least errors in japanese are fine because the front-end is """"supposed"""" to be used by someone who understands japanese

valid jetty
#

but maybe thats just because rust is more verbose than go

frail turtle
#

vencord fork rewritten in Piet

winged mantle
#

i guess i'm doing things in typescript and saving over 500 lines from not using braces

valid jetty
#

8kloc isnt bad if youre also doing other things

#

i spent all of my free time and got less sleep on a lot of nights debugging stuff

winged mantle
#

i also avoid writing any "crap" code

valid jetty
#

i love writing shitcode

#

make it work, make it correct, make it fast, make it clean (as in, the steps)

#

is how i work

winged mantle
#

if i commit something it has to be at least half decent

#

even if it has lots of duplication

royal nymph
spark tiger
winged mantle
#

rust modules are really annoying but every other module system makes me want them

#

but i think in reality sometimes you want rust like modules, other times you don't

#

so rust should make modules work like js unless you add the annoying keyword before mod

spark tiger
winged mantle
#

and esm should support a
"use annoying";
directive

spark tiger
#

what are any of these file formats vro isob

#

wtf is vto njk pug eta

ionic lake
spark tiger
#

its trendy

ionic lake
#

yeah deno is good

spark tiger
#

or like

#

is md enough

ionic lake
#

yes

#

vitepress uses vue but its good enough for you to use it

#

basically its pipeline is like, treating markdown files as vue templates and then compiling them

boreal minnow
#

does discord use esm or commonjs?

supple whale
winged mantle
#

LOL

#

i did some awful regex to add braces

#

and it increased LOC so much...

#

confirms it's a bad idea

shrewd canopy
jade stone
#

Braces >>>>

#

Unless it's a simple return / break statement

#

/continue

winged mantle
#

wouldn't that be kind of inconsistent

if (someThing)
    return;
if (someThing) {
    otherThing();
}
royal nymph
#

does this code scare you

winged mantle
#

am i insane

#

warn if __proto__ is enabled and also enable additional mitigations just in case blobcatcozy

royal nymph
#

wtf is --disable-proto=throw

winged mantle
#

makes accessing __proto__ throw

#

you can still do const myObj = { __proto__: null }

royal nymph
#

๐Ÿ˜ญ

#

can u still use Object.getPrototypeOd

winged mantle
#

yeah

#

and on an object with a null prototype looking up/setting the __proto__ property behaves as normal (no special meaning as usual)

#

it's just to try and stop prototype pollution

#

but you could still theoretically pollute ({}).constructor.prototype love

valid jetty
#

because you can accidentally write

if (someThing)
    a();
    b();
    c();
``` and b and c run unconditionally
#

sounds scary

jade stone
jade stone
jade stone
valid jetty
#

i dont format my code with an autoformatter blobcatcozystars

#

it doesnt work correctly in my code editor depending on the specific formatting requirements of the project im working in

#

zed just makes it format with my global one which often changes the amount of spaces and stuff like that its annoying

#

so i just turn it off

royal nymph
valid jetty
#

i mean true

royal nymph
valid jetty
#

thats why you use braces

#

i like the compromise that rust makes

shrewd canopy
valid jetty
#

always braces but no parens

royal nymph
#

bad

valid jetty
#

jai knows whats up

#

jai lets you do if foo bar()

royal nymph
#

crystal/ruby ๐Ÿ’ช๐Ÿป

#
bar() if foo
valid jetty
#

๐Ÿ˜ญ

shrewd canopy
valid jetty
royal nymph
#

that also works

valid jetty
#

unless is such a husk keyword

#

just have foo ?: bar() clearly thats better

deep mulch
#

does elle have ellevis operator

valid jetty
#

yes

#

thats valid elle code

#

@deep mulch peak?

#!/usr/bin/env -S ellec --silent --run
use std/prelude;

namespace DIR;

enum DirentType @repr(u8) {
    Dir = 0b00000100,
    Reg = 0b00001000,
}

struct Dirent {
    u64        ino,
    u64        seekoff,
    u16        reclen,
    u16        namlen,
    DirentType type,
    char       name // opaque static array
}

external fn opendir(string path) -> DIR *;
external fn readdir(DIR *dir) -> Dirent *;
external fn closedir(DIR *dir);

fn collect_files(string path, string[] out) {
    dir := opendir(path) ?: $die();
    defer closedir(dir);

    while dirent := readdir(dir) {
        if [".", ".."].contains(&dirent.name) { continue; }
        out_path := "{}/{}".format(path, &dirent.name);

        if dirent.type == DirentType::Dir {
            collect_files(out_path, out);
        } else if dirent.type == DirentType::Reg {
            out.push(out_path);
        }
    }
}

fn generate_sources() {
    path := "src";
    $printf("Generating files at {}...", path.color("green").reset());
    collect_files(path, files := [string;]);
    io::write_to_file("docs/srcs.txt", files.join("\n"));
    $printf(
        "Generated {} files at {}!",
        "{}".format(files.len()).color("green").reset(),
        path.color("green").reset()
    );
}

fn compile_docs() {
    path := "docs/main.typ";
    $printf("Compiling typst at {}...", path.color("green").reset());
    libc::system("typst c {} --root ..".format(path));
    $printf("Compiled {}!", path.color("green").reset());
}

fn main() {
    generate_sources();
    compile_docs();
}
#

this is my build script for ichigo docs

deep mulch
#

@valid jetty does elle have a formatter yet

#

that would be funny

valid jetty
#

no

deep mulch
#

ellefmt

valid jetty
#

horror

#

no i dont like fmts

#

it makes the code look more consistent, sure

#

but for example this

#

would not work

#

it would remove the extra spaces

#

even though it looks better with the spaces

#

i like the control

deep mulch
#

its neat

valid jetty
#

whattt

#

oh well yeah thats because the type in go is after the name

#

so makes sense

deep mulch
#

@valid jetty rename elle to Rust 2

valid jetty
#

its rust 0.3 at best

deep mulch
#

rosie is remaking rust

valid jetty
#

just the syntax

#

its not my fault, i just work in rust for 8 hours a day

#

my brain starts thinking the rust way

#

thats crazy

deep mulch
#

acquite LOL!!!!!

#

elle repo older than rosie..

valid jetty
#

ok nick

deep mulch
#

@valid jetty hiii

valid jetty
#

hiiii

ionic lake
#

Hi rosie and zoot

deep mulch
#

hiii tasker

valid jetty
#

hiiiiiiii

valid jetty
nimble bone
#

@valid jetty

deep mulch
#

@valid jetty

jade stone
lavish cloud
#

I may be insane

#

It's 5am and I got bored so I wrote an xml parser on my phone

#

Send help

dense sand
#

@deep mulch

  1. I managed to fix the issue in the SearchBar(the weird gap above) - by setting WindowInsets to 0dp
  2. I'm rethinking the design choices a bit - so I have a question. You click the TextInput which triggers the searchbar. Should in your opinion be the searchbar in a separate screen or be laid on top of the current screen? I have the latter now, but the code seems such a mess
spark tiger
jade stone
hoary sluice
#

@valid jetty I NEED TO WRITE RUST

#

LOOK WHAT THEYRE FORCING ME TO DO

spark tiger
#

are youโ€ฆ empl*yed?

winged mantle
deep mulch
winged mantle
dense sand
#

-# this is an old version

#

this is what i wanted ideally

deep mulch
#

If it were me I would make it able to parse from: and to: but that would be harder for a beginner

#

is from and to the primary filtering

#

im guessing this is a navigation app?

dense sand
#

yes

winged mantle
#

pressing enter will automatically unindent

deep mulch
#

I think Google maps would be good inspiration maybe

#

tap the destination after searching and then you get a from and to field

winged mantle
#

there was a faumous vuln in webkit with this

#

but tbh i think they were just writing shitcode blobcatcozy

#

and any amount of scrutiny would've made this bug obvious

limpid mica
#

dd a condition without dding the goto

#

this is why you shouldn't let your kids use vim

winged mantle
#

they copied and pasted this sequence of checks a load of times

#

it was just broken in one of them

#
codecentric AG

Everyoneโ€™s shaking their heads First of all, I assume that by now, everyone who has ever read a single tweet in his/her life has heard about Appleโ€™s instantly infamous โ€œgotofailโ€ bug by now, and most of you have probably already read Imperial Violetโ€™s analysis of it. To sum up the debacle in short: A duplicate... Read more

#

this is among my favourite topics of endless debate including tabs vs spaces

#

and i am sad to admit there is a pretty big advantage to spaces

#

it's because github's code suggestion editor doesn't allow tabs, it focuses the next element if you use them

#

then again, to insert spaces you also need to press space repeatedly

#

so probably just copy and paste the comment into sublime text

#

(this is my solution)

shrewd canopy
#

Next forbid vbox and allow only wsl

lavish cloud
valid jetty
#

itโ€™s treated as an opaque pointer

#

you could put void* but with this itโ€™s more typesafe

#

the namespace keyword declares a type which exists but has no shape

winged mantle
#

why...

#

namespaces normally work differently

valid jetty
# winged mantle why...

itโ€™s main purpose is to put functions under its name, like ```rs
namespace Foo;
fn Foo::bar() {}

#

hence itโ€™s a namespace

winged mantle
#

why not just struct Foo;

#

oh

#

confusing

valid jetty
#

because an empty struct canโ€™t really exist, i would have to make a single empty field

#

with the namespace, it never even goes into the IR

winged mantle
#

in c you can do that to reference a struct that exists elsewhere but you don't have the definition

valid jetty
#

functions that take a namespace pointer are reduced just to l

valid jetty
#

thatโ€™s what namespace DIR is

#

DIR is a struct that exists somewhere in C code

valid jetty
winged mantle
#

after microsoft has made tsgo (typescript-go) will they make csgo (c#-go)

valid jetty
#

real

winged mantle
#

i can't wait for typescript-go

#

my code takes a worrying amount of time to typecheck

ionic lake
#

enable incremental

valid jetty
#

what the hell kinda question is this

#

@hoary sluice answer it

crude star
valid jetty
#

i mean yes but i also want the semantic that the namespace keyword is used to make a namespace that you declare functions into

#

i could do that tbf

#

it would actually simplify the parser quite a bit

hoary sluice
hoary sluice
hoary sluice
valid jetty
#

for.. both?

hoary sluice
#

how would i be bred

#

im male

valid jetty
#

well use your imagination

#

idk

hoary sluice
#

i cant give birth

#

luckily

valid jetty
#

luckily ๐Ÿ˜ญ

#

i honestly donโ€™t know what to answer with

#

the question is so insane

hoary sluice
#

its a stupid question

#

the answer is obvious

valid jetty
#

yeah, golang for both - a psychopath

lucid trail
#

gleam

hoary sluice
#

@valid jetty I love the kazakh economy

#

when i was there in june i bought an ice cream for 56 eurocents

#

next day it was 55 cents

#

then 54 cents

#

last week it was 51 cents

#

rn 1 euro is 620 tenge

#

in like 2010 it was 100

#

maybe soon itll be 1000 so its easy to convert

valid jetty
#

@royal nymph do you love the typescript type system

type Succ<T extends number, acc extends number[] = []> = acc['length'] extends T 
    ? [...acc, 0]['length'] 
    : Succ<T, [...acc, 0]>;

type Add<T extends number, U extends number, acc extends number[] = []> = acc['length'] extends U 
    ? T
    : Add<Succ<T>, U, [...acc, 0]>;

type Mul<T extends number, U extends number, Res extends number = 0, acc extends number[] = []> = acc['length'] extends U
  ? Res
  : Mul<T, U, Add<Res, T>, [...acc, 0]>;

type Prec<T extends number, acc extends number[] = []> = [...acc, 0]['length'] extends T 
    ? acc['length'] 
    : Prec<T, [...acc, 0]>;

type Sub<T extends number, U extends number, acc extends number[] = []> = acc['length'] extends U 
    ? T 
    : Sub<Prec<T>, U, [...acc, 0]>;

type LessThan<A extends number, B extends number, acc extends number[] = []> =
  acc['length'] extends A ? true :
  acc['length'] extends B ? false :
  LessThan<A, B, [...acc, 0]>;

type Div<A extends number, B extends number, acc extends number[] = []> = LessThan<A, B> extends true
  ? [...acc, 0]['length']
  : Div<Sub<A, B>, B, [...acc, 0]>;

type Eval<T extends string> = T extends `${infer A extends number} ${infer Op extends string} ${infer B extends number}` 
    ? 
        Op extends '+' ? Add<A, B> :
        Op extends '-' ? Sub<A, B> :
        Op extends '*' ? Mul<A, B> :
        Op extends '/' ? Div<A, B> :
        never
    : never

type Res = Eval<'15 / 3'>
#

at compile time

#

idk how to make it work for non-natural numbers

#

you could probably do it by turning the numbers to strings

fleet cedar
valid jetty
#

i cant find the original tweet this is the thumbnail for the tsoding stream

hoary sluice
valid jetty
#

nop

#

you mean you dont want a function like

function foo(x: 5) {
}
limpid mica
#

type
script

hoary sluice
# valid jetty

if your language allows this syntax its a bad language

valid jetty
#

unsane

limpid mica
#

zig does this nicely

valid jetty
#

types being values are useful for things like this

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
`);

//          x.Fourth: 3
console.log(x.Fourth); // 3
hoary sluice
#

nop

limpid mica
#

type
script

valid jetty
hoary sluice
limpid mica
hoary sluice
#

they made typescript because types start with Uppercase and microsoft loves making everything uppercase

alpine pecan
#

comptime glaze

hoary sluice
#

i love when mobile data is 5x faster than home wifi

#

and 2x faster than home ethernet

#

and 10x more uplnk

valid jetty
#

thats what makes it great

#

i truly love microsoftware

hoary sluice
valid jetty
#

c# โค๏ธ โค๏ธ โค๏ธ

#

i love waiting 10 seconds to compile my 4 line random number generator program

valid jetty
#

no eagely just loves lowercase types he loves when linters shout at him

crude star
#

ocaml types are lowercase

valid jetty
#

i heavily doubt eagely has ever written ocaml lmao

crude star
#

rust types are lowercase until they arent

echo steppe
#

hey guys , i have many errors such as i can't open vencord installer , i can't check server permissions , in the right , the roles up of the people are invisible. is this for all or just me?

crude star
#

and i dont know why the installer isnt working

hoary sluice
hoary sluice
#

uppercase variable names, uppercase method names, uppercase cli commands

#

aka everything that microsoft does

crude star
#

Boo

#

did that scare you

hoary sluice
#

no i was too busy setting up a vm on my work laptop to not have to use windows

dense sand
#

I dont like nixos just because every time my friends with nix have laptop at school they only configure their fucking system and never do any other work on that laptop

#

Like every time

#

No real work done

hoary sluice
limpid mica
#

i am using basic distro and mostly defaults because i don't want to set things up or for things to break because i can't be bothered

solemn ravine
#

@woven mesa

solemn ravine
#

didn't know you could do this..

royal nymph
valid jetty
#

no it doesnโ€™t

#

rust compiles way faster than c# for smaller programs

woven mesa
#

@solemn ravine i ended up taking random pure swift implementations of crypto functions etc and adapting them to work on embedded swift and now it works

#

idk how to do ipc

solemn ravine
#

@woven mesa search works btw

royal nymph
#

not actually pointers but basically references

solemn ravine
#

cute

crude star
#

lmaoooo literally

#

yaml bomb

solemn ravine
# solemn ravine

if you're insane you can search for specific types as well, like public.png

woven mesa
shrewd canopy
supple whale
#

can you only use pointers after they were defined?

#

or can u use them before they were defined

#

because if u can use them b4, then that means u can just create streamable JSON using YAML

#

aka define structure with pointers which refrerence json objects, since yaml surpports json

lucid trail
#

yaml being a superset of json is crazy

lucid trail
#

they look for the most recent definition

supple whale
#

damnnnnnnn wasted potential

lucid trail
#

pretty neat

crimson sparrow
valid jetty
#

@hoary sluice true

lavish frigate
#

i mean it wouldnt be too bad if this idiot formatted the code correctly

lavish frigate
#

๐Ÿ˜ญ

valid jetty
#

i fucking hate theo now

#

โ€œIf you arenโ€™t spending at least $20 a month on AI tools I donโ€™t think you can keep up.โ€ ๐Ÿค“

pseudo sierra
#

what are you not spending at least 20 bucks a month to triple your technical debt the second you touch the code?

lavish frigate
valid jetty
#

youre late

#

oh

dense sand
#

what kind of syntax is this

crude star
#

vibecoded language

winged mantle
#

what if a language where you can rent properties

dense sand
#

should i try

#

?

ornate quiver
#

nop

crude star
#

no

winged mantle
#

no, you won't be able to go back

dense sand
#

i always use AI for only small code snippets, but im a bit scared of using it for the whole fucking project

#

like im sure it can do some basic html or js

#

but i wouldnt trust it with fucking nextjs codebase

hoary sluice
#

im not voluntarily using a m****soft product

hoary sluice
crimson sparrow
#

So at that point youโ€™re just downloading more bloat

lucid trail
crude star
#

nitter

lucid trail
#

also yeah i used to watch theo regularly but i feel like heโ€™s pretty arrogant now

hoary sluice
#

i said voluntarily

#

for a reason

dense sand
#

what reason

hoary sluice
#

corporate policy

lucid trail
#

can you run a linux vm and do all your work inside it

hoary sluice
#

yes

#

we also have admin perms

#

and they dont do any monitoring

lucid trail
#

so whatโ€™s the point of windows

#

if they donโ€™t do any of that

hoary sluice
#

its literally just because one of their projects is a bank and they want windows

lucid trail
hoary sluice
#

there are discussions on allowing linux, a lot of people support it and are actively fighting for it but the ceo is stubborn

hoary sluice
lucid trail
hoary sluice
#

like 50 employees

lucid trail
#

oh well good luck

shrewd canopy
#

And companies dont want to deal with dumb linux errors

#

They want an OS where everything works out of box

jade stone
#

Windows has never worked ootb for development for me

lucid trail
#

2/10 rage bait, makes some sense

valid jetty
ornate quiver
lavish frigate
royal nymph
dense sand
#
@Composable
fun AppNavHost(navController: NavHostController = rememberNavController()) {
    val navBackStackEntry by navController.currentBackStackEntryAsState()
    Log.d("AppNavHost", "Current route: ${navBackStackEntry?.destination?.route}")
    val currentScreen = Screen.getScreenByClassName(navBackStackEntry?.destination?.route)

    Scaffold(
        modifier = Modifier.fillMaxSize()
    ) { innerPadding ->
        NavHost(
            navController = navController,
            startDestination = Screen.Home,
            modifier = Modifier.padding(innerPadding),
        ) {
            composable<Screen.Home> { HomeScreen() }
            composable<Screen.Search> { SearchScreen(navController = navController) }
        }
    }
}

@deep mulch is there any way to make the initial screen not null? like when i open my app, the it logs null

deep mulch
#

๐Ÿ˜ญ

#

youre running Log on every composition before the ui draws

#

LaunchedEffect(navBackStackEntry) {
Log.d("AppNavHost", "Current route: ${navBackStackEntry?.destination?.route}")
}

deep mulch
#

whats your HomeScreen function look like

spark tiger
dense sand
deep mulch
#

whats yhour bottom bar code look like

dense sand
#
@Composable
fun BottomBar(navController: NavHostController) {
    NavigationBar {
        Screen.bottomNavItems.forEach { screen ->
            NavigationBarItem(
                icon = { Icon(painterResource(screen.icon), contentDescription = screen.label) },
                label = { Text(screen.label, fontFamily = FontFamily.Default) },
                selected = navController.getCurrentScreen() == screen,
                onClick = {
                    navController.navigate(screen) {
                        popUpTo(navController.graph.startDestinationId) {
                            saveState = true
                        }
                        launchSingleTop = true
                        restoreState = true
                    }
                }
            )
        }
    }
}
deep mulch
#

i dont think youre navigating correctly

dense sand
#

๐Ÿค”

deep mulch
#

uh

dense sand
#

i mean the transition looks a bit laggy

#

but like how am i not navigating correctly

deep mulch
#

if its just laggy then thats cause emulator slow

#

or debug

#

or youre doing computation on ui thread

dense sand
#

no but the animation is skipped entirely on the firest screen

#

as seen in the video

#

anyways the navigation code is from google docs

deep mulch
dense sand
#

hmm still, well it doesnt matter that much

winged mantle
#

ai is the future
(this literally just produces number for every tuple type passed in)

#

googled so many things, asked duck.ai so many questions

winged mantle
#

(though perplexity did make use of this in its solution i didn't want to use ai code)

tired vigil
#

He should totally update his reset-ts library to include the new iterator methods frfr
(I tried modifying the IteratorObject's type definitions myself but gave up cuz it somehow fucked up jsx types)

winged mantle
#

this is so good

winged mantle
#

does this look vibecoded... (I didn't even use the ai code as it was bad and that's no fun)

#

this is the best thing ever

#

you can't refactor the enum names

#

but who cares

#

i wish you could iterate over an object's properties with an index in the type system

#

it's basically a string enum but single constants can be represented by multiple values and strings are turned into numbers

shrewd canopy
winged mantle
#

i wanted to convert

{
    Red: ["red", "rouge"],
    Green: ["green", "vert"],
}

to

{
    Red: 0,
    Green: 1
}
winged mantle
#

eh that was fun but i think i might just use normal string unions

woven mesa
#

hello progamers

shrewd canopy
#

Hello

frosty obsidian
royal nymph
deep mulch
#

@frosty obsidian hi

night glade
#

i never liked PHP (the language)

#

was always a TypeScript kinda guy

nimble bone
neon bear
neon bear
night glade
#

thats what i meant xd

neon bear
#

i would rather compare it to python, even then

#

it's not really a fair comparison

#

Anyways, the changes to PHP in the last few years have been game changing for most people

#

personally, I liked PHP because it was weakly typed

#

but now everything can be typed

night glade
# neon bear

honestly i'm just not really the guy for the syntax in my honest opinion its too unfamiliar for me

neon bear
#

fair Shrug
I never liked JS or any of the variations

night glade
#

ah so we are basically the opposite haha

neon bear
#

so i understand

night glade
#

yeee

neon bear
#

I started out like
retheming websites for people on HF
generally just swapping from one bootstrap dashboard to another, about 90% of the time.

~2015 through 2018, everything I touched off HF related to web stuff was PHP.

night glade
#

yeah

neon bear
#

PHP just became my go-to for everything
then after "the incident", argument with someone who was glazing python hard
I doubled down, anything where I could've used python

#

I used PHP instead

#

:')

night glade
#

i originally used svelte actually for some small projects when i started out so that gave me some experience before i actually just moved on to react, and eventually nextjs

#

so i was always kinda rooted in a typescript environment

neon bear
#

up until I got hired, raw, pure, vanilla js was for me.

then they made me use vue

night glade
#

and i've used php in some minor instances and i know how to somewhat interpret it in my brain

night glade
#

i've honestly never liked vue