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

We're in 2023 so my question is : what happened to this since then ? It should be mainstream by now.


The reason it's not mainstream is most probably that the energy ratio between production and the output is terrible.

Also, technically, all hydrocarbons are made from Carbon sucked from the air.


The energy ratio and cost being terrible doesn't matter for some PR usecases.

Imagine being able to sell Formula 1 this fuel so the whole industry can claim to be green and try and try to re-attract young crowds who are turned away by un-greenness?

The fuel could cost 100x as much, and it still wouldn't be a big issue.


"Imagine being able to sell Formula 1 this fuel so the whole industry can claim to be green and try and try to re-attract young crowds who are turned away by un-greenness?"

I loled. They could use ground unicorn for fuel, and I still wouldn't be interested.


I'm thinking that the demographic allegedly being turned away for "un-greenness" would be downright appalled at using ground up unicorn for fuel...


Formula 1 is going to move to “sustainable fuel” in 2026, so you’re exactly right


There are other ways besides biology that hydrocarbons can be produced. Pure water placed between diamond anvils at high temperature and enormous pressure will spontaneously produce hydrocarbons. Titan's atmosphere is mostly hydrocarbons that didn't come from living things.

"Diamond dissolution and the production of methane and other carbon-bearing species in hydrothermal diamond-anvil cells" https://www.sciencedirect.com/science/article/abs/pii/S00167...


This


They state "It costs more than a barrel of oil right now, but in places with a price on carbon of $200 a ton, like what’s enabled through California’s Low Carbon Fuel Standard, we’re competitive". Today, the carbon price in the European cap-and-trade scheme is $81 per ton, and in California it's $29 per ton. So unless they've greatly improved efficiency, they don't have a profitable market.

The EU price is also only that high since about a year ago, two years ago it was about $23 per ton. Even if they were profitable at about $80 per ton, there was little time to scale up production.


$200/ton is 20c/litre (assume specific gravity of 0.75, and fuel being 75% carbon by mass).

Here in Ireland, tax on petrol is around €1/litre (VAT + excise duty + "carbon tax", but it all goes to the same place). A 20c extra subsidy would not quite be noise, but it's less than the price fluctuates from quarter to quarter anyway.


"like what’s enabled through California’s Low Carbon Fuel Standard, we’re competitive"

That is not competitive, that is using government moopoly on violence to artificially raise the price of alternative product...

Competition would be done with out government force


From a theoretical standpoint you can argue that the "fair" price of fuel would include the costs of any environmental and economical damage done by burning that fuel: the cost of health issues from particulates, the infrastructure costs to deal with sea level rise, the costs from droughts that are worse because of increased CO2 in the atmosphere, etc. Just because those happen to somebody else than the person burning the fuel doesn't mean that the costs don't happen.

And the best way we currently have to price in those externalities is artificially rising the price of the offending product, to give alternatives a better chance to compete.


> that is using government [monopoly] on violence to artificially raise the price of alternative product

A less dramatic summary is the government is partially factoring in the negative externalities of carbon, through taxation or minimum pricing.

You call that violence, whilst downplaying the very real harm (actual death and destruction) caused by excess carbon in the atmosphere.


I call it violence when

1. The level of taxation is not connected at all to the cost of the externality. You know the externality exist so then you level that as the justification.

2. The taxation being collected is not being used to curb the harm of the externality, instead it is being used as a punishment for those that need or choose to use something the government has determined to be "bad"

If you want to ride in on an ethical horse of attempting to recover externality costs then the regulation needs to be done in such away that it both ties the amount of taxation to the actual cost of the externality, and any money collected from that taxation is used solely for the mitigation of harm caused by that externality


I can't have scrolled this far without reading these 3 letters, so here they are. ESG trading.


https://www.investopedia.com/terms/e/externality.asp

Some basic economics 101 reading can set you straight here.

It's a legitimate function of government to craft regulation when there are negative externalities distorting markets.

Sometimes government regulation makes markets more free. Crazy, I know, but please let it sink in.

If it helps: you can think of producers that rely on negative externalities as freeloading evil socialists who redistribute other people's wealth (without consent) to themselves.


