abmclin
2017-11-21 12:06:02

The nice thing about Racket is it actively encourages you to design well which is far more important than what programming language you learn. Once you learn two or three languages, rest become much easier and somewhat redundant.


abmclin
2017-11-21 12:08:23

I won’t worry about what or which language or paradigm to learn. Focus on learning how to design and organize your programs, try different languages without worrying about whether they are “in” or “out”. You’ll be able to make better informed decisions once you’ve been exposed to diverse programming styles.


greg
2017-11-21 14:58:24

My anecdata/observation is that Clojure “in industry” means dealing frequently with Java/JVM concepts, tooling, builds, ecosystem. Clojure is hosted on Java. For some people this is a feature (e.g. helps sneak it into certain companies). For me, meh.


dustin
2017-11-21 15:07:24

Yeah, I sort of felt the same way. Found some interesting points on Clojure here: https://news.ycombinator.com/item?id=14006242


gknauth
2017-11-21 15:15:21

@dustin I use Scala every day for work. I don’t think it’s a horrible language at all. There are parts of it that are ugly (that’s true of just about any language including beloved Scheme & Racket), or rather, I’ve seen people resort to ugly things in every language to get things done. Why did I choose Scala at work? Well, at work there is a .NET ecosystem and a JVM-based ecosystem, plus mobile apps (Android, iOS, Windows). I didn’t want to get tied down to one platform so that was a con for .NET. Also, more of my work ties into the Java-ecosystem. Scala fits very comfortably in that world. In Scala, you can write code that almost looks like Haskell, or you can write code that looks object-oriented (I remember the 80/90s when that was “a thing”), you can even write Scala that looks just like Java, so you don’t scare off the Java-only people. In short, you can write Scala in some pretty different ways, according to your taste, and the tastes of your colleagues. My Scala programs are much shorter and have less junk in them than the equivalent Java programs. My colleagues have been picking up Scala too, and like it. There are quirks, but you learn to deal with them pretty early on and then you forget about them. I use Racket at work for things that are experimental and/or where I want speed but don’t want to go back to C. I used Racket on the side at at home for all my own personal projects. Where does Haskell fit in? I want to learn more Haskell to improve my Scala programming and indeed anything I do in the functional world. I said as much in my annual personal goals statement at work. If I learn enough Haskell I may be able to finally understand all the category theory the most advanced Scala people float over my head at every Scala conference I attend. If I learn enough Haskell it may help me write Scala or Racket libraries with more finesse. Who knows. If I learn enough Haskell it may turn out Haskell can do everything with great elegance. We’ll see. Small aside: When I picked up Scala at first, I noticed in the preface to Odersky’s book that he’d been encouraged and given advice by the top thinkers in the Racket community, so that kind of cemented the deal for me in terms of the respectability of the journey. I definitely write better Scala given the lessons I’ve learned from the Racket and HtDP community over the years.


dustin
2017-11-21 15:33:45

One of the biggest issues with Haskell in my opinion, is the lack of good documentation and libraries that feel a bit clunky.


dustin
2017-11-21 15:37:14

That, and how I’d have a better chance (it seems) at understanding hieroglyphics!


gknauth
2017-11-21 15:52:01

Ha, I just looked for a book, meanwhile found a different one I could use to sharpen my Haskell and Russian: https://goo.gl/iNjv3N


gknauth
2017-11-21 15:55:40

@dustin: This is a book I’ve been working through: http://haskellbook.com/ I have a number of other Haskell books on my bookshelf, but this one seemed to try to make the journey easier.


dustin
2017-11-21 15:57:08

I’ve tried a lot of resources to learn Haskell. I think this post sums of some of the best ways: https://argumatronic.com/noobs.html

(That one is in the list as well.)


gknauth
2017-11-21 15:57:51

Thanks @dustin. I’m now going to return to my DrRacket window. :slightly_smiling_face:


jaz
2017-11-21 16:01:00

This is a site for beginners, and it links to an article called “Function Composition and the $ Operator”? As if the lexical syntax of a particular language is what a beginner should be spending time on?


jaz
2017-11-21 16:02:22

The article’s title could just as well be “How to avoid using parentheses, for… reasons.”


dustin
2017-11-21 16:10:15

I think the links are the gist of what’s available to learn Haskell. The book Geoff linked is probably the most understandable, but it also has its challenges at trying to teach a language where beginner resources are nearly non-existent. If you can make it through configuring Stack, or learning how to avoid the Haskell Platform, you’re doing well. Oh, and if you want a decent code editor, you might have to use Cabal or Stack to install additional resources for a nice IDE/editor experience. I probably spent days on silly things like messing with Vim, Spacemacs/Emacs, making sure I had the right version of GHC, etc. I learned a lot but I couldn’t live with myself after not being able to fully understand lambda calculus.


dustin
2017-11-21 16:16:54

I think because Haskell is so verbose, it’s difficult to remember and grasp things. But I also felt like there was this secret club, and because things aren’t well-documented, you must begin to try harder. Either that, or once you learn Haskell, trying to explain every needed detail to a beginner becomes one of the most difficult tasks one can do. I often found myself staring at code and re-reading material many times over. I did get those epiphany moments, but the process was very slow. In that sense, I don’t know that learning Haskell as a first language is the best choice, even though many Haskellers will tell you it’s the best decision you could possibly make.


dustin
2017-11-21 16:26:28

If ETA succeeds, there might finally be more support for learning (in a sense) Haskell on the JVM: http://eta-lang.org\|eta-lang.org


abmclin
2017-11-21 16:26:39

I don’t think Haskell is a good place to learn lambda calculus, if that’s what you meant in your earlier comment.


dustin
2017-11-21 16:28:14

I couldn’t seem to find a direct correlation to make the two work in my head.


dustin
2017-11-21 16:31:09

The Haskell Book (linked earlier) goes through a whole chapter at the beginning on lambda calculus, offering steps for things like alpha and beta reduction. I could maybe understand those things better, but some of the examples to be reduced were like 20–25 characters long.


abmclin
2017-11-21 16:33:05

I haven’t read that particular book but I’m rather surprised they’ve included a chapter on LC and reductions, that sounds like a good way to confuse beginners even more.


abmclin
2017-11-21 16:34:04

Knowing lambda calculus absolutely is not a prerequisite for learning programming in any form, even Haskell. While it’s nice to know to understand the theoretical and mathematical properties of computable systems, it’s not relevant to every day programming.


jaz
2017-11-21 16:34:10

In a typical (well, I think typical) undergrad program, that sort of thing is usually part of a programming languages course that you’d take in, what, your third year?


abmclin
2017-11-21 16:35:20

yeah in my own undergrad experience, we were exposed to lambda calculus in the last two years.


abmclin
2017-11-21 16:37:27

in any event @dustin, don’t beat yourself up if you don’t grasp Haskell at first, it’s perfectly OK not to understand something at first. You’ve given yourself time and put in efforts to explore Haskell, you can move on to other things and come back to Haskell later.


dustin
2017-11-21 16:38:37

Here’s one example for beta reduction taken from chapter 1:

