# Udemy St. Patrick’s Day Sale 🍀

March 13, 2019

### Do beer and AI go together?

For the next week, all my Deep Learning and AI courses are available for just $11.99! ($1.00 less than the current sale, woohoo!)

For my courses, please use the coupons below (included in the links), or if you want, enter the coupon code: MAR2019.

For prerequisite courses (math, stats, Python programming) and all other courses, follow the links at the bottom for sales of up to 90% off!

Since ALL courses on Udemy on sale, if you want any course not listed here, just click the general (site-wide) link, and search for courses from that page.

https://www.udemy.com/support-vector-machines-in-python/?couponCode=MAR2019

https://www.udemy.com/recommender-systems/?couponCode=MAR2019

### I am not your tutor

If you have some math question or some programming question that is about something being taught in the course, I will guide you on how you can discover the answer yourself or uncover what you did wrong, and where the mistake was in your thinking.

I will not derive anything for you on the spot.

I will not write any code for you and show you how it’s done.

I will not go through each line step by step with you, or get to know you well enough to understand why your thinking went wrong.

I will not engage in a back and forth about some math / programming topic until you get it.

I previously offered 1-on-1 services where you could ask me questions like that, and I would work with you personally on precisely these things.

That would be an appropriate avenue to expect that level of assistance.

Unfortunately, I no longer offer such services.

There are many out there that do.

So if you want help with calculus, seek a calculus tutor. If you want help with linear algebra, seek a linear algebra tutor. Programming? Seek a programming tutor.

I will point you in the right direction (i.e. look up this rule, read about how to derive X), but I will not take you through a step-by-step process on the Q&A.

A lot of the time, it’s just basic algebra, so there is no exact “rule” I can point you to. The only thing I can say is “fix your algebra”. I can’t pick apart your brain and figure out exactly which algebra rule you’re getting wrong.

Again – you are buying a course – not a tutor.

### Help, I got an error!

This is a nearly useless thing to say when you are asking a question.

Remember that you have video proof that everything works (I didn’t just show you one script and run some other script demonstrating a fake result – that would be idiotic and clearly providing code that doesn’t work for anyone would be immediately problematic).

Something may truly be wrong (e.g. a new version made breaking changes).

But if you don’t tell me what went wrong, I can’t help you.

Saying “I got an error” is not specific enough for me to help you.

Sometimes students get errors because they made a typo (more on that later). How can I predict whether you made a typo or not?

If you get an error, you have to tell me what that error is and provide a stacktrace.

### The #1 source of student error

This is related to the above.

I will say again that you have video proof that everything works (at least for the versions of the libraries that were current at the time the lecture was made, on the platform I ran the code on).

What is typically the cause of “errors”?

99% of the time, it is due to the student copying something incorrectly.

Many of these times, I will even state this outright and ask the student to double check whether or not they made any typos.

Their response is usually to promise that they are certain they did not make any typos.

Usually, I have to ask once or twice more for them to realize that yes, in fact, they did make a typo.

Why do you do this?

If I suggest something, why not just trust my years of experience of dealing with this kind of thing, instead of putting yourself through the same mistakes many before you have already made?

Sometimes, I will ask you to cross-reference with the working code because I know for a fact that you made a typo.

I will provide no further guidance.

If you don’t listen to me, that’s your responsibility, not mine.

Unbelievably, sometimes I will do a quick run of the code using the latest version of every library on all major platforms (Windows, Mac, and Linux), to demonstrate to the student that the code works, and they still don’t believe they made a typo.

Do you seriously believe that my versions of Windows / Mac / Linux are somehow special and that it could not possibly be something wrong on your machine?

Sidenote: another common source of error is that students are not using the latest version of the code on Github. Things in this field change fast. At one point, new Tensorflow versions were being released monthly with breaking changes.

It doesn’t make any sense to make all new lectures for every little change. I will update the code on Github, but the major points of the lecture usually haven’t changed so dramatically that it would warrant creating an entirely new lecture.

If you check the latest code on Github, that is very likely to resolve your issue. (Not applicable to courses with Colab Notebooks)

### Help, I don’t understand <X>!

Suppose the class includes a section about some topic, convolutions.

It shows a lack of thinking and caring.

You don’t understand a topic after we’ve spent an hour or so specifically talking about that topic?

Sure, that may be forgivable. Maybe you’re missing some prerequisite or something.

But you didn’t tell me anything about what you don’t understand.

You were not being specific.

So how can I help you? What exactly do you not understand?

What can I do aside from repeat what I’ve already said?

If you can’t be bothered to at least explain the parts you did and did not understand, I won’t be bothered to ask you to clarify.

