#programmers-off-topic

1 messages · Page 45 of 1

pliant snow
#

:! pkill -9 vim

#

I think it's the surround plugin

safe dragon
#

makes sense

rotund violet
dusty pollen
#

the di and ci motions are pretty good

#

I’ll admit I probably overuse certain things like d4d etc though lol

#

I never learned vim properly I just picked things up along the way for the most part

safe dragon
#

I think that's the way for vim

#

you learn a few things that work nicely for you and then never attempt to learn more again

#

I have no idea what d4d does

#

does it delete 4 lines

dusty pollen
#

yup

#

I’m sure there’s a better way to do it

#

but that’s what I do pffft especially since I don’t use hjkl as my movement keys because ew

safe dragon
#

it's ok

#

I do dd and then . 3 times

rotund violet
#

Yeah, I exaggerated a little when I said 2 commands, I know dd, p and P also, so 5 commands.

dusty pollen
safe dragon
#

hjkl

#

it's nice though

#

all there on the home row

dusty pollen
#

god and manufacturers gave us arrow keys for a reason /lh

safe dragon
#

and they decided to put those arrow keys far away from the rest of the keys so that you would not do this

dusty pollen
#

and yet, alas, I do

safe dragon
dusty pollen
#

I know some of the more niche vim movements though, like a few vimdiff-specific ones etc

safe dragon
#

I even use vim movements for navigation my dekstop

#

I didn't even configure it it's the default behavior

cinder karma
#

It makes more sense if you consider the class exists to communicate with a specific bit of hardware

#

And we mock it for tests

dusty pollen
#

I think my wm has both behaviours enabled as default but I may have disabled the vim ones

safe dragon
#

honestly I rarely actually use h and l themselves it's pretty much always w and b

#

j and k I use a lot though

dusty pollen
#

I forget which is which

#

are h and l the left and right?

safe dragon
#

takes some muscle memory

#

yes

dusty pollen
#

then j is up and k is down or something

safe dragon
#

no

#

j is down k is up

dusty pollen
#

also I forgot what w and b do pffft I do pretty much everything using one of a, o, c, s, x, and d KEK

#

oh and i, obviously

safe dragon
#

aquo can attest to the fact that it took me like 3 different attempts at learning vim to finally get it to click

#

and then I proceeded to use vim keybinds in literally every editor that supports it

dusty pollen
#

using vim keybinds in IDEs feels wrong

safe dragon
#

well it shouldn't

dusty pollen
#

but I’ll admit there’s something so good about just being able to jump around a file like that

safe dragon
#

for jetbrains it's even a first party plugin

safe dragon
dusty pollen
#

it just feels weird if visually it looks like I’m always in edit mode, whereas in vim I know when I’m in normal mode and can use commands

safe dragon
#

you're barely even using vim at that point...

dusty pollen
#

that is very true, like I said, I only know a tiny bit of vim haha

#

I can do things like ciw etc

#

various movements, all sorts of stuff like that

#

I just never learned the more complicated stuff lmao

safe dragon
#

I know there's a lot I have never used

#

in recent months I've been starting to use recorded macros (q)

#

they can admittedly be very handy at times

dusty pollen
#

I used to use those a ton

#

iirc

#

but mostly I wasted more time than I saved pffft

#

and I always recorded them on the spot, I never remembered what previous ones were or anything

pliant snow
dusty pollen
#

didn’t someone make an educational vim game at some point

#

I remember the very early stages of it but then it became paid or something

#

vim adventures maybe?

pliant snow
#

yeah I think there's a few browser ones out there

#

I think vim actually has some sort of tutorial feature built-in too

#

oh Tutor that's it

safe dragon
#

I did start with vimtutor

pliant snow
#

I'm never run it

#

let's see

safe dragon
#

I felt roughly equally as useless in vim at the end as when I started

dusty pollen
#

I did a tiny bit of vimtutor I think, but I was talking about one of the browser ones year

pliant snow
#

yeah the trick is to wish there was some movement you could do, then look it up as you go along and remember it

#

rather than learning everything all at once

#

i've def learned some bad habits tho

#

like rebinding B and E

dusty pollen
#

yeah, definitely best through practice, unfortunately I’m at the point where I can achieve everything I need to, just not well

safe dragon
#

gotta obsess over it and make it your personality

#

brag about how few keypresses you need

dusty pollen
#

the circular loop where the only thing you use vim for is to edit your vimrc to make you more efficient at vim

#

I’m sure I’ve done things to my vimrc I just don’t know what

it’s probably in my dotfiles repo actually SDVpufferthinkblob

safe dragon
#

I'm going through the helix tutor and I'm running into so funky things

pliant snow
#

like using helix

safe dragon
#

yes

dusty pollen
#

…helix?

safe dragon
#

helix has a whole section based on multiple cursor edits

pliant snow
#

I will never understand the appeal of multiple cursor edits

dusty pollen
#

what is helix SDVpufferthinkblob

dusty pollen
safe dragon
#

helix is an editor that essentially has a different take on the vim movement type editing system

pliant snow
#

they wanted to create vim if it was made today

dusty pollen
#

oh, another one of those

pliant snow
#

but like, half of their movement keys are backwards to vims which confuses me

safe dragon
#

not really backwards but it's all different enough to mess me up

dusty pollen
#

tbh I never knew what the difference between neovim and vim even was and I don’t intend to learn pffft I barely even know the difference between vim and vi

safe dragon
#

neovim is the better one

#

👍

dusty pollen
#

I would hope so, otherwise it doesn’t really need to exist SBVLmaoDog

pliant snow
#

They're more or less the same, but neovim has more async stuff, better lsp support, better plugin language

dusty pollen
#

fair enough

safe dragon
#

the difference is growing bigger over time

dusty pollen
#

…I should sort out the vimrc for my root account actually

#

it’s so ugly

pliant snow
#

I keep mine pretty tidy

dusty pollen
#

and doesn’t have mixed line numbers enabled by default

pliant snow
#

I do need to see if i actually need all these lsp plugins tho, i feel like I could get away without some of them

dusty pollen
#

oh I mean that the vim setup itself is ugly, I think the vimrc for root is default rn

#

I only changed the vimrc for my user

safe dragon
#

all these funky tools...

#

in theory I imagine these are quite useful...

dusty pollen
#

I do that in vscode sometimes, though not often tbh because it’s very fragile

#

in reality there aren’t that many cases where you need to identically edit five lines in exactly the same way and place

safe dragon
#

oh heilx does also support multiple cursors simply by holding alt and clicking with your mouse

#

neat

dusty pollen
#

yeah that’s how most IDEs do it

safe dragon
#

yeah but terminal editors have a tendency not to care about anything that involves the mouse

dusty pollen
#

true

#

I’m still impressed my mouse works with vim at all

#

I kind of assumed if you try to click the terminal window while using vim that it would immediately run sudo rm -rf --no-preserve-root / or something

safe dragon
#

oh lord

#

helix has built in sneak mode

dusty pollen
#

oh that got deleted quickly lmao

#

sneak mode?

rotund violet
#

Geesh, what is with the spam today? It's coming in every 10 minutes.

safe dragon
#

yeah it's bad

#

very fast removal tho

dusty pollen
#

funniest one is still the steem one

#

steem communutty iirc SBVLmaoDog

pliant snow
safe dragon
# dusty pollen sneak mode?

named after the original vim plugin that introduced the concept even if there are better versions of it nowadays. Essentially when you enter sneak mode you can jump to any word by entering the two letter code that is displayed there

#

apparently helix has it built in

pliant snow
#

does it have easymotion

#

aka better sneak

safe dragon
#

idk

dusty pollen
#

wait that’s kind of nice

#

I would never use it

safe dragon
#

how does easymotion work

dusty pollen
#

but I like the idea

pliant snow
#

its a similar idea, but you give it a pattern to follow. So it'll light up every line, or every word, or every match of a search or whatever

safe dragon
#

sneak mode is quite nice but I can't use it cause I'm stuck with a pluginless visual studio implementation

dusty pollen
#

wait is it overwriting the first two characters of each word? I take it back this is a nightmare

pliant snow
#

it's just highlighting them

dusty pollen
#

no, the one Crumble sent

pliant snow
#

once you type two letters, the cursor moves to those two letters then the text returns to normal

safe dragon
#

it's not actually overwriting them it's just showing the keys you need to press to get there

#

the text is still the same

dusty pollen
#

yeah, but while you’re in that mode they’re replaced instead of prepended, I would never be able to find what I wanted lmao