a) (𝜆𝑥𝑦𝑧.𝑥𝑧(𝑦𝑧))(𝜆𝑥.𝑧)(𝜆𝑥.𝑎) b) (𝜆𝑥.𝜆𝑦.𝜆𝑧.𝑥𝑧(𝑦𝑧))(𝜆𝑥.𝑧)(𝜆𝑥.𝑎) c) (𝜆𝑦.𝜆𝑧1(𝜆𝑥.𝑧)𝑧1(𝑦𝑧1))(𝜆𝑥.𝑎) d) (𝜆𝑧1.(𝜆𝑥.𝑧)(𝑧1)((𝜆𝑥.𝑎)𝑧1)) e) (𝜆𝑧1.𝑧((𝜆𝑥.𝑎)(𝑧1))) f) (𝜆𝑧1.𝑧𝑎)


dustin
2017-11-21 16:39:48

When I seemed confused, the author told me a ten-year-old made it through the book.


abmclin
2017-11-21 16:40:46

heh that doesn’t sound like a kind compliment.


abmclin
2017-11-21 16:42:26

I won’t worry about what the author said, he’s motivated to believe his book is easy even for ten year olds but that doesn’t say much. People have diverse learning styles and background knowledge that influence how well they assimilate given material.


abmclin
2017-11-21 16:43:00

Other than the author’s claim, we have no way of knowing how well the ten-year old actually understood the book, for all we know she or he just skipped right over the chapter and focused on the more interesting chapters.


jerryj
2017-11-21 16:44:25

Or if it was the author’s own ten year old child who i’m sure was given help more graciously


jerryj
2017-11-21 16:45:33

Maybe this is terrible advice, but I found redex traces to be very helpful for understanding how lambda calculus expressions reduce.


gknauth
2017-11-21 16:47:22

Regarding the ten year-old λ-calculus wizard, when I was in my mid-forties, I had a problem with my Mac. I got on some forum and a genius helped me out. When my problem was fixed, I said to him, “Man, I can’t believe how much you know about these machines,” he answered, “Yeah, I’ve been working on Macs for ten years, since I was five.”


abmclin
2017-11-21 16:49:25

good story


dustin
2017-11-21 16:49:49

Ha! That’s funny. The kid was male, I believe, and his mom is a linguist and thoroughly knows algebra.


abmclin
2017-11-21 16:50:33

of course


abmclin
2017-11-21 16:51:42

Classical lambda calculus while a excellent model for understanding what computing means on an abstract level in terms of reduction and transformations, but it’s a very simplistic model and doesn’t even have any concept of mapping expressions to values or even typing.


abmclin
2017-11-21 16:53:41

It’s about a far as you could get from normal variety programming and computing. The most important concept from lambda calculus to have made its way into programming probably would be first-class functions as values which is the keystone to being able to parameterize code over arbitrary inputs, otherwise also known as lambda


abmclin
2017-11-21 16:55:24

Racket’s own lambda is far more rich than lambda calculus’s lambda and you can work with it without needing to know anything about lambda calculus. Nonetheless, if you’re interested in knowing more about classical untyped lambda, check this tutorial out http://www.inf.fu-berlin.de/lehre/WS03/alpi/lambda.pdf


abmclin
2017-11-21 16:58:57

the main takeaway I would offer is that the only thing Racket’s lambda and lambda calculus’ lambda have in common is the name and concept of first-class function values being applied to inputs


samth
2017-11-21 16:59:25

@abmclin I don’t think that’s really accurate


dustin
2017-11-21 16:59:49

I’m going to start of HtDP. Is it safe to use the draft version?


samth
2017-11-21 16:59:57

@dustin yes, you should


gknauth
2017-11-21 17:00:12

@abmclin Hadn’t seen that tutorial before, I’m glad it’s 9 pages instead of 900, thanks.


abmclin
2017-11-21 17:00:16

@samth I probably am oversimplying things no question


abmclin
2017-11-21 17:00:30

I welcome corrections :slightly_smiling_face:


gknauth
2017-11-21 17:04:44

@dustin Yes to HtDP! When I was first exposed to it, after the first day or two, it was almost magical, that is: recognize these basic patterns, follow this recipe, and programs mostly write themselves. And they work, because of course you wrote your tests. The hardest part of HtDP is not HtDP, it’s later, when you begin to cut corners, thinking, “Oh I know how to do this, I don’t really need a test for this, or I don’t really need to use that pattern I learned, I’ll just wing it…” and then you find you would have been done hours earlier if you had just stuck to the lessons HtDP teaches.


lexi.lambda
2017-11-21 17:16:52

I have personally seen intelligent, experienced programmers with 15 years experience struggle to grasp Haskell concepts. Haskell is a complicated programming language. That isn’t intrinsically bad, not by any stretch—with great investment comes great reward—but it is an awful language to teach to beginners. I think most of the people who advocate it are well-intentioned but have used it long enough they have forgotten why it’s so hard for someone new to wrap their head around.


dustin
2017-11-21 17:33:05

I think you’re exactly right about that. Thanks for all of the comments.


dustin
2017-11-21 17:45:21

It’s been a while since I’ve done pre/algebra. Should I get those fundamentals down well before starting HtDP?


lexi.lambda
2017-11-21 17:55:43

I don’t think it’s necessary


dustin
2017-11-21 17:56:16

Thanks.


slack1
2017-11-21 18:24:28

Personally I’d think it may be fruitful to learn how to build apps with JS


slack1
2017-11-21 18:24:44

It’s hard to go from low-level patterns to app-level organization


slack1
2017-11-21 18:24:52

But the JS world has a community that’s actively figuring that out right now


slack1
2017-11-21 18:25:08

So there will be a lot of learning pathways from nothing to app


slack1
2017-11-21 18:25:47

The only caveat is that the JS world’s tooling is downright painful


jaz
2017-11-21 18:29:28

I have to disagree (strongly) with that.


jaz
2017-11-21 18:30:03

Unless, I suppose, you only learn from mistakes.


slack1
2017-11-21 18:30:22

I would suggest that in the JS world


slack1
2017-11-21 18:30:35

you learn by mocking, by modelling, by mimicking the architecture of people who are greater than yourself


slack1
2017-11-21 18:30:51

and it’s a world that places app architecture at the forefront of its thinking


slack1
2017-11-21 18:31:31

it’s hard to go from a programming paradigm, or design patterns, all the way to APP


gknauth
2017-11-21 18:31:40

The only JavaScript apps I write in JavaScript are really small ones. For anything medium to big, I compile a language I like into JavaScript.


dustin
2017-11-21 18:32:18

meow: It almost sounds as if you’re referring to React.


lexi.lambda
2017-11-21 18:32:29

If the Elm people are any indication, the HtDP approach does scale to whole applications.


slack1
2017-11-21 18:32:36

Or just how unidirectional architecture has taken over the web


lexi.lambda
2017-11-21 18:32:52

Since the “Elm architecture” is exactly the same as HtDP universe programs.


dustin
2017-11-21 18:33:51

Wow, I didn’t know that! Very interesting, indeed. Perhaps it attributes to some of their success.


slack1
2017-11-21 18:38:34

though I would also say that later on, some of the major languages of the industry are “small”


slack1
2017-11-21 18:38:40

so learning a wrong language or two isn’t really bad


slack1
2017-11-21 18:38:59

Javascript might be accounted for by 80–120 constructs, not including all the API’s


dustin
2017-11-21 18:39:37

All I know, is it’s difficult to talk about Elm around Haskell and PureScript people. But I think their approach is why they’re so successful. They’ve told me: Elm is a library, and not a language…


slack1
2017-11-21 18:40:26

That makes it better, surely


