<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: mytherin</title><link>https://news.ycombinator.com/user?id=mytherin</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 08 Sep 2026 20:28:01 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=mytherin" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by mytherin in "The DuckDB Local UI"]]></title><description><![CDATA[
<p>I agree that the blog post seems to hint at the fact that this functionality is fully baked in in certain places - we've adjusted the blog post to be more explicit on the fact that this is an extension.<p>We have collaborated with MotherDuck on streamlining the experience of launching the UI through auto-installation, but the DuckDB Foundation still remains in full control of DuckDB and the extension ecosystem. This has no impact on that.<p>For further clarification:<p>* The auto-installation mechanism is identical to that of other trusted extensions - the auto-installation is triggered when a specific function is called that does not exist in the catalog - in this case the `start_ui` function. See [1]. The query I mentioned just calls that function. The only special feature here is the addition of the CLI flag (and what that flag executes is user-configurable).<p>* The HTTP server is necessary for the extension to function as the extension needs to communicate with the browser. The server is open-source as part of the extension code [2]. The server (1) fetches web resources (javascript/css) from ui.duckdb.org, and (2) communicates with localhost to co-ordinate the UI with DuckDB. Outside of these the server doesn't interface with other external web services.<p>[1] <a href="https://github.com/duckdb/duckdb/blob/main/src/include/duckdb/main/extension_entries.hpp#L654" rel="nofollow">https://github.com/duckdb/duckdb/blob/main/src/include/duckd...</a><p>[2] <a href="https://github.com/duckdb/duckdb-ui" rel="nofollow">https://github.com/duckdb/duckdb-ui</a></p>
]]></description><pubDate>Wed, 12 Mar 2025 17:28:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=43345591</link><dc:creator>mytherin</dc:creator><comments>https://news.ycombinator.com/item?id=43345591</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43345591</guid></item><item><title><![CDATA[New comment by mytherin in "The DuckDB Local UI"]]></title><description><![CDATA[
<p>One of the DuckDB maintainers here. To clarify - the UI is not built into the DuckDB release. It is an extension that is downloaded and installed like any other extension. This extension happens to be developed by MotherDuck. We collaborated with them to streamline the experience - but fundamentally the extension is not distributed as part of DuckDB and works similarly to other extensions.<p>To be specific, the work we did was:<p>* Add the -ui command to the shell. This executes a SQL query (CALL start_ui()). The query that gets executed can be customized by the user through the .ui_command option - e.g. by setting .ui_command my_ui_function().<p>* The ui extension is automatically installed and loaded when the start_ui function is executed - similar to other trusted extensions we distribute. The automatic install and load can be disabled through configuration (SET autoinstall_known_extensions=false, SET autoload_known_extensions=false) and is also disabled when SET enable_external_access=false.</p>
]]></description><pubDate>Wed, 12 Mar 2025 15:52:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=43344527</link><dc:creator>mytherin</dc:creator><comments>https://news.ycombinator.com/item?id=43344527</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43344527</guid></item><item><title><![CDATA[New comment by mytherin in "Parquet: An efficient, binary file format for table data"]]></title><description><![CDATA[
<p>You can query the metadata of a Parquet file using DuckDB's parquet_schema and parquet_metadata functions [1]<p>[1] <a href="https://duckdb.org/docs/data/parquet/metadata" rel="nofollow">https://duckdb.org/docs/data/parquet/metadata</a></p>
]]></description><pubDate>Tue, 04 Apr 2023 09:39:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=35437173</link><dc:creator>mytherin</dc:creator><comments>https://news.ycombinator.com/item?id=35437173</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=35437173</guid></item><item><title><![CDATA[New comment by mytherin in "DuckDB: Querying JSON files as if they were tables"]]></title><description><![CDATA[
<p>Thanks for trying it out!<p>Could you perhaps open an issue [1] or share the file with us so we could investigate the problem?<p>[1] <a href="https://github.com/duckdb/duckdb/issues">https://github.com/duckdb/duckdb/issues</a></p>
]]></description><pubDate>Fri, 03 Mar 2023 20:14:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=35014459</link><dc:creator>mytherin</dc:creator><comments>https://news.ycombinator.com/item?id=35014459</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=35014459</guid></item><item><title><![CDATA[New comment by mytherin in "DuckDB: Querying JSON files as if they were tables"]]></title><description><![CDATA[
<p>Perhaps have a look at this article [1]<p>[1] <a href="https://www.vantage.sh/blog/querying-aws-cost-data-duckdb" rel="nofollow">https://www.vantage.sh/blog/querying-aws-cost-data-duckdb</a></p>
]]></description><pubDate>Fri, 03 Mar 2023 17:47:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=35012810</link><dc:creator>mytherin</dc:creator><comments>https://news.ycombinator.com/item?id=35012810</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=35012810</guid></item><item><title><![CDATA[New comment by mytherin in "Microsoft looks to tame Bing chatbot"]]></title><description><![CDATA[
<p>Feature were stripped from Google Image Search because of a lawsuit [1]. Yandex, Bing and others can offer a better image search because they are not big/important enough to sue in the US search engine market. If Google were to be dethroned, the company that would take over its current dominant position would also be sued and would likely have to make the same changes.<p>[1] <a href="https://www.lifehacker.com.au/2020/01/what-happened-to-google-image-search-and-why-you-can-no-longer-view-images-directly/" rel="nofollow">https://www.lifehacker.com.au/2020/01/what-happened-to-googl...</a></p>
]]></description><pubDate>Sat, 18 Feb 2023 11:43:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=34846123</link><dc:creator>mytherin</dc:creator><comments>https://news.ycombinator.com/item?id=34846123</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34846123</guid></item><item><title><![CDATA[New comment by mytherin in "Big data is dead"]]></title><description><![CDATA[
<p>We (the DuckDB team) are very happy working together with MotherDuck in a close partnership [1].<p>[1] <a href="https://duckdblabs.com/news/2022/11/15/motherduck-partnership.html" rel="nofollow">https://duckdblabs.com/news/2022/11/15/motherduck-partnershi...</a></p>
]]></description><pubDate>Tue, 07 Feb 2023 18:09:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=34696511</link><dc:creator>mytherin</dc:creator><comments>https://news.ycombinator.com/item?id=34696511</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34696511</guid></item><item><title><![CDATA[New comment by mytherin in "SQL should be the default choice for data transformation logic"]]></title><description><![CDATA[
<p>Again, you are still conflating tables in a relational database with variables in Typescript. While I can understand the confusion - given that SQL makes it so natural to interact with tables - they are not equivalent.<p>SQL as a language is statically typed. It has variables that are statically typed [1], much like Typescript. All columns in a query have fixed types, and there is a separate compilation phase that resolves types of parameters - much like any other statically typed language.<p>SQL generally operates on tables - and tables model a <i>persistent, shared data source</i>. The Typescript equivalent to a table is JSON files on disk. There is a fundamental need to be able to change data sources as time goes on and business requirements change. That is why SQL supports modifying shared data sources, and supports operations like adding columns, changing column types and dropping columns. SQL deals with the fact that changes can be made to tables by rebinding (recompiling) queries when a data source is changed.<p>Any hypothetical language that will replace SQL will have to deal with the very same realities of people wanting to modify shared data sources. A different language cannot solve this problem because there is a fundamental need to change how data is stored at times.<p>Perhaps what you are looking for is better tooling <i>around</i> this problem. SQL can be used to power such tooling, because of its strong static type system that works alongside the persistent shared data source. For example - you could check if all your queries will still successfully compile after changing the type of a column.<p>[1] <a href="https://www.postgresql.org/docs/current/plpgsql-declarations.html" rel="nofollow">https://www.postgresql.org/docs/current/plpgsql-declarations...</a></p>
]]></description><pubDate>Tue, 31 Jan 2023 09:29:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=34593119</link><dc:creator>mytherin</dc:creator><comments>https://news.ycombinator.com/item?id=34593119</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34593119</guid></item><item><title><![CDATA[New comment by mytherin in "SQL should be the default choice for data transformation logic"]]></title><description><![CDATA[
<p>> <i>Same goes for SQL. Given the previous program, it is impossible to determine what the type of v is until you are ready to execute the SELECT statement. If the CREATE TABLE statement fails, v will not be the VARCHAR you think it is. If someone else modifies the world between your CREATE TABLE statement and your SELECT statement, v also will not be the VARCHAR you think it is. All you can do is throw the code at the database at runtime and hope it doesn't blow up.</i><p>If you are working in a hypothetical adversarial world where people are changing data types out from under you then that might happen. That will also happen with any other shared data source, regardless of what language you might be using. If you are sharing a set of JSON documents and people start altering documents and removing keys then your Typescript program that ingests those documents will also start failing.<p>That is not a problem of the language but a fundamental problem of having a shared data source - changing to a different language will not solve that problem.<p>I think you are conflating SQL the language with a relational database management system. A relational database management system models a shared data source - and a shared data source can be modified by others. That introduces challenges no matter what language you are using.<p>> <i>What do you think "" + 42 executes to, then? The thing is, it doesn't execute because it doesn't satisfy the type constraints. It fails before execution. If it were a weakly typed language, like Javascript, then execution may be possible. Javascript produces "42".</i><p>It is fundamentally different. Given a Python program, you <i>cannot</i> know whether or not it will produce type errors at run-time without executing the program. Type checking is done at run-time as part of the execution of the "+" operator. In SQL, type checking is done as a <i>separate compilation step</i> that can be performed without requiring any data. In Python the <i>object</i> has a type. In SQL the <i>variable</i> has a type.<p>Given a fixed database schema and a set of queries, you <i>can</i> compile the queries and <i>know</i> whether or not the queries will provide type errors. You cannot do this with Python.<p>> <i>Not at all. The benefits of something like Typescript is that the guarantees are provided during development. SQL cannot know the types ahead of time – they don't exist until the program has begun execution – and will throw errors at you in runtime after you've moved into production if you've encountered a problem. That's exactly when you don't want to be running into type programs, and why we're largely moving away from dynamically typed languages in general.</i><p>SQL can provide the same guarantees as Typescript. However, unlike Typescript in which the variables are fixed, SQL always deals with processing data from an external data source - the tables. The <i>data sources</i> (i.e. tables) can be changed. That is not a problem a language can solve.</p>
]]></description><pubDate>Mon, 30 Jan 2023 22:40:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=34587587</link><dc:creator>mytherin</dc:creator><comments>https://news.ycombinator.com/item?id=34587587</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34587587</guid></item><item><title><![CDATA[New comment by mytherin in "SQL should be the default choice for data transformation logic"]]></title><description><![CDATA[
<p>Types are static within the context of a query, not necessarily within the context of the lifetime of a database. Types are determined and propagated <i>at query compile time</i>. In a query, the value "v" refers to a VARCHAR column (as determined by the table definitions). At query compile time an error is thrown when a type violation is detected.<p>It is distinct from Python because in Python individual <i>objects</i> have types - and type resolution is done strictly at run-time. There is no compile time type checking because types do not exist at compile time at all. Note how in my example I am preparing (i.e. <i>compiling</i>) a query, whereas in your example you are <i>executing</i> the statement.<p>If you refrain from changing the types of columns in a database and prepare your queries you can detect all type errors before having to process a single row. That is not possible in a dynamically typed language like Python, and is very comparable to the guarantees that a language like Typescript offers you.</p>
]]></description><pubDate>Mon, 30 Jan 2023 21:29:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=34586657</link><dc:creator>mytherin</dc:creator><comments>https://news.ycombinator.com/item?id=34586657</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34586657</guid></item><item><title><![CDATA[New comment by mytherin in "SQL should be the default choice for data transformation logic"]]></title><description><![CDATA[
<p>Most implementations of SQL are not dynamically typed - they are statically typed. There is an explicit compilation phase (`PREPARE`) that compiles the entire plan and handles any type errors.<p>For example - this query throws a type error when run in Postgres during query compilation without executing anything or reading a row of the input data:<p><pre><code>   CREATE TABLE varchars(v VARCHAR);
   PREPARE v1 AS SELECT v + 42 FROM varchars;

   ERROR:  operator does not exist: character varying + integer
   LINE 1: PREPARE v1 AS SELECT v + 42 FROM varchars;
                               ^
   HINT:  No operator matches the given name and argument types. You might need to add explicit type casts.

