<FromGitter>
<tenebrousedge> vscode has vim bindings
<FromGitter>
<tenebrousedge> they even mostly work
<FromGitter>
<smalls12> does that just make vs code work like vim ?
<FromGitter>
<tenebrousedge> more or less, yeah
<FromGitter>
<watzon> Yeah, but they're not great compared to the real vim experience
<FromGitter>
<watzon> Imo the only thing that comes close is emacs' evil mode
<FromGitter>
<smalls12> I wouldn't see the appeal, but clearly someone likes that idea, their github repo has a;most 5k commits
<FromGitter>
<watzon> The main appeal is the ability to code faster if you're use to vim
<FromGitter>
<watzon> But if you're use to vim, may as well use vim haha
<FromGitter>
<smalls12> I like vim when I only have a terminal, I find it frustrating when the people that built the filesystem only installed nano
<FromGitter>
<watzon> Yeah...
<FromGitter>
<watzon> Fuck nano
<FromGitter>
<watzon> Vi is usually installed as well, but vi != vim
<FromGitter>
<nilium> Haven't tried tagbar in a long time. Might look at it again, but I don't know if I'd have a lot of use for it.
<FromGitter>
<watzon> I like the idea of it, don't know if it will help my workflow yet, but it's nice to see an overview of all the definitions in a file
<FromGitter>
<nilium> Yeah. It's not without use, I'm still not sure what my workflow will look like for Crystal yet.
<FromGitter>
<watzon> Something I do really like is any-jump though. The dev should be adding ctag support soon I hope.
<FromGitter>
<watzon> Should be better than using ripgrep
<FromGitter>
<nilium> I mostly hop around files by way of searching internally and then just memorizing any paths that're relevant
<FromGitter>
<nilium> Basically, my vim set up is pretty boring.
<FromGitter>
<watzon> I like making mine very IDE like
<FromGitter>
<watzon> Vim is so damn fast it almost doesn't matter how many plugins I add
<FromGitter>
<nilium> I once had a lot of plugins and managed to slow it down, but it's been a long-ish time. Also switched to emacs (via spacemacs) for a few months about two years ago -- it was nice, but far, far slower than Vim. Even base emacs seems to start slower than my normal vim configuration.
<FromGitter>
<nilium> I think the way you're supposed to use it is to set up a daemon, but at that point the workflow's pretty clunky, so I went back to vim.
<FromGitter>
<watzon> Yeah emacs is extremely slow in comparison
<FromGitter>
<watzon> It's nice, but I like vim's speed
<FromGitter>
<nilium> I mostly miss org mode.
<FromGitter>
<nilium> vim-wiki is nice, but it's not as nice.
ur5us has quit [Ping timeout: 240 seconds]
<FromGitter>
<watzon> Yeah I agree. There's an implementation for vim, but it's not complete.
sagax has quit [Remote host closed the connection]
DTZUZU has quit [Ping timeout: 240 seconds]
DTZUZU has joined #crystal-lang
<FromGitter>
<absolutejam_twitter> I've just started using emacs with doom mode
<FromGitter>
<absolutejam_twitter> It's amazing
<FromGitter>
<absolutejam_twitter> -mode
<FromGitter>
<absolutejam_twitter> Tried spacemacs a few times in the past but it was too flakey
<FromGitter>
<watzon> Yeah doom emacs is nice
<FromGitter>
<watzon> Faster than spacemacs
<FromGitter>
<absolutejam_twitter> And emacs daemon mode solved
<FromGitter>
<absolutejam_twitter> And startup delays
<FromGitter>
<absolutejam_twitter> But I actually wish there was more tooling around md instead of org
<FromGitter>
<absolutejam_twitter> Maybe I shoukd bite the bullet
<FromGitter>
<watzon> Org is really a lot better, but it's a lot to learn
_ht has joined #crystal-lang
_ht has quit [Remote host closed the connection]
<FromGitter>
<yxhuvud> I use org for presentations but not much else.
<FromGitter>
<kiti-nomad> I want to ask you a question, are JIT and AOT the characteristics of the VM language? I never encountered such a concept when I was learning C ++ and D
<FromGitter>
<kiti-nomad> Although this has nothing to do with the subject you discussed, I know you are all professionals
<FromGitter>
<stronny> I wouldn't say that, the same language may be JIT, AOT or even interpreted. I'd languages have natural preferences. It's easier to JIT some rather than others and so on.
<FromGitter>
<Daniel-Worrall> ... why did I click that link
<FromGitter>
<kiti-nomad> Someone told me that the jvm language takes AOT when compiled into bytecode, and JIT when run in a virtual machine. Languages like cpp directly generate executables, so it takes AOT ⏎ is it right?
<FromGitter>
<stronny> yes. however the words "virtual machine" do not mean hupervisor/domU distinction, it means that JDK compiles your sources into an intermediate code that need a runtime (JRE) to execute
Pqzcih5- has joined #crystal-lang
Pqzcih5 has quit [Remote host closed the connection]
<FromGitter>
<watzon> Python has a limited bytecode as well that's used to speed things up a little bit
<FromGitter>
<Blacksmoke16> > as a major feature compared to Kemal and others, there is a route conflict detection. An error will be raised at startup if there on any conflict. ⏎ ⏎ I'm assuming this means if you define the same route twice?
<FromGitter>
<j8r> Yes, or a path containing a path parameter
<FromGitter>
<j8r> e.g. `/api/{UserID}` and `/api/public` conflict
<FromGitter>
<Blacksmoke16> neat
<FromGitter>
<j8r> This kind of checks are at runtime (startup). I think it is fine
<FromGitter>
<j8r> macros will be unreadable
<FromGitter>
<Blacksmoke16> prob is fine
<FromGitter>
<j8r> I have done a CLI builder that is compile time safe. Now I think that raising at startup is also fine
<FromGitter>
<Blacksmoke16> when/if #8836 gets merged prob could do some fancier stuff
<FromGitter>
<j8r> For me on this case, there is not much benefit of using macros
<FromGitter>
<j8r> More importantly, the error will show the conflicting route, the controller it belongs
<FromGitter>
<j8r> Preventing an error in prod is the most important at the end :)
<FromGitter>
<watzon> I'm curious as to why Crystal is lagging so far behind in the cross compilation space. Languages like Rust, Nim, and Zig can already cross compile to most any target, but if we want to do it you have to generate a `.o` file and run a gcc script on the target machine.
<FromGitter>
<watzon> Or use alpine
<FromGitter>
<Blacksmoke16> @j8r indeed
<FromGitter>
<Blacksmoke16> been thinking how i want to implement the 405 errors
<FromGitter>
<Blacksmoke16> current idea is to keep a map of like `path => [methods]` while compiling the routes
<FromGitter>
<j8r> As a macro variable?
<FromGitter>
<Blacksmoke16> er no, im not a fan of that anymore
ur5us has joined #crystal-lang
<FromGitter>
<j8r> That's a bit like I did
<FromGitter>
<j8r> But instead of an Array, it's a struct
<FromGitter>
<Blacksmoke16> key thing im missing is that concept that groups routes
<FromGitter>
<Blacksmoke16> that i think you have
<FromGitter>
<j8r> Yeah, but that's only inside the implementation
<FromGitter>
<j8r> Maybe a NamedTupleLiteral` instead of an `Array`?
<FromGitter>
<Blacksmoke16> also helps you're running your own router right?
<FromGitter>
<Blacksmoke16> well atm there isnt any grouping, each route is considered independent
<FromGitter>
<Blacksmoke16> where in order to implement 405s youd have to have some concept of grouping routes by path, and knowing what methods they are pointed at
<FromGitter>
<j8r> It helps, quite a lot yes
<FromGitter>
<j8r> You could use it too
<FromGitter>
<j8r> Don't know if it would hurt performance vs yours
<FromGitter>
<j8r> Which is in pure macro
<FromGitter>
<j8r> Not sure how the path is matched/parsed?
<FromGitter>
<j8r> Radix parses per char, mine per string
<FromGitter>
<j8r> An obvious disadvantage are intermediate strings :/
<FromGitter>
<j8r> I'm sure I can optimize it – not high priority
<FromGitter>
<Blacksmoke16> sorry, to be clear my routing still happens at runtime
<FromGitter>
<Blacksmoke16> gotcha, prob going to roll my own router in the future, but for now i think ill stick with the amber one. Since it works and does what i need
<FromGitter>
<Blacksmoke16> by roll my own, i prob mean think about it, realize i wouldnt get much out of it, and continue with what i have 😆
<FromGitter>
<Blacksmoke16> ha, symfony does a bunch of nested if/elses