### Machine learning is experimentation, not philosophy

“What will happen if I replace X in the code with Y?”

For questions like these, I will respond with my usual stock response: “machine learning is experimentation, not philosophy”.

The best way to learn what the output of a computer program will be is not to guess with your mind, but to run the program with a computer.

While obvious, students sometimes believe there is some “mystic secret” to programming or that I am somehow an oracle that just automatically knows how a program will behave without looking at it.

No, if I want to know “what happens”, well, I’m just going to execute the program and look at the output.

This is why I will not respond to such questions directly.

I will not spend my time to run the computer program when you should be doing it yourself.

Most students who ask questions like these are likely not doing so in a malicious way, but it is bordering on lazy and disrespectful of my time.

### Code dumps

If you paste a bunch of your code and then ask: “What’s wrong with this?” you are unlikely to get help.

It’s the same theme as always: I’m not your tutor.

I don’t look at individuals’ code and help them fix it.

In fact, even a 1-on-1 client would provide me more information to better help them.

A 1-on-1 client would not just get on a Skype call with me, send me some code, and remain completely silent until I had something to say.

(That would be hilarious and I would probably laugh).

In reality, the client would go on to tell me why they designed the code the way they did, what problems they were having, and where they think things are going wrong.

No client has ever given me a code dump without walking me through it. That’s just inexcusable and unnatural behavior.

If all you do is dump your code on me, you are not helping yourself at all.

But remember! The solution is not to then explain your code, etc. etc. as I described above, because again, I am not your tutor, I am not your consultant, and you are not my client.

As a student of the course, you should be using the resources at your disposal, i.e. the working code I have already provided.

If your code isn’t the same, then there are only a few possibilities:

1) You made a typo copying my code (see above: the #1 source of student error)

2) You are typing out your own version of the code (that’s great, but I’m not your tutor, so I’m not going to coach you on your coding abilities)

3) You are coding something not related to the course (I’m not your consultant)

Reading others’ code takes time, especially since everyone has a different coding style. How long does it take you to decipher my code? Now apply that the other way around.

Another major reason I don’t respond to these is because it reeks of laziness.

You got an error, so your first idea was to dump the entire script into a question and ask me “please look at this”?

You didn’t bother to check the error message and pinpoint the specific line of code that was giving you the problem?

(See below: effort yields effort)

### Homework takes longer than 5 minutes

As mentioned above, I will (sometimes, if applicable) point you in the right direction.

If you want to learn about “X” topic, I’ll say: “You should take a course on Y” or should “Read paper Z”.

If you’re having trouble with a math equation, I’ll tell you to go back to it, especially when the answer is already provided.

With math, it’s impossible for me to read your mind and know what you’re doing wrong.

I can’t do that unless I speak with you extensively (which I won’t do because again, I’m not your tutor).

All I can do is show you where point A is, where point B is, and to explain which rules of mathematics must be followed to get from A to B.

I can’t work with you to help you understand which of those rules (there could be many) that you don’t quite get.

The major problem with students who dislike this approach is that they believe every obstacle should be resolved instantly.

That’s not how learning works.

When I’m working through equations or derivations in a book, it’ll take me a few minutes to an hour to maybe even a day if I need to ponder it.

Your expectation of instant gratification is because you don’t even know how to learn, not that I have somehow failed you.

I go by the saying, “give a man a fish, feed him for a day; teach a man to fish, feed him for life”.

Part of this is because it’s the right way to learn.

If you never have to struggle, you will be complete shit at this topic.

Why would you want that?

Why do you want to remain low-skilled and incapable?

I don’t understand.

You presumably joined the class because you wanted to learn the topic it was about.

But when a challenge appears, your instinct is to get someone else to solve it for you?

Why do you believe you shouldn’t have to put in the work, when everyone else does?

What kind of delusions do you have that you believe you can “graduate” from this class if someone else is doing your homework?

This is not for grades and you are not getting a degree – the only thing you can get out of it is learning.

It’s literally the only thing you can get from this course and you want to voluntarily take away that experience?

If you want to take that away from yourself, I don’t care – but don’t act like I have wronged you by not giving you an answer.

Let’s take Christopher Bishop’s PRML again (remember, you paid 10x more for that). Do you email Bishop and ask him to walk you through a derivation in his book that you didn’t understand?

Part of it is also (I repeat) I am not your tutor.

If you hired me for a 1-on-1, I would work through it slowly step-by-step and uncover the reasons why you’re not getting it, whether that’s missing some math trick or whatever.

On the Q&A, I do not provide that level of guidance and getting to know you, because I am not your tutor.

### Review the whole section?

Sometimes, when a student asks a question, it is clear they are in way over their heads and missed like 10 or more things that I’ve covered in the lectures.

Even when they ask a simple question, I might respond that the student should review an entire lecture / section.

Sometimes, easily-offended people will interpret this as a rude response.

I claim that it actually helps the student.

It is like how a whiny teenager does not understand that their parents act in a way that is best for them, and they do not understand due to lack of life experience.

Why do I take such a heavy-handed approach?

Because it is disrespectful and insulting to me if you as a student were too lazy to pay attention, too lazy to make sure you meet the prerequisites, and due to your lack of discipline you are demanding that I put in effort to make up for it?

Absolutely not.

And despite your show of disrespect, I still do what is best for you by telling you the right way to approach the problem.

You think a “simple answer” will fix everything?

If you missed 10 things and I throw you a bone, do you all of a sudden magically understand all that stuff you clearly don’t get?

It just doesn’t happen.

You need to study hard and make up for all that laziness.

If there are 10 things you clearly don’t know, that’s 10 things you need to catch up on.

My telling you to review the whole section is disciplinary action. It is the discipline that you lack.

It is detention for misbehaving during class time.

But how can I know the best way to learn this stuff?

I’ve done it myself. I’ve learned this stuff. I know what it takes, and you don’t.

This section is a more specific instance of the general scenario below.

### Short questions can have long answers

One common misconception among beginners is that their very short question also has a very short answer.

Then they wonder why: “Why didn’t Lazy Programmer just give me the one-line response I was looking for?”

Obviously, the biggest gap in this logic is that the student fails to see is: They don’t know this topic in the first place. How can they have any concept of what the answer will be?

Assuming you are not an expert in the subject matter, how would you know better than me what answer to expect?

And if you are an expert in the subject matter and you know the answer already, why are you asking?

In either case, this attitude does not make sense.

And if your question ends up having a truly long answer (unbeknownst to you), what will I do?

Either (a) I won’t respond, or (b) I may link you a paper or other resource on the topic so that you can look at the long answer for yourself.

And why do I do this? Let’s remember the theme: I am not your tutor.

I can’t sit down and write an essay for you.

You might say, “Surely, you can summarize the main ideas into a couple sentences?”

That would involve me reviewing whatever long-answered resource I sent you and writing down the key points. That’s more work than just reading it. (More on that below in the next section: effort yields effort).

A great example of this would be the question: “How do you choose a prior in Bayesian analysis?”

Very short, succinct question.

Surely it must have an equally short, succinct answer, a beginner might suggest.

Actually, the real answer is very complicated.

In fact, having to choose a prior in the first place remains one of the main criticisms of Bayesian analysis.

Here’s a long-answer paper that demonstrates the fact: http://www.stat.columbia.edu/~gelman/research/unpublished/prior_context_2.pdf

### Why do you answer a question with a question?

Often, students mistakenly believe that when I answer a question with a question, that the answer doesn’t contain the answer.

This is false!

Many people find it “uncomfortable” to confront their mistakes (having to admit they were wrong), but that’s necessary in order to learn.

If your mind never changes, then it never improves! If you were right all the time, you would never need to learn anything new.

Here’s an excellent example:

Image 1 (student makes a calculus error)

Image 2 (I point out where the error is)

Image 3 (student misunderstands my question)

Image 4 (I repeat my original answer more clearly, pointing out where the error is made, but still phrasing it as a question)

Image 5 (student now REFUSES to answer the question – despite that’s exactly what they need to do)

Image 6 (I repeat the same answer again, but not in question form)

Image 7 (student finally realizes I answered the question in my first response)

### Effort yields effort

The worst students are the ones who truly believe that no effort should be made on their part, and all the effort should come from me.

Aside from being obviously ridiculous, this again isn’t helping you learn the subject at all.

If I instruct you to do something (i.e. guide you in the right direction to solve your problem), and you don’t listen, it’s not my responsibility to keep pushing nor provide you with the solution.

A recent example was a student who wanted to know how to make predictions with a model.

Hint: all the code already existed, they just had to put in the effort to understand it and copy the same steps.

To paraphrase, I provided instructions on what to try, and it was clear that the student, over the next few responses, tried exactly zero of those things.

The student claimed to be a “beginner” (that much is obvious), and the finale was to beg for me to write the code for them:

There are a few things wrong here:

• No effort put into understanding the existing code
• No effort put into understanding the instructions I was providing
• No effort put into actually carrying out those instructions
• No effort put into meeting the prerequisites such that they would understand the above

The reason this really annoys me is because you are saying to me: “I don’t want to put in effort, and YOU should put in extra to help me get further”.

I should put in more effort to make up for your lack of effort?

I don’t think so.

I don’t know where that sense of entitlement comes from, but I think most reasonable people understand why such behavior does not deserve a response.

If it’s clear you put in no effort, I will respond in kind – by putting in a similar amount of effort.

If I see that you put in effort and it’s a topic within the scope of the course and doesn’t break any of the aforementioned rules, again I will respond in kind.

You might conclude that it would be easier to just paste a few lines of code for this poor soul and be done with it.

Clearly you have never heard of the phrase “Give a man an inch and he’ll take a mile“.

First of all, as mentioned above, I don’t write custom code for anyone if I’m not your consultant.

I don’t know what you’re using that code for and whether or not you’re getting paid for it.

The worst is those people who are totally incompetent and apply for jobs they are incapable of doing, then freak out when their own client expects output that they cannot provide. So they end up asking me to help them.

Nope.

Giving people code actually opens two rabbit holes:

1) They didn’t understand how to derive that code to begin with, so they’ll have many questions about what this line does, what that line does, etc. because they put in zero effort to understand the existing course code (if we use the above example).

This is highly suspicious to me. If you didn’t understand existing code, then it would have made more sense to ask about that in the first place.

But asking how to do something new with the code after you didn’t understand the existing code?

Asking about how to do new things is highly suspect and sets off the “this guy wants me to be his free consultant” alarm.

Probable scenario:

The student was hired for a job, tried to paste my code into their work. Realized it needed a few more things. Has no idea how to do it due to incompetence. Wants me to complete it for them.

2) The student is missing prerequisites that caused them to not understand the existing code, which turns into a “why why why” train.

Ok, I give you some code. But why is it like that? Because of this. But why is that like that? Because of that. But why…? etc etc etc.

I will not spend my time repeating the lectures to you. That’s why the lectures exist in the first place.

I am not your tutor, so I will not break everything down for you to fill in any individual gaps you have personally.

Oh and let’s not forget that it’s likely not just one piece of code that the student wants. Student questions follow a Pareto distribution.

You give that student one piece of code and the next thing you know there are going to be 20 more similar requests.

Give a man an inch and he’ll take a mile

### People who hesitate to ask questions are exactly who should ask questions

Sometimes, students make excuses as to why they can’t ask questions:

• It would take too long to get an answer (wrong, I usually answer within a few hours, even minutes!)
• It would take too long to come up with a question (good, it’s your job)
• You can’t think of the right question (good, you came here to learn, “thinking” is part of that, obviously!)

People don’t realize that asking a good, well-thought out question helps you, not me.

It helps me a bit in the sense that if your question is stated in a helpful manner, I can more easily respond.

It helps you even more.

The reason you are confused is oftentimes due to mental contradictions.

Psychologically, mental contradictions lead to stress, because your mind is trying very hard to juggle too many concepts at once.

By writing down your thoughts, point-by-point, you naturally begin to resolve those contradictions.

I have experienced this for myself – so its power is not debatable.

Seeing your question written down on paper helps you to see the contradiction right in front of you.

The excuses students come up with as to why they cannot ask questions are utterly ridiculous.

“It would take too long to think of the right question” / “You can’t think of the right question”

Well, it takes as long as your mind needs to process it.

Obviously, you joined the course to train your mind.

Some people take longer than others. We all went to school, right? Some kids are A+ students, some kids are C- students.

It’s just a fact of life.

If the C- student has to work harder, then so be it. We can’t lower school standards so everyone will feel special.

You should be willing and prepared to train your mind to the level necessary.

As before, it’s a matter of entitlement.

Why do you believe you shouldn’t have to think as hard as others? What’s special about you?

Do the work, or fail.

It’s totally your choice, but accept responsibility for it.

### How to Behave

I think a good rule of thumb is to treat it like you would buying a book.

If it’s not something you would say to the author of a book you purchased, then you probably shouldn’t say it to me.

Errata (I made a mistake in the code or lectures)? Yes.

Question about the content (be specific)? Yes.

Something in the code not working for you (be specific)? Yes.

Anything I mentioned above? No.

If you disagree with any what I’ve said: prove to me that for any question you think I’ve answered incorrectly, that you personally have ever asked the same or similar questions to an author of a book you’ve purchased, and that they responded in a manner that was agreeable to you.

You might say: This is more like a professor – student relationship. Don’t professors usually hold office hours and have TAs? Actually, it is not like that. Consider how much you paid per semester of college, and compare that to a book / course.

If you want a tutor, you must hire a tutor. But you can’t buy a course and then expect the instructor of the course to automatically become your tutor.