Hacker Newsnew | past | comments | ask | show | jobs | submit | rustybolt's commentslogin

I tried using this a while back and found it was not widely available. You need coreutils version 9.1 or later for this, many distros do not ship this.

I made https://github.com/rubenvannieuwpoort/atomic-exchange for my usecase.


> Good work very much doesn't speak for itself

Some people are obviously very intelligent and for people with enough technical abilities this can be spotted (e.g. because they churn out a large volume of high-quality code with almost zero defects). I have definitely seen this.

But I have also seen a colleague getting promoted that took thrice the scheduled time to deliver on a low-impact project, planning 2-3 long meetings a week, with about 8 people, discussing details for hours and hours (of course without writing anything down). When he went on leave for a few weeks, leaving a significant backlog of work and noting to our manager that "it's trivial to release", I actually managed to release it. At the end-of-year review he was praised for "deliviring such a complicated project", while the higher impact project I worked on and delivered in 1/3rd of the scheduled time was seen as a "simple project" because it got delivered without any hiccups.

Often it's also just a matter of "this guy states facts with confidence so it seems he knows what he's talking about" (even when he gets the facts wrong). At some point I just stopped correcting him because if we disagreed people would just assume I was wrong. In other words, being good at talking helps your career a lot.


In my career I never received any recognition for well designed and executed projects. Even the ones that were high impact and widely praised by customers. I had much more luck with shitty/buggy stuff that should not have been released. Yes, I’m not perfect and suffer from brain farts sometimes. In such cases I could play a hero that worked whole nights/weekends to put down fires. And I got rewarded for that.

This feels like a very elaborate way of saying that doing O(N) work is not a problem, but doing O(N) network calls is.


As another example, a SQL Server optimization per https://learn.microsoft.com/en-us/sql/t-sql/statements/set-n...:

> For stored procedures that contain several statements that don't return much actual data, or for procedures that contain Transact-SQL loops, setting SET NOCOUNT to ON can provide a significant performance boost, because network traffic is greatly reduced.


Rather I think their point is that since O(N) is really X * N, it's not the N that gets you, it's the X.


Right — the network database is also doing O(N) work to return O(N) results from one query but the multiplier is much lower because it doesn't include a network RTT.


...and the difference between "a fancy hash table" (in-process SQLite) and doing a network roundtrip is a few orders of magnitude.


IMO the page is concise and well written. I wouldn’t call it very elaborate.

Maybe the page could have been shorter, but not my much.


It's inline with what I perceive as the more informal tone of the sqlite documentation in general. It's slightly wordier but fun to read, and feels like the people who wrote it had a good time doing so.


It being so obvious, why is sqlite not the de facto standard?


No network, no write concurrency, no types to speak of... Where those things aren't needed, sqlite is the de facto standard. It's everywhere.


Perfect summary. I'll add: insane defaults that'll catch you unaware if you're not careful! Like foreign keys being opt-in; sure, it'll create 'em, but it won't enforce them by default!


Is it possible to fix some of these limitations by building DBMSes on top of SQLite, which might fix the sloppiness around types and foreign keys?


Using the API with discipline goes a long way.

Always send "pragma foreign_keys=on" first thing after opening the db.

Some of the types sloppiness can be worked around by declaring tables to be STRICT. You can also add CHECK constraints that a column value is consistent with the underlying representation of the type -- for instance, if you're storing ip addresses in a column of type BLOB, you can add a CHECK that the blob is either 4 or 16 bytes.


SQLite did add 'STRICT' tables for type enforcement.

Still doesn't have a huge variety of types though.


The fact that they didn’t make STRICT default is really a shame.

I understand maintaining backwards compatibility, but the non-strict behavior is just so insane I have a hard time imagine it doesn’t bite most developers who use SQLite at some point.


> The fact that they didn’t make STRICT default is really a shame.

