#programmers-off-topic

1 messages · Page 25 of 1

marble jewel
#

So all of that was a waste of everyone's time

safe dragon
#

fun…

worn oar
#

Yeah it's frustrating out here

crystal wren
#

I'm going to be in this position relatively soon personally, too! SDVpufferwaaah

crystal wren
#

Oh, no, in a good way! Maybe?

marble jewel
#

It really depends on the jobs you're applying for. I can only speak from my perspective as a hiring manager and for the role of data engineer

worn oar
safe dragon
#

the company I work for announced a hiring freeze recently

worn oar
marble jewel
#

For a couple years I had something even worse than a hiring freeze, all backfills were getting swiped up

#

So any team that lost employees due to attrition were just short staffed

safe dragon
#

well at least web is probably the “easiest” market to find entry positions in

marble jewel
#

Like, if I had a role to hire, Sr Engineer for example, I was incentivized to not promote from within because their backfill would be lost

worn oar
#

I've found exactly one web job hiring and they prefer a graphic design specialist with no experience in coding

rain apex
#

what is meaning of backfill in this context? how do you lose a backfill

marble jewel
#

It means I lose a team member, and the company swipes up that role and gives it to another team

safe dragon
#

backfilling to me is a term in construction so idk what exactly it means for employment

marble jewel
#

Whereas normally if I lose an employee, I'm able to hire someone to replace them

#

There was a time where they wanted backfills to go to teams that "needed it more than you do"

worn oar
#

So pretty much, everyone there has to stay in their roles or else the team gets smaller?

marble jewel
#

But it's not like your team is responsible for less work, the remaining team members absorb the extra responsibiliity

rain apex
#

how does this solve anything for the team who is 1 less person now Thqnkqng

safe dragon
#

doesn’t solve anything for the team but management feels like they did something probably

marble jewel
#

It doesn't solve anything, it just shows how disconnected leadership is from what's happening at the worker's level

rain apex
#

i would like to unlearn the meaning of backfill

marble jewel
#

If anything, they do it intentionally so that it leads to more attrition

#

It's a better deal for them than to pay someone a severance to let them go

#

Make everyone's job more miserable so they can get rid of positions they don't understand, and fill them with AI engineers

safe dragon
worn oar
#

Is there a better place to look than LinkedIn or Indeed?

marble jewel
#

Meanwhile data quality suffers because the people who were experts in that are gone, and they have no idea why AI doesn't magically solve for everything when you have garbage data going into the models

worn oar
safe dragon
#

my personal experience(in the netherlands) was that recruiters were able to find a lot of jobs that weren’t on any public board like linkedin or indeed…

#

sometimes companies just have a little section on their website and do nothing else publicly

marble jewel
#

On a more fun topic, my new toy is working wonderfully

safe dragon
#

I’m assuming this is a 3D printer

worn oar
#

That looks cool

marble jewel
#

Yes, I've been wanting one for a while, and I finally made the space for it

#

I had a bunch of failed prints yesterday, but I'm figuring things out now

crystal wren
#

I've also wanted one for forever!

marble jewel
#

For example, I did not know that the filament absorbs humidity, and that can ruin prints

rain apex
#

What will you print DokkanStare

marble jewel
#

Like, a spool can increase by as much as a few grams in moisture

marble jewel
#

Gridfinity - organize horizontal storage
Multiboard - organize vertical storage

#

I also printed a turtle

safe dragon
#

incredible

marble jewel
#

I should have printed it in green, but that was my first test print and I hadn't figured out yet how to select the spool I wanted to use

rain apex
#

Retractable neck action LathnaHeehee

marble jewel
#

That print is pretty neat because it doesn't require any glue to put together

#

It includes these H clips to attach the halves together

rotund violet
#

"ugh I don't like how passing things to my worker thread scrubs types"

This sounds ancient, MT code in C# is rarely written with worker threads anymore. Hasn't been since like... .NET 4 I think? When did they introduce Task, Parallel and so on? There's concurrent collections, immutables and atomics that solve 95% of problems, and lock, Mutex and so on for the other 5%. I think I can count the number of times I've used volatile on one hand, including Java threading, and IIRC they all had to do with double-checked locking.

cinder karma
#

Tbh there was probably a better way but in the case of the "I want to use an enum and votaile doesn't like this" was a case where one thread fed work to another thread and they would set a shared state field to signal the other

#

There are like actual ways to do this but i did it basically manually

rotund violet
#

There are like actual ways to do this

Like... producer-consumer queue?

#

