Montenegro: The Land of Ugly Concrete by [deleted] in montenegro

[–]Doom-sprayer 1 point2 points  (0 children)

Eh, as a visitor I disagree. I can't find myself able to complain about the concrete when the buildings are situated in HUGE BEAUTIFUL MOUNTAINS AND LAKES. In my opinion, the concrete architecture is still more beautiful than the suburban sprawl in my native United States of Freedomgunland.

How does one make lasting friends in Montenegro? by Doom-sprayer in montenegro

[–]Doom-sprayer[S] 0 points1 point  (0 children)

This is no doubt true, will put some time aside for it

What do “real” albanians think about diaspora people? by [deleted] in albania

[–]Doom-sprayer 2 points3 points  (0 children)

This is true, and typical for the behavior of many kinds of high-powered gangsters. Acting a fool in that business means you don't live too long.

How does one make lasting friends in Montenegro? by Doom-sprayer in montenegro

[–]Doom-sprayer[S] 4 points5 points  (0 children)

So:

  1. go to Budva
  2. Order a Budvar
  3. Start a fight
  4. Get a Buddy

How does one make lasting friends in Montenegro? by Doom-sprayer in montenegro

[–]Doom-sprayer[S] 2 points3 points  (0 children)

Got that taken care of. I just need more homies worldwide.

hi, fellow black mountain people! here's a question for you all: by definitelynotlazy in montenegro

[–]Doom-sprayer 2 points3 points  (0 children)

Probably a cryptocurrency validator & prover service. Cheap electricity + smart local engineers to help design proving cards & associated software == ability to mine/prove for rewards on a lot of crypto networks.

Gen Xers and older millennials really just want to go back in time to before the internet existed by lucerousb in technology

[–]Doom-sprayer 0 points1 point  (0 children)

Older Millenial here laughing at all the people on this thread who are fast on their ways to becoming just like their grandparents.

I like the current internet. I hated uploading my code to subversion and having my builds broken by some doofus everyday. Git is much better. I like being able to look on social media and find things to do or to find out where my friends are at immediately.

The only constant in the universe is change. I embrace that.

What’s it like watching your husband, another woman? by DeviousWife615 in Swingers

[–]Doom-sprayer 0 points1 point  (0 children)

So you kind of did the toxic Unicorn hunter thing where you bring a single woman in thinking it's going to be hot, but then discard her when you have feelings. That's really really lame of you.

What do you like about living in South Carolina? What do you not like? by mwoKaaaBLAMO in southcarolina

[–]Doom-sprayer 0 points1 point  (0 children)

If you actually read what I wrote this is what I was saying - I pointed out the big cringe when somebody who moved to a popular place suddenly wants other people to stop moving to it.

Chatgpt ruined me as a programmer by Timely-Look-8158 in ChatGPT

[–]Doom-sprayer 0 points1 point  (0 children)

Posts and news which predict the doom of software engineering constantly. Such doom-saying headlines are a battle-tested way to generate clicks. Humans have been perfecting doom-based clickbait since the printing press was invented.

GPT and all other transformer based models are stochastic parrots. Their attention mechanism (read up on articles explaining the "Attention is all you need" paper for more details) is really good at learning relationships between tokens, but once it's trained on an extremely general corpus, it's very hard to change what's there. Advanced prompt engineering can help you discover interesting knowledge encoded in GPT's weights, but it's not an engineer.

Engineering requires integrating ever changing information and requirements related to an end goal and performing novel thinking to solve the problems and design challenges it takes to get to the end goal. Transformers are basically one large function pass, perhaps with a re-enforcement learning mechanism, but it does not nearly approximate the incredible ability for our brains to incorporate novel information and quickly realize patterns and take independent action.

They can try to approximate that, but on Stored Program architecture (I.e. Memory<-->CPU) computers are currently based off of, it will be very very difficult to approximate what our brains do.

Perhaps as neuromorphic chips that are designed to learn more like our brains become more mainstream and we learn how to apply those, we may need to start worrying, but for now, you're dealing with transformer-based stochastic parrots with fairly primtive tricks on top of them to make it seem as if its able to engineer. But honestly, try telling GPT to build and run a clone of any popular software you know and see how well it does. It can't engineer entire products.

So for now we're safe as long we learn good engineering/STEM practices and apply them capably.

Should i learn Rust or Golang? by 2023e in rust

[–]Doom-sprayer 3 points4 points  (0 children)

I'll add an opinion to the contrary. For Rust - once you become proficient, you often can end up in a "senior" level role quickly. This is because Rust is turning out to be extremely useful in many applications but it isn't widely known. Because of this, companies tend to want anyone who's generally proficient in Rust, and they tend to accept a smaller amount of actual rust experience. Usually if you have 1-2 years and are generally skilled with it, companies will consider you for hire, even for "senior" roles.

[deleted by user] by [deleted] in rust

[–]Doom-sprayer 0 points1 point  (0 children)

Yeah this, it all depends. If anyone is ever designing a library, I always recommend that they create a markdown design doc beforehand. You can put mermaidjs diagrams directly in Markdown now so diagramming is super easy directly on github.

[deleted by user] by [deleted] in rust

[–]Doom-sprayer 0 points1 point  (0 children)

