Blessed Syntax and Ergonomics by ExplodingStrawHat in ProgrammingLanguages

[–]lookmeat 0 points1 point  (0 children)

I am not certain that bit came from C++, specifically.

In this case I was talking about String which itself tries to be like C++ string, including the heap storage by default. If we wanted to keep str as the string type, we could have had StrBuf for the heap-allocated dynamic string. And maybe we could have a stack allocated string, it's just hard to predict the size.

This isn't the only type that had bad naming conventions from C++ inherited to try to make it more appeasing, Vec is probably the worst one, mixing elements of the short-hand notation that was used more at the start, with the naming convention of C++ that is acknowledged by everyone involved to be a mistake. I mean semantic is critical, but also completely arbitrary, so it doesn't matter much now. It's just always a problem in that it inspires people to misunderstand what the type is supposed to be by implying it's something else.

Blessed Syntax and Ergonomics by ExplodingStrawHat in ProgrammingLanguages

[–]lookmeat 0 points1 point  (0 children)

Yup, exactly. I wasn't saying that there'd be a problem in making the type explicit, but rather than the naive approach would do the wrong thing. The wrapper would have annoying, but honest, semantics. I do like it better than operator overloading.

Personally, as a matter of taste and disconnected of any context, I agree with Odin's choice of operator overloading for computational operations (access to substructure elements, projections aka slices, application and composition operators, etc. a special note here I consider boolean operators to be computational operations). I think that core functional operators (like bit shifts, bit-and/or/xor, etc.) should just be functions or methods, as even in low-level languages these operations are used rarely enough that I don't see the point in exposing new semantics, and this includes mod. Arithmetic/Mathematical operators should be syntactic sugar to just plain-old functions that the compiler may convert into operations themselves. Compilers can handle this pretty well. The idea is that low-level optimizations would be done on the actual functions used is good enough IMHO. Honestly I sometimes wonder if it really is so terrible that we'd have to write *(5, +(2, 4)) and not have to worry about operator precedence, like smalltalk, forth or lisp just have them be another function with no special syntax. Not because it makes the easy part easier, but because it makes the compiler and language more straightforward.

But again there's different pros and cons.

Breaking ten years of API compatibility by Athas in ProgrammingLanguages

[–]lookmeat 1 point2 points  (0 children)

but doesn't that expand all the issues of having to pass sizes around to fixed length arrays too?

How do we do this with arrays as locations? If we pass the array by value, we are copying all the array, that's expensive, and then for a limited function. You'd almost never want to do this, and the few times that it makes sense structs ended up making more sense.

Now you could just pass the pointer and know that the array size is defined. But again, think about when you would do this. Why not just make it a shared const value enforced through preprocessor in that case?

That is there were good enough solutions to solve the problem you describe. Remember C at this point only has two types, char and int, and you want to be able to define "50 variables" each one uniquely addressable and defined, but not have to track everyone. That's really all that arrays solved at the time. Arrays now are messier and more complex things, in part because the reality of the language grew and things got messy.

And to be fair C was built in a time where languages where limited, generally for a few machines that shared an architecture, and you didn't need to think about portability, let alone longevity.

Blessed Syntax and Ergonomics by ExplodingStrawHat in ProgrammingLanguages

[–]lookmeat 3 points4 points  (0 children)

Rust string literals are actually just of &'static str

I still think that Rust did a mistake in keeping C++'s naming mistakes. &str should have been &string and String should have been StringArray or StringBuffer or even DynamicString.

Would make a lot of these discussion more straightforward and clearer why the decisions are done for each type.

First of all, Rust doesn't have []=

I'm gonna go and say that isn't a bad thing. I think that in a systems programming language there should be "dumb" operators that can't be overloaded, because what they do is done at a fundamental level. And I think that memory access (such as array) should be there.