lexi.lambda
2017-11-21 18:40:31

That’s silly. It’s a language bundled with a highly opinionated framework.


lexi.lambda
2017-11-21 18:42:27

I personally don’t use Elm because I think it is limiting, but some people achieve great success with it, and simplicity has its advantages. But this is largely besides the point—JavaScript and Elm are engineering tools, not educational ones. If you understand how to design good programs, you should be able to work productively in either, but neither are particularly fit for the purpose of learning to program (though Elm is probably much closer than JavaScript).


slack1
2017-11-21 18:42:58

If you look at the language by itself, you might judge it unfit


slack1
2017-11-21 18:43:04

But I would look at the immense learning ecosystem


slack1
2017-11-21 18:43:12

That has distilled the higher quality educators and materials to the top over time


slack1
2017-11-21 18:43:28

including video materials


lexi.lambda
2017-11-21 18:43:30

I think I just fundamentally disagree, and I assure you I am well immersed within the JavaScript ecosystem.


lexi.lambda
2017-11-21 18:43:46

I think many of those learning materials are subpar and quite unhelpful to teaching good program design.


lexi.lambda
2017-11-21 18:44:33

Many of them are useful for teaching someone how to solve a very specific engineering problem, like “build a CRUD app” or “build an interactive user interface”. But good design is still the starting point.


gknauth
2017-11-21 18:44:36

@lexi.lambda I guess it’s time for me to take a look at Elm, thanks.


slack1
2017-11-21 18:45:05

But you don’t think even the skeleton of a unidirectional, reactive CRUD app is mind-bending?


slack1
2017-11-21 18:45:24

I’ve seen a lot of people have handfuls of patterns but can’t seem to think of an entire app


lexi.lambda
2017-11-21 18:45:41

I’m not saying it’s unhelpful. I’m saying it’s a bad place to start.


slack1
2017-11-21 18:45:42

The JS world doesn’t aim to teach you computing, it aims to teach you a sensible app architecture


slack1
2017-11-21 18:46:40

Like most of their materials are aimed towards making an app


slack1
2017-11-21 18:46:45

I feel like the Racket world has two major texts


lexi.lambda
2017-11-21 18:46:46

I don’t think HtDP claims to be a curriculum you can go through and end up capable of building anything without further learning. If anything, one of its purposes is providing a framework for learning more.


slack1
2017-11-21 18:46:50

How to design programs, and SICP


lexi.lambda
2017-11-21 18:47:26

I don’t think SICP is part of the Racket world; it comes from Scheme. And I don’t even think HtDP is really about Racket, either.


slack1
2017-11-21 18:47:41

For online help, there’s Stack Overflow, the docs, and Slack!


slack1
2017-11-21 18:47:58

The SO is quite sparse


lexi.lambda
2017-11-21 18:48:28

I agree that Racket is rather lacking in the department of resources on engineering applications in Racket. But that’s not the point of HtDP—it isn’t training you to be a Racket programmer. It’s training you to be a programmer. You are expected to move onto another language after HtDP, and there’s a good chance it won’t be Racket.


samth
2017-11-21 18:49:22

The racket world has ~0.5 texts


dustin
2017-11-21 18:49:27

For me, I always wanted a resource on how to program/design instead of how to make this thing right now, and I think that’s what’s being said, as HtDP teaches principles for a better foundation. In my experience, frontend is very fragmented, and hardly anyone agrees on the same approach.


samth
2017-11-21 18:49:38

unless you count the online docs


samth
2017-11-21 18:49:47

oh, well, now it has BR


samth
2017-11-21 18:49:49

so 1.5


lexi.lambda
2017-11-21 18:50:01

@samth is RoR the half-a-text?


samth
2017-11-21 18:50:03

yes


samth
2017-11-21 18:50:19

and since you knew that you probably also understand why I say that


lexi.lambda
2017-11-21 18:50:32

I do, I think


notjack
2017-11-21 18:54:47

That wouldn’t happen to have been Chris would it?


notjack
2017-11-21 18:55:04

(there’s two authors and one of them is a significantly more… empathetic person than the other)


notjack
2017-11-21 18:58:37

I’m at a loss, but I haven’t read RoR yet


notjack
2017-11-21 18:59:40

@samth by the way, the docker setup runs significantly more of the release checklist than I thought it did :) sweet


samth
2017-11-21 18:59:52

@notjack woo!


samth
2017-11-21 19:00:08

also I think the unix-style builds would be a good next thing to add


notjack
2017-11-21 19:00:08

I think it’s over half the checklist items


notjack
2017-11-21 19:00:12

yup


samth
2017-11-21 19:00:27

since they’re a simple argument change to the installer script


notjack
2017-11-21 19:01:04

there’s a little more to it because it will change what paths the binaries end up at, which changes what directories the test setup has to chown


notjack
2017-11-21 19:01:09

but yeah, it shouldn’t be complex


samth
2017-11-21 19:01:14

as to RoR, it’s 50% how to use Racket, 50% programming education


dustin
2017-11-21 19:01:14

I’d like to maybe learn Rust later on, but is it weird I don’t like nested

{


}

samth
2017-11-21 19:01:44

why does the test setup have to chown the binaries?


notjack
2017-11-21 19:03:13

@samth because some of the tests write and create stuff in the racket package dirs so the racket user has to own the package installation dirs. And that has to happen after packages are installed and built, because there’s no way to chown a dir and all future subdirectories without using ACLs and lord I do not have the time to figure out how that nonsense works


notjack
2017-11-21 19:03:47

really the tests just shouldn’t be doing that, but alas


samth
2017-11-21 19:03:56

they really shouldn’t be creating things in directories they don’t own


samth
2017-11-21 19:04:17

ie, you should be able to run the tests even if racket is installed globally


dustin
2017-11-21 19:04:42

No, I’m mean I prefer parenthesis to curly braces. But many will repeatedly tell me syntax doesn’t matter which, I’m sure, has some truth to it.


slack1
2017-11-21 19:06:36

Have you peeked at the aesthetics of Python or Ruby?


slack1
2017-11-21 19:08:33

Seeing how people in several languages solve the same problem can be interesting, such as with Project Euler


notjack
2017-11-21 19:08:41

@samth more strongly, I don’t think any test should ever be creating or writing to a file or dir that wasn’t explicitly given to it by the test framework for testing purposes - something as simple as reading a TEST_TMPDIR env var would work for that


samth
2017-11-21 19:09:07

@notjack I might agree with that, but I don’t think we could consider all current instances of that bugs


notjack
2017-11-21 19:09:37

agreed, and I certainly don’t think unix installation or the 6.11 milestone in general should be blocked on it


samth
2017-11-21 19:09:39

but I think that “install unix-style racket as sudo, run tests as regular user” should work currently


notjack
2017-11-21 19:10:13

sudo is recommended against in containerized setups in general because it does some weird things that are far more suited for interactive shell usage than for scripted builds


samth
2017-11-21 19:10:35

sure


samth
2017-11-21 19:10:47

I just mean that your description sounds like that would also fail


notjack
2017-11-21 19:11:06

ah


notjack
2017-11-21 19:12:06

yes, “install unix-style racket as sudo, run tests as regular user” would fail in a dockerized unix install unless the regular user was granted permission to read and write some of the racket installation dirs


samth
2017-11-21 19:12:21

would it fail in a non-dockerized install?


notjack
2017-11-21 19:12:47

