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


Several jj developers (especially Martin and Yuya) are former mercurial developers.

jj borrowed quite a few things from mercurial.

So, jj can be thought at least partially as a spiritual successor. Meta's Sapling is in a similar position. From this perspective, the key feature of both is transparent git repo and git remote support (hg can speak git as a foreign language, but it's limited)


Do the CSV files allow quoted newlines? If yes, what's the trick to avoid checking the whole file too find out whether a newline is quoted or a record separator when reading it from the middle in an async thread?


DuckDB uses a speculative parallel CSV parsing technique. The basic idea is that the parser speculates about the state the CSV parser is in at a random byte (e.g., whether it is inside a quoted field) and tries to figure out where the next row starts based on that.There are validation steps during finalization as well, to ensure the parser did not got anything wrong in its speculation.

I've never gotten around to writing a blog post about it, but I go quite in-depth on the technique in this presentation: https://www.youtube.com/watch?v=YrqSp8m7fmk

(Disclaimer: I'm the author of the blog post and also the developer who implemented the entire CSV parser in DuckDB.)


Burning my points to say dude that's sick, parsing CSVs is hell I am genuinely going to watch this thank you.


there isn't any upvote limit on HN.


No, but its genuinely looked down upon to make frivolous comments.


Thank you. I love using duckdb and frequently query directly from zstd compressed files (and write out new ones). They’re easy to inspect using visidata and make outer use of. I found the talk interesting and enjoyable.


You’re officially my hero, the duckdb csv parser is the fastest I could find and helped save a data project with hundreds of gigabytes of csv pain.


Thank you so much. I love DuckDB!


In general, yes. But Hive, for example, doesn't support embedded newlines or record separators that are not newlines, which means that a lot of older CSV files containing big data do not allow quoted newlines.


most likely - they read large chunks and decode them


https://github.com/coder/wush is missing in there. It had a web interface for a while.

I'm glad croc developed one though. It is a bit more commonly packaged.


Steam has screenshots and an English translatio of the publisher's description. https://store.steampowered.com/app/1348390/I_am_an_Air_Traff...


This might be the point. As long as they think the people who end up under-counted are not people this government would like to have voting power for the House of Representatives.


Now the readme says

"Note: Any command not mentioned is included in this suite. "

which I found quite confusing. It's a very large set, potentially infinite depending on what the universe of all commands is :)

You should link to the list of all the commands in your package.


https://github.com/noborus/ov is another pager, in addition to `moor` that somebody else shared.


I believe this is what `git rerere` does


https://github.com/typst/typst is an interesting competitor to ConTeXt. It's not even TeX, but somehow I tried (and liked) it before I tried CoTeXt. TeX syntax is not something I ever enjoyed in LaTeX.

How much more compatible with LaTeX is ConTeXt than typst? For example, is there tikz for ConTeXt?


> TeX syntax is not something I ever enjoyed in LaTeX

ConTeXt is still TeX, but its syntax is very different from LaTeX's. Nearly every command takes an optional set of key–value arguments, and everything is integrated into the core, so the syntax is much more regular. Example:

  %% Compile with "context <filename>.tex".
  %%
  %% ConTeXt is included in the default installation of TeX Live, so if you have
  %% LaTeX installed, you probably already have ConTeXt installed too.
  \setupcaptions[color=red]
  \setuphead[section][color=blue]
  \setupheader[color=green]
  \definehighlight[emph][color=orange]
  \setupTABLE[each][each][color=red, framecolor=green]
  
  \starttext
      \section{Introduction}
  
      \startplacefigure[title={Caption.}]
          \externalfigure[sys:///cow.pdf][width=2cm]
      \stopplacefigure
  
      Hello, world! \emph{This is emphasized text.}
  
      \startTABLE[textcolor=red]
          \setupTABLE[row][1][style=bold]
          \NC[style=italic] Header 1 \NC Header 2 \NC Header 3 \NC\NR
          \NC               Cell 1   \NC Cell 2   \NC Cell 3   \NC\NR
      \stopTABLE
  
      \pagebreak
  
      \section[
          title={Alternate Syntax},
          style=smallcaps,
      ]
  
      \samplefile{knuth}
  
      \startsection[title={This works too!}]
          Some inline math: $x_{1, 2} = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}$.
      \stopsection
  \stoptext
Output: https://www.maxchernoff.ca/files/context-example-1.webp https://www.maxchernoff.ca/files/context-example-2.webp

> How much more compatible with LaTeX is ConTeXt than typst?

Most engine primitives (\hbox, \def, \relax, etc.) and Plain TeX macros (\quad, \nobreak, \bigskip) work in both LaTeX and ConTeXt, and the math syntax is almost identical between LaTeX and ConTeXt too. Otherwise, they don't share very much in common.

> For example, is there tikz for ConTeXt?

Sure, it's called TikZ :) Meaning that TikZ has native and full support for ConTeXt, so

  \usemodule[tikz]
is all that you need to use it. Metafun [0] is ConTeXt's built-in alternative to TikZ, but you can use both in the same document if you want.

[0]: https://www.pragma-ade.com/general/manuals/metafun-p.pdf


Thanks for the useful info!


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

Search: