skysight-inc/HackerNews huggingface dataset:
> The point of ORMs is not avoiding SQL, it is avoiding concatenating strings in order to build complex queries. In our app we have very complex query logics depending on the request params, and I can hardly imagine how dirty the code would be without the relational algebra abstraction.

You're talking about query builders. ORM often come with a query builder but the goal is really about mapping object relations(1:n,1:1,n:n) to SQL queries in an automatic fashion, nothing more. today, most of the time it can easily be done with with JSON queries on most RDMS. But advanced ORM also come with a bunch of useful stuff like unity of work, caching and co...
I'll put it in the mix of ideas that the problem isn't ORMs, it is trying to build ORMs on top of SQL.

Languages could be placed on a spectrum of how easy it is to build a DSL over the top of the language. Lisp is on one extreme, where it is easy to write a new language over the top of it.

SQL is pretty close to the other end of the spectrum. I've never seen a DSL that can compile to the full breadth of SQL dialects out there. DSLs generally handle the trivial well then fall apart when they hit complicated SQL statements.

If an ORM just had to fit over the top of a relational model it would probably work fine. The problem is, in the middle of all this, something has to be constructed in performant & parseable SQL.
Prevent 99,9+% of bots attacking with random vulnerabilities or brute forcing your private web software? I see it as a defense-in-depth mechanism.
Both of those things work under Linux for me. I guess it depends on the apps?
The CSV import is nightmarish. The blank page link to get started needs to be a lot more obvious, and if your data must be tab separated then it's not really CSV, is it?

It looks great, but although I have a lot of CSV files with geolocation data, the elaborate normalization required to try it doesn't really seem worth the effort.
You're sadly fighting against the "but... but... it's how people DO it" mentality here.

Not to mention, as computing expands, the average capability of people is dropping. Seats need to be filled, and those seats don't all need to be high quality devs.

So ORMs are there to reduce the workload, in terms of what needs to be learned to be productive. Database tuning is becoming a lost art.