unsure


notjack
2017-11-21 19:13:01

I think it would if the user installing racket did so while running as root and then ran the tests as a normal user


notjack
2017-11-21 19:13:52

but docker can introduce a lot of permissions weirdness that makes it hard to guess what will happen by default


samth
2017-11-21 19:15:25

well, if you can test without the chown and then see what happens that would be instructive


dustin
2017-11-21 19:15:46

Yeah, I started on this journey with functional programming. Many I encountered harshly criticized those languages a lot. I think it not only made me think, but probably arose even more questions. Ruby isn’t quite as popular anymore; other tell me learning it had them un-learning a lot of things. I tried to decipher all of the opinions, but I think the better way is to see what works for me.


notjack
2017-11-21 19:16:54

if you remove the racket dir chowns from the current docker setup, the release tests fail to create a couple specific dirs that get written to as part of the tests/racket/file.rktl tests


samth
2017-11-21 19:17:30

are those in /tmp?


notjack
2017-11-21 19:18:27

ah, the file.rktl failures were for dirs in /tmp but there were some other failures I don’t remember in the tests/racket/test command, and those ones were for creating directories in either the package or collection dirs, I forget which


notjack
2017-11-21 19:18:54

I can file an issue to investigate which tests are making what directories, then we could file bugs with those tests to make that more configurable somehow


samth
2017-11-21 19:19:20

that would probably be good


notjack
2017-11-21 19:19:58

I’ve been meaning to write a doc of what a racket test “should” do for proper cooperation with test runners and different environments


notjack
2017-11-21 19:20:36

maybe doing that and getting some agreement from racket folks would be best before filing bugs on racket repos


samth
2017-11-21 19:20:41

yes


samth
2017-11-21 19:20:54

but investigating first for the file tests would be good too


slack1
2017-11-21 19:23:57

No I don’t mean to suggest those languages


slack1
2017-11-21 19:24:08

And choosing a language on brackets would be bizzare


slack1
2017-11-21 19:24:40

I meant to peek at them only, to look at their aesthetics


dustin
2017-11-21 19:25:22

I have briefly. Maybe for design aesthetics?


slack1
2017-11-21 19:25:36

Other languages borrow those aesthetics too,


slack1
2017-11-21 19:25:39

For example


slack1
2017-11-21 19:25:53

Matlab and Crystal look Ruby-like


slack1
2017-11-21 19:26:15

Python is quite unique in its look


slack1
2017-11-21 19:26:17

It’s spartan


notjack
2017-11-21 19:27:45

@samth this is a neat project, I’m glad to help with it :)


samth
2017-11-21 19:28:14

well it wouldn’t be nearly as good without someone like you who knew what they’re doing


dustin
2017-11-21 19:28:16

The main argument I’ve heard against Python was maintainability in larger codebases. Others say, no problem. A lot of it, I think, comes from who writes the code.


slack1
2017-11-21 19:28:26

But you said you’re after learning, right?


slack1
2017-11-21 19:28:32

You’re okay learning a 2nd language after, right?


notjack
2017-11-21 19:28:34

this is in my wheelhouse I suppose


slack1
2017-11-21 19:28:39

But I don’t mean to suggest Python anyway


slack1
2017-11-21 19:28:41

and Ruby is on its way down


slack1
2017-11-21 19:28:46

though Python is shooting up massively


slack1
2017-11-21 19:29:11

I was only mentioning it as visual contrast to the problem of brackets hehe


slack1
2017-11-21 19:29:14

Python goes one way


slack1
2017-11-21 19:29:17

Ruby goes another way


slack1
2017-11-21 19:29:19

both quite weird


dustin
2017-11-21 19:29:45

Sure, tell me what language you have in mind :).


slack1
2017-11-21 19:29:53

For learning you mean?


slack1
2017-11-21 19:30:01

I really do recommend JS


slack1
2017-11-21 19:30:04

hehe


slack1
2017-11-21 19:30:11

I don’t think you’ll be poisoned by learning JS


slack1
2017-11-21 19:30:20

like after, you try go back to Clojure or Racket or w/e


slack1
2017-11-21 19:30:33

It’s not like a classical musician tryign to learn Jazz, but finds his soul poisoned by bach


slack1
2017-11-21 19:31:01

that being said


slack1
2017-11-21 19:31:03

I am learning Racket


slack1
2017-11-21 19:31:07

and intend to fully learn it


slack1
2017-11-21 19:31:15

So if you’re joining this journey with me


slack1
2017-11-21 19:31:19

perhaps we can learn from each other


dustin
2017-11-21 19:31:49

Haha! Well, it’s funny you say that, because I’ve returned to JS a lot. But I’m also interested in Functional JS if you have any suggestions there. I’ve looked into Ramda and Reason ML by Facebook (based on Ocaml).


slack1
2017-11-21 19:31:49

I think it’s quite healthy to learn 4–5 languages


slack1
2017-11-21 19:32:07

It’s also not an arrogant suggestion to learn 4–5 languages


slack1
2017-11-21 19:32:16

Because after awhile, you get a knack for them


slack1
2017-11-21 19:32:23

And few languages are truly unique, like Haskell


slack1
2017-11-21 19:32:51

My suggestion is that instead of thinking about FP


slack1
2017-11-21 19:32:54

you think about architecture


slack1
2017-11-21 19:33:01

Do you recoil at the idea of OO?


slack1
2017-11-21 19:33:24

Part of the reason I suggest JS is because many programmers never get to do everything


slack1
2017-11-21 19:33:28

but in JS, you do


slack1
2017-11-21 19:33:34

It’s possible to explore full stack


slack1
2017-11-21 19:34:01

and when you do


slack1
2017-11-21 19:34:15

you realize that it’s more important to think about major pieces of architecture communicating with each other


slack1
2017-11-21 19:34:17

and how they behave


slack1
2017-11-21 19:34:18

for example


dustin
2017-11-21 19:34:37

Right, I like that idea. And yes, a study partner is a motivating factor. I’m driving at the moment, but I should have more to say when I get home.


samth
2017-11-21 19:55:43

@notjack well that led to a fun bug :slightly_smiling_face:


notjack
2017-11-21 20:06:04

notjack
2017-11-21 20:07:12

I notice it’s only the gc events tagged “MST”


samth
2017-11-21 20:07:20

yeah


samth
2017-11-21 20:07:24

I added that to the issue


samth
2017-11-21 20:07:44

those are related to places


greg
2017-11-21 20:10:44

From Jan 2011 “racket http server, major GC: –216 bytes collected” https://lists.racket-lang.org/users/archive/2011-January/043760.html


notjack
2017-11-21 20:11:46

gasp, a zombie bug


greg
2017-11-21 20:12:08

The answer is in that thread: > On Tue, Jan 11, 2011 at 5:28 AM, Noel Welsh <noelwelsh at gmail.com> wrote: > On Mon, Jan 10, 2011 at 9:53 PM, Greg Hendershott > <greghendershott at gmail.com> wrote: >> >> What does it mean for the GC to collect a negative number of bytes? > > I'm ducking this one... Clearly it means that the garbage collector thought it could throw something out, put it in the trash, and then realized later that it really needed it, so it reached in, pulled it back out, and then tried to flatten it out and wipe off the bits of food which went in on top of it. Hasn't this ever happened to you? :-) Todd


samth
2017-11-21 20:13:34