That is one way to look at it, I disagree with this however even taking at face value you need to calculate the actual cost of the externality and then recover that

here they are saying "Well we need the price set to X to be competitive" that has nothing to do with calculating the cost of the externality, which may be lower (or higher) the taxation needed to bring this product to be price comparable


Here's a wild guess: it probably makes no economical sense in the current context


My site makes heavy use of the emoji font made by Twitter. They used to provide a CDN for it “https://twemoji.maxcdn.com/2/twemoji.min.js?12.0.0”.

It seems to be down as well. I knew it would happen with the whole Elon Musk stuff but that still makes me very unhappy.


On their Github repo check the CDN section: https://github.com/twitter/twemoji

MaxCDN is down.


That's unrelated from this, MaxCDN is shutdown to my knowledge.


I have noticed every time cancer is mentioned there are a lot of 'fuck cancer' comments. May I know where the expression comes from ?


https://stronglang.wordpress.com/2015/11/11/fuckcancer/

Also, generally, it's a way to express solidarity with the reality that a lot of time there's no "hoping for good news", "buck up" is a horrible thing to say, and just... well, fuck cancer.


There is an unmeasurably large amount of suffering due to cancer. Not just from the people that have directly experienced it. Watching helplessly as it consumes the bodies and minds of your loved ones is devastating. Its likely that someone expressing that sentiment has dealt with that fallout. My heart goes out to them.


I don't know if it's thought of in popular culture as "coming from" a specific source, but I know people have been saying it for a lot longer than the internet. It's been independently coined a million times at least. It's really the only thing you can think to say sometimes to sum up the experience for everybody involved.


I think until you have someone close experience it you can't truly appreciate the sentiment. From my experience, having someone go through it is an awful, helpless time. I've heard having parents go through alzheimers is similar.


I remember an xkcd strip ending with that phrase: https://xkcd.com/931/


It's the cancer version of the Old Man Yells at Cloud meme.


I am writing one for Japanese (I was not aware of LLPSI when I started) and I use things that are common knowledge to a lot of people like set theory. I have used a few unusual things on the way.

I have recreated the UI of a fashion Ecommerce site such that the user is so familiar with the button labels ('buy', 'add to cart', 'recommended items') that they can easily guess their meanings.

I teach HTML using simple Japanese. I make use of the fact that "<span style="background-color: yellow;"> </span> " uses English words but is not English. That allows me to say things such as 'to change the background colour to yellow you can add this tag' without using English. It's definitely cheating but I have found that cheating is actually good practice when it comes to help people guess the meaning of words in a foreign language .


I am making one for Japanese here : https://drdru.github.io/stories/intro.html . It makes use of emoji and pixel art to illustrate simple stories. The only thing required of the reader is knowledge of Hiragana and Katakana.

It reached the HN frontpage a few years ago and I've kept working on it since then. It now contains close to 100 pages (~500 words) and everything has been proofread by a native speaker.


I actually posted this link because I could not sign in to my mailbox yesterday due to the fact I was using the DDG browser on my tablet but my comment about it got buried.


I tried to log in with the DuckDuckGo browser on my tablet yesterday and could not because it is not in this list.


Every time SQL is mentioned on HN someone comes to complain about FROM coming after SELECT. I use SQL every day and not a single time have I found reason to complain about it. Can you give a bit more detail about what's wrong with it being like it is ?

EDIT : thanks all for your reply. I now understand that it is an IDE related thing not something fundamental to the language.


If you exploring a set of tables you have never touched before, it really neat if you could just type in:

FROM tablename t SELECT t.<press tab>

and some form of autocomplete mechanism, either prefills all the column names from table "t" or suggests the list of columns and/or types associated with it.

This is much better than having to: 1. Run a SELECT with LIMIT statement just to get an idea of the layout. 2. Point and click through the IDE treeview.

Honestly, I don't think it helps a whole lot beyond this functionality, but I can see why folks who are accustomed to thinking in functional pipelines (from -> select -> map -> filter -> collect) can prefer this way of querying.

I think PRQL is one attempt at building something this way.[1]

[1]. https://github.com/prql/prql