safe dragon
#

prepended would move everything around

#

fun fact, the original sneak mode plugin actually genuine modifies your buffer so the lsp's break on the spot

dusty pollen
#

I just realised I don’t know what lsp is Squint language syntax plugin?

safe dragon
#

newer implementations of that no longer actually modify the buffer

dusty pollen
#

also that is cursed

safe dragon
#

language server protocol

dusty pollen
#

good thing vim doesn’t have autosave or you’d be in for a world of trouble with that approach pffft

safe dragon
#

basically vscode introduced some kind of protocol/standard for writing plugins that are intended for some specific programming language. Like if you have a python plugin installed it will do through through lsp

#

lsps have since been adopted by a lot of editors

#

so that the same plugins work in various editors

#

as long as the protocol is supported by the editor

dusty pollen
#

oh, I see

safe dragon
#

lsps do everything from autocomplete, debug info, info on hover, jump to references etc

pliant snow
#

it's great

dusty pollen
#

I know what they are in terms of vscode etc haha, I just wasn’t familiar with the acronym

#

I haven’t done a deepdive into coding stuff in a long time

safe dragon
#

vscode kinda hides it from you

#

neovim and helix support lsps too but they're more explicit about it if you want to use them

#

neovim's implementation also seems to still leave like 50% of the process to random ass plugins you need

dusty pollen
#

I get the idea, though - it’s everything language-specific that your IDE does. Formatting, code autocompletion, syntax highlighting, hover info, etc etc

safe dragon
#

yeah

#

wait

#

not syntax highlighting

pliant snow
#

Yeah, looking at my config, I use 7 plugins just to set up and manage the LSPs

#

I'm pretty sure I definitely need 6 of them

dusty pollen
#

oh, I assume syntax highlighting is just something vscode happens to typically bundle together with lsps then

safe dragon
#

yeah

#

in the case of neovim and helix the syntax highlighting is handled by treesitter

#

which is also language aware and also has a bunch of editing stuff associated with it. Treesitter is what's used when you ask like "delete everything within this function" with vim commands

#

😌

#

it's a lot

#

treesitter at least tends to be incredibly easy to set up

pliant snow
#

yeah treesitter is super easy, although it does require an external package

#

or maybe it doesnt

dusty pollen
safe dragon
#

I think it needs a plugin for easy installs but treesitter itself is built into neovim yeah

pliant snow
dusty pollen
#

relative line numbers in vim are the best

#

well, mixed line numbers

pliant snow
#

and I don't even have that many plugins compared to some

safe dragon
#

you don't even use easymotion anymore you use hop

dusty pollen
#

I’ll go dig up my vimrc in a bit

pliant snow
#

hop is just easymotion in lua

safe dragon
#

and I think easymotion also was one that actually edited the buffer

#

I don't think they had a choice at the time to be fair

dusty pollen
#

I hope you don’t think I’m kidding about the dXd thing btw, that is my approach to 99% of vim things

pliant snow
#

I do enjoy how I can use this same config file in vscode

safe dragon
#

nah that checks out

#

I use dd a lot followed by just spamming .

pliant snow
#

dXd is a fine way to do it

#

I would do either dj over and over, or just highlight the whole section

safe dragon
#

ok in reality I do often to V and then select and then delete

dusty pollen
#

pathogen is a vim package manager, right?

#

what was I using it for… Squint

pliant snow
#

Yeah, it's what I used to use

safe dragon
#

now you've become lazy

pliant snow
#

lazy actually downloads them, I think pathogen just did easier loading of plugins but you had to download them yourself

#

And I think vim got built-in functionality to not even need pathogen anymore

dusty pollen
#

I think I have no plugins? but I can’t remember if maybe pathogen plugins are just set somewhere else

safe dragon
#

I don't have plugins because I can't use them in visual studio anyway

#

I really do like C# but it's a curse at the same time

dusty pollen
#

I need vim powerline to function

#

I can’t use vim without it, it’s too weird

pliant snow
#

vim powerline would be a plugin

dusty pollen
#

so how am I loading it… SDVpufferthinkblob

#

I see a call to pathogen infect. Is that set somewhere else

#

time to go hunting

pliant snow
#

if they're put into their special plugin folder, vim will load them automatically

dusty pollen
#

do you know what that plugin folder is by default?

pliant snow
#

What OS are you on

#

actually

#

if you open vim and run :echo $HOME I think that should say

#

or maybe not HOME what is it

dusty pollen
#

linux, should be using the xdg home stuff

pliant snow
#

it's probably either ~/.config/vim or ~/.local/share/vim then

dusty pollen
#

neither of those SDVpufferthinkblob I do have a ~/.vim directory but it isn’t in that I’m pretty sure. Interesting.

#

wait, I think I know what’s going on - I’m pretty sure I got powerline through the arch package manager

#

yup. That explains it

#

it put them in /usr/share rather than my user directory

pliant snow
#

ah, you're one of those people

#

for some reason I never liked the idea of getting my editor plugins from the system repos

dusty pollen
#

I try to do everything through the system repos when possible

#

makes things easier

#

unless I’m very familiar with the package manager used for that specific thing for some reason

safe dragon
#

... you can get vim packages through arch?

#

okay only a few of em

fleet wren
#

not sure if better or worse than firefox addons from the system repo

safe dragon
#

...what?

#

wtf

fleet wren
#

it was a thing for Ubuntu aeons ago

safe dragon
#

cursed

fleet wren
rain apex
#

wow ublock is gpl

dusty pollen
#

idk what you guys expected, arch people love their repos SBVLmaoDog

fleet wren
dusty pollen
#

tried vim adventures again, and not only is it paid for anything more than the very start, it's a time limited access payment

#

which feels very strange considering vim itself is open source etc

#

but you pay $35 for 6 months of access

fleet wren
#

...why is it pay for time access SDVpuffersweats

dusty pollen
#

idk but it seems sleazy

#

especially since there's no mention of pay when you start

#

it's also so expensive? like why that much

#

that's more than a fair few full sized games for an in-browser educational game with a time limited access

rain apex
#

a gift

#

i am disturbed by the funkopop

dusty pollen
#

those are their little in-game tooltip signs

#

wherever there's a tooltip it's marked by one of those funkopops

fleet wren
#

yeah this is kinda wack lol, I'd be fine with $100 even if it's for life

dusty pollen
#

I wouldn't be fine with $100 tbh pffft I don't mind paying for things but this feels unreasonable

rain apex
#

what does this do

frosty echo
#

Yeah, I started that years ago, and it was the same then

dusty pollen
#

same

dusty pollen
safe dragon
#

I used no such tools...

cinder karma
#

I don't have an issue paying for good software but

safe dragon
#

vim tutor and trial and error

fleet wren
#

I learned vim partly through an old professor who would spend like 5 min at the start of every lecture showing cool vim tricks (has nothing to do with the lecture)

#

truly one of the church of vim's strongest soldiers

dusty pollen
#

none of my professors were the vim kind of cs nerd

#

one got close but preferred emacs

safe dragon
#

I remember having 1 teacher who was really proud of how quickly he could edit text but he wasn't a vim user

pliant snow
#

I had a CS professor like that, but he used to show off his terminal mail set up instead

dusty pollen
#

your cs professors were willing to touch computers?

#

mine seemed to all be allergic

cinder karma
#

What, they are blackboard people?

dusty pollen
#

whiteboard or pen and paper, but yeah

#

very few of my cs professors were ever willing to interact with computers

safe dragon
#

cs stood for computer skeptical

pliant snow
#

That professor was also a blackboard guy

dusty pollen
#

had a lecturer who immediately hated any student who took notes on a laptop

pliant snow
#

And what I mean was we met on Tuesdays and Thursdays. Tuesdays was in a classroom with no computers, we would in groups have a section of the blackboard to write out our code, then on Thursday we'd come in and see if it actually ran

safe dragon
#

ew....

dusty pollen
#

and another one who used a wheelchair so he couldn't use a whiteboard, and despite being given a fancy webcam by the uni, decided to instead make them give him an overhead projector he wrote on the slides of live in the lecture

pliant snow
#

It seems weird in hindsight, but it worked fine actually. I was used to math courses so it didn't seem unreasonable lol

dusty pollen
#

we didn't do anything like that but we did a lot of handwriting code etc

safe dragon
#

I had a few exams with handwritten code but it was more just pseudocode to show an algorithm

#

it wasn't particularly important if the syntax was right