I doubt that’s the same thing


samth
2017-11-21 20:33:16

Does rackunit have a mode to print all the names of the tests it runs?


samth
2017-11-21 20:33:23

verbose doesn’t seem to do that


dustin
2017-11-21 20:38:14

@slack1 those are all very good points. I think you nailed it about studying architecture instead, since by exploring multiple languages, I’m sure you can get a better grasp at that. I’m sort of hoping to go through HtDP. Did you already make it through that one? I’m also enrolled in Frontend Masters and have access to some of Kyle Simspon’s workshops about his book series.

Another one I meant to explore is https://watchandcode.com/p/practical-javascript

but I’ve not made it there yet. Let me know what you think.


dustin
2017-11-21 20:40:50

Well, yeah. There were times I felt like letting him know how I felt about his teaching style—how it didn’t seem to make things better, but I always held back. I know he means well in teaching people, but I’m not sure he has the patience, and probably also has a day job.


dustin
2017-11-21 20:44:44

I really enjoyed Julie Moronuki’s podcast about Haskell below. I found it inspiring and she explained it from a beginner’s standpoint, but still, I think learning Haskell is tough.

https://frontsidethepodcast.simplecast.fm/91ecc4ec


dustin
2017-11-21 20:45:11

I’m not sure the authors are doing work together anymore.


samth
2017-11-21 20:51:33

@notjack found it


notjack
2017-11-21 20:54:35

@samth yeah copying a giant string will do it :p


notjack
2017-11-21 20:55:05

The authors are very much not working together anymore. Julie super cool tho


dustin
2017-11-21 20:55:57

I agree, she is. I came away from the podcast with a lot to think about.


notjack
2017-11-21 20:56:13

and that does sound like a good rackunit feature, maybe something triggered by an env var or something


samth
2017-11-21 20:56:39

@notjack there’s a verbose argument to run-tests but it doesn’t do much


notjack
2017-11-21 20:56:55

yup


samth
2017-11-21 20:57:09

maybe it could be made to be not useless


notjack
2017-11-21 20:57:33

I’d want the test suite implementation made less incomprehensible first


notjack
2017-11-21 20:57:51

but yes


notjack
2017-11-21 20:58:32

more broadly, more docs describing what the responsibilities of a test runner tool like raco test are vs a test framework like rackunit or chk would be great


slack1
2017-11-21 21:01:12

Mozilla docs are also top notch and in clear English most of the times


slack1
2017-11-21 21:03:00

But imo, you should do one approach at a time


slack1
2017-11-21 21:03:06

So if you’re doing racket, then do racket


slack1
2017-11-21 21:06:28

As you’re going along HTDP and making stuff


slack1
2017-11-21 21:06:40

Or if you have a mini project you wish to work on


slack1
2017-11-21 21:06:44

I’d be interested in working on it with you


slack1
2017-11-21 21:06:49

esp if you ever wish to do Racket + web stuff


slack1
2017-11-21 21:06:53

That’s what I’m working toward


slack1
2017-11-21 21:08:02

I went to Racket because I thought it was the most beginner-friendly Lisp language


dustin
2017-11-21 21:15:11

Ahh, yes. I found Racket from the FP community and immediately latched onto the documentation and one called beautiful Racket. Racket + the web is definitely something I’m interested in. I have a decent amount of experience in creating websites, CSS, HTML, minor server configuration, but only enough of JS to get by when needed… I also own the book Realm of Racket, so this is surely something we can study together. I’ll probably work through HtDP and try to make my way through the Racket book I own, and go through HtDP as fast as I can. Have a decent amount of concepts down to get started.


dustin
2017-11-21 21:17:46

One thing that confuses me about Racket. Is DrRacket the only real way to work on projects?


slack1
2017-11-21 21:20:00

No, but it’s pretty convenient


slack1
2017-11-21 21:20:14

Unfortunately support on all the other popular IDE’s requires a larger community


slack1
2017-11-21 21:20:26

I’ve found Racket support on Visual Studio Code, Atom, etc. to be lacking


dustin
2017-11-21 21:20:50

That’s what I thought.


dustin
2017-11-21 21:22:25

As many who don’t particularly like Clojure, they seem to have some great tools for editors…


slack1
2017-11-21 21:22:42

They do indeed, because Java has some of the best tooling in the entire industry


slack1
2017-11-21 21:22:50

The most advanced programmer assistance tools


slack1
2017-11-21 21:23:02

I’m not touching Java though!


slack1
2017-11-21 21:23:17

At least I don’t wish to ~_~


slack1
2017-11-21 21:23:19

It is quite verbose


dustin
2017-11-21 21:23:19

Me either lol.


slack1
2017-11-21 21:23:26

And doesn’t give you the full payoff for all that verbosity


slack1
2017-11-21 21:23:59

But Java is able to help the programmer catch mistakes that other language communities don’t understand


dustin
2017-11-21 21:24:07

Yeah, I’ve heard someone compare its type system (in the context of Haskell) to the toy-maker Fisher-Price.


slack1
2017-11-21 21:24:07

like I see some people being fancy using Vim to edit Python


slack1
2017-11-21 21:24:21

No, that’s rude


dustin
2017-11-21 21:24:32

Agreed. I have a nice CS book based on Java.


slack1
2017-11-21 21:24:32

Java is stronger than Go


slack1
2017-11-21 21:25:02

But I would also say too much focus on FP or OO isn’t that good


slack1
2017-11-21 21:25:07

I hear a lot of people talk about it


slack1
2017-11-21 21:25:12

And then, especially in real life


slack1
2017-11-21 21:25:17

when I ask them about it, I might say something like


slack1
2017-11-21 21:25:23

“Oh, so you like Haskell too!”


dustin
2017-11-21 21:25:24

Yeah, it is a bit rude. But most FP people don’t think highly of Go either. I need to stay away from those groups, I think they’re making my head hurt lol.


slack1
2017-11-21 21:25:28

“I’m trying to learn FP”


slack1
2017-11-21 21:25:41

“How does FP help you with app design?”


slack1
2017-11-21 21:25:43

And they cannot answer


slack1
2017-11-21 21:25:51

or


slack1
2017-11-21 21:26:05

“So you do OO, doesn’t that mean state is sometimes distributed?”


dustin
2017-11-21 21:26:11

They have the mentality that it eliminates bugs mostly, and makes their lives easier…


slack1
2017-11-21 21:26:13

“What strategy do you use to prevent problems?”


slack1
2017-11-21 21:26:21

Yes, but those are very small level concerns


slack1
2017-11-21 21:26:25

I think an interesting level of thinking is


slack1
2017-11-21 21:26:31

How do I delegate work to person A, B, C, D, E, F


slack1
2017-11-21 21:26:41

And while they have varying code level quality


slack1
2017-11-21 21:26:45

I know that if they keep their “code contracts”


slack1
2017-11-21 21:26:49

The entire system will run


slack1
2017-11-21 21:26:53

How does a person know such things?


slack1
2017-11-21 21:26:57

architecture


slack1
2017-11-21 21:27:12

Another thing I would note about FP is


slack1
2017-11-21 21:27:21

Let’s say you find out that you are joining an FP team, great


slack1
2017-11-21 21:27:27

And you code you module in the FP style, very good


slack1
2017-11-21 21:27:33

it connects with the team’s app and works well


slack1
2017-11-21 21:27:35

all nice


slack1
2017-11-21 21:27:41

and then one day you look over at your coworker’s module code


slack1
2017-11-21 21:27:48

and you realize some of the code is imperative!


slack1
2017-11-21 21:27:49

how dare they!


slack1
2017-11-21 21:27:55

but from the outside, it looks 100% functional


slack1
2017-11-21 21:27:58

it’s 100% deterministic


slack1
2017-11-21 21:28:04

so… is it bad?


slack1
2017-11-21 21:28:10

One day you look underneath the Scala code


slack1
2017-11-21 21:28:16

and you realize, it’s 99.9% imperative


slack1
2017-11-21 21:28:34

is it bad?


dustin
2017-11-21 21:28:36

Have you looked into Rust?


slack1
2017-11-21 21:28:39

oh


slack1
2017-11-21 21:28:40

yes


slack1
2017-11-21 21:28:56

Rust interests me


slack1
2017-11-21 21:29:06

But I’m waiting for it to catch a harder bit of success first


slack1
2017-11-21 21:29:18

As it’s a high commitment, and it’s very verbose, and it doesn’t agree with my aesthetics, but it has the characteristics I want


slack1
2017-11-21 21:29:29

Macros, FP, concurrency, memory safety


dustin
2017-11-21 21:29:37

Yeah, my attempts were very slow and probably not too beneficial.


dustin
2017-11-21 21:29:54

That was exactly my thought.


slack1
2017-11-21 21:30:21

so I would say don’t be too biased towards FP or OO


slack1
2017-11-21 21:30:28

and that the lore in both worlds goes very deep


dustin
2017-11-21 21:30:29

What would you say interests you the most in a language?


slack1
2017-11-21 21:30:34

hm


slack1
2017-11-21 21:30:38

it depends


slack1
2017-11-21 21:30:40

You mean for general use?


slack1
2017-11-21 21:31:47

I care if the language is (1) mildly popular, so that it won’t suddenly die on me and I can get some help, (2) has first-class consideration for concurrency and parallelism, (3) has support for FP and OO concepts, (4) has nice off-the-shelf data structures and standard library


slack1
2017-11-21 21:32:35

As a side factor, I want a language to help me on my learning goals


dustin
2017-11-21 21:34:21

Hmm, that sort of sounds like Elixir, Go, or maybe even Rust.


slack1
2017-11-21 21:34:28

Yup!


slack1
2017-11-21 21:34:29

but not Go


slack1
2017-11-21 21:34:40

I have some experience with Go, and I don’t like it


slack1
2017-11-21 21:34:44

It has barely any support for FP


dustin
2017-11-21 21:34:51

Yeah, I have the same preferences.


dustin
2017-11-21 21:34:58

Oh, right.


slack1
2017-11-21 21:35:11

Rob Pike thinks that FP is a bad paradigm


slack1
2017-11-21 21:35:21

He calls it “not machine simple”


slack1
2017-11-21 21:35:28

or not close to how the machine operates


slack1
2017-11-21 21:35:47

So he is resistant to even simple constructs like map


slack1
2017-11-21 21:36:17

How would you assess your current Racket knowledge?


dustin
2017-11-21 21:36:19

That’s interesting.


dustin
2017-11-21 21:36:33

Limited but I know it’s dynamic.


slack1
2017-11-21 21:36:55

You know how to make functions, use them etc?


dustin
2017-11-21 21:37:04

Sometimes I left myself wondering if learning FP would have me lacking in other areas.. maybe not able to appreciate other paradigms.


slack1
2017-11-21 21:37:31

The most essential aspect of computation is studied in algorithms IMO


dustin
2017-11-21 21:37:34

Yeah, I’m aware of how to create functions, but not so much how to implement them in a working program.


slack1
2017-11-21 21:37:43

Which is unfortunate and painful


dustin
2017-11-21 21:37:46

That’s interesting.


dustin
2017-11-21 21:37:52

Ha.


slack1
2017-11-21 21:37:58

algorithms is the abstract study of problems


slack1
2017-11-21 21:38:09

those problems tend to be well-stated CS / math problems involving information storage, retrieval, and computation


slack1
2017-11-21 21:38:22

the language of algorithms is often in an informal, English-like code


slack1
2017-11-21 21:38:28

which shows you how free-form and abstract it is


slack1
2017-11-21 21:38:39

the most limitless programming Language is your lazy English speech!


slack1
2017-11-21 21:38:46

Communicating to yourself the way you think is most obvious!


dustin
2017-11-21 21:39:21

The Eve language looks interesting, but I’m not sure I’m a fan yet of having a program (Photoshop-ish) doing everything… http://witheve.com/


slack1
2017-11-21 21:39:38

So doing things in a FP or OO way, or a procedural way, or wahtever doesn’t really matter


dustin
2017-11-21 21:39:41

Right, I was thinking about the English language when learning Haskell..


slack1
2017-11-21 21:39:50

If you wish to do interesting problems in computation, you cannot avoid the study of algorithms


slack1
2017-11-21 21:40:29

One of the alluring ways that FP people think about data and programs


slack1
2017-11-21 21:40:54

is your program is a function, and you throw inputs, and the output is the desired program result


dustin
2017-11-21 21:41:06

So, maybe you’d be interested in machine learning and neural networks as well. I’ve thought about that a lot, but wondered if I should contribute to the end of mankind lol. (joke)


slack1
2017-11-21 21:41:18

I’m interested in AI


slack1
2017-11-21 21:41:40

but that’s a very distal interest


slack1
2017-11-21 21:41:50

I’m interested in mathematical models of causal learning


dustin
2017-11-21 21:43:28

Yeah, honestly, I got to some of the meat languages, I think, through wanting to know more about how computers work, and that probably lead to CS. But I’ve not yet begun to delve too much into that either, as there’s varying opinions on how to go about it. But I’ll probably stick with the Racket community and go from there. I think it probably has a lot to teach in that realm.


slack1
2017-11-21 21:43:58

Have you heard of Project Euler?


slack1
2017-11-21 21:44:21

dustin
2017-11-21 21:45:12

That’s interesting. Yeah, I’ve enrolled into a few math courses. I’ll have to look more into it.


slack1
2017-11-21 21:47:10

Does that first problem sound hard in Racket


slack1
2017-11-21 21:47:19

Ignoring all mathematical insights that may help make this problem easier


dustin
2017-11-21 21:47:37

I think the only way for me to memorize or appreciate that stuff is to make something with it.


dustin
2017-11-21 21:47:44

Speaking of which…


dustin
2017-11-21 21:48:07

Have you heard of https://p5js.org/


dustin
2017-11-21 21:49:08

I found out about it through https://leanpub.com/codingforvisuallearners


dustin
2017-11-21 21:52:16

I tried learning discrete mathematics but that was way over my head.


dustin
2017-11-21 21:54:25

I would guess, no, it’s not hard in Racket? Only a guess, but I’d imagine Racket can do that easily.


dustin
2017-11-21 21:56:39

Thanks for sharing the link. I’m going to bookmark it and try to do some problems in my spare time. I’d spent a little time at Kahn Academy today.


dustin
2017-11-21 21:58:25

I can’t believe there are 604 problems, that’s amazing.


slack1
2017-11-21 22:05:54

Ah I think of it as a good benchmark for programming ability, that first problem


slack1
2017-11-21 22:06:04

It basically asks you do deal with conditionals and looping


dustin
2017-11-21 22:07:04

What do you think of Mathematica?


slack1
2017-11-21 22:07:16

It’s probably not the right language for you


slack1
2017-11-21 22:07:23

It’s a lab language for universities that are uncomfortable with open source


slack1
2017-11-21 22:07:30

so they’d rather have the proprietary support


slack1
2017-11-21 22:07:34

do you have a free license or something?


dustin
2017-11-21 22:07:40

Ahhh. Got it. Good answer.


dustin
2017-11-21 22:07:45

No.


slack1
2017-11-21 22:08:24

What kind of programming destination are you after


dustin
2017-11-21 22:09:02

See, I already have a web background, so I don’t want to abandon that.


slack1
2017-11-21 22:09:20

Why art thou avoiding JS…


slack1
2017-11-21 22:09:28

That makes 0 sense…


slack1
2017-11-21 22:10:04

JS is such a small programming language


slack1
2017-11-21 22:10:06

It really is


slack1
2017-11-21 22:10:15

I meant it when I said 80–120 constructs


slack1
2017-11-21 22:10:19

which is about the same as Go or C


dustin
2017-11-21 22:10:26

I’m not really. But perhaps I was a bit influenced by how people feel about JS. I can sort of see things in the bigger picture now, but yeah.


slack1
2017-11-21 22:10:31

It’s so small it’s painful


slack1
2017-11-21 22:10:37

like


slack1
2017-11-21 22:10:40

small is easy to learn


slack1
2017-11-21 22:10:42

hard to master


slack1
2017-11-21 22:10:57

The reason is because so many tools you wish someone had built for you weren’t built


slack1
2017-11-21 22:11:06

JS has no standard library, unlike Racket, which has a huge library


slack1
2017-11-21 22:11:10

so does Python


dustin
2017-11-21 22:11:11

Oh and, because I was looking into FP compile-to languages like PureScript and Elm, but even those require some knowledge of JS.


slack1
2017-11-21 22:11:21

aghh those are all crazy stuffs TBH


slack1
2017-11-21 22:11:24

like, job-wise


slack1
2017-11-21 22:11:37

they have almost 0 chance of winning


slack1
2017-11-21 22:11:43

like almost 0 popularity


slack1
2017-11-21 22:12:26

JS is a really fine language


slack1
2017-11-21 22:12:28

it’s minimal


slack1
2017-11-21 22:12:33

If you’ve been learning HTML CSS


slack1
2017-11-21 22:12:35

but not learning JS


slack1
2017-11-21 22:12:38

it’s kind of crazy


slack1
2017-11-21 22:12:45

because JS boosts your HTML CSS powers like 10x


dustin
2017-11-21 22:12:48

Yeah, I realized that when I started looking more into that, but I think it’s improving, only very slowly.


slack1
2017-11-21 22:13:26

What are some things that an aspiring learner might feel bad about learning JS with?


slack1
2017-11-21 22:13:37

Well, JS has extremely limited parallelism


slack1
2017-11-21 22:13:42

It has weak representation of underlying memory


dustin
2017-11-21 22:13:52

Callbacks?


slack1
2017-11-21 22:13:56

callbacks are fine


slack1
2017-11-21 22:14:06

People who complain about callbacks are those who dont’ know how to work with streams


slack1
2017-11-21 22:14:25

plus, JS has some really modern async constructs from the C# land


slack1
2017-11-21 22:14:31

which has since been adopted by Python


slack1
2017-11-21 22:14:44

Callbacks are a local code issue


dustin
2017-11-21 22:14:48

I don’t actually know why, but I have a pretty big interest in JS—or did at one point—but I’m going back in that direction.


slack1
2017-11-21 22:15:01

I would totally recommend it


slack1
2017-11-21 22:15:10

You can do a very fast lightning review of JS pretty easily


dustin
2017-11-21 22:16:06

Have you heard of a static builder called GatsbyJS? It’s based on React and GraphQL. I was highly interested in that at one point; you know what, I think it was tooling that had me back out when I should’ve first learned VanillaJS.


slack1
2017-11-21 22:16:22

You should learn React before you touch Gatsby or GraphQL


slack1
2017-11-21 22:16:32

GraphQL has nothing to do with React, but it works great with React


slack1
2017-11-21 22:16:49

I totally believe in the mission of Gatsby


slack1
2017-11-21 22:16:56

dustin
2017-11-21 22:16:59

Yeah, GraphQL boggled my mind when I tried to understand it.


slack1
2017-11-21 22:17:02

This is a static website I’ve been toying with


slack1
2017-11-21 22:17:15

It’s part of why I believe in static websites with React


slack1
2017-11-21 22:17:27

I think one of the most interrupting moments of web experience is in making a new web request


slack1
2017-11-21 22:17:35

there are physical constraints that make it so your website can never reach someone that fast


slack1
2017-11-21 22:17:47

the only way to break past this is smart http requests


slack1
2017-11-21 22:17:48

with JS


slack1
2017-11-21 22:17:54

so most of the links don’t work


slack1
2017-11-21 22:17:56

but for the top bar


slack1
2017-11-21 22:18:00

you’ll notice that the site loads instantly


dustin
2017-11-21 22:18:07

Is that a Gatsby site?


slack1
2017-11-21 22:18:07

like click settings, or add boomark


slack1
2017-11-21 22:18:20

it’s a React static site, so it could easily be deployed on Gatsby


slack1
2017-11-21 22:18:32

it has the same philosophy and faith in React’s place for a niche of websites


dustin
2017-11-21 22:18:37

Oh, and then there’s Webpack sorcery. That is tough.


slack1
2017-11-21 22:18:43

Yes, webpack is hard


slack1
2017-11-21 22:18:50

But it won’t limit your learning


slack1
2017-11-21 22:18:58

The lack of decent parallelism and memory represntation will


slack1
2017-11-21 22:19:11

The lack of types means you’re not being experienced with a nice typed language


slack1
2017-11-21 22:19:20

Obviously if you landed a job with a language like Rust right away


slack1
2017-11-21 22:19:25

You’d be getting a way different learning experience


slack1
2017-11-21 22:19:31

one which doesn’t neglect concurrency or parallelism at all


slack1
2017-11-21 22:20:10

But React is very much a functional way of organizing apps


slack1
2017-11-21 22:20:25

Which is why I would recommend learning React + Redux together, even though everyone might say that is a little heavy


slack1
2017-11-21 22:20:31

but tons of beginners have walked this pathway


dustin
2017-11-21 22:20:57

Decisions lol. Yeah, I’ll probably follow through with HtDP and Racket. Later, I’m sure I’ll finish what I can learn about JS. Someone told me they learned FP first and JS later. That was probably the strangest paths I’ve heard thus far, but maybe even in the direction I was going.


slack1
2017-11-21 22:21:11

I would ask how much FP they know, though


slack1
2017-11-21 22:21:17

I love FP, I keep on trying to advance my knowledge


slack1
2017-11-21 22:21:27

whenever I meet techy people


slack1
2017-11-21 22:21:32

especially IRL


slack1
2017-11-21 22:21:39

I ask their impressions of FP


slack1
2017-11-21 22:21:43

everyone who has loved FP has disappointed me


slack1
2017-11-21 22:21:58

for one thing


slack1
2017-11-21 22:22:05

the land of FP data structures and algorithms is high lore


dustin
2017-11-21 22:22:13

