#programmers-off-topic
1 messages · Page 29 of 1
Yes 
Everything in my apartment statistically has a little hair, since my hair is very long and gets everywhere
But usually not my coffee
I like the "usually" qualifier.
Ooooh!
The compiler sucks. That took the better part of three weeks
I could learn how to knit continental
wearing several skeins held on to my body with needles and calling it a JIT
Wait, I guess that'd be for runtime speed not compilation time
When the wind blows, you frantically knit?
when the yarn breaks, i curse and cast on
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
]
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.
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
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?
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
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
makes sense
found it, it's listed as VisualStudio in the git ignore list.
man I do not understand github. How to make a stardewmods repo and then folders inside it for each mod
You never used git at all before?
just to put some R code, but I directly add the files and they're single files, didn't use a gitdesktop interface.
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
ahhhhhhh
I was trying to link an existing local folder to the web ui and it was not recognizing the stuff there
Yeah u must clone 
success! Is it better to work locally and then save everything, copy paste to the upload folder, or work off the upload folder?
You work in the cloned git repo folder from now on
Commit and push whenever u got enough changes
will have to remember to not push while the project is bricked from whatever new thing I'm trying to add.
Well the point of git/vcs is that you can go back to previous not bricked commit
that's true. I'm becoming a real programmer...
my org doesn't use git for SQL, they have their own version control.
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
Just got recognized as a Mod Author on Nexus 
you're famous
This is just evil.
:gentoo:
but minecraft uses Java 21