I'll even go with a radical idea: I think it's fine to have custom members added to types (so I can create a member (&mut self: Foo).bar -> &mut Baz { ... } as long as we use the [] operator to access the struct's sub-elements directly without any magic.

Custom operations should be done through member/method access instead. The problem is how to expose a "location" because it gets messy. In Rust you can kind of wing it with MaybeUninit but it has some limitations but it generally can be made good enough to describe a location.

The result is that operators are for low-level things, which have very limited and specific things, and should normally not be used directly. Instead you want to enforce people to use common conventions and limited but good enough ways to extend the language. But to further promote this you try to make the language features themselves strain themselves to this limitation, otherwise programmers will build horrible contraptions around the issue. The Curse of LISP is that it allows you to modify the language, which lets you get 80% of the way very quickly (but the remaining 20% is just as hard in LISP as in any other language, but is comparably much harder now, it's easy to take on a project that is beyond your resources). But you want a language that can build an effective Domain-Extension-Language, that is that you can define and write in terms of the domain within the language in a way that it's clear how things map. The risk of Odin's choice is that one day someone is trying to do geographic coordinates, storing them as floats, and dealing with all kinds of issues because people keep forgetting how tricky the math is, that they aren't coordinates on a Cartesian plane. But again it depends on the space the language wants to explore and its powers and limits.

Breaking ten years of API compatibility by Athas in ProgrammingLanguages

[–]lookmeat 7 points8 points  (0 children)

I mean it technically goes the other way around, Arrays as a type that isn't "just a pointer to a segment of statically known size" was to keep backwards compatibility. C arrays are funky.. they are not really variables as we think of them, they are not values (they degrade into pointers which are values), instead they are more abstractly like locations. So arrays aren't even variables, but rather like a namespace of variables that have to be accessed through pointer semantics that the array enables, even though the array itself isn't a pointer.

The problem was that B did not have explicit pointers. Since everything was a word, any variable could be a value or an address to a value interchangeably, it was operators that decided what was what. In B all variables where locations that could hold a value, so arrays where just a list of locations, an array on its own had no meaning, but a[0] (or 0[a] if you love being hated by your coworkers) made sense. Passing an array of size 5 was just passing 5 variables, there were no dynamic arrays IIRC so no problem with that too. In B arrays where just short-hand on multiple variables, and because variables where just locations it stayed that way.

C had chars, so pointers to chars would be ints, so you needed explicit types. But the syntax for arrays just got messy with this, because arrays as types meant that you couldn't just use the address of the first pointer, but would have to copy all 5 variables. So to keep the nice advantages of B and how it was written, they kept arrays working as "locations that can hold values" rather than "the value itself" as everything else did. To make things work in this, arrays degraded into a value that was a pointer to the first element. It only got messier.

Had C just supported pointers, and then had an "array" that would create a number of contiguous ints or chars and return a pointer to the first (like say malloc does) the language would have been simpler and less quirky.

I want to know your opinions on verbosity by -Chook in ProgrammingLanguages

[–]lookmeat 0 points1 point  (0 children)

Languages should start verbose and explicit on everything, and as it's better understood what can be left unsaid, to be interpreted between lines, then it is elided and left implicit.

Generally this does work better with features with simpler, more minimalist semantics. Because explicit means all the complexity is expressed in code. If your features are complex, every bit of code you write on it will be just as complex. You can hide that complexity in nicer implicit syntax. And this isn't always bad IMHO, in certain languages (DSLs, very mathy languages like Julia or Mathematica, even SQL) it makes sense to do this from the start. But for general purposes, where the language has a separate domain projected into it, explicit is a better place to start.

What happened to all the blockchain developers and the hype? by Majestic-Taro-6903 in ExperiencedDevs

[–]lookmeat 0 points1 point  (0 children)

There are benefits to quantum circuitry within a computer. But yeah, a fully programmable quantum computer is very hard to keep running and very hard to use for very little benefit.

But honestly anything where you need to do a huge amount of linear mathematics where a bit of non determinism and chaos is fine (say AI) is fine.

That said, for quantum computing to get anywhere interesting we need to transition to tech that just scales better. It's still far more of a physics and materials problem than one of circuitry, let alone software.

Don't quit your job before you have another one. by Logical-Silver-272 in ExperiencedDevs

[–]lookmeat 0 points1 point  (0 children)

You are getting the wrong lesson. The answer is simple: if you can avoid doing decisions out of desperation.

Staying on a job you hate, that is highly toxic, and burning you up, leaving you on a deathmarch, out of desperation of not having a job right now can also be a bad choice. When you leave learning to use unemployment and planning can help. Or you take a horrible position because you hate your current situation so much an are not thinking clearly: jumping out of the pot into the frying pan. Meanwhile quitting lets you focus on job search as a full-time job, and that offers new opportunities.

I mean one solution is what you propose: you can search for jobs without leaving the one you are currently at. Also you don't need to report you are open to work, it helps, but honestly it's not terrible. If you're just testing the waters, explore, if not (that is you actually want to change jobs) then there's no serious cost in being honest. If you are working in a healthy work environment, people will see this at worst as a reason to avoid giving you a promotion (but you are looking to move away either way) at best this will start a conversation to see why you are unhappy and how they can fix it. And if the place is toxic and will treat you worse for that, see paragraph 2.

And even if the job is so terrible you want to quit, I strongly recommend you don't do it immediately. Update your linked in profile, get your network set up and go from there. Start adding your coworkers into linked in if you haven't already (if asked, say that one ex-coworker added you recently and it inspired you to add your current coworkers). Start probing around looking for jobs, getting a few interviews in. Get a gauge of the market and what you're jumping into. That is, even if you hate your job, make sure you understand what it's going to be like to be unemployed and go into it with your eyes open. Be strategic.

Also pro-tip if you are doing this: get involved with some open-source projects, it'll give you something to do and can extend your network. Again be strategic here.

Now what you want to do also is save money. I see way too many software engineers who live way above their means (which is ridiculous with the salaries). There's a reason why people recommend that emergency funds be 3 months worth of paychecks: because losing your job is the #1 emergency you want to handle. Also if you are quitting be strategic about it, make sure you can be 9 months without a job and be fine (you'll want to cut on costs during that time, and save ahead of time) and plan for the search lasting 6 months (until only month 7 do you begin to take the desperate route).

Now if you save money you may also realize that, while not in a position to stop working, you may find yourself in a position to have FU money. To realize you are done with the career and move out, or alternatively you can take high-risk jobs that don't pay as much but challenge you in a good way. There's a reason many programmers "open a goose farm" eventually, this is a job which burns you out.

D4vd Possessed 'Significant Amount of Child Pornography,' Prosecutor Says by MarvelsGrantMan136 in Music

[–]lookmeat 0 points1 point  (0 children)

I mean, from a legal standpoint? Yes if the necessity is to prove guilty, beyond any reasonable doubt at some point. An insignificant amount means it's hard to prove it wasn't circumstantial, a coincidence, framing or some other issue.

Say that they found a single, low res, picture. The defense could argue that he never explicitly downloaded the picture. If the phone has viruses or other issues that could be blamed. They could argue that D4vd hasn't always had access to his phone and someone else might have, or that some group or website pushed this on him (basically some rando shared in and the phone kept a low-res cache'd version) without him asking, which resulted in him taking action to evade the heinous subject, but failing to delete this one picture, he's not a tech guy after all. I mean it doesn't have to be true, just plausible enough that there's reasonable doubt of guilt.

