skysight-inc/HackerNews huggingface dataset:
"Hoarder" like "psychopath" has ceased to be a useful layperson's useful medical term. I think the medical community would do us some service by coming up with a new phrase. How about "obsessive physical retainer"? Also of interest is that societies view of "obsessive physical retainers" is so negative. We don't generally view mental hoarding as a disorder. And as far as the physical sort, imaging how many thousands of years behind we would now be if those monks hadn't hoarded those ancient manuscripts. They could hardly read let alone understand them but kept them anyway. We wouldn't know that Lucretius had theorized the atom among many other wonderful things.

I have a acquaintance who society would probably consider a hoarder. Some of you may know him. Many will know people like him. He likes stuff. Definitely far along on the hoarder spectrum. He acquired an abandoned rail station to give a home to all his stuff. He has hundreds of cars. He has every game ever made. He has more knickknacks than any antique store I've ever seen. There is no garbage. There is no stench. So I'd claim that he doesn't suffer from "obsessive physical retainer" pathology.
How do monetary donations translate into votes? Whether I give a candidate $1 or $1million, I still get only one vote; the only merit of donating money is to help my candidate make their views better known to more people, each of whom can now make a better-informed decision.

There are many cases of well funded candidates (be they self-funded or funded by small donors) failing to win elections; e.g. Michael Bloomberg and Bernie Sanders on the national stage. Despite tremendous advertising, these candidates were deemed inferior by enough voters to lose.
Not likely, it's central government has been completely captured by coal interests. You could say they have been "carbon captured" _sunglasses_
“Personal Knowledge” in Medicine and Epistemic Shortcomings of Scientism (2015)
“productivity is abysmal which is understandable. The mess is just too huge to be able to build anything.

This business unit has a pretty aggressive roadmap…”

Sounds to me like it doesn’t work.
I studied computer science. It came with some math - four semesters of calc, diff eq, linear, discrete, etc. FOUR semesters of calc!

It’s only use has been to tutor my daughters.
I'm no expert, but the advice in Working Effectively with Legacy Code has been helpful on occasion:

https://www.amazon.com/Working-Effectively-Legacy-Michael-Fe....

Fully apprising management of the situation in a way they can understand may also reap long-term dividends.
Vis Tarot
So if your device is compromised, the attacker could trick you into entering 2FA for some minor action while it actually is transferring all your funds.

If your PC or smartphone is compromised nothing will prevent you from losing control of your accounts.
Heh, I've done exactly what your parent describes on an entire directory with syncthing. It was my fault for misunderstanding how to add a new device, but that catastrophic confusion has scared me away ever since.
Wechat is a brower with
sdk included which website owners can easily utilize to get the user info and money. The only thing the website owner needs to do is associate the website with wechat through registertion and authetication （in the form of mini program）.

If users can put the user info and payments info into chrome or firefox brower through some kind of open protocol，and every website has the abality to issue request to utilize this information，then the browers will be the more decenterized super app.
Feels like you should start with introducing version control, dependency management, and creating a deploy process after that.

Those seem like low hanging fruit that are unlikely to effect prod.

You should also probably spend a decent amount of time convincing management of the situation. If they're oblivious that's never going to go well.