(For DEVs not getting this, on a largish DB, I can literally write a single query which can take 10 seconds in MySQL's console, or hours. Yes, hours.

This isn't a flaw, any more than doing a tree search wrong is a flaw in <insert language here> when it is slow.

And most ORMs don't come close to properly handling all edge cases here.)

Beyond all of that, there is another bonus to using stored procedures or functions. Security.

There are many tables I want to give read only access to, yet want to allow writing in very limited scenarios. A stored procedure can have different user permissions (at least under most DBMS), which means you can:

- make a table read only for a web application user
- then, allow a stored procedure to perform INSERT/UPDATES, via a different user
- however, let the web user execute the stored procedure

The stored procedure thereby limiting the INSERT/UPDATE to a very specific action.

Mostly, I've used this when dealing with tables/databases which have a financial component. Said stored procedures can even perform additional checks on other tables, whatever is required to ensure that the update == OK.

Beyond that, it also allows for tiered security, in case you have someone in house, maybe a new dev, who decides they'd like to modify that financial table a bit.

And beyond that, it also allows logging to be done at the DB level.

While you are more limited here, in that you really do not want to be burdening the DB with more writes, you can definitely log all modifications to said financial table.

(You could use triggers for this last bit too, of course, but still...)
My wife is a pet sitter and pet sitting can actually be quite dangerous. She once got bit by a dog and called me to come and help. She was in too much shock to be able to explain where she was, and I'm absolutely terrible with directions so I was unable to locate her.

Thankfully, she managed to calm down and resolve the situation as it was only a small bite, but if the situation was worse and I would have been too late to find her. We thought that we can't let this situation happen again, so we now share each other's location just in case anything like that happens again.

It's also great knowing how far away she is so I can start dinner and have it ready for when she steps in the door.
I has forgotten about 32-bit apps. I believe thay was one of the reasons I held it back, as well as less confirmation popups. If those are the only major things, I might just wait a few months and see how it plays out in terms of security and stability.
> It didn't work. Typical problems that arose include how Apple's use of glue required precision the machinery couldn't reliably match. And the tiny screws needed required the automation to correctly pick and position them but that same automation couldn't detect problems the way a human hand could.

Seriously? Did anybody even read this garbage before publishing?
no, it really hammers home that this distinction doesn't matter because the absolute numbers are small compared to everything else.
You can use serverless with databases.

I have my nextJS app, both be my frontend, backend (api). and just connect via either Prisma or TypeORM to my postgres database.

You could have this pg database in any of the cloud providers who do provide managed databases and clusters.

You could also use any such serverless database, I personally like fauna.com

Every tool has it's place, from my POV as a self-thaught software engineer, the more tools I have on the toolbox, and the more thoroughly and intimately I know these tools, then I'm theoretically better positioned to choose the best option available (as of my knowledge) for the task at hand.
My usage of inferior/superior is contextualized mainly to scaling but the article mentioned many more things other than scale in the anecdotes (like producing better code overall). Maybe the vagueness of the word choice is a bit controversial in this definition-sensitive environment.
It depends on which kind of maths you refer to.

After studying ordinal numbers, I feel like the normal way to start counting is from 0 (or the "empty set" ordinal).

This is also how you prove something by transfinite induction, you need to start by 0.

I wish I could easily recompile Julia so that it is 0-indexed. But then what about all the libraries...
additional support: Wallmart became dominant because it was one of the first companies to computerize their supply chain management.
After this last years of erratic US politics I think it was a good idea to try to gain more independence.
I do wonder what other languages you consider serious apart from C. You could use similar examples for a lot of other languages, C isn't the only language used to keep our civilization alive.

I did a fair bit of development in C, and developed hard real time systems in VHDL that did involve life & death, but, wouldn't call any language used in the industry generating value as a non serious language...
I wonder if part of the demand for the newer creepy ads-- the extensive profiling and retargeting, for example-- is more on the publisher side than the advertiser side.

There are plenty of sites where you could run 100% content-targeted ads and they'd be relevant and convert well without the cost of Big Data Deep AI Learning (tm) or the associated creepiness. Hell, you could run your own ad server or use on-page links most of the time.

But there are some huge markets where this doesn't work well. Generalized local news is the classic problem. It's difficult to come up with a highly relevant ad mix that can be placed against "Mayor Announces End to Glass Recycling" today and "Local Sportsball Team Wins Championship" tomorrow. Even if you had Google's range of inventory, you're dealing with content that may not be brand-friendly. (Who wants their ad next to a Coronavirus death counter or a beached whale?).

It almost feels like the entire creepy-ad ecosystem is built to service that sort of publisher. It offers an endless stream of ads which aren't lowest-bidder without having to care about content relevance, and it provides an "algorithm said so" deniability when the ads get placed embarrassingly.

It sort of works, allowing the tattered remnants of the local newspaper to keep their heads above water if they pile enough ads on the page, but it's then projected onto a broader market that probably doesn't need it, and where it only provides marginal benefits at high costs (financially, technically, and in privacy)
>and now suddenly we reach the obvious conclusion of "wait, why the hell did we re-engineer everything?

Generating non-changing content statically for speed and SEO beforehand and using dynamic components where necessary doesn't seem like a bad trade-off.

I guess fully dynamic server-side rendering (with a cache in front of it) would be the easiest to manage, but not hip anymore I assume.
This video actually explains the reasoning for tri-phase power and it's advantages in a succinct manner, for anyone still confused:

https://www.youtube.com/watch?v=4oRT7PoXSS0
There are two kinds of discipline; one scales, and the other doesn't.

Consider this line from the article:

> you don’t need TypeScript to write good React Native code, just Javascript and some discipline

The author provides this as an example of the "disciplinarian" approach, which the author says "doesn't scale."

It's an interesting example, because learning a new way to code requires discipline. IME, the main obstacle to TypeScript is that you have to have the discipline to learn TypeScript and endure the compile errors it generates.

I think you could rewrite the author's example the opposite way:

"You don't need to write careful JavaScript, you just need enough discipline to learn and use TypeScript"

But this is a different kind of discipline; it's the discipline to seek out a "better" (or at least more scalable) way of doing things. You typically hear static-typing fanatics calling dynamically typed languages "undisciplined."

TypeScript is an order of magnitude less popular than pure JavaScript, even considering just new code on Github. TypeScript may be better, but it isn't taking over the world--not yet, at least--because it requires (enforces!) more discipline to get started.
Some of the early RDF Graph Stores were indeed based on SQL databases (Jena RDB/SDB) but you're correct in that they didn't scale particularly well.

There are pure graph stores out there, AllegroGraph, OpenLink Virtuoso (although this is a strange hybrid of SQL + Graph technologies) and others - and for more advanced graph query constructs like path finding there are optimisations that are difficult/not well supported in SQL.
I couldn't agree more. We all should just learn and use SQL. In case it really really really (because avoid multiplying standards) doesn't fit a significant portion of the real life tasks well we should just design a new SQL.
So also javascript? :)
> How Apple learned automation can't match human skill

Super generic title. Has it replaced all its software with humans?
I would name a slightly more fundamental problem: Consensus on when things happened. With that nut cracked, avoiding double spending is fairly easy.
Ooh, I like this idea. I'm a bit surprised that it's a small multiple over what MiniDV had for similar resolution streams, around 12 gig per hour.
I'm increasingly converting to just having a build script in a real programming language, certainly for the parts of the build that do work rather than managing dependencies. I try to avoid python for it purely because although it's tried and tested I'm terrified of introducing silent bugs that a compiler would catch, i.e. I have no instinct for it

The D compiler has a build script in D, and for me at least it works perfectly where the makefiles often break due to whichever random make I have on a given windows box. I just run "rdmd build.d" and off it goes, it's not only fast but I can also actually read and instrument the code if I need to.
For people complaining about 1-indexing, it is precisely because they wish what they feel the "natural" way to count would come without overhead.

So it's this "extra work" that is the problem.

It would be nice to have it as an environment variable or a runtime option. Then what about portability issues...

So let's just fork Julia and call it JuliB with 0-indexing =)
to be fair, we do have some autonomous rail infra - Metro line 14 in Paris, the DLR in London, the Victoria Line was designed to be autonomous but scuppered by the unions.
> Not to mention, as computing expands, the average capability of people is dropping. Seats need to be filled, and those seats don't all need to be high quality devs.

Also, a lot of businesses have analysts/data scientists that know SQL and have access to the DBs: stores procedures make business domain-level functionality more available to them because they don’t have to guess what application code is actually doing.
In your case and for search, you could either have gone the propietary route with algolia.io, (awesome DX, might get hefty bill if you grow a lot).

Or, you can go elastic, which I've heard is somewhat a bit hardware-hungry mostly to fitting everything into ram?? (gross over simplification on my part)

Also you can use elastic cloud or any other cloud providers branded elastic service.

I also just remembered of MeiliSearch, project found on GitHub built with Rust. https://github.com/meilisearch/MeiliSearch
> It uses its own flavor of Linux, meaning support options are extremely limited.

The difference between PureOS and Debian is practically non-existent.

> System76's website is itself half-broken, with 500 errors

OK, it proves that the company is about to die. We of course never see those errors on big websites /s

>If tomorrow a million Apple users said "Enough! LittleSnitch is the straw that breaks the camel's back!" and decided they wanted to shop for a desktop linux system, the market couldn't handle it.

Although it is true, the good news is that such thing just cannot happen. This is not how the market changes. The change is always smooth enough that the companies can adjust. And I am sure Purism and System76 are able to given reasonable time.

> I'm saying that it is not a mass-market option right now for users frustrated with Windows/OS X.

Many (most?) frustrated users on MacOS are those who can use the options I listed. If they understand the problems like the one in the title, they definitely can order a laptop online. Probably also true with Windows. Such changes typically start with geeks anyway (AFAIK geeks switched to MacOS first).

> You cannot point to niche operations and claim it to be a viable mass-market option.

I did not claim that. I suggest that those complaining about users restrictions should go to Linux. Typical users do not complain about such things.

> I didn't say you can't buy Linux pre-installed, I said you can't go into a big-box store like Best Buy to do so, and that there's no significant consumer support infrastructure.

Now you have a point and I actually do not really understand, why I cannot just enter a big shop and ask for a Linux laptop. I actually tried to ask tens of times and they always say there are no. Sounds like a conspiracy by the big labels to me.
Micro-ORMS for boilerplate sql - RepoDb.
Rest just use Query Builder or raw sql.
As a kid, sometimes it feels like there is not a lot you can do.

Maybe you can't go get elected & run or office right now. Maybe you do have friends you can go hang out with, but they're all probably like you... powerless kids also looking for something to do.

Part of what is neat about computers, neat about streaming, is that the computer doesn't care. You can stream. You can make movies. You can create, be creative, you can share. You can learn better about yourself & what you can do. You can learn what isn't working, what isn't good. And you can decide which of those things you want to fix, adjust, change, & make better. Computers, general purpose computers, will let you refine & iterate & alter & change, as far down the rabbit hole as you dare to go.

It's a bit of a far cry to streaming, ok maybe, to playing games online on camera, but it's in the same world of creativity, of creating. It starts the same way. It lets you develop yourself in similar ways. Limited only by how far & weird you are willing & able to take it, by your willingness to explore where you might go.
I'd really like some sort of macro that takes my random SQL query (with arguments), looks at the names and types of the returned columns, constructs some sort of struct/pojo/whatever to match, and gives me a function(my, args) -> array<that>.
A cynic could reply that you only need enough hype/marketing to convince management and a way to shift blame when shit hits the fan.
I'm not a fan of stored procedures because 1) It's more maintainable to keep all the logic unified in the one language and system with which developers will be more familiar with 2) The programming tools are normally much better for app code 3) You can write unit tests for app code (does anybody write unit tests for sql?) 4) you can usually avoid transferring too much unnecessary data or doing too many unnecessary network requests, remember to avoid premature performance optimization
I'm not sure that would be a net benefit over research blogs or something like a technical report directly published by a lab/working group to be quite honest. In a few domains I've recently looked at these notes to the editor / commentary sections seem to only be pseudo-reviewed and I'd say the likelihood of an IEEE rubberstamped one pager on perpetual motion would be non-zero.
We do this in work and it's not great in my opinion.

There can be issues with package versions compiled to the db. It makes continuously integration harder. We do automated builds and testing in the application layer but we don't have anything in the db layer. It's harder to create a new environment (for a developer who does not have full db permissions). Business logic ends up in the stored procedure layer AND the application layer.
> You're contradicting yourself by moving the
> goalpost. You dismissed the core premise of the article,
> which is that lots of people propose blockchain as
> a solution to non-currency problems.

Whenever I see a proposed blockchain solution to problem, in particular problems that are not related to currencies, I read their descriptions to figure out what they are actually proposing.

I don't think I've ever seen such a proposal not involving some value token of some kind kind. In other words, even non-currency problems becomes currency-problems when you apply a blockchain solution.

