Readit News logoReadit News
sp33der89 commented on Daily Notes Considered Harmful   literallythevoid.com/dail... · Posted by u/FigurativeVoid
sp33der89 · 2 months ago
I disagree with the author, but I also get the impression that their view of notes is fundamentally different than mine so there's that.

I like the way LogSeq implemented daily notes, UX wise. It's an infinite scrolling page where you can add and edit dailies, so I end up "doomscrolling" my daily notes and re-reading them a lot more often than in other apps.

sp33der89 commented on The company behind Arc is now building a second, much simpler browser   theverge.com/2024/10/24/2... · Posted by u/wmstack
m-p-3 · 10 months ago
Give a shot to Zen Browser, it's based on Firefox with all that you mentionned.

https://zen-browser.app/

(I'm not affiliated, just enjoying it)

sp33der89 · 10 months ago
Does Zen browser allow you to hide the top (address) bar? That's the thing I liked about Arc.
sp33der89 commented on Programming in Unison   lwn.net/Articles/978955/... · Posted by u/sohkamyung
binary132 · a year ago
I’m not sure there is really more to say here. A lot of people don’t seem to like strong type systems very much either, but that doesn’t mean they’re not wrong. ;)

That said, it clearly has some interesting ideas! I’m just not sure I understand why the database needs to be the compiler. It seems like an awful lot of design decisions baked into the stack instead of offered as APIs or protocols. And it’s obvious that we can consider the filesystem itself to be a sort of database — Git famously is implemented entirely in filesystem semantics, for example, so it’s also not clear to me why this content addressing can’t simply be done in a cache dir, or some such, the way many build systems do for their compilation units.

sp33der89 · a year ago
> I’m not sure there is really more to say here.

I'm sure that there can be some very interesting discussions about code-in-database and interop with tooling!

> I’m just not sure I understand why the database needs to be the compiler.

I'm not entirely sure if these two are tightly bound. For example `ucm` uses a SQLite database, but Share(their Github equivalent) uses PostgreSQL afaik.

I believe a previous iteration used Git as the backing store but they didn't go through with it. I'm not sure about this tho.

sp33der89 commented on Programming in Unison   lwn.net/Articles/978955/... · Posted by u/sohkamyung
binary132 · a year ago
ISTM that packing all that goodness (?) into the compiler stack itself is moving away from what I want where the compiler is a plain-Jane source transform and its inputs and outputs are very well specified and predictable. That’s where the ecosystem of tools comes in, and when done right I think tools should be very easy and straightforward to use and create. I often feel modern languages get this wrong by “including” too many “batteries” instead of specifying and documenting their build / dependency semantics clearly and providing good tools or libraries for working with and composing those elements of build.

Far too few language ecosystems provide any kind of libraries for it whatsoever, even for working with syntax / AST. I really can only think of Clang and Go, and Go’s tool libraries aren’t very accessible IMO.

sp33der89 · a year ago
This is a good point, and deserves a lot more discussion about it.

I personally don't mind that my code is somewhere else than in a text file, because as it now I have to ductape a huge array of tools to make it to production in languages like TypeScript and Elixir(languages we use at $WORK). I don't want to deal with that anymore than I need to.

I hope modern languages get to the level of swiftness like Unison, but until then I'm really happy with Unison, because code-in-database is only one of the several aspects I like about it(no dependency conflicts being another huge part of it!).

Clang is a good example I know, and Scala(https://www.chris-kipp.io/blog/an-intro-to-the-scala-present...) also has some nifty stuff. But even in Scala things aren't as seamless as in Unison.

Unison does things very differently, and it might not be everybody's cup of tea. But I do hope that popular languages take the good bits and help programmers do less chores and more fun stuff.

> I often feel modern languages get this wrong by “including” too many “batteries” instead of specifying and documenting their build / dependency semantics clearly

Do you have some examples? Nix somewhat aims to solve this, but it has its own drawbacks. A lot of people these days _expect_ a battery included environment: package manager, build tooling, linting, formatting, a language server, documentation generators. Unison solves a lot of these in one go because of the way it handles code, I think that's elegant and worth exploring.

sp33der89 commented on Programming in Unison   lwn.net/Articles/978955/... · Posted by u/sohkamyung
klabb3 · a year ago
> with an enjoyable DX

How is the tooling? Usually these paradigm shift ideas fail on interop even if they’re amazing in theory. The ambition level of Unison seems to be absolutely gigantic, so my first thought is that interop with anything outside their idealized world would be poor.

sp33der89 · a year ago
The tooling is surprisingly good for such a "young" language. I've had experience with other budding languages, like Nim, Zig, ReasonML throughout the years(not comparing these languages, just their tooling, they have tradeoffs), and Unison is slick. But expectations should probably be managed, it's not IntelliJ or VS Studio.

I'd describe the tooling as "zen like". When I sit down on weekends to write some Unison, I'll pop up my editor in a left tab, and on the right there's ucm. Since the LSP is included in the codebase manager, I didn't have to setup much. The LSP works good, could use some more code actions to control ucm though.

I'll write some code, throw in a `> ` eval expression to quickly mimic a REPL. I'll see the evaluation on the right. Eventually I'll switch to the right side and add my pieces. or write a `test>` and expression, which I can add as well to my codebase. Push my changes, create a branch, or switch project also happens. Maybe I'm not sure what the name was of a piece of code? Or I'd like to be able to search based on function signature. Both can be done in the right tab(ucm) with the command `find`.

Documentation is first class, I can browse the doc comments attached to variables/functions/types, I can link other terms(pieces of code) in those docs and they are discoverable as well, as soon as you add it to your codebase.

I believe a big part of why this is all possible, is that when your code is stored like this, it makes tooling around it a lot less complex. No need make ad-hoc parsers, compilation caches, syntax checkers. I'm no tooling expert, but for example making a visual editor based on the terms in your codebase sounds a lot easier than making a visual editor for TypeScript, the mental gymnastics is a lot less.

sp33der89 commented on Programming in Unison   lwn.net/Articles/978955/... · Posted by u/sohkamyung
sp33der89 · a year ago
Pleasant surprise to see Unison mentioned!

The developer experience in Unison(and Unison Cloud) has been wonderful for me. I try to write as much in it as possible, for hobby projects or side projects for friends and family.

Abilities(what Unison calls algebraic effects) are really ergonomic too use in practice, the learning curve is a lot lower than a IO monad datatype, and it reads just like Python when putting it to practice! Code-in-a-database means I don't have to fumble with long compilation times and Git, it brings joy to just hacking on to something in the weekend, because I just get to write code.

The article mentions its drawbacks, and they are real, especially FFI imo. The Unison team mentioned they are planning to include FFI, and it's going to be interesting to see what gets compromised.

But no other language (currently) hits this sweet spot of abstractions(not too little not too much) with an enjoyable DX, for me.

Docs being first class, go-to-definition and all that is one of my favorite things to show off when mentioning Unison: https://share.unison-lang.org/@unison/base

sp33der89 commented on Zed Decoded: Rope and SumTree   zed.dev/blog/zed-decoded-... · Posted by u/avinassh
MatthiasPortzel · a year ago
Like what? Vim, Emacs, Helix, VSCode, Zed, Xi, Lapce, and Monaco all do not.
sp33der89 · a year ago
Kakoune does, and I found it (without extensions) to perform excellent even with multicursor.

Not saying that array of lines is more performant than ropes, but just adding a datapoint here.

sp33der89 commented on Ask HN: Any fun ways to learn Emacs?    · Posted by u/yawpitch
wiktor-k · a year ago
> I'm curious, what do you like about the Emacs key bindings? Is it the GNU system integration, like with Bash?

Nah, I actually don't use them I'm Bash that frequently.

It may be just due to the non-modal way of the hot keys. With Helix I frequently press Esc far too many times to be sure I'm in a right mode (just like I press C on a calculator a couple of times to clear it).

I've got caps remapped to control and somehow most of the shortcuts that I use quickly got into my muscle memory in a way that Helix's don't. I guess it's just hard for me to put into words why is that.

sp33der89 · a year ago
Using meow:https://github.com/meow-edit/meow I actually got keybindings in Emacs that are helix-like, so I use helix for certain projects and Emacs for others.

The muscle memory transfers well.

sp33der89 commented on Helix: Release 24.03 Highlights   helix-editor.com/news/rel... · Posted by u/frankjr
mbStavola · a year ago
While I understood the maintainer's arguments for wanting to adopt a Scheme-like for plugins, I can't help but be a bit disappointed.

Helix being written in Rust meant that I felt very comfortable looking at the source code which gave me the confidence that if I wanted to implement something, I could reasonably do so. Furthermore, the idea that plugins could've been in Rust or Rust through WASM meant that I'd have an editor which was completely hackable in the least annoying way possible. Every time I have to learn one of these tool-specific languages I end up breathing a heavy sigh, spending a lot of time relearning things or working around weird quirks, and then ultimately giving up after writing the most basic version of what I want to do.

Ultimately, this is just a me problem and I really can't complain about something I haven't paid for or substantially contributed to. Maybe it'll actually be awesome and I'll change my mind completely, maybe they'll reconsider and add Rust-based plugins. Helix as an editor is awesome and I'm just going to have to trust the developers.

sp33der89 · a year ago
> Furthermore, the idea that plugins could've been in Rust or Rust through WASM meant that I'd have an editor which was completely hackable in the least annoying way possible. Every time I have to learn one of these tool-specific languages I end up breathing a heavy sigh, spending a lot of time relearning things or working around weird quirks, and then ultimately giving up after writing the most basic version of what I want to do.

I very much understand this. However I'd argue using Scheme is a great tradeoff. Because in the end programming is about tradeoffs. Scheme will not overcomplicate plugins for the maintainers, and as a write you have to learn a tiny DSL for configuring your editor.

As we speak, I'm trying to write a plugin for Zed, and as awesome all the niceties about Zed is, plugins are not easy, and frankly speaking, I feel like I wasted my time with all this nonsense about WASM, while in Helix the same plugin (language support) was really, really simple, even as somebody who knew nothing about Rust or Scheme.

sp33der89 commented on Helix: Release 24.03 Highlights   helix-editor.com/news/rel... · Posted by u/frankjr
sp33der89 · a year ago
I absolutely don't mind the plugin system being a Scheme. It's a plugin for a text editor, and Steel(https://github.com/mattwparas/steel) seems to be a lot less of a maintenance burden than WASM plugins(besides that I find the WASM tooling to be extremely complex).

But besides all that, Helix learned be that I don't need fancy plugins or endless finicking with config files and toolchains. Using a combination of other tools, like yazi and lazygit, helps me not only inside my editor but outside of it as well. And Kakoune does this even better. In that regard it has been a real eye-opener and refreshing. The downside is, it's hard to go back to other editors!

u/sp33der89

KarmaCake day246October 25, 2016View Original