This person was an advanced Haskeller. You’d be surprised how many Haskell programmers don’t know a thing about JS.


slack1
2017-11-21 22:22:40

I wouldn’t be surprised if advanced haskeller doesn’t work with advanced functional data structures


slack1
2017-11-21 22:22:44

it really is a land of deep lore


slack1
2017-11-21 22:23:02

like the academic literary output in that realm is scant


slack1
2017-11-21 22:23:07

you would think that academia loves FP


slack1
2017-11-21 22:23:09

it does not


dustin
2017-11-21 22:23:09

Yeah, everyone disappoints me. Hah! So many perspectives, but I can appreciate them all and learn.


slack1
2017-11-21 22:23:18

academia loves imperative algorithms


slack1
2017-11-21 22:23:29

99.99% of algorithms studies are non-functional data structures


slack1
2017-11-21 22:23:46

when you read literature on FP data structures


slack1
2017-11-21 22:23:49

sometimes authors leave sad statements


slack1
2017-11-21 22:23:55

about how much some other author’s work helped them


slack1
2017-11-21 22:23:58

but then you think


slack1
2017-11-21 22:24:03

“omg, I know that work, that work is over 10 years old”


slack1
2017-11-21 22:24:08

“This field moves at 1 MPH”


dustin
2017-11-21 22:24:14

That’s why I admire Alexis. She knows Haskell, Racket, built Hackett, and I think, does frontend work with JS and such.


dustin
2017-11-21 22:25:37

But you’re right, the JS community has too much to offer to pass up. I’d better do some work today. Thanks for the discussion.


slack1
2017-11-21 22:25:56

If you want help with JS, I can offer some


slack1
2017-11-21 22:26:02

including how to transport your FP knowledge over to JS


slack1
2017-11-21 22:26:18

But aside from the most simple DRY stuff


slack1
2017-11-21 22:26:21

I haven’t seen interesting FP


slack1
2017-11-21 22:26:38

I tend to practice functional JS just for the aesthetics


dustin
2017-11-21 22:27:15

That’d be great. I think Frontend Masters has a FP JS course, and there’s another one of GitHub if I recall. But I’ll definitely have to get more of your thoughts on certain things when I get stuck! Ha.


slack1
2017-11-21 22:27:23

I also find it odd that FP people would talk about type correctness


slack1
2017-11-21 22:27:32

But one of the most interesting kinds of correctness in a program is, “will it get stuck”


slack1
2017-11-21 22:27:35

“will it freeze”


slack1
2017-11-21 22:27:42

but they don’t talk about that!


slack1
2017-11-21 22:28:06

That is the study of waiting and progress


dustin
2017-11-21 22:28:16

Someone told me the FP community is very tribal, and in that, I would partly agree…


slack1
2017-11-21 22:28:49

I notice you’re walking up some math pathway


dustin
2017-11-21 22:28:53

I think if you cut off everyone’s ideas and efforts, you may be missing out on a lot.


slack1
2017-11-21 22:29:01

perhaps out of some math anxiety


slack1
2017-11-21 22:29:08

discrete math is a great programmer’s catch-all course


slack1
2017-11-21 22:29:14

but when you go into the Haskell channel


slack1
2017-11-21 22:29:25

you no doubt notice a bias for abstract algebra and category theory


slack1
2017-11-21 22:29:28

including with alexis


slack1
2017-11-21 22:29:30

and the people here


dustin
2017-11-21 22:29:47

Oh yeah, I think it makes some people angry.


slack1
2017-11-21 22:29:51

Ok, so I’ve walked up to abstract algebra so far, dipping my toes into category theory, and so far all I see are great applications in MATH


slack1
2017-11-21 22:30:37

And a confident to read technical papers NOT in abstract algebra


slack1
2017-11-21 22:30:41

*confidence


dustin
2017-11-21 22:30:48

The theory part is the most telling. Haha. How can math be theory? But I suppose calculus is somewhat that.


dustin
2017-11-21 22:31:32

If they knew everything, we wouldn’t still be on this forsaken planet. Lol.


slack1
2017-11-21 22:31:47

but I would be wary about thinking that you have to revisit calculus


slack1
2017-11-21 22:31:51

and walk all the way through math again


slack1
2017-11-21 22:32:06

Discrete Math is a great programmer’s catch-all of need-to-know math


slack1
2017-11-21 22:32:20

but yeah see ya


dustin
2017-11-21 22:32:33

Yeah, that’s what most people have told me. I don’t know why I feel like I’m missing out on that, but perhaps later would be more logical and helpful.


dustin
2017-11-21 22:32:37

Later!


ben
2017-11-21 22:33:01

@stamourv or @leif , can you help me run the contract profiler on a plot3d module? https://github.com/racket/gui/issues/86


samth
2017-11-21 22:33:52

@ben I wonder if the issue is threads, somehow


ben
2017-11-21 22:33:52

Clicking & dragging is slow. I want to see what contracts are causing the slowdown (I know the slowdown is because of an (Instance Snip%) type)


ben
2017-11-21 22:36:17

:disappointed: I don’t know where to start looking for thread problems


ben
2017-11-21 22:42:11

okay threads is probably the issue with profiling. Running raco profile .... prints a summary just after the GUI renders. So it’s not profiling anything about clicks & drags


samth
2017-11-21 22:42:52

I think the profiling library has something for threads


ben
2017-11-21 23:15:31

after looking at the docs I tried (profile-thunk (lambda () (send f show #t)) #:threads #true), but this doesn’t seem to profile the GUI thread either


dustin
2017-11-22 00:18:13

Came across this after you mentioned Rob Pike http://users.ece.utexas.edu/~adnan/pike.html


slack1
2017-11-22 00:37:45

A data structure is an algorithm problem well defined ; }


dustin
2017-11-22 03:52:52

Are there plans to make DrRacket more aesthetically pleasing? I’m sure it’s not a priority, but I think it will help Racket’s cause. The logo could probably use an update as well.


dustin
2017-11-22 04:14:28

On a side note, I suppose the default Emacs theme is completely outdated. Perhaps this isn’t important much at all.


notjack
2017-11-22 04:15:50

@dustin there is a way to change drracket’s color scheme with custom plugins


notjack
2017-11-22 04:16:12

but yes I find drracket a little clunky at times


notjack
2017-11-22 04:16:23

I don’t think there’s any specific plans to work on that though


notjack
2017-11-22 04:16:27

too much other stuff to do


dustin
2017-11-22 04:16:39

Yeah, I didn’t realize until today (for some reason) that DrRacket was a complete IDE.


notjack
2017-11-22 04:17:07

it does a lot


notjack
2017-11-22 04:17:16

99% of which I have no idea how to use


notjack
2017-11-22 04:17:33

so, guess that means it really is an IDE


dustin
2017-11-22 04:22:31

Is it recommended after HtDP, moving to http://www.plai.org\|www.plai.org?


notjack
2017-11-22 04:22:56

¯_(ツ)_/¯


notjack
2017-11-22 04:23:13

I don’t think there’s any formal recommendations for next books beyond what’s in htdp itself


dustin
2017-11-22 04:30:40

I came across PLAI before, but came across it again through Andrew Brinker in his course: http://www.proglangs.com\|www.proglangs.com. Seems to cover a lot of stuff.


dustin
2017-11-22 04:31:43

I not sure how many updates it’s received since 2007–2012 but apparently it’s still being used.