skysight-inc/HackerNews huggingface dataset:
For myself, I don't expect corporations to be paragons of virtue. I just try support the ones that are less screwed up. Everything is flawed. If you don't accept that, honestly ask yourself if you could build something bigger than just yourself that didn't have to make compromises you'd rather not make.

Every company that can help me find work is flawed, and I don't wanna start my own company any time soon. Heck, I am flawed. The best I can do is better than nothing and worse than perfect.
Unlikely that the yuan will be the reserve currency unless China makes major reforms. They seem to be headed in the opposite direction, so I don't think this is likely in the near future. Long-term (50-100 years) it definitely could be, though, assuming China democratizes at some point.
No it's not, write is wayyyy slower. I just did a test, I write "hello\n" to a file 10,000,000 times. Using fprintf() and stdio.h, it takes 0.04s on my machine. Using write(), it takes 7.6s, over 2 orders of magnitude slower.

Syscalls are extremely expensive and dominant the execution time unless you are writing large chunks of data all at once. Which is precisely why stdio.h exists, because it only occasionally flushes the buffer with write(). This can be observed when you get a segfault, often it seems like your print statements did not execute. One can use fflush() to force stdio.h to flush the buffer.

write() on the otherhand, always writes the data, well, at least to the file buffer cache. fsync() is required to ensure that the data is on disk, though I've seen systems lie about that too.
> Converting binary floating point to decimal floating point and vice versa is VERY VERY VERY SLOW

The fastest dtoa() algorithms are on the order of 50ns or less: https://erthink.github.io/dtoa-benchmark/#results

There are probably a lot of implementations lagging behind the state of the art though...
Because it's doing something else.

Saying stdio is slow isn't the same thing as saying "they should just do what these other guys are doing" -- they can't do that without breaking everyone who uses stdio, and a lot of people use stdio because being slow isn't a problem they need to solve.

Meanwhile, when being slow is a problem you need to solve, just because there are undoubtedly some quick wins in just about every stdio implementation doesn't mean there would be much value chasing them. Let's say for every 20% improvement in stdio you can find there, you could get a 20x improvement in your application some other way.

And there are a lot of other ways: More formatting and IO libraries than you can shake a stick at, so it's easy to think about the things you're paying for by using stdio that you don't need and simply find something else that doesn't have those things.

Some examples:

- Compatibility: stdio offers a lot of options for no better reason than it's always offered them. This creates a certain amount of bloat and slowdown that can't be removed without breaking some other application that expects this behaviour.

- Edge cases: More on that point, stdio is expected to handle a lot of situations to handle the application might never get into, but they have to test for anyway. Other libraries don't.

- Locking: FILE* needs to be locked for concurrent access to get things like the file position or to update the buffer. Many implementations have an _unlocked() implementation of stdio operations that skip the lock, but the only way to know if they're safe is to know there's no part of the application (or a library) that could be using that stream in another thread. It also nearly doubled the number of API calls stdio offers.

- Tuneables with bad defaults: Most people don't ever use setvbuf because choosing a good value is hard. Pick a value too big, and you'll see massive delays with data coming out, and too small and you waste time on syscalls. If people do use this, they choose something like line buffering (usually for logfiles) which means you're doing a syscall per line.

- Impedance mismatch: fwrite() might look* like write() but it doesn't look anything like writev() or sendmmsg(); Similarly fread() versus recvmmsg() or readv(). stdio would need a bunch of new API calls (like the _unlocked() calls) just to keep up.

- Abstraction in implementation: stdio probably uses malloc which is also slow, but taking an allocator as an argument would require a whole new API. Meanwhile, it is trivial to stack-allocate a buffer for writing your log-line and flush it out with a single write().

There are others.

