#programmers-off-topic

1 messages · Page 29 of 1

rotund violet
#

Or if they did, that they didn't have actual hair in them.

sand frost
#

Yes SDVpuffersquee

#

Everything in my apartment statistically has a little hair, since my hair is very long and gets everywhere

#

But usually not my coffee

rotund violet
#

I like the "usually" qualifier.

cinder karma
#

Of course it does!

#

Compiled yarn

sand frost
#

Ooooh!

cinder karma
#

The compiler sucks. That took the better part of three weeks

devout vault
#

Maybe it needs optimizing

#

Have you tried building with -O3

cinder karma
#

I could learn how to knit continental

worn remnant
#

wearing several skeins held on to my body with needles and calling it a JIT

devout vault
#

Wait, I guess that'd be for runtime speed not compilation time

sand frost
worn remnant
devout vault
#

Like that's ever stopped me

#

Though it does occur to me that having bulk simple dialogue might be tedious with Yarn, needing a title for everything

#

...I could hybridize it with my SpaceCore content stuff though (especially since I recently separated the non-stardew stuff for it so I could do the language server for VSCode)

#

Something like:

// dialogue-pool.spacecore
[
  "Hello";
  Yarn( "
Character: meow
  -> A cat!
  -> A kitty!
" );
  Yarn( IncludeString( long-script.yarn ) ); // longer things could go in another file
]

Post processed into

// processed dialogue-pool.spacecore
[
  %( dialogue-pool.Character.1 );
  // I'm not sure if the following is the right Yarn syntax
  Yarn( "
Character: #dialogue-pool.Character.2.Character.1
  -> #dialogue-pool.Character.2.choice.1.1
  -> #dialogue-pool.Character.2.choice.1.2
" );
  Yarn( IncludeString( long-script.yarn ) ); // still in another file
]
raw pelican
#

ok so very dumb question, how do I actually use gitignore? I looked at nuget packages and got the VisualStudio.gitignore and added it to my solution and then... now what.

pliant snow
#

It's just a file that git looks at when it decides which files to consider or not. So each line is just a list of files (typically with wildcards) indicating which things you don't want git to add under any circumstance

#

So if you run git status you shouldn't see any of the matching files listed, even if they have changes

raw pelican
#

do I need to add a new item to the solution named that way or is it in the background when I use github desktop to upload?

pliant snow
#

I'm not sure about how the Visual Studio editor integrates them, but when you're using github desktop and go to add files to your commit, the gitignore'd files wont allow themselves to be added

raw pelican
#

ah on making a new repo it asks for the git ignore to use and there is not a C# one

pliant snow
#

uh

#

I assume that's just a template one, there's nothing language-specific about a gitignore. I think that would just add commonly ignored files for you, but idk

raw pelican
#

makes sense

raw pelican
#

found it, it's listed as VisualStudio in the git ignore list.

raw pelican
#

man I do not understand github. How to make a stardewmods repo and then folders inside it for each mod

rain apex
#

You never used git at all before?

raw pelican
#

just to put some R code, but I directly add the files and they're single files, didn't use a gitdesktop interface.

rain apex
#

I just do it on command line

#

First you create the repo with github web ui or whatever

#

Then you get a url u can clone

#

Something like this
https://github.com/Pathoschild/SMAPI.git

#

After cloning the repo to local u can put your files in there then add + commit

raw pelican
#

ahhhhhhh

#

I was trying to link an existing local folder to the web ui and it was not recognizing the stuff there

rain apex
#

Yeah u must clone Bolb

raw pelican
#

success! Is it better to work locally and then save everything, copy paste to the upload folder, or work off the upload folder?

rain apex
#

You work in the cloned git repo folder from now on

#

Commit and push whenever u got enough changes

raw pelican
#

will have to remember to not push while the project is bricked from whatever new thing I'm trying to add.

rain apex
#

Well the point of git/vcs is that you can go back to previous not bricked commit

raw pelican
#

that's true. I'm becoming a real programmer...

#

my org doesn't use git for SQL, they have their own version control.

rain apex
#

Better not be SVN

#

I had fren who used to work at place where their firmware code is a bunch of timestamped rar files on a ftp

timid breach
#

Just got recognized as a Mod Author on Nexus SDVpuffergasp

safe dragon
#

you're famous

safe dragon
#

not sure this is php but what do I know

crystal wren
#

This is just evil.

safe dragon
#

:gentoo:

safe dragon
#

but minecraft uses Java 21

#

wonder if I've ever actually watched a beginner's programming tutorial

pliant snow
#

I guess I have, but its more focused on some engine/platform keeping things very simple

lethal walrus
safe dragon
#

I guess in that way I have too

#

random videos about javascript frameworks that were going to change everything that I've never seen again

rotund violet
#

At least the official Rust book and tutorials are good old-fashioned text.

safe dragon
#

text tutorials are just so much nicer

#

especially when you're in the middle of developing

#

it's so slow to have to sit through a video version for an answer

rotund violet
#

No question. And with text I can actually search if I already know what I'm looking for.

#

For things that require interacting with physical objects, video is a godsend. For things that require interacting exclusively with text and symbols, video is a preposterous waste of time.

cinder karma
#

Elizabeth

#

I accidentally put earl grey in my coffee

#

I'm not convinced

#

What black tea did you use

rotund violet
#

You "accidentally" did this exactly one day after it was discussed here? Hmmmm.....

fleet wren
#

every coffee/tea fusion recipes I know of adds a(n un)healthy amount of milk as the great unifier
putting tea bags in coffee doesn't sound very appealing

sand frost
#

Also I do add both milk and sugar

#

I think I used English breakfast from Bigelow at the time, because it’s what was in the break room

cinder karma
#

Grumbles

#

I'm using bigelow earl grey because that's what we have

rotund violet
#

I don't drink it anymore, but seems to me that mocha is a tastier choice if you need that extra jolt of caffeine.

#

Maybe it'd be fun to attempt some unholy abomination of coffee, cocoa, guarana and the inside of a pep capsule.

cinder karma
#

Lol if I actually just wanted caffeine I do have caffeine pills

#

I'm just amused at this tea in coffee thing

regal ingot
#

idunno about plain black tea and coffee, but "dirty chai" is definitely a thing

fleet wren
#

coffee-flavored boba tea probably doesn't count, but that's a thing as well

#

now I made myself craving some boba

cinder karma
#

I make a really good earl grey truffle

fleet wren
#

can I have some

rotund violet
raw pelican
#

I love chai tea but have not tried dirty chai.

pliant snow
#

I shall treat this video as literal gospel

latent bough
#

maybe give it a watch first lol

pliant snow
#

Dont be silly

latent bough
#

That guy made a couple of videos like that

#

they give me a little bit of a laugh every time

gaunt wadi
lethal walrus
pliant snow
#

what do u mean older wtf

safe dragon
#

you're old

#

or at least older than a literal child

pliant snow
#

citation needed

supple ether
pliant snow
#

i expected them to make a cat obese in real life for this meme video

supple ether
#

It should be a bad photoshop of a crusty jpeg like god intended

lethal walrus
gaunt wadi
#

Babe wake up new crossword just dropped

safe dragon
#

ah they made is especially easy to read

#

I having to hold my head upside down to read the crossword clues

pliant snow
#

is this regex

#

is this hell

safe dragon
#

yes

pliant snow
#

i have never seen a backslash in regex before, thats concerning

safe dragon
#

you've definitely seen backslashes in regex

#

\d

#

\1 is a backreference where that part has to string has to be the same as the one found by the first capturing group

pliant snow
#

for some reason i thought those were forward slashes

#

i come from the alternative timeline where those are forward slashes

#

but everything else is the same

safe dragon
#

you're a regex professional

gaunt wadi
#

I come from the alternate timeline where dogs are all twice as big but everything else is the same

pliant snow
#

theres literally a regex bug in a helper script at work and I havent fixed it because I dont want to dive into what that regex is doing

safe dragon
#

I do not like using regex it is not a healthy relationship

pliant snow
#

I think its something like it needs to match 123 and 12x3 but not 123x, which its doing currently

#

maybe i'll be a good person and fix that today

safe dragon
#

I can write a regex which does exactly that for those specific 3 strings

pliant snow
#

that wont quite cut it

gaunt wadi
#

That crossword is like that one github project which bootstraps modern Linux by starting with a 512 byte hand written assembly program and no other compiled files ever in 165 steps

#

I think compilers are neat but 165 steps is crazy

safe dragon
#

165 steps is just enough for it to barely function probably

supple ether
safe dragon
#

write some code which automatically builds a gigantic regex string with every possible allowed string

supple ether
#

That sounds like a recipe for an O(don't ask) algorithm

safe dragon
#

O(1) but it's a horribly slow O(1)

#

tangent but gotta love when people treat time complexities like the holy grail of optimization and will not question it

supple ether
#

Yeah for sure

#

Especially when it's code that's unlikely to scale

safe dragon
#

my super incredible O(n) algorithm that will never be run on a list longer than like 5 elements

cinder karma
#

(1 = heat deaths of the universe)

cinder karma
#

"Oh my fucking god"

supple ether
#

I've also heard of O(no)

supple ether
safe dragon
#

sleep sort

supple ether
#

lol

safe dragon
#

I've been a victim of the time complexity is better so it must be better trap

#

coping when it only becomes faster at like 100,000 elements

supple ether
#

Lol

rotund violet
#

It might not be the holy grail, but you'll be reminded how important it is every time you run an unindexed SQL query that takes 7 minutes and see that "nested loops" in the explain.

supple ether
#

I just wish there was a better way to attach extra data to existing objects than some form of hashmap. They may be O(1) but doing lots of hashes every frame seems like a bad idea for performance

safe dragon
#

custom specialized hashing functions are sometimes the solution

supple ether
#

IDK what ConditionalWeakTable uses but hopefully it's at least somewhat optimized

safe dragon
#

I have no idea what that is so I'm gonna go with yes it's the fastest ever made

supple ether
safe dragon
#

everything is an object and when it comes down to it it is also a string

rotund violet
#

It does solve your problem, though. You can just add anything to anything.

#

And I suppose I mean that in both senses of the word - adding properties and literal addition operators.

supple ether
#

It does do that, but I wouldn't use js for performance sensitive stuff

safe dragon
#

javascript gives you unlimited power to fuck shit up

safe dragon
rain apex
#

i vote javascript for president

supple ether
#

Can't wait to make games with ReactPyNative in 2026

safe dragon
#

in the eyes of president javascript we are all just objects

#

I had to look up ReactPyNative just in case it was a real thing

rotund violet
#

I looked up ConditionalWeakTable out of curiosity and it appears to be just hashing.

supple ether
#

The fun thing about arrays also being dictionaries is that you can use them as bidirectional maps if you're a crazy person

safe dragon
#

it doesn't use GetHashCode however according to the docs

supple ether
rotund violet
#

The main reason to use ConditionalWeakTable, I think, is to avoid leaking the objects, not for performance.

supple ether
#

Yeah I mean obviously

rotund violet
#

Unless RuntimeHelpers.GetHashCode has some special optimization but... I doubt it.

cinder karma
#

Yeah, you can't get around it for modding tbh

safe dragon
supple ether
#

I just wasn't sure if it used an alternate hash method because of the specific nature of the keys

rotund violet
#

Since it's generic on TKey, that would be hard to do, but maybe it's an "identity hash" (i.e. ignores custom GetHashCode and just takes the object hash).

#

It's a valid way of hashing object identities, to just take the literal pointer.

cinder karma
#

Yeah

#

Sorta

#

There is an identifier for the GC

#

Known as the sync block

supple ether
#

I don't think the architecture of c# allows you associating objects with arbitrary data outside of hashmaps and maybe the DLR

rotund violet
#

Well, I'm just assuming it's analogous to Java's System.identityHashCode

supple ether
#

I suppose that would be one advantage of using an ECS. Would be a lot easier to glue things on

rotund violet
#

It is pretty nice, although believe it or not it's not always entirely free in an ECS either. At least not in every ECS; the strongly-typed ones usually are based on "archetypes", so any time you use a combination of components that hasn't been used before, you incur a penalty.

supple ether
#

Theoretically there's also the secret third option of ilhacking

cinder karma
#

The heck is an ECS

rotund violet
#

Entity Component System - you know, game design?

cinder karma
#

Nope!

supple ether
#

It's a design paradigm that emphasizes composition over inheritance by breaking functionality into groups of components

rotund violet
#

The general idea is not to worry about adding/removing components if it's on a few dozen entities at a time, but dynamically adding/removing components on millions of entities every frame is a recipe for jank.

#

Yeah, the driving force behind ECS is that systems are almost perfectly parallelizable, and components are generally independent, so overall you get way better performance than uh... well, Stardew.

cinder karma
#

Huh

rotund violet
#

Have you ever noticed how most games just chug along on one thread, missing frames while 99% of your system capacity remains idle?

cinder karma
#

My brain had it categorized as "arena allocator but like how game devs do it"

rotund violet
#

The allocator is part of it. The "entity" part of ECS is usually just a generational ID.

#

(also a really cool concept once I learned about it)

supple ether
#

It's a cool idea, and great for certain types of games, but less good for others

cinder karma
#

There is a talk about a rust UI lib that uses ECS

#

That I wanted to go through

#

But it had tree pruning issues

#

Ie, you could never delete a node in your UI

supple ether
#

Hm

rotund violet
#

I think Bevy UI is trying to be that library.

#

They may actually succeed, if given a few years and a lot of persistence.

#

Since they already have a functioning ECS hierarchy model/API.

cinder karma
#

Trees can just be fun and games in Rust in general

rotund violet
#

Having hierarchy in the ECS helps, the main disadvantage is that you can only define one hierarchy.

#

Which sounds like no big deal, but you'll quickly get into situations where the physical worldspace/geometry hierarchy just doesn't match the "logical" one.

#

It's not done yet, but they are trying to add "relations" for this purpose and have made some progress.

supple ether
cinder karma
#

Day 7 nearly killed me

rotund violet
#

When it comes down to it, ECS is kind of just a really fast in-memory database. If you plan around that, it makes sense, and gets around a lot of the irritating Rust-specific issues.

#

Which year's Advent?

cinder karma
#

2022 I think?

safe dragon
#

advent of code 🙏

cinder karma
#

Day 7 wasn't conceptually hard I was just new to Rust and had to do a tree

safe dragon
#

trees are fairly easy in rust

#

well

#

if you only need to traverse downwards...

#

rust enums are great for that

#

else you're gonna end up in the land of refcell

rotund violet
#

The canonical solution is just the arena style, no?

#

Yeah, you want to have any notion of "parent" and it's Arcs all the way down.

#

The most popular implementation is something they called a slab tree, and I still don't really know what that is. Maybe I thought I understood it at the time, but clearly the knowledge didn't stick.

safe dragon
#

I have no idea

cinder karma
#

On the 7th bit of rust I ever wrote

safe dragon
#

I'm sorry

#

I tried to write some custom multithreading code in rust as one of my first things and I went nuts with Arcs everywhere

rotund violet
#

I've run into cases legitimately needing refcell but also a lot of cases where I just needed to rethink the problem and didn't actually need it.

#

We're just used to writing non-rust code where those kinds of references are free and easy.

#

(My point being, if you try to write OOP in Rust, which literally all of us do when starting out, your life will be hell)

cinder karma
#

(That was the trick to day7)

#

(You could do it with two vecs)

#

But I found that out after the refcell hell

safe dragon
#

can't expect some fucked up stuff in AoC till later

devout vault
#

I'm using an ECS for one of my game projects, though it's not doing any threading

safe dragon
#

you're using arch

pliant snow
#

btw

rain apex
#

why did they name it that arch could be so many things Thqnkqng

safe dragon
#

presumably cause it's an archetype based ecs

#

I'll take it over calling it cecs or something

rotund violet
#

Haha, I guess it depends how you pronounce the "c" but I read it as "keks" which would be an awesome name.

sand frost
#

Arch is definitely a Linux flavor and not much else to me

cinder karma
#

Arch is a part of a circle SDVpufferthumbsup

safe dragon
#

it's also usually a build flag for compilers...

cinder karma
#

I really need to get around to telling git some of these file types don't need the lf/crlf right

latent bough
#

couldn't even try to justify it

cinder karma
#

I have audible tokens to spend

#

What books should I buy

#

I like scifi

marble jewel
#

I've been consumed by new hobbies

sand frost
#

Two new hobbies or one interconnected one?

ivory shadow
#

Looks like an expensive hobby

cinder karma
#

Just 3d print at work, ez

sand frost
#

Ez for me lol

#

Less depending on your job

marble jewel
#

3d printing is one hobby, and rackmounting my pc and networking gear is another

#

I went from my janky system to a more "proper" one

#

The hobbies go hand in hand though because 3d printing (and rackmounting) has helped me achieve my overall goal to get things more organized

rotund violet
#

What kind of home network needs that amount of gear?

#

Are you running a little side business?

marble jewel
#

Every kind if you try hard enough SDVpuffercool

#

Really though, a lot of this stems from an earlier hobby of trying to host my own services at home rather than depend on "the cloud"

rotund violet
#

Ah yes. A noble goal, if you can afford a static IP and redundant internet connections.

rain apex
#

do you need static ip just for intranet stuff?

marble jewel
#

You don't even need a static IP. I use a mesh VPN network

#

So my devices can all see each other no matter where I'm at, but none of it is visible to the public internet

#

PROJECT: ORGANIZE - A story in three photos. Shelves, bins, and 3d printed parts.

#

One upside to self-hosting is that if my home internet is down, and I'm at home, everything still works as intended. One downside is if my home internet is down, and I'm away from home, then nothing works as intended.

cinder karma
#

Lol

#

I'm a pen and paper person

rain apex
#

sounds like you need a sysadmin at home

marble jewel
#

Really it only goes down if my ISP is down or my house is experiencing a power outage. Otherwise, I'm able to remotely fix issues.

rotund violet
#

Sounds like your next project needs to be a whole-home UPS with a huge battery bank and solar backup.

marble jewel
#

I'm trying to find a way to do a wan cutover to my cell phone service if I ever experience an outage from my primary ISP.

rain apex
#

what kinds of services are you hosting?

marble jewel
#

Oh, I already have everything on UPS, but it really only gives me an hour to shutdown everything properly before they are forced to shut down.

#

Although, having whole house battery backup and maybe solar would be a nice future project to help save me from that.

rotund violet
#

I did that a few years ago, not really a big deal, just grab an LTE modem and put it behind a router with LB/failover?

marble jewel
#

Yeah, that's what I was thinking of doing. Only problem is my whole network setup is in a middle room in the basement so it's probably the worst room for cellular reception.

rotund violet
#

Time to run some some CAT6.

#

You might also be able to get away with a really, really long antenna/cable on the LTE router.

marble jewel
#

I have another room that is wired for ethernet which is more ideal, but I just have to figure out how to get it all working when the connection is coming back from the switch.

rotund violet
#

(And by that I mean long enough to end up in a different room entirely)

marble jewel
#

If I had the foresight for wanting to do that, I'd probably have setup an extra ethernet port in one of the upstairs/outer rooms specifically for this purpose, but I only recently wired this house up and only terminated three connections.

rotund violet
#

Home networking would be so much easier without pesky walls and ceilings.

marble jewel
#

I should've gone with the conventional knowledge. Wire every room up because you never know when you'll want it.

rotund violet
#

I don't have this place wired, but if I do, it's definitely going in every room, plus the garage.

marble jewel
#

My house is on the old side, so it wasn't easy to deal with. I hired professionals to do the install, and limited the job to save some money.

#

Kind of regret not going all out though because I have a feeling that in the next few years I'll probably end up hiring them again to do the rest.

#

Anyway that's a future me problem.

marble jewel
# rain apex what kinds of services are you hosting?

A few things I host myself -
DNS
LanCache
RSS Aggregator
Password Vault
Bookmarks
Document Scanning
Roms
Books
Comics
Movies/TV
Music
Audiobooks/Podcasts
Photo Backup
File storage
Security camera storage
Git Repository
Image Hosting (for sharing)
Game streaming (via Moonlight/Sunlight)
Game servers

#

And actually, what really started this obsession is that Google discontinued Google Reader, the alternatives didn't meet my needs or were paid for, so I looked into DIY/self-hosted

cinder karma
#

I kinda want to have solar and go off grid

marble jewel
#

When I was house hunting, I found what could have been the perfect house for that, but it was a bit too off-grid for me

#

The water supply was provided by a well, it had a septic system so no city sewer. Solar could've made it independent of the electric grid.

#

But I need my reliable internet connection, and as far as I'm aware the best option for that house would have been satellite.

#

I guess depending on internet may defeat the purpose of being completely off grid

fleet wren
#

USB drives via carrier pigeons? Depending on where you live that's faster than usual internet speed

#

though come to think of it I guess you still need people to receive, process and return said drives

rotund violet
#

Off-grid doesn't necessarily mean you forego internet, although satellite is probably more common than wired internet.

cinder karma
#

No internet sounds fun kinda

magic wind
#

It can be, definitely if you organize your affairs for a short while and it's not blindsiding you

#

I've gone off grid for weeks at a time and it can be so relaxing, being hit by an island wide blackout in the middle of a really busy time however...

cinder karma
#

I've dreamed of hiking one of the long trails one day

#

Just three months. Alone.

cinder karma
#

I assume whomever programmed kicad's autoplace feature decided on "randomly on board" as the algorithm

#

Seriously smh

safe dragon
#

is that not desirable

cinder karma
#

Lol

#

I'm actually giving it a very easy problem but I think it doesn't have an idea of what "ground plane" means

#

The parts I asked it to place are simple resistors, connected to a pin on one end and disconnected on the other. (I have placed the other parts already.)

#

(If you want to know why we would do this, it's so we have something to solder to if we want to revise the design. This is common practice.)

#

So basically just asked the program to vaguely land these resistors near the chip they correspond to

#

Kicad instead decided to sprinkle them everywhere

safe dragon
cinder karma
#

Oof, looking at open source software last updated in 2004 lol

crystal wren
#

The new display cometh. SDVpuffereyes

pliant snow
#

woo!

#

what did you get

safe dragon
#

1 USB port

lethal walrus
safe dragon
#

no

cinder karma
#

Work has spoiled me with giant screens and now I want that setup at home

safe dragon
#

I got that setup at home before work

cinder karma
#

Where I can enjoy raging at the vpn

crystal wren
cinder karma
#

Is 120hz worthwhile for normies

#

(I feel like I would rather have 30hz and no lag vs choppy trying to reach 120hz)

#

But I'm thinking cad software

crystal wren
#

I'm going to be doing nothing but desktop and development stuff on it... hell, that's all I really do on my main system nowadays, and my screens are 144 and 160Hz respectively.

cinder karma
#

Not video game

crystal wren
#

I won't want to go back to 60 now.

cinder karma
#

Oh, wow

safe dragon
#

I don't really care about 120Hz myself but I will still likely get that screen once I order my framework laptop

cinder karma
#

I'm not sure I can reliably tell 30hz from 60hz

safe dragon
#

I cannot tell my 144Hz display and my 60Hz display apart unless I intentionally try to pay attention to it

#

the 144Hz one is actually the older one. I just didn't care to get another high refresh rate one

#

it seems to make a big difference to some people though

crystal wren
#

I'll 100% be able to adapt to 60Hz only again fairly quickly if I don't have any exposure to 120+ for sure, but when I'm currently used to higher...

safe dragon
#

yeah you can clearly tell better than I can

crystal wren
#

And that's definitely not a benefit!

safe dragon
#

from what I understand the 2.8k one is also just more color accurate and generally better quality which I do care about

crystal wren
#

Yeah, just notably higher resolution, better colour, etc.

pliant snow
#

@gaunt wadi The next leap in human evolution

safe dragon
#

I'm waiting to order mine till they hopefully release a new motherboard option with the new ryzen 300 mobile chips

pliant snow
#

its been at least a year since they refreshed the AMD chips right

safe dragon
#

that's around the age of the chip at least

#

so it can't be more than that

#

the processor was released in may last year

#

the ryzen 300 ones are a pretty big step up tho and I am not in a rush at all so I will wait

sand frost
#

I do not parse the refresh rate of monitors ever, at all

#

Unless I'm working over VM and it's like...5

safe dragon
#

I can deal with 30 as long as it's a stable 30

#

when I edit photos on my pc I edit my photos through some incredibly slow barely functioning windows vm

cinder karma
#

I've been in CAD land the last two days

fleet wren
#

it's definitely mostly only relevant for Real Esport Gamers like me

safe dragon
#

launches runescape

#

a game with a tick rate of 100 per minute

fleet wren
#

(or if you have a blinged out Linux desktop with 2000s era desktop effects also like me)

#

what's that meme about building a $3000 gaming PC only to exclusively play SDV and Terraria

safe dragon
#

that meme would be me if I could ever make myself spend that much money on a pc

#

if there was anything i'd change rn about my desk setup it's a new chair cause my current chair has the very minor but irritating issue that the seat slowly goes down over the course of a week or so

#

so I have to readjust the seat

#

a true first world problem

#

for all I know I just gotta tighten a screw somewhere

rotund violet
#

120 hz (actually 144) is fairly noticeable, if I pay attention I can tell just by visually tracking the mouse cursor.

#

It's somewhat less about "frame rate" at that point as it is about "input latency". Your eyes can't easily tell the difference but your limbs can.

#

But it is mainly a gaming thing, and it's also quite demanding on the CPU, not just the GPU.

cinder karma
#

Yeah, I'm not sure I can tell when it comes to CAD

rotund violet
#

I doubt it. The point of higher frame rates - with the exception of VR which really does need to run at a higher framerate like we were talking about the other day - is that the game loop is per frame, so more frames = more responsive.

cinder karma
#

I can tell when the software degrades to 5hz but like I feel 30 would feel fine to me

#

I suspect the difference is that I inherently slow down when I need precision

rotund violet
#

30 = minimum to perceive continuous motion
60 = minimum to perceive fluid motion
90 = minimum for accurate head tracking

Everything above that, at least in today's world, is just reducing input latency by adding more message loops. And obviously running a monitor at 144 Hz refresh rate with a game producing only 60 fps output will do absolutely nothing useful, in fact it's actually worse unless you're using adaptive sync.

cinder karma
#

(I suspect Elizabeth, like I, think of computer setups for two conditions: CAD, and simulations)

#

Maybe I'll play a computer game again in 2026

#

(Doubts)

sand frost
#

I’m sure I’ll play a computer game before the year is out

#

But yeah, I care a lot more about CAD and sims

rotund violet
#

Last time I touched CAD was about 20 years ago and we were lucky to get "frame rates" of 2 or 3 per minute.

tranquil grove
#

(same, but also this was the CAD SDVpuffermlem)

cinder karma
#

What is that?

tranquil grove
#

a home building program I had as a kid, win 3.1 I think?

#

very rudimentary 3d building stuff, just slapping models and textures on a lot

fleet wren
#

semirelated, but here's a fun game for CAD enjoyers who want to feel like they're working while gaming:
https://store.steampowered.com/app/504210/SHENZHEN_IO/

Build circuits using a variety of components from different manufacturers, like microcontrollers, memory, logic gates, and LCD screens. Write code in a compact and powerful assembly language where every instruction can be conditionally executed. Read the included manual, which includes over 30 pages of original datasheets, reference guides, and...

Price

$14.99

Recommendations

3279

▶ Play video
heavy daggerBOT
#

Title result: SHENZHEN I/O on Steam

tranquil grove
#

think I stopped halfway into the endgame/postgame stuff of that one SDVpufferdizzy
very fun though

safe dragon
#

for the true shenzhen experience you'd also have to deal with insane housing prices

fleet wren
#

I love the PDF manual, which is utterly realistic, including a full page of untranslated Chinese instructions

safe dragon
#

go be fair... you are in China in this scenario

cinder karma
patent skiff
#

Same here. I play SDV because my day job isn't farming.

fleet wren
#

lol I get what you mean, the difficult postgame puzzles definitely feel like actual real world projects that you have to build fantasy circuits for
(partly why I like Opus Magnum more, being a fantasy steampunk alchemist > being a rockstar CAD engineer in Shenzhen, China)

#

(they even have budgets requirements!)

rotund violet
#

Wait, are we talking about LTSpice and the like as being CAD? Which I guess technically does fit the literal definition, I was just thinking of AutoCAD and other mechanical-design type stuff.

#

If it's CAD for PCBs and stuff, then I think frame rates matter even less, like why would you even care about that.

sand frost
cinder karma
safe dragon
#

the third dimension isn't real

#

interstellar made it up

#

I thought my ipad had suddenly stop recognizing my sdcard but as it turns out I was plugging in the dongle without an sd card in it

#

being used to linux makes it feel incredibly wrong to just download some random ass exe installer from a website on my windows vm

rotund violet
#

I kind of like the mac model, where you still can download random installers but you get to set permissions on what they can actually do. Though the perm prompts can get excessive sometimes.

gaunt wadi
#

I just set up my door sensor to turn the lights on now that it works with the new dongle

#

great minds think alike

pliant snow
#

Oh ho ho

gaunt wadi
#

ive been doing a bunch of HA automation config with all the buttons, and it works but isn't particularly nice to use

#

i think i finally understand the appeal of node red

#

assuming it just makes it easier to wire things together

#

put another way: it's a great ui based tool for configuring automation, but as soon as you have anything non trivial i want a more powerful editor that isn't a straight leap to editing yaml

pliant snow
#

Yeah, last i used it, you had to reboot the whole HA server everytime you made a change

gaunt wadi
#

oh, you don't need to do that anymore

pliant snow
#

Nice

#

I still much prefer nodered, even if doing simple things like conditionals is a pain

gaunt wadi
#

do you have to use the zigbee + mqtt plugin with it?

#

it looks like it's a separate service that can be used without HA if you so pleased, and so mqtt is the glue that binds them?

#

I use zha directly rn

pliant snow
#

Yeah, I dont use zha anymore. The zigbee2mqtt runs as a separate server instance that forwards zigbee signals to MQTT (and a MQTT server is also running). nodered then just listens for MQTT signals and processes those and sends out other MQTT signals if needed. Nodered does have a HA plugin to interface with those items if needed

#

A lot of stuff goes thru MQTT now

#

One of these days i should make a diagram...

pliant snow
#

I have made a diagram

safe dragon
#

love me some 433 megahertz

cinder karma
#

Someone make me the "code is compiling" meme but with "SharePoint is loading"

lethal walrus
pliant snow
#

Its a robot vacuum. Even then, the only feature it really needs wifi for is so i can have node red automatically run it each morning. I could walk over to it and manually start it

lethal walrus
#

Ahh

safe dragon
#

I don't really know what SharePoint actually is and I get the impression it should stay that way

#

all I know is that it has something to do with file sharing in some way

#

but presumably offers something beyond that cause else you'd just set up an smb server or something

lethal walrus
#

Some office thing

pliant snow
#

sharepoint is more or less the Microsoft office web

rotund violet
#

I'd probably describe it as "CMS from before developers understood how to do CMS"

#

Like, think of the worst WordPress installation you can imagine, with a bunch of plugins that are half-broken on a good day and wildly incompatible with every other half-broken plugin, and then take all the problems you'd run into with that and multiply the pain by a factor of 10.

cinder karma
#

I wouldn't hate it so much if the scope was smaller and it bloody worked

#

My issues with it really stem from it being dysfunctional

rotund violet
#

That's corp life for you. "We spent $4 million on this product and come hell or high water we are going to use it." Everything that possibly could be in SharePoint, shall be in SharePoint.

pliant snow
#

I have never once gone to share a Sharepoint document and had it actually have the right permissions to the people I've sent it to. Even marking things as "anyone in the company can access" it just doesn't listen

rain apex
#

Is sharepoint like google docs

pliant snow
#

basically

sand frost
#

More like google drive but yeah

#

It has integrated (bad) PowerPoint and (normal?) excel, maybe also word but I haven’t tried. You can also use it to store random other files.

#

The integrated online PowerPoint cannot handle any kind of slow internet at all

#

I can type faster than it synchs and I am not a particularly fast typer, and then it glitches and undoes your work

#

The excel equivalent didn’t do anything terrible to me but I also didn’t use it much

#

There’s also a government version of sharepoint that’s like if you took away all the UI parts of it

rotund violet
#

Why do C# tuples have to suck so much? I can't believe I still can't write Select((foo, bar) => foo.whatever) after all these years. Even JavaScript can do this.

#

I understand that maybe they just ran out of time to implement back in 2017, but c'mon, you've had seven years since then...

pliant snow
rain apex
#

is the door sensor giving false positives

pliant snow
#

I think? I need to add a debug item to it

supple ether
#

Though it might work if you put inside an additional set of parentheses? I've never tried that

rain apex
#

does c# have splat operator

#

* and **

supple ether
#

splat?

cinder karma
#

No. Yes. Maybe

#

Kinda

rain apex
#

its a thing in python and ruby for arguments

#

maybe some other langs too

cinder karma
#

*args and **kwargs no

#

You do have params

supple ether
#

C# has variadic methods of that's what you're asking?

rain apex
#

ah yea close enough DokkanStare

cinder karma
#

And list deconstruction

#

Span<> params my beloved

supple ether
#

Yeah newer versions of the language have a spread operator for collections it's fun

#

It just compiles to addRange but it's still cool

supple ether
cinder karma
#

My day to day life is without c# now

supple ether
#

It gives you a writable char span and then turns it into a string in-place after you're done with it

cinder karma
#

I have become "retired modder yells at unnecessary allocations."

rain apex
#

oh is it like fancy string interpolation

cinder karma
supple ether
#

And I appreciate you for that atra

supple ether
cinder karma
#

What's sts?

supple ether
#

Slay The Spire

cinder karma
#

Ahhh

supple ether
#

The save files are json, converted to base64 and then xor'd with KEY on repeat

cinder karma
#

Tbh I'm sufficiently tired that at this point if I see a video game before the year 2030 it might be too soon lol

rain apex
#

why did they do that

#

r people cheating in sts Thqnkqng

supple ether
#

Presumably to prevent people from editing them like I do

#

IMO you can't cheat on it because it is singleplayer

#

Tho TBF it is very easy to fuck up save files while editing them manually so it could just be that they don't want people tampering with save files and accidentally corrupting them

rain apex
#

yea i wonder why they went out of their way to make editing harder monS

#

when the only place to cheat is like speedruns

supple ether
#

Not a clue honestly

#

I only edit my save files to fix mod crashes though. I could cheat but like... The fun of a deckbuilder game comes from Building The Deck. If you just cheat everything in, what's the point

rotund violet
supple ether
#

Ref and out are completely different things than var

#

Neither of those makes sense to do inline decomposition

rotund violet
#

In a sense, I guess. You literally have out var.

#

Why wouldn't it make sense?

worn remnant
supple ether
#

Var is the same as a type declaration, it's not a parameter modifier

rotund violet
#

And out var is also the same as a type declaration, it replaces out Foo.

supple ether
#

Out and ref use adresses, and not actual value. Decomposition is an implicit method, so you can't really reverse that to get addresses back out of it

rotund violet
#

We're into the territory of nitpicking technical reasons for not implementing a feature people want. I can understand it; I've been there myself more than a few times. But where there's a will, there's a way.

supple ether
#

If you asked it to do a ref decomposed parameter what do you actually expect it to do

rotund violet
#

There's no logical reason why I shouldn't be able to write dict.TryGetValue(key, out var (foo, bar)) until we start getting into the obscure BCL/MSIL stuff behind it.

#

It's a tuple. C# understands tuples and knows how to deconstruct them. It just doesn't want to do it in that spot.

supple ether
#

that's a good enough reason for me ¯_(ツ)_/¯

rotund violet
#

It could allocate a single tuple object, pass it as a reference, and deconstruct it. It just doesn't want to.

supple ether
#

Computers aren't magic

rain apex
#

but that seems like it would make new tuple

#

which is bolbwaitwhat with out

worn remnant
rain apex
#

idk anything about the internal workings here, just speaking on what the syntax looks like intuitively

rotund violet
#

I'm not buying it. Because it involves boxing, it's not allowed? There is tons of implicit boxing.

supple ether
#

Well, roslyn and the runtime are both open source. Be the change you want to see IG

rotund violet
rotund violet
worn remnant
#

i don't agree with your equivalence. syntactic sugar i often find makes code harder to reason about, hence the big argument we are having about it

rotund violet
#

Much like anything Google puts out, C# is "open source" in a very narrow legalistic sense and not in any meaningful practical sense.

supple ether
worn remnant
#

(not to mention things supported even in old, barren languages, like nesting ternary operators and other stuff that makes programmers feel smart for writing "one-liners" but makes it difficult for people like me to keep in my head)

rain apex
#

i think this case is bit to ambig to be valid syntatic sugar

#

maybe if they make up a new keyword

#

outboxed or something

supple ether
#

Frankly I think it's a solution looking for a problem

rotund violet
#

Yes, having a feature work consistently is a solution looking for a problem.

supple ether
#

I think you just like complaining

rotund violet
#

So what would be the point of adding to to the chorus?

worn remnant
rotund violet
#

I don't have this problem in other languages. Deconstruction/destructuring works as expected in Rust, in TypeScript/JS, even Python. Only C# is inconsistent about it. I don't like complaining, I like it when I don't have to do weird hacks to work around language limitations.

#

I suppose Kotlin's support is about as simplistic as C#. But Kotlin is JVM and doesn't have real tuples.

supple ether
#

"weird hacks to work around language limitations" describes every programming language that ever has and ever will exist. If c# is not a good fit for what you are doing, use something better suited to your project

gaunt wadi
#

Proton added an llm assistant button to their mail app

#

stop it 😠

fleet wren
#

gotta chase that bag it seems

#

the crash's coming any time now right

rain apex
#

When are you making your own mail service

#

Organic 100% llm free

safe dragon
#

and no one is selling their emails presumably at least

fleet wren
rain apex
#

Where's your kickstarter

fleet wren
#

You can put 5 dollar in a bowl and leave it outside overnight

safe dragon
#

the first 5 to do so will get access

#

for the rest the money will still be taken but no access will be given

pliant snow
#

proton has been going in a lot of random directions lately

gaunt wadi
crystal wren
#

That's a weird decision for something like Proton, whose entire business model is privacy.

safe dragon
#

they made sure to only train the model on your private emails

#

cause that makes it private

paper sapphire
#

okay so what would I do if a python script like, looks for a directory totally unrelated to its intended use that doesn't exist and then refuses to run, I make the directory, and then it just won't run?

lethal walrus
#

is this for ja2conpat

paper sapphire
lethal walrus
#

that's horrifyingly ontopic for here /hj /lh

paper sapphire
#

Yeah I did uh, post there. It got buried instantly

rain apex
#

people really dont play stardew in this channel AnnelieStare

#

you should just ask again if you feel the question is not answered, nothing wrong with that

paper sapphire
#

people actively participating in the stardew discord don't play stardew?

lethal walrus
#

not in here

rain apex
#

i think this channel is about home automation

devout vault
#

And rust

rain apex
#

and complaining about languages you dont like

lethal walrus
#

and javascript!

paper sapphire
#

bbcode is okay

marble jewel
#

Speaking of home automation. I have smart blinds now, so my alarm clock is the sun. Which will last for another month or so before the 10 months of doom and gloom hit the pacific northwest.

cinder karma
#

Enjoy

#

I am considering speed knitting a hat so I don't freeze to death at work

lethal walrus
paper sapphire
marble jewel
cinder karma
#

Today is a day I hate filesystems

ivory shadow
safe dragon
#

every day I use my ipad I hate filesystems more

#

or at least one specific file system

cinder karma
safe dragon
#

why a <

#

oh it's a forbidden character on windows

#

how do you have a file with a < in it

pliant snow
#

<3.txt

safe dragon
#

windows blocking you from having kaomoji file names

supple ether
#

oh I had a bug based on unix/dos file name differences

#

there was some bit of software I was getting in .zip releases off github and although the zip seemed perfectly valid, extracting it yielded... nothing

#

I later discovered it was because the filename contained characters that were legal on linux but treated as path/special characters on windows, so when I extracted it the file just... vanished into the ether

rain apex
#

like :?

supple ether
#

I don't remember, let me see if I can find the old bug report I made for it

#

okay yeah

#

the file name started with ..\

rain apex
#

that seems kind of illegal on unix too bolbphase

supple ether
#

are backslashes illegal on unix? since it uses forward slashes for path separation

#

it could also be whatever utility they were using to zip/unzip the file

gaunt wadi
#

which blinds did you get?

#

also the summer has been long and hot this year imo

#

very enjoyable

marble jewel
gaunt wadi
#

📝

#

roller? cellular? something else?

marble jewel
#

Had a few hiccups, but mostly due to self-induced problems like not taking precise measurements across my entire window opening

#

It turns out my house has some slants. Measurements at the top aren't the same at the bottom of some openings.

#

All of the blinds I'm using are their dual blinds so I have the option of blacking out a room or allowing light in while still having privacy.

#

Another "automation" I have is when I'm watching a movie the dark blinds automatically close and my lights dim

cinder karma
#

Blinds seem fun

gaunt wadi
#

oh ho ho

#

that sounds really cool!

#

I didn't know dual blinds were a thing, I was just going to choose between blackout/non-blackout

#

my windows are too large in my current apartment, but i plan to do this in my next one

#

please update us on how you like them as time goes on!

fleet wren
#

(in other words, illegal and punishable by jail)

rain apex
#

its the .. that feels weird, cus it's "go 1 level up in folders"

#

y did they zip this way

supple ether
#

I have no idea

#

and yeah I think it was the fact that windows interpreted it as directory climbing that made it vanish into thin air when extracted

cinder karma
#

I love inlining

#

Compiler being tricksy is always fun

#

(I say this with full sincerity)

safe dragon
#

inlining is some magical stuff

#

compilers in general are fascinating things

#

when I check the assembly only to realize it optimized away half of everything I'm doing

pliant snow
#

Time to give Floorp a try

#

will its stupid name turn off everyone, yes, but ive still heard good things

safe dragon
#

using Floorp on Pop!_OS

#

the holy combo of terrible naming

next tulip
#

Or just use Brave 🦁

pliant snow
#

idk if I've heard of zen

lethal walrus
#

is zen that browser thats like arc but firefox

marble jewel
#

My browser of choice is Waterfox with the arkenfox user.js

supple ether
#

I use Firefox mainly, but I also have Pale Moon and Min

lethal walrus
#

i really should install a second browser, that isn't edge

supple ether
#

Fuck edge.

fleet wren
#

enough with the twelve thousand forks just use firefox with extensions like normal people raaaah

#

(for legal reason that was a joke. Use whatever browsers you want)

#

(as long as it is Firefox)

floral parcel
#

I usually use firefox. I used to use a browser called pale moon a long time ago.

cinder karma
#

Just for you I'll go launch internet Explorer

#

Also, maybe Opera

floral parcel
#

Internet explorer was like one of the last browsers to support java applets if I recall correctly.

rotund violet
#

Java applets, that takes me back. Arguably set the evolution of web dev back 10 years.

floral parcel
#

Some of the first games I ever made was using Java applets with the swing and AWT libraries.

worn remnant
pliant snow
#

I'm somewhat inclined to agree, but the fact I'm still not sure how to pronounce Floorp isn't ideal

rain apex
#

floor p?

cinder karma
#

Help my phone now autocorrects couch to concurrent

rain apex
#

Do u think monogame will obtain vulkan support within this decade

leaden marsh
#

But also what are you looking for out of Vulkan support?

#

Shader wise it's already like HLSL transpiled to GLSL, and it doesn't really expose a lot of that low level internals

rain apex
#

Nothing in particular, I arbitrarily picked vulkan as first foray into low-level graphics and then started wondering which engines use it blobcatgooglyblep

leaden marsh
#

Ah fair enough lol

#

I think it's more likely that we'd see, idk, that new meta graphics backend first

rain apex
#

Going by the monogame github it seems like they r pay a guy to do dx12 but nothing for vulkan

rotund violet
#

Vulkan has more optimization potential but I doubt it matters for a lot of MonoGame's use cases; if you're using sprite-based graphics, then you're not terribly worried about shader compilation times.

leaden marsh
#

Yeah, though I suppose the inclusion of DX12 is interesting, since the jump from DX11 to DX12 is roughly analogous to the jump from OpenGL to Vulkan

#

More optimization potential & a pretty different API in general

rotund violet
#

It is? Huh, didn't realize DX12 changed that much.

leaden marsh
#

AFAIK yeah, I'm sure there's still a lot more similarities than between OGL and Vulkan, but it was a pretty significant jump in what it allows from what I heard, and from how it's used

#

I think the general thing about both is that it has more optimization potential, but also a lot more ropes to hang yourself on

rotund violet
#

Bigger than the jump from DX9 to DX11 where they felt the need to skip a version?

leaden marsh
#

So the DX11 versions of games still seem to be more stable for me

#

DX9 to DX10 was bigger than DX10 to DX11, but I do think DX9 to DX11 might be comparable to the jump from DX11 to DX12

rotund violet
#

Yeah I don't see DX12 that much actually... maybe that's because it's a major change and a lot of the devs decided it'd be more worth it to support Vulkan instead.

leaden marsh
#

DX10 was also just never really used that much because DX11 introduced feature levels

rotund violet
#

Was DX10 a real feature release or did they just smash all the other Direct* stuff into one library and call it an upgrade? I know it wasn't backward compatible, but I never see it used on any game.

#

Always a choice between DX9 and DX11. Never DX10.

leaden marsh
#

I believe it was a real feature release, they had both DX10 and DX10.1. GTA 5 used both IIRC

rotund violet
#

Guess it just happened at an awkward time, or something.

leaden marsh
#

That's basically it, the version of Windows that only supported DX10 and not DX11 was I think a single release or something

#

Back in... vista, I think?

#

And a later service pack introduced DX11 support iirc

#

So by the time developers would have been able to transition to DX10 from DX9, DX11 was already available, with feature levels that could be used to limit functionality back to the DX9/10/10.1 subsets

#

The general advice was that there really was no reason to learn DX10 for that reason

rotund violet
#

Being tied up with Vista would definitely explain its unpopularity.

safe dragon
#

I never actually realized that I didn't really see dx10 anywhere

#

I still remember being excited about the switch from dx9 to dx11 for path of exile

#

and then eventually vulkan

#

I think PoE also supports dx12 but I'm on Linux now

#

even if I did switch to dx12 I'd still be using Vulkan in reality

safe dragon
#

I'm guessing cause it gives you more control aka more ways to fuck up

crystal wren
#

Yeah, I also don't think like... 99% of games using MonoGame would see any benefit whatsoever from Vulkan.

#

That being said, FNA does have Vulkan support already.

safe dragon
#

only really necessary for a theoretical future where opengl is no longer supported

#

but I really don't see that happening any time soon

#

other than apple who dislikes supporting nice things

#

oh I said that more to just take an opportunity to shit on apple and wasn't serious but

#

Apple already doesn't support opengl anymore on their phones

leaden marsh
#

though for what it's worth, it's not like implementing a Vulkan backend helps on the Apple end either

#

MoltenVK even is implemented on top of Metal

safe dragon
#

oh yeah it doesn't

#

might as well use MoltenGL then

leaden marsh
#

Yeah and on MacOS for now, there's still a considerable amount of OpenGL features still useable by default

#

I think OpenGL 3.3 is fully supported at least

safe dragon
#

up to 4.1 I think

leaden marsh
#

Yeah it'll be a while before OpenGL can really be phased out in favor of Vulkan for sure

#

If ever

safe dragon
#

in an ideal world at least all major platforms would've supported the same apis

leaden marsh
#

Yeah, I love rewriting graphics code for DirectX/Vulkan/Metal for cross platform support

#

At least SPIR-V has made the shader situation a little more bearable

#

GLSL vs HLSL vs whatever metal's shader language is called

safe dragon
#

always like this

#

the only thing without competing standards are the things not popular enough to have several people make one

#

or if it's extremely complicated to make one I suppose though I can't think of any examples

#

graphics apis are very complicated and we still have 3 modern ones

#

actually... complicated ones almost always have several cause there's always going to be something missing

safe apex
#

Going to look into seeing if I can get approval to migrate SM's xBRZ and xxhash3 implementations into their own nuget packages.

safe apex
leaden marsh
#

I don't doubt that honestly

safe apex
#

Of course, OpenGL may eventually disappear with less-awful APIs being implemented atop Vulkan.

#

You can implement D3D11 atop Vulkan, after all.

#

(Also a rendering engineer. It's in my fancy title!)

leaden marsh
#

I'd love a cool title like that lol

safe apex
#

(My title doesn't mean much. )

#

I'm effectively the head of rendering. Problem is that rendering is one person: me

rotund violet
#

Haha, I remember that from one of my old jobs, was the "Senior <X> engineer" and also the only engineer of any kind in the entire company.

safe apex
#

I'm the only person on my team who's an "Advanced Software Engineer" let alone a rendering one

#

My favorite graphics API ever was D3D9X, though, with D3D11X coming a close second.

rotund violet
#

I get the feeling I'm one of the only people who actually likes Vulkan. I mean, kind of. Maybe it's the vague similarity to older display-list APIs.

safe apex
#

Vk and D3D12 are almost identical conceptually.

#

I implemented a D3D12-like API in D3D11 before 12 came out

leaden marsh
#

I do like vulkan, but I don't feel like I have the capability nor the bandwidth to use it effectively in any personal project

rotund violet
#

Using it directly, maybe not great... it's almost always through something like wgpu.

#

(I mean, why bother tying yourself to a single API, when there are many decent multitargeting libraries out there... unless, I suppose, you're a rendering engineer)

crystal wren
cinder karma
#

(I doubt it. That is about the clause in some contracts that prevent you from even switching to a different job in the same field. Not about at-the-same-time stuff.)

#

I have a clause like that at current place

crystal wren
#

Oh, I honestly had assumed they were referring to what I meant... well that sucks.

#

In other news...

cinder karma
#

Nice!

safe dragon
#

nice

#

hope it's as easy to replace as they claim

cinder karma
#

(For the record, I wouldn't have to get a waiver for stardew mods because it isn't at all similar to what I do for work.)

cinder karma
safe dragon
#

don't think I have any kind of non compete clause

#

I could work directly for a competitor after

#

I don't want to but I could

cinder karma
#

I can work directly for a competitor after

#

I cannot work directly for a competitor at the same time

safe dragon
#

oh

#

the idea would've never crossed my mind

#

workout for 1 of em is already 1 too many

cinder karma
#

I also technically have to get approval in writing if I want a second job.

dusky gust
#

concussed on the c++ recap day SBVSob

safe apex
#

I've certainly never gotten a concussion from C++; only Java.

#

Though I've been using C++ for a long time.

sand frost
#

I honestly don't know if I'm allowed to get a second job, but since I don't want one, I haven't really looked into it

safe dragon
#

couldn't think of a worse thing to do with my free time than a second job

crystal glacier
#

/low level programming

#

Although people usually like to release stuff after hard work, I don't see why someone wouldn't wanna dive into graphics like Einstein studying physics.

#

It's scary for someone who doesn't have a strong mathematical background though.

rotund violet
#

Shaders are very mathy, yes. Canvas and layout, somewhat less so but still a little bit. Though most of the time it's not insanely complex math, just a lot of the stuff I learned and promptly forgot in late high school/early university. I don't know that other aspects of graphics dealing with the rendering pipeline are all that math-intensive, just very low-level? Unless you are talking about working on Vulkan and not working with Vulkan, I can't even guess what's on the inside.

crystal glacier
#

It all depends.

#

When you go to the depths of low level, strong math concepts are always accepted.

#

especially graphics

#

It really depends at which layer you're in.

#

And sorry for my poor English, I'm from Brazil.

rotund violet
#

Among the projects I can talk about - scene renderer for a modding tool (based on OGL) where I had to do all the lighting and stuff from scratch, that was math-heavy. Effect/transition shaders for a game, not very complex beyond just "polar coordinates". Layout/canvas-like stuff in the Stardew UI. Animations in Mina but those are all pretty high-level aside from simple cubic-bezier math. Etc.

#

Definitely never written anything below the graphics API level, and don't often write stuff at the graphics API level, but the latter, a few times on a few projects. Mostly just shader and layout implementations.

crystal glacier
#

There is nothing below graphics api level

#

I mean, there is

#

Butttttt

#

Those depths

#

are too dark

#

😭

#

If I remember, there is a group/person who made their own graphics API. They must just want peace now.

#

No kidding though, I really have an interest to look beyond. Not now though.

rain apex
#

whats the motivation to make your own graphics api?

crystal glacier
#

I don't do graphics like that but I have many friends who does.

rain apex
#

is it custom hardware or specialized usecases

crystal glacier
#

That was a joke.

#

But also not so much

#

Just the curiosity towards computers.

#

That's the answer.

rain apex
#

aw i wanted to know about the esoteric usecases hokuhands

rotund violet
#

You're probably working at least sometimes below the API level if you're working on console emulators and such.

#

(I don't. But once or twice I've peeked at the source.)

crystal glacier
#

When you want to make a console emulator you just use any window kit like gtk

#

unless you're talking about something else

rain apex
#

i thought we are talking about game console emulators

rotund violet
#

I'm not sure what you mean. Yes, libretro and the like are based on graphics backends like OpenGL, but it wasn't always like that.

rain apex
#

like dolphin (gamecube) and stuff

crystal glacier
#

LMFAo

#

I'm dumb guys

rotund violet
#

And in any case, even if the "output rendering" part is based on a well-known API backend, you have to deal with the "input rendering", i.e. figuring out what the console code itself is trying to do to the graphics.

crystal glacier
#

I'm very dumb

#

I don't know anything about this topic

rain apex
#

terminal emulators r so common that i often forget they are emulators

rotund violet
#

Oh, I get it, you thought I was referring to a "terminal emulator"

#

Haha, yeah, we both caught that at the same time.

crystal glacier
#

Console emulators

#

That's a cool niche right there

rain apex
#

do game console these days also just use one of the established graphics apis

#

im too young to know when the shift happened

rotund violet
#

I'm pretty sure Xbox does, but probably not any of Nintendo's consoles.

#

They always do everything custom.

#

Sony consoles I'm not sure about, I've kind of ignored that whole branch since the PS2.

crystal glacier
fleet wren
rotund violet
#

Indeed. Well there you have it. There wasn't really a "shift" per se, just Microsoft taking the easy road for their consoles.

crystal glacier
rotund violet
#

Wiki says it's "analogous" but I wouldn't read too much into that.

rain apex
#

its prob as analogous as vulkan to dx12 monS

crystal glacier
#

lmfao

rotund violet
#

Yeah, I'm sure it's a very different API. Technically all graphics API have similar concepts.

fleet wren
#

Xbox also tries to unify their console and PC catalogue, so it's understandable they use something usable on Windows

rain apex
#

i wonder if doing their own graphic api genuinely has great benefit or just more of that "not invented here" stuff

crystal glacier
#

It is a different API ofc. I guess it's just like what linux is to unix.

rain apex
#

it is their own hardware tho Bolb

rotund violet
#

I would say less of a "benefit" as the fact that since it's custom hardware, requires custom software.

crystal glacier
#

idk

#

There are many aspects of law in which these companies understands that we don't. Wouldn't surprise me.

rotund violet
#

These consoles start with hardware engineers speccing out what they think is going to work best for the next generation; trying to pigeonhole that into an OpenGL, DirectX or even Vulkan model probably is less cost-effective than just maintaining their own API which has evolved over 20 years already.

#

"Never say never" but I really, really doubt that it's a legal concern. Maybe for DirectX it could be, but certainly not OGL or VK.

crystal glacier
#

Well

#

I will take my leave guys. Nice to meet y'all.

#

Oh, will be releasing a MOD soon too

#

I came here for this, after many hours playing Stardew vanilla 😭

#

It's called Tropical Touch

rain apex
rotund violet
safe dragon
#

ew mods

crystal glacier
#

I deserved what was coming.

rain apex
#

i had weird problem with vscode c++ intellisense, it doesnt like the offsetof macro

#

there doesnt seem to be way to pass in -Wno-invalid-offsetof tho

crystal glacier
#

yeah vs code has those sometimes

#

are you in windows?

rain apex
#

no

crystal glacier
#

You got the fix?

rain apex
#

i just added the macro even though it was building fine without it

crystal glacier
#

idk how lsp works in vs code

grizzled oxide
#

need help
making a minecraft mod in MC

safe dragon
#

ur capybara is broken hc_pensive

grizzled oxide
#

It is SDVpufferwaaah

lethal walrus
#

did you do an oopsie with the animations

safe dragon
#

accidentally inverted all the vertices

lethal walrus
#

well the legs are fine

#

and im not sure blockbench lets you do that (invert all vertices)

safe dragon
#

oh yeah I have no idea how minecraft's animation system even works

#

or what blockbench is

lethal walrus
#

blockbench is voxel modelling thing

#

but it's mainly used for minecraft

supple ether
#

it was originally made for minecraft but it can export to standard model formats, so in theory you can use it for any kind of low-poly modeling/animation

#

it makes it very easy to create and texture models, but it's mostly limited to rectangular prisms and quads

leaden marsh
#

low-poly/cuboid modeling is how I'd refer to it as well, I don't really think it quite fits the definition of a voxel modelling thing in the way that Magica would

#

i actually quite like the aesthetic; checking out the scenes for Blockbench submission competitions is always really cool

supple ether
#

yeah it's a neat style. It's grown on me a lot

#

it's interesting because it's not really the minecraft style, so much as minecraft-adjacent, but there is something very cute and appealing about it.

safe apex
safe dragon
#

I'll go with whichever answer I find more interesting then

#

idk yet which answer that is

leaden marsh
#

Tho often they'll implement some level of like OpenGL on top of their own API

supple ether
leaden marsh
#

Switch definitely has it's own but there's also OGL & VK support iirc

safe dragon
#

isn't the xbox called an xbox because of directx

#

that's where they got the x from

#

When Microsoft later set out to develop a gaming console, the X was used as the basis of the name Xbox to indicate that the console was based on DirectX technology.

#

probably the last logical decision microsoft ever made with the xbox naming scheme

fleet wren
#

next Xbox will be Xbox One X Series X

cinder karma
#

Single Language

#

For Families

grizzled oxide
rotund violet
#

Xbox Xtra Xtreme, aka XboXXX

safe apex
safe apex
safe apex
rotund violet
#

To which part are you referring?

safe apex
#

Shaders. The GPU is optimized for (read: has instructions for) linear algebra and matrix math.

Basically all shaders end up written in those terms.

The original algorithms often involve calculus, though.

sand frost
#

(unrelated) glad you're back around, Ameise—I recall you had some health issues, I hope you're feeling better now!

#

You might have been around and I just didn't notice, I've been busy this summer

safe apex
#

Delayed my surgery, once that happens I will be outright gone from everything for a while.

#

I've been busy with work

rotund violet
#

Shaders are pretty diverse IME, but definitely lots of those.

regal ingot
#

Welcome back, even if it's just for a little while!

sand frost
#

most of applied math is just linear algebra 😛

#

the bits that aren't linear algebra are just pretending everything is 2nd order linear systems

safe apex
sand frost
#

(I know nothing about shaders)

#

(but I do know a bit of math!)

#

(but mostly I don't use any "higher" math)

safe apex
leaden marsh
#

light transport equations my beloved

safe apex
#

It's just... they get implemented in the end as usually fairly-simple transforms and vector math.

#

Most calculus can get turned into for loops and approximations :P

sand frost
#

I actually really enjoy vector math tbh

#

don't love calculus but don't hate it either

rotund violet
#

Yes, 100% right. I've always described it as "backward", as it always feels like I'm having to work backward when I write one.

#

But stuff like lighting is just vectors and reflections and incident angles and so on.

#

"Linear algebra" just sounds super advanced for some of the grug shader code I've written.

sand frost
#

I like drawing pictures and then I like having equations come out of them

#

it's kind of soothing

safe apex
#

A lot of algorithms, like steep parallax mapping, are oddly "obvious" but awkward (I implemented it on VR once. Never again - it was pointless and painful.)

indigo mistBOT
#

@safe apex You leveled up to Cropmaster. That's level 500! The deepening purple represents your mad descent into the server.

sand frost
#

woah!!

rotund violet
#

Never tried parallax. Definitely one of those things that seems straightforward when I just look at the effect itself, but every time I looked at the implementations I got scared away.

sand frost
#

purpler and purpler

safe apex
#

Steep parallax emulates stereoscopic vision on the surface with a single camera. Since VR uses two cameras, it looks identical to regular parallax mapping or even normal mapping.

You also have to change the progressive step interval into a float to prevent each eye from being on a different integer value and then getting sick.

#

It was highly nauseating until I fixed that...

#

As to how to accommodate a float: you must perform partial steps.

#

My favorite yet surprisingly simple effect I made was a dithered distance-based fade-out for VR.

The hardest part was making a valid noise texture for it - I had to write a tool just to generate it and the MIPS since point nor bilinear filtering worked.

#

Had to basically be a weighted point algorithm otherwise objects would disappear randomly.

rotund violet
#

Dithering on the GPU is a huge challenge. What did you end up using?

#

Blue noise?

safe apex
#

Triplanar mapping of the custom noise texture, discarding based on a comparison of the noise value sampled to some factor of distance to eye.

regal ingot
rotund violet
#

Ok, I have no idea what any of that means, sounds impressive though.

#

I mean except for the "custom noise texture" part.

safe apex
safe apex
#

Basically regenerates synthetic UV coordinates based on arbitrary yet coherent XYZ coordinates to let you apply a 2D surface onto arbitrary shapes.

regal ingot
#

gotcha. GPUs these days can deal with floats, though? (You can tell how long it's been since my one graphics class in grad school... that I dropped.)

rotund violet
#

Eh? GPU deal almost exclusively with floats.

safe apex
#

GPUs could always deal with floats. Integer support is (relatively) new.

#

Unless you go back to, say, early 2D accelerators.

#

Then it was largely fixed-point.

rotund violet
#

I think double precision floats are still pretty uncommon, though not sure if that's because GPUs can't handle them or just because they're slower/unnecessary most of the time.

safe apex
#

NVidia halves/quarters the performance of double-precision on non-Quadros

#

Historically, GPUs preferred half-precision for various reasons. I believe that it's still usually marginally faster but I haven't tested that recently.

rotund violet
#

Trying to remember the last time I saw a half. I know I did see one. I think it was in some of the Bethesda stuff.

safe apex
#

while the shader languages have half, usually, you usually specify half-precision operations using a pragma.

rotund violet
#

I remember it sticking out because there was no easy way to bind that half-precision data from the code, it involved some funny hacks.

#

Unlike an integer, you can't just lop off half the bits.

safe apex
#

Well, you can - you have to implement a custom 16-bit IEEE wrapper

#

Truncating floats isn't too hard - I wrote a templated implementation of it for GCC once so I could implement arbitrary-sized floats.

rotund violet
#

I can see why that'd be easy in your book. For me it was a pain to figure out. (This was also in C#, not C++)

safe apex
#

Usually you don't throw halves at the GPU - only fixed-point or singles, and just have the GPU use half-precision ops.

rotund violet
#

Definitely is a lot more sensible that way. I think it was a uniform half.

safe apex
#

Ah, on current GPUs, 16-bit ops have twice the throughput.

rotund violet
#

(Which still could have been done at the GPU level)

safe apex
#

The GPU is capable of decomposing any data types you throw at it anyways. The texture units spit out float4s for any texture format, even 565 and such.

#

(It's been about 10 years since I've created a 565 render target...)

rotund violet
#

Decomposing still requires the same amount of data, doesn't it? It's just being processed in smaller chunks, as opposed to e.g. actually reducing the precision.

safe apex
#

If we're talking textures, no.

#

565 data is half the size of RGB8. Block-compressed formats go even smaller.

That applies to the GPU's caches as well - they're faster to sample.

rotund violet
#

Huh. So a single color is represented as a float4?

#

I didn't know you could do that with any kind of float, never mind a float4.

safe apex
#

Yes. Depends on the specific format. R8 will usually populate RGB with R, and A with 1.

#

The GPU only has vector registers anyways.

rotund violet
#

But float4 is the entire color? Not just one channel.

#

How do you split it up?

safe apex
#

Right: xyzw and rgba are the same.

rotund violet
#

Well, I guess the hardware does it. Somehow.

safe apex
#

Thus, texture2d/sample/etc return float4

#

For things like constant buffer data, you can usually specify if you want it to be normalized somehow.

rotund violet
#

I know these are all vectors, just didn't realize it was represented as a float, or even that you could effectively convert between the two (I think of a vector as being 4 floats...)

safe apex
#

It is four floats. Doesn't mean that you have to use them all, or that you can't convert between 'em.

#

The texture units just do that for you.

rotund violet
#

Oh, now I get it. I thought you were saying that all 4 color values were represented in a single float4. But you mean a 16-bit type with four float4s. Right?

safe apex
#

GPUs are basically just... logic instructions and SIMD instructions.

#

No

#

A single color value is represented basically everywhere unless you do it yourself as a float4

#

It's just r, g, b, a

rotund violet
#

What is the conversion between that scalar float4 and the vec4 that we normally understand in shader languages?

safe apex
#

HLSL and GLSL both let you swizzle with xyzw and rgba actually

#

float4 is HLSL, vec4 is GLSL.

rotund violet
#

Right, and when I think of swizzles I think of swapping vector components (of a 16, 32 or 64 bit type).

safe apex
#

They're the same thing.

rotund violet
#

...ok, haha, then that means I completely misunderstood the past 15 minutes.

safe apex
#

:)

rotund violet
#

I thought a float4 was some sort of quarter-precision floating point scalar.

safe apex
#

I'm not sure how I'd use an 8-bit float