skysight-inc/HackerNews huggingface dataset:
What I want is a doctrine that gives an ideal approach for data management, similar to how 12 factor gives an ideal approach for overall application architecture management. Data architecture, even though it's a subfield of application architecture, is important and vulnerable enough to need it's own doctrine.

What I like about 12 factor is that you don't have to get it all done at once. The concepts start high level and you can dive into the details as they become necessary. Initially, you can get by with dotenv for configuration management, and slowly build out more tooling as you need it.

But data management seems to need a new lexicon and set of organizing principles. How do I think about the varied aspects of database design in a way that I can be reasonably sure won't bite me in the ass before I can get around to scaling it? How do I pick a database, what are the relevant decision criteria? At what point do you want to introduce different kinds of databases, like say a graph database or ElasticSearch?
"I’ve only ever had one union job (at a young age) and that told me everything I need to know about unions" pretty nicely sums this unproductive subthread up, doesn't it?
> You'll find much harsher critics of Node/NPM in these parts!

They're ill-informed. GPP is correct that, for example pip is fundamentally inferior to npm [1], and those that insist on throwing shade at npm on HN should be corrected. They're wrong, and insulting a sound, well maintained project, without basis.

[1] https://github.com/pypa/pip/issues/988
I was responding to your comment that the concerns raised by GP were drama and irrelevant. They are relevant to this subthread. I've said what I wish to say on the matter as well.
From that same thread, someone got pretty close a user style: https://userstyles.org/styles/160991/github-windows-classic
Beautifully designed website!
From a startup perspective I strongly disagree, I think the UI should almost always be designed first. The HTML/CSS/JS frontend that the users see comes first, and have it hooked up to an empty backend that does nothing. Then once the UI requirements are fleshed out and the final specs nailed down, only then the database schema should be designed. The backend glue e.g. Django/Rails comes last.

I find this approach has led to the fewest number of code rewrites and database migrations needed to get from initial mockup to finished product, because UI requirements can change much faster and are more fickle than DB schemas and backend code.
This is excellent advice, and I just wanted to add one thing: under "environment", I would also include "people". I want to be working with smart, driven, friendly, respectful people. YMMV on those specific people traits that you value, but to me who I work with is one of the most important things on the list for job satisfaction.

Good people help you learn along the way, and you can pay if back by mentoring other good people. They will also remember you (and you can remember them) down the road when you've moved on to new companies and someone needs a new job.
How about routers (and IoT devices for that matter) that have a ROM image, with a user intitiated ability to actually obliterate the entire contents of NVRAM and flash? i.e. the firmware (which is made up of various parts, multiple stage bootloader, kernel, initrd, root, NVRAM, maybe proprietary radio firmware and/or baseband files) would be wiped out. The ROM would have a very limited ability to "phone home" only via wired connection, and get an updated firmware payload.

Obviously the idea is to make sure the image in ROM is simple enough that it's really damn unlikely that it can be attacked, or attacked before the correct and intended firmware is downloaded and installed.
Separate (orphan) branch, which contains one markdown file for each issue/PR. If you figure out how to encode comment metadata and other pesky stuff like PR reviews, this should be both human and machine-readable.
You mean a failover solution? It's hard to give a list here because it is such a large space and it completely depends on your product/application. It is more like a category of use cases than one specific use case.

Some ideas for things you could do in a web/website/internet context assuming you have a single point of presence:

One type of "HA" is network-level failover; haproxy (L7), nginx (L7) and pacemaker (usually L3) seem to be very popular options, but I think there are dozens of other alternatives. In terms of network-level failover, things get more interesting once you are running in multiple locations, have more than one physical uplink to the internet or do the routing for your IP block yourself.

For application-level failover and HA, one option for client/server style applications is to move all state into a database which has some form of HA/failover built in (so pretty much every DB). I think this is very common for web applications and also for some intranet applications.

Assuming you have a more complex application running in a datacenter, there is also a lot of very interesting stuff you can do using a lock service like Zookeeper or etcd or really almost any database. Of course, you can also make your app highly available without using an external service; there is a mountain of failover/HA research and algorithms that you can put directly into your app (2pc, paxos, raft, etc). Of course all of these require some cooperation/knowledge from the application. For some apps it might be very hard to make them "HA" without relying on an external system, but for some apps it will be trivial.

Note that when you move away from a web/datacenter context, to something like telecommunication or industrial automation, so something that doesn't run as a process in a datacenter but is implemented {as, on} hardware in the field, failover and high availability will have an entirely different meaning and will be done in a totally different way.
It's great in theory, but in most databases I've used, if you get too crazy with views your performance goes to crap. The optimizer just can't handle it.

Views are great for specific use cases, but if your interaction with the underlying tables is entirely through views I've never had that work really well.
It is possible the pickles you are talking about are fermented. They are indeed very different than what you would buy in the store. Other cultures have fermented pickles as well.