pliant snow
#

I think he was noting us for syntax as well

marble jewel
#

Get our two C# courses for free on Dometrain: https://dometrain.com/bundle/from-zero-to-hero-csharp/
Subscribe to my weekly newsletter: https://nickchapsas.com

Become a Patreon and get special perks: https://www.patreon.com/nickchapsas

Hello, everybody. I'm Nick, and in this video, I will show you an insane concept in C# which is effectively R...

▶ Play video
dusty pollen
#

I dare any of my lecturers to try to mark us on syntax SBVLmaoDog like they'd know

safe dragon
#

string outerpolation

supple ether
#

👀

safe dragon
#

ye

#

span params are nice

rain apex
#

oh is this C# version of *args

cinder karma
#

Yup

rain apex
#

how terror

dusty pollen
#

which language uses ...

#

is that python again

#

my brain is too mush to think

safe dragon
#

args and kwargs

dusty pollen
#

so the ... syntax is python?

#

I swear I could remember python also using * though

cinder karma
#

No, the .. is c#

#

Python uses *

dusty pollen
#

Squint brain too mush to think about these things

#

I will take your word for it

rain apex
#

in 🐍 u do this

def cool_things(*args, **kwargs):
  pass

cool_things(1, 2, my_cabbages=10)
dusty pollen
#

yes

#

and then you do more crime

rain apex
#

in C# u use the params keyword

pliant snow
#

I don't think I've ever in my life actually written python code that uses kwargs. I just never think to do them

dusty pollen
#

python crime isn't appreciated enough imo

rain apex
#

as shown on the article u can have *args like things

WriteByteArray(1, 2, 3);
WriteByteArray();

static void WriteByteArray(params byte[] bytes) { }
#

i dunno if C# has a **kwargs tho

safe dragon
#

params can be a nicer experience in C# sometimes but I rarely use them

dusty pollen
#

metaclasses and custom __new__ methods can have such creative ways of doing deranged things

#

I wonder what's the most cursed thing I've done with them SDVpufferthinkblob

supple ether
#

Python is evil

#

Useful, yes, but evil

safe dragon
#

in C# there's many ways to do deranged things and they almost all involve System.Reflection

dusty pollen
#

python is true neutral

rain apex
#

well u dont need any reflection in snek just __dict__

dusty pollen
#

except it isn't it's chaotic neutral. javascript is chaotic evil

safe dragon
#

don't need reflection when your language doesn't understand types to begin with

supple ether
#

getRef() = value

dusty pollen
#

I love that python's answer to private fields is "no" and "I guess we can give fields that start with an underscore a special name in the dict to kind of sort of hide them? but not really"

safe dragon
#

back in the vb.net days ByRef was fairly normal but now it feels nasty

dusty pollen
#

I don't remember everything from my js days any more but I remember aggressive use of .bind(this) because js scopes go brr

safe dragon
#

wait... returning refs

#

that's a thing?

supple ether
#

Yes!

cinder karma
#

Yessssss

#

Have you seen it in Harmony

safe dragon
#

I don't want to

supple ether
#
private int[] values;

public ref int GetIntSlot(int which) {
    return ref values[which];
}

GetIntSlot(0) = 5;
#

Mostly I've only ever used it through harmony's FieldAccess (or a reimplementation of it) because it's much faster than reflection for accessing private fields

rotund violet
cinder karma
#

Re: tabbed menus. Our oscilloscope are like that lol

#

I literally work better with pyvisa with them than the UI

dusty pollen
#

@rain apex random selection of things that happen to be on my camera roll SDVpuffersquee

rain apex
#

oh i like the little baskets

dusty pollen
#

they're surprisingly easy to make!

#

the colourful two were for my grandmas, and the plain one is my key tray

#

I'm getting a migraine/headache thing though so CB_wave_boy

cinder karma
#

Gorgeous!!!!

fleet wren
#

cute

strange copper
#

Very cute <3

cinder karma
supple ether
#

why does gitlab not have a dark mode :(

sonic mirage
#

I have dark mode on in our local GitLab at work, I think it's just a "beta" or something you have to enable in your profile

cinder karma
#

I have dark mode too

sullen agate
#

cisco update

dusty pollen
#

every time this channel gets marked as unread without any new messages I assume it’s another gift card scammer

safe dragon
#

you're probably right

cyan shadow
#

usually is, yeah

#

we're having so many of those gift card scams lately

safe dragon
#

I figured it out finally. It was property 40120

#

the procedure that used to take 15 minutes to execute now takes 0.3 seconds

#

I'm now circumventing the api that caused me pain and directly modifying the data

uncut seal
safe dragon
#

oh that's fun

pliant snow
#

You can also uninstall your google software

safe dragon
#

I shall uninstall my phone

pliant snow
#

you wouldn't uninstall a phone

safe dragon
#

it's true

dusty pollen
safe dragon
#

the first link you provided does not seem to exist for me

#

and the other one is already off by default

#

idk if this is eu things

#

it often is

sonic mirage
#

I had some stuff to disable in the first link, but I haven't used Gemini so the second link didn't show any activity for me

#

I prefer do my own research on glass or rock consumption

safe dragon
#

so the first link actually goes anywhere for you?

#

I'm just rerouted to the gemini main page

rotund violet
#

First link is dead to me, second link takes me to a page about Gemini Apps Activity which tracks my actual Gemini usage (which is nothing, since I don't use Gemini).

#

Seems like much ado about nothing; I already had WAA turned off because that shit is creepy, this is tracking for Gemini itself.

crystal wren
#

The first link works for me, but only on my non-workspace Google account where Gemini's just hard disabled.

rotund violet
#

Huh. It does work in the sense of not being a 404 for me but it just redirects to gemini/home.

crystal wren
#

Yeah, on an account that can access Gemini, it takes me to this.

rotund violet
#

Oh, that's weird. The second time it did work.

#

The first time it definitely redirected to the home page. Second time it loaded that page.

safe dragon
#

I've tried like a dozen times

crystal wren
#

Do you both have multiple Google accounts you're signed into? What I have to do is:

  1. Paste link and get redirected to Gemini home
  2. Switch Google account in the account switcher
  3. Paste the link again, then I get there
safe dragon
#

none of my accounts I'm logged into get to that screen

crystal wren
#

Probably just doing A/B testing on opting out of your data being used to train their AI.

safe dragon
#

I've also tried to use chrome instead of firefox but it just doesn't exist

#

oh well

#

I have never used gemini

rotund violet
#

I'm wondering if this is actually tracking, or something else. The extensions seem to be just a way to permit these apps to expose the AI search/recommendations as an explicit opt-in feature. It doesn't imply to me that Google tracks my GPS or map usage just because the Gemini extension is there. Just means that the Maps app is allowed to use Gemini to respond to prompts if I issue a prompt.

Unless I'm misunderstanding. The language is a little opaque, as always. But since I have WAA turned off, that pretty much disables all tracking.

safe dragon
#

what's waa

rotund violet
#

Web and App Activity, it's like the master control switch for all the tracking crap.

safe dragon
#

ah

#

ah already off

rotund violet
#

Actually, my reading of this is that the Gemini extensions are either a replacement or add-on for the old "Google Assistant" and they've added more controls for you to disable it in specific apps (where it used to be on by default, but didn't work anyway if you disabled WAA).

sonic mirage
#

If you go to https://gemini.google.com/ you can also just click the gear in the bottom left -> Extensions to see that page. I switched between my few main Google accounts and disabled it on all of them

safe dragon
#

there is no gear in the bottom left

rotund violet
#

Must be regional differences.

safe dragon
#

I can use a US vpn and see

sonic mirage
#

Yeah probably regional

safe dragon
#

oh wtf I get a completely different page on a US vpn

dusty pollen
#

looks to me like the reason it’s available in the US is that the US is the only one that’s automatically enabled when you enter the site?

rotund violet
#

Yeah, that's what we see. With different names, obviously. (Hope you're not posting your real name online.)

safe dragon
#

when I clicked on "chat with gemini" in my regular dutch version I had to agree to some privacy agreement which I had no interest in doing so I assume that's the difference

dusty pollen
#

whereas for the rest of us we just see a homepage

safe dragon
#

my real name is already in this server and has been for 9 years I'm afraid

rotund violet
#

I never actually clicked on the chat button.

dusty pollen
#

we were looking through quotes earlier and I was amazed how early on you were around, Crumble SDVpuffersquee

#

literally this server’s entire existence

sonic mirage
#

Apparently it just assumed I wanted to chat because I've never used Gemini

safe dragon
#

I have one of the first remaining messages on this server ye

rotund violet
#

"Remaining?" Is there some auto-delete?

dusty pollen
#

they should really find a way to purge those quotes ngl pffft though uber doesn’t seem to have any method built in

safe dragon
#

not all channels that existed back then still exist

#

uber has a quote list page in the admin console

dusty pollen
#

also how long was your name Crumbledore for SDVpuffersquee

dusty pollen
#

you can access the list of quotes by doing .q list

safe dragon
#

I could swear it does allow deletion for admins

dusty pollen
#

it does, but one by one

#

no feature to delete by date range or number range

safe dragon
#

fair enough

dusty pollen
#

(at least, not that’s documented in the commands list)

safe dragon
#

This server has cleaned out quotes many times honestly

dusty pollen
#

and as far as we can tell, there are like 4000 quotes that need deleting lmao

#

has it? there are some as old as 2016

#

including quote #2

safe dragon
#

yeah it hasn't been cleaned out by date, more by content

dusty pollen
#

(uber doesn’t reuse numbers, so that’s the genuinely second quote ever saved)

safe dragon
#

a lot of people quote essentially nothing

dusty pollen
#

the essentially nothing ones aren’t the problem pffft

safe dragon
#

oh yes there were also many inappropriate ones or at one point we just had a very significant number of fart quotes

#

I haven't been in the moderation team in god knows how many years though so idk when that last happened

dusty pollen
#

you were a mod?

rotund violet
#

Every n00b thinks that their quotes are absolutely hilarious, classic, need to be remembered forever.

safe dragon
#

twice yes

dusty pollen
#

also I wish I could run a course for discord server moderators because lesson one would include not using quote bots in staff-only channels pffft

safe dragon
#

I was a mod back in early 2016 and then again in idk, 2019 or something

crystal wren
#

I wish I could share the second to last message you said in the staff channel right now, because that is funny. SDVkrobusgiggle

safe dragon
#

I don't remember it

#

I don't even remember if I left on good terms

#

for all I know my last message in the staff channels is insulting every moderator's entire bloodline

dusty pollen
crystal wren
safe dragon
#

make sure to quote whenever anything is posted about #programmers-off-topic so we stay aware of how we are perceived

dusty pollen
safe dragon
#

I'd imagine this channel needs about as little moderation as channels get

sonic mirage
#

idk those scam spam posts have been frequent

safe dragon
#

but I imagine that's all channels

#

unless scammers are biased towards programmers...

sonic mirage
#

"they think they're safe in their little 'rustacean' channel, eh?"

ivory shadow
#

I want to bludgeon people who make breaking API changes in non-major version updates with a giant nerf bat with https://semver.org/ emblazoned on the side.

safe dragon
#

imma introduce a breaking change in a minor revision release

crystal wren
#

Better yet: introduce a breaking change without an increase in any version number.

safe dragon
#

smart

ivory shadow
red crest
#

dont forget to alter your git history to make it look like it was always there

safe dragon
#

I also make sure to put my api's build version string in the api url so that all urls become invalid every build

dusty pollen
#

nah, my breaking change will also go BACK a semver version

safe dragon
#

breaking changes are a regression so the version number goes backwards

rotund violet
#

I don't care what anyone says about you, git push -f, we'll always be friends.

#

Also should point out that Semver is one system, happens to be a good one, but not everyone actually follows it. If someone claims to follow Semver, but doesn't, then yeah, bludgeon 'em.

safe dragon
#

past systems I've worked with boiled down to "higher number means newer release"

#

aka no system

#

which of the numbers would get updated was not consistent

#

ok it was never the major version

cinder karma
#

Okay, I'm going with d6 versioning

#

I just roll a d6 four times

crystal wren
#

How does it work? Is the roll absolute, or does it modify the current version?

dusty pollen
#

.roll 6

heavy daggerBOT
#

You rolled ... 2

dusty pollen
#

we’re on major version 2

safe dragon
#

the fun thing is that the next time you can be on version 1

#

you only reroll if you've already had that version number

#

actually, that's how you move down the versions

#

first roll is major version

#

then if you've already had that major version before you roll again for a minor version

#

you add more and more numbers till it's unique

#

version 3.2.5.1

rotund violet
#

I like to work in very subtle breaking changes, so that 1.1 is technically compatible with 1.0, and 1.2 is technically compatible with 1.1, but if you upgrade from 1.0 to 1.5 then it erases your hard drive.

safe dragon
#

thar sounds more fun

supple ether
#

It occurs to me that you can tell that coding ai salespeople don't really believe in what they're selling because if they did, they'd have trained the models to output compiled binaries instead of raw source code

dusty pollen
#

if they did that, they would have to take some amount of responsibility for it actually running/compiling

supple ether
#

Exactly

#

They know it's not good enough, but they pretend anyways

dusty pollen
#

the thing with the musk vs openai nonsense recently was so weird to me because why are people cheering for either one of them. I don’t like musk any more than the next person but openai are not heroes…

supple ether
#

I admit that I haven't been following that particular thread of news

dusty pollen
#

tl;dr openai are trying to buy themselves out from the nonprofit that apparently owns them (I know, a surprise for me too), musk is trying to torpedo the deal by making much bigger offers to the nonprofit which he may or may not be planning on following through on, now they’re bickering on twitter

safe dragon
#

good luck to them

rotund violet
#

Expecting salespeople in any industry to know the first thing about what they're selling is an act of extreme optimism.

safe dragon
#

it's magical how "expert .NET recruiters" can know absolutely nothing about it

#

since finding employment is primarily handled through recruitment agencies here I've dealt with quite a few

#

obviously they wouldn't be working in recruitment if they were actually knowledgeable about the technologies but they continued to surprise me despite knowing this

rotund violet
#

Every business larger than a lemonade stand is stuffed to the gills with unnecessary employees and outsourcers, partly because they're forced to and partly because they're constantly lied to about how it will improve their productivity or their outcomes.

A team of 20 engineers, a President and half a dozen marketing, sales and graphics guys can produce the same output as a team of 20 engineers, 10 HR staff, 3 accountants, 6 managers, 2 recruiters, 12 salespeople, a PR firm, a legal firm, a brand manager, an ad agency and any number of other lamprey divisions. More, in fact, since they're not wasting time in mind-numbing "training" sessions and other "compliance" work.

pliant snow
#

Just make your version number the hash of the software

#

done

safe dragon
#

smart

dusty pollen
#

I hope the mods are keeping screenshots of all these spam messages so they can make a montage over sappy music at the end of the year, award show style

sonic mirage
#

They should just have a straight-up award show. Best Creative Writing, Least Likely to Succeed, Most Spelling Errors While Still Being Readable

#

Unfortunately they'd never know they'd won because the criteria includes having been banned for spam

dusty pollen
#

Furthest Edit Distance From Valid English

#

I still think Steem Communutty wins best in show

cyan shadow
dusty pollen
#

I haven’t seen that one KEK

cyan shadow
#

So many misspellimgs

#

... THE IRONY

#

The butterisms are infectious

#

But yeah

#

There's so many variations at this point lol

dusty pollen
#

the recent ones have been boring, they aren’t trying to pretend to be the real link at all

#

where’s your pride as scammers

cyan shadow
marble jewel
#

The mispellings are intentional to help evade automatic detection

#

Same playbook as spam emails

cyan shadow
#

Yep

marble jewel
#

Also why they sometimes use the weird characters that resemble latin alphanumeric, but aren't quite them

cyan shadow
#

Using Cyrillic characters to evade the censor isn't restricted to scammers, even

#

It's also a favourite of trolls that join to spam nasty things

safe dragon
#

it's also used to avoid plagiarism detection software

cyan shadow
#

Yep

rain apex
#

Just gotta ban Unicode ig

marble jewel
#

Imagine when they get sophisticated enough using LLMs to have full on-topic conversations in the relevant channels before sneaking in spam

safe dragon
#

the horrors of someone shitposting in off topic for 3 weeks before scamming everyone

dusty pollen
#

using other alphabets as English is also a habit of those “aesthetic username” people, there have been multiple times where I’ve been unable to read a username because it had characters in my first language and that made it nearly impossible to tell what they were supposed to be in English pffft

crystal wren
#

We've had the likes of...