</code></pre>
The one notable exception to this is SQLite which has per-value typing, rather than per-column typing. As such SQLite is dynamically typed.</p>
]]></description><pubDate>Mon, 30 Jan 2023 18:46:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=34584493</link><dc:creator>mytherin</dc:creator><comments>https://news.ycombinator.com/item?id=34584493</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34584493</guid></item><item><title><![CDATA[New comment by mytherin in "WebAssembly: Docker Without Containers"]]></title><description><![CDATA[
<p>C/C++ code can certainly be compiled down to WASM, but you cannot interface with the operating system as you would in a normal C/C++ program. To get around that restriction postgres-wasm ships <i>an entire Linux distribution</i> that is run inside the browser. This comes with an immense performance penalty.<p>To get an impression of the performance penalty, just run the following query:<p><pre><code>  SELECT SUM(i) FROM generate_series(0, 1000000, 1) tbl(i);

</code></pre>
This simple query completes in 100ms locally on my laptop, but takes 17265ms in postgres-wasm. That is a slowdown of <i>170x</i>.<p>Now that is not WASM's fault - when running the same query in duckdb-wasm [1] on my laptop the query takes 10ms using WASM, and 5ms when run locally, with a slow-down of only a factor of 2. But in order to achieve those results we did have to adapt the DuckDB codebase to compile natively to WASM. That is absolutely possible but it does take engineering effort - particularly when it comes to larger older projects that are not designed from the ground up with this in mind.<p>[1] <a href="https://shell.duckdb.org" rel="nofollow">https://shell.duckdb.org</a></p>
]]></description><pubDate>Wed, 21 Dec 2022 12:41:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=34079936</link><dc:creator>mytherin</dc:creator><comments>https://news.ycombinator.com/item?id=34079936</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34079936</guid></item><item><title><![CDATA[New comment by mytherin in "I almost failed to search a 37 GB text file in under 1 millisecond"]]></title><description><![CDATA[
<p>Because DuckDB uses ACID [1] data is loaded in an all-or-nothing manner. As the load was interrupted due to the system running out of memory, the table is expected to be empty.<p>[1] <a href="https://en.wikipedia.org/wiki/ACID" rel="nofollow">https://en.wikipedia.org/wiki/ACID</a></p>
]]></description><pubDate>Sat, 17 Dec 2022 11:22:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=34026866</link><dc:creator>mytherin</dc:creator><comments>https://news.ycombinator.com/item?id=34026866</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34026866</guid></item><item><title><![CDATA[New comment by mytherin in "I almost failed to search a 37 GB text file in under 1 millisecond"]]></title><description><![CDATA[
<p>CREATE INDEX currently has the restriction that the index must fit in memory [1]. As the data is already sorted, creating an index is not necessary anyway. The min/max indexes created automatically by the system are sufficient to complete the query in a few milliseconds.<p><pre><code>  D CREATE TABLE passwords (hash TEXT, count INT);
  D COPY passwords FROM '~/Downloads/pwned-passwords-sha1-ordered-by-hash-v8.txt' (SEPARATOR ':');
  D .timer on
  D SELECT \* FROM passwords WHERE hash=upper('5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8');
  ┌──────────────────────────────────────────┬─────────┐
  │                   hash                   │  count  │
  │                 varchar                  │  int32  │
  ├──────────────────────────────────────────┼─────────┤
  │ 5BAA61E4C9B93F3F0682250B6CF8331B7EE68FD8 │ 9545824 │
  └──────────────────────────────────────────┴─────────┘
  Run Time (s): real 0.005 user 0.007455 sys 0.000584