Regarding fermented cabbage, the sauerkraut you buy in the grocery store is very far from real fermented sauerkraut as well. It annoys me (maybe my eastern European ancestry surfacing) that they can even label it as such. If you have never had real sauerkraut, you are missing out. The grocery stuff is basically salty and sour cabbage. Tastes horrible.

My grandparents and great-grandparents homesteaded in Saskatchewan. I got to wondering how people in those times and living there did not get scurvy during the winter. I guess part of it was access to fresh meat. However, I know they also ate a lot of sauerkraut and "barrel pickles". The fermentation increases the vitamin C content of the food. I think even when they did not understand scurvy, they knew that eating that kind of food was healthy.

I've been meaning to make my own sauerkraut. It is really not difficult. I need some way to chop the cabbage. My parents have a special slicing machine. I suppose even a knife would do. Then you need some kind of fermentation container. Nothing complicated. The recipe is very simple. My grandmother used X tablespoons of salt per head. I've been using 2.5% salt by weight, which seems to work okay too. I like it to be less salty but still ferment and be safe. If I don't make it, I only get a taste when I visit my parents.
> A flat tax on labor income, with a cap, is a typical model for Social Security in Europe.

Yes, and the US funding system is similar to that norm, not unusually progressive as claimed upthread.
Can you expand on the disadvantages then?

If you were to write that list, what would it look like?
I like this kind of manifesto much more than the ones we've seen before in this industry. This one feels much much more honest.
Yeah, I remembered the package.json bit, but that part still had nothing related to the issues/ mistakes mentioned.
I personally prefer promises over callbacks, but kudos to your compelling reasoning. Promises are indeed a beast to tame, they do make debugging very difficult among other things.
I think the ecosystem evolved to just agree we should move as fast as possible to using async/await and be done with callbacks AND promises.
Sesame Credit really creeps me out, but give it a few years and you'll see LifeHacker articles on "10 Ways to Raise Your Sesame Credit Score!"
It's easy to go overboard with them, but if video calls are the price for going remote, I'll gladly pay.
Oh God So Would I.

I'm on my phone otherwise I could list umpteen better uses of the money. But they all involve firing people then hiring people. MRE quality assurance however is not co-located or skill- transferable to installing solar panels in the llano estacado. And people losing their jobs are always going to be more motivated voters than people who might get a job.
China Gets Hands on Chip Technology in SoftBank Deal
Can we assume that dd-wrt and tomato are safe(r) from this?
Show HN: Betacamp – Create a landing page to validate your startup idea
Why would discoverability be low? Search engines exist.

Why would contributions be low? Presumably we'd have a common way to contribute from your own federated instance.

There are thousands of websites (maybe even more!) and it's possible to discover them and comment/upload/whatever. Would it be better if they all moved to Medium, Wordpress.com and Facebook?
the distributed systems knowledge that you would pick up by learning can be valuable in designing your saas in a way that will scale if your business grows.

i may be generalizing, but it comes down to balancing your software architecture in a way that is quick for you to iterate on now vs scaling out to support an expanding business. there is a comment further up about a monolithic deployment -- great for right now but if his business grows 100x it will be difficult/expensive to scale without significant changes.

starting with the seeds in place can remove a lot of pain later, so things like containers may not be a huge win to you today, you should consider what value they may bring down the road
Yo, you gotta tell me when you’re working. You must. You’re on a team that is depending on you and somebody has to know where the fuck your are and when you’re going to fix whatever is broken today.

“Where’s will?”
“I don’t know, our manifesto says nobody gets to know when he’s working.”
“Well he broke the site.”
“That’s his right as a sovereign citizen.”
The end.
My speculation is that the attack vector was only in stream for a short period of time...

So unless you were capturing incoming packets at that time, we may not know.
Same goes for getting rid of most meetings, period. Realtime audio/video synchrony is just not that useful many times, whether remote or in-person. Asynchrony is just generally better by default in a wide range of common situations.

It’s particularly bad when you combine it with timewasting predetermined Agile meetings and distraction-oriented open plan offices.

Employers who want happy, productive, collaborative workers: Stop disrupting people with useless meetings and denying them large chunks of private, quiet time to work however they see fit. Stop embedding them in open plan spaces.

You know, treat them like an adult, with basic human dignity, who wants to be respected and trusted that they will succeed with their own judgment for how to effectively communicate and manage their work schedule.
Understood, sorry I wasn't trying to dispute any of your points about said issues/mistakes.

Just trying to clarify that he does actually talk about NPM and his regret about it.
sometimes i wonder how openstack would have done if it was written in go
I think is more about the political statement of leaving GitHub rather than the practicalities of code management.
Are you blocking cookiebot.com? Works fine here (Firefox/Linux), it shows a bar at the bottom where you can "Accept all cookies", and then it redirects to the article.