I like to say that writing fast software is 99% doing only what you need to, and being good at writing fast software requires being brutally narrow about that "need".
Clutching at straws to make dead dinosaurs go boom!
Link to the video: https://www.youtube.com/watch?v=oiUnqlGzLw8
Hiding secrets in strings – Modern text hiding in plain sight
I doubt you would be working on a file for hours if you don't know how to use Vim.

I doubt Vim killer save the file for you either.
Doesn't ctrl/cmd-c remind you of the exit sequence?
Can confirm, here be dragons. I did a DB per tenant for a local franchise retailer and it was the worst design mistake I ever made, which of course seemed justified at the time (different tax rules, what not), but we never managed to get off it and I spent a significant amount of time working around it, building ETL sync processes to suck everything into one big DB, and so on.

Instead of a DB per tenant, or a table per tenant, just add a TenantId column on every table from day 1.
Trim Fast Keto UK: {Update 2020}Dite-Pills-Scme|Does It Work|Cost and Buy?
Trim Fast Keto UK Work?

Trim Fast Keto UK truly meets the body needs of an individual, with regards to getting thinner. This enhancement has helped numerous individuals in arriving at their weight reduction, wellness and wellbeing objectives. Utilizing this enhancement will help you in getting more fit in a characteristic and successful manner. On the off chance that you will join this program, you can begin living to its fullest with a solid way of life. The program utilizes the best procedure to dissolve the muscle to fat ratio inside two or three days. The responsibility of the producer to you is reflected in the total bundle, which incorporates an exceptionally appraised supplement, wellness assets and ground-breaking diet plan. You can get every one of these things readily available.

http://wintersupplement.com/trim-fast-keto-united-kingdom/

http://trimfastketouk.over-blog.com/trim-fast-keto-uk

https://twitter.com/uk_trim/status/1265157531954933760

https://www.facebook.com/Trim-Fast-Keto-110156797380203/

https://specialoffer4health.wordpress.com/2020/05/26/trim-fast-keto-uk/

https://www.completefoods.co/diy/recipes/trim-fast-keto-uk-healthweightloss-ingredients-ditepillsscme-does-it-really-work-cost-buy

https://medium.com/@healthstore/trim-fast-keto-uk-supplement-weight-loss-side-effects-99-result-where-to-buy-fea1f525f42c

https://trimfastketopillsreview.blogspot.com/2020/05/Trim-Fast-Keto-pills.html

https://youtu.be/rbxNyzcTdC8
> you can only be passive-agressive for so long before you get jaded and unhappy

I think you’re putting the cart before the horse here
We're a small company (~50 customers) delivering SaaS using Django/Postgres/uWSGI for a niche B2B market where privacy and data confidentiality is paramount.

Currently we deploy one DB + unique uWSGI instances for each customer. This has some drawbacks which has made us look a bit into multi-tenancy as well. Everything is served on dedicated hardware, using common codebase, and each customer is served on a unique sub-domain.

The two primary drawbacks of running unique instances for each customer are ease of deployment and utilization of resources.

When a new customer is deployed we need to set up the database, run migrations, set up DNS, deploy the application, deploy the task runner, set up DNS and configure the HTTP vhost. Most of this is painfully manual right now, but we're looking into automating at least parts of the deployment.

In the future, we aim to offer an online solution for signup and onboarding, where (potential) customers can trigger the provisioning of a new instance, even for a limited demo. If we were doing multi-tenancy that would just require a new row in the database + some seed data, which would make the deployment process exceptionally simpler.

The other issue is the utilization of resources. Running a few instances of the application with a big worker pool would be much easier to scale than running 50+ instances with their own isolated worker pool.

We're considering maybe going for a hybrid multi-tenant architecture, where each customer has their own isolated DB, but with a DB router in the application. That would give us a compromise between security (isolated databases - SQL queries don't cross into another customer's data) and utilization (shared workers across customers). But this would add another level of complexity and new challenges for deployment.