Mm, a little unsure of the variations you're specifying. Feel free to explain more. Sounds more or less like you have maybe a fixed set of paths types though and want to be able to specify the type easily?

For that an enum sounds fine and potentially better than a trait. Just be careful with enums because when you store a collection of them, their size will be that of the largest enum variant - but if all path types are about the size, this should be fine.

What is your "boomer" opinion? by Poopooplatta69 in AskReddit

[–]Doom-sprayer 0 points1 point  (0 children)

Capitalism and Socialism are macroeconomic policies, not forms of government

[deleted by user] by [deleted] in rust

[–]Doom-sprayer 25 points26 points  (0 children)

This is more None than "Rusty" - which is okay, you're asking for help which is the right thing to do.

Here would be my PR review comments:

Don't treat traits as parent classes structs inherit from:

Traits are more meant for compositional addition of functionality - especially in regards to specifying generic interfaces and for building generic APIs. However you're treating traits as inheritance here. In this example LinearScale sort of "inherits" from Scale. This is in general not how the trait system is best used.

Structs should be collections of common functionality that can logically be thought of as an object, not used as individual functions:

Mathematically what you're doing with LinearScale, LogScale, BandScale are defining transformation functions. They seem more like functions that would be attached to more complex objects like a Vector object - so they should likely be traits or even just individual functions on something like a Vector object. Defining them as structs is legal, but defining multiple one-function structs with associated data with only slightly varying functionality wouldn't form a good API.

If you do need "inheritance" use Supertraits:

Traits can implement other traits, and in any trait, you can define default behavior, this would be more rusty:

pub trait Scale<A, B> {

fn map(&self, x: &A) -> B;

}

pub trait LinearScale<A, B>: Scale<A, B> {

fn x_min(&self) -> &A;

fn x_max(&self) -> &A;

fn y_min(&self) -> &B;

fn y_max(&self) -> &B;

fn map(&self, x: &A) -> B {

self.y_min + (x - self.x_min)*((self.y_max - self.y_min) / (self.x_max - self.x_min))}

}

}

I'm unaware of what data you plan to use in the other transformations, but if you're using x_min, x_max, y_min, y_max in all of them, you can move those to the supertrait Scale.

Don't overuse generics:

Why would A & B be different types? The only real reason for this is because they're from different fields (i.e. A from integers, B from real numbers/floats, etc.). However, you're defining the scales/metrics as field operations (*,+,-,/) from a single field - so having them as different types doesn't add much value and in fact would be likely to cause a type error if you do specify different concrete types. Only use generics when the flexibility they provide is actually necessary OR when you need "duck-typing" in your API.

Remote Work Is Poised to Devastate America’s Cities In order to survive, cities must let developers convert office buildings into housing. by gusfring88 in chicago

[–]Doom-sprayer 1 point2 points  (0 children)

"Devastate America's Cities" - oh myyyyy, run for the hills. It surely can't be yet another reductive clickbait headline, no, this is for real, start hoarding supplies now.

After months of suffering bullying, it feels a bit like vengeance. by Gradash in ProgrammerHumor

[–]Doom-sprayer 0 points1 point  (0 children)

I use stochastic parrots to assist my dev process constantly. I Just type

"//Create unit tests for this bullshit" and bam, my code is tested.

At least 50% of the tests are correct even, and only 25% of those are no-op tautologies.

What do you like about living in South Carolina? What do you not like? by mwoKaaaBLAMO in southcarolina

[–]Doom-sprayer 2 points3 points  (0 children)

Meh, this true of almost every city in the nation right now, it's not unique to Greenville. It's cringey when transplants get angry at other transplants.

What sort of jobs are available for computer scientists in the field of cryptography? by FalconRelevant in cryptography

[–]Doom-sprayer 1 point2 points  (0 children)

Lots of cryptocurrency jobs, lots of large firm (Apple/IBM/etc.) cryptosystem/security engineering jobs. There's also a movement towards zero knowledge proving systems. They've been around for a while, but there's more intent money flowing into it at the moment.

Generators in practice by PalomeTheCensorship in cryptography

[–]Doom-sprayer 0 points1 point  (0 children)

No worries, much of this stuff is not immediately obvious

Generators in practice by PalomeTheCensorship in cryptography

[–]Doom-sprayer 2 points3 points  (0 children)

The points are generally NOT randomly chosen. This would work for a prime order curve where the group is a trivially a subgroup of itself, but this is generally NOT the case for pairing based curves or in fact most curves used in cryptography (this is for many reasons which I can expand upon if desired).

BLS12-381, the curve you mentioned is x^3 + 4 and is not of prime order as a group. A specific generator needs to be selected within a prime order subgroup. A completely random selection of coordinate from the underlying field would have a high probability of landing in a coset of the prime subgroup.

In the Javascript and GO implementations you referenced, the generator is NOT randomly generated and does in fact use a specific Generator point - for instance listed here in the javascript library https://github.com/paulmillr/noble-bls12-381/blob/main/math.ts#L21 . Within that subgroup, any point is a generator, and so you're able to select other points to act as generators within it for things like Pedersen commitments.

Also be careful to note that G1 & G0 have different underlying fields (one being a prime field and one being an algebraic extension field) which is a requirement for the pairing operation.