scroll
xsv
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
scroll
- [OC] Cancer in the United States: Heatmap Visualizations
-
Ask HN: What are you building that is taking multiple years to make usable?
It took me many years to get Scroll (https://scroll.pub/) to the point where I love it and am confident it will be the dominant language for writing going forward (replacing markdown).
I first had to invent Tree Notation (2017), which I got wrong on my first two tries (2012's Note and 2013's Space). Then I needed to invent Grammar (2017), and then I made the predecessor to Scroll called Dumbdown (2019). 2 years after that I shipped the first version of Scroll (2021).
Now we are on Scroll version 58 and it's blazing fast, very simple, extremely extendible, and scales very well.
It was 90% me for a while, but recently been very much a team effort.
It took a while to get right because it's a whole new kind of language, so there were a lot of mistakes that I made and had to undo, and it took a while to figure out exactly what was special about it and how to double down on that.
- Ask HN: With recent layoffs, how would you advise new grads entering the market?
-
Anyone interested in starting a local newspaper using new tech?
I recently started 2 new newspapers: https://longbeach.pub/ and http://hawaii.pub/. Very different from traditional newspapers in that they are: public domain, open source (view source on every page), and built using a new language (https://scroll.pub/).
-
Argdown: A simple syntax for complex argumentation
Another cool site I found recently (via the replit guy) is https://www.rootclaim.com/
Very cool way to present arguments.
I'm thinking of taking that, as well as argdown, and building some easy to use keywords in scroll https://scroll.pub/
-
We Need to Know LR and Recursive Descent Parsing Techniques
> Context-free grammars, and their associated parsing techniques, don't align well with real-world compilers, and thus we should deemphasise CFGs (Context-Free Grammars) and their associated parsing algorithms.
I think CFG are highly overrated. Top down recursive descent parsers are simple and allow you to craft more human languages. I think building top down parsers is something every dev should do. It's a simple technique with tremendous power.
I think the source code for Scroll (https://github.com/breck7/scroll/tree/main/grammar) demonstrates how liberating moving away from CFGs can be. Easy to extend, compose, build new backends, debug, et cetera. Parser, compiler, and interpreter for each node all in one place. Swap nodes around between languages. Great evolutionary characteristics.
I'll stop there (realizing I need to improve the docs and write a blog post).
-
I am building a new kind of newspaper and so have been collecting and studying old newspapers. Here is one from my collection, an issue of the Columbian Centinel (Boston), from 1795, when George Washington was president. The classifieds make me laugh. Lots of Schooners for sale.
- Uses a new language called Scroll: https://scroll.pub/
-
Start a Fucking Blog
Also, put down Markdown and give our Scroll a try: https://scroll.pub
It now powers sites like my own blog (https://breckyunits.com/), knowledge bases like PLDB.com, and our first new public domain daily newspaper called the Long Beach Pub (https://longbeach.pub/1-3-2023.html).
-
Programming languages in 25 days, Part 2: Reflections on language design
> Java, Go, Javascript, Rust, etc are all regularly written with whitespace, and have tools to enforce such formatting, but they don't derive information from it.
Ah you reminded me. A curious phenomenon I've observed with Prettier in JS and fmt in Go is languages are moving to standardized whitespace, but as you said, not yet deriving information from it. I don't know enough about Java or Rust but I suspect they probably both have adopted a Prettier/fmt like convention where all code is formatted on save. So it seems like we are moving to a world where it will be a simple flip of a switch to then start having popular languages extract meaning from the whitespace.
> Also, Python has existed for decades and still there is little further adoption of indentation-sensitivity. It doesn't seem like a wave of indentation-sensitive languages will be coming any time soon.
I think it's coming big time this year. I think our Scroll (https://scroll.pub/) will catch fire and be the go to language instead of Markdown by the end of the year. Then with the increasing success of TreeBase (powering PLDB and others) we will start to see JSON fall for config formats and document storage databases. A lot more will happen to, data vis will be a big one, but those 2 I'm reasonably certain of happening in 2023.
-
Ask HN: Programs that saved you 100 hours? (2022 edition)
GoAccess: https://goaccess.io/. I don't miss Google Analytics at all.
Loom. It's not open source I don't think but I'm digging it and excited when a public domain competitor comes out.
Our https://scroll.pub/. It's far beyond markdown at this point. I am able to not only write better but also maintain thousands of pages of content by hand (well, most of the credit for that belongs to Apple M1s, Sublime Text, git, MacOS, and Github). The stuff we are doing with it now would just not be possible with anything else, and what we're coming out with next year is super exciting. It's all public domain.
xsv
-
Show HN: TextQuery – Query and Visualize Your CSV Data in Minutes
I realize it's not really that comparable since these tools don't support SQL, but a more fully functioned CLI tool is - https://github.com/BurntSushi/xsv
They are both fairly good
- Qsv: Efficient CSV CLI Toolkit
-
Joining CSV Data Without SQL: An IP Geolocation Use Case
I have done some similar, simpler data wrangling with xsv (https://github.com/BurntSushi/xsv) and jq. It could process my 800M rows in a couple of minutes (plus the time to read it out from the database =)
-
Qsv: CSVs sliced, diced and analyzed (fork of xsv)
xsv, which seems to be why qsv was created.
[1] https://github.com/BurntSushi/xsv/issues/267
-
I wrote this iCalendar (.ics) command-line utility to turn common calendar exports into more broadly compatible CSV files.
CSV utilities (still haven't pick a favorite one...): https://github.com/harelba/q https://github.com/BurntSushi/xsv https://github.com/wireservice/csvkit https://github.com/johnkerl/miller
- Icsp – Command-line iCalendar (.ics) to CSV parser
-
ripgrep is faster than {grep, ag, git grep, ucg, pt, sift}
$ git remote -v origin [email protected]:rust-lang/rust (fetch) origin [email protected]:rust-lang/rust (push) $ git rev-parse HEAD 3b0d4813ab461ec81eab8980bb884691c97c5a35 $ time grep -ri burntsushi ./ ./src/tools/cargotest/main.rs: repo: "https://github.com/BurntSushi/ripgrep", ./src/tools/cargotest/main.rs: repo: "https://github.com/BurntSushi/xsv", grep: ./target/debug/incremental/cargotest-2dvu4f2km9e91/s-gactj3ma2j-1b10l4z-2l60ur55ixe6n/query-cache.bin: binary file matches grep: ./target/debug/incremental/cargotest-38cpmhhbdgdyq/s-gactj3luwq-1o12vgp-t61hd8qdyp7t/query-cache.bin: binary file matches grep: ./target/debug/incremental/cargotest-17632op6djxne/s-gawuq5468i-1h69nfw-4gm0s8yhhiun/query-cache.bin: binary file matches grep: ./target/debug/incremental/cargotest-2trm4kt5yom3r/s-gawuq53qqg-bjiezj-lo0gha8ign8w/query-cache.bin: binary file matches grep: ./target/debug/deps/libregex_automata-c74a6d9fd0abd77b.rmeta: binary file matches grep: ./target/debug/deps/libsame_file-a0e0363a2985455d.rlib: binary file matches grep: ./target/debug/deps/libsame_file-a0e0363a2985455d.rmeta: binary file matches grep: ./target/debug/deps/libsame_file-7251d8d3586a319b.rmeta: binary file matches grep: ./build/x86_64-unknown-linux-gnu/stage0-sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib/libaho_corasick-999a08e2b700420d.rlib: binary file matches grep: ./build/x86_64-unknown-linux-gnu/stage0-sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib/libregex_automata-0d168be5d25b3ac5.rlib: binary file matches grep: ./build/x86_64-unknown-linux-gnu/stage0-tools/x86_64-unknown-linux-gnu/release/deps/libregex_automata-7d6bec0156f15da1.rlib: binary file matches grep: ./build/x86_64-unknown-linux-gnu/stage0-tools/x86_64-unknown-linux-gnu/release/deps/libregex_automata-7d6bec0156f15da1.rmeta: binary file matches grep: ./build/x86_64-unknown-linux-gnu/stage0-tools/x86_64-unknown-linux-gnu/release/deps/libaho_corasick-07dee4514b87d99b.rmeta: binary file matches grep: ./build/x86_64-unknown-linux-gnu/stage0-tools/x86_64-unknown-linux-gnu/release/deps/libaho_corasick-07dee4514b87d99b.rlib: binary file matches grep: ./build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/libaho_corasick-999a08e2b700420d.rlib: binary file matches grep: ./build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/libaho_corasick-999a08e2b700420d.rmeta: binary file matches grep: ./build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/libregex_automata-0d168be5d25b3ac5.rlib: binary file matches grep: ./build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/libregex_automata-0d168be5d25b3ac5.rmeta: binary file matches grep: ./build/bootstrap/debug/deps/libaho_corasick-992e1ba08ef83436.rmeta: binary file matches grep: ./build/bootstrap/debug/deps/libignore-54d41239d2761852.rmeta: binary file matches grep: ./build/bootstrap/debug/deps/libsame_file-9a5e3ddd89cfe599.rlib: binary file matches grep: ./build/bootstrap/debug/deps/libregex_automata-8e700951c9869a66.rlib: binary file matches grep: ./build/bootstrap/debug/deps/libignore-54d41239d2761852.rlib: binary file matches grep: ./build/bootstrap/debug/deps/libaho_corasick-992e1ba08ef83436.rlib: binary file matches grep: ./build/bootstrap/debug/deps/libregex_automata-8e700951c9869a66.rmeta: binary file matches grep: ./build/bootstrap/debug/deps/libsame_file-9a5e3ddd89cfe599.rmeta: binary file matches real 16.683 user 15.793 sys 0.878 maxmem 8 MB faults 0
-
Any Linux admins willing to try Pygrep?
Unrelated, are you the same burntsushi that wrote xsv?
-
Analyzing multi-gigabyte JSON files locally
If it could be tabular in nature, maybe convert to sqlite3 so you can make use of indexing, or CSV to make use of high-performance tools like xsv or zsv (the latter of which I'm an author).
https://github.com/BurntSushi/xsv
https://github.com/liquidaty/zsv/blob/main/docs/csv_json_sql...
-
What monitoring tool do you use or recommend?
Oh and there's rad cli shit out there for CSV files too, like xsv
What are some alternatives?
breckyunits.com - Breck Yunits' Blog
csvtk - A cross-platform, efficient and practical CSV/TSV toolkit in Golang
Zato - ESB, SOA, REST, APIs and Cloud Integrations in Python
miller - Miller is like awk, sed, cut, join, and sort for name-indexed data such as CSV, TSV, and tabular JSON
CameraTraps - PyTorch Wildlife: a Collaborative Deep Learning Framework for Conservation.
ripgrep - ripgrep recursively searches directories for a regex pattern while respecting your gitignore
djot - A light markup language
Servo - Servo, the embeddable, independent, memory-safe, modular, parallel web rendering engine
sumatrapdf - SumatraPDF reader
Fractalide - Reusable Reproducible Composable Software
ppg.report - Weather report tailored for paramotor pilots, available worldwide. 🌏 Combines winds aloft, nearby Terminal Aerodrome Forecasts, hourly forecast, NWS active alerts, FAA TFRs, SIGMETs, G-AIRMETs and CWAs
svgcleaner - svgcleaner could help you to clean up your SVG files from the unnecessary data.