kentonv changed the topic of #sandstorm to: Welcome to #sandstorm: home of all things sandstorm.io. Say hi! | Have a question but no one is here? Try asking in the discussion group: https://groups.google.com/group/sandstorm-dev
<ill_logic> It seems like Meteor is supposed to be there to simplify client-server communication but it just ends up being a mindfuck.
<ill_logic> Then again so is FP until you get it.
<ill_logic> But it seems like Meteor is sold as something simpler upfront.
<JacobWeisz[m]> I remember starting the tutorial and thinking it felt magical.
<JacobWeisz[m]> But I've learned most magical things are held together by the horrors of the deep.
<xet7> New Wekan v4.03 at experimental if someone dares to test
<xet7> horror included
<xet7> ;)
<xet7> with new Clearblue theme, etc
<xet7> and mobile fixes
<isd> The reactive stuff is pretty useful, as is the 'Methods' thing. It's nice to be able to just define a function on the client and call it from the server, and being able to just write client-side code in terms of a database query and have it auto-update is also very useful.
<isd> But, that is more or less where my appreciation for meteor ends.
<isd> ...and for the 'methods' thing, I'd rather be using capnproto over a websocket anyway... if only we had an implementation that ran in the browser.
<isd> s/define a function on the client and call it from the server/define a function on the server and call it from the client/
<isd> Also the size of our transitive dependency tree bothers me.
<isd> ill_logic: I think part of the trouble you're hidding is also probably just the pedagogy of the tutorials. They don't really explain how anything works.
<isd> I kinda felt them lacking too.
<isd> It's a bit easier to wrap your head around once you've actually been given the how.
<isd> hitting
<isd> I think that kind of instructional material drives system folks nuts in particular; we want to actually form a mental model of how the system operates, and instead we just see magic...
<isd> The other piece of it for me is I just don't like big expansive web frameworks. E.g. in the Python world I've always favored Flask over Django, I can't bring myself to use Yesod in the Haskell world (usually I use scotty)...
<isd> And meteor is one of those plus magic.
<ill_logic> I could appreciate if it was all on some conceptual plane where concepts of client and server are totally hidden.
<ill_logic> Haskell does that sort of thing to you in other ways.
<isd> Honestly I think the hardest thing about haskell is just that so much of the pedagogy is completely wrongheaded.
<isd> This was written like a year after I started learning the language: https://byorgey.wordpress.com/2009/01/12/abstraction-intuition-and-the-monad-tutorial-fallacy/
<isd> I wish it had been written sooner.
<ill_logic> I dunno man. It's not as though learning how exactly the bind function works is a great idea either. That's on the concrete level.
<ill_logic> Specific examples do help though.
<ill_logic> You show a few useful examples of monads, and then you start to at least get a feel for what they are in general.
<ill_logic> I do agree in general that one loses the progression after one knows something.
<ill_logic> For me, I could learn more of how Meteor works. Instead I'm just gonna dive in and poke at this Sandstorm thing until I start to get it.
<isd> Yeah, I think the thing that will really make it click is actually hacking on stuff. When I realized I "got" monads was not when I stumbled on some metaphor that worked for me, but when I caught myself reaching for generic monad operations while using Haskell in anger.
vertigo_38 has quit [Ping timeout: 258 seconds]
vertigo_38 has joined #sandstorm
vertigo_38 has quit [Ping timeout: 265 seconds]
vertigo_38 has joined #sandstorm
frigginglorious has joined #sandstorm
frigginglorious has quit [Ping timeout: 256 seconds]
<isd> Rust makes building "singletons"/global variables really obnoxious. Normally this wouldn't be a bad thing, but with the LD_PRELOAD thing the singleton design of libc/the unix syscall interface kinda forces my hand...
<ill_logic> Oh hey speaking of Haskell... I'm updating an old project of mine and I want to take advantage of Stack's snapshots. (and now they have LTS which is extra cool).
<ill_logic> But for some reason it seems there's a whole suite I have to install, that manages ghc installations, etc. Can I just get the snapshot tool that sets cabal constraints?
<ill_logic> It seems I've done this years ago but I forgot how.
<ill_logic> It doesn't even look like it does anything with cabal. Maybe it changed.
<isd> I don't really use stack.
<isd> Afaik the only real advantages it offers over cabal these days are: (1) managing different version of GHC, and (2) supposedly a more intuitive UI
<isd> It also used to have some advantages re: build reproducibility and isolation, but with v2-build cabal is just as good, and it seems a bit smarter about not duplicating work.
<isd> (2) is obviously subjective. But by the time stack was a thing I'd already learned the cabal UI anyway, so...
<ill_logic> Okay great. Very interesting. So do I just want to prepend all cabal commands with `v2-`?
<ill_logic> And it'll do the same package stabilization as stack?
<ill_logic> Built into its dependency management?
<isd> I think if you have stack pointed at a particular snapshot it will ignore newer versions that get uploaded to hacakge. Whereas if you do cabal update then the solver may decide to use newer versions. If you want to pin all your versions you can do cabal v2-freeze
<ill_logic> Right, I can pin them, but that's assuming I know what versions I want.
<ill_logic> That's what stack snapshots do. I thought you were saying that cabal somehow can give me similar stability.
<ill_logic> (Without using stack)
<isd> I mean I tend not to bother with actually freezing in the first place. I just make sure to put version bounds in my cabal file, and as long as upstream follows pvp I should be good.
<isd> The solver will respect those bounds.
<isd> I may not remember exactly what stack's snapshots are.
<isd> This is just the grouping of LTS packages, yes?
<isd> I mean I think if you want the curated set of core packages with no breaking changes without having to think about it too hard then stack will probably make that easier.
<ill_logic> Sure, but I'd have to think about how to remake my package for stack.
<ill_logic> I'd rather deal with a few annoying dependency issues.
<ill_logic> In other news - wait cabal v2 uses Nix?!
<isd> No, but it's internals are inspired by it.
<ill_logic> okay cool. just as well. so that's why there's no sandbox. cool.
<isd> yep.
<ill_logic> Perhaps if it takes the same form, it might be easier for hack-nix to use?
* isd had not previously heard of hack-nix
<ill_logic> haha oh.
<ill_logic> Maybe it's no longer going.
* isd looks at github contribution graph
<isd> Why have I been so productive on Tuesdays recently?
<JacobWeisz[m]> I love the contribution graph. It's just fun.
<JacobWeisz[m]> I miss when it told you your streak.
<isd> I don't. That wasn't healthy.
<JacobWeisz[m]> I think anything can be used unhealthily. But I would say I benefited a lot from trying to keep a streak going here and there.
<isd> I suspect on the whole its a good thing it went away; programmers are already too prone to overworking themselves.
<isd> Taking a day off now and then is a good thing.
* isd gets back to work