I agree a full rewrite is a mistake and you have to instead fixed bite sized chunks. It also will help to do that if you start to invest in tooling, a deploy story and eventually tests (I'm assuming there are none). If I was making 20 million off some code I'd sure as heck prioritize testing stuff (at least laying the groundwork).

Its probably also worth determining how risk tolerant the product is and you could probably move faster cleaning up if it is something that can accept risk. If it's super critical and I'd seriously prioritize setting up regression testing in some form first
Why is the junior non-productive team resistant to change? answer this and you might get an answer on the path forward. It sounds like this team wasn't responsible for this mess - but then they should be excited to try something better. On the other hand, if they think this is all great, then why is productivity poor? if this is all PHP code I'm not sure what the difference between front-end/backend would be - what is the mobile person doing on prod PHP code?
Code is always part of a larger business strategy. You are working for a small business that has found a way to leverage large revenue off of cheap talent. A full rewrite will destroy this business. Instead look for low hanging fruit like teaching the devs source control in a respectful way that is actually useful to their existing work process.
Honestly, I know this answer isnt going to be that popular in some circles, but.. yes. leave it. If it offends your sensibility so much that you just can't be 'caretaker' for this mess, walk away.

But if it's "working fine and generating heaps of cash" as far as upstairs is concerned, there is no way you play the 'refactor/redesign/replace' game and come out ahead.
Also mv, ln.
The most important shift I’ve made in my life was when I started approaching conversations with the attitude that the other person could teach me something, no matter who it is. Sometimes it takes some digging, but I’ve found it to be true.
Ah. So it's a contraction of "freedom of speech" and "none of my business".
Like the advice to be careful where you walk in the cities at night.
> Build a functional test system, and write a big suite of tests which ensure preservation of behavior. Make it easy to run and see the results.

Keep it to yourself and don't let anyone know why you are so effective.

Demand a raise early once you are sure of your value.

Edit: why not? Clearly this is a huge value that would be wholly unappreciated without leveraging it yourself.
In the before times, support sites had IVR and absolutely no one liked it.

Now they have voice recognition: "OK, you want 'help'. What kind of 'help' do you want?" It is not even remotely like talking to a human.

I hate that even more. A poll about "which is worse?" would be entertaining, if nothing else.
You should never assume that. If this is a real world thing, just put TLS on the connection properly and be done with it.
Go programs are also statically linked and Go based CLI tools generally only come in at 3-4 MB IIRC. I've used static linking in binaries in Nim and C programs too with similar (or smaller) sizes.

Rust binaries are just impressively large. I'd guess part of it must be how Rust monomorphizes generics: https://rustc-dev-guide.rust-lang.org/backend/monomorph.html
so, what's the problem of the code base business-wise?
I know the typical piece of advice is to never rewrite but I am going through a similar situation and a rewrite would probably have been better and simpler.

The key is though, you don’t rewrite the code, you rewrite the app. Figure out what the functional pieces of the app and what it’s supposed to do. Don’t use any ActiveRecord style ORMs, so Laravel is out. If the app is that bad then SQL database is probably a huge mess. If it had to be PHP, use Symfony and Doctrine.

Build an MVC version of the application.

If there was any sort of structure to the application then the refactor not rewrite approach would be correct but if it’s anything like what I think it is, it’s a fucking mess. Refactoring will just make a bigger mess.

If you can get away with refactoring pieces at a time into symfony components until you can eventually have an MVC framework then do it but likely that would be a much bigger task.
Agree with this approach 100%
Wow. In Salt Lake, an online search for 10x10 units showed $200 (which is a lot higher than I expected), but $137 for a "web special", and someone else with $105. Even that's higher than I thought, but... $300 still seems unreasonably high.
First off, source control. I would say this was a day 1 job.

Get some type of CI/devops thing going so you can deploy to a temporary test environment whenever you want. This applies to the data too so that means getting backups working. Don't forget email notifications and stuff like that.

Next comes some manner of automated testing. Nothing too flash, just try to cover as much of the codebase as possible so you can know if something has broken.

Go over the codebase looking for dramatic security problems. I bet there's some "stringified" SQL in there. Any hard coded passwords? Plaintext API calls?

And now everything else. You're going to be busy.
Huh. You are literally saying do a full rewrite. But it's also the worst idea?

Edit: A full rewrite always meant replacing every part of a system. Whether you do it gradually doesn't really matter.
The filibuster is not in the constitution. Currently, the senate has adopted a rule by which debate may be closed with 60 votes. So if one side has 41 votes they may, by convention, ‘filibuster’ (which entails nothing but saying ‘we filibuster’) and the bill fails. The majority doesn’t have to accept this though, and can force the other side to literally filibuster, by ‘debating’ continuously, so as to prevent a vote. It is unlikely that this could be maintained forever, especially when the issue to be voted on enjoyed popular support. As a famous example, see Strom Thurmond’s filibuster of the Civil Rights Act of 1957.

https://en.m.wikipedia.org/wiki/Strom_Thurmond_filibuster_of...
I usually only laugh earlier as a result of this. But now that you bring it up they can spoil things a few seconds too early as well.
There's a few sites (e.g. local city news sites) that return 451 status code for EU IP addresses
This is the correct answer.

For an additional perspective see this classic: https://dhemery.com/articles/resistance_as_a_resource/
Would recommend checking out https://github.com/facebookincubator/cinder
People suggest rewriting little-by-little. Does that really work in practice? And why would one do it? Why not let that business rot-in-place so to speak, while building a new business on a new platform to "compete" with it?

I worked for a company early in my career that sold a $1500 piece of software and had revenue of $15 million. When I was there, the head could was 70. Ten years later the head count is two - one engineer and one person to take the orders. And revenue was still a couple million. A classic "rot-in-place" situation.
Part of the reason some VPN providers (including myself in the past) lease the hardware is to be extremely scalable. Customer retention low because VPN doesn't work for xyz streaming service? "Check out our new endpoints here in this obscure tiny colo!" Want to spin up endpoints in Russia? Done! Africa? Done!

I have equipment I own in two colos - for other things. It made way more sense when I was selling VPN access to lease everything.

Most importantly, this boast Azure is making falls flat on its face unless they own everything. Even if they "own the servers" they're likely still colocated, being provided network hand-off, etc. ¯\_(ツ)_/¯
When I am feeling anxious, I say a little wish out to the world. I wish that those who are suffering find the burden lifted. And I imagine that there are those who are wishing the same for me.
I will take a leap of faith and assume this isn't intended as a joke.

Yes, CO2 traps heat in air, trapped heat in air means hotter surface and hotter air, most of earth's surface is water, hotter surface means more water vapour, hotter air means more capacity to carry water vapour, water vapour forms clouds, clouds lead to precipitation.

Climate change is leading simultaneously to two issues: not enough water, too much water.

The former is obvious why: more water in air, means more rain, combined with more heat means more and bigger hurricanes/typhoons etc..

At the same time, due to more complex effects, droughts occur. Basically that is happening in regions where wind and ocean currents are not transferring moisture in to the region, but heat is causing evaporation. Other effects also contribute (eg. reduced snow pack in mountains, leading to there being less ice to melt to keep rivers flowing).

You can google "what is climate change?"
within a factor of 2-3

That's still a huge difference, and as I mentioned above, the 8051 is found in applications which are very sensitive to cost. In terms of gate count, the lowest numbers I could find for a RISC-V core are in the 10-20k range, while an 8051 goes down to 2.7k:

https://www.electronicsweekly.com/news/design/eda-and-ip/805...
'Vindictive' couple deleted hotel chain data for fun
I have a home theater (do they still call it that?) with 5.1, 5 speakers and all that jazz. I tried everything but with many movies (esp. all the superhero stuff) the only option is to lower the volume and turn on the subtitles to be able to follow the dialog. I wish there was an option to make the loud parts less louder and quiet less quiet, but I couldn't't find it (it's an older onkyo).
hmm I typically do tab completion so I'd be nervous just doing a quick rm -rf ../(mis-KeyPress) [TAB + Enter] and watching the entire parent dir getting wiped out.
Seeing a lot of people say that a rewrite is a terrible idea, but (as someone who doesn’t understand why) I’d love to hear a more fleshed out explanation re: why exactly that’d be a bad idea.
Out of all possible compression codecs and search algorithms, why did you ask about EF and WAND? Have you read about these elsewhere?
This is really apparent if you've ever worked in retail, specifically small stores with few customers at a time. One of the parts I loved about working at vape shop was talking to people.
Start with writing integration tests. Worry about touching the code only after you have a full test harness. Using an external tool like Playwright, Cypress, or Selenium you can write the tests in a language of your choice without touching the code.

Deploy the code into a staging environment (make a copy of prod). Kubernetes might be useful to try to package the application in a replicable manner. Then get the tests running on CI.

When the tests cover literally everything the app can do, and everything (tests/deployment) are running on CI, changing the app becomes very easy.

Your junior coders no doubt have been yelled at many times for attempting changes and failing. When they begin to understand that change with breakage is possible, their confidence will increase, and they will become better coders.

Resist the urge to change the application at all until you have tests.
“could” being the operative word. so much could happen, but what’s currently realistic is more sobering. currently, we have no way of realistically storing the magnitude of grid-stabilizing power required by intermittent renewables. even all the car batteries in the world are not anywhere close to enough, and that’s after 2+ decades of mining and manufacturing. pumped hydro is similarly limited. molten salt storage? decades. kinetics? decades.

but no one is saying we stop renewables. what we need to be saying is that we resume nuclear (primarily a mediopolitical problem) and do away with coal as fast as possible while we sort the storage issue out over the coming decades.
> It doesn't work.

That's simply not true. I've inherited something just as bad as this. We did a full rewrite and it was quite successful and the company went on to triple the revenue.

> get some testing in place

Writing tests for something that is already not functional, will be a waste of time. How do you fix the things that the test prove are broken? It is better to spend the time figuring out what all the features are, document them and then rewrite, with tests.
Yes same. Sometimes you see a frankenstein code and devs get all emotional and wants a full rewrite or die attitude. Maybe take a step back and migrate piece by piece.
Well, that blew out my speakers.
I think some of it is surround sound that modern streaming and televisions use without actual surround sound speakers. I've found if a movie/show is in surround sound, changing audio to non-surround sound helps a lot.
I’m a little drunk and I have not even read the article but I was discussing this very thing with my friends. We have so many stories and we are each going through so much struggle individually. Why can’t we be kind and considerate of each other?
Anthropologist writes anthropology book about the anthropology of debt, currency, and money.

Graeber's great crime is debunking the myth that barter predates money. The historical and anthropological records show that debt precedes currencies. Further, known instances of barter emerge when a society's monetary system implodes. Academia and pundits should update their narratives accordingly.

Among many impact observations, the bits about debt crises stands out. Spoiler: recurring crises and debt forgiveness is the historical norm. Academia and pundits should update their narratives accordingly.

Graeber does not discuss finance, economics, accounting, monetary policy, etc. Because it's all out of scope. And outside of Graeber's fields of study.
> S6 was aiming to do for Python what V8 did for Javascript

> Python is slow, and a lot of researchers use Python as their primary interface to build models.

Why not just build models in JS?
Having worked on a few decently large C++ codebases, I can confidently say that this is not how I view things. Shared pointers might be pretty drastically overused by some programmers but have use cases, and I think unique pointers are pretty invaluable.

I can't imagine writing a long running, memory conscious, and fast C++ program that uses whatever 'macro' management strategy you envision.
Just quit. It’s not worth saving these people if you’re not getting paid to.
Yes, I suppose the wife’s great grandfather probably should have had the forethought to look a hundred years into the future and realize that there would be someone who was disliked that also had an ancestor that Americanized their name around that time knowing that this would cause random people on the internet to pass judgement on the decision as a form of guilt by association.
Full rewrite generally means stop the presses we are gonna migrate this whole thing from here to there and no new features until it's done (hint it never gets done).
Ridiculous idea. Sure, you can run your own private email server... and watch as your messages go to everyone else's spam. It does not matter what SPV, DMARC bullshit hoop you jump through. Ultimately google gets to decide what email providers live and what email providers die.

It is analogous to creating your own postal service or phone company that only lets you send letters to users of the same postal service or phone company. The service is only useful due to network effects.
That's not what I'm saying. But suit yourself. Let's run with your line of thinking and see how that plays out for you. Let's generalize the other way for the sake of debate.

Let's assume you voted Democrat sometime before 2018.

SC Justice Kennedy, a Republican made it illegal to prosecute gays for sodomy.

Kennedy was on the bench so if you voted Democrat, I guess you're anti-gay, you sick bastard! (Me too apparently! Since I did.)

Sure, Democrats are fighting for civil liberties, right? Unless you want to talk about how they are actually anti-gay, and opposed Trump's rules that federally prevent discriminating cross dressers at work. Didn't hear about that one? Well, that might be because you're busy listening to Democrat politicians YELLING SO LOUD about how they are pro gay rights. Pro civil rights. While they go sit in Congress and vote, just like everyone else, for the corporation who gave them the biggest campaign contribution. Check for yourself at Congress.gov what your Democrat politicians are voting for. Should we brand you with all of those horrible things they voted for like Intuit's grip on the complexities of the tax system? It's your fault taxes are hard to file, I guess! Surely that's a Democratic ideal! I blame you! I should, right? Isn't that what you're saying? That we blame you for your politicians?

And if anything I just said about you isn't true, well, it's just a generalization, isn't it? So by your philosophy, I'm right. Whether you're anti gay or not, you aren't an individual so you don't actually have any opinion except what the Democratic party says your opinion is when they vote in Congress. You are anti-gay now and I don't care how much you want to defend yourself you can't because you voted Democrat. You're a gay hater bro. That's that. That's just who you are.

At least by your philosophy.

Which I very clearly disagree with.
Immediately first thing I noticed...
Start with getting your source control and deployment in order. If you have to, lock down production so that the only way to deploy is via a checkin. Then fix the rest of the ops and get all the configs into source control, especially the NGInX config. Make sure memcache is set up for scaling later.

Then start in on the code. Start by writing some basic tests (you'll probably have to do this as a series of curl commands because it's unlikely the interfaces are clean enough to do it any other way). You'll need the tests to make sure everything else you do doesn't break major functionality.

Then do the easy stuff first. Fix the parts that curl itself and make it a real API call. Fix the dependency management. Compress the NGInX file by eliminating whatever rewrites you can by adding routing into the code. Test often, deploy often.

Enable tracing to figure out what code can be safely deleted. See if you can find old versions sitting around and do diffs.

Replace all the code that accesses the data store with a data access layer. Once you've done that, you can bring up a new data store with a proper schema. Make the data access layer write to the new data store and do queries by joining the old and new as necessary. If possible have the data access layer write any data it reads from the old data store into the new one after it serves the request, and read first from the new data store. Log how often you have to read from the old data store. In theory this will go down over time. Once there isn't a lot of reads from the old data store, write a program that runs in the background migrating the remaining data.

Most likely you can do all of that without anyone really noticing, other than teaching them a new way to write code by doing a checkin instead of in production. Also you'll have to teach them to use the data access layer instead of directly going to the data store.

After you've done all that, don't try and rewrite the code. Spin up a new service that does some small part of the code, and build it properly with frameworks and libraries and dependency management and whatever else makes sense. Change the main code to call your service, then delete the code in the main service and replace with a comment of where to find the new code. Maybe if no one else is working on that service they won't notice. Make sure new functionality goes in the new service with all the dependency management and such.

Keep doing that with small parts of the code by either adding into the new service or spinning up new micro services, whichever way you think is best. Ideally do this in the order of how often each function is called (you still have tracing on right?). Eventually most of the important stuff will be moved, and then you can decide if you want to bother moving the rest.

Hopefully by then you'll have a much better velocity on the most important stuff.
He’s saying to Ship of Theseus the codebase. Don’t build a new ship and then burn down the old ship. Replace the old ship piece by piece in place.