FizzBuzz - You Suck at Coding [0]
Vložit
- čas přidán 27. 08. 2020
- FizzBuzz, the classic interview question no one probably asks anymore but I'll show you how to solve it anyway with vim and haskell.
#fizzbuzz #vim #haskell
----
Checkout my side projects:
If you're into cooking: www.mysaffronapp.com/
----
Join the Discord: / discord
----
Patreon: / benawad
----
Follow Me Online Here:
Twitter: / benawad
Twitch: / benawad
Medium: / benawad
GitHub: github.com/benawad
Facebook: / benawad97
LinkedIn: / benawad
Instagram: / benawad97
TikTok: / benawad
----
Follow me online: voidpet.com/benawad
#benawad - Věda a technologie
Imagine an absolute beginner seeing this video
That's me.
I have some questions....... actually a lot of questions.......😐
Did this guy just wrote ans printed everthing instead of using loops and of condition......what the hell....am i stupid or this went over my head
@@adnankazi8845 That was just a VIM flex guide
@@nnchnl111 ohh thanks man ❣️
I think the interviewer is taking his socks off to make a noose.
Lmfaoooo.
Hahahahaha
Hahaha so true
those are some really stretchy socks
LMAO
I can't believe I've watched this madman's video until the end.
I wanted to like your comment but then I saw you have 666 like and it's beautiful!
he is class
is he really the madman if you watched it till the end? ;) :D
I can't believe his view count dropped ! that only happens when you pay for views! so therefore, he's a scam literally. what a joke !
When the interviewer gets mad you're using macros, just let them know automation is the future and they'll quickly change their minds
Does that append often ? i didn’t think dev would be against macros
@@BicheTordue there's a lot of dev out there against anything they don't know
@@BicheTordue Depends on the language, because the way each language handles them is likely going to be different. In a language like C++, especially modern C++, it's going to be heavily frowned upon for a few reasons:
- Macros don't respect namespaces, which means they can overwrite things that you might not want them to. A common counter practice is using uncommon, often ugly naming conventions to reduce chances of name clashes.
- Macros do dumb search + replace, which can introduce hidden side effects depending on the structure of the macro. Such side effects include rapid ballooning of code size (think min/max macros), hidden esoteric syntax use that breaks in some situations, doesn't tell you when name clashes happen unless it breaks syntax conformity.
- Macros don't restrict the types of syntax use they can hide, so in order to figure out what a certain complex macro can do you often have to substitute it into the code by hand.
- Editors like Visual Studio don't handle macros very well. The macro definitions don't get syntax highlighting or intellisense because there is no sensible way to do it. Visual Studio also fails to report errors in the correct places for more complex interconnected macro structures.
- Most of the things you can do with macros can also be done with newer modern C++ features. These new features may often be esoteric or ugly, but they don't have any of the draw backs listed above because they have first class support and have been carefully and meticulously combed over and ironed out by a committee. Some of the few remaining things you cannot do with standard C++ syntax to my knowledge are: stringification of code, implicitly capturing types of values up the stack without explicitly initializing it by hand.
Here's an example of how the previous macro technique can be used for something like reflection: making a lambda with a macro in a member function and capturing the type of the parent class with 'decltype(*this)', useful for computing member offsets and storing statically
#define Bind_Member(member) #member, [] () -> int { decltype(this) base = nullptr; return int(&base->member); }
MemberRegistry { Bind_Member(memberName) }; // makes a 'MemberRegistry' instance with initialization list '{ "memberName", memberName offset computing lambda }'
In an ideal world standard C++ syntax would be able to do everything that preprocessor macros can.
Edit: looking through the comment section more I'm realizing that people are talking more about editor macros. I'd say the first two points still apply a lot depending on how you can twist them. Before you make large, sweeping changes to a code base with automation you should really make sure that you know 100% exactly what it is that you are doing, and everything that can go wrong. It's super easy to nuke a code base by not being careful with automation tools.
@@mettaursp309 not that kind of macros
@@vanjazed7021 Yep, I threw an edit on my post a while ago that clarified that mistake.
That prayer should be added to official Haskell liturgy. Well done.
I am assuming liturgy in simple words is docs
I second this motion
@@chizuru1999 actually it's a religious thing and a lot more complicated...
ackshually one pays respect to the computational trinity by saying "in the name of Sigma (1.) , Pi (2.) and Lambda (3.) homoousion amen. "
1. being, Father
2. universal quantification, Son
3. computation, movement, Holy Spirit
"I'm going to write fizzbuzz in haskell" *writers Fizzbuzz in vim.
Story Feet to be fair he did define a real Haskell function
@sundaran 1122 He is a sane person and not a virgin*
FTFY
@sundaran 1122 does it freeze and shit itself like vim does especially when in ssh?
@sundaran 1122 oh yes, my computer, my laptop, company computer, etc. TIL: Vim is more demanding than Battlefront 2 and BF5
@sundaran 1122 ssh into fresh ubuntu install on digitalocean :)
And in my past experiences on a local machine, a computer that can run the latest and greatest and render heavy loads and host several VMs can't run freshly installed Vim. It's almost as if Vim is a heaping pile of trash. And also you'll find that the #1 question about Vim, far far more popular than other questions, is "how do I exit vim?".
I pity Vim users like I pity Atom IDE users. Atomheads try to sell me the idea that their bloated pile of dog vomit is efficient and cool. Mmm who doesn't love microstutters every second and minute long executions of code mm.
But hey, if it works for you, cool, just don't be religious about it.
since Haskell is such a high level language, it actually compiles your O(n) algorithm to O(1)
Honestly, that makes sense and it's a logical optimization. All the strings in the list are constant, the separator is constant, and the base case for the join function is just one of its parameters. Therefore, there's nothing that can go wrong with evaluating that at compile time. Damn.
@@DanCojocaru2000 but a lot goes wrong before you even get to compile
It’s just lazy
How do I install vim on whiteboard? plz help
Look for colon e behind the whiteboard.
npm install vim-whiteboard
You just write down your keypresses and the internal Vim editor built into the interviewer's head will parse it and create the solution in his head.
How do I exit the vim whiteboard? I’m trapped
@@markhaus you have to write EscEscEscEsc:q and then the witheboard should dissapear
I see that Ben is trying to farm some karma on r/programminghorror.
i read that as r/programminghumor
@@Kairos26 Me too!
@@Kairos26 my god i didnt realise it wasnt that till u said it
@@Kairos26 same thing
more like he's farming views from bots. cause I just watched the view count drop. unsubscribed. what a shame. I thought the dude was alright til I noticed he paid for all these views LOL
He really done memorized that prayer 😂
I think the complexity is actually O(human) which is often quite slow, which can be seen in this video.
Yeah, but when you run the code on a computer the complexity is O(1)
@@oscwavcommentaccount but before that human has to write that code :P
@@blasttrash The human always has to write the code.
@@benjaminrood1648 the human time is negligible. the sorting algorithm that you write might be used by your team. if you package it as npm or gradle or maven etc then it will be used by millions. the puny 1 month of time that you spent is negligible compared to that. Not to mention, there are spiders, crawlers, bots that might visit your website and run your code etc. that adds time up very quickly
@@blasttrash lol you cannot be taking this video or my reply seriously
I have nothing else to lose might as well try this for my next interview.
"Losing all hope was freedom."
Did you land a job? xD With this approach? Did you actually try it?
Not gonna lie, i would be kinda impressed by that in a coding interview
Me too. The program contains very little complexity and is easy to adjust with special cases.
If you're looking for someone who is able to run macros, with repeated mistakes and crashes, then yeah I guess this is the perfect demonstration of that skill.
Except for all the times he forgets to end the macro. -100 points for that nonsense
@@LongBoy.0 He needed to make the video longer then 10 minutes
@@insertoyouroemail That program is the opposite of "easy to adjust." Want to adjust actual FizzBuzz? Change the argument.
Want to change this version? Manually add all the new lines.
Reusable code is good code. This is just a goof.
Dan won't notice if we call it "that one framework"
I ❤️ Ng
Angular. There. I said it
The framework that must not be named
It's amazing how these "software engineers" are so self-biased and arrogant in their views they have to preach to others on how to enjoy humor. Twitter really is a giant echo chamber. Maybe they should spend more time actually writing code than preaching.
Yeah bois
My trap card doing too much damage to the interviewer is exactly why I’ve failed all my interviews
totally...
I lost it when he spotlight 100 divided by 5 🤣🤣
this is at the same level as a guy with a good typing speed just typing the first 100 fizz buzz
For a moment I thought this was going to be a serious video. So I solved the problem myself before watching just to return to this masterpiece.
That is honestly adorable xD
Remember... If your array elements touch the side it causes friction which slows down the code and, in the worst cases, can cause the elements to heat up. Most expert coders only ever use the even numbered indices as this prevents the elements from rubbing.
If your array elements touch the side it's gay
Haskell is so high level it doesn't like your array to touch the side here
I went into tears XD
makes a haskell prayer and then goes along using it for printing strings in vim macros
This kid's hilarious, why are people downvoting him.
Because they're probably Angular sheep
@@cervixcrusader85 says the react sheep 😂
The people downvoting him are probably the interviewers.
Also, I would use React over Angular any day. And I have used both, and Vue for that matter.
because he is using vim? why woul anyone do this. I mean he knows the macro's/shortkeys and he is still slower than using a regular editor
"I'm doing 1000 calculations in my head per second and they're ALL WRONG!"
Did he just say "Bulbasaur" when listing languages? Lol
Probably referring to this joke: www.reddit.com/r/ProgrammerHumor/comments/6llocd/my_linkedin_profile/
This is that one video that demotivates you so much, you start questioning your career choices. I don't think I will have this level of mastery with 25+ more years experience.
Just learn vim for like 1 week and you’re good
Can we get the story behind your sister being called Fizz Buzz?
Please
It's the sound made while her many lovers pork her simultaneously.
Lonny Bulldozer - I REALLY shouldn’t be laughing this much 🤣
"everyone does her as part of a standard coding interview"
The programming hype and meme digs go deep in this one Ben. As a fan of FP and a vim user, you got me good, real good. Salute!
"Haskell is so high level that they" insert anything
I wasn't expecting this XD
I laughed my socks off
If I were an interviewer I'd be impressed with those vim skills.
I wouldn't call them skills...
As a heavy vim user, I'd say it was okay at best. A lot of things would've been much simpler if he had just used a :s command. Eg `:13,s/.*/\\&\\\
/` would add all of the backslashes and newline characters he needed
If I was interviewing this guy I would have kicked him out for trying to be cute but a) screwing it up and b) having to use a calculator to divide 100 by 5. And for bonus points, thinking than VIM is impressive. Want to succeed at interviews? Don't be a dick.
@@TheMonk72 and I would kick you out because I can't understand your first sentence
He used 0C instead of cc. And didn't know he can cancel the 322 input with Escape. But then again you just can't know all the Vim features.
I can’t believe how entertaining and informative that was. Well done!
I love how you've combined 2 of my favorite things: coding, and You Suck At Cooking. Well done sir
This is a video I watch in bed and then accidentally drop the phone onto my face, but I just leave it there. God bless
"...is to show off how smart you are"
Haskell couldn't NOT come up 🤣
Your interview question videos kill me everytime.
I feel like joking about them actually makes them easier to learn.
“Like Wacka Flocka Flame, we are doing this with no hands” 😂😂
Might hit you hard, but it's still 0(1) 😉your length is always 100. Your algorithm has no inputs. Hence it's still O(1)
Technically it's still 0(n)
@@championofwits4621 It can't be O(n) when there is no n ¯\_(ツ)_/¯
BTW Haskell is SUCH *POWERFUL* programming language that it rewrites the second version to be the first one for you
@@h7x4 behold my power to solve TSP in 0(1) .
1) step one go on chrome find answer for problem
2) step 2 copy
3) step 3 print ()
@@scottguest2240 Nah, if the algorith was to traverse s list of 100 elements 100 times it would still be O(1). It is in the very definition of O(f) notation - a class of all functions bounded from above by k*f for some number k, from a certain point to the infinity.
If the algorith runs in a constant time (because it's defined with constant input) you can bounded it by e.g. f(t)=1year and no matter the input, it won't exceed this limit.
I love this so much, the purest form of the menacing Vim + Haskell energy I can only hope I'll one day achieve
Great video, educating and entertaining, and more than that, it's in Haskell, would love to see more of Haskell
„and there’s a lot of good one’s out there, there’s PHP”
PHP is beautiful....... If it had better Windows supp for dev and if it was faster
@@vwnb php also has such wonderful features as:
- unintuitive function names - parse_str() instead of something along the lines of parse_query(), parse_query_str(), or even just parse_qstr()
- inconsistent names among related functions - gettype() vs get_class(), htmlentities() vs html_entity_encode(), etc
- ...non-transitive equality (yikes) (a = b and b = c does not always mean that a = c)
- ...circular comparison????? (*yikes*) (it is possible for a < b, b < c, c < a to all be true with the same values of a, b, and c)
- and as a side effect of circular comparison, there's the lovely feature that sorting a list with sort() will in some cases, not actually return a sorted list. isn't that fun!
_and more_
type safety and decent performance, a good language do not make. php is a trainwreck.
@@SkylearJ see my other comment
Oh dude really enjoyed this
This was very helpful. Thanks for this video!
i just searched for this video 2 years later because it still lives in my nightmares
We learned vim macros are hard
"...In the name of filter, map, and reduce-Amen" I have laugh out loud in a while, subbed.
You got me at, "Haskell's such a high level language that you.."
Love your humor! ❤️ Keep it up
That One JavaScript Framework. Voldemort of JS Frameworks.
? Haskell is not a js framework
This was just a really hard vim flex, LOL. Hilarious.
Okay this is officially the best video this year, that prayer was gold 🥇
I was given the fizzbuzz question during an interview for a placement, I think it's a good indication of the person's understanding of programming principles because there's many ways you can complete the challenge
😂Bro' this was sooooo funny!! I laughed my ass off! 😂
Awesome video!
10 out of 10 highly recommend
This was hilarious and you are a legend. Keep up the great work my dude.
thank you for making this video i was having a hella mood swing so I couldn't watch any videos on youtube that would make me too sad and emotional and this was perfect
The running joke on angular is just too good 😂😂😂
I literally watched the whole thing
I was expecting to be blown away by some legit amazing code but instead i got a good laugh out of it. Good shit yo.
You got new subscriber with just Vim magic love that part
One more tip is to bring a spare pair of socks and offer them to the interviewer. I like to get custom ones printed with a QR code to my Linked In page.
😂😂😂
Extremely disappointing that you didn't use the list monad instance for join, and wrote a function which would clash if you imported Control.Monad. Unbased :(
also could've used $ instead of paren 😔
Also, he should have really used Text instead of String.
not what I expected, it is much better
thank you for making me know how to do those amazing macros in vim
now I am starting to know why many love vim
this is one of my new favorite videos
1:18 extremely disappointed you did a Christian cross and not a >>=
Haven't understood a thing happened here. But still like it 🌟
I love this video, good job man.
This has got to be your greatest video yet
that prayer was spot on 😂😂
I foresee the interviewer will start to put on their socks right about the time you crash your editor... 😂
This is the most extra thing I have seen in a while.
coding with macros in the interview will pull your interviewer socks off.
While I acknowledge the wisdom of the vim gods, me being a mortal in VSCode I'd do it like:
1. Ctrl+Shift+End to select to bottom
2. Alt+Shift+i to split cursor into multiline
3. Home to go to start of line and write the character you want \ or " or whatever
4. End to go to end then write the characters you want for example
\ or " or ,
5. Press esc to go back to normal cursor
I would open google spread sheet hahahaha generate the numbers and paste to vscode. STONKS
I was waiting for the usual Angular roast, but it didn't come. Great video anyways :D
Your delivery is so good
"This cursed programing tutorial will trigger you"
Ben, why in the world is your sister called FizzBuzz?
😂😂
She’s divisible by 15
Because she’s easy
This really surprised me and I found it absolutely hilarious 😂
Great job figuring all of that out and lmao O(god)
😂😂 Okay! You've won 2021! This is brilliant!
memes aside, I appreciate the fact that Ben has actually memorized the Haskell Prayer
Didn't know Spotlight Search auto-performs math in Calc app. Thx.
I think spotlight can also do it, but he is using Alfred
We need a whole channel dedicated to explain Ben's videos
Haha, thank you for the video, made my day!
This is what engineering means 😁
All of your brackets were unnecessary, the pair in join literally does nothing, and the pair in main should rather be a dollar sign
I decided to do FizzBuzz myself without ever seeing a solution or doing it before, after a couple days of learning C# and I was able to implement it successfully within 15 minutes on my first ever attempt/execution of code.
Definitely helped me feel good about my future with software engineering (soon to be student).
THIS is why all devs should learn Vim. Look at how much time Ben saved using vim!
0:44 I felt his breathing in my ears on my headphones
This is the content that I crave
Wow I never thought anyone would do a Fizz Buzz without logic... until NOW!!! 🤯🔥🎆
Oh no, Ben has descended into madness from doing too much haskell
No, this is not madness.
THIS
IS
HASKELL
🦵
This was so LEGENDARY!
This is mesmerising
I subscribed immediately it got to the Haskell prayer. This is gold
Imma chant that prayer before every single interview I take. Word.
I'm watching this video, and having interview later ... this is hilarious
Instead of 0C, you could use cc, or even just S. Also, for writing 1 to 100, you could copy 0 on 100 lines, select them all, then press g. You could've used more of the visual block mode as well, where pressing I and A allows to insert and append to every line. Also, might as well write a vimscript to write the program for you :p
This was incredibly enjoyable.
Mad programming skills AND a fire Waka Flocka Flame reference. Those socks don't stand a chance! 🔥
"This is actually O(1)"
now that you mention it, that's a pretty good point
"So let's make it O(n)"
wait wha-
Thank you, absolutely nailed my interview!