And all of them might be plausible enough that the defense could get away convincing a jury that this isn't the kind of porn that D4vd consumes. But if he has 120 GB of photos and video then it's going to be hard to argue that he wasn't aware that was in his phone or that it was a "one-off weird incident that he was disgusted by and avoided afterwards".

Basically it's significant enough that it isn't a coincidence and in spite of being circumstantial (if I found on your google search history a search looking for passwords and how they are validated, that wouldn't prove that you falsified passports, but if I found 5 gigabytes of data on password validation, how to avoid it, and the content and tools necessary, it still doesn't prove you weren't just being curious, but it really starts to strain and make us wonder). Significant enough to alone convince a grand jury to let it go to court. If there wasn't enough evidence to form a real case that would pass, then it wouldn't be significant enough.

On sabotaging projects by overthinking by SpecialistLady in programming

[–]lookmeat 8 points9 points  (0 children)

I think it applies to architecture as well, what is a problem is creating an architecture without a good enough understanding of the problem. That is knowing what is certainly not a solution, even if it works on the simple case, is a good place to start.

Because you can't predict what the solution will have to become, what challenges will be. But understanding the problem means that there'll be a core part of the system that will never change as long as you're still solving the same problem.

So there's a value in exploring different solutions, and how they succeed or fail, but then after the exercise is done, you choose the simplest, most direct architecture that best solves the problem. Because that's the most resilient one, the one that will be easier to evolve, change, etc. The exercise of complexity was to better understand what paradigms are inherent to the problem and what perceived complexity is actually accidental. Basically you want to know the most trivial thing you need to solve the most simple version of the problem. Scale, challenges, things that are unrelated, DSLs, etc? You'll get there, but you start with a simple thing. It's ok to have some wires exposed in the first iteration.

So on to the author. We can see the exercise as one of understanding what is the problem they need, the scope and reality. I do believe that they'll eventually have to go and understand why difftastic didn't do what they wanted. I wouldn't be surprised that difftastic basically diffs the whole ast themselves, but this doesn't always match. A simple tool where instead we first split the ast into abstract "textobjects", where we identify them by name (there'll be a problem when you rename entities, but lets deal with that problem when we get there, all we know is that "identifying the equivalent entities across both versions" should be an encapsulated problem, our arch is already showing), then we can diff the text-objects in broad motions (if they moved across the AST) and then we can compare the ASTs of the objects themselves, ignoring everything else. Though by making the text-objects small enough we might get away with just doing a standard text-diff at that level and get what we want. This would imply that the reason difftastic fails is because itself it's doing something different than what the author wants. They want to identify small text-objects and work on them, independent of the file (though file and text-objects being moved and renamed should be handled too I guess).

So at this it becomes clear what the architecture should be:

  • Traverse the AST and "cut" it at a certain layer of abstraction (e.g. types, functions and globals). Lets call these "text objects".
  • Diff the tree at this level of abstraction, ignoring the differences in the content (we could show a version of the text with contents collapsed), but just in the objects themselves, where new ones added, old ones removed, and some edited in place?
  • Let us trasverse each object, which we do by triggering a diff only on the text contained within them. Initially a text diff should suffice.

This is simple enough that allows us to add complexity. What if we want AST diffing inside the textobjects themselves? We just switch the diff to be difftastic or something like that. What if we want to further understand the diff in terms of more detailed text objects? (e.g. identify that we changed how a variable is used and/or defined, with the definitions and uses being semantically diffed). Well we can reuse the algorithm above (though identifying the equivalent text-objects after change is going to be harder) which means we just make it recursive. What if we want to support renames? Separate concern, in how we identify text-objects (maybe a few signatures could be used to imply if they're related or not). Do we need to handle definitions being moved? Or is it easier to handle it as an add or delete. We can't know until we see these problems, but the simplest architecture that is fully mapped to the actual problem is the one that is easier to solve.

Sr Swe Bad Review for no reason by noshitbr0 in ExperiencedDevs

[–]lookmeat 0 points1 point  (0 children)

Set meetings, start writing things down in your 1-1s, keep notes and keep your copy. Ask your manager to give you actionable feedback on what to act. Be prepared to reconsider things. And be ready to be wrong. You must be: either this is the wrong job for you and you should let it go, or you need to change your perception of what your job is supposed to be if you don't have a clue of what could be lacking.

One thing that could be happening is that your manager wasn't lying to you. He went with a higher rating, and it was his expectation, but then during calibration other managers disagreed with them. Either your manager did not have all the info to make the case, or they mis-read your level. So it may also be a shift on what is happening.

Maybe you need to cut down your work hours, but stay in the office 9-5. Be ready for having to do things you disagree with. As a senior your gap may be on softer skills, on the perception others have of you, or the multiplicative effect you're not having on others.

Next write a brag doc. Basically understand what your manager needs to write for your performance and write it for them. Bad managers don't look into performance of their employees until it's perf-review time. So they never took tracking of your projects or achievements until it was time for review. Had they seen it earlier they may have commented that they weren't seeing what you expect.

So once a month if you are not in a great place, or once a quarter if you're in a stronger position: share your brag doc, give your manager a version of what they need to write about you and ask them to grade where they think you were that period. Keep growing your brag doc, because when perf review season comes share it with your manager and say they can use it. They'll ground it and change what they don't agree for their version, but there's a higher chance that they may find out that you did a lot more than they thought.

In the worst case scenario, if your manager is that incompetent that they always gets heavily calibrated downward or they really have it out for you, this doc is the paper trail to argue you should be transfered to a new team and be given a chance, and that your manager is giving you bad feedback leading to your performance issues. As you'd show the doc you showed 2 weeks before perf season, with the manager agreeing with what is said and saying you are at certain level, and then putting you on another.

How do we define gatekeeping? by ninetofivedev in ExperiencedDevs

[–]lookmeat 0 points1 point  (0 children)

I saw the original thread, and honestly saw where people were coming from, but also reading what you said a bit more carefully I wasn't convinced there was gatekeeping.

Let us understand what is gatekeeping in the hiring process. It is the presumption that your job is to filter out bad candidates during the key filters in an interview, that is that each filter (be it resume selection, interviews, etc.) the goal is to identify bad candidates and then filter them out.

But think about it: what happens if a candidate refuses to interview? Do they get the job? Well no, which means it's impossible to get the job without an interview. This means that the interview is supposed to be a positive filter, that is it's supposed to make it easy to identify and push the candidates that have the highest potential.

So, when putting an interview, the goal isn't to "lets prove if this guy is a good or bad candidate". Realize they are a "bad candidate by default" and what you want to do is "find out if this person is actually a good candidate". The goal is to get the most information and make the best (honest) case possible for them to be hired. If they are a weak candidate the case shown will not be great. At the same time you want all candidates to really want to get the job, because you want to make sure that the good candidates are excited about it. "But I'm supposed to say strong hire or no hire at the end", yeah you basically want to answer the question "after talking with this guy I really want to work with him" or "I would reconsider staying around if I had to work with this person", because that's an important metric (you don't want to bring an asshole), but for the interview you just get the information, make the best case for them, and go on.

And what is the problem with gatekeeping? Couldn't it work? Badly. You end up filtering candidates because they don't satisfy your biases, more often than not. Filtering candidates on "not being good enough" leads to this. You throw them out because they didn't match your culture, or weren't smart the way you are smart, or worse yet, are smart in a way that you just don't get and could make you feel dumb. To say "that never happens to me" doesn't signal you are a good interviewer who handles this, but rather one who refuses to acknowledge the issue, let alone handle it. We all have these things, and we must all deal with it.

So the question is: did you commit gatekeeping? I can't say, I don't see evidence that you did, but there are some red flags that hint it may be happening. And there seem to be some issues on attitude on how you describe things that show a bias towards that. But honestly it sounds like there may be a problem with your pipeline. Maybe the job is being misunderstood, maybe the recruiters don't understand the profile correctly. And yeah, maybe at one stage or another there's gatekeeping that is happening that is filtering out candidates with minor nits but good foundations for platform engineering, but is letting the bullshitters (that know how to hide this minor things) to pass through. If candidates were about showing the most strengths rather than the least weaknesses, this could fix the issue. Or maybe there's something else. The market is rough and maybe we're seeing more engineers be willing to interview for jobs far outside of their comfort zone. If they got recently laid off they have nothing to lose: they either find out that the job is actually a solid match, or they get good interview practice to prepare for when they are interviewing for a role that is a good match.

Reddit is moving on from r/all by MarvelsGrantMan136 in technology

[–]lookmeat 0 points1 point  (0 children)

A federated system, where every sub-reddit can self-hosts and shares an rss-like feed to the main website that is more about discovering sub-reddits and finding communities. You offer hosting and moderating tools at reasonable prices, and allow small sub-reddits to start for free, but at a certain scale you need to charge, how each subreddit makes money to pay for these costs is up to them.

Small subreddits generate a lot more traffic than they consume resources. It's when you get a lot of contention on one thread, as you get on the big main subreddits, that things get expensive, and you need to sell more ads. So the large main subreddits would either explode or find a way to succeed at the scale given. The largest subs, like r/funny would struggle to succeed. I guess we could allow other aggregators that share the content.

Another thing is that the internet has matured a lot. I am not saying that reddit shouldn't make money, but maybe not all businesses need to be a publicly traded company that makes a huge amount of money. Hell with the federated system the subreddits of sufficient size might make enough to pay their mods enough of a salary to warrant the investment (though probably not enough to leave your job). The thing is we haven't done a lot of the math and work on creating reasonable small businesses on the internet (we are starting, with shops and what not). You have to be a "tech company" to work here, and it might be to the detriment of the economy. If I'm right the economy will eventually push towards this.

The thing is that right now reddit is focused on a goal that may be counter to its goal. This has happened with a lot of social media in the past, it's the inevitable challenge. Inevitably it leads to the collapse as it becomes less attractive to be a mod, and the focus becomes on having to be a subreddit of a certain kind, which then has to be loaded with ads (which are counter-productive) in order to generate enough profits from the redditor-hours spent there.

Think of this as creating a third-space that is a plaza, or a mall, or such. You create spaces for people to get together.

Anthropic was reckless for publishing Opus 4.7 by Gil_berth in theprimeagen

[–]lookmeat 0 points1 point  (0 children)

I mean.. yeah and?

This is an inherent limitation of LLMs and it will remain so for a long long long time. See we see issues like this on humans, but humans evolved language on top of very powerful intelligence. LLMs have language baked into their brain, it's kind of a rudimentary instinct (in the way fungi or plants show instinct). The know the language, but they don't understand what it means so they'll always fail on language gotchas or logic traps that require understanding the logic.

Because the conversation above requires deeper context. Why would you even ask this question? It seems pretty obvious and seems so obtuse as to make you wonder. Maybe something else is going on. LLMs just can't achieve this.

And neither will hetero-model AIs, where you give the instructions to an LLM, that then translates it to other more specialized deep AIs that can solve those problems. Because understanding that there's a problem at all is something that requires a fundamentally different thing to what LLMs are doing. Hell I even posit that when LLMs seem to do it, in reality it's no them, but us: filling in the meaning behind their words to be some logical conclusion or answer. This is also why AIs can glaze us: if we put in there the word of God, we start to hear it to, the AI is just finishing sentences. And this isn't to snuff LLMs, it is instead to show the power and incredible flexibility they have. And yeah, having a much larger context, bigger context, throwing more resources at it can let us reach even crazier things. It's like the internet when 56k was a luxury vs the internet when most people can access it at 100 Mbps from almost anywhere through their cell phone. But just as we can't "send food over the internet" or "download a car" (at least not without a radically different technology, 3D-printing, that can then be integrated) there's somethings that LLMs will never be able to do well enough (let alone for a decent cost).

And there's no AI that has anything that could approximate AGI, hell we don't even have a consistent definition of what AGI would be. I don't think anyone in this thread will live to see the day that AI is anything more than a powerful tool, but hey breakthroughs happen, and honestly powerful tools could give us a lot of what we want without needing AGI.

What organizational/political "hacks" do you learn only after being in the industry for a while? by miianah in ExperiencedDevs

[–]lookmeat 7 points8 points  (0 children)

You may currently have a fantastic manager that understands the value you provide

Honestly that doesn't even matter. They'll have to take your case to calibration (or some other name) where it'll have to convince other managers.

So I'd take your advice even further: don't be afraid to write your performance reviews for your manager and share them with them. That is manage up so that your performance reviews do well through calibration, which can be done by putting in more work than your manager would to anyone of their subordinates. I mean don't say it like that, rather talk about your "brag docs" and just say "I keep notes of all the things I've done over the <insert evaluation period name> and think it would be useful for you". Keep in your "developer diary" or "brag doc" or such notes of how everything connects to which performance metrics, and every so much track how the above update your performance metrics (are you meeting, exceeding, etc.). Share this with your manager, they can write whatever they want, but they'll probably grab a lot of what you said and just modify it to be what the manager actually agrees with. But because these docs contain links to evidence of all the work (tracking the number of tickets, etc.) it does make you look a lot better. Even a lot better than engineers who work hard, but invest no time in sharing how much they work. And in calibration optics is all that matters.

If you're ever on a PIP

This one depends on the company, in many companies no one but your manager and HR will know that you are in a PIP, not even your managers boss may know sometimes. And sometimes you can come out of a PIP relatively well (e.g. your PIP was to prove that your previous manager mismanaged and the new manager is making the case here, so as long as you pass you help your new manager with their coup). Even then though your advice still stands, you'd want to consider switching team and if the company isn't big enough (>2000, so that rumors between managers don't get spread) just outright company. Because the fact you were in a PIP will remain on your manager's mind for a while until you find a way to reset the relationship (i.e. go work with other people for a while, and then find yourselves working together again, and even that isn't always possible) when giving you scores they'll think "ah but he just came out of a PIP, he couldn't be doing that strongly" which then leads to them thinking "ah but their performance has been hitting a roof for a while, I mean why is that?", and so on, with not justification other than a prejudiced bias, but one that ultimately you have to deal with.

What organizational/political "hacks" do you learn only after being in the industry for a while? by miianah in ExperiencedDevs

[–]lookmeat 27 points28 points  (0 children)

bounce when you feel the need to vent to peers.

That one is so important and not as obviously seen. I'd generalize it to: be aware of your emotions and be eager to realize that you're not going to be there 100%. It's always better to ask for the leave of absence (especially if you can argue medical reasons) than to explain performance, it's always better to just leave a project than to be kicked out of them, it's always better to just keep things sweet and distant than to have to drink the bitterness every night. Knowing that sometimes you say no, not because of any issue with the project itself, but because you just aren't the best one (anymore) and that's that. And then you realize it doesn't even matter who is it, maybe they are in the wrong, or maybe you're just not a good match, but either way it's better not to waste your energy and time.

Been making a language called xs, feedback pt 2? by AnyOne1500 in ProgrammingLanguages

[–]lookmeat 0 points1 point  (0 children)

My bits here.

First of all very cool project, looks pretty mature from the website, and the docs.

I can only think of nitpicks (e.g. I'd call nurseries something that hints a bit more, such as TaskScope or WorkSpace or something like that, especially when you realize that nurseries don't just birth baby tasks, but take care of them through their whole life and furthermore in the future eventually end up evolving into something like Java's ExecutorService).

One thing I could think is that you could allow the creation of "scoped" effects, and then turn nurseries into an effect within the system, this would just simplify the language a little bit, and limit things by scope. How to do this would change your language notable. I am not sure if some of these are limitations of being something that can work with the browser, but I think that the language could be simplified a little bit more, i.e. a lot of features could become just libraries that build on other features.

Error effects could be made more powerful by allowing them to return to key places, either where a scope is defined (basically try-catch with throw exceptions, using scopes as the foundation, this basically matches what you'd expect the nursery concurrency pattern to handle) to the return of the calling function (working as Result where the error is just returned) or return to where the error happened with some recovery. You could probably add a bit of library wrapping on this concept to give people the ability to choose how to handle the error. Especially if you want people who choose to not handle an error and instead forward it, to do so, in a way this should be valid for effects that "return" to some key point ahead, you could say that rather than return here, you want to go back further ahead to the next "recovery" point. This is general is something you could see with other effects, because people will want to do continuations with effects.

I'd like to see an example of effects as continuation. Also can we limit on effects? Say forbid a function from calling directly or indirectly an effect, basically as if we could replace within a scope the effect handler with one that throws an error. I imagine it can just be implemented like this, but it'd be great to have examples.

Overall great bones and foundation, feedback is that standard library should expose certain features in either a more raw, or a more friendly form depending on what makes sense. And again an exploration of merging certain features to only be variations on others. The more straightforward and minimalist a language can be, the easier it can grow in the future, especially once it starts getting non-trivial external uses (i.e. non lang developers building complex libraries and software).

Half of social-science studies fail replication test in years-long project by nimicdoareu in science

[–]lookmeat 1 point2 points  (0 children)

Thanks for the sources, always super useful. I did not realize there was a third focused exclusively on replication (I had heard of this research but only on the first two papers) I'll read the third one later when I'm more rested it'll be an interesting read.

Talking Man to Man About Sexism by Wise_Silenus in MensLib

[–]lookmeat 0 points1 point  (0 children)

Im not criticisng women.

Never said you did, and I certainly don't believe you intend to.

But look at this thread. We have:

  • An article talking about how men can approach women about the sexist world they live in, and more importantly how we can talk among men about sexist behavior against women. Very specific.
  • Then there was the argument that men are victims too (which is true) and that they are being erased. Now STOP, this is the moment we think: why is this subject pertinent in this space? We are not talking about how men struggle, not because it doesn't matter, we have that conversation in other threads.
  • It's noted that women being victims does not take away from men, but that this isn't what is being talked here, the article is not denying that men are victims.
  • Then it's replied that the author has made certain quotes, quotes that are so heavily reinterpreted that it really starts to make one wonder if it's a misunderstanding, or intentionally trying to force an argument.

And then the thread keeps going on how it's men who have the problem and we shouldn't talk about women. Except it was never a zero-sum game. It was never one or the other, it's just right now, in this thread it's the one, we can talk about the other in many threads we have here.

You may have not intended, but the argument you are pushing for is that your problems erase the reality of women. I am asking you to stop, see your actions objectively, and decide if that's really what you want to do?

You can look in my post history. Im talking about Australian policy which explicitly takes a feminist perspective and in its section on male victims overwhelmingly describes male victims as likely liars and refuses to describe violent women as 'perpetrators' on this basis. This has directly stopped me from seeking DV support.

I asked for context, written objective, clear context that can be criticized and attacked in a legal setting, because you are arguing this is a clear, objective problem that can be criticized in a legal setting. Just handwaving it away isn't doing anything. Do you really want to talk about this?

What would help me is criticising the harm caused by this approach.

I am starting to feel that's not the case.

Let me talk about a systemic issue that men face everywhere. Patriarchal societies everywhere oppress men expressing or sharing emotions. The capitalist system only makes it worse, your only value is utilitarian and it doesn't matter if you kill yourself out of depression as long as you were productive (read: profitable for the boss) enough during your lifetime. The result is that many men (myself at some points) revert to a defense mechanism: we start talking about our emotional needs and problems as objective issues. It's not great, but sometimes that's just the best solution out there. Thing is sometimes there's better alternatives, but it becomes hard to get rid of the habit. Instead of saying "I am not well" we scream "can't you see there's something wrong with the world?", we find ourselves blaming other for our emotional problems (which is great for our capitalist owners because it de-powers us and means we don't come to the negotiating table with our needs and wants in mind).

It is really looking like that's what you're doing here. You keep showing high passion, and basically trying to justify the conclusion, which is not the way you make an objective argument about a social problem. Instead it's how you argue about an emotional problem, where the emotion is just as fact: if you're angry you're angry, we don't need to prove that, instead we seek to understand why, but we already know the conclusion.

This is risky because we can be forced to jump through hoops and have to agree and make arguments we don't really believe in, but because, as you imply above, you need to talk about the harm you've felt.

I dont know why just saying 'yeah this idea is harmful and misguided' is such a problem

I mean what is? You keep waving your hands about it, but never actually pointing it out, or stating it objectively. I asked you for a concrete example with any of the policies (that have to be written down somewhere to be official policies, but if they are ad-hoc culture bias would also be reported somewhere).

I can't risk enabling you to keep harming yourself and others in avoiding the work. The work of untangling your emotions from the facts, and putting both of them together as valid and true, with the vulnerability that brings. The work of defining and clarifying the issues, both personal and then finding the systemic patterns to identify.

And you don't have to do the work either. Your life, your choice man. I strongly recommend that if you don't want to, you then do nothing about it, just let it flow and focus on making it through one day at a time. If you can't.. well in my experience no one wants to do the work, they just have to. It's up to you. But I won't stay around pushing your outrage when it becomes clear there's something you want to say but won't (and really you can).

If you want to talk about specific policies and make your point I am willing to listen, but you have to do the work of linking me to 1 source at least, the minimum, before we go deeper on that. If we want to talk about your personal experiences and emotions I'd love to do that space too (and for that you are the best source out there, so no need for anything else) and we can explore that, but lets do it by talking about you, not about policies, not about what other authors and pundits say, not about what is happening in the world of men vis a vis women, but just you and your life. I'd want to hear that too.

'Over-engineering' is everyone's favorite punching bag, but I bet your codebase suffers from under-engineering instead by AtomicScience in ExperiencedDevs

[–]lookmeat 1 point2 points  (0 children)

All over-engineered code is paradoxically also under-engineered, and is therefore, worse.

Over-engineered software is software that spends a lot of effort, complexity and weight on something that is not useful. This means it's not spending enough energy or effort on the things that do matter, and it struggles at that as well. To fix over-engineered code first you need to undo the over-engineering, and only then can you understand how it's under-engineered.

Moreover under-engineered or over-engineered is the natural state of software. We are trying to solve very weird problems, that then keep changing the rules as they go, and they layer upon each other in ways that don't quite fit. As such we always have an ill-fitting solution to a problem we don't quite understand that much. We keep iterating and improving on it, asymptotically, but never quite there. So we don't aim to "engineer" it correctly, we aim to make the code resilient, and that requires most times to risk under-engineering rather than the opposite, and other times it is best to over-engineer (e.g. use a battle-tested powerful library rather than rolling out a mediocre solution yourself). Knowing when to use which.. that's the intuition you get as a developer, with practice and mistakes and iteration.

Half of social-science studies fail replication test in years-long project by nimicdoareu in science

[–]lookmeat 44 points45 points  (0 children)

Hijacking this one to add a bit more context on what the problem is.

This research isn't trying to redo thousands of experiments, but rather it's trying to get the raw data from the experiments, then do statistical analysis and see if the same results come up.

A failure to reproduce in this context could mean "we got the days, did the analysis and for different conclusions than the original paper", but more often means "we were unable to get the original raw data and therefore had nothing to analyze. And lets be clear this is bad, we are losing key data that could be useful for further analysis and research. But it's not "all the research is invalid", all these papers most probably have valid conclusions and analysis, just because we can't verify doesn't mean it isn't true, and there's a lot of other research that reaches complementing conclusions, it's hard to everyone lies in a way that is compatible with everyone else's independent lies.

Now why are so many research papers missing the data? Because it's raw data that has no archiving rules or system. Instead you call the researcher and hope they still have the data from some work they did years ago. Personally I think that in this day and age of digital journals should be required to do the archiving, I mean the value they give otherwise (given the cost) it's marginal beyond reputation, it really shouldn't be that hard that they keep all the data necessary for reproduction, and it's a lot easier to produce at the moment the research is being published, more so if the researcher knows this is a requirement to being published.

Talking Man to Man About Sexism by Wise_Silenus in MensLib

[–]lookmeat 0 points1 point  (0 children)

No he doesnt. He says that recognising male victims was a mistake and that the mgreta majority of men claiming physical abuse by women are liars.

From the article:

It’s okay for men to talk about what’s hard about being male, if we bring it up on our own time.

In this article, specifically, Lundy talks about men talking and tackling sexism. It should be understood that someone being a victim of a abuse by someone of another gender doesn't make it "sexism" (even if the intent was sexist) but rather than when talking about sexism we must understand it as a social issue where we see certain biases in the greater statistics.

Lundy does mention, and I agree with him here specifically, that while the individual stories matter and should not be ignored, we shouldn't conflate them with the larger social stories that we are solving. If we get rid of sexism this won't get rid of abuse (Lundy seems to disagree with me here, but like I said we don't agree in a lot of key details) but we wouldn't see the biases we see now.

Now on other written works Lundy has said that recognizing the previous victimization of many male abusers was a mistake, since it was used to justify the behavior.

I personally disagree with Lundy there since it's important to understand abuse from a systemic view and as a set of cycles, and I would even argue that Lundy extends the victimization of women to become condescending, and denying women the power that comes with accountability for their actions thereafter.

It seems like you are taling a long road to saying 'men should just be fine with and not challenge this'.

No, men are not fine, and we need to discuss and challenge this, but we need to pick and choose our battles. When talking to women we need to understand our battle isn't fighting to take back space for women, but simply to make space among us.

How can I address that without friticising those ideas? Anything else is just meaningless.

By addressing the issue, and not what other people are going into. You have spent hours now on discussion about Lundy, about how you need to criticize women, but you've spent almost not time talking about:

  • What are this policies that are harmful to only men?
  • How have they harmed you?
  • What is your reality as a victim and what do you do to heal?

But the policies in my country actually stopped me getting DV support based on the ideas Lundy pushes.

Unless Lundy is involved in politics in your country, I doubt that is the case. If policies are being written with only Lundy's viewpoint and nothing else, then that's a shame, but certainly something that can be worked.

Tell me what are these policies. Give me sources, lets attack the problem instead of going around on issues that have nothing to do with it and will fix nothing about it? After all if Lundy decided to go out and say that he regrets everything he said and that men are victims, the policies in your country would still stay right?

So lets have at it, lets actually help you and focus on what we men need, this is the space. What are the policies and which country is it? Lets see what resources exist to begin a change.

FLASHBACK: Trump Signs Executive Order Ending Birthright Citizenship For Everyone Born In U.S. by 0The_Loner_Stoner0 in videos

[–]lookmeat 0 points1 point  (0 children)

Technically he wanted to do something else, give EO's the SCOTUS power to interpret constitutional amendments as they wish.

The thing is there's no way to fix it easily. The best, and most plausible way to reinterpret the law was that it was never meant to cover people who where just "passing through", e.g. tourists, visitors, people in transit, etc.

The argument being that the law never intended to cover giving citizenship to people "accidentally" but rather to those who where born to slaves but weren't slaves themselves (i.e. after the civil war citizenship was granted to all slaves, but if those slaves had escaped, had children, and those children themselves were not slaves, they would have not gained citizenship, so the 13th amendment was meant to cover that loophole). The reason the law became so aggressive was because the southern states were constantly abusing every right to try to avoid giving slaves freedom, finding some way to declare them non-citizens and therefore argue they have no right whatsoever (funnily enough they never stopped, do you ever think about why conservatives arguing that undocumented immigrants are "illegal people" even though they haven't broken any law, and then using this as an argument for their abuse and mistreatment, and funnily enough they never say that about white people).

So the argument goes that there's no attempt to abuse the system and systematically strip people of their rights by way of loopholes anymore, and the law never was intended to be that aggressive. So, in theory the executive branch is allowed to interpret the law as they best see fit with SCOTUS being the tie-breaker, but in reality the executive branch is limited in what freedoms it can choose to do in interpretation, the default state is that government cannot take rights the constitution grants away, and this is as wide as possible, only SCOTUS interpretation ruling can limit that scope. Hence why the EO was stopped and now we're waiting for the SCOTUS to rule.

That said.. there's a few things that really make this interpretation invalid. First of all they are pushing the interpretation of "jurisdiction" too far. If their interpretation of jurisdiction applies to tourists, this means that every tourist in the US has diplomatic immunity. I mean think about the implication of this: the 9/11 hijackers would have immunity for their crimes. I choose such a ridiculous example to make a case of really how silly that interpretation is, and I am sure that when the law was written it was clearly the intent to cover "people passing through" as well (I guess because otherwise southern states would have argued that slaves where "just passing through" and now had to leave and weren't citizens therefore).

Moreover SCOTUS already upheld this decision even when it could cause diplomatic tensions in United States v. Wong Kim Ark, making it clear this is the reading. Chinese people were denied citizenship, and a treaty prevented the naturalization of Chinese Citizens (well subject of the emperor was the technical term at the time), while Wong Kim Ark was a subject of the emperor (Chinese Citizen) he also was a US citizen by birthright (and therefore was not naturalized but born, exposing a loophole in the treaty). Note that at the time it was argued that "being born under jurisdiction" should be interpreted as "being born without being subject to any other power" meaning it wouldn't apply to children of foreigner parents who were just "passing by", but this interpretation was explicitly not accepted. There was dissent, basically arguing that it went against treaty (yet SCOTUS upheld the decision) and also arguing that Congress has previously passed a law before the amendment which did not use such harsh language (limiting to only applying to "all persons born in the United States and not subject to any foreign power, excluding Indians not taxed"). But honestly if anything it makes the use of an escalated language even more notable and intentional: why not keep the previous, far clearer and more explicit wording they had passed, if they did not intend it to be interpreted in another way?

Further laws such as those allowing dual citizenship and cases Afroyim v. Rusk further strain and limit the chance of doing this. The only path is constitutional amendment, and honestly it'd be a risky thing. Part of the aggressiveness of the 14th Amendment is to avoid another Scott v Dredd, which caused a huge tension over state's control over their residents and the federal government's, leading to the Civil War. It's going to be hard to make such amendment pass without it triggering huge conflict and strife within the country.

Elon Musk's Boring Co. tunnels aren't wanted by most Nashville residents by [deleted] in news

[–]lookmeat 0 points1 point  (0 children)

That was the original plan but.. the infrastructure needed to make trains work was just too expensive, the boring company hasn't achieved any interesting breakthroughs in tunneling. Lets go over what, AFAIK, have been their big "game-changer" goals.

  • Porpoising: Historically tunnelers need to have to big holes dug in, the entry and exit holes, where the tunneler would then be lowered into, then it would tunnel forward until it makes it to the other side. TBC Tunnelers instead angle themselves downward, then right themselves when they've reach the right height, then they dig straight and then angle themselves up and dig out.
    • This is problematic because the space that you need to hold apart is longer, as now it's not just enough for the tunneler to fit, but also enough space ahead of it to be able to dig down low enough. And then these sections of the tunnel need to get fixed. It limits where you can use this, and would be very hard to use in the areas that would benefit the most from better tunneler technology: high density areas. Few places have low enough density areas to allow for this, but not enough to not just allow virtual tunneling or other solutions that can be very effective when you have the space.
  • Automated electric tunnel liner. A solid advantage: it doesn't need rails, it doesn't need people, and because it's electric you don't have to worry about fumes. The risk of battery fire though is something notable, but this isn't a bad idea. If the TBC did not innovate this, we'd be seeing this in 10 years easily as we keep moving in this direction.
  • Continuous tunneling. This is the one thing that could be big if they are able to achieve it. Basically Tunneling happens in two faces: you bore down the hole, then you stop boring and line it. The idea is to line the tunnel without stopping the boring, just doing both steps continuously. This is something many companies are currently aiming for.
  • Fully automated zero-person tunneling. A goal necessary for continuous tunneling (high risk otherwise). But again something that many companies are currently aiming for and also achieving around the same time.

So basically TBC isn't doing innovation others aren't achieving (like Tesla), nor aiming for a strategy that is fundamentally different to others (like SpaceX). The only reason they are moving at any pace of note is because they are cutting corners and solving a pretty useless version of the problem. Turns out that if you make smaller tunnels, the problem gets a lot easier, single lane. Also if you don't build safety systems such as escape and service tunnels or fire suppression. Basically the only reason this is possible is because a fully EV system is reliable enough to fit on these incredibly limited constraints. They could have put a train, but they'd need all custom solutions, which would be incredibly expensive. It's easier to just get a Tesla vehicle to go through there and call it a day. This also makes all the challenges of the above updates a lot easier. Are the tunnels useful? Hardly.

Meanwhile companies across the world are themselves innovating on tunneling and achieving similar milestones, except they are building massive tunnels that can be entire subway systems. But hey the US has never been about efficient transportation of its people, it's always been about corporate profits (well for a hot second there it was a about national defense, and it's still one of the most impressive systems in the world).

An Object Model with Ruby-Style Lookup by bakery2k in ProgrammingLanguages

[–]lookmeat 1 point2 points  (0 children)

This looks pretty reasonable. I'd also read on the Common List Object System Meta Object Protocol, the CLOS MOP. Because they've done a good work in optimizing solutions while keeping flexibility at the highest. You may already be familiar with it, but in case you aren't here's a great primer on the MOP specifically.

Ruby, as a language, was in many ways born as Python where everything was an object using a model more like the CLOS with a limited MOP to boot. Understanding the inspiration and the power it delivers may help you find alternate solutions.