</code></pre>
[1] <a href="https://duckdb.org/docs/sql/indexes" rel="nofollow">https://duckdb.org/docs/sql/indexes</a></p>
]]></description><pubDate>Sat, 17 Dec 2022 11:21:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=34026857</link><dc:creator>mytherin</dc:creator><comments>https://news.ycombinator.com/item?id=34026857</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34026857</guid></item><item><title><![CDATA[New comment by mytherin in "Codon: A high-performance Python-like compiler using LLVM"]]></title><description><![CDATA[
<p>It is possible to JIT compile Python just fine. There are projects like PyPy that have been doing this for a long time [1]. The reason these alternative projects never take off is because many of Python's most used libraries are written against CPython's C API. This API is giant, and exposes all of the nitty gritty implementation details of the CPython interpreter. As a result, changing <i>anything</i> significant about the implementation of the interpreter means those libraries no longer work. In order to not break compatibility with the enormous amounts of packages the internals of the CPython interpreter are mostly locked in at this point with little wiggle room for large performance improvements.<p>The only real way out is to make Python 4 - but given the immense pain of the Python 2 -> 3 transition that seems unlikely.<p>[1] <a href="https://www.pypy.org" rel="nofollow">https://www.pypy.org</a></p>
]]></description><pubDate>Thu, 08 Dec 2022 21:17:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=33913561</link><dc:creator>mytherin</dc:creator><comments>https://news.ycombinator.com/item?id=33913561</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33913561</guid></item><item><title><![CDATA[New comment by mytherin in "Forcing Helmets on Cyclists Would Crush Bicycle Use, Says UK Transport Minister"]]></title><description><![CDATA[
<p>As a Dutch person hearing people talk about mandatory helmet laws for bikes sounds very strange.<p>Nobody in the Netherlands bikes with a helmet, and it is incredibly safe to bike here (around 10X fewer fatalities per KM ridden than in the US). If you want evidence that biking without a helmet is perfectly safe - there you go. A case study done by an entire country with 18 million inhabitants for a period of 100+ years.<p>Bike safety is an infrastructure problem. Nothing else.<p>Wearing a helmet will not make up for bad infrastructure - biking with bad infrastructure and a helmet is still incredibly dangerous. After you have good infrastructure, biking is already safe, especially when you use a Dutch bike that forces you to sit upright [1] making it far less likely you will fall on your head.<p>Wearing a helmet might improve safety by a marginal amount beyond that - but so would wearing a helmet while walking, or wearing a helmet while in a car.<p>Comparing helmets to seat belts is nonsensical. A seat belt is attached to your car. A helmet has to be carried with you after you leave your bike. Once you use a bike for everything that means you must carry a large helmet with you everywhere you go. It is very inconvenient for people that actually use bikes as their daily mode of transportation, from going to work to going grocery shopping to going to the gym.<p>[1] <a href="https://www.youtube.com/watch?v=aESqrP3hfi8" rel="nofollow">https://www.youtube.com/watch?v=aESqrP3hfi8</a></p>
]]></description><pubDate>Wed, 07 Dec 2022 19:56:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=33899368</link><dc:creator>mytherin</dc:creator><comments>https://news.ycombinator.com/item?id=33899368</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33899368</guid></item><item><title><![CDATA[New comment by mytherin in "Mandatory helmet laws make cyclists less safe"]]></title><description><![CDATA[
<p>> I’ve never been in a car accident that required a seat belt either. We should remove them all by your logic.<p>Having a seat belt in a car is far less of an inconvenience than carrying around a helmet. If mandatory helmet laws cause people to take a car to the supermarket instead of biking then *more* people will die. Not to mention the immense congestion and destruction of the planet this will cause.<p>> Cars have tons of safety regulations built into them and seat belt laws are pervasive. I don’t expect them to relax over time either, cars are much safer than they ever have been and I expect their safety will continue to improve year over year.<p>Cars have safety features for their passengers - meanwhile they are <i>by far</i> the most lethal mode of transportation worldwide. Should we only care about people <i>inside</i> a car, or should we perhaps start caring about *all people*?<p>> Can you say the same thing about the bicycle? What safety features do they have? The helmet is the only one I can think of.<p>How about not going at very fast speeds? What safety features does "walking" have? Should we now start wearing a helmet while walking?</p>
]]></description><pubDate>Mon, 05 Dec 2022 23:33:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=33873512</link><dc:creator>mytherin</dc:creator><comments>https://news.ycombinator.com/item?id=33873512</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33873512</guid></item><item><title><![CDATA[New comment by mytherin in "AI Homework"]]></title><description><![CDATA[
<p>While I can (unfortunately) see this happening - it seems incredibly futile and pointless to try and fight such an arms race. When AI-supported writing becomes the norm having students write essays without AI-assistance will be like trying to force students to do complex arithmetic without calculators.<p>Universities and schools need to accept that writing essays without AI support will simply not be a useful skill anymore, much like doing complex arithmetic without a calculator is not a useful skill anymore. Instead, they should focus on teaching students how to use AI support as a tool to write better, more comprehensive texts, rather than try and force students to write without it. That will ultimately make the students more productive members of a society in which AI supported writing is ubiquitous.</p>
]]></description><pubDate>Mon, 05 Dec 2022 18:59:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=33870143</link><dc:creator>mytherin</dc:creator><comments>https://news.ycombinator.com/item?id=33870143</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33870143</guid></item><item><title><![CDATA[New comment by mytherin in "Everything I wish I knew when learning C"]]></title><description><![CDATA[
<p>Perhaps I am missing something in the spec - but trying this in various compilers, it seems that you *can* assign <i>structs holding arrays</i> to one another, but you *cannot* assign arrays themselves.<p>This compiles:<p><pre><code>  struct BigStruct {
    int my_array[4];
  };
  int main() {
    struct BigStruct a;
    struct BigStruct b;
    b = a;
  }
</code></pre>
But this does not:<p><pre><code>  int main() {
    int a[4];
    int b[4];
    b = a;
  }
</code></pre>
That seems like an arbitrary restriction to me.</p>
]]></description><pubDate>Mon, 28 Nov 2022 17:54:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=33776898</link><dc:creator>mytherin</dc:creator><comments>https://news.ycombinator.com/item?id=33776898</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33776898</guid></item><item><title><![CDATA[New comment by mytherin in "My Overemployment Story"]]></title><description><![CDATA[
<p>If your employer expects you to work 50 or 60 hours while only paying you for 40 hours then that is indeed also illegal.</p>
]]></description><pubDate>Fri, 25 Nov 2022 09:36:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=33740780</link><dc:creator>mytherin</dc:creator><comments>https://news.ycombinator.com/item?id=33740780</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33740780</guid></item></channel></rss>