HN user

develop7

86 karma

[ my public key: https://keybase.io/develop7; my proof: https://keybase.io/develop7/sigs/Insk_DK7LvaidA5-eAq-RkT3Rl0a87-wV3k7KRDrw44 ]

Posts8
Comments78
View on HN

I'm confirming the sentiment is accurate. Background: using Git (involuntarily) since 2010, did my fair share reading it's source, put honest effort into reading it's man pages, so. Jujutsu _is_ a revelation and I'm moving to it every time I'm able to: the git repository stays the same, it's the jj runs it now.

If you ever tried to have multiple WIP features merged in a Git working copy, I have a great news — with jujutsu complexity of the workflow increases linearly over the number of branches, if ever: it's almost trivial. Otherwise I very much encourage you to try — in and of itself the workflow is extremely effective, it's just Git makes it complex af.

Because everything can do IO and launch missiles there :) And there's no way to limit it (except maybe algebraic effects introduced recently? I'm pretty sure nobody uses them anyway)

The people who like Haskell think differently from the people who like C.

I'm familiar with numerous people who _like_ C and there's one thing that stands out about them is they don't think in abstractions, effectively ruining the whole point of abstraction as a concept. You offer them, say, an STM¹, and they are like "oh, right, a semaphore here, a mutex there, that's an easy one" and so on.

The problem comes when the Haskell types (pun intended) think that everyone else just needs to use/study Haskell more, and then they'll have their enlightenment moment.

I'm a Haskell type and ex-C type, and I don't think it is correct. To get Haskell, you have to step back and unlearn some of your knowledge about computers, no matter how hard you've acquired it. The problem with the abstractions offered by p^Wmainstream programming languages, is they leak, one way or another, so you inevitably end up not trusting any abstraction ever at all. In Haskell, abstractions are more reliable (dare I say rock-solid?), compared to mainstream, thanks to effects isolation, referential transparency, laziness and other merits and properties of the language.

Another mistake I did when starting Haskell was I expected the same words to mean the same things, `class` in particular. That cost me months of struggling to understand why it didn't work.

The bottom line is Haskell is significantly different from anything mainstream you've programmed in before and expecting it to work the same way is, uh, not very efficient.

¹: https://en.wikipedia.org/wiki/Software_transactional_memory

Me from 2013 when I've left PHP for Ruby would definitely be in awe. Today, not using Ruby for 5 years now, it's "meh". With the utmost respect to the effort of everyone involved.

Okay, so what a concerned citizen can actually do? I'm pretty sure attempting to convince them fuckers otherwise is a waste of breath/bytes & time, so

I mean, you have to justify being stuck somehow. While GitLab is certainly not an average Rails project technical debt-wise (I'm a tiny-time contributor to GitLab and my experience was quite amazing), but it's still Rails & Ruby all the way down there which could get you going only so much. You still have to write shitloads of tests, most of which are doing a sum-types-able programming language compiler's job over and over again. One day you realize this and that's the day Ruby is dead for you because there's no chance in hell you can persuade your peers to use measly dry-rb (dry-rb maintainers — no offense, I'm admiring your stellar work), not to mention moving to F#/Ocaml/Haskell/Rust.

For 12439th Time, Git Is Simple And Beautiful! Can you See It Now?

Another attempt to explain Git implementation details & lingo, because rewriting Git end user docs to not refer those is borderline insurmountable.

Git is too hard 6 years ago

Mercurial, Pijul, Bazaar, Subversion

In fact, it's every fucking version control system other than Git.

See, there's literally thousands of "git guides" and maybe dozen of "visual guides" (not to mention cheatsheets, "handy aliases" lists, etc.) and they keep coming, which begs the question — why are they there in first place? How come existing ones are not enough?

Git is truly the Dark Souls of version control systems

Yeah, but in a bad way. In my 10-years-experience with DVCS, Git requires orders of magnitude more attention than any other (D)VCS (except, maybe, monotone), offering nothing in return.

edit: closed parent

First, there's a number of preludes around: rio, foundation, relude to name a few. The standard prelude, OTOH, isn't going anywhere anytime soon, because throwing it away would break too much existing code.

I'd love to help you with the roadblocks, but I need more specifics to do that.

In my humble experience it can be either. Case in point - the adoption of disinfecting of tools and hands before surgery in 189x-s.

Rails Are a Cult 7 years ago

Yup, that's basically the story of my 7-ish years with Ruby (well, who am I kidding — it was 90% of Rails).

The "easy over simple" is something I was trying to nail, but couldn't; maybe because haven't given it enough thought.

Re: Ruby without Rails: fuck it, I'm too stupid for it and the whole dynamic typing mess; just gave it up in favor of Haskell.

Um, no, you cannot really rewrite so-called "published" history (one with the "public" phase). Both Git newbies and seasoned users could make use of such concept, should it be ever implemented (it probably wouldn't in vanilla though since the deafening silence in reply to anyone voicing ideas to prevent rewriting (some) shared refs).