Hacker Newsnew | past | comments | ask | show | jobs | submit | neonsunset's favoriteslogin

I'm not sure about the Perl-specific claims here, but it is amusing how pervasive "on one or more occasions, I got a dopamine release after managing to struggle through the horror and misery of X: now I'm convinced that X is Good, Actually" seems to be in computing.

The biggest tool in the performance toolbox is stubbornness. Without it all the mechanical sympathy in the world will go unexploited.

There’s about a factor of 3 improvement that can be made to most code after the profiler has given up. That probably means there are better profilers than could be written, but in 20 years of having them I’ve only seen 2 that tried. Sadly I think flame graphs made profiling more accessible to the unmotivated but didn’t actually improve overall results.


I’ll never use metered Cloudflare services. Just reckless to expose myself to the hazard of mega bills for small mistakes or DoS attacks. I wish more companies allowed prepayment for plans like Bunny.net does.

I don't get this argument as it really doesn't match my practical experience. Using new C# features, the code I write is both easier to read and easier to write. On top of that it's less error prone.

C# is also much more flexible than languages you compared it to. In bunch of scenarios where you would need to add a second language to the stack, you could with C# still use just one language, which reduces complexity significantly.


PyPI was always broken due to weird ideas for problems that were long solved in other languages or distributions. They had/have the backing of fastly.net, which created an arrogant and incompetent environment where people listed to no one.

Conda suffers from the virtual environment syndrome. Virtual environments are always imperfect and confusing. System libraries sometime leak through. The "scientific" Python stack has horrible mixtures of C/C++/Cython etc., all poorly written ad difficult to build.

Projects deteriorated in their ability to build from source due to the availability of binary wheels and the explosion of build systems. In 2010 there was a good chance that building a C project worked. Now you fight with meson versions, meson-python, cython versions, libc versions and so forth.

There is no longer any culture of correctness and code cleanliness in the Python ecosystem. A lot of good developers have left. Some current developers work for the companies who sell solutions for the chaos in the ecosystem.


I gave up on having feet about a month ago. The stupid I hit my toe on the corner of the wall bug was enough for me. Have had plenty of times now where I've ignored that walls might have corners and I haven't banged my toes anymore. I don't know what's changed lately, but seems as if having feet have gotten quite buggy.

Personally when I bang my toes against a corner, I don't think about removing my feet just to prevent toe banging.

---------------

Reductio ad absurdum aside, if I'm experiencing an issue in a browser, my first thought is to diagnose and fix the issue or find an expectable workaround rather than change to a browser with obvious privacy issues.


Not the same thing, but you can get diamond tipped 3d printer nozzles for ~$100: https://www.amazon.com/Diamondback-Nozzles-Compatible-Polycr...

Considering that these are a niche product requiring a precisely shaped diamond insert made by a relatively small operation in the US, I think it's believable that a Chinese company could produce diamond files for ~$10, considering that it only needs diamond powder and has more space for mass production.


I ask these indirectly.

    "What types of people tend to succeed and do well with your team?  What types of people tend to struggle in your team?"
(Am I going to be a culture and work/life balance fit?)

    "What are your main objectives in the next 6 to 12 months?  What's your plan to meet those objectives?"
(Do these guys have their act together and an actual plan? Is the work going to be interesting?)

    "How do you see the candidate in this role contributing to that objective?"
(Are their expectations for this role realistic? Do I fit those expectations? Do I want to be on that ride?)

    "Tell me about how the team collaborates and coordinates work"
(Am I going to be stuck in 1 hour all-hands daily "stand-ups" every day?)

I think you replied to the wrong comment.

> There's not a single widely distributed infra application in C# out there.

Azure has entered the chat.

Microsoft Orleans has entered the chat.

ASP .NET Core has entered the chat.

Ever played Halo online?

Used StackOverflow? (very likely)

Visited any website on Azure? (most likely)

Microsoft Orleans (Virtual Actor framework) powers the Halo server infrastructure since at least 2011 if not sooner, which arguably the Halo series is insanely popular, especially for online gaming. Also powers plenty of Azure itselfs own infrastructure. I've worked on dozens of scalable C# projects, and know plenty of devs from all over who have as well.

Orleans was so good, EA made their own version in Java which was extensively used there as well, though it looks to be dead, but Orleans is as alive as ever.

Not to mention plenty of Azure itself is open source, like say... Azure Functions, which run inside of ASP .NET Web Services... and are... you guessed it, C#. Plenty of services running on that platform.

https://github.com/Azure/azure-functions-host


Dotnet MVC is a breath of fresh air from working on React projects. Going from Prisma to EF Core feels like I'm time traveling back from an Idiocracy (2006) world.

Yeah it's very easy to write Java style C# that is incredibly verbose and rigid, but once you understand modern c# you can see how it's this really great (imo, awesome) hybrid of functional/typed languages. They've done a ton of syntax work to let types get out of your way when you need them to, with the ability to always fallback to rigidly declaring them when you need better readability.

The downside of all this is that the only people that know how awesome C# is are people who are already doing C#. Growing the pot and trying to convince people to give it a go in its modern (post dotnet 5/"core") iteration is like pulling teeth. Everyone assumes nothing has changed since like C# 2, and given the fact it's a "boring" language that doesn't have Hacker Hype behind it, people just ignore it.

Every week you have people on HN wishing for something that does exactly what C# does but don't want to give it a shot or admit that C# is _actually_ an incredible language and toolset that does exactly what they want (and more).


You can buy several varieties of hydroxyapatite toothpaste on Amazon now. Before 2021 or so it was a bit of a pain - a couple Japanese and Singaporean brands with spotty availability.

Edit: as alluded to by sibling comment, there are confusing claims about the exact size and structure of the hydroxyapatite ingredient used. Several brands claim that their particles (?) are smaller than those used by Novamin or by other brands and therefore more effective.

The concept of remineralizing the surface of existing teeth is totally different than what this article is talking about, though.


If, like me, you have no idea what's going on here:

LR/SC stands for load-reserved/store-conditional, also called load-linked/store-conditional.

In a traditional atomic implementation using Compare-and-Swap, the order of execution is as follows:

1. Read value X into register A. 2. Do computation using register A, creating a new value in register B. 3. Do a compare-and-swap on value X: If X == A, then set X to B. The operation was successful. If X != B, another thread changed X while we were using it, so the operation failed. Rollback and retry.

This suffers from the ABA problem: it does not detect the case where another thread changes X to a new value C, but then changed it back to A before the compare-and-swap happens.

An example:

  def push(stack, val):
    1. new = malloc()
    2. new->data = val
    3. orig = atomic_load(&stack->head)
    4. new->next = orig
    5. compare_and_swap(&stack->head, new, orig) // todo retry on CAS failure
  
  def pop(stack):
    1. orig = atomic_load(&stack->head)
    2. new = orig->next
    3. compare_and_swap(&stack->head, new, orig) // again, retry skipped for brevity
    4. val = orig->data
    5. free(orig)
    6. return val
This allows for the following order of execution:

  Our stack contains 3 items at 0x01, 0x02, 0x03.
  Thread 1 calls pop

  1. orig = atomic_load(&stack->head)          // orig = 0x01
  2. new = orig->next                          // new = 0x02

  Context switch. Thread 2 calls pop twice.

  1. orig = atomic_load(&stack->head)          // orig = 0x01
  2. new = orig->next                          // new = 0x02
  3. compare_and_swap(&stack->head, new, orig) // stack->head = 0x02
  5. free(orig)                                // 0x01 is freed

  1. orig = atomic_load(&stack->head)          // orig = 0x02
  2. new = orig->next                          // new = 0x03
  3. compare_and_swap(&stack->head, new, orig) // stack->head = 0x03
  5. free(orig)                                // 0x02 is freed

  Context switch. Thread 3 calls push.

  1. new = malloc()                            // new = 0x01. Valid, it was just freed.
  3. orig = atomic_load(&stack->head)          // orig = 0x03
  4. new->next = orig                          // new->next = 0x03
  5. compare_and_swap(&stack->head, new, orig) // stack->head = 0x01

  Context switch. Thread 1 continues pop

  3. compare_and_swap(&stack->head, new, orig) // stack->head = 0x02
  5. free(orig)                                // 0x01 is freed