(AKA BlockingCollection in C#)

scarlet hollow
cinder karma
#

Hence, writing code that looks weird

rotund violet
#

What is your definition of a professional programmer - apparently it is something other than "someone who gets paid to code?"

#

I'm just curious, it wasn't meant as an interjection or anything.

cinder karma
#

Your primary job description and primary job output is code

#

While for us the code is just a tool to do what we actually want to get done

rotund violet
#

Hm... for a while my primary output was design docs, meetings and other corporate minutiae.

rain apex
#

oh that sounds more like software engineer vs anyone else who happens to code a lot for work

rotund violet
#

So most of your job does not involve coding? You work primarily on the hardware itself?

rain apex
#

imo programmer is umbrella term though, a college kid in intro comp sci is still a programmer

rotund violet
#

I don't think it's the "programmer" that's in question, it's the "professional" adjective.

cinder karma
#

(Yes)

rotund violet
#

Ok, didn't know that. Since you mostly discuss the coding part here.

cinder karma
#

I can't discuss the noncoding part

#

Like at all at all

rotund violet
#

NDA?

cinder karma
#

Basically

rotund violet
#

Ah well, I think we get the basic idea anyway. You obviously do a fair amount of coding, though. I've met a lot of hardware guys who couldn't reliably write FizzBuzz.

safe dragon
#

if 1 then Fizz
if 2 then Buzz

#

wait

#

no that’s not how fizzbuzz works

#

I’m very tired

pliant snow
#

you must be a hardware guy

safe dragon
#

unfortunately not

pliant snow
#

hmm.

#

📝

#

well thanks for coming in today, we'll get back to you soon

safe dragon
cinder karma
rotund violet
#

See, I wouldn't hire the guy who came up with that either, because he obviously thinks he's a very clever boy, and they cause all kinds of trouble on teams.

#

As a joke on a blog or something, of course it's fine, but if I saw that in an interview, that's another case of "thanks for coming in today".

safe dragon
#

idk what I’d even do if I was asked to implement fizzbuzz. Do I just go for the normal implementation with modulos? Do I try find an “interesting” solution? Obviously in a production setting I’d do the normal implementation

rotund violet
#

I think it's mandatory to use Enumerable if it's a C# position.

safe dragon
#

damn

rotund violet
#

Also, start by writing a ForEach extension (if you want to see their eyes roll into the back of their head, that is).

safe dragon
#

Enumerable.Range(0, 100) would be the easy one to get one in there if we take the exact version in that post

#

List already has a built in ForEach implementation so we’re good(it’s slow as molasses don’t use it)

rotund violet
#

Enumerable.Range(0, 100).ForEach(i => Console.WriteLine(/* a bunch of ternary gibberish */))

#

(if you want to make me hate you)

safe dragon
#

while I love my LINQ I will pass

rotund violet
#

Your code is insufficiently shiny.

rain apex
#

ForEach in C# is like mapping?

#

or just apply

supple ether
#

why not just use a foreach loop??

#

is there a point to using the linq version?

safe dragon
#

the js equivalent would be each

cinder karma
#

Because Javascript

safe dragon
rotund violet
#

ForEach in C# doesn't exist, and Eric Lippert wrote an entire blog post on why it doesn't exist (short answer: because it's stupid).

cinder karma
#

I've seen actual Javascript devs argue for loops are unclear

#

In what world

supple ether
#

thank god I thought I was going to lose my mind for a sec there

safe dragon
supple ether
#

that is evil

cinder karma
#

What about Select?

rotund violet
#

forEach does exist in Java streams, though, which tells you all you need to know about Java.

supple ether
#

Select makes sense, because you would normally only use it as part of a processing pipeline for a sequence

safe dragon
#

I use select regularly

#

well

rotund violet
#

Select is sorta the whole point of the language feature, imo.

safe dragon
#

regularly might be too enthusiastic

supple ether
#

I use FirstOrDefault pretty often too

#

more often than select actually

safe dragon
#

my most used is definitely just Where or FirstOrDefault(with a condition)

rotund violet
#

I guess I use Any and All pretty often as well, but Select and Where probably dominate.

supple ether
#

Any is sometimes useful

rotund violet
#

According to the code search, I even used Aggregate one time in this project.

#

That's my least-favorite extension for sure, there's just something ineffably awkward about the signature.

supple ether
#

Oh right and Concat is technically linq as well. that's a weird one but it is useful once in a while

cinder karma
#

Aggregate is a fold

rotund violet
#

Yeah, but it's a hard-to-use fold.

safe dragon
#

One thing I do tend to forget is to use TrueForAll when working with lists instead of All. It’s a little faster since it avoids the linq allocations

rotund violet
#

I don't know, I just find I always have to look up the doc whenever I use it.

cinder karma
#

It is a hard to use fold I agree

#

Tbh.

safe dragon
#

I’ve used plenty folds in functional programming languages but I practically never see the need in C#

cinder karma
#

My least favorite thing about linq tbh is the naming

rotund violet
#
var (targetView, bounds) = pathAfterScroll.Aggregate(
    (view as IView, bounds: Bounds.Empty),
    (acc, child) => (child.View, new(acc.bounds.Position + child.Position, child.View.OuterSize)));

(as an example of why I'd actually use it)

cinder karma
#

I have to translate quite a bit

safe dragon
#

in rust they’re just called iterator functions

cinder karma
#

Like, select = map, where = filter

thin estuary
cinder karma
#

Stuff like that

safe dragon
#

I do use SelectMany even if it should just be called flattenMap or something

supple ether
rotund violet
#

In rust it's just FlatMap, yeah

safe dragon
#

yeah

rotund violet
#

I will give the point on that one to Java, at least they used the standard names for streams.

safe dragon
#

ultimately I do love linq very much and it’s a big factor in me enjoying the language at all

rotund violet
#

map, reduce, filter and so on.

supple ether
#

there are things I like about it but also things I don't

#

there are times when it's just simpler to handwrite a loop in a spearate breakout method

safe dragon
#

probably the funkiest part of Linq I’ve used is OfType but considering I’m surrounded by modders, maybe it’s more common there idk

rotund violet
#

I'm guilty of using OfType and Cast rather often.

thin estuary
#

i still can't believe there is no FirstOrNull

rotund violet
#

To make a long story short, it's because C# generics aren't quite as sophisticated as C++ templates or Rust traits, and often find myself having to drop down into non-generic System.Collections

supple ether
#

GroupBy is also incredibly useful, though I always forget it exists

rotund violet
#

(when working on framework code, that is. not app code)

supple ether
safe dragon
#

I do use GroupBy fairly regularly, I used one yesterday

supple ether
#

the guardrails help stop you from doing stupid things but they also stop you from doing useful things

rotund violet
#

I'm not complaining - the way the BCL is set up with generic collections inheriting from nongeneric makes the problem solvable almost 100% of the time.

#

Although I'm kind of glad I'm not someone else having to learn and maintain my code.

supple ether
#

also ReadOnlyList is excellent for working with subtypes

safe dragon
#

groupby is definitely up there when ranking them purely by how many lines of code it’d take to write the same logic without it

rotund violet
#

The one thing that irritates me about the collection hierarchy is that IReadOnlyList<T> doesn't have IndexOf or some other extremely common list methods. ("Covariance", I know, but it still annoys me).

safe dragon
#

honestly C# has a ridiculous number of collection types in the standard library

#

they all have a use in something but it’s pretty funky

rotund violet
#

How many are necessary? <meme>ALL OF THEM</meme>

#

I couldn't find the meme image so whatever.

safe dragon
#

all one needs is List smh don’t be silly

#

if something isn’t list just ToList() and there u go

supple ether
#

WHY does it not have it?

safe dragon
#

they don’t want you to have fun

rotund violet
#

"variance"

#

You can actually discover the reason when you implement it yourself - I had to do something like this:

    private int FindNodeIndex(INode node)
    {
        for (var i = 0; i < AllNodes.Count; i++)
        {
            if (AllNodes[i] == node || (AllNodes[i] is IEquatable<INode> eq && eq.Equals(node)))
            {
                return i;
            }
        }
        return -1;
    }
#

Which is... kind of obnoxious.

rain apex
#

what is C# curry/partial

safe dragon
#

without knowing anything about them I’d have definitely expected IReadOnlyList to implement the IList interface yet it does not

rain apex
#

besides just writing a delegate

supple ether
#

I don't think that's a thing

rotund violet
#

I don't think there is a curry function, but you could always write one yourself in 3 lines.

safe dragon
#

you could probably hack something together

supple ether
#

unless you count expressions IG

safe dragon
#

I don’t generally like currying very much

rotund violet
safe dragon
#

not sure if that’s due to the actual function or just that it gives me flashbacks to haskell classes in uni

rain apex
#

yea i never had use for the full curry thing

#

but partial very useful every day

cinder karma
#

I've used partial before too

#

It's super fun for (python) decorators with optional arguments

rotund violet
#

I used bind in JS but eh, it's really not necessary, just a minor convenience. (also partial, just less often)

safe dragon
#

I probably won’t be using partial nearly as much with the new extensions feature coming in .net 9

#

don’t think I’ve used a partial method beyond using it with the built in regex source generator

rotund violet
#

Partial and partial method are two different things, though.

safe dragon
#

yeah

cinder karma
#

I think we are talking at cross purposes

rotund violet
#

Yeah, you're referring to partial as currying.

#

Different from partial methods and classes.

safe dragon
#

oh idk python

rain apex
#

well curry is the higher order func concept

safe dragon
#

I see

rotund violet
#

The term is actually from functional languages, python stole the concept.

cinder karma
#

Python has functional concepts!!!

safe dragon
#

I know currying from haskell

cinder karma
#

But not the mutability thing

safe dragon
#

the mutability thing is what most inspired languages drop

#

tbh rust for me is the best of both worlds with explicit markers in function calls whether something you pass in could be mutated or not

#

mutation is still possible but you still have a good idea whether it’s safe or not to assume something you pass into a function won’t change from it

supple ether
#

I know currying from the Integrated Dynamics minecraft mod

safe dragon
#

lmao

#

generally I do prefer to lean on the side of immutability when performance isn’t critical

cinder karma
#

I know currying from a cook book oh wait

safe dragon
#

I like that kind of curry much more

scarlet hollow
#

re: fizzbuzz
Once submitted this to a fizz buzz code golf competition and got 3rd place aPES_Giggle

for(x=y=z="";z++<100;)y+=((z%3?x:'fizz')+(z%5?x:'buzz')||z)+`
`
#

I also came up with something really dumb that used binary arithmetic but it was slightly longer. That might go on the blog... when I get around to making a blog

pliant snow
#

I get most of it, but Im surprised whatever langauge it is is happy with z being a string and then an int, and idk what the || z does at the end

scarlet hollow
#

Javascript \o/

fleet wren
scarlet hollow
#

I love the wat talk!

#

Let's talk about ruby!

cinder karma
#

There's something good you can say about every programming language. But that's no fun. Instead, let's take the worst features of all the languages we know, and put them together to create an abomination with the worst syntax, the worst semantics, the worst foot-guns and the worst runtime behaviour in recorded history. Let's make a language so b...

▶ Play video
pliant snow
#

I've played with ruby before, but dont know it very well

lethal walrus
cinder karma
#

IBM cobol is amazing

scarlet hollow
# pliant snow I get most of it, but Im surprised whatever langauge it is is happy with z being...

||z is more funky JavaScript type coercion. Basically

x always empty string
y initially empty string

every iteration, increment z and calculate
  - "z is NOT divisible by 3? Then x (empty string) otherwise 'fizz'"
  - "z is NOT divisible by 5? Then x (empty string) otherwise 'buzz'"

Concatenate the two strings with +

Using the fact that
  - Boolean("non-empty string") = true
  - Boolean("") = false // empty string

If the concatenated output is an empty string, treat it like a boolean such that (false || current iteration) === current iteration

Join that to y with a line break. In a for loop block, the return value is the output of the last operation, which will be the concatenation performed at the last iteration.
#

The only reason for x to be a constant empty string is to save one double quote character across the two ternaries

fleet wren
cinder karma
#

Or returns the first truth thing

#

And returns the first falsy thing

scarlet hollow
#

I know there's at least one eso-lang out there that has a dedicated character to output fizzbuzz from 1 to 100

#

lmfao

#

"I did it in one byte. I win!"

rotund violet
#

Another interview yeet. Ok Mr. Clever, thanks for coming, we'll call you. Maybe. Don't wait around.

scarlet hollow
#

I remember an job interview in college where the whiteboard challenge was to identify whether a string contained the four-letter acronym of the company

#

And apparently it stumped a lot of students

#

Not judging. If you go into it with only two years of learning C at uni, you're not really equipped to solve that on instinct

safe dragon
#

was includes banned

scarlet hollow
#

hehe no

#

I solved it three ways in 45 seconds

#

I got to use JS

rotund violet
#

I mean.. indexOf?

#

What's the catch?

scarlet hollow
#

indexOf, Regex.test and includes

#

I think

lethal walrus
#

oh C

#

oh no js

rotund violet
#

Maybe case-sensitivity? Unicode? I can think of a lot of ways to spice it up, I guess. Even in plain C with no libs, it's not that hard to multiple through with a for-loop.

lethal walrus
#

that's impressive

safe dragon
#

contains in C# or if you want to be fancy and use a .NET 9 feature you can define a SearchValues<string>

scarlet hollow
#

It was whatever language you wanted to use

lethal walrus
#

ahh

scarlet hollow
#

If you're gonna use a loop, you can do it with just one. No need for nesting

rotund violet
#

I had some really terrible interviewees but I don't remember any that were that hopeless (then again, they probably got screened out).

fleet wren
#

presumably the challenge is to implement it without includes

safe dragon
scarlet hollow
safe dragon
#

he would...

scarlet hollow
#

Glad you know who I'm referring to

safe dragon
#

he probably put the thought in my head

rotund violet
#

That'd be an acceptable answer to me. There's a fine line between passion and smugness, but I think console code is closer to the former.

fleet wren
#

power move is to pull out Nintendo 64 assembly and then utterly fumble at even implementing FizzBuzz

scarlet hollow
#

LOL

safe dragon
#

I did recently have some fuck up at work due to sql server apparently using UTF16 encoding when hashing strings cause windows be windowsing

#

strings can be funky

fleet wren
#

"My brain is performing 61535 calculations per second and they're all wrong!"

safe dragon
#

very impressive for every single one to be incorrect

rotund violet
#

I'm proud to announce that we are failing faster than ever before.

lethal walrus
#
const input = "This is a very cool company. THAT is the company's four letter name"
const chars = ['T', 'H', 'A', 'T']

for (var i = 0; i < input.length; i++) {
    if (input[i] == chars[0]) {
        inner: for (var n = 0; n < 4; n++) {
            if (input[i + n] != chars[n]) break inner
            if (n == 3) console.log('String found at position ' + i)
        }
    }
}

there wow so complicated

scarlet hollow
#

What is inner: ?

#

Is it a jump?

#

OH a labeled break out

lethal walrus
#

named loops

scarlet hollow
#

I see, I see

#

Can you have a named loop inside of a named loop and break out of the outer one using its name?

#

Never seen that before

rotund violet
#

That's the point of labels.

#

Wouldn't be very useful if you could only break out of the inner loop, would they?

scarlet hollow
#

Aha, neat

#

No need for snark, I'm only seeing them for the first time lol

rotund violet
#

C# has labels too.

#

Not used that often, but they exist.

lethal walrus
#

it doesn't really need to be named but it's nice for clarity

#

I had initially planned to break the outer which is why, and I removed the label on it but didn't the inner

safe dragon
#

I feel kinda dirty when I use named loops

#

idk why

scarlet hollow
#

For me it evokes goto which years of CS trained me to despise

rotund violet
#

Because goto.

scarlet hollow
#

ya

safe dragon
#

yeah probably

#

though a rather mild version of it

rotund violet
#

Honestly, usually, any labeled break can be refactored into a function. But there are a few exceptions.

#

(Exceptions usually involving obscure scoping, memory or other performance issues)

safe dragon
#

anything is possible if you believe in yourself

#

you can even solve the halting problem

rotund violet
#

Ok, that gif was annoying, I deleted it.

safe dragon
#

lmao

scarlet hollow
#

Unplug the computer-- halting problem solved

#

It always halts!

safe dragon
#

anything halts eventually...

rotund violet
#

If your timeline is "heat death of the universe" then for sure.

safe dragon
#

yes

#

that is exactly my timeline

scarlet hollow
#

Reminds me of that missile launch code thing

rotund violet
#

I think the halting problem is whether the program halts sooner than that.

safe dragon
#

a shame

cinder karma
scarlet hollow
cinder karma
#

I don't actually like opening a class and seeing a pile of functions and having to sort through them. If a function is only used in one other function it goes into that function

rotund violet
fleet wren
rotund violet
#

If a function is only used in one other function it goes into that function

That's FORTRAN style to me. At least in any OO language, it's the class that defines the abstraction, functions are just a way to organize the code inside them.

safe dragon
#

the air is full of unresolved memory leaks

rotund violet
#

I understand the allergy to a huge pile of 1 line "utility" functions - like everything else, moderation matters.

scarlet hollow
#

(the US government's drive erasure standard)

rotund violet
#

But a single 200-line function with 4 nested loops is far harder to understand than two 100-line functions with 2 nested loops.

#

(and much harder to test)

scarlet hollow
#

imo nested loops is a code smell but if it's a better fit for the problem, add comments and go for it

#

I have a bit of a laissez-faire attitude about empirical code standards

safe dragon
#

I will gladly split a function into several even if it will only be used once as long as what is being split off is still a logically separate process

rotund violet
#

If your nested loops are iterating over the rows and columns of a 2D grid, or the x/y/z values of a 3D geometry, or the x/y/z/t values of a 4D matrix, and so on, then it should be one function with nested loops.

#

If the nested loops are iterating over "sub-entities", "details" and so on, then usually it shouldn't be one function.

#

That's my rule of thumb, anyway. I'm sure someone can dig up an exception. (not an Exception)

#

Which, by the way, is a totally more effective way of breaking out of an outer loop - just throw!

safe dragon
#

I've actually seen that

scarlet hollow
#

I've actually written code that does something similar to that ngl

rotund violet
#

throw new BreakThisLoopException()

cinder karma
#

But

#

Raise StopIteration

rotund violet
#

Definitely joking. Is that VB you're referring to?

cinder karma
#

Is **literally how python works **

rotund violet
#

Really? I've written some python - measured maybe in the thousands of lines, but not tens of thousands - and I don't think I've come across that.

scarlet hollow
#

A web request inside a try-catch, and a non-200 status would still count as a resolve, so I threw manually when handling that to force every error condition into the single catch block

rotund violet
#

Guess I should consider myself lucky.

scarlet hollow
#

It was dirty, but it worked

cinder karma
#

It's not a common general usage thing just how the language works behind the scenes

rotund violet
#

Oh, you do it in the iterator.

cinder karma
#

Yeah

rotund violet
#

That's... somewhat less bad.

scarlet hollow
#

I still have yet to find a production use case for JS generator functions, but I really want to

safe dragon
#

why is it that and not like, break

rotund violet
#

I used generators many times, back in the days. Same reason you'd write an IEnumerable<T> with yield.

cinder karma
#

No, there is break yes

#

Crumble it would be the c# equivalent of implementing MoveNext and Current yourself

rotund violet
#

Ugh, like the ButtonCollection iterator.

#

Hate that thing.

safe dragon
#

ah

scarlet hollow
cinder karma
#

yield from SDVpufferheart

rotund violet
#

Is that a COMEFROM joke?

cinder karma
#

No

#

Actually good python keyword

safe dragon
#

I actually almost never find myself in a situation where I want to use yield

cinder karma
#

def fun():
yield 1
yield from (other generator)

scarlet hollow
#

oh interesting

cinder karma
#

It's equivalent to

for i in other_gen:
    yield i
rotund violet
#
public static IEnumerable<T> ToEnumerable<T>(this IEnumerator<T> enumerator)
{
    while (enumerator.MoveNext())
    {
        yield return enumerator.Current;
    }
}

A trivial example - but a good one, that you really can't implement properly without yield.

scarlet hollow
#

I think the only way to do that in JS is

function* inner() {
  yield ...; // something
};

function* outer() {
  yield 1;
  for (x of inner()){
    yield x;
  }
  yield 2;
}
scarlet hollow
safe dragon
#

save that precious line of code

scarlet hollow
#
function* outer() {
  yield 1;
  for (x of inner()) yield x;
  yield 2;
}
#

Line saved

safe dragon
#

incredible

rotund violet
#

Any time you want to flatten a recursive structure, you'll probably use yield.

safe dragon
#

not something I do very often

cinder karma
scarlet hollow
#

Yeah I'm trying to think of a case where I'd need that

cinder karma
#

Example of yield in the content patcher lexer

rotund violet
#

¯_(ツ)_/¯

I guess it's on my mind since I just wrote a UI library and that involves a lot of widget and coordinate trees.

safe dragon
#

I think I have 1 I worked on recently where I could have used it

scarlet hollow
#

wtf does yield break do?

#

lol

rotund violet
#

It's the equivalent of return in an iterator block.

scarlet hollow
#

Oh

safe dragon
#

lets you take the day off

scarlet hollow
rotund violet
#

But... it's Saturday already.

#

Don't write it for another few days.

scarlet hollow
#

And I have jury duty Monday and Tuesday

#

So it'll be a Wednesday thing I guess

rain apex
#

is jury duty fun

regal ingot
rain apex
#

do they give you free pizza

scarlet hollow
#

I will soon find out

#

No

rotund violet
#

is jury duty fun

Is that a serious question?

scarlet hollow
#

Me personally I've got a penchant for all things law so

rain apex
#

yea i never got picked for it before

scarlet hollow
#

I've always been excused or dismissed so this may be my first time serving too

cinder karma
rotund violet
#

Even so - while there are folks who don't try to get out of it and consider it their civic duty, it's legendary among the activities most people avoid at all costs.

cinder karma
#

I hate it. Why. Why has my loop variable escaped.

rotund violet
#

Not escaped - "hoisted".

regal ingot
cinder karma
#

Ah yeah

scarlet hollow
#

Oh yeah, those for variables should be const tho, on the real. var will still scope properly but

cinder karma
#

But wouldn't kt false positive on "THA*"?

regal ingot
#

which just goes to show why we do code reviews even with simple problems and experienced developers

rotund violet
#

Personally, I didn't comment on it because I was talking obliquely about FizzBuzz and FizzBuzz-like problems, not offering to do code reviews.

cinder karma
#

Never mind the break inner is in a different locairon than what I thought it was

rotund violet
#

I know there's always a group who can't resist the opportunity for code golf and whatnot, nothing against them; I stay out of it.

regal ingot
#

(and also goes to show why the answer is almost always "use the function built in to the language/standard library/platform that already does what you want, but that wasn't really the purpose of the exercise here)

rotund violet
#

Yes. Don't roll your own crypto, don't roll your own substring search, definitely don't roll your own regex.

scarlet hollow
#

Not proofread, not tested

lethal walrus
#

return not in function

scarlet hollow
#

Yeah there was no function wrapper in the original so I didn't bother to add one and reindent

#

Pretend it's there

lethal walrus
#

works fine in a function though

scarlet hollow
#

yippee

#

In reality, though, a built-in which runs as a V8 native function is better in every way

#

But that's obviously not the point of whiteboarding

regal ingot
#

still relies on the language javascript returning a value (Undefined) when using [] to access beyond the length of a string

scarlet hollow
#

How so?

regal ingot
#

oh, wait... sorry...

#

wasn't paying enough attention while doing other things. nevermind.

scarlet hollow
#

All good happ

#

I suppose technically if match was empty string then the undefined behavior would be momentarily relevant

#

But the function could be refactored to perform the matchIndex === match.length check first, and then it's a non-issue

#

Or, hell, just check that condition explicitly at the top of the function for clarity

cinder karma
#

(Sadly)

scarlet hollow
#

Replacing matchIndex === match.length with matchIndex >= match.length would fix the 1/255 edge case too

cinder karma
#

Because there isn't a one to one correlation on match patterns and the matchee sequence

scarlet hollow
#

Oh, you mean automatic optimization?

cinder karma
#

For il helpers often build in a little fuzzy (ie match both stloc and stloc_s)

#

No, it's an optimization over double loops

#

Which is what every single ilhelper does

#

I forgot the name of the two guys

scarlet hollow
#

I mean, like, you’re seeing if the compiler could optimize out the nested loop?

#

Or maybe I misunderstood

cinder karma
#

No, il helpers often do sequence searching

#

Sortu

scarlet hollow
#

I have no idea what those are lmao

cinder karma
#

Like this is searching for these five opcodes in sequence

#

But unlike substring match, it's fuzzy, I can't just jump forward the length of the sequence

#

I have to check every position

scarlet hollow
#

Ohhh I see

#

So like AXBCD satisfies the match ABCD?

#

Or something

cinder karma
#

No, but imagine if a sequence matcher was four always Trues and like, match stloc or stloc_s

scarlet hollow
#

I’m gonna be real with you, this is going over my head

rotund violet
#

Substring match could be fuzzy too... if it's regex. Or even case-insensitive.

cinder karma
#

Sorry we do a lot of raw bytecode manipulation here

scarlet hollow
#

I am a real, actual, factual front-end engineer

cinder karma
#

Yeah but regex does backtracking

rotund violet
#

(?>exp)

cinder karma
#

And case insensitive I can sorta do a projection...maybe

#

Not sure here

rotund violet
cinder karma
scarlet hollow
#

re2 intensifies

cinder karma
#

A bunch of us wrote helpers to help us do raw bytecode stuff

scarlet hollow
#

Wait is that re2

#

lol it is

#

re2 my beloved

cinder karma
cinder karma
#

This presentation was recorded at GOTO Amsterdam 2023. #GOTOcon #GOTOams
https://gotoams.nl

Mark Rendle - Creator of Visual ReCode with 7 Microsoft MVP Awards & 30+ Years of Experience Building Software @MarkRendle

RESOURCES
https://twitter.com/markrendle
https://github.com/markrendle
https://linkedin.com/in/markrendle

ABSTRACT
Most of the t...

▶ Play video
#

This is what I'm listening to while I garden

lethal walrus
#

wow i have https on my personal site now

#

revolutionary

pliant snow
#

time to ddos it

lethal walrus
#

oh cloudflare didn't migrate the subdomains

#

how did it get es.pillow.rocks and gh.pillow.rocks but not xnb??

#

uhhh
why does aws still do some stuff

#

hm
xnb2 works

scarlet hollow
gaunt wadi
#

that message seems fine, but general tip: don't circumvent the filter by reposting blocked messages as images 😄

leaden marsh
#

That's a good point that I didn't consider, though I really am curious what is blocked there

#

Oh wait I think

#

Nevermind I know that triggered it

#

"lol I'm"

dark veldt
#

Stop tripping the censor, Myuu

leaden marsh
#

Sorry, my bad

dark veldt
#

I'm joking with you

#

sorry if that came out all letmewhoop

leaden marsh
#

Oh! SDVpufferheart

dark veldt
#

lmao

sweet monolith
#

tone tags logooo

dark veldt
#

Yes, please don't post blocked messages. 🙂

dark veldt
scarlet hollow
leaden marsh
#

A somewhat perfectly timed blocked message after discussing regex & pattern matching lol

scarlet hollow
#

Anyway, what I meant to say was, er,

The timing of this is so coincidental, and I am laughing out loud as a result. This is because I'm currently working on migrating my parents’ business’ website for the first time in a decade and adding https as part of that

#

Like the modern day Shakespeare of evading a regex filter

leaden marsh
#

Beautifully put

scarlet hollow
#

Thank you, thank you

cinder karma
#

It's interesting what people consider "good value" in a video game

#

(Kinda similar to the knittingland joke of "why pay $50 for a sweater when you can pay $100 for yarn then spend 100 hrs knitting said sweater. ")

safe dragon
#

when I was a teenager and had little money my definition of good value was simply how many hours of gameplay I could get out it per euro

#

now I've moved on and it's based simply on a vibe

crystal wren
#

Fact is at this point, I would be content if Stardew was a typical AAA game price.

#

Would have likely been significantly more hesitant to buy it at first...

cinder karma
#

Typical triple a battery what

crystal wren
#

Also, AAAA batteries are my favourite.

dusky gust
#

What about the forgotten A size

safe dragon
#

A

cinder karma
#

Interesting that the term comes from bonds though

#

Something something Moody downgrades Activision from AAA to AA on the back of repeated sexual assault lawsuits

safe dragon
#

ah but you forget 1 key factor

#

they make call of duty

cinder karma
#

(Call of Duty has no meaning to me.)

#

(Video game, faux military, often advertises to teenage boys)

safe dragon
#

money printer game franchise that will sell regardless of controversy

thin estuary
safe dragon
#

boooo

#

0/10 I'm switching to Javascript

cinder karma
#

Eh, for languages, better right than fast

devout vault
#

What's so bad about extension types

#

Oh is the boo because it's gonna be 14 not 13

pliant snow
#

C# 2014

cinder karma
#

Discriminated unions when

pliant snow
#

I think people discriminate against unions now

devout vault
#

Stop 👏 Union 👏 Discrimination 👏

floral parcel
crystal wren
#

Wait, they use AAAA!?

#

That's hilarious. I love it. SDVkrobusgiggle

cinder karma
#

In a pinch you could do this

crystal wren
#

...WHAT.

cinder karma
#

Ngl I thought you knew this already and that was why aaaa was your favorite

#

Note that this doesn't work with every 9v, there are at least two configurations,

pliant snow
#

yeah theres a few battery types like that, where theyre just other cylindrical cells bundled together

safe dragon
#

does make sense

#

makes manufacturing simpler

rotund violet
floral parcel
rotund violet
#

According to what I've read, they are actually LR61s, which are about 1/8" shorter than an AAAA. They'd probably work in some AAAA slots but fall out/fail to make contact in others.

scarlet hollow
#

If you’ve ever owned an RC car (or cordless house phone, in some cases), this type of battery will be very familiar— which shows the cells a lot better

#

A lot of internal consumer electronics batteries are also made up of individual cells wired in series, as well

lethal walrus
#

what shells do you linux people use?

cinder karma
#

Zsh

#

I'm old

safe dragon
#

I've used bash, zsh and fish but currently just bash

#

how does using zsh make you old. that's the one people often use cause it has an easy way to install themes

lethal walrus
#

i use zsh on mac

safe dragon
#

it's younger than bash as well ever so slightly

lethal walrus
#

it occured to me I have a spare nvme drive so planning to dualboot linux

safe dragon
#

could just stick with zsh

pliant snow
#

im using fish

safe dragon
#

personally I just don't particularly care which shell I'm using cause I don't do much with it beyond just calling a command with some arguments

#

if I'm feeling particularly adventurous I might pipe something into another command

lethal walrus
#

i should use a fancy prompt thing

pliant snow
#

I have a custom prompt, but not one with fancy backgrounds or anything. It just says the time and git branch if there is one

#

atuin is also nice

lethal walrus
#

thinking of using starship

#

oh fish has completions

#

oh might use fish then

pliant snow
#

yeah thats the main reason i use it

#

its out of the box

lethal walrus
#

probably going to go with arch bc pacman for switch dev

pliant snow
#

I set up the gba dev stuff once, its p easy to do

lethal walrus
#

yeah msys is confusing though

#

and the packages are just on pacman so it's easier

pliant snow
#

my humble shell prompt

cinder karma
#

Mine is basically thr same except the time is on the right

#

And I have a little git branch thingies with little symbols for changed/added/removed

lethal walrus
#

i should figure out nerd fonts

pliant snow
#

is there anything else to them other than installing the font and looking up the glyph you want

safe dragon
#

I think there's like a tool to create a nerd font out of other fonts

lethal walrus
#

i've no idea where to install them tohugh lol

safe dragon
pliant snow
#

via the package manager?

lethal walrus
#

oh

safe dragon
#

if it's available there, yeah

#

but fonts are easy to install either way

rain apex
#

fira code my beloved

pliant snow
#

I have ttf-hack-nerd installed

lethal walrus
#

nice

pliant snow
#

idk why I picked that one, but it works

safe dragon
#

it do be a font

#

why are some of these nerd fonts not even monospace

pliant snow
#

for hipsters

safe dragon
#

I should pick some random programming font to for some reason be a really big fan of and use everywhere

lethal walrus
#

jetbrains mono is nice

safe dragon
#

I tend to use that one

#

well

#

I use whatever the default font is of any specific editor the most

#

can't say I've ever even considered changing the font for visual studio

rotund violet
#

Lucida Console FTW.

#

Consolas isn't bad either.

lethal walrus
#

is that the microsoft one

pliant snow
#

I'd have to learn how to change my neovim font

#

oh it just uses the terminal font

#

now we fight over the best terminal

lethal walrus
#

i'm planning to just use konsole

#

unless anyone has an objectively better idea

safe dragon
#

konsole does the job

#

I tend to use alacritty

pliant snow
#

I use foot

safe dragon
#

I've used foot and kitty as well

pliant snow
#

foot just feels the snappiest, idk how else to quantify it

safe dragon
#

I understand

#

it feels very snappy

#

as long as it beats the windows terminal

rotund violet
#

is that the microsoft one

I don't think either are "owned" by Microsoft, though they're both included in Windows and/or VS.

worn remnant
#

i mostly don't care which gui terminal emulator i use as long as it has copy-paste to/from the desktop clipboard and i can change the fonts and colors. that's essentially every terminal, so i am not picky

safe dragon
#

I'll add to that true color support

#

mostly relevant for terminal code editors

pliant snow
#

actually Fira is p nice...

rain apex
#

its got cute ligatures DokkanStare

worn remnant
#

i've been using monaspace (neon) lately and it's fine. even though i love fonts and typography broadly, i am not married to a particular font and i switch it up from time to time.
however, i hate programming ligatures

pliant snow
#

i got the one without ligatures lol

lethal walrus
#

/mnt/c/Coding/SDV Converters/TMXL2CP/TMXL2CP$ python3 -m pip install -r requirements.txt
/usr/bin/python3: No module named pip
nghnghngnh

rain apex
#

I thought u r use arch

lethal walrus
#

no i'm windows

#

i'm planning to set up arch though

lethal walrus
rain apex
#

Ah ok I was ahead of myself LilyDerp

lethal walrus
#

why did I have to hardcode all these to be \\

#

it was a remaining \\

candid pilot
#

was helping a friend set up modding the other day. it's crazy how slow the built in zip expansion is. genuinely snails pace. and then i download 7zip for them and it's over in an instant but like. omg what did they even set up

#

the built in archive expander on mint works just great. although it might've just installed 7z for me lol

#

yeah it did

#

alright

safe dragon
#

apparently windows is using some archive extraction code that hasn't been meaningfully updated since 1998

#

it was originally sold as part of the Windows 98 Plus Pack

pliant snow
#

im sure compression algorithms havent changed since then

rotund violet
#

I always wondered why opening a zip file in Explorer was so brutally slow, and could even drag down the rest of the system with it.

pliant snow
#

for some reason I didnt think windows even supported zip out of the box

fleet wren
#

I had not seen a single Windows XP installation without WinRAR installed

#

if Windows' zip implementation was flawed I don't think a single soul noticed

rotund violet
#

Plenty of us noticed. Installing 7zip is one of the first things I do in any new install.

rain apex
#

Were the zip features a easily accessible thing before win 7?

#

I remember a zip/rar would prompt open with rather than just open in file explorer as a folder

safe dragon
#

don't think they were

#

I'm sure microsoft does patch their algorithm when there's an actual major bug in it

#

but the underlying algorithm hasn't meaningfully changed in over 20 years apparently

#

I'm guessing the zip specification hasn't changed in many ways that'd break old implementations

pliant snow
#

zips major strength is it's branding. "zip" is just such a better name than rar or 7z or whatever

rotund violet
# rain apex Were the zip features a easily accessible thing before win 7?

Depends what you call easily accessible. A number of people turned the feature off in Windows XP because, even though it wasn't entirely integrated into explorer at that time, it was integrated into the indexing service and the system could slow to a crawl when first indexing a large zip file.

#

My memory's telling me that it's been a shell extension since Vista, but I guess it could have been 7.

pliant snow
#

Windows 98 it claims

rain apex
#

oh yea i memory holed vista completely

safe dragon
#

I skipped vista entirely

rain apex
#

perhaps its more the popularity of the rar format that got everyone to install winrar

rotund violet
#

I have no positive memories of WinRAR.

rain apex
#

everyone as in avg non programmer user

rotund violet
#

Zip has its issues, and Windows' Zip support has its own separate set of issues, but RAR is just plain awful.

safe dragon
#

I still sometimes see people with winrar

rotund violet
#

chu - I'm not saying it wasn't ubiquitous, just that it was miserable.

rain apex
#

yea i agree all hail 7zip

rotund violet
#

WinRAR = "Let's all ditch the format that's been stable for 15 years and is supported by well over a dozen software programs including Windows itself, and go for a copyright- and patent-encumbered pile of junk that keeps begging for money, maintained infrequently by a single guy, because the archives are 3% smaller!"

#

Eventually they did reverse-engineer the format, although I think there may still be pending lawsuits over that even today.

#

There were other formats that were just silly (who remembers ARJ?), but they weren't as... hostile as RAR was.

rain apex
#

what was the rar marketing team's secret yggy

fleet wren
#

you're not gonna find a single computer in Vietnam that has 7zip installed over WinRAR

#

"It's smaller" does wonders for a third world country's piracy scene

rotund violet
#

zips major strength is it's branding
Incidentally, there is another reason for its popularity: it's pretty easy to incorporate into other software since it most commonly uses deflate and has many similarities to gzip. If you've ever tried to add .7z support to your own app, you may have noticed that it's... inconvenient.

#

7z stands head and shoulders above the rest as a standalone program, but as a library it's a huge pain.

#

As far as piracy, yeah, I know that's where RAR is most popular, but even back in those days, neither storage nor bandwidth were at such a premium that it would make any kind of difference. Though I think what did make a difference, at least for a while, was the obscurity of the format; since file hosting services didn't "understand" RAR, the archives stayed up longer.

fleet wren
#

Easy archive splitting played a part as well, though I think that's possible with zip as well

rotund violet
#

Yeah, all the major archive formats including zip support that. Maybe RAR made it easier, or Zip didn't have it at that particular time? Not how I remember it, but it's possible.

pliant snow
#

i think the rar gui was simply easier to use for that

rotund violet
#

It was definitely more XPish.

#

I remember it used those candy-apple quasi-3D icons and big honkin' toolbar buttons for every function.

frosty echo
#

rar has some nice features that others (e.g. 7z) still lack, and I think it's probably more than a 3% difference for a lot of things

rotund violet
#

7z almost always has better compression than RAR; RAR was better than .zip.

frosty echo
pliant snow
#

i think zstd is king now, although I never see it in consumer aspects

frosty echo
#

Yes, but 7z is comparatively very new

fleet wren
#

yeah and when you make a 7z file you get questions like "yo wtf is this format I want a rar" and that brings us to another reason rar is popular: inertia

rotund violet
#

i think zstd is king now, although I never see it in consumer aspects
Definitely the king in gaming.

#

What's the competitor - brotli, I think? It's pretty popular too.

#

And the popularity of zstd is a tacit acknowledgment that compression ratios aren't as important as performance. They never were, once floppy disks stopped being a thing.

pliant snow
#

zstd is I think what I use for my server's filespace compression

#

nvm i use lz4 apparently

fleet wren
#

Safari still doesn't support zstd apparently
why am I not surprised

worn remnant
pliant snow
#

apparently chrome and firefox only got zstd support this year

worn remnant
#

when you play a game by running it directly from your terminal and you see some of the log messages left in the build: (/lh)

talk was created
Room exist
Is this being executed?
Creating light_surface because it was supposed to exist at this point
freeing title cat surface```
supple ether
#

lol

worn remnant
#

i love video games

supple ether
#

it's cute

cinder karma
#

Freeing title cat surface❤️

#

Do you ever have days where you get interruption after interruption

#

Also compact keyboards are super annoying actually

rotund violet
#

Do you ever have days where you get interruption after interruption

Do you ever have days where you don't?

safe dragon
#

idk how people actually use 60% keyboards

#

I've used down to 75% which was still fine but 60% just starts removing crucial keys from the keyboard and putting them behind a layer

pliant snow
#

just use a 1% keyboard with 100 layers

safe dragon
lethal walrus
#

as someone with a full keyboard with numpad and some macro keys probably

crystal wren
gaunt wadi
#

the delivery person: unknown huh? closes eyes and throws package into a nearby bush delivered

safe dragon
#

not even the country is known

crystal wren
#

Yeah, the unknown part is a surprise to me!

#

I didn't know (but I'm not shocked) that Framework ships from the Netherlands in Europe, though.

cinder karma
#

Shift ctrl ; in excel 💖

safe dragon
#

that's good news for me though as someone who lives in the netherlands and has considered one before

#

I see you've transitioned from funky command line scripts on latex documents to excel

gaunt wadi
safe dragon
#

I think aquo has one

gaunt wadi
#

I would never follow in the footsteps of aquo and use a thing he uses

#

never ever

ivory shadow
#

That's kind of where I'm at. I've had the same laptop since 2016 and I'm just... waiting for it to stop working so I can get a new one. But it keeps working

gaunt wadi
#

not even once

ivory shadow
#

But once it finally kicks the bucket, I'm getting a Framework.

safe dragon
#

I've had the same laptop since 2015 so same boat

ivory shadow
#

90% of what I use it for at this point is remote desktop from other places in my house.

gaunt wadi
#

my last legitimate use of my laptop was to do advent of code every night when it released and I was out of the house

rain apex
#

framework feels pretty similar to other ultrabooks (i think thats the right marketing word?) in the price range

gaunt wadi
#

I went to a christmas party and whipped out my laptop to do the problem in the middle of it

safe dragon
#

lmao

ivory shadow
#

I'm hoping Framework makes a mainboard based on Snapdragon once those are more broadly available.

gaunt wadi
#

the partygoers were legit impressed

gaunt wadi
#

my deception is uncovered

rain apex
#

the reason i got one is cus my dell xps battery keeps becoming spicy and framework had the best customization option for how much storage + ram blobcatgooglyblep

pliant snow
#

it is a nice laptop, i like it

ivory shadow
#

oh no not the spicy pillows

rain apex
#

all these other brands make u get the $$$ cpu even if u just want 1tb storage

pliant snow
#

pros:

  • good linux
  • you can swap out the ports which is sick
  • you can just anything you want on it rather than replace the whole thing. I swapped out my original intel board for an AMD one recently

cons:

  • battery life isn't the best
  • downward firing speakers
  • theres some harsh seams where things don't quite go together well, but its worth it for being able to just open it with a screwdriver
#

shit

gaunt wadi
#

that's a big con

safe dragon
#

didn't press shift enter smh

rain apex
#

i think the port swapping thing is a negative they coulda fit twice as many ports in the same amount of space medlook

#

wheres my 2 usbc expansion card

gaunt wadi
#

imo my old laptop has ports i never need, custom ports is nice

lethal walrus
safe dragon
pliant snow
#

i kinda doubt it has enough bandwidth for that, given the cards are just adapters for a single usb-c port

lethal walrus
#

ig they wouldn't be full bandwidth, true

ivory shadow
#

They couldn't necessarily fit twice as many ports, depending on how the PCIe lanes are distributed to the usb controller.

gaunt wadi
#

i've heard the battery life thing about linux and laptops in general as well

pliant snow
#

i know on the AMD board theres weird limitations where the front slots dont support the newer HDMI spec or something, which the intel board didnt have issues with

safe dragon
#

despite laptops being portable, I never use one without being connected to a power outlet

rain apex
#

yea but the point of 2 usbc would just be a integrated version of a usb hub

pliant snow
#

yeah, idk if the battery life is just linux in general or this laptop

#

i mean, you could just replace all four cards with usb-c

ivory shadow
#

AMD graphics has poor HDMI support in Linux, because of licensing constraints. Maybe that's it?

pliant snow
gaunt wadi
#

ur telling me recursively plugging in usb hubs into my usb hubs doesn't give me 512 ports worth of usb?????

#

what's the point been then

safe dragon
#

you can download more usb ports

ivory shadow
#

The HDMI governing body refuses to let them implement new HDMI standard in Linux because their drivers are open so they would be effectively publishing the spec.

pliant snow
#

On the most recent Intel Framework, all four of these expansion card bays support Thunderbolt 4. Its AMD counterpart’s connectivity is a bit more of a homework assignment. You have USB4 in the rear left and rear right, USB 3.2 and DisplayPort in the front right, and only USB 3.2 in the front left. That means you can’t use an HDMI module on the front-left port, and the rear ports will have faster data transfer speeds. It’s far from the end of the world, but arranging your ports on the AMD system requires a bit more thought than the free-for-all that the Intel system afforded.
-# https://www.theverge.com/23911664/framework-laptop-13-2023-amd-review

gaunt wadi
#

"i want a governing body to control my hardware standards" statement by the utterly deranged

ivory shadow
#

Honestly I'm surprised the EU hasn't added the HDMI thing to the list of "things to start legal shit over", to my knowledge.

safe dragon
#

I would like to fight any company that wants to patent and close source basic necessary specifications

ivory shadow
#

HDMI is effectively an industry standard so they shouldn't be allowed to restrict it.

gaunt wadi
#

agree

devout vault
#

Never heard of these framework laptops, they look neat

safe dragon
#

I doubt the EU governing body even understands what HDMI is I wouldn't expect much there

ivory shadow
#

I first heard about them cause of a LTT video.

gaunt wadi
#

ive seen good stuff from one eu department on pressuring tech companies

ivory shadow
#

And I really appreciate anyone making modular / more repairable things.

gaunt wadi
#

I forget what it's called

pliant snow
safe dragon
#

maybe... but it's all usb docks nowadays

rain apex
#

say have u guys heard of eurocom?

pliant snow
#

oh all our projectors are still hdmi lol

gaunt wadi
#

no but i've heard of eurocorn

#

it's corn, but in europe. a wild concept

#

what will they think of next

rain apex
#

a long time ago when i was a wee lass i wanted to get one of their laptops, for similar "high customization" reasons

pliant snow
#

no but ive heard of europopcorn

safe dragon
#

our projects are work are the fuckin worst. You need to install some random ass executable and then connect this funky ass usb device and then you can "link" your laptop to the meeting room display.

I have not experienced it working correctly even once in the 4 years I've been here

cinder karma
#

Yeah, if I were to buy a laptop today I might look at framework

ivory shadow
#

I'm surprised electronics companies aren't trying to be "modern" and replacing HDMI with usb-c, like how phones killed standard headphone jacks.

pliant snow
#

the fun thing is when I upgraded my laptop, I was left with a perfectly fine motherboard with ram and wifi card, so I got their case and now I have another machine

#

i dont have any ideas what to do with it tho

safe dragon
#

a chess bot

pliant snow
rain apex
#

piracy

rotund violet
#

<- hipster macbook enjoyer

ivory shadow
#

I should clarify that I mean... not laptops.

#

Laptops and phones are very space constrained compared to everything else.

#

So a physically smaller port actually makes sense at least in those cases.

pliant snow
#

was there a phone with an hdmi port at some point

safe dragon
#

I want to beat up every single laptop manufacturer that has decided to do the absolutely mental insane thing of just adding a singular usb c port and expecting you to just use a docking station to do fucking anything at all

pliant snow
#

surely there was

pliant snow
rotund violet
#

Can't imagine a full HDMI port on a phone, though.

ivory shadow
#

A full HDMI port on a phone would look so freakin goofy

crystal wren
rotund violet
#

It would have to be a very big phone.

pliant snow
#

im a trendsetter

ivory shadow
#
public Trend Aquova {
    set {
        // ???
    }
}```
crystal wren
#

I still like that I can have multiple DisplayPorts on the laptop if I deem it necessary.

fleet wren
#

me inserting 4 ethernet expansion cards for tetrabit internet speed

rotund violet
#

At least Thunderbolt hubs are actually good, unlike the garbage they market as USB-C hubs.

safe dragon
#

I wish docking stations weren't a nightmare of checking the exact specifications of your laptop's port + the optional protocols supported by the dock just to know if you can run two 1440p monitors from it(the answer is usually no)

#

I dove into that nightmare for several days just figuring out a dock that'd work for my mom's work laptop which is a microsoft surface laptop which had only a singular fuckin port on it not counting the charging port

#

I mean there was the "easy" option of just buying the surface dock but that thing is expensive as hell

#

sure let just drop 300 euros on a dock

ivory shadow
safe dragon
#

oh yeah I forgot the part that the cable also needs to support the correct protocols

#

why do we even have standards

#

when they're like this

ivory shadow
#

There should be labelling requirements for any device with a USB-C port that implements any standard other than just... pure USB.

safe dragon
#

it definitely doesn't help that manfucturers don't like to list in clear terms what they do or don't support

ivory shadow
#

Especially with cheap garbage from China, which is like 90% of usb-c docks

safe dragon
#

yeah cheap garbage from china is almost the entire market

#

and then when I would find one I thought would work I find out it's not sold in my country

rotund violet
#

Especially with cheap garbage from China, which is like 90% of usb-c docks

I think it's 100%

ivory shadow
#

There's also expensive, name-brand garbage from China

safe dragon
#

nothing makes me feel more confident a product is good when I see the exact same dock being sold under 5 different brand names

ivory shadow
#

"Hmm yes, this is so good... that a lot of people want to sell it."

#

Definitely nothing to do with how Amazon's terribly policies make it easy for one group of people to open dozens of seller accounts and completely invalidated brand names as anything but a way of manipulating consumers.

safe dragon
#

over here it'd be bol.com instead of amazon but yes same issue

rotund violet
#

expensive, name-brand garbage from China

You mean the stuff with unpronounceable names like FRBWZTNUXWPQS?

#

Or SHABOOXNPLRT. Always in ALL CAPS, of course.

cinder karma
#

Ngl I think idle has set back python development by insane amounts

#

The worst python ide is the one newbies often encounter first

safe dragon
#

I've never heard of idle

cinder karma
#

Crumble, the autocomplete doesn't work

#

I don't get docstrings or parameter names

#

This is suffering

safe dragon
#

is there any reason you're using that over just using a regular code editor with a python plugin

#

or like... pycharm or something

cinder karma
#

It's....a long story

#

You also don't want to know what version of python I'm running here

rain apex
#

is there a prize if we guess right

safe dragon
#

don't worry. I don't know enough of python to be horrified

fleet wren
#

I have never heard of IDLE before, but then again I'm a zoomer and we have better IDEs by this point

#

so please regale to us your stories

#

(Disclaimer: zoomer spiritually, not physically)

rotund violet
#

You also don't want to know what version of python I'm running here

Is it an actual version, or a mutilated vendor-specific fork?

pliant snow
#

I've used IDLE before I think, it comes bundled with a windows install of python iirc

#

but idk how to tell you this, python is insanely popular and widespread

fleet wren
#

I'm a Linux user by the time I started with Python, and I just used gedit + python test.py

#

Back in my home country we were taught at least 4 different programming languages before even touching Python

safe dragon
#

I was never taught python to begin with

#

I mean I had to use it once but they didn't teach it...

#

I think I just used notepad++

pliant snow
#

i dont think anyone actually uses the IDLE editor

cinder karma
#

I think if I were to pick a computer for myself it would be a desktop

#

And if I were to cheap out and buy a used business laptop I have no choice

fleet wren
#

same, but I'll be damned if the Framework isn't cool though

safe dragon
#

I'd get them partially just to support the concept

floral parcel
#

I use a custom built desktop most of the time and only use a laptop for work.

safe dragon
#

always wonder what porting to mobile/console actually means for sdv

#

with how long it takes it sounds more like reimplementing the whole update

#

I'm sure y'all know better than me

#

if it were just updating some platform specific api bindings it wouldn't take that much to get an update out for a different platform

#

sounds like tedious work regardless

cinder karma
#

(Only casey/pathos/ca/myuu/whatever subcontractors are handling console know I would guess.)

rotund violet
#

From the various issue reports, it seems like a lot of the problem relates to Harmony. But then, if I look at the Android-SMAPI-Installer repo, it's mostly a mess of binaries - it's less of a "SMAPI loader" and more of an "APK generator" so there are probably a lot of different places things can go south.

#

I'm not sure if Android really has access to the full .NET Framework?

cinder karma
#

Net 5 mobile is xaramin

#

(Spelling may be wrong)

rotund violet
#

Xamarin, yes.

#

If .NET 6 isn't supported then that could be another issue.

cinder karma
#

Net 6 unifies though

rotund violet
#

Unifies what?

#

It was .NET 5 that got rid of the weird .NET Core branch and made the framework more-or-less portable, not sure what 6 adds in that regard.

cinder karma
#

My understanding is that the runtime net6 and beyond are no longer xamarin

rotund violet
#

I don't see any mention of Xamarin in the SMAPI repo or the Zane repo. I thought it was just a UI tool, not a binary loader or that sort of thing.

#

Even if it's somehow applicable in the main SDV source, wouldn't explain why SMAPI and certain SMAPI mods in particular have problems.

cinder karma
#

I thought xaramin was the name of the runtime on mobile up to net 5

devout vault
#

^

cinder karma
#

We definitely noticed the runtime has different behavior (for example, stringsplitoptions.trim(I forgot) didn't work on mobile)

#

Trim entities?

#

Something like that

#

It's been a day though

#

My meeting sock has more progress than I would like

rotund violet
#

Ok, it's a little confusing because Xamarin is an entire company, but wiki says they also made "Mono for Android"

cinder karma
#

(Hi Casey! I hope you had a good day)

strange copper
fleet wren
#

you can, if your definition of making art is "making vivid scenarios involving your OCs in your head with a tacit promise to write them down eventually somewhere"

strange copper
#

*scribbles dnd session plans on a sticky note*

#

My meetings have real irl people tho that'd be awkward

#

We have this one support hand-off but I am not on support rotations so every week I just sit there

fleet wren
#

yeahto clarify I'm doing it all in my head

#

spinning a cow in my mind is free, and so is writing sappy fanfiction

strange copper
#

Real

#

At one point when I worked remotely I'd do duolingo while waiting for pipelines to run and stuff lol

cinder karma
#

(Oh I knit through irl meetings)

#

But only really simple stuff like socks

supple ether
cinder karma
#

I need to go back to studying anyways so see yay

devout vault
cinder karma
#

(Attributes share absolutely nothing with decorators for the record)

supple ether
#

yeah I just looooove manual sprite rendering in python /s

cinder karma
#

(Other than sitting on the function)

supple ether
#

I will give pygame credit for helping make game dev more accessible to beginners but that's the only thing I'm giving it credit for :P

devout vault
#

😛

cinder karma
#

It's always nice when there are two reasonable ways to do something

#

And Europeans do one way and Americans the other

#

Not

safe dragon
#

our build agents are pretty much at max capacity so these days it can sometimes take 30 minutes for your build to even start cause you're in a queue

#

idk buy these builds are so slow anyway

#

a build that takes like 20 seconds on my pc will take like 13 minutes for the build agent

cinder karma
#

...now i feel bad about complaining about fpga compile times

worn remnant
pliant snow
pliant snow
#

nixos continues to tempt me, if only there werent 1000 pain points using it

safe dragon
#

yet it tempts you

#

nixos is one of the few things that has never tempted me

pliant snow
#

not yet

safe dragon
#

maybe someday I will be lured

crystal wren
safe dragon
#

y'all

#

please never use blazor

crystal wren
#

I hope to never, thanks.

safe dragon
#

unless you enjoy restarting visual studio every few minutes cause it broke

crystal wren
#

Though lately I've been doing Java. I don't know if that's any better.

safe dragon
#

I'd hope so

devout vault
#

Java 🤢

crystal wren
#

I honestly don't hate Java. I just hate that I can't use an int as I'm a generic. Or a char. Or any primitive.

devout vault
#

At least it's not JavaScript I guess

#

You can use the boxed type I think?

crystal wren
#

Yeah, but having to do that all over is SO tedious.

safe dragon
#

I've been doing some funky dom manipulation in javascript today to make some layout someone dreamt up work

#

measuring locations and heights and doing shit based on that

#

😌

#

bless css grid or this would've driven me mad

crystal wren
#

Just use tables, you coward. /j

safe dragon
#

I think I would've just quit my job if they forced me to do this with tables

#

since the number of columns is dynamic based on how many fit next to each other

safe dragon
#

idk java at all

crystal wren
#

Yup, exactly!

#

Has to be Integer.

cinder karma
safe dragon
#

now you've confused me more...

#

you can't use int but you can use integer

devout vault
#

int is a primitive, Integer is an Object

safe dragon
#

does java have two integer types

devout vault
#

✨ Boxing ✨

rain apex
#

java has these primatives which are speshul

safe dragon
#

a boxed integer sounds like a disaster waiting to happen in 90% of cases

rain apex
#

and u gotta put em in a non speshul box

#

i.e. Integer

safe dragon
#

strange

#

I don't think I've ever used any language that restricts what can be using for generics as long as it is a type of some sort

crystal wren
#

Generics in Java just use type erasure I believe.

#

Meaning it has to be an object to work in a generic, and I dislike this fact.

safe dragon
#

understandable

#

is Integer at least a stack allocated object

crystal wren
#

Hahahahaha.

#

Good joke!

safe dragon
#

oh no

crystal wren
#

I... don't think so?

#

I'm still relatively early in getting to grips with it all fully.

devout vault
#

Haha, that is funny

rain apex
crystal wren
#

Wait, a generic class can't extend throwa... What.

rain apex
#

i thought the whole point of generics is to make the compiler write a bunch more funcs for you so this design is confusing me

safe dragon
#

Type erasure was implemented in Java to maintain backward compatibility with programs written prior to Java SE5
good old legacy causing terrible decisions

crystal wren
#

It's the specific way it handles generics by way of type erasure it seems is the entire problem...

safe dragon
#

I kind of always assumed C# and Java were essentially equivalent for basic stuff like this

crystal wren
#

Me too!

#

Which is why my brain contorted when I first learned this part.

cinder karma
#

Look up string equality

safe dragon
#

oh no

#

reference quality for strings with ==

rain apex
#

it is good for teaching value vs reference blobcatgooglyblep

cinder karma
#

Also happens for bigint iirc

#

Trips people up in apc

crystal wren
#

I mean that's fine, that didn't trip me up.

rotund violet
#

For reference, Integer is heap-allocated, and can be null.

safe dragon
#

how very exciting

rotund violet
#

Primitives and their boxed types are mostly implicitly convertible, though, it's not such a huge issue. Being unable to use primitives in generics is really the only problem. Being able to use primitives in generics has its own set of problems, which were frequently painful in C# before we had constraints like default and notnull.

regal ingot
#

it's not like C# generics being an unholy mixture of templates and type erasure doesn't give us fits when writing transpilers

supple ether
#

How do generics make transpilers more complicated?

rotund violet
#

I'm not sure about that either. I guess it's harder to get the correct name of a private class or method, maybe?

They do hurt in heavy codegen scenarios like Roslyn analyzers/source generators, though - not that there's anything wrong with the way generics are implemented, just very difficult to think about the AST when you have to worry about generic arguments - not even knowing in advance how many arguments there will be! - and then those generic arguments potentially also being generic types themselves, and so on. Every single codegen task becomes inherently recursive. But I don't think that's what MIB was talking about.

rain apex
#

i thought you just MakeGenericMethod(type) and its ok most of the time think

supple ether
#

Yeah or just typeof with generics filled in

#

You can also MakeGenericType

rotund violet
#

MakeGenericMethod

For reflection, yeah, not codegen scenarios.

supple ether
#

Well yeah but codegen isn't transpilers which is specifically what I'm confused about

rotund violet
#

With transpilers you generally understand the arity and expected type args for a generic X so it's no big deal.

rain apex
#

yea i was respond to writing transpilers

supple ether
#

Codegen it makes sense but transpilers seem like that wouldn't be hard to work with

rotund violet
#

Or shouldn't be any big deal. ¯_(ツ)_/¯

#

If you're writing the actual injector, maybe it's a challenge.

rain apex
#

somehow a patch was made without getting the generic