SQLite makes strong backwards-compatibility guarantees. How many apps would be broken if an Android update suddenly defaulted its internal copy of SQLite to STRICT? Or if it decided to turn on foreign keys by default?

Those are rhetorical questions. Any non-0 percentage of affected applications adds up to a big number for software with SQLite's footprint.

Software pulling the proverbial rug out from under downstream developers by making incompatible changes is one of the unfortunate evils of software development, but the SQLite project makes every effort to ensure that SQLite doesn't do any rug-tugging.


Nearly every default setting in sqlite is "wrong" from the outset, for typical use cases. I'm surprised packages that offer a sane configuration out of the box aren't more popular.


I mean it has blob types. Which basically means you can implement any type you want. You can also trivially implement custom application functions to work on these blob types in your queries. [1]

- [1] https://sqlite.org/appfunc.html


Isn't SQLite a de facto standard? Seems like it to me. If I want an embedded SQL engine, it is the "nobody got fired for selecting" choice. A competitor needs to offer something very compelling to unseat it.


I mean as in: Most web stacks do not default to sqlite over MySQL or postgres. Why not? Best default for most users, apparently.


I think in the past it was more obvious. Rails switched to SQLite as the default somewhat recently


Yeah, that's the one prominent example but, like you said, also just rather recently. Since "the network is slow, duh" has always been true, I wonder why.


My guess would be that performance improvements (mostly hardware from Moore's law and the proliferation of SSDs, but also SQLite itself) have led to far fewer websites needing to run on more than 1 computer, and most are fine on a $5/month VPS

And stuff like https://litestream.io/ or SQLite adding STRICT mode



I haven't investigated this so I might be behind the times, but last I checked remotely managing an SQLite database, or having some sort of dashboarding tool run management reporting queries and the likes, or make a Retool app for it, was very messy. The benefit of not being networked becomes a downside.

Maybe this has been solved though? Anybody here running a serious backend-heavy app with SQLite in production and can share? How do you remotely edit data, do analytics queries etc on production data?


My best answer so far is ssh and sqlite3 cli.


It is for use cases like local application storage, but it doesn't do well in (or isn't designed for) concurrent use cases like any networked services. SQLite is not like the other databases.


It's becoming so! Rails devs are starting to ship SQLite to production. It's not just for their main database either... it's replacing Redis for them, too.


Partly for the same reason it’s fast for small sites. In their words: “SQLite is not client/server”


Yeah I've gone through Linux from Scratch twice, but at some point I found myself just copy-pasting and to be honest I've never really understood how one would go from here to a modern distro (besides compiling a helluva lot more software).


> understood how one would go from here to a modern distro

Well, after LFS you go to BLFS. Compiling KDE isn't that hard if you use scripts that help you. The big problem I see is that a lot of information is missing. People need to know a whole lot. But if you managed to compile it, a simple "startx" should work fine. I even got KDE plasma to work on wayland. Wayland gives me fewer options than xorg though, so I went back to xorg.


My blog is https://rubenvannieuwpoort.nl

I am also working on a "build your own CPU" series which is still in its infancy but the WIP can be found at https://cpucourse.rubenvannieuwpoort.nl


I've hear people refer to it as an end-to-end test, where unit tests usually test a single class or function.


That's only if you subscribe to the London school of though, which results in a bunch of useless tests that are coupled to implementation details.


Ouch, this hurts to read. It's not novel and lacks a very basic understanding of math.

The graph of y/(x^2+y^2)=(x+1)/(x^2+y^2) by definition contains the points that satisfy this equation. This is exactly the set of points for which y = x + 1.

The "fuzzy" graph is just coloring the difference between the left hand side and right hand side. This is very basic, not new, and it's definitely not "the graph of y/(x^2+y^2)=(x+1)/(x^2+y^2)".


It confused me a lot - I cancelled the denominators in my head too.

But then I realised they're just plotting

y/(x^2+y^2) - (x+1)/(x^2+y^2) = c

and colouring by c (i.e. a heatmap, as others have mentioned in the thread).

That's why you get a more interesting image than you'd get with y - (x + 1) = c


Why would you say it's not a graph of y/(x^2+y^2)=(x+1)/(x^2+y^2)? I would argue that a conventional/binary graph is also not a "pure" representation of the equation, but rather one possible representation - one that runs it through a "left_side == right_side?" boolean filter. In fact, there is no way to visualize an equation with doing something to it.


There's an equal sign in the equation. That means it is true when y = x + 1. There's no filter we're applying, that's literally what the equation says. What you plot is f(x,y) = (y-x-1)/(x^2+y^2). The line plot is when that equals zero, the fuzzinss of it is when it doesnt. But notice that f(x,y)=0 is exactly equivalent to y=x+1. They're exactly the same. Thus, when you're plotting the fuzzy graph it is definitively _not_ a plot of y=x+1, it's a plot of z=(y-x-1)/(x^2+y^2) and those are not the same thing.

We'd only need to "apply a filter" to get the line graph if we started with z(x,y), but that's not what you wrote


I think the parent basically sensed that you're not a trained mathematician and is trying to throw their middle-school math textbook at you.

The simplest definition of a "graph of a function" is that it's a representation of the points satisfying some underlying equality. Your plot isn't that. A more conventional name would be a heatmap: a plot of a function that takes two parameters - x and y coordinates - and then assigns a third value (color) to each.

I don't think the distinction is all that interesting. They're both function plots.


The "graph" of a function is formally defined as exactly those points that make the equation true. https://en.wikipedia.org/wiki/Graph_of_a_function Granted, the graph is only one visualization of a function, and not the only valuable one.

Of course we also have to remember that functions are not the same as equations, and a given function, or more generally relation, can be represented by multiple different equations. For a trivial example, multiply both sides of your slashdot equation by a constant, or add x*y.


I use it in my static site generator in Python via https://github.com/rubenvannieuwpoort/PyKaTeX.

Disclaimer: I am the author of PyKaTeX.


I stubbornly floss every day and every yearly checkup my dentist tells me it does not help and recommends me to stop doing it.


Maybe your dentist just needs more business? Im half kidding but i once had a dentist that told me I had 4 cavities that needed to be fixed, but when I to a 2nd dentist, she spotted zero cavities



Some dentists are way too aggressive about fillings. My dentist keeps a watch on smaller cavities and if they aren't progressing terribly they hold off.


IIRC there were studies saying that flossing isn't as great as people suppose it is.

My completely uneducated guess is that it's marginally useful for people with good teeth (shape, spacing) because debris doesn't accumulate as easily, and brushes are effective.

For my case (crooked teeth, very narrow gaps) it's a great helper to get out the debris, morsels of food etc. that the brush can't get out.


