All Fuzzy

Month

March 2012

4 posts

Productivity Posts Are Bullshit.

There are many productivity gurus on Hacker News and proggit. Every week or so, we come across people’s personal account of how they’ve improved their productivity by 45.67%. It’s a bit like watching Oprah. On some lucky days, we get to hear about how using a web app, X, has minimized employee cigarette breaks by using agile methods from no other than the makers of X. And did you hear about how Vim changes lives?

Let’s get the facts straight. Reading productivity posts in itself is a highly unproductive exercise. Our time probably would have been better spent by looking at cats on Reddit instead. Also consider the fact that all those productivity posts you read all these years have done nothing to improve your productivity. It’s about time your rational mind conclude that productivity posts are bullshit.

Now you might interject and say, “but Jason, I know someone who now writes 2 kloc per day by taking advice from {namedrop some prominent programmer here} on Twitter.” Sure, I know that guy too. I also heard that some people got killed getting struck by lightning as well.

Isn’t this post itself a productivity post. Perhaps, it is. This particular post might actually increase your productivity by discouraging you from reading any more productivity posts. If this is a productivity post, I hope that this is the last productivity post you ever read.

Mar 30, 20121 note
#bullshit
Do Rich Kids Do Better In School? (Findings Based on Toronto High School Students)

Daniel Willingham, Professor of Psychology at the University of Virginia, confidently claimed in his blog recently that wealthy kids do better in school that poor kids. I wanted to find out if he is right.

Rich kids performed better on the literacy test.

I studied high schools in Toronto to test his claim, and it turns out, Willingham is absolutely right. High schools from wealthy parts of Toronto tend to do better than high schools from poor parts of Toronto. Check out these plots below.

Pearson correlation coefficient: 0.3336512

Pearson correlation coefficient: 0.3735437

As you can see, as the household income increase, the passing rate of the test increases as well.

The following two plots have normalized the passing rate of individual wards.

Pearson correlation coefficient: 0.4848854

Pearson correlation coefficient: 0.4574223

The correlation is even stronger after passing rate has been normalized to individual wards.

Procedure of the study

Here’s a quick summary of how I generated the plots. I first got the literacy test result of Toronto high schools, and categorized each school based on wards they belong. I assigned the average and median household incomes of individual wards in Toronto. The data has been organized into .csv file using Excel. Plots and correlation coefficients were generated using R [1].

I decided to study Toronto for no other reason than that it’s a city that I’m most familiar with. Toronto also happens to be an interesting choice because it is often viewed to be more egalitarian in comparison to other major North American cities [2].

Possible Errors

-Household income data of a given wards is not household income data of students’ parents.

-Students living in ward X may attend a school in ward Y.

-The data is from 2005~2006.

Why not pour more money into education?

A typical response to the problem of this nature is to simply insist that the government must put more money into education. While I agree that this will help underfunded schools in the short term, whether or not this has formidable influence on student’s performance in school is still very much debatable.

Hopefully, we can look to our southern neighbour, and learn from their mistake. Contrary to popular belief, US is one of the biggest spender when it comes to education. OECD reported in 2011 that only Switzerland spends more money on education out of 65 countries. The graph below shows how increased spending on education over last 40 years did nothing, absolutely nothing to make any tangible improvement on reading, math and science scores of students.

I think it is important to notice that household income is only one of many causes that influence students’ performance at school. Household income can be more aptly seen as a numerical indication of many other factors such as educational background of parents, mindset of parents and students, availability of parents for students, quality of teachers in the neighbourhood and so on. Since there are so many variables that affect the performance of students, simplistic solutions like “more funding for schools” will not work.

Perhaps, more helpful solution would be attempting to emulate high schools from poor area that still had high passing rate.

[1] Check out this tutorial to find out about generating basic plots for correlations.

[2] This claim itself must be verified.

Mar 23, 2012
#R
3 Things I hate about "beginner" programming books

1. Too long

If your book claims to be a beginner’s book on a programming language, and is 800 pages, you are doing it wrong. Go back to your editor. Halve the book. I understand that by making the book large, you can justify the expensive price tag, but it certainly doesn’t help a beginner programmer. I also understand that it is not easy to keep a programming book short. There are many complex concepts and practices that require thorough bottom-up explanation. But that’s a tough job you as an author have to deal with. You think hard and decide what should be taught and not taught to a beginner. Do not pass that burden over to a beginner and do not overwhelm the reader with hefty material.

Here’s a book that’s concise yet detailed. Eloquent Javascript by Marijn Haverbeke

2. Too many examples like “Hello World!”

Ideally, “Hello World!”-like example should only appear once in your book. If your book continues to fill examples with arbitrary useless examples like drawing Christmas Tree in console, the reader will increasingly feel alienated from real practise. The readers are not stupid. They know real programmers never draws Christmas Tree in console (unless it’s for lulz). So why force readers to plough through useless examples? If you are teaching string manipulation, create an example about generating a .csv file. Don’t make readers draw a Christmas Tree ever again.

Ruby on Rails Tutorial: Learn Rails by Example by Michael Hartl does an incredible job teaching concepts in Ruby on Rails while building a usable product, leaving the reader feeling accomplished. 

3. No answers to exercises.

I believe that exercises are mandatory part of programming books. Programming books shouldn’t be just about reading. Ultimately programming books are there to teach readers to program. Exercises are important because they encourage readers to think independently and actually write programs.

But what use are these exercises, if readers cannot find out what the answer is. It should be expected that beginner programmers will be stuck in limbo very frequently. They will be faced with problems the author could not even foresee. For this reason, author must provide answers to the exercises as a fallback plan for readers. Without the answers, readers who are stuck will simply have to give up on the problem without knowing what the solution is.

I know there are many publishers that have ties with university professors. They make deals with professors to exclude answers to textbooks, so that professors can use these problems as assignment and exam questions. If you are part of this scheme, go fuck yourself. You do not stand for beginners trying to learn how to program.

Mar 17, 201252 notes
#programming
4chanImageGroper now supports all image boards!

4chanImageGroper is an awesome Ruby program that grabs all the images from a 4chan thread. 4chanImageGroper now support all image boards, not just /b/! 4chanImageGroper also creates unique directory every time you download something, so you don’t have to manually change the folder name! If you haven’t tried it out yet, give it a shot!

Mar 4, 2012
Next page →
2012 2013
  • January 1
  • February
  • March 4
  • April 5
  • May 19
  • June 5
  • July
  • August
  • September
  • October
  • November
  • December
2012 2013
  • January
  • February 1
  • March 4
  • April 2
  • May 2
  • June 7
  • July 4
  • August 4
  • September 5
  • October 10
  • November 10
  • December 4