skysight-inc/HackerNews huggingface dataset:
> generates more than 20 million dollars a year of revenue

and

> team is 3 people

and

> post COVID, budget is really tight

Why? All technical details aside if this can't be addressed I wouldn't even bother trying unless I owned stock.
Haven’t seen anyone here mention instrumentation. Once you get source control set up, I would lean hard into metrics and observability, so you can easily identify and eliminate dead code, and also figure out what’s the most important.

Same for the DB - instrument your queries, figure out what your most important queries are.
Not unless it's prefaced by the word prophet, otherwise it's just a random name.
Punishment, puppies, and science: Bringing dog training to heel
Also, just use

for file; do blah done

which is equivalent to

for file in "$@"; do blah done

shorter and no bug.
But, the code makes 20 million dollars a year. How bad can it be?
Unless you have a good reason not to, I’d quit. It’s highly unlikely you’ll be able to change the culture without a ton of frustration. It’s just not worth it unless you enjoy that kind of challenge or are being well compensated.
They’re saying to do it, eventually, incrementally and not all at once.
From Neil Gaiman and Terry Pratchett's Good Omens:

> Crowley, a demon: [during Jesus's crucifixion] What has he said that made everyone so upset?

> Aziraphale, an angel: Be kind to each other.

> Crowley: Oh yeah. That'll do it.
I’ve only ever witnessed ship-of-Theseus style migrations and those also never get done.
python has a large ecosystem of scientific, mathematical, and machine learning libraries. there is no real replacement for that in the js world.
Do any of these JITs/compilers help with machine learning model building? (Mentioned explicitly in the s6 repo)

e.g. PyPy doesn't work with PyTorch https://github.com/pytorch/pytorch/issues/17835
> Why can’t we be kind and considerate of each other?

inflation and social media.

before we had just inflation. now we have social media that magnifies it.
Lots of great advice in this thread, heed it.

I would just add -- embrace the challenge. It actually sounds like a fun problem. After many years in tech, I've learned that I'd rather work on improving a pile of shit codebase that produces a lot of value than a pristine perfect codebase that does not.
Quite a bit of replies with various good suggestions in a short span of time. However, I could not understand what exactly is the problem you are trying to solve?

A $20m/year is pretty impressive with that kind of spaghetti code/tech amalgamation. It would be certainly a fun project for your more junior developers to dig into it and understand the actively used features. That raises my next question: what exactly is wrong with your 3-people development team? Are you expecting only 3 of them to make major changes, let alone a full rewrite for such a project?

The way I see it is that you only have enough development resources to make minor changes or features that fit in the project's current spaghetti framework. Is that what management wants? If they want some big new features your only option is to find path of least resistance to implement them, especially if your budget is tight. Basically, add more hack-fixes and continue feeding the monstrous legacy. Unless you get more people, more budget you don't really have a choice of doing things "the proper way".
Free speech online in this context cuts both ways. People are allowed to espouse views online that may lead to "violence", and the people that work and pay to keep online platforms running are allowed to scrub words they don't like from the platform they own. It's absurd that they could be compelled to display the dumb shit some people say.
But it is functional. Grandparent post is suggesting that all the currently used functionality should have tests written for it. It makes sense, as that way they can gather the requirements of a rewrite at the same time.
Looks great, reminds me a lil of Vigilante 8.
The real world always seems to be a mix between the two. Technology does transform the world and make some things better, but it’s a double a edged sword and has unintended consequences that make some things worse, or creates new problems.
I love Tenet, but it has the worst sound mix I’ve ever heard.
https://news.ycombinator.com/item?id=29417309
Rewrites frequently fail or go massively over budget/schedule.

It can be difficult to fully replicate the existing system and there are frequently important but subtle reasons why the existing system has the architecture it does.

To the extent that one can make modular changes and address the most-important pain-points, one probably should.

Sometimes a complete rewrite is a better choice, but if embarking on that path, a fail-fast attempt at an MVP might be the right style to do so. If the MVP crushes the existing system in performance/benefits, then subsequent iterative development may yield a viable re-written replacement system.
Exactly. If they write tests, they will be just doing TDD where the specification becomes a problem in itself.
> I want to help them get their business online

I'm not meetup but I do get a lot of sales calls where people want to help me with my business, and those are my least favorite calls to receive. I do have to put my number out there publicly and one of the downsides to doing that is I get a lot of sales calls. When I get a call on my work number, and I say "hello", and the other person is from someplace I never heard of, the first thing I ask is "is this a sales call?" And they never say it is, of course, they say they want to help me with my business.

So: yes, Meetup SHOULD make it easier for people to contact them, but they're probably avoiding your particular type of call. Unless, of course, you want to help them for free, in which case... why would you want to do that.
Yep.

It's also a juggling job from hell so keep a cool head and seek support and resources for what needs to be done.

A big first step is to duplicate and isolate, as much as possible, a "working copy" of the production working code.

You now need to maintain the production version, as requests go on, while also carving out feasible chunks to "replace" with better modules.

Obviously you work against the copy, test, test again, and then slide in a replacement to the live production monolith .. with bated breath and a "in case of fubar" plan in the wings.

If it's any consolation, and no, no it isn't, this scenario is suprisingly common in thriving businesses.
At some point caution becomes excessive and obstructive, dismissing a possibility you don't like until after it's been rolled out and solved the problem. A reasonable assessment should look at the technologies and judge how likely they are to work.

All the technologies are now subject to ever-increasing economic incentive to make them work. There are trillions of dollars riding on this. The world could spend a quadrillion dollars on energy over the next century. It doesn't get much bigger than that.

If there is anything retarding any of these technologies, it's competition from others. In the end, you'll see most of them failing to come out on top. But that will just be a sign there were better options, not a sign that these failures couldn't have also done the job.

Molten salt storage, btw, isn't IMO terribly reasonable; there are much cheaper media in which to store heat, like sand.
Does not compute... Ship of Theseus is just regular old development of course it never gets done but new features aren't put on hold.
Very cool. Love the simplicity of paper, but it would be cool to get an STL output I could 3D print for something more weather-proof.
When approaching seemingly insurmountable technical issues, I've found it important to find the root issue of what's causing all the chaos. Yes, the code is a mess. OK, the database design is non-sensical. Sure, things never get deleted. But why?

From what you've mentioned, it sounds like every change that isn't additive is viewed as too risky. So at this point before trying to make big shifts, some work should be done to de-risk the situation as much as possible. Granted, you probably can't stop work and introduce a bunch of new practices and patterns, but you need to start reduce the risk to unleash the team to make necessary changes.

For example, introducing version control should be a slam dunk. Start using a database migration facility for all database changes. Create a release schedule that requires features to be stabilized by a certain window for deployment. Create some really, really simple Selenium tests by just browser recording yourself using the app.

Once you can start making changes more confidently, then you can start unwinding some of the bad choices moving forward. Resist the urge to start "making a good foundation for the future" by trying to rewrite core parts of the system immediately and instead start thinking in terms of forward progress oriented changes. Need to add a feature? Make sure to write that feature properly with good practices and make only the necessary changes to other parts of the system. I realize that's probably going to be painful, but eventually you will accrete enough of these small changes that you can string them together with a little more work into larger scale changes under the hood.

These things are rarely easy, especially in established legacy systems. But if this is the revenue engine for your company, you'll need to move conservatively but decisively or risk making the situation worse. Good luck!
> this law, if it’s struck down will be struck down under the corporate compelled speech doctrine

That's unlikely, as such an argument is a complete non-starter.

If I were arguing against the law, I suspect (shooting from the hip without researching it) that the most fruitful line of reasoning would be that the federal government has preempted the field of interstate communications transmission by a combination of the FCC's organic statute and the CDA. This is a better argument because, despite what some on HN believe, there is a half-century of Supreme Court precedent that compelled hosting is not compelled speech, and because of the doctrine of constitutional avoidance.

As an interesting aside, Justice Kagan had some involvement in one of the issues underlying one of the cornerstone cases in this area. Though she was not a party and does not appear to have been among the amici, when she was Dean of Harvard Law School she opposed military recruiting on campus due to the Don't Ask, Don't Tell policy. The Solomon Amendment required non-discrimination in hosting speakers for recruiting purposes, under threat of the loss of federal funding. That compelled hosting was challenged and upheld in Rumsfeld v. FAIR, 390 F. 3d 219 (2006).
Have you tried adjusting the dynamic range of your audio system?
Why does the logo look lewd?
The logical solution to this problem then, seems to be breaking up the amphitheatres. If these places are too big that we are forced to treat them as public squares, then we should pass laws that do not allow amphitheatres that large to exist.
Trying the same thing ten times is not the same as trying ten different things.
I use an alias like this:

> gac Update controller

which means “git add all and commit with this message” very rarely do I make a mistake with this. Maybe once every 3 weeks, in which case I just restore the file I accidentally added.
Plenty of good suggestions in here about e.g. tests, source control etc. You will need them all.

But I would start by choosing how and whether to fix up the crown jewels, the database.

You say that instead of adding columns, team has been adding new tables instead. With such behaviours, it's possible your database is such a steaming pile of crap that you'll be unable to move at any pace at all until you fix the database. Certainly if management want e.g. reporting tools added, you'd be much better to fix the database first. On the other hand, if the new functionality doesn't require significant database interaction (maybe you're just tarting up the front end and adding some eye candy) then maybe you can leave it be. Unlikely I would imagine.

Do not however just leave the database as a steaming pile of crap, and at the same time start writing a whole lot of new code against it. Every shitty database design decision made over the previous years will echo down and make it's ugly way into your new nice code. You will be better for the long run to normalise and rationalise the DB first.
> Feels like you should start with introducing version control, dependency management, and creating a deploy process after that.

Agree with this 100%. This sounds like a team that may not even know how to develop locally. Showing them that they can run the system on their own computer and make experimental changes without risking destroying the company would be a huge game changer. If they’re not open to that idea it may really be hopeless.
I'm surprised how much I like this game. I normally don't play a games with this setting. But I want to say its probably one of the best games I have ever played. I start hating a boss when I first fight them because its difficult, and and up loving and appreciating the boss design so much when I finally beat them.
What does that have to do with my question — or anything else I’ve said?

What word should we use to describe the viewpoint-based prohibition of someone’s speech?
The Allied “Passierschein” Safe Conduct Passes of WWII (2003)
This seems trite. What's more fundamental to our lives than the utter uniqueness of each individual experience?

Merely examining ones own life would reveal the infinite complexity within our conscious experience.
You put your finger on something that's bothered me for a while but was never able to articulate. I loved some episodes and some moments were pure gold, but much of the show was nonsensical and revolting. Dipped a toe into his other work and discovered that the latter was much more his style.

It's a bit like how I really enjoy Tarantino movies, except for the violence.
https://www.saastr.com/planning-to-do-a-saas-start-up-dont-f...
A product/service in this state is a ticking timebomb. The fact that it's responsible for that amount of revenue makes it more dangerous. There are probably tens (maybe hundreds) of vulnerabilities that either compromise the whole platform, or at least give access to all customers' data.

IMO there are three realistic approaches:

- Keep it in its current state with the intent of making as much money as possible until the timebomb goes off, and then run away. Just to be clear, I don't think this is ethical, but a lot of people would choose it anyway.

- Ship-of-Theseus it into a supportable state.

- Leave ASAP so it becomes someone else's problem.

IMO the first one is only an option for the people that run the company. For the manager of the Dev team, they only have the second and third options, because when the timebomb goes off, they are going to be the scapegoat, not the person running off to the Bahamas with a sack of cash.

I've seen multiple ticking timebombs like this go off in years past, and I was usually part of the heroic efforts to stop the money hemmorhages that ensued afterward. I strongly recommend avoiding it altogether.
Would a soundbar help the situation or make it worse? With two kids 90% of the time I'm watching kids movies but I still turn on the closed captions. Any background noise and it's nearly impossible to hear the dialogue without cranking up the volume to an undesirable level.
Do you think this will start to change? I often see posts on this site bemoaning the performance of Python (often referencing the order of magnitude performance differences of similarly dynamic languages like JavaScript).

I'm hopeful that honest efforts to port over useful bits of the scientific/mathematical ecosystem to JS will start to take off someday soon.
Sonder: n. the realization that each random passerby is living a life as vivid and complex as your own—populated with their own ambitions, friends, routines, worries and inherited craziness—an epic story that continues invisibly around you like an anthill sprawling deep underground, with elaborate passageways to thousands of other lives that you’ll never know existed, in which you might appear only once, as an extra sipping coffee in the background, as a blur of traffic passing on the highway, as a lighted window at dusk.

This word was popularized by the site Dictionary of Obscure Sorrows, and I believe it, as the opposite, hearkens back to solipsism, the philosophical idea of you being the only one to exist. It is interesting to see this word "sonder" not referenced at all in the article, I would have imagined it a meme within the Internet at this point.

[0] https://www.dictionaryofobscuresorrows.com/post/23536922667/...
Thunderbird used to have a local spam filter. It was fine.

As for phishing attacks: Education is helpful. It would help if organizations with legitimate flows that are indistinguishable from phishing attacks were made liable. (Mortgage industry: I'm looking at you.)
If the existing miners don't want to rent to you, you can build your own mining hardware. But if a cartel owns all the ETH and don't want to sell to you, you're SOL.
Yeah, but chainsaws have a specific use and have safety protocol. The cords are "fixing" people's inability to think things through.

This is more like someone selling a "handle attachment" for the chainsaw bar, so you can use of for leverage when cutting through thick trunks.
https://en.wikipedia.org/wiki/Cubby,_Inc._v._CompuServe_Inc.

> The court held that although CompuServe did host defamatory content on its forums, CompuServe was merely a distributor, rather than a publisher, of the content. As a distributor, CompuServe could only be held liable for defamation if it knew, or had reason to know, of the defamatory nature of the content.[2] As CompuServe had made no effort to review the large volume of content on its forums, it could not be held liable for the defamatory content.
We don't know that it is functional... maybe the company is only making $20m and should be making $60m. Like I said, we tripled the revenue with a rewrite.

What we did was make the case that we could increase revenue by being able to add valuable features more easily/quickly. We started with a super MVP rewrite that kept the basic valuable features, launched, then spent the rest of our time adding features (with tests). Hugely successful.

The key, of course, will be to get 1-2 top notch developers in place to set things up correctly from the beginning. You're never going to be effective with a few jr's who don't have that level of experience.
Three engineers have built and supported a codebase generating 20 MM in revenue a year. Maybe get off your high horse, it’s really easy to mistake a complex order for chaos from the sidelines.

Rewrites are almost never the answer unless you wrote the previous version. Sure, to most of us here the code you’re describing might look like garbage, but it works and certainly a ton of wisdom has been embedded into it that will be difficult to replicate and understand unless you dive into what exists now and try to work with it on its terms for a little while.

I did a major rewrite early in my career based on something someone else built, and it was a total disaster for a while. I thought I knew better as an outsider looking in, and sure, eventually we did improve things, but a lot of my choices were not best practices, but some form of fashion.
> Corporations are people.

No they are not. They share some specific rights as people, but are not people. A corporation can’t be murdered, can’t vote, can’t be imprisoned, can’t marry another person, etc.
I made a comment that a lot of people are opposed to this because these platforms are censoring their political enemies and my comment was flagged/censored. Bravo.
Or, like linkedin: Charge a small amount to send messages to non-friends.
I think you may need to use the probable security dumpster fire lurking in code as an impetus for change.

I find it a little shocking that 3 junior engineers can’t be convinced to learn/try something new that might look good on their resume or make their lives easier.
Someone from rich part of vancouver die waiting in hospital bed because of shortage of workers.

another day on the news, someone suffered a stroke and because the ambulance didn't come on time she is partially paralyzed.

another couple had a miscarriage with the mother dying because surgical tools were not sanitized properly.

some desperate and sick of waiting travel to US or abroad (Korea, Japan).

family doctor, nurse shortage is half the problem. canadian medical school breadth of teaching is generalist and do not go deep enough.

there are now calls for privatization. i wish people would stop fetishizing canadian public health care, its better than nothing but behind the rest.
The story is slightly different in the Planetes anime but reputedly good, I've only read the manga for that one. The manga collection for Planetes is relatively short, only a single large book versus the many volumes of Vinland Saga.
A hallmark of immaturity is a person who makes assumptions about how easy someone else's life must be just because they are well off financially, have a bubbly persona, or live in a state of peace and gratitude. To be human is to suffer and at the very least to watch people you love suffer and sometimes die. I wish people would remember this, but more often they attempt to quantify the pain and create portraiture of a person they know nothing about, compare it to their own and then assume they can be bitter, resentful, or dismissive towards them.
I have to admit that I would have little patience for such a situation, so good on you giving it a try and godspeed. I personally feel that there's a lot of interesting work out there, so I'm not sure I would even take on the project. The fact that you have a team of three people that you don't manage or have any authority over who are also majorly resistant to change their ways of doing their job in literally the worst way possible does not seem promising, no matter how you look at it.

In these types of situations, the problems are social and possibly political and rarely technical, even though the technical problems are the symptoms that present themselves so readily.
I disagree. If the UI person could handle a hover-over by defining the state themselves then they and developers would both be happier.

The developer wouldn’t need to implement yet another boolean for something trivial and the designer wouldn’t need to waste time prodding a dev to finally get around to implementing it.

That state has nothing to do with logic or state about the functionality of the program. It’s state who’s entire purpose it to control a bit of the UI.
If only we had centuries of established case law regarding publishers and liability...
I have a similar philosophy (if I dare call it that): every person is living in their own world, shared by no one else.

What I mean is, reality is an interpretation of what we observe. Not only does everyone observe a unique combination of events from mostly unique perspectives, the unique events and experiences before an event change how current events are interpreted.

Two people can look at the same thing and see two different things, but build upon that and consider that no two people, from their own perspectice, live in the same world. You can find other people that share many of your perspectives but never all. No one will live in your world after you and no one has lived in it before you and no one will ever know it.

Thinking this way has helped me understand a lot of things. When I was younger, I couldn't understand how some people do this and that but then as life and time changed me so that I do or say those same things, I am seeing how those people didn't just make different decisions, they were really living in a different world.