RonSijm

joined 1 year ago
[–] RonSijm 2 points 1 year ago (1 children)

Come on, just "stuff" is way too vague...

It's either "fixed stuff" for a 3k LoC commit where you moved a bunch of stuff around, or "Added stuff" for a 5k+ LoC commit if you actually added anything new

[–] RonSijm 5 points 1 year ago (3 children)

for postgres and Ms SQLserver

It's not really a SQL Language feature, more an IDE feature. So to tell you where the settings are, we'd have to know which IDE you're using.

For example, in DataGrip (which I think you can use both for postgres and MSSQL), there's "Show warning before running potentially unsafe queries"

If you forgot to put the WHERE clause in DELETE and UPDATE statements, DataGrip displays a notification to remind you about that. If you omitted the WHERE clause intentionally, you can execute current statements as you planned.

[–] RonSijm 1 points 1 year ago (1 children)

My wife crochets and I’ve got to admit to being jealous that she has a physical object when she’s done.

It sounds like you don't really have an outlet to create artsy or physical stuff, but as a programmer there's plenty of stuff you can do...

For example, I've turned my entire house into a "Smart Home" - My house has smart lights that can be turned on be wifi, and my doors and rooms have motion censors that I've all programmed to work together, and turn things on an off when I'm walking around. You're programming a bunch of physical IoT things to work together, and the end-result when everything runs smoothly is pretty cool

Also I recently got a 3d printer (where maintaining that is a hobby in of itself) - as a programmer you can create a lot of cool stuff with that. Like there are scripts to play with to generate a Sierpiński triangle[1][2] - work on that, physically print that, and see the results as a physical object.

As a programmer you have plenty of skills to start creating random physical stuff. Even if it's not for your work, just pick it up as a hobby. Like I don't think your wife is a professional crochetter - so what's stopping you from crochetter or painting or sculpting or whatever

[–] RonSijm 5 points 1 year ago (1 children)

What we have is machine learning, just an algorithm that takes input and gives you output. It can’t act on its own.

Isn't that basically what "real learning" is as well? Basically you're born as a baby, and you take input, and eventually you can replicate it, and eventually you can "talk" for example?

But in the training data something was off, suddenly your AI is racist and gives every black person a lesser amount.

Same here, how is that different from "real learning"? You're born into a racist family, in a racist village where everyone is racist. What is the end-result; you're probably somewhat racist due to racist input - until you might unlearn that, if you're exposed to other data that proves your racist ideas were wrong

If a human brain is basically a big learning computer, why wouldn't AI eventually reach singularity and emulate a brain and beyond? All the examples you mentioned of what it can't do, is just stuff it can't do yet

[–] RonSijm 3 points 1 year ago (3 children)

How do you handle the existential crisis of our works being digital and transient versus having an actual, physical product?

Well this topic is very subjective, but I'll chime in...

"You have a right to perform your prescribed duties, but you are not entitled to the fruits of your actions." -

Basically: You should be programming because you like programming - Not because you like that people like your program, or that it might immortalize yourself somehow - Or because people might use your program forever and will remember you by it

You can say the same for every profession: You're the best doctor in the world and you healed millions of people. Great. 100 years later all those people are still dead anyways. What was the point?

Basically everything is temporary in the end, and everything is going to be forgotten. Seeing your job as a programmer as part of your identity and your applications as proof of your existence or digital legacy is pretty much pointless

[–] RonSijm 3 points 1 year ago* (last edited 1 year ago)

Don't think the size really matters... an IP is 4 bytes, and the port another byte, plus lets say 4 bytes for the UserId. So with some overhead, you can practically put about 100k addresses in 1 MB.

With that many addresses, you should probably be more concerned about the lookup than the storage. I'd probably put then in a Dictionary[UserId, SocketData].

Websockets don't usually stay alive for long periods, so there's not much point of storing them in a database. Unless you're building something serverless, but then I wouldn't build something myself, but just use Firebase Cloud Messaging instead

[–] RonSijm 5 points 1 year ago

Well since this is a Typescript / Microsoft kinda thread - there are replacements.. You can use C# with Blazor (from Microsoft)

And you can also compile Go and Rust to WASM (probably some other stuff as well that I'm not aware of)

[–] RonSijm 40 points 1 year ago

do you worry that Microsoft is going to eventually do the Microsoft thing and horribly fuck it up for everyone?

I'm not really sure what you have against Microsoft, or what "Microsoft classic" you'd be referring to...

In the last 10 years or so they pretty much moved everything C# related to Core, cross platform and open source. Even the decision making for the language is "Open source" - Microsoft is not really behaving the same as the Microsoft from 2000...

Soo, I don't really know how they could possibly fuck it up. They might add more and more features you might not like, but you could just choose to stick to an older version of the language

[–] RonSijm 35 points 1 year ago (4 children)

Take the same approach with tickets: Finish one in 10 minutes? You just get a new one. Finish the same one in 2 days, and claim "Pff, that was a tough one, but I did it!" - Makes the Product Owner think the Developer is working, and appreciates the result way more

[–] RonSijm 2 points 1 year ago* (last edited 1 year ago) (1 children)

In your original comment, it seemed like you were suggesting hashing only before transmission

Ok, that wasn't what I was suggesting, no. That would effectively make your password hash the password itself - and it would kinda be stored in PlainText on the server, if you skip the client auth and send that value to the server directly through the api or something

how does such a service (like Proton Mail) perform this in a web browser without having access to the data necessary to decrypt all of the data it’s sending? [...] do you send down an encrypted private key that can only be decrypted with the user’s password?

Yes, pretty much. I can't really find a good, detailed explanation from Proton how it exactly works, but LastPass uses the same zero-knowledge encryption approach - which they explained with some diagram here - with a good overview of the client/server separation of it's hashing.

[–] RonSijm 1 points 1 year ago (3 children)

I'm not really sure how it opens up replay attacks, since it doesn't really change anything to the default auth. There are already sites that do this.

The only difference is that instead of sending an http request of { username = "MyUsername", Password = "MyPassword" } changes to { username = "MyUsername", Password = HashOf("MyPassword") } - and the HashOf("MyPassword") effectively becomes your password. - So I don't know how that opens up a possibility for replay attack. There's not really any difference between replaying a ClearText auth request vs an pre-hashed auth request. - Because everything else server side stays the same

(Not entirely auth related), but another approach of client side decryption is to handle decryption completely client site - meaning all your data is stored encrypted on the server, and the server sends you an encrypted container with your data that you decrypt client side. That's how Proton(Mail) works in a nutshell

[–] RonSijm 2 points 1 year ago

No, the client side hashing doesn't substitutes anything server side, it just adds an extra step in the client

view more: ‹ prev next ›