wonder if I've ever actually watched a beginner's programming tutorial
I guess I have, but its more focused on some engine/platform keeping things very simple
not 1.14.4, that's java 8
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
At least the official Rust book and tutorials are good old-fashioned text.
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
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.
Elizabeth
I accidentally put earl grey in my coffee
I'm not convinced
What black tea did you use
You "accidentally" did this exactly one day after it was discussed here? Hmmmm.....
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
Plain black tea
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
Milk and sugar is probably the secret
Grumbles
I'm using bigelow earl grey because that's what we have
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.
Lol if I actually just wanted caffeine I do have caffeine pills
I'm just amused at this tea in coffee thing
idunno about plain black tea and coffee, but "dirty chai" is definitely a thing
coffee-flavored boba tea probably doesn't count, but that's a thing as well
now I made myself craving some boba
I make a really good earl grey truffle
can I have some
I don't think of boba as tea even, but you're right, that combination definitely works. Probably partly because of all the milk again.
I love chai tea but have not tried dirty chai.
Discord server → https://discord.gg/wVSwG9uXkS
Support Virbox → https://www.youtube.com/@Virbox/join
Music → https://youtu.be/qRBP2pHNSUg
silly little video
I shall treat this video as literal gospel
maybe give it a watch first lol
Dont be silly
That guy made a couple of videos like that
they give me a little bit of a laugh every time
Part 1 - https://youtu.be/sNteZzrMskQ
This is Part 2 of Programming Languages Slander series - I hope you'll enjoy it :D
What a soundtrack
i feel like there's older people that use lua for neovim
what do u mean older wtf
citation needed
AI thumbnail booooo
i expected them to make a cat obese in real life for this meme video
It should be a bad photoshop of a crusty jpeg like god intended
older than
ah they made is especially easy to read
I having to hold my head upside down to read the crossword clues
yes
i have never seen a backslash in regex before, thats concerning
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
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
you're a regex professional
I come from the alternate timeline where dogs are all twice as big but everything else is the same
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
I do not like using regex it is not a healthy relationship
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
I can write a regex which does exactly that for those specific 3 strings
that wont quite cut it
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
165 steps is just enough for it to barely function probably
Is it not possible to just hardcode the pattern variations with an or pattern?
write some code which automatically builds a gigantic regex string with every possible allowed string
That sounds like a recipe for an O(don't ask) algorithm
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
my super incredible O(n) algorithm that will never be run on a list longer than like 5 elements
My code is o(1)
(1 = heat deaths of the universe)
I call these O(mfg)
"Oh my fucking god"
I've also heard of O(no)
Deferred execution is something that comes to mind. It can reduce the average complexity for some tasks, but usually it just spreads it out over a larger period of time
sleep sort
lol
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
Lol
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.
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
custom specialized hashing functions are sometimes the solution
"Use JavaScript"
IDK what ConditionalWeakTable uses but hopefully it's at least somewhat optimized
I have no idea what that is so I'm gonna go with yes it's the fastest ever made
Javascript did the galaxy brain move of just making everything an object, and making all objects dictionaries
everything is an object and when it comes down to it it is also a string
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.
It does do that, but I wouldn't use js for performance sensitive stuff
javascript gives you unlimited power to fuck shit up
smh it's 2024 we use js for any usecase
i vote javascript for president
Can't wait to make games with ReactPyNative in 2026
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
I looked up ConditionalWeakTable out of curiosity and it appears to be just hashing.
The fun thing about arrays also being dictionaries is that you can use them as bidirectional maps if you're a crazy person
it doesn't use GetHashCode however according to the docs
Sync key is my guess
That does make sense, since it would have to be pointer based to interact with the GC the way it does
The main reason to use ConditionalWeakTable, I think, is to avoid leaking the objects, not for performance.
Yeah I mean obviously
Unless RuntimeHelpers.GetHashCode has some special optimization but... I doubt it.
Yeah, you can't get around it for modding tbh
I've long learnt that javascript arrays are all a facade and even ones with very clear specific names like Int16Array do not prevent you in any way from just tacking on whatever you want onto that thing if you wish
I just wasn't sure if it used an alternate hash method because of the specific nature of the keys
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.
I don't think the architecture of c# allows you associating objects with arbitrary data outside of hashmaps and maybe the DLR
Well, I'm just assuming it's analogous to Java's System.identityHashCode
I suppose that would be one advantage of using an ECS. Would be a lot easier to glue things on
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.
Theoretically there's also the secret third option of ilhacking
The heck is an ECS
Entity Component System - you know, game design?
Nope!
It's a design paradigm that emphasizes composition over inheritance by breaking functionality into groups of components
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.
Huh
Have you ever noticed how most games just chug along on one thread, missing frames while 99% of your system capacity remains idle?
My brain had it categorized as "arena allocator but like how game devs do it"
Sudoku never misses frames!
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)
It's a cool idea, and great for certain types of games, but less good for others
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
Hm
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.
Trees can just be fun and games in Rust in general
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.
Yeah I've had Adventures with trees and rust
I learned rust via advent of code
Day 7 nearly killed me
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?
2022 I think?
advent of code 🙏
Day 7 wasn't conceptually hard I was just new to Rust and had to do a tree
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
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.
I have no idea
I ended up in the land of refcell
On the 7th bit of rust I ever wrote
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
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)
(That was the trick to day7)
(You could do it with two vecs)
But I found that out after the refcell hell
can't expect some fucked up stuff in AoC till later
I'm using an ECS for one of my game projects, though it's not doing any threading
This one: https://github.com/genaray/Arch
you're using arch
btw
why did they name it that arch could be so many things 
presumably cause it's an archetype based ecs
I'll take it over calling it cecs or something
Haha, I guess it depends how you pronounce the "c" but I read it as "keks" which would be an awesome name.
Arch is definitely a Linux flavor and not much else to me
Arch is a part of a circle 
it's also usually a build flag for compilers...
I really need to get around to telling git some of these file types don't need the lf/crlf right
I just like it for pretty much no reason
couldn't even try to justify it
I've been consumed by new hobbies
Two new hobbies or one interconnected one?
Looks like an expensive hobby
Just 3d print at work, ez
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
This is what it was before. Getting everything rackmounted is still a wip. #programmers-off-topic message
The hobbies go hand in hand though because 3d printing (and rackmounting) has helped me achieve my overall goal to get things more organized
What kind of home network needs that amount of gear?
Are you running a little side business?
Every kind if you try hard enough 
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"
Ah yes. A noble goal, if you can afford a static IP and redundant internet connections.
do you need static ip just for intranet stuff?
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.
sounds like you need a sysadmin at home
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.
Sounds like your next project needs to be a whole-home UPS with a huge battery bank and solar backup.
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.
what kinds of services are you hosting?
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.
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?
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.
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.
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.
(And by that I mean long enough to end up in a different room entirely)
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.
Home networking would be so much easier without pesky walls and ceilings.
I should've gone with the conventional knowledge. Wire every room up because you never know when you'll want it.
I don't have this place wired, but if I do, it's definitely going in every room, plus the garage.
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.
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
This website serves as a constant reminder on why I like self-hosting
https://killedbygoogle.com/
I kinda want to have solar and go off grid
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
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
Off-grid doesn't necessarily mean you forego internet, although satellite is probably more common than wired internet.
No internet sounds fun kinda
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...
I assume whomever programmed kicad's autoplace feature decided on "randomly on board" as the algorithm
Seriously smh
is that not desirable
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
it's ok, I blindly accept anything that is done in this field cause I know nothing about it
Oof, looking at open source software last updated in 2004 lol
The new display cometh. 
1 USB port
i assume a display doesnt come with a usb port
no
Work has spoiled me with giant screens and now I want that setup at home
I got that setup at home before work
Where I can enjoy raging at the vpn
The preorder for that new 2.8k 120Hz screen! It's shipping in the next few days.
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
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.
Not video game
I won't want to go back to 60 now.
Oh, wow
I don't really care about 120Hz myself but I will still likely get that screen once I order my framework laptop
I'm not sure I can reliably tell 30hz from 60hz
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
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...
yeah you can clearly tell better than I can
And that's definitely not a benefit!
Nice!
from what I understand the 2.8k one is also just more color accurate and generally better quality which I do care about
Yeah, just notably higher resolution, better colour, etc.
@gaunt wadi The next leap in human evolution
I'm waiting to order mine till they hopefully release a new motherboard option with the new ryzen 300 mobile chips
its been at least a year since they refreshed the AMD chips right
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
I do not parse the refresh rate of monitors ever, at all
Unless I'm working over VM and it's like...5
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
I've been in CAD land the last two days
it's definitely mostly only relevant for Real Esport Gamers like me
(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
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
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.
Yeah, I'm not sure I can tell when it comes to CAD
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.
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
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.
(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)
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
Last time I touched CAD was about 20 years ago and we were lucky to get "frame rates" of 2 or 3 per minute.
(same, but also this was the CAD
)
What is that?
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
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...
$14.99
3279
Title result: SHENZHEN I/O on Steam
think I stopped halfway into the endgame/postgame stuff of that one 
very fun though
for the true shenzhen experience you'd also have to deal with insane housing prices
I love the PDF manual, which is utterly realistic, including a full page of untranslated Chinese instructions
go be fair... you are in China in this scenario
See the problem is that this is exactly what I'm doing for work
Same here. I play SDV because my day job isn't farming.
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!)
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.
To me this is EE, I’ve heard it’s reasonably fun but it’s much more intensive thinking than I usually want from my relaxing entertainment
Yeah, layout so not "real" CAD (i don't have to acknowledge the third dimension much)
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
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.
incredible
I just set up my door sensor to turn the lights on now that it works with the new dongle
great minds think alike
Oh ho ho
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
Yeah, last i used it, you had to reboot the whole HA server everytime you made a change
oh, you don't need to do that anymore
Nice
I still much prefer nodered, even if doing simple things like conditionals is a pain
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
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...
I have made a diagram
love me some 433 megahertz
Someone make me the "code is compiling" meme but with "SharePoint is loading"
What features does your WiFi enabled vacuum have that need WiFi? Or is it a robot one
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
Ahh
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
Some office thing
sharepoint is more or less the Microsoft office web
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.
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
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.
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
Is sharepoint like google docs
basically
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
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...
Mine has tripped three times this evening so far when it shouldn't have, this isn't going great
is the door sensor giving false positives
I think? I need to add a debug item to it
That probably doesn't work because using parentheses like that already indicates lambda parameters. If it allowed decomposition in parameters that would make the syntax ambiguous, which is not something you want in any programming language
Though it might work if you put inside an additional set of parentheses? I've never tried that
splat?
C# has variadic methods of that's what you're asking?
ah yea close enough 
And list deconstruction
Span<> params my beloved
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
Have you done anything with string.Create yet? It's very cool and fun
Sadly no!
My day to day life is without c# now
It gives you a writable char span and then turns it into a string in-place after you're done with it
I have become "retired modder yells at unnecessary allocations."
oh is it like fancy string interpolation
I saw! I want an excuse to use it.
And I appreciate you for that atra
I used it to write a "decrypter" for STS save files
What's sts?
Slay The Spire
Ahhh
The save files are json, converted to base64 and then xor'd with KEY on repeat
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
Lol wut
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
yea i wonder why they went out of their way to make editing harder 
when the only place to cheat is like speedruns
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
Yep, that was the first thing I tried, and the thing that works everywhere else. Deconstruction in C# is just so half-baked, the places where it works correctly may as well be random. foreach fine, lambdas nope. var is fine, but don't even think about ref or out.
Ref and out are completely different things than var
Neither of those makes sense to do inline decomposition
lmao i messed with this too when i wanted to do sandbox stuff but hadn't gone through the torture of acquiring mods yet
Var is the same as a type declaration, it's not a parameter modifier
And out var is also the same as a type declaration, it replaces out Foo.
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
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.
If you asked it to do a ref decomposed parameter what do you actually expect it to do
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.
that's a good enough reason for me ¯_(ツ)_/¯
It could allocate a single tuple object, pass it as a reference, and deconstruct it. It just doesn't want to.
Computers aren't magic
by the same logic, you could type a few more lines of code, but you don't want to
idk anything about the internal workings here, just speaking on what the syntax looks like intuitively
I'm not buying it. Because it involves boxing, it's not allowed? There is tons of implicit boxing.
Well, roslyn and the runtime are both open source. Be the change you want to see IG
Yes, exactly. More lines of code = harder to read, more maintenance. C# designers generally get that. What else is ArgumentNullException.ThrowIfNull for? It's literally saving one line of code.
C# doesn't work like that at all. They don't accept rando PRs. Everything has to go through champions, RFCs, multiple stages of planning, etc.
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
Much like anything Google puts out, C# is "open source" in a very narrow legalistic sense and not in any meaningful practical sense.
Right, but nothing is actually stopping you from getting involved in that process
(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)
i think this case is bit to ambig to be valid syntatic sugar
maybe if they make up a new keyword
outboxed or something
Frankly I think it's a solution looking for a problem
Yes, having a feature work consistently is a solution looking for a problem.
I think you just like complaining
And as for getting involved, there are already so very many proposals around it, both closed and open, none of them getting any traction: https://github.com/dotnet/csharplang/issues?q=is%3Aissue+deconstruct
So what would be the point of adding to to the chorus?
to be fair, complaining kicks ass and i also like to do it /lh
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.
"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
at least it kind of makes sense? People do use llms to help them word emails, especially non native speakers
and no one is selling their emails presumably at least
brn making a brand new mail service, running straight off the old gaming computer in my basement
the first 5 signups get Early Alpha Access... and Beta, and Release, and Post Release, cuz it's not adding more
Where's your kickstarter
You can put 5 dollar in a bowl and leave it outside overnight
the first 5 to do so will get access
for the rest the money will still be taken but no access will be given
proton has been going in a lot of random directions lately

That's a weird decision for something like Proton, whose entire business model is privacy.
they made sure to only train the model on your private emails
cause that makes it private
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?
is this for ja2conpat
it is, they were kinda busy in the other channel though and I have limited time today
Yeah I did uh, post there. It got buried instantly
people really dont play stardew in this channel 
you should just ask again if you feel the question is not answered, nothing wrong with that
people actively participating in the stardew discord don't play stardew?
not in here
i think this channel is about home automation
And rust
and complaining about languages you dont like
and javascript!
oh if that's the case, all of them other than html4
bbcode is okay
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.
bbcode is probably acceptable, aside from wysibb's jquery functions. very infurating
Ah yes, "rain", the PACNW season other than "skin melting heat",
Are there days you don't hate filesystems?
every day I use my ipad I hate filesystems more
or at least one specific file system
In this case my code just needed to run on my computer but died because I tried a file name with a "<" in it
why a <
oh it's a forbidden character on windows
how do you have a file with a < in it
<3.txt
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
like :?
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 ..\
that seems kind of illegal on unix too 
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
oh wise home automator, tell me your wisdom
which blinds did you get?
also the summer has been long and hot this year imo
very enjoyable
I got SmartWings because they're cheaper than other options and completely DIY
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
Blinds seem fun
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!
no they aren't, but you do need to do extra escaping on the command line like space characters
(in other words, illegal and punishable by jail)
its the .. that feels weird, cus it's "go 1 level up in folders"
y did they zip this way
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
I love inlining
Compiler being tricksy is always fun
(I say this with full sincerity)
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
Time to give Floorp a try
will its stupid name turn off everyone, yes, but ive still heard good things
Try Zen instead it's pretty nice
Or just use Brave 🦁
idk if I've heard of zen
is zen that browser thats like arc but firefox
My browser of choice is Waterfox with the arkenfox user.js
I use Firefox mainly, but I also have Pale Moon and Min
i really should install a second browser, that isn't edge
Fuck edge.
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)
I usually use firefox. I used to use a browser called pale moon a long time ago.
Internet explorer was like one of the last browsers to support java applets if I recall correctly.
Java applets, that takes me back. Arguably set the evolution of web dev back 10 years.
Some of the first games I ever made was using Java applets with the swing and AWT libraries.
the name "Pop!_OS" is a crime. at least Floorp is wacky
I'm somewhat inclined to agree, but the fact I'm still not sure how to pronounce Floorp isn't ideal
floor p?
Help my phone now autocorrects couch to concurrent
Do u think monogame will obtain vulkan support within this decade
Considering they don't even have a wavebank generator which was a feature requested almost a decade ago, I'm going to say no
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
Nothing in particular, I arbitrarily picked vulkan as first foray into low-level graphics and then started wondering which engines use it 
Ah fair enough lol
I think it's more likely that we'd see, idk, that new meta graphics backend first
Going by the monogame github it seems like they r pay a guy to do dx12 but nothing for vulkan
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.
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
It is? Huh, didn't realize DX12 changed that much.
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
Bigger than the jump from DX9 to DX11 where they felt the need to skip a version?
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
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.
DX10 was also just never really used that much because DX11 introduced feature levels
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.
I believe it was a real feature release, they had both DX10 and DX10.1. GTA 5 used both IIRC
Guess it just happened at an awkward time, or something.
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
Being tied up with Vista would definitely explain its unpopularity.
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
tbh the times I have seen it used it wasn't really in a positive light. It's not uncommon for dx12 to perform worse than dx11 for the same game
I'm guessing cause it gives you more control aka more ways to fuck up
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.
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
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
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
up to 4.1 I think
Yeah it'll be a while before OpenGL can really be phased out in favor of Vulkan for sure
If ever
in an ideal world at least all major platforms would've supported the same apis
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
Obligatory xkcd:
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
Going to look into seeing if I can get approval to migrate SM's xBRZ and xxhash3 implementations into their own nuget packages.
I can say with confidence that neither Microsoft nor Khronos expect D3D11 nor OpenGL to ever truly be phased out. I have that from MS in writing. They've considered D3D12 only appropriate for organizations willing/able to invest the time to implement it, otherwise they still suggest using D3D11 (which I still do where it doesn't really matter).
I don't doubt that honestly
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!)
I'd love a cool title like that lol
(My title doesn't mean much. )
I'm effectively the head of rendering. Problem is that rendering is one person: me
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.
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.
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.
Vk and D3D12 are almost identical conceptually.
I implemented a D3D12-like API in D3D11 before 12 came out
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
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)
Out of curiosity, does this not cover the reason you were needing to put everything into SM?
https://www.ftc.gov/news-events/news/press-releases/2024/04/ftc-announces-rule-banning-noncompetes
(Also, welcome back!)
(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
Oh, I honestly had assumed they were referring to what I meant... well that sucks.
In other news...
Nice!
(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.)
Film the process with your British accent?
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
I can work directly for a competitor after
I cannot work directly for a competitor at the same time
oh
the idea would've never crossed my mind
workout for 1 of em is already 1 too many
I also technically have to get approval in writing if I want a second job.
concussed on the c++ recap day 
I've certainly never gotten a concussion from C++; only Java.
Though I've been using C++ for a long time.
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
couldn't think of a worse thing to do with my free time than a second job
It is great if you're into Graphics Programming a whole lot
/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.
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.
What kind of graphics do you like to fiddle with?
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.
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.
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.
whats the motivation to make your own graphics api?
I don't do graphics like that but I have many friends who does.
is it custom hardware or specialized usecases
Just think: beach, sand, silicone, restarting human civilization.
That was a joke.
But also not so much
Just the curiosity towards computers.
That's the answer.
aw i wanted to know about the esoteric usecases 
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.)
That's actually not true.
Those are just files for devices 😂
When you want to make a console emulator you just use any window kit like gtk
unless you're talking about something else
i thought we are talking about game console emulators
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.
like dolphin (gamecube) and stuff
oh
LMFAo
I'm dumb guys
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.
terminal emulators r so common that i often forget they are emulators
Oh, I get it, you thought I was referring to a "terminal emulator"
Haha, yeah, we both caught that at the same time.
do game console these days also just use one of the established graphics apis
im too young to know when the shift happened
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.
😮
PS4 (and 5 by extension) seems to use its own thing: https://en.wikipedia.org/wiki/PlayStation_4_system_software#GNM
Indeed. Well there you have it. There wasn't really a "shift" per se, just Microsoft taking the easy road for their consoles.
It seems like it's inspired by DX
Wiki says it's "analogous" but I wouldn't read too much into that.
its prob as analogous as vulkan to dx12 
lmfao
Yeah, I'm sure it's a very different API. Technically all graphics API have similar concepts.
Xbox also tries to unify their console and PC catalogue, so it's understandable they use something usable on Windows
i wonder if doing their own graphic api genuinely has great benefit or just more of that "not invented here" stuff
It is a different API ofc. I guess it's just like what linux is to unix.
it is their own hardware tho 
I would say less of a "benefit" as the fact that since it's custom hardware, requires custom software.
Could be for legal reasons?
idk
There are many aspects of law in which these companies understands that we don't. Wouldn't surprise me.
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.
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
dangerously ontopic talk like that goes in #making-mods-general
Cool, but you should mention it in #modded-stardew or #making-mods-general since mods are generally off-topic for the off-topic channel. 
ew mods
Nah, it's fine, I got slightly off-topic right there 😂
I deserved what was coming.
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
no
i just added the macro even though it was building fine without it
vs code and its intricacies 
idk how lsp works in vs code
need help
making a minecraft mod in MC
ur capybara is broken 
It is 
did you do an oopsie with the animations
accidentally inverted all the vertices
well the legs are fine
and im not sure blockbench lets you do that (invert all vertices)
oh yeah I have no idea how minecraft's animation system even works
or what blockbench is
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
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
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.
I'm not sure I can answer this due to NDAs.
I'll go with whichever answer I find more interesting then
idk yet which answer that is
Depends on the console but a lot of them have their own
Tho often they'll implement some level of like OpenGL on top of their own API
Xbox has been directx-based for a long time but idk about the others
Switch definitely has it's own but there's also OGL & VK support iirc
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
next Xbox will be Xbox One X Series X
probably
dunno how to fix it tho
Xbox Xtra Xtreme, aka XboXXX
We used PSGL... once. It was a mistake.
The D3D on Xboxes is somewhat different than that of PC.
It's mostly linear algebra. More advanced algorithms require a basic understanding of calculus to understand but the implementation is linear algebra usually.
To which part are you referring?
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.
(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
Delayed my surgery, once that happens I will be outright gone from everything for a while.
I've been busy with work
Shaders are pretty diverse IME, but definitely lots of those.
Welcome back, even if it's just for a little while!
most of applied math is just linear algebra 😛
the bits that aren't linear algebra are just pretending everything is 2nd order linear systems
Right, but the math expressed in the shaders ends up as procedural linear algebra and matrix transformations as that's what the GPU understands.
(I know nothing about shaders)
(but I do know a bit of math!)
(but mostly I don't use any "higher" math)
Right, though the research papers are a pain to understand because they rely on calculus.
light transport equations my beloved
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
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.
I like drawing pictures and then I like having equations come out of them
it's kind of soothing
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.)
@safe apex You leveled up to Cropmaster. That's level 500! The deepening purple represents your mad descent into the server.
woah!!
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.
purpler and purpler
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.
Triplanar mapping of the custom noise texture, discarding based on a comparison of the noise value sampled to some factor of distance to eye.
out of idle curiosity, is a float actually required, or would a fixed-precision decimal also work?
Ok, I have no idea what any of that means, sounds impressive though.
I mean except for the "custom noise texture" part.
It'd work except that the GPU has effectively zero accommodations for that.
Triplanar mapping is my favorite algorithm in that field.
Basically regenerates synthetic UV coordinates based on arbitrary yet coherent XYZ coordinates to let you apply a 2D surface onto arbitrary shapes.
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.)
Eh? GPU deal almost exclusively with floats.
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.
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.
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.
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.
while the shader languages have half, usually, you usually specify half-precision operations using a pragma.
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.
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.
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++)
Usually you don't throw halves at the GPU - only fixed-point or singles, and just have the GPU use half-precision ops.
Definitely is a lot more sensible that way. I think it was a uniform half.
Ah, on current GPUs, 16-bit ops have twice the throughput.
(Which still could have been done at the GPU level)
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...)
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.
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.
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.
Yes. Depends on the specific format. R8 will usually populate RGB with R, and A with 1.
The GPU only has vector registers anyways.
Right: xyzw and rgba are the same.
Well, I guess the hardware does it. Somehow.
Thus, texture2d/sample/etc return float4
For things like constant buffer data, you can usually specify if you want it to be normalized somehow.
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...)
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.
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?
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
What is the conversion between that scalar float4 and the vec4 that we normally understand in shader languages?
HLSL and GLSL both let you swizzle with xyzw and rgba actually
float4 is HLSL, vec4 is GLSL.
Right, and when I think of swizzles I think of swapping vector components (of a 16, 32 or 64 bit type).
They're the same thing.
...ok, haha, then that means I completely misunderstood the past 15 minutes.
:)
I thought a float4 was some sort of quarter-precision floating point scalar.
I'm not sure how I'd use an 8-bit float

with out