I shared this with HN on many occasions. My wife has crowded teeth, doesn't floss, barely touches her waterpik, doesn't use any proper brushing technique. She probably had a couple of fillings done since I met her 20 years ago. In the meantime I have cavities almost every year, one root canal and a dental implant on a previosly failed root canal. I flossed since university and use mouth rinses and electric toothbrushes and so on. Except for genetics, there are a few differences in our habits throughout the years. I would always brush in the evenings but I was neglecting mornings (somehow I internalized something that a teacher once said that brushing in the morning is silly because you haven't eaten anything). I also drink way too much coffee which is acidic, she doesn't drink any. And lastly, I would at times avoid dentist appointments for years, which probably didn't help.

Edit: I forgot to mention, when I was younger, I used to snore and breathe through my mouth a lot. I think this has also negatively affected my teeth.


You started out good with what seemed like an easy comparison, she doesn't floss, you do, she still has better teeth. But then you go on to show all the other differences, especially not always brushing twice a day, different diet, avoiding dentist, and its hard to understand the point of your post.

My wife and I have an almost identical routine and diet, we use the same brand electric brushes, always twice a day, and usually have coffee together. However, she's not had many dental problems, but I've had to go to the dentist tons this year. Oh, incidentally I also knocked my front teeth out in a cycling accident.


You're right, I lost the plot. I still think it's mostly genetics, just because her hygiene and frequency of dentist visits are comparable to mine. I wish I was keeping record though, because little things can add up. I obviously placed low priority on morning brushing but on the other hand she never flosses, and here we're discussing the minute details of flossing technique.


I read an article a few years ago about what brushing actually does for your teeth and why it works. The premise was that brushing applies fluoride and removes the bacterial film that eventually turns into plaque - and that about 2 minutes of brushing a day would be sufficient if we were perfect at brushing. Doing it twice a day ensures that you get good coverage. It also went into the best brushing technique etc.

Since reading that I've not stressed about missing the odd brush here and there. I've also been more conscious how I brush. I stopped flossing because my gums seem quite sensitive to it and it doesn't have great evidence of effectiveness. I use a inter-denture pick/brush occasionally when needed. This all seems to have improved things for my teeth considerably, my dentist now saying they're really clean - and ironically stopped suggesting I floss more.

I wasn't joking in my previous post about the cycling accident that destroyed my front teeth, except that it happened 20 years ago. This year the crowns I had fitted failed so I've had those removed and implants installed. It's been very painful, I left replacing them probably 10 years longer than I should have. Yesterday I got a temporary bridge on the implants, which I can't use for biting. Still 2-3 months away from having the permanent new crowns fitted.


I've recently realized how much technique matters, I was advised to use the modified bass technique (and also an inter-dental brush around the implant). My aggressive brushing used to cause my gums to recede, even with expensive soft toothbrushes, but I think it's improving since adopting the new technique. Sorry to hear about your painful experience. I do a lot of cycling and my greatest fear is falling and hurting my teeth. Actually, my implant is a result of me not taking out a molar that had a root canal a decade ago and was getting inflamed a lot. Should've extracted it much earlier, because the recurring inflammation ate away the bone. I was lucky they had enough bone to work with, needed to wait half a year for it to heal and grow after extraction (there is still a visible depression in the gumline). I do floss, but one minor annoyance is that it catches on these ridges where my filling are, I even managed to break a piece once, so I'm a bit more hesitant about scraping with the floss.


Oh, genetics trump everything.


This is plausible. My dentist says I should use toothpicks, but they are not useful for me as they don't really fit between my teeth. I do the most problematic of my tooth with an "extra small" pick now, and I can usually get those four gaps done before the pick breaks.


I have had the exact same experience. Always worth it to get a second opinion before any dental work.


Well based on the amount of shit I dig out even if I floss after, and it’s effect on my breath, ima keep doing it.


Yes, that's exactly my reasoning. Even if it doesn't help for anything, it just feels satisfying and more clean. Kind of like picking your nails.


If you floss too hard or aggressively then that can be bad for your teeth/gums. If you floss only rarely causing your gums to bleed when you do and you don't wash or brush away the dried blood, that can also be bad. But I don't believe that any dentist in good faith would advise not to floss, if done properly.


Some people do over floss and it can cause permanent gum damage. I assume that is a tiny fraction though.


there are studies that show that flossing with the wrong technique doesn't do much. and it's meh on cavity prevention. what it does do is prevent gingival inflammation, which can be good for gum health, especially if you're prone to getting food caught in there.


Agreed, 300 lines will take me a lot more than 10 minutes to review properly!

Depends on the specific changes of course, but generally speaking.


Also depends on the codebase.

300 lines is nothing in some boilerplate-heavy codebases I've worked at.

After seeing the same patterns for the hundredth time, it's easy to detect deviations. Not to mention linters and typing helps a lot too.

Not a fan of those but oh well.


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

Search: