Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
Get a devDuck
Rubber duck debugging has never been so cute! Get your favorite coding language devDuckBuy Now
Search - "category theory"
I've found sites like Udemy/Khanacademy/Codecademy/Brilliant/Edx to be very useful — possibly more useful than expensive education.
But they still need:
1. Better correction/update mechanisms. Human teachers make mistakes and material gets outdated, and while online teachers are rectified faster than classroom teachers, the procedure is still not optimal. Knowledge should be a bit more like a verified wiki.
2. Some have great interactive coding environments, some have great videos, some have awesome texts, some have helpful communities. None has it all. In the end, I don't want to learn a new language by writing code in my browser. It could all be integrated/synced to the point where IDEs have plugins which are synced to online videos, with tests and exercises built in, up to a social network where you could send snippets for review and add reviews to other people's code.
3. Accreditation. Some platforms offer this against payment, but I think those platforms often feel very old school (pun intended), with fixed schedules, marks and enrollments. Self paced is a must.
4. Depth is important. Current online courses are often a bit introductory. We need more advanced courses about algorithms, theoretical computer science, code design, relational algebra, category theory, etc. I get that it's about supply/demand, but we will eventually need to have those topics covered.
I do believe that for CS, full online education will eventually win from the classroom — it's still in its infancy, but has more potential to grow into correct, modern education.10
Ever have a feeling that there is so many interesting stuff out there - Angular, React.js, TypeScript, Rust, ELM, FRP, Machine Learning, Neuronal Networks, Robotics, Category theory... But no way to ever figure out what are all those about? And there is too little time to even get a good grasp of any single one of those. IT seems to be like hydra - one learns one thing and 10 new concepts pop up in the meantime.4
One of the biggest barriers to the wide(r) scale adoption of functional programming languages like Haskell, F#, and Scala is how snooty and condescending your average FP developer is. And beginner-unfriendly.
Ask them a question about an intermediate topic (in my case, the Free monad) you're likely to get a whole torrent of category theoretic rubbish in return.
This is a common pattern I see when "experts" answer questions.
Now, it didn't bother me much because I've studied a fair amount of category theory and can usually follow such answers, but, for the sake of the general case, I'd like to shove these rules into the heads of everyone writing an answer to a question (not just FP):
1. If you can't illustrate a concept clearly without going into verbal diarrhoea with phrases like "monad homomorphism" and "just a monoid in the category of endofunctors" then you clearly haven't understood it properly (unless, of course, the answer absolutely requires it). An answer is not the place to show off your knowledge of a topic.
2. Please remember that everyone was a beginner at some point. Including you. Understand that some concepts can be extremely frustrating at first and yet incredibly simple after you grok them (eg. monads).
3. If the person asking the question is a beginner, using complex concepts in an answer just because it's a more "elegant" way to explain it doesn't really help them. They are more likely to get confused and drop the topic.
(Kudos to those people who give highly relevant, insightful, simple, and intuitive answers, you guys are the best).2
This belongs to the small bunch of things that makes me feel that life is beautiful.
For a pretty long time, I wanted to learn Haskell, and recently I really fell in love with the category theory. Now how exciting is that when you found that you can learn them both?
I just started it, and I guess it's a pleasure for any programmer who doesn't whine about math. It's free to read:
Or to build 😉
I will never work on something interesting within a company, it's always going to be either making a site for donuts or some recommendation system type of capitalistic bullshit.
Maybe, I could become a PM and do category theory at work instead of drinking coffee at the balcony1
I prefer starting from theory and then proceed with practicing. For example, to learn haskell and deeply understand it, I started by taking a course in category theory and I already have a degree in computer science and then start writing actual code. The same with JS. I started with theory for JIT compilers and studied how V8 works, how it utilizes event loops and how they are implemented in the kernel. Then I started experimenting with code and demos. It's a success path for me, that has worked every time with every new technology.2
Anyone interested to see mine and my wife’s culture & technology crossover performance/arts/music project?
The name is UDAGANuniverse. Udagan in Sakha (northeast Siberia) language toughly translates to ‘she shaman’. I met my wife while she was touring in Europe with a traditional Sakha group (I was touring Celtic trad music that time).
The project is incorporating all our interests, artforms and professional skills under a shamanistic aesthetic. Functional Programming, Live Coding and Machine Learning play a big part in my input and live performance role.
First episode of our newly launched podcast:
My personal articles — arts based and touching on functional programming + category theory:
I’ll be posting new articles more specifically on Coding and ML in performance in the next weeks.
If you’d like to see a little personal backstory (how we came to fuse performance with code/ML) check out this rant here:
Hope that you enjoy and please let us know any comments or feedback!3
Oh my gosh, no one really knows here what is programming. Even teachers, which claim to be professionals in the subject doesn't know shit except for the basic theory. Nothing in practice.
It was evidenced by the largest job skill competition of Finland (Taitaja) that's for my-aged students (18). And yeah it's not higher education studies, just second degree, but that's where you should get the necessary practical skills for your work life.
The category I participated was website development, which is the only software development category.
It was a public event that is focused on showcasing different jobs. Well, what do programmers do, a viewer may ask. Even the responsible teachers and juries couldn't really answer properly. They just showed the specs we were following to create the crappiest of websites the short period of development time.
So we consume coffee and produce HTML, is that accurate representation of the whole industry?
All the other winners of different categories get a lot of job offers from companies when they win. I won gold last year (bronze this year) and I didn't get a single offer. Who would be interested in human HTML generator who can only make static websites anyway?
Programming is about problem-solving, not about graphic design and writing content.
And just to give you an idea the scale of the competition: last year I made a total of ~2000€ for the victory. And it is super easy if you just know what you are doing. That being graphic design and the making of a static page with a pinch of functionality.1