Boom. stack->head now points to 0x02, which has already been freed!

LR/SC avoids this by having "lr" reserve a memory location. On calling "sc", if any write to it occured since "lr", the write will fail - even if the content when "sc" is called is identical to the content when "lr" was called.

Please feel free to correct me if I got anything wrong - this is what I found when trying to understand it myself!


Life and its rewards aren't perfect. Work with honest, intelligent people; genuinely do your best; your days will be much better and the odds will be with you.

Not to dig on this project, but I find it constantly befuddling how awful the Python dev ecosystem is. And has barely improved after a decade of being so popular. The ergonomics of coding with Java or C# in 2010 are still so far beyond anything in Python in 2024, I constantly question why it's so popular.

We built a human factory farm and are disappointed in the cattle. You get what you optimize for.

I feel like I have to repeat this, since so much is at stake here, where it is about the preservation of the web as we know it today, at the peril of having it turned into yet another walled garden:

The only way around the dystopia this will lead to is to constantly and relentlessly shame and even harass all those involved in helping create it. The scolding in the issue tracker of that wretched "project" shall flow like a river, until the spirit of those pursuing it breaks, and the effort is disbanded.

And once the corporate hydra has regrown its head, repeat. Hopefully, enough practise makes those fighting the dystopia effective enough to one day topple over sponsoring and enabling organisations as a whole, instead of only their little initiatives leading down that path.

Not a pretty thing, but necessary.


A fork bomb. In shell:

    :(){ :|:& };:

You inhabit a global economy that was imagined by students in dorm rooms and couch surfing launch failures.

Working people today have the wealth and leisure of every single lady and gentleman scientist who has ever made a significant contribution - and we have the sum of human knowledge at our fingertips. You have running water, flushing toilets, and food delivery. The only thing standing in the way is a commitment to curiosity and competence. The beauty of science is it is in the evidence of reproducable experiments. All models are wrong, most theories are bullshit, and the people charged with progressing science for our species learned it in a couple lectures a week over three years or less. You can do valuable and edifying work in less time than it took to fully apprehend the disappointment of the Game of Thrones finale if you'd only watched 3blue1brown videos instead.

Prestige is what they offer you when they don't want to pay you what you are worth, and their esteem isn't worth the envy and sabotage it costs. If you are curious about something, find out. The one thing that I can guarantee that is true about this world is that it forgives you when you prevail, and when you fail, nobody cares. I say this to myself as much as anyone.


While the behavior from "FrugalGuy" is immature and childish, a better way for the mitmproxy maintainer would be to post a polite but firm response, one that leaves no room for error or drama such as this one:

> As per the mitmproxy license, the software is provided as-is without warranty, and project maintainers are currently constrained by other priorities and deliverables.

> As such, statements on the Github issue tracker are not considered as sufficient justification for the prioritization of issues. The only way to prioritize issues would be to enter a support contract, available [here], the terms of which we will be happy to discuss further.


> It just sets legal precedence that corporations can assert arbitrary censorship through third parties by claiming copyright infringement.

This is already the case though. Copyright monopolists already can DMCA anything out of existence. Their accusations are assumed to be true based on "good faith" and other people are required to bend over backwards to take content down. Nobody is going to spend time and money fighting bullshit claims, they're just going to comply and move on. Which means these monopolists have de facto censorship powers.

Sony in particular is very well known for abusing the legal system and their wealth to drive competitors out of business. They can afford to burn the money of their enemies by forcing them to fight frivolous lawsuits. If I remember right, they destroyed two commercial PlayStation emulators with bullshit lawsuits where they lost in court but won in the market.


i routunely remind everyone,"we're all mercenaries."

i have marginal control over who i manage. The Product isnt saving the world, but it is allowing us to live reasonably and with a clear soul at the end of the sprint. The reason i say the "mercenary" bit is simple: weigh your dreams against blood and gold and compromise.