If I'm wrong, I really want to see a blockchain solution which is not centred on participants earning tokena that holds value.
Infrastructure doesn't "run for a lifetime" without the proper upkeep and regular maintenance... just like code. There is no set and forget in technology, just because you are doing the infrastructure work doesn't mean someone in the company isn't.
Lattice QCD is something legitimate that people have been working on since the 80s. Some of the earliest massively parallel machines like the Connection Machine were thought to be useful for it. It’s totally plausible that physicists were crazy enough to build a custom Supercomputer for it. They routinely build complex custom ASICs for particle detectors. Note also the time (2004) nowadays they use GPUs for lattice QCD.
> does that mean our tools should not let us write code for which there’s no test?

I've heard not so good stories about 100% code coverage. Metrics do not scale.

Software development is a balancing act of visible results, technical debt, available workforce etc etc. Life (cells and above) is not perfect but it matches environment.

> no strong motivation to become more disciplined

Bug on production bug is much better motivation to write tests than some discipline. Write code so other people want to work with or search another place.

> either torpedo your whole idea or turn it into not doing the thing (see OOP, Agile, Functional Programming)

A lot of languages are not OOP by Alan Kay, Agile and SCRUM subverted. That is marketing, when benefits is in the badge not in the substance. Those who chased idea do well.
I would be happy to talk if I can help. I am building https://github.com/brainless/dwata but from a different angle. It is not a builder as such and has no SQL in the interface at all.

It is where non-technical folks can do everything - dig into data, merge data from CSV even, create reports. SQL is generated automatically from schema reflection. There is no engineering help needed, at least at this stage and it does multi-table JOINs by itself already.
That is Java. In .NET using linq with entity framework looks almost like SQL.
While the abstraction might be a bit longer, I've found them relatively easy to write using IDE support (e.g. IntelliJ).

Pageable adds of course a bit of functionalities, as does the convenience of passing an Instant instead of a String :)
Will a Vaccine Stop Covid?
I'm currently in the process of porting api code from .net 3.2 soap where the code is a mixture of string based SQL queries and stored procedures to a .net core 3.1 webapi mvc + ef.

Let me tell you... readability and type saftey are a boons. Not a curse.

Things still get convoluted but boy the errors that can sneak into a complex sql statement are painful to debug.

As always the pendulum in this "article/rant" is swinging in the other direction ("everything was better in the past"). Also it's fricking (almost) 7 years old. That's a lifetime in software development.
Sounds reasonable. That’s exactly my plan, too.
Commodore's Amiga software for DSP support
Nix does what you want.
Thats actually great. pity it s not so effective.
Which is another way of saying that the "advanced" subjects (vector calculus, multivariable calculus, fourier transforms) really aren't that bad if you're prepared to put the work in.
Congratulations David, this made me have a nice feeling yesterday since I am building in the same space. Thanks for taking the efforts to shape a great product.
Why not just give additional permission levels? I don't really get why so many permission models on what software can do are effectively "admin mode" or "user mode". Why can't you get a very strong warning when software tries to snoop on traffic, but you can still do it? Or maybe you have to go into settings and allow it or something like that.

When you rent space in a building, do you get access to every single apartment/office space in the building? No. You get access to specifically what you rented and the front door. The maintenance people for the building will have access to the front door and other maintenance areas, but won't have access to your space. We can clearly conceptualize models like that. We even have something like this on phones.
What about representing states? Not sure about how graph dbs could perform on that scenario. There is a recent post talking about the topic and I'm still thinking about the best solution to store flows or similar. https://news.ycombinator.com/item?id=24764303
Unfortunately, my wife is using an Android phone so this wouldn't work for us.
It can be disabled (BLOCK_USER_AGENT=no), but it is on by default.

Why would someone like to block crawlers and also TOR-clients? The malicious ones will be anyway disguised as normal browsers.
If work culture revolves strongly around people meeting each other at lunch or in the bathroom and discussing ideas there, then moving their desks together to work on those ideas, then I can imagine working from home hurts that way of working. They need more informal online chat channels, probably. Maybe an algorithm than randomly matches employees to each other to chat about what they're working on at the moment. But I can imagine it's hard to replace the direct contact.