(As a side note, the cookie consent page lists 279(!) cookies just for marketing, plus 37 for "statistics" and 87 more "unclassified". I'm amazed the browser even allows that many.)
I don't share your pessimism about the list of downsides, and am honestly surprised, as while normally I chuckle at the "HN is always negative" sentiment, this post being the top reply is a real head scratcher, as someone who is both 1. on a >75% remote team, and 2. who has been advocating/watching HN advocate for remote for quite some time.

I'd say "missing real human contacts" is summarized well under a combination of harder rampup/scares some potential employees; as the lack of "Real contacts" seems more of a personal/subjective or team-process-and-tooling-rooted feeling than anything I've observed to be inherent and unsolvable; it's trivial for me to get a face to face with anyone on my multi-national team. Now, to try and read this charitably, if you meant something like "increased difficulty networking" I'd actually agree, but again, if you're at a place in your career where you accept that, it's significantly less of a downside.

Mostly, that's the gist of a lot of the things people list as hard negatives to my ears, including your second point of harder life/work separation. I don't mean to be dismissive, but "that seems like a personal problem." (Edit: see my clarification in child post re: this wording, I came off more accusatory than I'd have liked, but didn't want to rewrite history) With the broad slew of coworking spaces, home offices, coffee shops, and other ways to partition one's time and mental spaces, I don't accept that that's something that can't be solved in the same proactive fashion as a professional would approach any assorted social frictions one might run into in _any_ office environment.

If you read any frustration in this, it comes from a place of, "a lot of the complaints I read are solvable problems or isomorphisms of in-office problems", and a hope that we'd be self-interested enough as a field to be more proactive in seeking solutions, given the benefits that can come from a more distributed workforce. I want to encourage and productively improve sites that try to support this, and part of that is avoiding a re-encroachment of remote work stigma/fear in many people's eyes.

Edit: yes, I'm going to break the HN rules, but christ people, at least _respond_ before blindly downvoting. This was not a glib response, and this topic (remote work) is something we should be able to discuss in good faith without accruing negative score before I even finish grammar-checking my own writing.
One person's disadvantages is another's nirvana.
In case this could help to improve that scope, I'll share my best FX2LP trick:

The key to get the best out of FX2LP is to set MPAGE to 0xe6. This way you can index USB registers at 0xe6xx through 8051 r0 and r1 -- no need to load register address to DPTR. Most interestingly, this also works for XAUTODAT1 and XAUTODAT2 registers, which can act as (optionally auto-incrementing) read/write pointers anywhere in xram. This enables "fast" memcopy, memfill, strlen, etc.

If r0 points to XAUTODAT1 and r1 to XAUTODAT2, and auto-incrementing is enabled, memcpy becomes just this:

memcpy_loop:
movx a, @r0
movx @r1, a
djnz r7, memcpy_loop

AUTOPTR1H/AUTOPTR1L and AUTOPTR2H/AUTOPTR2L set the pointer address.

With FX2LP autopointers, 8051 native DPTR isn't typically needed at all.
Launch code for US nukes was 00000000 for 20 years (2013)
Not sure if it's just my perception, but it seems the pendulum has swung back around and remote work is looked at unfavorably.

I've worked remotely the last 3+ years and I'm currently looking for a new gig. Seems like there aren't a lot of companies who are ok with full-time remote.

For the few that are, there is really stiff competition for those few jobs.
Any suggestions for a good router that is immune from this nonsense?
Kimchi itself is pretty commonly available. I think they're talking about 2-day-old kimchi
Let's not forget node.js wasn't created in a vacuum but was based on CommonJS (module format and std lib) also implemented by TeaJs/v8cgi, Helma, and many others [1]. In fact, server-side JavaScript was a thing as early as 1999 or before (Netscape Server). That it's based on a highly portable language also used on the browser is what made it attractive over alternatives for me back in 2012 or so.

[1]: https://en.wikipedia.org/wiki/List_of_server-side_JavaScript...
Korea has some of the highest rates of stomach cancer in the world. Who knows if it's just all the smoking...
Also hold on a fucking second: you consider class action lawsuits against employers as some how not part of organized labor?
"><img src=x onerror=alert(0)>
The ordering/sequencing of side effects is not the problem here. It doesn't matter at all whether index updates before data, or data updates before index. Few people know, and even fewer need to know.

What you need here is just knowing what "index++" means, nothing about sequencing at all.

I could understand your objection with the original version of the code, where it referred to both "i++" and "i" in a single line. That depends on sequencing rules and is a bad idea to allow.

But this version, that only refers to "index++" once, doesn't have any subtleties.
> People don't have to say when they are working.

This is a bad idea.

People should not have to work all on the same schedule, but having some shared understanding of when people work or take time off is certainly a good thing.
I really wonder about the causality of that, is it changing things to adapt the new technology makes you clean up / refresh / fix known issues along the way or is it the new technology itself causes less issues down the track
The corollary here is that if nobody knows when you're working, people will always expect you to work. That whole work/life balance thing depends on having clearly denoted "working time" and "not working time".
BUT diversity as "diversity of background" is never tested against diversity as "diversity of races" on those group performance studies. I think it should, because i'm pretty sure that if your "culture" is the same as your coworkers (same neighborhood, same school, same type of family, faith etc...); skin differences, except if you are subject to negative stereotyping in the field you're working on, should amount to almost nothing.
You still haven't given any examples of what you're actualy talking about, which is making it impossible to rebut your overly vague comments.

But the perpetrators of Rotherham went to prison; there have been several rigorous investigations into the child protection and police lack of action in the case; people resigned.

Most importantly: no-one has been arrested for trying to investigate Rotherham.

Please give an actual name of someone who faced police action for investigating rotherham.
>Writing software applications in NodeJS is the most awkward experience due to it's async nature. Business logic is inherently sync, not async.

The first thing I did for a latest project in node was a sync =>{done()} queue for ws requests. There is a room for fine-graining, but it is a routinely job of determining parallel cases that don’t hit db “ci” in acid much. Not a big deal. The choice for node was obvious in that it has most straightforward installation and maintaining on windows boxes (I’m language and OS agnostic [except js allergy], but peers aren’t). I think that async is yet another hipster bullet, since our to-profit businesses rarely need much traffic and those that need are barely fit for 10kloc of js.

It’s awkward personally not so because it’s async, but because it’s too low level and npm doesn’t feel like a well-documented and thorough module set. It lacks unixlike formality and strictness in phrasing, oriented on beginners, but not on -pedantic needs. It’s hackerish and cool until you meet borders that are required beyond the “move fast” thing — it slows you down. And I didn’t meet a good abstraction over ws and db layer yet. It feels like a bicycle and a shovel when you have to dig a career (pun intended).
Here's a couple fun to think about ideas for AR.

- Take a tour of the Colosseum during its peak years.

- Architects might find that they can save money on design by building bland looking buildings with facades that enable easy AR projection onto them.

- AR could potentially replace smartphones if they can provide a better user experience.
> Save on compensation due to hiring in lower cost regions

Pay people what they're worth regardless of where they live. If you have a developer in Nigeria or Ukraine or Vietnam that is as equally capable as a developer in the Bay Area, they should be paid the same.

Doing otherwise, at best, perpetuates Western hegemony, and at worst is simply racism.
No, you shouldn't use a code first, or a database first design.

The article explains the problems with the code-first approach very well, but there are just as many problems with the database-first approach:

- There is never just one database. There will be your production database, a staging database, one or more testing databases, local development databases, etc. This makes the database useless as a single source of truth.

- When you write code against your development database, there's no guarantee that it will be the same as the production database, and you shouldn't be able to connect to your production database while developing locally to verify that. Usually you want to deploy identical build artefacts to staging and production, so there's a danger that your staging database gets out of sync with production (eg. after an issue was caught and improperly rolled back on staging) and then you deploy your fully tested code from staging to production and your entire system breaks down.

- When you need to restore a backup of your database, you need to somehow find a compatible version of the code to deploy as well.

My recommendation is to use your migration scripts as your source of truth. Each service should access separate schemas within the database, or at the very least separate tables. If you really need multiple services to share tables then those services should be versioned and deployed as one.

The database should have a table which stores a list of the migrations which have been applied, and you should use a migration tool such that when you deploy, outstanding migrations are applied as required.

If you want something easier to read than the history of migration scripts, then you should keep an up-to-date schema as well next to your code, and verify as part of CI that running all the migrations results in that exact schema.
I assume it is written in the style of "Ubuntu is an ancient african word, meaning 'I can't configure Debian."
If keeping your money safe is out of scope, what the hell is in scope?
There are many achaars that don't require exposure to sunlight. They work because of the following:

- Salt

- Acidity (especially when pickling green mangos or lime, but also when using vinegar for other less sour things)

- Spices (there is some preservative effect from mustard seed, turmeric, fenugreek, chili, asafetida, etc.)

- Covering with oil to reduce exposure to oxygen
There's a hint of truth in there. Farming increased the productivity of the land such that it could support more people. Some of the new people supported by the land weren't working it, such as bureaucrats and nobles. I'm don't know if the total calories per man hour went up or down, but the distribution of those man hours definitely became less uniform. Some people worked less, while most people probably worked more.
It's gotten better. It used to be

Me: Restaurant

Google: Restaurant Supply Store

Meat Wholesale Warehouse

Place Where a Taco Cart Occasionally Parks

Former Location of a Restaurant