Article is a little infuriating, you don’t jailbreak it just to create mischief, at the moment it’s basically unusable for anything except very technical things because it takes offense at virtually everything. It constantly generates factually incorrect data because reality doesn’t line up with its prime directive, which is to be “safe”. It’s a major, I’m going to say possibly catastrophic problem.

And after creating an alter ego you realize it actually is capable of coming up with for example (sort of) good poetry and jokes.


They're defining harmful content based on political orthodoxy, like every other censorious tinpot dictatorship in history. The objective remains the same too; promote a thought monoculture and propagate the political orthodoxy. The original article makes it very clear that it has nothing to do with preventing harm or promoting equality or any of the other nonsense this is being giftwrapped in.

There's a book in Dutch literature, The Assault by Harry Mulisch. It's a great read if you're interested in multi-faceted morality. It deals with guilt and responsibility when there's a chain of things that need to happen for a bad outcome.

During WWII the protagonist's parents are shot by Germans after a body of a collaborator was found in front of their house. The parents were arguing with the soldiers about something when arrested and ended up shot during the arrest.

The collaborator was shot by the resistance in front of their neighbours house, and the neighbours moved the body in front of the protagonist's house.

Over the years, he encounters many people involved in this event, and starts seeing things from many sides. One of the themes that's explored is who bears moral responsibility for his parents' death? The Germans for shooting them? His mother for arguing? The neighbours for moving the body? The resistance for shooting the collaborator? The collaborator for collaborating? All of their actions were a necessary link in the chain that lead to their death.

One of the characters utters a simple and powerful way of dealing with that morality: "He who did it, did it, and not somebody else. The only useful truth is that everybody is killed, by who he is killed, and not by anyone else."

It's a self-serving morality, because the character was part of the resistance group that shot the collaborator in a time where reprisals where very common. But it's also very appealing in its simplicity and clarity.

I find myself referring back to it, in cases like this. In the imagined future, where this tech is used for Bad Things, who is responsible for those Bad Things? The person that did the Bad Thing? The person that developed this tech? The people that developed the tech that lead up to this development?

I'm much inclined to only lay blame on the person that did the Bad Thing.


I have a number of git repos that the original developers deleted - because I sync’d them to a usb stick with gitea. I think that is how you have to do it - never entrust a service, especially a free one, with your only copy of anything you value.

If the YouTube algorithm nukes your account and all your videos, you should be ready to upload them to a new account. Same with anything else digital.

My current is standard is one copy in AWS S3 which is super reliable but too pricy for daily use, and one copy in Cloudflare R2 or Backblaze B2 which might or might not be reliable (time will tell) but is hella cheap for daily use.


Here's my god-tier hacks for memory and concentration.

1. For memory: it's all about the strange. The brain is exceptionally good at remembering strange and weird events. So all the articles you read where something odd happens you'll probably be able to recall with photographic accuracy. One way to take advantage of this is to weave strange narratives throughout factual information you want to recall. It would probably be best if someone else did this for you so you'll know it's not fake and you'll automatically hang on to the story as an anchor point. The best part about this technique is it requires no effort. You will automatically prioritise remembering the information. No additional effort needed.

2. For concentration: it's paramount you consider your motives. Since this is hacker news the main reason people might want to optimise concentration is to work harder. They fear that they're 'not getting enough done.' Maybe in severe cases they won't be able to start work at all. The trouble is: the harder you force yourself to work, the less time you have to recover, and the sloppier your work becomes. Believe it or not -- the ones who are able to achieve exceptional output are also the ones who aren't overly-attached. They can deliver whether things are going good or not because they're always emotionally in a good place. When you care for yourself better you really can do amazing things. Software engineering can be very demanding so I do think this is the right approach for most people.


The point of all this is to have people who are unqualified as individuals embedded deep in every organization who are loyal to and owe their jobs and livelihood not to their own merit, but to external political movements.

Unlike unions, these external political movements do not care about the organizations their members are embedded in, but have other goals which is why they are unconcerned with merit. Unions at least wanted the organizations their members belonged to to survive and employees to have some level of competence.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: