Originally taken from https://fosstodon.org/@squidfunk/111989558536475772.
Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!
Cross posting is strongly encouraged in the instance. If you feel your post or another person’s post makes sense in another community cross post into it.
Hope you enjoy the instance!
Follow the wormhole through a path of communities !webdev@programming.dev
If anyone hasn’t made the connection, mxcl is the infamous Google interview binary tree guy
I remember that from ages ago. It was very, very cringe-worthy. I think it’s the fault of whatever shit bootcamp he attended to learn his ‘craft’ for using imperative languages to teach DSA, if they taught him DSA at all? That is why in real universities they mostly teach DSA with functional languages. I studied ‘programming’ (not CS, ‘programming’) in a college which by American standards would be considered ‘junior’, for 3 semesters, and they, too, did not touch on functional languages. It was not until I had dropped out that I learned how to do FP using SML, Ocaml, Haskell, Scheme etc. That was when I ‘understood’ DSA for real.
Truly, this person is an embarrassment. I am currently working on an implementation of Appel et al’s ASDL (github.com/Chubek/ZephyrASDL, check the new_version branch!) and it now emits decent C code, so it is time to write the man page (it currently has a sucky one) and the TextInfo. I COULD potentially have ChatGPT make both, it is very decent at doing so. But see, I am not a moron. So I use write them in Markdown and have Pandoc make the final markups.
Truth is, if you know your tools, if you know how to use a DSL-driven approach to programming, you won’t need to use AI to generate your code. You don’t need to go to Harvard to know DSA, neither a junior college like mine. Just grab CSLR and read it on your spare time!
I think this person is the guy behind Homebrew. I don’t know why he thought Homebrew is an accomplishment that would give him immunity from knowing basic DSA — which in real world, is what programming is about. Package managers have existed since the dawn of time. Linux has like dozens of package managers. His package manager being ‘unique’ on MacOS does not mean it’s an accomplishment, it means MacOS sucks cocks!
Basically, when you start a project, think: can I turn this project into a paper? If you can’t, then it’s worthless. He could have just strapped Pacman to be built on MacOS and called it a day!
These days, employers are looking for people with theoretical, constitutional knowledge. Any monkey can code. I let ChatGPT aid me with a lot of my C code, it’s very decent at generating C. Like I need a Makefile, it makes it for me. I need a print help function, it makes it for me. There’s nothing wrong with using AI to ‘help’ you, but don’t use it in vital shit!
But, if the code that AI generates is as good as the vital backbones of your software, maybe save up some money and go to college if you haven’t, a 2-year degree at a junior college will be good. I am going back to college next year and I am 31! There’s nothing wrong with being an old student.
Just don’t expect people to suck your dick when you don’t know how recursion works!
What’s DSA ?
It’s a term that generally refers to the more ‘mathematical’ side of programming, as opposed to the more ‘practical’ side of things. I believe it means ‘Data Structures and Algorithm’ so its a generalization of ‘meaty’ programming. Think, someone who writes shell scripts does not need ‘DSA’ to oil his grind, but someone needing to write a compiler does.
Now we live at an age where you can generate a shell script with a simple prompt, and hell, you could piece-meal a compiler, but it’s not as straightforward. If one wishes to make moola in the post-LLM world, one needs to have strong theoretical and constitutional foundation.
At this point, any employer who hires more than 1 person for the ‘simple tasks’ is doing charity. And charity ain’t what employers known for!
That is not to say, don’t use AI in your work. I believe AI is the BEST way to learn DSA. In fact I straightened a lot of my misconceptions using ChatGPT. Like, I have written 2 compilers and abandoned them because I never meant to finish them, it was an excuse to prompt ChatGPT with more complex requests and do some reckon on my knowledge. I managed to do ‘basic’ SSA with ChatGPT, and anyone who has read a compiler book or taken a class knows SSA is not easy. I generated the SSA, and confirmed with the SSA book that I had. IT was very decent. But ther SSA book was very ‘crude’ and ChatGPT’s example was really, well, ‘uncrude’? So it was a GIANT help in me understanding SSA.
So if you need to learn DSA, I can recommend these three steps:
1- Learn a functional language or LISP-like language, Scheme, Racket, OCaml, SML, Haskell, etc. These langauges are extremely fluid and scientific.
2- Read books. Just go on Libgen or Zlibrary and read books. I recommended SIpser’s above (or was it in another post?) but there’s dozens. I remember a book called “Grokking Algorithms” which was really good. I read this book when I was sick with Covid, Steven Skiena’s “The Algoritmh Design Manual” and it seems like everyone just LOVES this book. I mean it, try it, it’s the best. If you can, buy it, because it’s very precious. Also, keep a copy of CSLR/CLSR or whatever as a reference on your desk, PC everywhere.
3- Piece-meal ChatGPT into designing you a complex application. It really helps if you got an aim. One thing I recommend is Genealogy software. Make a Genealogy DSL perhaps. Or a simple compiler.
My advice may not be sound, but some aspects of these were helpful for me.
Thanks for the advice. I was already pretty sure that learning DSA would take my programing to the next level, my previous algorithms have been thoughtful but could definitely be improved.
I’ve done some haskell for school, I must say the quick sort was quite impressive and the language itself was interesting. Lisp on the other hand seems really crazy ; I’ve done some for my emacs config but the things I’m reading from the sources are from another world, I’ll read the elisp introduction some day and maybe I’ll become one of those magicians lol
I don’t really use AI but I could ask for some advice on my next school project I guess. Do you ask it for straight up code or a more global archetecture ?
I give it half-baked code and ask it to complete it. Like say a few days ago, I wanted to implement NFA and Thompson Consturction. So I wrote this:
This is how you get good results from it. Do half the work.
What happened there?
Maybe this? https://www.quora.com/Whats-the-logic-behind-Google-rejecting-Max-Howell-the-author-of-Homebrew-for-not-being-able-to-invert-a-binary-tree (his own version of what happened)
He had an interview with Google and they asked him to invert a binary tree, which is essentially taking a tree of data and swapping the positions of all sibling nodes.
While most people agreed it was a pretty pointless question to ask at an interview, mxcl had a full “don’t you know who I am” shit fit on social media.
“They don’t matter to our mission and honestly we’re a little confused about this reaction.”
How? How are you confused? You have been misrepresenting peoples project. It’s mind boggling. I’m more than a little confused about your confusion.
The replies are AI generated too lmao 💀💀
And then the replies to the reporter are also AI-generated!
Github is going to hell lol
That was the best part, it was like no humans were in the building for a bit there.
There was a human reply at the end:
Can’t say I hugely love that reaction from the dev
There’s so much pkg that all I could thinkg about in those first 2 sentences was the old “Yo dawg, i heard you like” meme
The dosubot also downvoted its own first post in that thread lmao
I assume that’s so others can more easily downvote it. This was common on discord bots too, it’s just an easy select menu.
brew is homebrew, right?
I didn’t like how homebrew was managed, and apparently they are going down fast.
It’s better now. No more bottles and kegs. This time it’s barrels, vintages and terroirs.
Terrors, what an appropriate term! /s