https://stemmcommunuty.com
https://stemmcommunuty.com
https://stearmcommunity.com
https://steemcommunnuty.com
http://www.steemcommunnuty.com
https://www.steemcommunnuty.com
https://stenmcommunuty.com
https://stemncommnunity.com
https://stemncommnunity.com
https://stemscommunity.com
https://stemscommunity.com
https://stenmcommunity.com
https://stenmcommunity.com
https://steamcommunity.com
https://steamcommunity.com
marble jewel
#

It seems like not a far off possibility, but I take comfort in knowing I got these free Steem Gift Cards, DM me for details.

cyan shadow
#

Hi DH kek

crystal wren
#

Couple duplicates there, because some have different parts to the URL after the domain.

dusty pollen
cyan shadow
#

I'm supposed to be reading for my thesis but I'm hungry so I'm here instead milklaugh

marble jewel
#

There was an LLM on BlueSky whose entire purpose was to find popular discussions and disagree with everyone, and it got the engagement it was looking for

safe dragon
#

many of those I think

crystal wren
#

Oh, the Quora Stratagem.

dusty pollen
#

the easiest people to imitate will be us tech nerds, you can probably do it with no ML by just finding keywords in previous messages and spitting back wikipedia snippets from the relevant articles KEK

safe dragon
#

shit on Javascript, get free engagement

rain apex
#

steem

pliant snow
#

...I still don't see how the last two aren't legit

crystal wren
#

They are! I just removed everything past the TLD in this instance. Needed the legit ones there to test the regex doesn't catch real Steam links... and forgot to remove the legit ones.

marble jewel
#

You need a phoenetic library that matches anything that could resemble steamcommunity, and whitelist the actual steamcommunity

rain apex
#

Stems community

#

They sell gardening stuff

sand frost
#

smh hating on the STEM community here

#

in programming off topic, no less

dusty pollen
dusty pollen
safe dragon
#

I disagree

marble jewel
#

It was successful in baiting users to respond to it

silk turret
#

how much does c++ knowledge apply to c#

fleet wren
#

decently

silk turret
#

what level of c# knowledge is needed for making custom npcs

crystal wren
#

Zero!

rain apex
#

Can't believe we r on topic here again

fleet wren
#

which makes it off topic for the off topic channel

#

(feel free to follow up in making-mods!)

rain apex
#

I think knowing <any programming language> is applicable to learning C#

marble jewel
#

Unless... you're talking about NPCs in general, nothing to do with SDV. How do you make an NPC IRL?

fleet wren
#

step 1 get married

marble jewel
#

Probably ChatGPT

worn remnant
#

go talk to someone. boom, two NPCs

rain apex
#

Just bud one off like yeast

fleet wren
#

when will humans be capable of parthenogenesis

safe dragon
#

tomorrow

#

look forward to it

sand frost
#

I think the most common pitfall among people who already know a language is people who only know Python, and only a smallish amount of Python. Thing like "variable type" and "variable scope" and even sometimes organizing things into functions you can often pretend aren't real when writing Python

worn remnant
#

i agree that knowing python is a common programming pitfall /lh

sand frost
#

heh

#

Python is a great 2nd language imo

#

I can get a lot done in Python

rain apex
#

Haskell ppl can learn F# instead

safe dragon
#

they'll hate F#

marble jewel
#

Programming is a language-agnostic skillset imo

safe dragon
#

F# sucks to write honestly because you have to resort to C# style code constantly anyway due to all the .NET libraries being written that way

safe dragon
#

7

#

level 7 knowledge

marble jewel
#

I mean if you're trying to make a sentient being from scratch using non-organic methods, it requires quite a bit of knowledge

safe dragon
#

easy

rain apex
#

Are NPCs sentient

safe dragon
#

presumably not

marble jewel
#

To me at least, you're all NPCs. Are you sentient?

rain apex
#

No

safe dragon
#

I wish

pliant snow
#

🤖 YES.

fleet wren
#

The only sentient being in the universe is Bob, age 54, who runs a small convenience store in downtown Denver Colorado

safe dragon
#

at risk of losing his business to a walmart

worn remnant
#

"average person is sentient" factoid actualy just statistical error. average person is 0 sentient. Sentience Georg, who lives in cave & is over 10,000 sentient, is an outlier adn should not have been counted

safe dragon
#

mustbe spider george's brother

#

a family of statistical anomalies

dusty pollen
dusty pollen
cinder karma
dusty pollen
#

interestingly enough, my hatred of typed languages has nothing to do with the fact I was forced to learn haskell

#

I’m actually one of the only people at my uni who enjoyed it KEK

fleet wren
dusty pollen
#

I only know async from javascript and will assume that that’s a terrible way to learn about it

#

(/hj, I actually have done concurrent programming courses pffft but nothing practical)

#

for the javascript people here: are you an async/await person or a chained promises/.then person

safe dragon
#

a hatred of typed languages is so bizarre to me

#

I'm an async await person cause I'm used to C#. I only use .then when the function it's in isn't async

cinder karma
#

Tbh I'm starting to realize I have much much higher standards to when I can list a programming language on my resume than most people do

rotund violet
#

It's sort of like the old joke about the employee who's been around for 20 years and has 5 years of experience. "Hey I've done more than 15 'projects' in <language X>" except that none of them were much more complex than a "guess the number" game.

safe dragon
#

"I've done a dozen projects using this technology and all of them failed horribly"

#

tbh I feel like years of experience becomes a horrible metric after only like a year or two

#

some will have stagnated by then and never go outside their comfort zone and others will continue trying to improve

ivory shadow
#

It's spot on

rotund violet
#

This is handwaving away the more nonsensical requirements we sometimes see, like 10 years of experience in a technology that's only 5 years old.

safe dragon
#

don't think I was handwaving anything away but yes obviously there's much worse requirements out there

rotund violet
#

I didn't mean to imply that you were, I was the one handwaving that away as an obviously bogus use of experience.

safe dragon
#

oh okay I misinterpreted it

rotund violet
#

Meaning it can sometimes be a useful metric as long as the person asking for experience knows how experience actually works, and understands the concept of linear time.

#

(which might just sound like the definition of common sense, but you know what they say about common sense)

marble jewel
#

Years are not created equally. What I look for when it comes to hiring engineers is that they understand relevant concepts, and they can demonstrate how to apply them. Years doesn't really matter in that regard because some of the worst interviewees I've met have 10+ of experience with X but have shown that they stagnated 10 years ago.

safe dragon
#

stagnated the day they started hc_pensive

marble jewel
#

Plus I've encountered a lot of people who are good at doing what they're told, but can't think for themselves, and in working with them, they require a lot of hand holding.

#

Like the amount of help they need isn't much more than someone else just writing the code for them.

safe dragon
#

I've learnt that any assumption one might have about what should definitely be achievable by someone with some amount of experience can turn out not to be the case

#

for one person at my old job I genuinely just didn't understand how it was possible and grew increasingly frustrated when they would ask for help

#

I still remember the turning point in my mind where it turned into baffled frustration when they asked me to help them do something I knew for a fact they had done before several times within that year alone

#

ultimately he got fired

#

honestly was worried he suffered from memory loss

#

but he seemed fine in every other regard

rotund violet
#

All other things being equal, if you take two engineers with a lot of raw talent, then the one who's got 20 years is going to do a better job than the one who just escaped graduated college. But as I've said before, there are a whole lot of people either already in the industry or trying to get into the industry who actually don't have any talent.

safe dragon
#

it's ok

#

llms will do it for us and we will no longer need talent

rotund violet
#

I'm not worried. In fact, I hope they go balls to the wall with GenAI coding. They'll crash and burn and then I can charge triple my normal rate to do it right.

safe dragon
#

I'm also not particularly worried

#

nothing I've seen so far gives any reason to believe it's remotely close to being good/reliable enough to replace anyone

#

even if I were to be very generous and pretend a development job is solely about adding very clearly defined and easy to test/verify features to well maintained and documented codebases

dusty pollen
cinder karma
#

Why

#

I'm scared

#

Mommy I'm scared I don't like crimes ||unless I'm committing them||

dusty pollen
#

have you ever looked into python's __new__ special method and the many, many wonderful crimes you can commit with it?

#

iirc you can set it up so that for your custom class A,

a = A()
isinstance(a, A) 
# returns False
#

and I just think that's beautiful tbh

lethal walrus
#
class A:
    def __new__(self):
        return 1
        
        
a = A()
print(isinstance(a, A))

it's as simple as this

dusty pollen
#

yup

#

wonderful, wonderful crime

lethal walrus
#

