HN user

noctilux

19 karma
Posts0
Comments9
View on HN
No posts found.

Coming from writing OOP-style code in Python and C++, I initially disliked R quite a lot. My code is becoming more functional-style by the year and I'm now finding myself enjoying R more and more.

There are issues with R: lots of weird quirks; many different ways of doing things, often just supported for legacy reasons; poor error messages; to name just a few. But on the positive side, it really encourages functional-style programming through the use of apply functions and many of the new tidyverse packages. The resulting code can be very neat and less error-prone than equivalent python code.

The S3 system of OOP initially struck me as very weird, but now I see it as essentially just single dispatch, not really much of OOP at all. It works quite well and is extremely simple.

I guess my thoughts are: approach R as a functional language, and I think you'll find much to like. Try to write C++ or python-style OOP in it, and you'll just find it very strange.

I'm curious about whether the author tried to optimize Elo's K factor. It's often left at 32, which is not reasonable for all contests. It's essentially related to the standard deviation of player skills: if there is a large range of skills, it should be large, and if there is a small range, it should be small. It's easy to tune by optimisation, and it has a huge effect on predictive ability.

This is a _fantastic_ book. If anyone's worried it's too technical, I'd say that it's not as dry as it might look at first glance. There's lots of practical advice and there's actually not that much heavy maths.

Some things that help me:

1) Echoing what someone has already said, a big key is to do a little each day. Before doing that, I would try to read whole chapters of books at a time and feel overwhelmed. Setting aside 30 minutes each day and sticking to it, even if you feel you have more energy at the end, is the way to go. Progress will be slow, and it'll take you months to read a book. But you'll learn a lot this way, and the sporadic bursts accomplish much less in my experience.

2) When choosing what to read, I tend to go for books that are fundamental. I do ML/stats work, so that tends to be math books on probability, linear algebra, stuff like that. These also tend to be the books that require the greatest mental effort.

3) Watching stuff on YouTube isn't a bad thing! The books I got the most out of were those that also had an online lecture series.

Agree. I was confused by this at first but if the slope on lines without dividing by population is:

(log y2 - log y1) / (x2 - x1)

Then if we scale y2 and y1 both by c, which is 1 / population:

(log( c * y2 ) - log( c * y1 )) / (x2 - x1) =

(log c + log y2 - log c - log y1) / (x2 - x1) =

(log y2 - log y1) / (x2 - x1)

So scaling by population does not change the slope of the graphs, only the intercept.