In SSMS and almost certainly many other SQL editors Intellisense works on the select list as soon as you have a working from clause, the only caveat being you can’t autocomplete columns reading when writing a statement purely left to right.

But I think that’s not a big deal at all, and the SQL approach has a certain advantage in putting the type of action (select/update/delete/drop etc) front and centre, which is really quite helpful.


SELECT FROM widgets VALUES id, factory_origin_id, frobbable_knobs


DESCRIBE TABLE is a command that pretty much does exactly this (explain what a table contains) and it's a part of MySQL.

If you use PostgreSQL then you can use \d instead.

I'm sure the other RDBMSes have their own equivalent (except for maybe SQLite but if you're using SQLite outside of toy environments or hobby projects, you're doing it wrong).


> except for maybe SQLite

.schema

> if you're using SQLite outside of toy environments or hobby projects, you're doing it wrong

That's an uninformed statement. SQLite is extremely solid production quality code. Of course it's not the universally applicable database solution, nothing is. Sometimes you need Cassandra or its kind, often MySQL|Postgres, other times SQLite is the correct answer.


It's kind of funny to see a claim that the most widely deployed database in the world is useful only for toy projects.

https://www.sqlite.org/mostdeployed.html


I guess there are more toy projects than serious ones.


Yeah, I mean MacOS, Android, iOS, Chrome, Firefox ... all typical toy projects.


sheesh lets hope there are no vulnerabilities in there


SQLite has an 608 times more lines of code for tests than the original code![0] I’d wager it’s the highest test/production ratio there is.

[0]: https://www.sqlite.org/testing.html


Most of those tests are generated. It's wrong to focus on this metric IMO.


Auto generated or not, the point being made, in regards to @bot41's comment, was that SQLite is thoroughly tested.


It's well tested, but that's still not a guarantee that there are no security issues. Latest acknowledged CVE bug is a month old: https://www.sqlite.org/cves.html


> if you're using SQLite outside of toy environments or hobby projects, you're doing it wrong

https://www.sqlite.org/mostdeployed.html

> Every Android device

> Every iPhone and iOS device

> Every Mac

> Every Windows 10 machine

> Every Firefox, Chrome, and Safari web browser

> Every instance of Skype

> Every instance of iTunes

> Every Dropbox client

> Every TurboTax and QuickBooks

> PHP and Python

> Most television sets and set-top cable boxes

> Most automotive multimedia systems

> Countless millions of other applications

Look at all those toys.