didn't even know about __new__ tbh

ivory shadow
#

Crime is a core pillar of Python

rotund violet
#

Python is a crime.

ivory shadow
#

The C in CPython definitely stands for Crime.

cinder karma
#

You know what? Maybe I should ask chatgpt to set me up on a training plan

marble jewel
#

Can ChatGPT yell at me to do one more rep when I'm feeling on the verge of exhaustion?

pliant snow
#

I think that's like, one of the few things it could do quite effectively

cinder karma
#

Can chatgpt call 911 if I drop a weight on my face?

#

damn, chatgpt does not know about core exercises

#

well, we're getting there

#

....other than chatgpt giving me a pace that's slower than my current pace, not bad.

#

took quite a bit of prompting though

#

it's still not giving me actual good core exercises, but that's fixable

pliant snow
#

I'm here to sing uv's praises as well

rotund violet
#

That's like, really loosely speaking, a split, but not a program of any kind.

cinder karma
#

they did break it out later but it's rough guidelines ish

#

like that

#

and this is the idea of core they have

#

what is that side plank supposed to do other than be boring.

rotund violet
#

Obliques, obviously.

#

3x6 or 3x8 sure doesn't sound like strength training to me. Not sure what that's supposed to be. Too many reps to be strength, too few to be hypertrophy. It's like... "intro to weightlifting" sets and reps.

cinder karma
#

I'm...mostly ignoring that lol

rotund violet
#

The core isn't really all that bad imo. I mean there are dozens of core exercises you could do, so it's as good a random three as any.

#

Oh, I just realized the side planks were measured in seconds, yeah that's the stupid version of side planks where you just sit there.

cinder karma
#

yeah, there's a way to make side planks harder, or perhaps add a resistance band, but just doing 3x30s is kinda pointless

rotund violet
#

Moderate version is to do a crunch motion and hard version is to do a twist.

cinder karma
#

I'm also not a fan of them picking three random core exercises per day, my preference is fewer variations tbh.

#

less to remember.

rotund violet
#

The former is actually called "side planks" in a lot of cases, the latter is not.

#

Well yeah, but muscles do get acclimatized to specific motions so you do have to switch it up fairly often to make progress.

cinder karma
#

this is the variation I usually work

rain apex
#

im not used to how short the dotnet build output is in 9

ivory shadow
#

As someone who hasn't used dotnet build in 9, I hope it's ```

dotnet build
k

rain apex
#

monS no but they did a lot of \r print

dusty pollen
safe dragon
#

your favorite language features are chaos

dusty pollen
#

correct

#

scala implicit returns are another good one

#

(my only non-crime usecase for returning something other than a new instance of the class with __new__ is memoization, you keep some reference to existing instances and if a new instance is created that’s a duplicate of an existing one, you return the existing one, allowing you to use the constructor as a kind of “try to get else create” method.)

#

(I’m using “non-crime” rather loosely, I know)

#

iirc you can do something similar using companion objects in scala but I don’t know how you would do it in a sane language (if at all)

dusty pollen
#

I can’t remember what pooling is but that sounds right, yeah SDVpuffersquee

safe dragon
#

object pooling is essentially exactly that. Instead of creating a new one every time it will take one from an existing pool of them (or make one if there aren't any available)

dusty pollen
#

so basically, coming from languages that let you do nonsense like this and learning a typed language is an interesting experience, where on the one hand I love it and on the other hand I want to throw types into a ditch

#

then yeah! exactly that. Implicit pooling without the ability to call the constructor directly

supple ether
#

out of curiosity, what don't you like about types?

crystal wren
#

(I dislike when they're not there. /lh)

ivory shadow
#

Darn type safe languages, keeping me from making an entire category of coding errors

cinder karma
#

Please, don't tell me exec isn't fun as hell to play with

dusty pollen
# supple ether out of curiosity, what don't you like about types?

what Khloe said SDVpuffersquee in all seriousness, I'm mostly joking, I actually have a lot of love for typed languages, there were a few growing pains with learning to use them for the first time back when I did a few years ago but it's just a more structured experience when writing code (which is 99% of the time a good thing lmao)

supple ether
#

oh yeah no I feel that

crystal wren
#

I actually half think it might genuinely be better for most people to learn something without types first. Because going from having/needing them to them not being a thing is... probably more difficult than vice-versa? I think? Having never done it the other way, I can't say for sure.

supple ether
#

when you first start coming from an untyped language it feels like such a hassle. but then you realize that you don't have to deal with runtime errors nearly as often, and your IDE can give you suggestions, and it's like "oh, maybe this is worth it."

rain apex
ivory shadow
rain apex
#

Imo lack of strict type check doesn't make much difference to noob cus

#

You are still being taught things like "the function add takes a number X and add it to a number Y"

ivory shadow
#

I am the least qualified person to talk about programming education. Entirely self taught and too much interaction with people who allegedly learned to code at college but are completely useless. But I think Types should be a day 1 thing. Even if the type is just "number"

crystal wren
#

It has to be, surely? Even in untyped languages?

rain apex
#

Yeah that's my argument here, ppl who r new to programming don't attempt the various crimes untyped languages allow

safe dragon
#

I started with C# and types were never something that made it harder

#

types only "get in the way" when you are forced into doing something in a very dynamic context

ivory shadow
#

The most annoyed I get with types in C# is when doing something like consuming a new API and needing to write a bunch of models all at once just to deserialize something

rotund violet
#

The main reason I prefer some weakly-typed support (whether it's dynamic, reflection, or the TS ability to just bail on types and revert to all), is that no reasonably mainstream statically-typed languages support higher-order generics.

#

Framework code and extensibility features in general are very difficult to write without one of the two.

ivory shadow
#

I like unknown in TypeScript a lot.

#

Just "Yeah this sure is... some value. Don't know what it is, but it's there."

#

As opposed to any in TypeScript which is just "yeah sure whatever don't type check this"

rotund violet
#

Well yes, all of the special types. unknown is fairly unusable without either any or a structural interface, obviously the latter is preferred.

sand frost
#

Python will definitely spit errors back at you in some packages that are obviously about types

#

and it makes no sense if you don't even know what a type is

dusty pollen
dusty pollen
dusty pollen
ivory shadow
#

I admit that I have abused the heck out of JavaScript's lack of types to write absolute monstrosities in the name of performance that writing proper types for would be at best a nightmare. But that is not good in the long run because try going back to something like that and maintaining it.

dusty pollen
dusty pollen
dusty pollen
dusty pollen
#

atra you laugh, but we had an assignment in my ML course that required using numpy, with the “optional” instruction to try to do everything through numpy functions rather than loops for performance’s sake, and literally everyone who actually managed to figure out how to do it but me used numpy’s vectorize… which is syntactic sugar for a loop KEK my code ran in a fraction of their time lmao

safe dragon
#

the real rebel would’ve used recursion

dusty pollen
#

I’m sure some of the people who couldn’t figure out how to do it in numpy did KEK though I think using recursion on a numpy array is particularly cursed

safe dragon
#

especially in python, recursion certainly isn’t the answer for performance concerns

candid sinew
#

I want to make games in C# I'm using monogame as my framework any tips ?

marble jewel
#

Are you learning C# or do you already know it?

candid sinew
marble jewel
#

Is Monogame still a good choice nowadays? I was under the impression that Unity is all the rage.

crystal wren
#

If you specifically want not an engine, MonoGame's perfectly good!

candid sinew
#

I don't want an engine I'm trying something new from unreal.

marble jewel
#

Oh wait. Unity was cancelled weren’t they because of their controversy.

candid sinew
#

Exactly

ivory shadow
#

These days the engine I recommend to people is Godot. If you're trying to get into low level stuff without a full engine, monogame seems fine to me.

#

A bit dated in some ways, but perfectly fine for hobby projects and stuff.

candid sinew
#

Isn't stardew on monogame?

marble jewel
#

What kind of game are you trying to make?

crystal wren
#

Yeah, nowadays I wouldn't recommend something like Godot/Unity for learning C#. Because then you're going to be bumping against the wall of "oh, this is the more C# way", and "gah, this is the more Godot way".

ivory shadow
#

It is, and an outdated fork of MonoGame at that.

safe dragon
candid sinew
#

Anyways any tips on learning C#?

cinder karma
#

Learning c# works the same as learning any other language

safe dragon
#

the generic answer to that is the same for every language and it’s just “do something with it that keeps you motivated to keep using it”

candid sinew
#

The one project I try on every new language is try to make a pong game using my own art

safe dragon
#

pong is a classic one

#

I’ve made my fair share of pongs

ivory shadow
#

Yeah. That works. You just need an obtainable goal so you have problems to figure out. People who just try to learn a programming language without having an actual use case don't get very far in my experience.

candid sinew
#

I want to eventually make a game.

safe dragon
#

you’ll have to figure out some way to break that down into some more concrete smaller measurable steps probably

candid sinew
#

Yes

ivory shadow
#

Making pong is a good starter project though, for sure. It's a game but such a simple game you don't have many systems to worry about.

marble jewel
#

One tip is you can brute force your learning and maybe end up with something like SDV that works but is probably not designed in a very efficient way, or take the time to learn some common conventions

#

Because most design problems out there have been solved already

candid sinew
#

I'm thinking of trying to make a little platformer game as a learning project.

candid sinew
#

Just not farming

marble jewel
#

Yeah not trying to imply either is right or wrong. I find interest in learning how people smarter people than me have accomplished things.

candid sinew
#

Exactly how I think

#

Anyways thanks for the help everyone

safe dragon
#

(also, while it’s probably not smart to use in absolutely performance critical pieces of code. LINQ is a part of C# that’s very popular and incredibly common to find in C# projects so it might be worth messing around with)

safe dragon
dusty pollen
#

ew

safe dragon
#

it was incredibly poorly defined and the initial version even included what essentially sounded like spyware to achieve it

crystal wren
#

It didn't work in the end and eventually were forced to roll it back, which included kicking out the CEO, but the damage was done.

dusty pollen
#

also, I implemented solitaire in MonoGame (twice!) and it taught me a ton about both C# and monogame

dusty pollen
safe dragon
#

I made a level editor in monogame which I suppose isn’t a game but it’s the only time I ever used it. I ended up quitting it after I grew increasingly frustrated by its asset management system

crystal wren
#

Yeah, there would be no way for them to actually do it without essentially spyware.

#

And they refused to elaborate on exactly how they would do it.

marble jewel
#

Yeah and that included the ability for someone to install/delete over and over again to rack up the bill

cinder karma
#

Why don't you guys try what is that rust one instead 😛

ivory shadow
#

Making a game is hard enough I don't need to fist fight my compiler about it

dusty pollen
#

it also would have meant nobody could ever really release Unity games for free again… genuinely stupid move for a company to make

safe dragon
#

bevy?

#

I have made pong in bevy

dusty pollen
#

everything I know about rust I know because I had a friend who was very obsessive about it (which already was enough of a red flag for trying to use it SDVpuffersquee)

safe dragon
#

I suppose there’s also fyrox as far as rust game engines go

cinder karma
#

I like it when the compiler tells me I'm a dumb ass because I am

dusty pollen
#

I think I started that rust book it comes bundled with like five times and got bored every single time

safe dragon
#

rust is the best language if you want a compiler who tells you you’re a dumbass

ivory shadow
#

A rust game engine just seems so contradictory because

  1. rust is about writing perfectly memory safe code
  2. game development is about writing the most cursed, hacked together stuff that somehow works
rotund violet
#

Bevy ties those two together remarkably well.

#

I know it sounds unlikely, but it's true.

dusty pollen
#

I thought all development was about writing the most cursed, hacked together stuff that somehow works /lh

safe dragon
#

helped by what the bevy engine developers themselves lovingly call “type crimes”

rotund violet
#

Yeah, although it's kind of silly rhetoric the same way modders keep referring to "harmony crimes" and "reflection crimes" and all that, it's perfectly legal and mostly-intended use of Rust's traits.

dusty pollen
#

my favourite evidence of all development being crime is the fact that technically no language can be pure functional programming because writing to screen/log is, in fact, a side effect SDVpuffersquee

sand frost
rotund violet
#

And the memory-safety and more importantly thread-safety is actually salient, it's what allows all of Bevy's systems to be run totally safely in parallel.

ivory shadow
#

It's not a harmony crime unless it's my data driven dynamic transpiler.

sand frost
#

more of a "this is probably cool but also probably difficult" flag

rain apex
rotund violet
#

I'm not saying "learn Rust/Bevy" by the way, just responding to earlier arguments. I know next to nothing about Godot but I think it's a better choice than MonoGame for C# because... well, because MonoGame. You'll understand very quickly once you try to use it.

dusty pollen
#

finding out how easy it is to transpile ternaries made me unreasonably happy

safe dragon
#

also, rust actually isn’t necessarily about writing perfectly memory safe code. It’s more that areas where there is a risk of memory unsafe behavior are explicitly labeled (and most are inside the engine itself generally with extensive comments explaining exactly why it’s still memory safe within the context it is used in despite requiring the unsafe keyword)

cinder karma
#

You: memory safety

rotund violet
#

(That said, the number of times I've seen crashes from code labeled "this is safe because"...)

cinder karma
#

Me: has a screwdriver

dusty pollen
#

do I want to know what happens if someone decompiles the resulting IL? no, probably not. But the transpiler itself is simple SDVpuffersquee

ivory shadow
#
// this is safe because i lied```
dusty pollen
#
// this is safe because trust me bro
cinder karma
#

