#programmers-off-topic
1 messages · Page 136 of 1
ehhhhhhhh ok (#7073049) (6h | <t:1771306589>)
I eat chili on pasta
one time i had carbonara udon
Oooooh
it was good but also too heavy for me
(Tbh I've never had carbonara)
i don't trust any funky weird novelty carbonaras since i know for an absolute fact they have double cream
and that's just wrong
what does double cream mean
I love my beef ravioli Bolognese.
and I see zero reason to betray my trust with the meal to bother trying other pasta
i will correct myself to 'literally any cream'
I love hand pulled noodles
Cheese ravioli tho...
ah is there some kinda cream tier list
Is that a thing
that my pleb ass is ignorant of
I don't think I like lobster but I kinda wanna try lobster ravioli
i mean the tier list is whatever cream is appropriate. and no cream is appropriate for carbonara
Yeah
There are heavier and lighter creams
Blueberry, have you ever made croissants
I miss croissants.
I used to get them from costco but the costco near me moved 🙁
Chue do u like biangbiang
The whole Costco moved?
yes
Oh man you must not have Asian women making six figure salaries around you
no i take 2x spicy damage
Business must've been god awful for that to be the better choice I imagine
What about tomato and egg noodles
i have asian women making two figure savings around me. we have instant noodles
Childhood favorite
they originally got the land on a very good deal, and when it came to renewal they did not get the good deal
well i think every chinese kid is taught tomato egg stir fry
but i dont think we eat that with noodle very much
here i thought tomato egg was a northern food
Tomato and egg, but in noodle soup form! One of the most delicious recipes we've shared on this channel yet.
0:00 - the origin
2:13 - tomatoes and lard
6:21 - making the soup
8:12 - eggs and noodles
11:11 - serving
FULL WRITTEN RECIPE
... is over on the Substack! Free as always, if it had to be said:
that is not what i was expecting lol
Family is from Chongqing
used to seeing something more like this
https://futuredish.com/tomato-egg-stirfry-iconic-chinese-breakfast-item/
but like, not the creamy not-scrambled bit
I would like to purchase one Iconic Chinese Breakfast Item please
(Asian woman making six figures is, surprisingly, the Costco demographic here lol.)
Just get the hotel buffet
I am not in a hotel
My guilty pleasure is oil sticks
what is an oil sticks
Youtiao Recipe (Chinese Fried Dough) - The Woks of Life https://share.google/udNrO9QPnNGYcOsBW
ah yes. chinese churros
It's a item is Object { Name: "Oil Stick", Stack > 1 }, obviously
i've only ever heard them called fried dough sticks, never oil sticks
you should really work on rebranding them to chinese churros
(I directly translate from the Chinese)
Casey do you have noodle opinions
油 is even also Japanese for oil 
my al-dente noodle opinion is that we should take away scissors from korean restaurants. noodles are meant to be long
I looked it up a while ago, after finding it in a song title. https://en.wikipedia.org/wiki/Cruller
A cruller () is a deep-fried pastry popular in parts of Europe and North America. In Europe it is typically either made of a string of dough that is folded over and twisted twice to create its signature shape or is formed from a rectangle of dough with a cut in the center allowing it to be pulled over and through itself to produce distinctive tw...
i'll be honest they couldn't've picked a less appetising photo
why do they invoke cruller() at the start there
The name cruller comes from the early 19th-century Dutch kruller, from krullen 'to curl'.
Can someone benchmark cruller() please. Should I use that in hot code oil
I will never learn how to read these funny greek looking things
they're pronounced how they're spelt
(its IPA, international phonetic alphabet)
each symbol directly relates to how a human mouth would pronounce it
my memory is very hazy as I last took IPA seriously 12 years ago, but from memory there are symbols for theoretical sounds that no known language actually uses, but its theoretically possible for the mouth to do it
Ate one in a fan Tuan yesterday
My new work laptop is significantly larger than previous
Which is awesome because it means I can see
@steel kraken: order ravioli for dinner (6h ago)
yes sir past me
I made something with the xkcd 2501 generator
The average dev knows about transpilers and IL obviously
and C#
I would be impressed if someone knew IL without knowing C#
I thought IL is a C# concept
IL is the .net runtime concept.
You can have c++, VB, f# all in IL
see i dont even know what IL is or stands for
Same thing as kotlin, scala sharing the same bytecode for jvm
Intermediate Language.
The cross platform assembly-like format that the runtime interprets and makes into actual machine code to run on the specific hardware
but not a VM
The dotnet runtime is just as much of a VM as jvm is.
oh
It's apples and oranges compared to something like VirtualBox or something that would run an operating system.
But I'll let the comp sci nerds argue semantics about what defines a virtual machine I don't particularly care one way or the other
yeah it's as much a vm as JVM or BEAM (from erlang)
in my experience... most senior C# engineers barely know what IL is
I get my assembly already handrolled from the grocery store
If hand rolling assembly was platform independence
Tnh hand roll assembly much less useful these days because compiler smarter than programmer
That's the real AI
A fucking amazing compiler
compiler doesnt start with an I
lompiler
I feel like handrolling assembly is only worth it at this point if you're either
- doing something funky for which the compiler has dedicated instructions like there are for video transcoding
- building an emulator and know exactly what instructions to use to match the behavior of the emulated system's instructions
- Working on an odd special system that compilers dont really understand
fair
- Code crimes.
- Your name is Chris Sawyer
"is that the Rollercoaster Tycoon 2 guy"
googles
"YEP"
I mean, Crumble said "at this point", which kinda excludes RCT because it was developed in the 90s.
Bold of you to think that Chris sawyer wouldn’t say
Random thought re:the is optimization stuff from yesterday: If you were making an embeddable scripting language for a smaller use case - like in a game - I imagine you could make is just as fast since you make more assumptions.
Like, you could use a bitfield to store which types a type can be isd with. Though I suppose that'd probably need a loop if you had more than 64 types
But then it wouldn't be "worth it" in the matter of the original statement of when you need to do it.
Worth it for the personal satisfaction is still considered worth it in my book
Sinz come back here and seal a plz
as much as I think Chris Sawyer is a legendary game dev, he only used assembly because that's what he already had experience with, and he wasn't very familiar with C when he wrote transport tycoon. (which shared an engine with RCT 1 & 2)
And because I likes optimizing to perfection. In a way, that's also why he doesn't like re-implementations like OpenTTD and OpenRCT2 because he optimized the original games to perfectly match his vision and he sees them as his art and that's the way they are supposed to be played. His lawyers see them as piracy, but I don't think that's what he thinks himself.
Well the thing with those projects is that they're rewritten from scratch in c++ with no access to the source code
So they're technically an original work
They're more like clone games than mods
and they don't explode if you try to play them on a resolution higher than you'd find on a warehouse PDA
at least my original copy of rollercoaster tycoon 1 basically could only run as a miniscule window
But 360p is he gold standard /jk
It is kinda funny that by default the highest resolution supported by rct3 is 720p. You have to manually edit the config file to get 1080
these days (on linux anyway) you can just use gamescope and it'd scale it up for you
shoutout to gamescope
I use it sometimes when there's a game that doesn't really play nice with niri
and you can have more than 500 vehicles
(I ran into this the other day, and it's apparently a common enough complaint with the original TT that it's in the FAQ on Chris Sawyer's page. with OpenTTD you can just increase it in the configs)
I agree with you all, but he doesn't think like that.
(but yeah there's zero corners to be cut, or added from the original game. it's a very tight product)
yes
arguably the only TT design choice I'd disagree with is whatever's up with helicopters
namely why do they go extinct in 2030 (on top of being slow and terrible)
imagine if SDV has a crop that loses you money if you grow it, and then Pierre stops selling it year 3
More places should do this
im now curious which one you arent meeting
donotremind me in 40 days to do this for april fools
ooo not sure if I can count that high but I'll give it my best shot!!! (#7074313) (40d | <t:1774819950>)
and why they only accept 8 symbols
.xkcd 936
no letters at all
(actually, 5)
this isn't that true either cause of dictionary attacks and all those being common words
of course, 1234!!🦥🫴🏾👑 does seem like a password casey would use
how did scrolling too fast crash the kde emoji selector??
it's well programmed
of course
at four on their own, sure, but 12 words is sufficient to derive wallet keys so a few less from a bigger set is probably enough for your password
The entire basis of the calculation was a dictionary of 2048 words. So every attack would be an dictionary attack, and it's still superior to most passwords (not random ones though).
o
Or, to describe it better, the attacker knows the 2048 words, but not which four were chosen, which is more secure than if you take one word out of a dictionary with 10,000 words and try to change it up randomly by replacing letters and using random caps.
Which is how most people choose their passwords.
Of course, it's still weaker than password managers, but you don't get such an error message if you use one.
I do follow this principle when I am in the odd scenario where passwords aren't randomly generated and in a password manager
very annoying for work though with the "having to change it every 3 months" thing
Is that actually useful in any way?
it used to be recommended I think but it isn't anymore
because people will just start incorporating the date into the password or something like that
something that allows them to remember which one is the newest
or that yeah which is even worse than a good password with predictable shit appended
||P1nk'sPassw0rdF3b2026||
it's one of those policies that is good in theory when you completely ignore actual human behavior
also an unfortunate thing about the smart way to do passwords thing is that a lot of login systems have a maximum character length that's often quite low. Sometimes only like 16 characters
Like bottle deposit being higher for single-use here than for reusable bottles. It was supposed to encourage using reusable bottles, but because stores actually make more of a profit if people don't bring back single-use bottles, those are the only ones you can buy nowadays.
huh don't think we have an equivalent problem
I stumbled into that quite often. I once tried to invent a deterministic password generator, but I realized that I'd have to change all passwords if I change it for one account, so I fully switched to random gibberish.
yeah I use keepass for mostly everything nowadays
just generate a long string of nonsense
and feel physical pain when I'm using a login window that blocks copy pasting into the login fields
WHY?!
idk, a mystery to me
"Inspect Element"?
some javascript binding probably wouldn't go off cause you just know they aren't using an actual form submit
They generate custom JavaScript code with your password embedded server-side and it matches whether the input is identical.
the app my grocery store uses blocks copy pasting into the email address field and I have no idea why
thankfully not the password field
like your password manager tries to fill in the field and it just fails
it also logs me out every once in a while
it's very fun when I'm right there at checkout
and find out I was logged out
This sounds absolutely horrible.
I mean for like 3 months logging in didn't work
so it's been worse
fucking apps
I walked past a construction site today with a sign to download the construction company's app to receive updates on the construction efforts
we need to bring back rss feeds
Wouldn't it be easier for everyone involved to maintain an RSS feed... and we had exactly the same thought.
😌
the prevalence of random apps almost feels like how when games were seen as a cheap way to do promos for your store so you had deals at the store where you would get some random branded game on a floppy disk or something with your purchase
the very first game I ever played was actually a free game we got on a floppy disk as a promo when we bought a pair of shoes
precedes even playing pokemon red
I don't remember the first game I played.
pretty sure mine would've either been some edutainment about adding numbers on windows 95, or just quake
the dutch version of reader rabbit was definitely one of my first too
the first one of which doesn't even teach numbers it's even more basic than that
what's more basic than numbers
Mine could be a jigsaw puzzle simulator with custom family photos.
Oh, and maybe Armagetron.
move cursor to the animal that makes the noise you hear
ill give you that
since my niece is 3 years old I now have fresh memories of that game
for most of em you don't even have to understand how or when to click the mouse just how to move it to the correct location
despite being younger than java/python, all my early childhood game memories are on the commodore 64 amiga playing stuff like mousetrap, frogger and other floppy disk games
I don't think I've experienced pre-windows
the amiga was a weird machine.
the computer was the keyboard
mine was some iteration of this on a mac, the only time I remember actually using one 
we even had decent internet earlier than most in my country because our neighbor had a "business internet connection" installed aka not dialup and we were allowed to just also use the connection
i live in a windows world. pre-windows is prehistory.
(then normal™ stuff like oregon trail and math blaster in school)
All my early childhood memories are actually SUSE Linux with KDE Plasma 3.
damn
I think the first game I played was Treasure Cove
i think i opened ms-dos once as a bab and cried because it was letters
letters are very scary
i should've known. the desktop icon was also just letters. but very whimsical colourful ones
Myst was my first real game, and I was too dumb to solve a lot of the puzzles, but I still enjoyed it
I think I had already played a few games before I ever learnt how to read.
(and I had played many before I learnt english despite most of those games being in english)
honestly idk how child me finished jrpgs without being able to understand anything being said
I couldn't exactly read the gamefaqs walkthroughs either yet though my sister or mom would sometimes help me so they'd read it for me
my mom still uses neoseeker walkthroughs to this day, it's honestly kinda nostalgic
The game that really changed my entire perception of games was Zelda: Twilight Princess, and yeah, it was the first time I actually had to look up walkthroughs and such. And actually realized that fandoms exist. And that games can have story beyond "funny man jumps on turtles to rescue princess".
Also, Midna.
I had twilight princess for the wii but I don't think I finished the tutorial
we had the minish cap before that too which I also did not play
The tutorial is very long. Most people call it the worst part of the game. And while I enjoy the slow pace, if it keeps people from playing it I have to agree that it's bad.
Which ones did you play?
it was also one of those early wii games where they tried to make motion controls work I think
like having to actually swing
Actually, it works better in TP than in Skyward Sword.
damn are you sure you didn't play the last of us
And that was released later.
Is that the one with the mechanical dinosaurs?
yeah probably
at that time? Golden sun, Pokemon, two gameboy harry potter games, a few branded games. A bunch of pc games
Oh, I meant Zelda. And not just at that time.
Nice. I'd actually say it's among the three best games.
I have played uh... minish cap, twilight princess, ocarina of time, majora's mask, breath of the wild
i played legend of zelda for nes on an emulator maybe 10 years ago and didn't get it
Those are a lot of good ones... actually, I just realized I'd call every game good.
Except that one.
What's legend of Zelda
but i did play the hanging lampshade or whatever the newgrounds knock-off was
which was funny
I've just kinda learnt to accept that the zelda franchise is just not for me
so that's my entire experience with zelda
especially not the "modern" 3d zeldas like botw
I find it absolutely baffling that people praise botw so much I really just don't get it
They are "games", where there's a protagonist you control (Link), who does stuff like adventures and fighting and solving puzzles.
considering the nearly universal praise, barring the weapon durability thing, it's probably a me problem but yeah I just don't get it
I dont get it
i enjoyed those more than i expected, despite playing botw and totk back to back in the same month
I mostly enjoyed botw and totk but the weapon durability is such a terrible system that it poisoned the well for me
the shrines were boring as hell. The landscapes weren't very interesting either. Koroks were moreso just a chore
I never used any rare weapons for combat because it would just destroy itself after 30 seconds of combat
weapon durability felt mostly irrelevant, but probably because i just played slowly and always had a full pile of spares
What I did to C# yesterday almost got me banned from their discord
There's a lot of intrinsic motivation compared to other games. That's what I like about it. Every other game says "go there because this is where stuff is". In BotW I say "oh, this looks like a cool spot and I want to go there". Even if there's nothing, I was just happy to see nature. It was like hiking, but without moving.
Who wants to see the absolute beauty I did
yeah the durability system is especially designed to go against everything I enjoy but it was not what made me not want to play it
For clarity, I am going to give you a snippet from my parser written in Ocaml (a functional programming language) and then the C# version
yeah and I just don't really get that I suppose
Everybody loves Link!
Lyrics:
Link, he come to town
Come to save the princess zelda
Ganon took her away
Now the children don't play
But they will when link saves the day
Hallelujah!
Now link, fill up your hearts
So you can shoot your sword with power
And when you're feeling all down
The fairy will come around
So you'll be brave, and not a sis...
This is the Ocaml version
let parse_if pstate : Ast.Expr.t parser_result =
(* if cond then <then_branch> else <else_branch> *)
advance pstate |> ignore; (* consume if *)
let* cond = parse_expr pstate in
let* _ = expect pstate T.Then in (* consume then *)
let* then_branch = parse_expr pstate in
let* _ = expect pstate T.Else in (* consume else *)
let* else_branch = parse_expr pstate in
Ok (Ast.Expr.If (cond, then_branch, Some else_branch))
... and this is what I did to C#
public static Result<Expr> ParseIf(ParserState state) =>
Result.Ok(state.Advance()) // Consume 'if'
* ParseExpr(state)
>> cond => Expect(state, T.Then)
* ParseExpr(state)
>> thenBr => Expect(state, T.Else)
* ParseExpr(state)
>> elseBr => Result.Ok(new IfExpr(cond, thenBr, elseBr));
it's like if stardew's mines were most of the game 
(and combat felt better) (usually)
are you sure that's C#
also block-pushing puzzles
Yes
I overrode >> to monadic bind, and * to applicative sequencing
are you bitshifting lambda expressions wtf am I looking at
No, monadic bind and sequencing of applicative effects
this ain't haskell we ain't got applicatives
And a lot of "where am I actually and where do I need to go".
It translates to
public static Result<Expr> ParseIf(ParserState state) =>
Result.Ok(state.Advance()) // Consume 'if'
.App(ParseExpr(state))
.Bind(cond => Expect(state, T.Then))
.App(ParseExpr(state))
.Bind(thenBr => Expect(state, T.Else))
.App(ParseExpr(state))
.Bind(elseBr => Result.Ok(new IfExpr(cond, thenBr, elseBr));
wait does C# have operator overloading
I killed C# and implemented a mini Haskell against its will
weird question to ask as a professional C# dev of quite a few years at this point I know
C# does have operator overloading yes
I see
but unlike C++ people only use it when needed instead of abusing it for piped stdin/stdout
I abused it for my monads
and your code isn't readable as a result
It's readable to me, but I moved to Ocaml because I didnt wanna have to hack a language to get a not dogshit exception handling paradigm
the translated code is considerably cleaner and easier to reason
in haskell I'm used to the applicative operators of <*> and the likes
Not really, theres so much stupid noise
I was very confused in C#
yeah I could not make a custom operator sadly
so I had to use *
>> is >>= and * is <*>
for a proper parser combinator you're going to need <* and *> too
wait it wasn't a parser combinator
This was a simple recursive descent parser
something related
The test isn't that you can understand the code now, its if you would understand it after not looking at it for 6 months
The fact C# doesnt have Maybe/Result types in 2026, even if you had to do .and_then is disgusting and makes me want to vomit all over my keyboard
it might "soon" actually since discriminated unions are in the works
Oh thats another thing I had to hack
I used records and abstract records to hack those in for Ok/Error and Just/Nothing
I think I've seen libraries for this stuff before but yeah I don't use em
In general you either do regular exceptions, or do patterns like TryGet and the boolean success return arg and using output arguments
I know Haskell well, this is far more natural for me than OOP code ever will be
then write haskall?
It took me 3 hours to implement these two cornerstones, ill probably make it a library for if I ever need result types
Maybe/Option isn't really necessary since as long as you're not casey and actually use Nullable=true in your csproj you effectively have something close to Option already
Compiler and library system is not great sadly
Result would be great though
I fell for the bait of Nuget being good and then realized writing my toy language in C# would have been a nightmare so moved to Ocaml
I dont like Nullables because null is an unknown value, its kinda close but not close enough
pretty sure people have already made nuget packages for shit like monads
Yeah but I didnt wanna have to graft a massive depency for like 3 things I needed from it
it's ok we just go the javascript route and have null and undefined
😭
(please don't)
JS is probably the worst language on the planet
javascript has null, undefined and the absense of a value
the third has different behaviour from the first two that can be measured
right there's also <Empty>
Lol
If I have to do web stuff I either reach for Typescript and only use functional programming paradigms, or PureScript
I'm too lazy to do Javascript
My favorite is when I have to declare a singleton in Python because I cant use None because I'm doing stupid meta shit again
Typescript is a wonderful type system glued to a language that makes me want to cry
I never fall for the this in JS/TS because I never use classes as anything other than data objects with immutable properties
this is almost unused in modern javascript in my experience
Every single thing I use in JS gets Object.frozen if I'm absolutely not goign to use it ever again
because of how unpredictable it is
generally just in classes i've seen it
aside from the strange function/globalThis context
I like functional programming but I've never really tried to push immutable programming into languages not designed for it
I tend to HATE OOP, and I mean REALLY HATE OOP programming because it is fundamentally alien to my brain
I think I have 1 class in my entire work js codebase and even just that one has caused issues before
don't trust those things...
partially my fault cause svelte reactivity inside classes is full of footguns and not recommended by them either
i never realised classes could do svelte things
I like Javascript 
gotta love JS where a for loop will see empty, but not map
You could not pay me enough to use it
On contrary, I fucking love PureScript
you can have $state fields inside a class for more fine grained reactivity
ah but that requires svelte 5 which is scary
Its so elegant and pretty, I wrote a Discord bot in it one time
I had a usecase for it once and it did work quite well for that but it's been nasty for anything else
import Prelude
import Effect.Console (log)
greet :: String -> String
greet name = "Hello, " <> name <> "!"
main = log (greet "World")
svelte 5 is so much nicer than what came before
I still haven't tried Svelte 5 because my two main Svelte projects have been on Svelte 4 forever and I dread doing the work required to upgrade
you can upgrade them gradually fwiw. Places without runes in them run in legacy mode by default
And I know if I try to upgrade one of them I'm going to be sucked into rewriting it from scratch for the third time because it's god awful in its current form and I don't wanna commit time to that
PureScript isnt exactly 1:1 with Haskell, it has some weirdnesses like the operators are slightly different
But it is a nice language, where I don't have to worry about the stochastic chaos of JS
i think my only svelte 5 project is the stardew festivals site
If I'm not gonna do the work to upgrade properly though I may as well keep it in Svelte 4 and not risk breaking it
let {
festivalId, modificationId, selectedTile = $bindable<SelectedFestivalTile | null>(),
} = $props<{} & FestivalMapRendererProps>();
const map: MapData = $derived(maps[`${festivalId}_${modificationId}`]) as MapData;
its so much 
oo
My docs site wouldve been Svelte 5 if it was released by the time I started it. Alas
I wonder where Elm would be if it hadn't been effectively abandoned
Probably not very far because the developer does not allow you to use it for anything server side, nor does it have proper typeclasses
I see some issue reports from time to time with bugs on hybrid projects where parts are svelte 5 and parts svelte 4 but it seems ok? I'm lucky enough where svelte 5 released before I started the work project
If you switch back to javascript instead of Typescript you can remove all this ugly unnecessary type safety and make the code much smaller 🙂↕️
And introduce stochastic chaos? No thanks lol
but then no autocomplete
Types are there for a reason
shoutout to types
I do admit I have like 2 places with the cursed evil as unknown as Type
Types are amazing, most people only hate them because they havent used a language with proper type inference
eg Ocaml or Haskell, where you never have to specify them - yet they are strictly typed languages
yeah these days new languages try to go pretty far on type inference
what the
Rust falls into that category too, it has decent type inference (albeit not as good as Ocaml/Haskell)
I dunno, types seem kind of sketchy to me. Back in my days there were not types, let, or const. It was all just var.
as unknown as Type is the "fuck you type system its this now I don't care what you think"
everything was global scope or function scope and we were happy
we used this and just kinda hoped that referred to the correct thing
and i assume this works because under the hood it's still just dumb JavaScript?
yes
like, it would make no sense in a lang like C#
yeah typescript is just like "oh ok" cause you can cast anything to unknown and unknown can be cast to anything else
youre forcing it to ignore the type it knows/thinks it is
Its an escape hatch I imagine invented to interop with the worlds worst language, PureScript however does not allow this IIRC
The type system is purely for type analysis and giving proactive compile errors.
the runtime is just objects and primitives
typescript is effectively type erased since types don't exist once compiled
so it works
in my view, Typescript is one of the most powerful languages as a result of the fact its type system is entirely descriptive and not coupled to memory layouts or whatever
typescript typing is great
I like it when I know the memory layout smh
One of. But PureScript stomps all over it in terms of type system
but purescript isn't readable code
That said, union types
It supports higher kinded types with row polymorphism
PureScript is incredibly readable code
First time I've ever sat down and made tests for something to ensure it was correct before actually integrating it into the wider system
I love being able to be like "this function accepts any object with an id field"
Or really made much for tests at all
poor man's interfaces
Tomorrow I'll be making some "tests" that are just for profiling purposes to compare the new implementation to the old one. I'm sure there's plenty of room for me to optimize the new one
huh. const cat: number = 'dog' as unknown as number is valid. of course it is
my biggest gripe with javascript outside of the complete fucking nightmare that is the Date API is honestly just the lack of any good systems to avoid memory allocations. Like there's no slices/spans for example without diving in some of the most cursed Proxy code imaginable
its not poor mans interfaces though.
it doesn't require annotating other types, it accepts anything that matches the pattern
being able to cast to unknown hurts my soul
does ANY lang's stdlib come with a good date API
purescript does compile to just slightly cursed js
var main = /* #__PURE__ */ Control_Bind.bindFlipped(Effect.bindEffect)(TryPureScript.render)(/* #__PURE__ */ TryPureScript.withConsole(function __do() {
Data_Foldable.for_(Effect.applicativeEffect)(Data_Foldable.foldableArray)(Data_Array.range(10)(1))(function (n) {
return Effect_Console.log(show(n) + "...");
Sure there is!
Do it all in a webassembly module and interop it 😛
oh is it just using Effect
uh the C# DateTimeOffset API is honestly very good
stardew valley has a pretty good date api 
i should rephrase. did any lang start with a good date API
Yes, compile. But the language itself is readable
mhm
...does it? 
Also SDV dates don't have to deal with the nonsense that is IRL calendar / timezone / etc. systems
Who cares what the compiled output looks like
I miss DateTimeOffset
I feel like its time stuff leaves stuff to be desired...
how old do you think we are
i don't remember if C#/.NET started with that
it did not
99% of the time it gets minified anyways
A million and a half
DateTime would just work how DateTimeOffset does if it had existed from the start I think
WorldDate is solid for what it needs
JS does have Temporal api now for everywhere except safari
If we're talking date api, GO has the worst date API on the fucking planet
it does but it's going to take a while till I can actually use Temporal
and it's still not really that good
I seriously hate GO so fucking much it cannot be quantified
it's just not activley harmful
@ Pathos WorldTime and then WorldDateTime when
You need to remember 01/02 03:04:05 PM or some shit instead of just YYYY-MM-DD
It's a video game
Don't act like you know what a video game is
i mean AverageBedTime only jut got clamped to 60-minute values instead of decimal 
I was about to bring up that same thing
Clearly it's not even good enough for a video game!
fortunately lies outside of the worlddate api so my claim stands
Any date api is incomplete without a time api
Ah but your original message only said "date api" not WorldDate api
wtf
I'm in agreement with Casey here
if this were true python wouldn't have to explicitly include datetime
meaning both are separate and distinct
Python is no role model language to me
and a godawful time api
Someone's replying as they backread
I can list features I like from C#, hell even Java has some features I can list as positive (even if thats just lambda syntax). I cannot think of a single feature I like from Go, aside from concurrency and concurrency is just an awfully confusing "ape" API wrapper around green-threads
Ppl who do C# for work do y'all use monorepos 
Wouldn't that be kinda up to your employer
"If it were true that cheese is good, then you wouldn't have to explicitly include dairy/dairy-like"
This is how you sound
people who do C# for work are y’all okay
Yes I know that's not an equivalent comparison now hush
not at home and not at work
There r ppl upstream from me doing monorepos for ??? reasons even though my work generally don't do that
No, but not from the work
How many of u use c# professionally other than Casey and matt
People who do C# for work would you like to trade with me
SDV does (well, mostly)
The question is equivalent for purpose of this i feel
Whether it is you choose to do it or work is already doing it and changing away would suck
python feels like it wanted to be js level chaos but gave up halfway
If its part of one solution with the projects referencing each other, yes
I kinda like the idea behind go's typing system
I can't think any job I'd trade my current one for
What if it's a library
But I've never done go professionally
If its using project references same repo, if its doing it indirectly via private nuget or whatever then different repo
Lol
also any language that integrates oop features but not access modifiers should be jailed
For reasons I don't comprehend the ppl upstream of me put a bunch of nebulously related rust crates in 1 repo
I've done so much insane shit with decorators
access modifers are a meme anyway in languages with reflection
Eh, I would still
only on the side honestly, we do some service prototyping in c# but the rest is all ts
yeah but replacing them with just prefixing a random string onto the name is just… 😭
If someone wants to have access to my private stuff they WILL eat the efficiency cost to reflect into it. I consider this a fair price.
I mean I technically have code in c# interfacing with labview because I got very mad
I used to professionally do C# but stopped in may 2024
Currently im Jinja/Groovy/Yaml templates
What
There's like 6 languages at use for my work and I'm dreading the day they make me touch ruby
I forgot ruby was a thing
I don't actually ship code anymore and configure the vendor system to do it due to org change / team changes
I might need to touch perl lol
Woe upon ye
i quite like go but the date api is so, so terrible, you're right
Anyways I have an opinion on languages
Which is "if you're willing to pay me to write it I will"
Regardless
My opinion on language is that i write fun things faster and making wheels kind of suck
But this has no bearing on what I'll do for work code so
Secretly I love programming language nerdy
But if I get paid I will write net framework 4.6 lol
Majority of my professional time in C# was 4.6
but it was also my project to have it stop being 4.6 and bring it to be up to date
(4.6 is the version used to interop with labview)
any language that forces OOP should be jailed, its fine its opt in imo
but forcing it is horrible
I’m an OOP liker 😌
classes have some use but having to use them for everything is a warcrime
i've had to dial in the amount of inheritance i've been shoving into our work codebase
but I’m also a functional programming liker so maybe I’m just weird
it's turned into a family tree
you have to go back generations and ask your class' grandparents about interface implementation
I don't mind OOP but I'm very pragmatic and use it to not repeat myself but won't blindly try to use polymorphism when a switch statement would do it better
not if you listen to mr martin and follow Clean Code®™
Is it a normal family tree or like Habsburg
otoh one of my recent pain points at work was cross-comparing three nearly identical files where every symbol was renamed but the actual functionality was the same other than like two string literals
I listen to nobody and prefer my code with marinara
What about in Whitespace?
I'm glad I'm no longer in my previous team
this sounds beyond inheritance, it sounds like it could have been a single param somewhere
If you pay me relative to the effort sure
because I think if I actually tried I could shrink their codebase by 70% by not having everything repeated and delete 2-3 layers of abstraction
Not sure which language blueberry means, but C++ does support multi-inheritance...
but they actively enjoyed the practice of "new functionality, just copy paste a bunch of files and tweak the contents slightly if needed and find and replace the noun with a different one"
ts, so single inheritance and interfaces
but we're increasingly shifting to mixins on a lot of things which is nice
🐍
I think we could do that if we allow 1 guy to force push to main and trust them to not lose 1 morbillion dollars by mistake 😌
I like functional programming, and absolutely hate OOP with every fiber of my being, but I do see the use in it and am fine writing C# but I write very un-C# C# (nothing like the cursed monads though, that was an out-lier). I just write a lot of lambdas, use absolutely ZERO null types, and keep it to a very very very basic and minimal use of classes, preferring structs or records and readonly 99.999999% of the time
Unfortunate that 1 morbillion dollars is a lot of dollars
I think in my monopoly codebase, the only inheritance I have is between interfaces to not repeat common fields.
no class I think actually extends a different class
Isn't it better to just use a different .net language then
But it just for fun yes 
Fwiw, when I did c# in mods, I eventually also kinda adopted structs
You can always go finish the rust clr
Structs, readonly as much as possible, etc
structs make me a little ill
if I trust github search, I indeed only extend between interfaces or generic constraints
i just don't see the value and openly resent them for so often being unable to simply change a value on an instance without instead having to recreate the whole instance
This is why I like them
I hate untracked mutability
I cant 'visualize' the flow of code (literal impossibility), so it becomes a nightmare to track what is changing what
I abuse mutability frequently with abandon 
Skill issue
for something called a valuetype they sure are valueless to me
Jk jkjjk
But to be fair that's probably because I only write modding C#
And not sensible enterprise C# or whatever
it is nice being able to pass it into a function and knowing it was impossible for it to mutate the value
An effton of structs passed by reference
is that not the use case for in
the sweet silence as a dozen people go to search the ms docs for in
Fwiw, a huge part of it was just trying to give the GC as little work as possible
Smh
i am disgusted
Like I wouldn't know in well
i think i've seen in exactly once. in pathos code, of course
I very rarely see in be used, but it does require the function to proactively declare that it doesn't mutate stuff
Yeah this bugs me so much sometimes. It'd be different if I could do someObj.SomeVector2.X += 2 (where SomeVector2 is a Vector2 property)
it's worse with rectangles honestly
True
Yup, exactly
Thanks, Pathos
(It surfaced a Pintail bug)
can't just inflate or width, oh no. gotta make a new rectangle with explicit xywh values and can't even just use points because they have virtually no arithmetic overloads
There r many things u can accomplish with strategically flipping netfields 
That is why I have spent too much time with the in keyword
it was very weird when doing my cache stuff in the IRawTextureData stuff where copying it was just assigning it to another variable
I am still disgusted beyond belief
Speaking of rectangles and other monogame types. I hate how some things are obj.ModifyInPlace(...) vs obj.ReturnedModified(...)
Data should not be "reached into" and mutated at will
And many more when you harmony prefix ref mutate stuff
Can't u make extension methods
data should be "reached into" and mutated at will
that is purist talk, not pragmatist talk
Like Rectangle has Inflate, which is in place and returns void, but what if I want don't want to make a temporary variable for it?
So yeah i think it's at least partly bc there is nothing clean about modding to begin with
I don't know the difference between ref and in
That's a shallow copy only though
Crimes go brr
i can, but everywhere? in every repo? in the ones that arent mine? i mean i know you would but still
...did you really just compare mutable data with killing puppies
Look I'm insane okay?
you'll fit right in in enterprise C# actually, welcome
I have the same visceral reaction to both, so it is an apt metaphor in my case
what
Insane enough to spend literally years making mods just to throw it all away
are you okay
Mutating random data leads to massive race conditions, it also leads to being able to not track state
Pls let me imagine the beautiful ivory tower ok
some kind of ichorous tower
I am very aware of the foundation of sand
Lol
absolutely not
Its a metaphor, if you have never worked on a massive codebase you will not understand why it feels that way
Sand is wonderful
New quote added by kittycatcasey as #7360 (https://discordapp.com/channels/137344473976799233/1215712021207720006/1473462214060146852)
what race conditions, [on topic redacted] is single threaded
Smh
Jokes like this are not appropriate for this discord.
Tbh I think a lot of that is opengl
I have. And I would not remotely compare the two
Okay I will retract my metaphor
you can refer to it as the WorldDate API, the junimos won't notice
even singlethreaded code can have race conditions with async!
I can think of a better metaphor anyway
[redacted] has very little async either
I figured
It just leads to a million traffic jams if you allow yourself to mutate data and its across threads or network packets, like mods usually are
the only places I can think of with any is [redacted] and [redacted]
[on topic redacted] doesn't use async either 😌
what is redacted
so true
this is off topic so the video game this server is about is not to be mentioned...
i think there's async in the kitchen. and another one in the bathroom
oh i see
well make sure they don't run at the same time
For some on topic off topic what does Rc RefCell Arc etc all do 
I vaguely get the concept of ref counting and that i put me things in here so I can clone them
I hear many kitchens even have two...
rc is the runecrafting skill, arc is the dead mmo right
No arc raiders is on steamdb top 10
sprays crab repellant
refcell is probably to do with biology
I think you're thinking of ashes, not arc
- reference counted
- borrowing rules are enforced at runtime instead of compile time
- reference counted but threadsafe
does the book™ not answer those
yes
re:the modifying structs thing earlier
was thinking of new world I think
Arc is atomic reference counted
this
I am trying to figure out if there's something other than RefCell I can use
this isnt modifying it in place, i hope
If i indeed require borrow_mut
They are structs, so no.
If you're careful with your scoping
so this is pure code and there should be no risks with it
(other than the risk of allocations and making the GC do more work)
the GC is there for a reason, its better to give it more work than to have unsafe code and save GC cycles that would happen naturally anyways
every time the GC is working is time no thread is working and results in inconsistent frame pacing and giving a stuttery feeling to users
They're structs, I don't think allocations are a problem here, especially since I explicitly use that when I want it for a temporary purpose (like passing in to a function)
There are GCs that dont do such large pauses
and C# isn't one of them
especially not Unity's GC which is awful...
Tbh those are almost certainly inlined anyways
Are there alternative GC implementations for the .net runtime
Is that a thing u can do
out of the box theres the workstation and server GCs
with a bunch of knobs to fine tune
I think custom gcs are a thing
Theres also the Satori GC which I was playing with, but there is no true pauseless GC
Are you allowed to fiddle with it if you ship the whole runtime
yes I have [redacted] builds in .net9 with satori
But it is not like you can just say my dll will use this GC right
you need to replace parts of the runtime because its not just the GC, parts of the runtime needed different hooks to behave better
The (probably not great) analog in my head is jemalloc which is just a shared lib 
Tbh one of the nice things with zig
all I know is that Unity does funky shit and their move to CoreCLR is still not there yet as far as I know so they're still using the mono runtime
I love the idea of being able to switch on a different allocatior
Crumble bevy game when
the bevy game jam just ended
You're late not dead
perhaps I am
I thought it was .net 10. Did you lie to me
I did .net9, .net9 + satori and .net10
tbh even if you're using rust there's real benefit to being careful with how much memory you allocate
particularly with the current RAM market
allocating memory isn't an instant operation either
and reading memory is not an instant operation either
stackalloc everything
I need to make less tokio runtimes I think
even the stack becomes memory operations if it isn't in l1/l2 right
There r dum hacks we did 
yes
stack vs heap are just an abstraction after all
it's just memory ultimately
I get lots of heap
shout-out to the day I finally made a release build of my work web application and just so happened to freeze my versions on one with an absolutely horrendous memory leak in svelte
Just do it 4 funs
Otoh ocaml feels like it belongs to a younger generation
Noone ever noticed but I was losing my marbles when I noticed the tab was using 2 entire gigs of memory after scrolling through the datagrid for a few minutes
I don't know why we're so concerned about allocating memory when you can just download more
What even is openclaw
can't wait for my personally hosted AI to dox me online after a disagreement
Besides more generative AI nonsense I assume
basically boils down to installing AI malware with full system access, giving it a personality description in a file and then seeing what it does
maybe it will rant online on moltbook, maybe it doxes someone randomly
maybe it emails your boss saying that they're a bitch
it's very innovative
no
Hopefully I'll have made every dollar I need to survive before AI hits
Annnnyways zig seems fun
You know I wasn't joking about selecting thr behavior u want for addition lol
New quote added by atravita as #7362 (https://discordapp.com/channels/137344473976799233/1215712021207720006/1473454483668340911)
Isnt this go
For those who missed it, this apparently has two follow up articles about further events
ROCHESTER, MN—In an effort to help working individuals improve their fitness and well-being, experts at the Mayo Clinic issued a new set of health guidelines Thursday recommending that Americans stand up at their desk, leave their office, and never return. “Many Americans spend a minimum of eight hours per day sitting in an office, but we ob...
10/10 would recommend
my toy compiler now lexes everything I throw at it 🎉
[OK] Token Tests 0 lexing: '1 + 2'.
[OK] Token Tests 1 lexing: '1 + 2 * 3'.
[OK] Token Tests 2 lexing: '-5'.
[OK] Token Tests 3 lexing: 'let x = 10'.
[OK] Token Tests 4 lexing: 'let x: Int = 10'.
[OK] Token Tests 5 lexing: 'if x > 0 then x else -x'.
[OK] Token Tests 6 lexing: '\x y -> x + y'.
[OK] Token Tests 7 lexing: 'f x y'.
[OK] Token Tests 8 lexing: 'f (x y) z'.
[OK] Token Tests 9 lexing: 'f $ x y'.
[OK] Token Tests 10 lexing: 'f . g . h'.
[OK] Token Tests 11 lexing: '{ x; y; z }'.
[OK] Token Tests 12 lexing: 'let x <- m'.
@pliant snow I finished exapunks btw
why are the bonus levels always so much harder than the main campaign levels though lmao, genuinely thought I'd have to give up on even making it to the histograms on the last one
but all achievements done except the minigame ones
oh how times have changed
(100%ed tis-100, 100%ed exapunks except for the minigame achievements, easily two of my favourite games now)
Atra has played none of them btw
my zachtronics tierlist/ranking is now
top: opus magnum, tis-100, exapunks
last call bbs fairly close after those three
biiiiig gap and then
spacechem is meh
and I really didn't mesh with molek syntez
atra I'm not convinced you even own a computer
I will say sometimes I joint a new discord server and I'm sad that I cant use their emojis in other locations
Or the very cute pufferheart outside of here
Like knitting heart
Anyways
What the heck is up with ars technica
I feel like I've stopped reading them in the last few years tbh
Thoughts on my language syntax?
fn main() -> Eff Unit = {
let name = "Stardew chat" // purely immutable, no changing ever
let name = "everyone" // reassigning shadows
print # "Hello world! How are you " ++ name
// operators: + - * / % < > == != <= >= && || >> >>= <*> <#> <|> <&> (.) ++
loop (n = 0) {
if n < 10 then {
print . to_string # n
next (n + 1)
} else ()
}
}
Crabby
Its Rust syntactically, but Haskell semantically
Ambivalent about having then but also {} for the if block
{ } is a monadic chain of sequenced actions
In functional programming, monads are a way to structure computations as a sequence of steps, where each step not only produces a value but also some extra information about the computation, such as a potential failure, non-determinism, or side effect. More formally, a monad is a type constructor M equipped with two operations, return : <A>(a : ...
if cond then expr else expr is the default syntax
I could special case it I suppose
What's #
Hm what if u have fi sugar for else ()
equivalent of $, lets you write f (x (y z)) as f # x # y z
if cond then {
Happenings
} fi
doesnt work, because as stated an else is always required
else is non optional
Ah that part of haskell
Yeah i did say it's sugar
it was originally $ but it looked too weird even for me so I changed it to #
As if u #define fi else ()
there is no preprocessor defines
why would i hide the fact that it requires a explicit return value
I dont like fi personally
its monadic, not step-by-step
I don't think i entirely understand the design tho so pay no mind to silly aesthetic suggestions
It is just sign of too much bash in my life
this whole thing desugars to
fn main() -> Eff Unit =
// Bind the first name
(\name ->
// Bind the second (shadowing) name
(\name ->
// Execute the print effect, then sequence the next action
seq (print # "Hello world! How are you " ++ name) (\_ ->
// Define the recursive loop as a self-calling identity
let loop_fn = (\n ->
// The 'if' is a pure expression returning a monadic action
if (n < 10)
then (
seq (print # to_string n) (\_ ->
// 'next' is just a recursive call to the loop function
loop_fn (n + 1)
)
)
else (pure ()) // 'else ()' lifts the Unit into the Eff monad
)
in loop_fn 0 // Initialize the loop rail
)
) "everyone" // The shadowed value
) "Stardew chat" // The jettisoned value
Oh it makes a lot more sense with the parenthesis written out
this is the functionally equivalent version
and this is it desugared using monadic operators
fn main() -> Eff Unit =
// Bind the first name, then feed it into the next identity
pure "Stardew chat" >>= (\name ->
// Shadow the first name with a second binding
pure "everyone" >>= (\name ->
// Execute the print effect and discard the result (Unit) via sequencing
(print # "Hello world! How are you " ++ name) >>= (\_ ->
// The loop is a self-referential monadic transition
let rec loop_fn = (\n ->
if (n < 10)
then (
// Composition of morphisms (print . to_string) applied to n
(print . to_string # n) >>= (\_ ->
// Recurse into the next step of the rail
loop_fn (n + 1)
)
)
else (pure ()) // Close the vacuum with a pure Unit
)
in loop_fn 0
)
)
)
Do u have plans on other kinds of loops?
its not a loop
its a recursive function in disguise
its functionally impossible to do a loop in this language like a C/C++ loop, because everything is immutable
once you set x, you can never change x
esac is the worst
Also I always have to Google the damn switch case syntax lol
Well yes but u r obscuring it under the hood as is
its not a loop, its functionally impossible to define a loop
loops require variables and mutating variables
you cannot do ```
let x = 1;
x = x + 1
in this language
So it's more q of do you want to make a thing which resembles for
its basically forM
Or will there only be the tail call looking thingy 
I may, we'll see. I dont want to lead people astray too much
loop (n = 0) {
if n < 10 then {
print . to_string # n
next (n + 1)
} else ()
}
its really not that complicated to use
What happens to the allocation of "Stardew chat" when it is jettisoned
you give it a list of input bindings
it enters a previous scope, in the n-depth monad scope of the entire function, where it is inaccessible and will eventually be garbage collected
Is scope a thing ppl can use explicitly (ig that's just the expanded version?)
nothing ever gets changed, even loops. it just "fakes" changes while being absolutely, 100% mathematically pure
no, there are no user defined scopes
{ } is not a scope but monadic do notation. { e1; e2; e3 } is the exact same as e1 >>= e2 >>= e3
Yeah i was wondering if the (\ident -> ... ) was part of the language spec
I have no idea what this is practically useful for but it's neat 
I could write it in a single page of paper
let x = 10
let x: Int = 10
let y = 5 in y + 1 // let in
let z = z + 1 where z = 5 // where
data S = S(x: Int, y: Int)
enum E = A | B
if x > 0 then expr else expr
loop (bindings, bindings)
// function application
f x y
f (x y) z
f # x y
// function composition
f . g . h
f . g # x y
// monadic/applicative/alternative operators
m >>= f
m >> f
f <*> x
f <#> x
m <|> n
// block and bind
{ e1; e2; e3 } // block: semicolons optional
let x <- m // bind
thats it, thats the whole language so far
@rain apex
tiny research language im making
When would you use where
for defining variables after the equation eg
let complex_equation = sum_of_things + gravity * (e - mc2)
where
sum_of_things = ..
gravity = ..
e = ..
mc2 = ..
But it is not like i can defer the where right
no
So it is just for readability? 
yep
if youre reading math you often say this is the equation, where these are the values for the equation. its the same concept here
the inverse would be let in e.g let x = 5 in x + 1, which would return 6
I escaped maff by 2nd year colleg you will never catch me 
THIS is how you do scoped variables btw
let x = 1 in
let y = 2 in
let z = 3 in
x * y * z
OR
let result = x * y * z
where
x = 1
y = 2
z = 3
each let x in expr creates a new scope for that expr implicitly
so if you wanted local variables (immutable ofc) for a function, you could do this
you cannot use let x = 5 normally in a function but it is special cased for monadic blocks { }
i like it for Harmony patches which use __state - on a prefix, i use out vartype __state, on postfix/finalizer in vartype __state
...although i think the postfix/finalizer could just not be a ref lol
terrible. why isn’t this just a factory pattern
im curious, do you find my parameter naming convention unreadable? or readable? it makes sense to me and it is far less verbose than something like and parse_enclosed parse_state opening_bracket_token seperator_token closing_bracket_token function_handler element_constructor
and parse_enclosed pstate o s c f ct =
I could not keep the incredibly verbose version in my head for more than 5 minutes
@safe dragon and so it begins again
I mainly hated their "route file" -> "controller file" -> "service file" -> "repository file" layers of abstraction.
and ofc grouped on filesystem by type not semantic, so all the routes are together, so tracing out a specific endpoint has you yoyoing across the entire repository constantly going up and down
I have no idea what this is lmao
and it was so repetitive that they also copy pasted the unit tests too, and so when I started cleaning up the unit tests I had to fix the exact same mistake like 10 times
infinifactory?
I vaguely remember struggling with that 3dness of it
I mostly just tried to find a solution
yup
I hate 3d games so idk how long I'll last tbh
my poor laptop also hates them, 96C
toasty
yep that's pretty much what everyone does here haha
at least the last two months have just been code cleanup more than anything else
which sadly means so many merge conflicts
at my old job a lot of copy pasting was done for the old frontend code because I think most people didn't even understand anymore how it worked
old WebForms code my beloathed
we actually had someone come in a few years into my job there with actual knowledge on WebForms and he was seemingly very upset by most things he discovered
frontend code is just that kind of cursed though
I think a common problem is people dismiss the frontend as easy, and so it pretty much gets majority junior / inexperienced devs that blindly do shit and not actually think about architecting the codebase
so you just get layered spaghetti of whoever is the current devs flavor of the month solution to state management or whatever
I fought for years to have serious discussions at work about architectual principles for frontend
that and the idea that it's "not real dev". it's real dev that I really want to stay far far away from
I think in pretty much every project I've worked on, the frontend was more complex than the backend but had less experienced devs on it
what were you doing? most things I've worked on had glorified forms for front ends lmao
(I still wrote them terribly, of course)
I've spent a lot of time with geospatial data visualisation, graphs and misc data management

I did a map data viz once, submitted my first ever open source pr to the (at the time active) library I was using, and it apparently got abandoned exactly at the same time so it never got merged 
but particularly compared to a stateless rest API, the frontends job is to be the system that has to do all the state management to keep the server simple
(blanking info didn't work properly iirc so you couldn't leave some areas blank if your data was sparse)
even in the simple form case, you have validation per field, error handling, accessibility and then handle all the corner cases like auth session expiring, server throwing errors and how to gracefully handle them to not make the user experience shit
oh right, the bare minimum good practices
...you would have an aneurysm if you read the code I wrote as an intern
extra points when the form is for making changes to something and handling the http 429 race conditions of someone else changing it first and to gracefully handle that case
no need! we had five interns working on an app with a single user
(I wish I was joking. I really wish they let her just keep her excel spreadsheet instead of making her deal with that)
I did have working code for automatically handling the 429, getting the new concurrency token, diffing to see what the new version of the data is and seeing if the users change is still needed and resubmitting it.
but it hit corner cases in the server code where the GET /resources/:id had less privileges than the PATCH /resources/:id and GET /resources, so the code couldn't actually get just the one back
have you ever dug through nexus' frontend
it made me feel better about my frontend dev abilities tbh
yeah same
I've worked on complicated backend code but frontend always seem to become complicated
especially if you really want to do this "right", keeping in mind stuff like accessibility or how responsive it is on poor internet connections
I dont suppose anyone here has ubiquiti devices and are familiar with vlans
Why not make backend more fancy
add some flair
ubiquiti server requires phone number wtf
Huh, that's suspiciously like how my awful CP-alternative was designed.
I'll never actually learn enough about what a monad is to properly recall what they are next time I hear about them, though
this is a personal attack on me and my modding
New quote added by kittycatcasey as #7367 (https://discordapp.com/channels/137344473976799233/1215712021207720006/1473649338239549492)
Your what ? 
(content patcher)
Yeah don't abbreviate it
It's perfectly normal to abbreviate it in the stardew valley context. However, probably not a good idea given how trigger-happy discord is with those two letters, even in extremely benign contexts
could anyone answer me on this?
Really? Were there any cases where stuff happened?
I prefer verbosity. I think a compromise is good though. Like bracket_open to opening_bracket_token or something.
Or maybe even just opening. I don't really understand the context though.
many cases of people being banned for it, not sure of any specifically due to content patcher, but definitely cyberpunk 2077
That's crazy.
We need a new platform like Matrix, but hopefully something that can also host a single "server" on multiple servers.
creator points from geometry dash too (https://hyperbolus.net/thread/psa-abbreviating-creator-points)
i hate verbosity because i have aphantasia and the name openingBracketToken or currentParserContext means nothing to me so I name things instinctively like ps, pstate, o/c/s/f, ctor, ty, tok exp and also for list items: xs/ys/as/bs/es
Its physically painful and difficult to hold the variable employeeArrayList in my head versus employee or es
I generally would avoid names like that that are completely impossible to understand unless you happen to have prior knowledge what they stand for. It's fine for things that have become an established standard at a greater scale like i for a loop index or x/y/z for coordinates but otherwise I avoid that stuff. Variable names should be treated as a type of documentation, they play a role in explaining what the code is actually doing
for NT brains maybe sure, for my brain it is physically painful and impossible to hold long verbose variables
I find the shorter more cryptic ones easier and descriptivity does not matter, I dont care about telling a story, I write code to express logic
i am a terrible C person and i don't use an IDE, so i like names to be as verbose as necessary but no more
the one time I do use verbose variable names are in for loops since I need to be able to track state
I don't think that's only aphantasia.
I’m definitely not neurotypical (ADHD go brrr) and I agree with Crumble.
I have been diagnosed with autism since the age of 6.
It probably plays a large part in why I hate verbosity
xs/ys are fine list variable names (especially in functional programming for which it is convention) but really only if the list you are iterating over is actually generic and not something you care about.
Like a fold function can take an xs because it's not concerned with the contents, just that it's a list. But if your function expects list of employees that variable name should probably contain the word employee preferably not even just emp
I have aphantasia as well and yeah I have no such issues
I mean this is coming from the person who wanted to make friends but hated the idea of NT vibing and socializing SO much that I literally 'reverse engineered' some people mid VC and built a map of their behavior so I have a mask now
Its maybe unique to me then
I keep my variable names one word at minimum and im fine
Autistic here. I like long variable names. I've encountered too many abbreviated variables (or column names) that no one around could remember what they represented. It's frustrating.
But any longer and i start to be unable to manage it
never touch haskell please
or any ML language
2 letter variable names are common and good practice
Do you have a diagnosis for stuff? Because having one might help you when it isn't just your code, like at work or something.
Also, please don't take any of this the wrong way, everything is subjective and both you and your perception are valid.
I deal with them as required, but some people just get too darn clever for their own good mashing up a dozen consonants
I've been in enterprise C# for too long to be bothered by long ass names anymore... We had a TransactionItemProductDiscountHelper at my old job
i know roughly how my brain works and its weird as hell
i store everything in what can only be described as a vector space but mentally, because i have no visual or episodic memory of any kind
all the TransactionItemProduct things were fun cause we often abbreviated the variable name to titProduct which was the only amusement to be gained at that job
so the extra verbosity is just useless fluff
<flashbacks to original moon misadventures dungeon generation code>
<flashbacks to closer to when I first started programming, and basically skipping the use of vowels> (to be fair that’s not unheard of in c++ land )
I've had that too, when it was me that wrote it originally
also until a few weeks ago i thought flashback was just a metaphor
I mean I definitely don’t mean a literal flashback here. I’m just being dramatic, because it’s fun
I will take a variable called employeeAvailabilitySheet over an empAvails or something funky
I love that blog post by my faborite author:
https://www.marklawrence.buzz/story/aphantasia/
I stand with Crumble
ill take the latter, the former is horrible garbage noise to my brain
i dont need 40 characters for a variable
but how are you going to feel 4 years later when you're back in this code and see some variable name that's not very descriptive of what it is and you have to go on a hunt to figure out what it means
I will even go further and say that if someone show me a piece of code with only 2-3 letters variables names, i will probably not even bother to read it
I definitely learned my preferences from myself. It's always future-me who has to deal with past-me decisions.
When thinking I actually just think in the concept. I don't give it a name, I think about the purpose.
I don't like ones that long for local variables, so I'd omit a little (not as extreme as your example) based on how clear it was from the surrounding function/context in combination with other stuff nearby:
employeeAvailsavailSheetavailability
So it doesn't matter to me at all how long it is, until I stop thinking, and then I forget the purpose.
Good luck with maintainability
Like if it was a function dedicated to during stuff to a passed in employee? Don't need the employee part, unless there's other availability sheets in that some function
you'll find plenty who agree with your stance in the more math-y parts of computer science though. Like one glance at shadertoy code is enough
Most of the people I've encountered who develop code using bad abbreviations are the ones who aren't having to own the code long term
So that's why I always hated math in IT.
That's sorta why the MM dungeon generation ended up with so many short numbers - ended up using mathematical stuff for it some, and got carried away
So it's not their problem
I am very whimsical
-# in that I get carried away by my whims
mario maker dungeon generation...
It's almost like the person who never steps into modding space doesn't know modded acronyms offhand
I dont need my code to tell a story
I just treat it like logic or math
same way with how i comment
(Though it was never a mod that took off in popularity to begin with)
example from my recent project:
and parse_where_clauses pstate : Ast.Clause.t list parser_result =
(* let result = expr where x = 10 *)
let parse_clause ps =
advance ps |> ignore; (* consume 'where' *)
let* id = expect_ident ps in
let* ty_opt =
match peek ps with
| Some T.Colon ->
advance ps |> ignore; (* consume ':' *)
let* ty = parse_type ps in
Ok (Some ty)
| _ -> Ok None
in
let* _ = expect ps T.Eq in (* consume '=' *)
let* expr = parse_expr ps in
Ok (Ast.Clause.Where (id, ty_opt, expr))
in
(* parse many where clauses *)
let rec loop acc =
match peek pstate with
| Some T.Where ->
let* clause = parse_clause pstate in
loop (clause :: acc)
| _ -> Ok (List.rev acc)
in
loop []
Nothing to do with telling a story.
Using proper variable helps your future self and other understands the code better and quicker 
i dont see how this is unreadable
And logic and math is much clearer when you don't have to go back and check multiple things to recall what its for - especially if its code you aren't intimately familiar with.
As others said, it's fine if it works for you, but I find that slightly longer variables names is a good compromise (compared to really long variable names) for remembering what I did a week later.
I think the big issue is more if you work on code together. People have diffferent logic. I want my code to be like a language for communication then. Better than English.
oh i dont, i hate english, i actually want to learn mandarin chinese purely because i hate the verbosity and ambiguity of english
Anyways why asking us our opinion about your naming convention if reacting poorly to feedback
to see both sides
i can understand both sides, i just disagree
Your actual code is effectively the only documentation that can't get out of date with reality ignoring (often global) variables whose name is not longer representative of all the shit it does
If I hadn't seen you working on programing stuff recently, I would have no clue what this was about besides parsing something. And even still have no clue what several of those variables are.
And some of them I need to go back to where they were defined to figure out, which can work fine, but sometimes it's nice and quick to figure things out if you don't have to learn the full backstory of the function just to fix a bug you ran across in a small portion of it.
I also hate English. That's why I'm trying to come up with a better language. I might start to write my code in Lojban.
I wish you the best of luck
Anyway, if you're writing code that pretty much only you are going to look at, the conventions that make the most sense to you are the ones that matter. I deal with code that others may support in the future, or code written by others, which is why we have standards.
Trainchinese is the best app I've found on this
ominous message given the current username
(It is paid but quite cheap)
probably wont be that hard (itll be hard, but not impossibly), i know already like 10-15 kanjis
How's your progress with Rost ? 
price?
I think this is mostly okay. You're also just helped that you're in functional programming land where there's different conventions and standards that lean more towards brevity
...aren't there thousands or something
south china