After a long coming, and many months of work behind the scenes, I have finally made my functional programming lectures from this summer at CMU available for free online. I truly hope it helps people.
https://t.co/KI6sulwx3K
I rarely post nowadays, but I just wrote a blog post on my experiences teaching functional programming a few summers ago. I hope you find it meaningful. https://t.co/X36FC5W2xk
I’m proud to announce that 15-150 is now available on Semgrep Academy, along with a wealth of amazing security courses, all free for the public. Be sure to check it out to see all the amazing things Tanya has put together!
Today is the launch of @Semgrep Academy! Free courses on #AppSec, Secure Coding, #API Security, Functional Programming, and MORE! Please go check it out here:
https://t.co/wwkpXzXxQL
What started as an April Fools joke turned into a great demo of Semgrep’s extensibility and scalability when it comes to adding support for new languages.
Check out more about our GA support for CodeQL’s query language in @onefiftyman’s blog post:
https://t.co/jARqn6Qg8N
@Andevrs@yawaramin I wouldnt say this is true, I have almost exclusively been employed to write OCaml (even for my first job out of undergrad). The point is it could have been OCaml, it could have been Typescript, Python. People fixate far too much on the language when its skills that matter.
💕 Happy Valentine’s Day from Semgrep! Here’s a peek at some of the Valentine’s created for our team by the talented Brandon Wu—great for some last minute inspo if you are scrambling for a card! #valentinesday#appsechumor
You can take me out of the classroom, but not the classroom out of me. Excited to share my first supplemental lecture for 150, on going from SML to OCaml!
https://t.co/DUGkHtkbTc
I know I am far from the first person to say this, but I think it's clear the only reason people think FP is harder than imperative/OOP is because they encounter it later.
So they've just about managed to get their head around the horrors of memory management, mutable data types, class design/inheritance, field access modifiers, remembering which things can be null and which can't, etc etc etc, all using compilers that do the bare minimum to help you with any of this... and now you want to talk to them about a whole new paradigm that uses "mathematical principles" you say? nah bro pls i'm so exhausted
broke: `List.interleave : 'a list * 'b list -> ('a, 'b) either list`
woke:
```
datatype ('a, 'b) cycle = Nil | Cons of 'a * ('b, 'a) cycle
```
`List.interleave : 'a list * 'b list -> ('a, 'b) cycle`
A fun example of opaque behavior due to a lack of referential transparency is in the Typescript type-checker -- if we have that `const x = a.b`, it is not true that `a.b` is interchangeable with `x`, in terms of producing a well-typed program, which is unintuitive.