I mean

rotund violet
#

I wouldn't go that far... more like "this is safe because I'm only looking straight ahead and ignoring everything off to the side".

cinder karma
#

unsafe really should be renamed trust me bro

ivory shadow
#
public trust me bro class Foo {```
dusty pollen
#

we should rename all class-related keywords in the same way. change private to

public please don’t look at this class Bar {
ivory shadow
#

I have to use unsafe a bit with my FF14 plugins and it always feels weird.

rotund violet
#

unsafe in .NET really just means "unmanaged".

Unsafe in Rust means... unsafe.

safe dragon
#

I vaguely remember reading somewhere that more than half of all uses of the rust unsafe keyword is to call C functions

rotund violet
#

I estimate, based on pulling the number out of my ass, that more than 80% of unsafe in C# is just to do pointer arithmetic without the index-checking overhead.

dusty pollen
#

wait since we were talking about python crime earlier… how many of you are familiar with how python handles/implements “private” fields KEK because it’s one of the funniest things I’ve ever seen

safe dragon
#

yeah though contrary to popular belief, rust does still do a lot of checks even in unsafe code. It’s not completely a lawless land

rotund violet
#

Yes, and of course Rust has the "bypass compile-time checks but we'll still nail you at runtime" workarounds that don't technically let you do the thing that you thought you were going to get to do.

ivory shadow
#

I know far too much about Python internals and you can't force me to remember I won't let you

safe dragon
#

there’s also a funky tool called miri that’s used almost universally in unsafe code heavy libraries to detect issues

dusty pollen
ivory shadow
#

Yup.

#

That infected JS too.

#

Since JS doesn't really have private stuff unless you abuse closures.

dusty pollen
#

which python makes “private” by renaming them to something else lmao

safe dragon
#

javascript hates privacy

crystal wren
#

Yes, continue, remind me why I dislike both of these languages. SDVkrobusgiggle

dusty pollen
rotund violet
#

There is privacy in JS, through inner functions.

ivory shadow
#

1 - "1" = 0
1 + "1" = "11"
quick maths

dusty pollen
#

the worst part is the fact that there’s a small part of my brain screaming “no that makes sense it’s because—“ KEK

#

though I have for the most part accepted that just because I know exactly why that happens doesn’t mean it should pffft

ivory shadow
#

It absolutely makes sense if you implement operators in an insane way

#

And some idiot in the 90s thought they were clever

#

So here we are

dusty pollen
#

why did they ever allow operators to cast based on the right argument pffft whose genius idea was that

cinder karma
#

Incidentally, I also believed I was clever in the 1990s

dusty pollen
#

I didn’t but that’s because I did not yet exist

ivory shadow
#

I probably did too, I was an annoying little shit back then.

#

But now I'm much bigger and also annoying

dusty pollen
#

I only started being an annoying little shit some time in the early 2000s (take the year 2000 and add a couple years for, like, sentience to develop)

sand frost
#

I'm not sure if I believed I was clever in the 90s, as it takes a decent amount of self-introspection to believe this on a conscious level

ivory shadow
dusty pollen
#

very fair

#

I was annoying from day zero actually, I made my mum have an emergency c-section

safe dragon
crystal wren
#

As a baby, I would apprently squeak instead of cry. I can only imagine I was the least annoying baby ever as a result, clearly.

rain apex
#

Most of this server didn't exist in the early 90s

dusty pollen
safe dragon
#

oh I'm aware...

ivory shadow
#

But what about ```js

{} - []
-0```

dusty pollen
#

please tell me that’s a real thing

crystal wren
#

I checked... it is.

dusty pollen
#

amazing

#

now I need to look up what tf they did to get negative zero

crystal wren
#

Ah, and {} - -[] is of course 0.

cinder karma
#

Technically speaking negative zero is a thing with floats

dusty pollen
#

makes sense, though also that being part of the float spec is upsetting

cinder karma
#

Like the little shit I am

ivory shadow
#

As an extra special bonus let me introduce you to this: ```js

Math.sign(-5)
-1
Math.sign(5)
1
Math.sign(0)
0
Math.sign({} - [])
NaN```

crystal wren
#

...

dusty pollen
#

javascript’s workarounds to its own stupidity are on another level. I explained what actually happened with leftpad to someone today and had to take a detour to explain why it was even necessary pffft

safe dragon
#

imagine trying to implement a Javascript runtime

dusty pollen
#

well, necessary is pushing it ig, but why there was a use for it

ivory shadow
safe dragon
#

oh good

crystal wren
#

That was the first thing I tried after that, which makes sense, of course.

safe dragon
#

I do like negative no sign

ivory shadow
#
> x = {} - []
NaN
> {} - []
-0```
#

That's why, anyways

#

So. Yeah. JS. You're welcome.

dusty pollen
#

wait, so is x NaN, or does the assignment statement return NaN?

#

and if x is NaN, wtaf is going on there

ivory shadow
#

I'll be honest I have no clue why {} - [] evaluates to -0 but attempting to use the value converts it to NaN

#

But it's consistent across multiple JS engines

lethal walrus
safe dragon
#

Javascript has a special case specifically for the letter x of course

dusty pollen
#

you joke, but there’s probably some kind of type casting being done to expressions but not variables or vice-versa pffft

safe dragon
#

undefined behavior hc_pensive

dusty pollen
#

99% of javascript is undefined behaviour

ivory shadow
#

Honestly, I think it's an edge case in the inspector

#

Where the number is invalid and the engine knows it's invalid but the inspector isn't catching that it's invalid, for some reason

#

It's just... yeah

dusty pollen
#

probably tbh. I still wonder why it’s evaluating it like that though. Maybe something to do with the implicit conversion to string it has to do in order to display it?

lethal walrus
# lethal walrus

hmm
both bun (javascriptcore) and node (v8) output NaN, NaN for this:

const x = {} - []
console.log({} - [])
console.log(x)

and if they're wrapped in isNaN(), both return true for both

dusty pollen
#

hmm. I assume you’re in a browser console, Khloe?

ivory shadow
#

Oh. Wait. I have a new idea.

#

The console might be interpretting the {} as an empty block, rather than as an object literal

lethal walrus
#

yeah spidermonkey does the -0/NaN thing in the browser console

ivory shadow
#

Then it'd effectively be just -[] which is -0

#

But when you do something like x = {} - [] then it's forced to treat it as an object literal

lethal walrus
#

no, if you define a variable as {} it does the same thing in the brwoser

dusty pollen
#

oh interesting, could be that. What does object() - [] do then?

lethal walrus
#

but (new Object()) - [] is always nan

dusty pollen
#

weird… why are browser js implementations always like this lmao

lethal walrus
#

oh..

#

({}) - [] is always nan

ivory shadow
#

lol this is even more broken

#

This is a fun one

#
> {toString: ()=>"3"} - []
-0
> x = {toString: ()=>"3"} - []
3 ```
dusty pollen
#

oh, oh god KEK

ivory shadow
#

So yeah, the console is incorrectly treating the object literal as a block

dusty pollen
#

someone teach js that sometimes throwing errors is a good thing SBVLmaoDog

ivory shadow
#

Well, I learned something about how the dev consoles work today, even if that something is terrible

lethal walrus
#

while we're talking about curly braces

const myFunction = () => {
    return
    {
        key: 'this is definitely a value!'
    }
}
console.log(myFunction())

guess what this outputs?

rotund violet
#

Object object or something

ivory shadow
#

undefined

lethal walrus
#

ASI works great!

ivory shadow
#

If return is on its own line, it returns undefined, because JS is nice and doesn't force you to use semi-colons

#

isn't that nice of it

rotund violet
#

Oh yeah.

#

Funny, I have actually carried over the "don't put return on its own line" to other languages but still don't see it when it happens. (That's why the rule)

dusty pollen
#

if we keep talking about js I’m going to end up remembering why I did a bunch of things using => lambdas wrapped in .bind(this) and I really don’t want to ngl

ivory shadow
#

Bonus ```js
const myFunction1 = () => {key: 'hi there'};
const myFunction2 = () => ({key: 'hi there'});
console.log(myFunction1(), myFunction2());

||`undefined {key: 'hi there'}`||
lethal walrus
#

that's actually a quite helpful realisation for when doing .map

dusty pollen
#

why does the first one not throw an error pffft

lethal walrus
#

because you can just do that

ivory shadow
#

Because labels

dusty pollen
#

…labels?

lethal walrus
#

it's the same reason svelte's $: {} is valid

#

you can label loops

ivory shadow
lethal walrus
#

so if they're within eachother, you can break/continue a specific one

ivory shadow
#

Honestly a great feature

lethal walrus
#

mhm

dusty pollen
#

oh it’s brand new

ivory shadow
#

Though in order to use it you have to convince JS devs to stop().chaining().methods().together()

dusty pollen
#

of course js implemented gotos in 2025 though, why wouldn’t it

lethal walrus
#

gotos always seem weird to me

dusty pollen
cinder karma
#

Gotos are how I program

lethal walrus
#

they're just functions that are more annoying when decompiling

ivory shadow
dusty pollen
#

I just don’t like how they mess with the flow of the code, though I’ve been told I naturally think about code in a very functional programming way

crystal wren
#

I have one goto in one of my mods. SDVpufferwaaah

dusty pollen
ivory shadow
#

It also says it's been supported since Chrome 1

dusty pollen
#

oh, one of those implementation quirks that are only now getting officially added to specs

#

this is why js devs have to use those massive compat tables pffft

safe dragon
#

Web devs gotta deal with this and then at the same time with css having a lot of features that you can't use because some random browser doesn't support it or does it wrong

dusty pollen
#

“some random browser” it’s IE, it’s always IE

safe dragon
#

no it's 2025

#

it's safari now

dusty pollen
#

I was about to say sometimes it’s safari too SBVLmaoDog

safe dragon
#

practically no one supports IE anymore anyway

rain apex
#

Government

ivory shadow
#

Okay I checked it was actually introduced to JavaScript in the 3rd revision of ECMA-262 circa December 1999

#

The first 2 revisions don't mention them.

dusty pollen
#

safari 🤝 IE
breaking 99% of js

safe dragon
#

I don't think our government supports it anymore for anything other than legacy systems that were already around when IE had to be supported

dusty pollen
safe dragon
#

I was already roaming around on this earth before Javascript got gotos

#

🙏

ivory shadow
#

I predate javascript, which means I could've theoretically somehow stopped this from happening and failed

crystal wren
#

I was roaming aound before JavaScript...

ivory shadow
#

I am sorry SDVpufferpensive

safe dragon
#

smh

#

we could've had Java in the web instead

ivory shadow
#

That'd be awful. Just imagine it. Oracle corporation would be trying to exert control of a trademark over the primary programming language of websites.

#

Could you imagine that

safe dragon
#

they'd never

rain apex
#

You only have scant few days to stop the person from making js

ivory shadow
#

(For those unaware, Oracle has JavaScript trademark'd even though they have literally nothing to do with it. https://javascript.tm/)

crystal wren
#

I vote we just abandon JavaScript (the name, though ideally the languge itself too).

lethal walrus
#

do we all move to wasm

ivory shadow
lethal walrus
#

to wasm or to python

ivory shadow
#

Yes

#

Actually, can you do memory management with wasm yet

lethal walrus
#

no idea

ivory shadow
#

Last I knew you couldn't unallocate memory once you allocated it

crystal wren
#

...what.

dusty pollen
#

literal patent trolls

ivory shadow
#

Yes, being a patent troll is basically Oracle's business model isn't it?

dusty pollen
#

yup. IBM’s too.

lethal walrus
ivory shadow
#

They stopped innovating software and started innovating licensing.

crystal wren
ivory shadow