Do anyone have a similar case as this?
I think this is exactly the difference between a programmer and a software engineer. A (successful) software engineer should understand how memory works, what a server is, how to plan a project and predict the obstacles, and a lot of other stuff said in the article.

But if you don't wanna bother with that, and just want to make some cool websites, that's totally fine. You are still definitely a programmer, just not a software engineer.

Ohh and in most cases, don't expect to be paid like a software engineer.
Are you telling me that you do math with a pen and paper in binary? everything is decimal. Computers aren't, but almost everyone tries to paper over that fact as much as possible.
They are same TDP
Flipping burgers and scrubbing toilets can be done by literally anyone. On the other hand, the demand for people who can code like you remains high.

This is the reason why investment bankers make bank. Granted, many of the "signals" are dubious, but the people who can _actually_ do the work of a MD are extremely low.
There's a bit of a difference there in that an automated list that's half as good as what you'd manually curate is nearly as useful as your version, especially if people know it's automated. This isn't at all the case for most other aspects of moderating that depend on human input. The previouslies don't really have to be dang-quality.
Except having the name is not enough, you also need to have used it in business already.

Happens all the time, as many brand names come from family names and the founder isn't the only person bearing that name.
How would the ignition piston be preheated from a cold start?
I, as a user, am still going to demand that I can join a community where of likeminded people and moderation so I don't have to deal with the overwhelming spam of the internet myself. That's the bit that a number of decentralisation projects don't get - I don't want to have messages by anyone on the whole internet forced into my view (because have you seen how much that sucks?). I want moderation if the day-to-day use of the tool involves coming across a largely random group of people - otherwise it's just a platform for harassment and spamming people with child porn, a la Matrix - and I don't want to perform that moderation 100% by myself.
Residential housing costs $750k to build per unit in California, and most of those costs are unique to the process of developing infill in NIMBY cities with high costs of labor. We are two orders of magnitudes away from enough funding to solve homelessness with residential housing in San Francisco for the existing population, notwithstanding induced demand. Treatment outside of city centers for people dealing with mental health and substance abuse issues could be built far more affordably elsewhere by saving on the land and labor costs. They’d also be cheaper to operate.

More generally, your comments come across and smug and sanctimonious — everyone has an interest in solving the problem, and falling back to “homelessness is a housing problem” amounts to tautology which is not particularly insightful.
List of 77 Companies Developing Machine Learning Software
https://segaretro.org/TradeMark_Security_System

https://en.wikipedia.org/wiki/Sega_v._Accolade

I read it like Sega was on their way to losing the appeal, so they settled it out of court.
Does it work like this for all apps?
Nine Ways to End This Crazy School Year Strong
They have to install software by default.

Meet and Whereby, on the other hand, require nothing but a modern browser.
http://www.paulgraham.com/know.html

>I've read Villehardouin's chronicle of the Fourth Crusade at least two times, maybe three. And yet if I had to write down everything I remember from it, I doubt it would amount to much more than a page. Multiply this times several hundred, and I get an uneasy feeling when I look at my bookshelves. What use is it to read all these books if I remember so little from them?

>[...]

>But how had I come to believe in this idea in the first place? A combination of my own experience and other things I'd read. None of which I could at that moment remember! And eventually I'd forget that Hilbert had confirmed it too. But my increased belief in the importance of this idea would remain something I'd learned from this book, even after I'd forgotten I'd learned it.

A somewhat more 2020 way of looking at it is to consider NN training. A image classifier might ingest tens of gigabytes of input to produce a model megabytes in size. Reading any given article, though it be thousands of words in length, containing much "information", will only nudge the strength of a couple of connections in your existing neural net. And if you're lucky, commit a single fact to long term memory.
Laundry list of utterly bogus papers that were published and not retracted or not due years where the authors probabky also doubled down on un-reproduceable garbage.

Wakefield published papers on the link between vaccines and autism, do example (I believe, mercifully not familiar with it),
Who exits vim? I mean, seriously. ":e ." for the win.
Even better:

npm i pythag
npm i complex-sqrt

// then

var pythag = require('pythag');
var sqrtrt = (z) => require('complex-sqrt')(z,0);
let x = 3
const y = 4
var result = sqrtrt(pythag(x, y))
"Is paying attention and acting on microaggressions and unconscious biases"

I understood this as aggresion and bias with regards to work-related technical discussions, for example ignoring or talking over people in a video call who suggest taking a deeper code dive when debugging, or saying "no, I disagree, you are wrong" on a technical point without saying why or making any effort, or starting a call by dropping f-bombs, or shouting "but the code is the documentation!!" when someone politely suggests that issue comments by a library author are also worth paying attention to when trying to understand the meaning of a rabbit's hole of code call chains... especially where these people are from different teams or companies with different incentives.

These are just recent examples of aggression and bias in a technical context that I have personally witnessed.
I miss Stargate SG-1.
its not good one
> Surprisingly, create-react-app just worked out of the box.

create-react-app is the only thing I've used in the ecosystem that hasn't catastrophically broken for me due to some years-old issue.

Except for monorepos/yarn workspaces, that still doesn't have first class support[0]

[0] https://github.com/facebook/create-react-app/issues/1333
> I actually find somewhat paradoxical that the first player should fold with a K and bluff with a Q!

Bluffing is a strategy that wins against the middling hands you can convince to fold, and loses against the strongest hands which just call you anyways. The game is special in that when you have a middling hand, your opponent never has one, so they always either correctly call with the best hand or correctly fold with the worst.
It's more like your best friend telling someone the secrets you told them, and then expecting you to immediately trust them again with some more.

However much you'd like to, you can't just flip that trust back on - and in a lot of cases, it'll never fully go back to the way it was.

Not that we should personify company-customer relations - this was a decision that would have been taken by a lot of people expending serious effort to get it out the door. It's not a single lapse in judgement, but a continued expression of different values.
We set off building a new product using this approach a few years ago and wrote about our motivations here: https://medium.com/hackernoon/exploring-single-tenant-archit...

I can't remember all of the reasons that we ditched the idea, but it quickly became clear that we would be writing a lot of the core tooling ourselves, and we kept running into problems with AWS around dynamically provisioning the load balancers and certs for N boxes.

I wouldn't dream of trying to manage different schemas across all the databases either, that sounds like a serious headache that could only be mitigated by having separate codebases and separate development teams managing them.

If a customer needs custom fields, I would make them a first class citizen and the required `fields_definitions / field_values` tables to your database and let them manage those fields themselves.

I'm glad we ended up defaulting to a multi-tenant architecture even though we lost some of the proposed benefits (isolation, independent scaling etc).
I saw her interview and she was just so awesome and confident. She grew up in China, graduated with a degree in Chemistry, learned to speak fluent English, and then somehow ended up being the sole maintainer (using the term loosely because she was actively improving it the whole time) of a mission critical piece of code for an entire ecosystem at Microsoft. Color me impressed. Definitely a top notch engineer regardless of gender full stop.
Should probably add Replica Studios to that list, their work in synthetic voice tech is revolutionary in my opinion
That in itself does not make it wrong or useless. What would you suggest in place?
I completely agree with you. Every time I get an IDE's "vi mode" unpacked and set up in any way that I can try to use it, I end up running from the IDE with my hair on fire, back to plain ol' text-mode vim at the command line. These features only ever serve to remind me that the IDE is the problem, not vim.

Disclaimer: vi/vim user for 30+ years.
Fair enough, there's nothing wrong using something else if you've found something that works for you. But that is a different statement than what came across from your first post which was worded a bit more negatively, and sounded slightly like bashing (to me anyway).

Also note that my point about the remapping was this: I never had RSI issues with Emacs, so for me it actually works pretty much out of the box. If you experience certain problems, Emacs provides what it takes to adjust it to your specific needs. Can these other SaaS tools do that too?

It's great that not everyone has to use the same tool to get the job done. Variety rules.
I considered it a few years ago for a project. My options were one db per account, one schema per account or good old fashioned multitenant. The first two options dropped after realising what a maintenance nightmare that can be. In my scenario I would have thousands and thousands of accounts. So a migration becomes a crazy notion you'll be trying to avoid. The same applies for multi schema - there is a limit of how many schemas you can run reasonably before performance is affected.

What I ended up doing is going for a multi tenant architecture, but I built it in such a way where the data is transient from one db to another. All account data lives in a separate 'master db', and the data in another. All ids are UUIDs. I build database routing into the application so each "account" can have it's data on a different database, and if needed I can move one account's data from a loaded db to a more available one.
> Computers aren't, but almost everyone tries to paper over that fact as much as possible.

Do you realize that many entire fields of scientific computing (i.e., computer vision, fluid mechanics, solid mechanics, signal processing, numerical partial differential equations, computational chemistry, climate modeling, and dozens of other things) couldn't care less whether the inner representation of floating point numbers is decimal or binary? If binary can be made just a little faster, so be it.
I had very similar experiences with Rust and C++ lately.

In Rust, all I wanted is to play an audio file... failed.

In C++ all I wanted is to play an MP3 file... failed. With an hours of work I figured out how resources worked in Visual Studio and got a WAV file playing.

In Rust I installed a creative coding crate, it had 314 dependencies and the deps folder was 540MB. My openframeworks C++ project is 1.6GB after a bit of playing around in it :) But yeah, node_modules is heavy.

Bottom line is, when you are new to an environment and you aren't prepared to fight a battle, you will bleed out quite fast.
Thanks for the insight into clustering. We do slightly similar things by using snowflake or redshift, but that's because we can afford few hundred millisecond timescales for the analytical queries. Good to know MySQL can cluster!

I have dreamed of personal projects where I'd have to handle a ton of data for an individual user (eg. Service where I'll put all the users office documents in their Dropbox under git on the cloud and give them fine-grained revision history), and the most cost effective solution I was able to imagine involved one sqlite per user, stored on something like EFS (or a very large EBS). Never took too many steps there though, mainly because it wasn't clear if the product was of any value.
A code of conduct that flexibly promotes civil interactions between community members is commendable. Framing civility in terms of the language of social justice activism is worrying. Attempts at inclusivity should not hand-out veto power. Safe spaces should not be exclusive platforms for the grievances of anyone who self-identifies as marginalized.

A code of conduct promoting civility should be sufficient.
Questions like this need to be sent to the mods ... in the guidelines[0] it says:

In Submissions

...

Please don't post on HN to ask
or tell us something. Send it to
hn@ycombinator.com

I have "Vouched" for this submission so as to make it live, allowing me to respond. You have no contact details in your profile, so I couldn't reply directly. For some reason your submissions appear to be "dead on arrival", but I'm an ordinary user and have no way of knowing why.

You'll have to ask the mods.

[0] https://news.ycombinator.com/newsguidelines.html
If they are telling employees that the stock is worth $X and then accounting for it as costing $Y that sounds remarkably close to fraud.
There have been some efforts to prevent this kind of thing like the Domains Protected Marks List [1] which allows a company to block a second level domain registration which is an exact or partial match of their registered trademark, at a cost.

In this case, a company can block their trademark being registered in 241 TLDs administered by Donuts, Inc. Other registries have equivalents but it only really works for large TLD holders (like Donuts, Minds+Machines etc) where you can block registrations on dozens or hundreds of TLDs.

1. https://donuts.domains/what-we-do/brand-protection
Either write a test (like joel's test) with clear questions that afford clear answers, or don't name it a test. The current title is quite misleading. I have nothing against these opinions, they are quite reasonable, if a bit vague. But a test they are not.