everyone is doing it wrong :(


Not necessarily.

If you ponder the importance of proper (robust, reliable, dependable) data management for data that keeps nuclear plants going, for farmaceutical research data, for anything happening on the financial markets, for medical records, for data concerning payroll and the like, etc. etc. then you might appreciate that all the stuff mentioned in the list is indeed really "just toys".


You're missing the point: until you have typed the FROM TableName t in your IDE, SELECT t.<press tab> can not do autocompletion. That has nothing to do with whether SQL supports querying metadata (the ANSI portable way would be through INFORMATION_SCHEMA btw, not DESCRIBE). It's a consequence of the brain not responding to think-ahead queries by the IDE.


This may be true, but you've missed the point that this is about aiding autocompletion while you're writing the query the first time.


Couldn’t the IDEA understand

FROM table SELECT

And when done switch the code to be correct?


Every RDMBS has this, including SQLite.


in sqlite3 it is .schema


SQLite absolutely has production level applications, it's much more than a toy.

https://www.sqlite.org/whentouse.html


Everyone else is mentioning it from an IDE perspective, but let's also think about logically from a language perspective. When you start a FROM clause and add some JOINs, a few WHERE conditions and maybe GROUP BY, you are building a virtual view of a series of tables, columns, and aggregations. You could even define this data set as an ephemeral table. What you do with that data set afterwards might vary depending on the need, but the data set might not change. Depending on the application, you might select different columns from the data set. We do this naturally using a WITH clause at the beginning of a query.

WITH (combine a whole bunch of stuff) as dataset SELECT a, b, c FROM dataset

This approach just says:

FROM tables... WHERE ... SELECT a, b, c

To me, it does make a lot of sense. This is also the paradigm that some of the graph databases use.


You could even define this data set as an ephemeral table

Exactly! This is where SQL hurts me the most: not being able to store (partial) query expressions in variables for later reuse. The only way to do this is by creating explicit views (requires DDL permissions) or executing the partial query into a temporary table (which is woefully inefficient for obvious reasons).


Isn't that what a common table expression is? Basically a pseudo temp-table to break down queries. Of course, they also allow recursion, which you can't do with a temp table.


Yes, but a common table expression is still bound to only one query. You can use it multiple times within the same query, but you still can't save a common table expression in a variable and re-use it in multiple queries.

This is what I'd what to do if common table expression really were common:

  SELECT c1, c2
  FROM DifficultJoinStructure
  AS myCte;

  WITH myCte
  SELECT c1, c2
  WHERE SomeCondition(c1);

  WITH myCte
  SELECT c1, c2
  WHERE SomeCondition(c2);


So.. a view then?

Granted most environments effectively treat views as DBA/Sysadmin owned objects, especially where end users/apps are effectively sharing one, or a small number, of user accounts.

But given user=schema aspect several of the traditional databases, I get the impression the original intent might have been a little more laissez fair?

Of course the same can be said for tables, and that was perhaps a little idealistic!

Views aren't always quite as composable as you'd like either, or maybe I'm just scarred by the particular DB engines I use most.

So I actually agree with you, but unfortunately SQL requires that the "WELL AKSHWELLY" be followed by one or more "BUT" clauses.


Agreed, it is not just an "IDE related thing", it is also a logical arrangement of thoughts thing, a readability thing.


And as another commenter noted, the underlying relational algebra is also not in agreement, so it is definitely not logical. I believe they wanted to mimic human language statements, but that goal hurt more than it helped.


It makes way more sense honestly. It also looks a lot like a functional pipeline if you set it up that way.


> I now understand that it is an IDE related thing not something fundamental to the language.

No, is fundamental issue to the language!

The relational model is clear. You START with a relation and then compose with relational operators that return relations.

ie:

    rel | project
Sql do it weird. Is like in OO, where instead of define a class THEN define the properties, you define the properties THEN define the class.

And this fundamental issue with the language goes deeper. The rules are ad-hoc for each sub-operator despite the fact using relational model MUST make it simply to compose.

So, you have rules for HAVING, GROUP BY, ORDER BY, WHERE, SELECT and so on and none are like the others, are different in small but annoy ways...


Having SELECT come first makes sense to me because it's the only part of the statement that's required. FROM and everything else is optional.

Also when reading a statement, you're mostly interested in what the returned fields are rather details like where they came from or how they're ordered. It kind of makes sense to put it at the start.

Maybe other syntax forms have their benefits, specially when writing, but I don't think SQL's choice is completely senseless either.


> SELECT come first makes sense to me because it's the only part of the statement that's required.

Only *IN SQL*.

You don't need it on the relational model, heck, no even in any other paradigm:

    1
That is!. (aka: SELECT 1)

So this:

    SELECT * FROM foo
is because SQL is made weird. More correctly, this should be only:

    foo
Also, SELECT is not required all the time, you wanna do:

    foo WHERE .id = 1
    foo ORDER BY .id
    foo ORDER BY .id WHERE .id = 1 //Note this is not valid in SQL, but because SQL is wrong!
But you probably think this as weird, because SQL in his peculiar implementation, that is, ok for one-off, ad-hoc query, and in THAT case, having the list of fields first is not that bad.

But now, when you see it this way, you note how MUCH nicer and simpler it could have been, because then each "fragment" of a SQL query could become *composable*.

But not on SQL, where the only "composition" is string concatenation, that is bad as you get.


SELECT itself should be optional. Languages with expressions are fairly intuitive, e.g. "int x = foo.bar;" where "foo.bar" is equivalent to the "SELECT bar FROM foo;" SQL statement. I don't breathe SQL every day, so I'm struggling to come up with a case where removing SELECT results in parsing ambiguity.


> I'm struggling to come up with a case where removing SELECT results in parsing ambiguity

It's actually useful to the person reading the code. It clearly defines where a statement starts, what it does and makes reading a query close to reading English. Show a SELECT FROM WHERE query to someone who does not know SQL and the person will understand it. It might be a bit harder if you remove the SELECT.


It clearly defines where a statement starts

And this is another example of the ad-hoc problems of SQL: query terminators (;) are optional. If they weren't, there would be no abiguity where a statement would start: it's the first word after the previous terminator.


> I'm struggling to come up with a case where removing SELECT results in parsing ambiguity.

Oh! Is super-ambiguous! Make the parser and enjoy it!

Lets make this more concrete:

     city SELECT id
     city ORDER id
     city id <-- Order or select???
You could then "favor" projection as the most important than the others. Ok, so:

     city city city
Which is the table, or the field?


I didn't suggest removing ORDER or FROM. This still makes sense:

    id FROM city ORDER BY id
A plus is that sub-selects have more natural, expression-like syntax:

    id FROM (city WHERE elevation > 1000)


How do you know if you are SELECTing or DELETEing?


You mean the keyword; I meant the clause. "FROM foo" is optional to the syntax.


Select doesn't mean that tho. Not in the relational model. It refers to the filtering clause.

Following their stupid English syntax, but using the proper verbs it should rightfully be "PROJECT x, y FROM foo SELECT WHERE a = b"


Having learned Prolog before SQL, it was weird when it clicked that both were relational languages, but SQL decided to hide that underneath a natural language facade and the inconsistencies that come with it.


Yeah. And SQL does it very weird because it mixes up the meaning of "selection". Selection doesn't mean what most people seem to think it means. In the relational algebra "select" is really what is happening in the "where" clause. Projection is the name for the thing that chooses the attributes ("columns") to put in the final result.


Imagine a table `Foo` with the schema

`FooId, name, date, favorite_color, active`

Now, you want to pull the ID for the latest `foo` for a specific date, but you don't know any of the column names.

The modern workflow looks like this

You write

`SELECT * FROM Foo`

then you say, "Ok, now I can get autocomplete"

`SELECT FooId FROM Foo`

"Ok, now I can write the where clause"

`Select FooId From Foo WHERE date=?`

It becomes an exercise in moving the cursor around just to get the autocomplete going.

If you are really familiar with the schema, not a problem. But if you just remember a few details about it, then you are stuck in this weird back and forth cursor moving thing.

That's why it'd be more ergonomic to have something like

`From Foo Select FooId where date=?`

Because you never need to move your cursor and you could get all the autocomplete you need at the right times.

This becomes especially true when writing joining statements

    FROM Foo f
    JOIN Bar b ON f.FooId = b.FooId
    SELECT f.FooId
    WHERE b.active = 1


Like the commenter alluded to, it allows accurately constrainted type-ahead. If a query starts with "SELECT FROM my_table " and expects one or more column names at that point, your IDE can already suggest the column names from my_table (and not from any other table).


As sibling comments have mentioned, this is a valid complaint. It is useful to remember that SQL is an old language already, and there are plenty of warts that in all of this time have been observed. The same way C is old, and there are things to be apreciated about fresh attempts like Zig, Rust, Swift, Nim.


you seem to be too used to it to notice...

you start to type SELECT some, columns and can't get autocomplete until you add FROM afterwards, so you either type the query inside out (SELECT FROM table and go back to after SELECT) or just give up.


> thing not something fundamental to the language.

It is fundamental to the language. The evaluation order is from,where,group by, having, select, order by, limit.

Everything in perfect order is, select except.


The competition is tough in the data warehousing industry, if Snowflake is expensive people will know. Current customers may not leave but it's going to be harder for them to get new customers.


Everyone seems expensive (Looker seems to be the most expensive), and vendors are hard to compare. When evaluting some of them for a migration project, they would not let us run performance tests with our data to compare them and make a decision (paid).


For one Facebook owns most of the data. At soe point they tried testing some psychological hypothesis but everyone thought it was unethical. I haven't read this article but if you need a pointer https://www.theatlantic.com/technology/archive/2014/06/every...


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

Search: