Saturday, May 31, 2014

Rubik's cube

Two days ago I "learned" how to solve the Rubik's cube. I say "learned" as I didn't really understand much. I just know that performing a few steps will get me the answer. Reminds me of the Indian education system. The simplex algorithm in college comes to mind, but memories of the tenth grade are the most prominent.

Sunday, April 27, 2014

Course Review: The Data Scientist's Toolbox

Course Name: The Data Scientist's Toolbox
Platform: Coursera
Rating: 2/5

What the data scientist's toolbox is aimed at, I cannot tell you. Well, the course description says it gives you an "overview" of things, but plainly put, to me it seemed like a course put together so they could offer the 9 courses neatly in bunches of 3 (3x3). The other two courses flanking it are much, much more extensive and demanding.

This course is the equivalent of a walk in the park - no, wait, it's more like being pushed in a pram in the park. The project is a joke, especially if you know Git. All you have to do is create a repo and some other basic tasks, like install RStudio. The quizzes didn't require you to work with any data sets (unlike the other two courses that were offered simultaneously). The videos... well, after around 16 videos in the first week, we get 8 in the second and a paltry 4 in the third. An entire week was devoted to Github and Markdown, both covered at a little more than surface depth. To add to the lack of concrete content, we don't even get a 4th week (unlike the other courses in the "Data Specialization" offering). Clearly, content in this course is lacking.

For all that they did wrong, however, learning about confounding variables was interesting. I'll still have to go through the forums again, and evaluate peer projects, but I doubt I'll find any positives there. At best I can say the video lectures were well produced. I'm trying, I really am...

I'm shocked that they have the audacity to charge ~50$ for this course (though I did it for free). The only plus point here (looking at it in a selfish manner) is that you can easily complete this course and walk. Not much of value is mentioned here, and I would say for data science, you'd be better off trying out other courses instead.

Saturday, April 26, 2014

Head First Object Oriented Programming and Design

Urgh. What a book! I'm finally done with this, and only because I decided I'm done and not because I'd read every page of the book. Head First's books are usually a pleasure to read (or at least they were) because things are written in such simple terms that you know you can understand anything. Either their books have changed or I have, because this particular book was just too (too) simple to retain your attention.

That design is a subject that draws me to computer science makes me want to learn how to get better at it. It's always a pleasure to see Norvig's clinical, clearly and carefully crafted programs, and to learn the art that is clearly inherent in the task of writing programs would be great. Sadly, I've taken a strong dislike to huge, chunky classes being thrust into your face as introductions to the problem of design. Head First's book had a lot to say on what I would call pseudo science (or soft science) like requirements and use cases, but I think it did little justice to exactly how to design well.

Reading the book, I couldn't help but think that most of what I was reading was just fluff created to justify the use of buzzwords like "Domain analysis", "Requirement specification", etc. These things seem like very obvious things to do (a to-do list anyone?) and makes me question the value of design patterns and excessive OOPing as I'd call it.

With this book, I'm done for now with this field (I had planned on reading Design Patterns earlier) and instead will move on to something more "concrete".

Wednesday, April 23, 2014

Learning update

While I'm bogged down by the swampy marshland that Combinatorial Game Theory inhabits, I have tried making progress in other fields.

I've struggled through Head First's Object Oriented Analysis and Design - not so much because of an inability to understand the content (Head First books are rarely too tough to comprehend), but because of the verbosity of its content. The book features redundancy in abundance, and at times feels like it is for kids ages 8-10. Moreover, my aversion to the topic of Design Patterns made it even tougher to plow through the book. To my great satisfaction, a few comments (answers) on Quora stated that the whole idea of "Design Patterns" had been reduced to a fad and its importance, overplayed. This was supported by providing a few snippets from the book Coders at Work.

I've also been working on the field of data science, analysis and machine learning. Progress in this is easier, as learning is easier to move ahead when you are learning compared to when you are reading (not true if the book is interesting). For this, I've been following a few online courses on Coursera, EdX and Udacity.

I also learned about PAC files today, which unfortunately, I cannot get to work with Firefox (a file that works in Chrome...).

I think I need to blog a bit more regularly about any work I do, if I am to use this as a tool for discipline and motivation.

Tuesday, April 8, 2014

The inevitable gap

And my discipline gives way. I knew it wouldn't take long, but hoped it would and now I task myself with reigning it in.

Recently, I've been trying to delve into the field of combinatorial game theory. Conway's On Numbers and Games was too "deep" for me, so I've tracked back and reviewed Morley's wonderful succinct lectures on the topic. Currently I'm ploughing through a course on MIT. Along with this, I hope to complete a few problems on topcoder and similar sites relating to the topic, after which I should be able to turn to Conway once again (maybe using this as a walking stick along the way).

It looks like I may have to read up about groups, fields and rings too. I hear that is called Abstract Algebra.

Conway's approach is quite fascinating to discover. Developing a number system from games? Ingenious, no less (or should I say surreal?). The whole idea of games that aren't numbers along with their generation is a little tough to wrap your head around though. Have to get to Knuth's "fictional" book on surreal numbers as well.


Thursday, March 6, 2014

Disgusted?

When I was younger, I really, really, used to hate capsicum. And ginger, or was it garlic? That's besides the point. At some stage in my life, a little older than when I was younger, during a dinner at my father's friend's home, I heard him remark how he loved capsicum. What? Love... capsicum? I just couldn't believe that someone could actually love capsicum. Favourite vegetable, it seemed. And, I was just so taken aback that someone could like such a vile vegetable, that I decided, if someone could like it, I could eat it too. And the next time I faced that definite devil, capsicum, I forced myself to gobble my way through. Just like the Karate Kid - mind over matter (that was the Karate Kid, right?). And soon, ginger and garlic and anything I'd earlier found disgusting was chomped and chewed till my mind gave up. Soon I was not "disgusted" by any food. I could eat anything, not that I liked everything I ate, but I hated and was disgusted by nothing. Just plain, good old indifference.
And this is a useful skill to cultivate, yes? The ability to do anything without this social construct(?) of disgust or "yuckiness". Think about the amonuts you could earn doing stuff people think only freak shows do. Or just winning money on fear factor (not that that's common enough for you to make a living). But, overall, it is a useful skill to have, I believe. Some 'rational' uses would be when you move to a foreign country and have to eat their cuisines. Their bland, weird, tasteless cuisines.
This post has no proper ending.

Note: This blog post was brought to you by a friend who said he was "disgusted" by chicken.

Saturday, February 22, 2014

Blogs

Should blogs adopt a more conversational style or a more literary style? By conversational style, I mean something that's more colloquial, something that sounds like a "water-cooler conversation". Oh dear, that's not making it any easier to understand is it? I assume if you know what 'colloquial' and 'water-cooler conversation' (not a common phrase to Indians) means, then you could figure out what I mean by 'conversational style'. Anyway, if you haven't flipped through a dictionary yet and are still a little confused, then let me try again. Something that sounds like he's just talking to you in person and like those conversations, the topics revolve around nothing - chit-chat, if I may.

Or should the blogger adopt a style of his own, define his writing by his command of the language, for as they say, "Metaphors make the man" (Fine, they don't say that, but maybe now they may). For who wouldn't want to read the work of a man who knows his way amongst the forest of words that is the English languages, wielding a bow of __________ with a gargantuan vocabulary acting as his quiver.

Think about it, I'll return to this after a (long) break.

Thursday, February 13, 2014

Gaming the system

Introduction
I'm of the opinion that most systems have been effectively gamed. When introducing an idea, it is important to define the idea and so let me try and characterize a gamed system. To me, a gamed system is one where a participant is able to pass the system's tests but not through the intended pathway, thus allowing participants without the skill being tested (with or without some other skill) to get credit for passing the system.

Example scenario Uno: Indian schools
To illustrate this idea, take the case of exams in Indian schools. For my 12th grade exams, I was exceptionally weak in some subjects (read: Physics), yet I managed fine in the exams. Along with me, I know quite a few other kids who understood little to nothing on the conceptual level yet received high marks in the exam. Here, a pass equates to scoring high marks in the exam, the test is the examination and the intended pathway would involve understanding the concepts at a deep level and the ability to think, analyze and understand (the skills being tested). The problem here lies with the limited pool from which questions for the examination appear. At most a few numerical values are changed, and questions are slightly rephrased, but they all boil down to a few thousand questions at most.

Missed pathways
And the aid/missed pathway that lets you solve this problem are the guidebooks (Pradeep's, anyone?) that have a whole bunch of questions and the solutions to these questions. It is important to mention the presence of solutions, as without that, the guides would just stimulate thinking. The ease with which solutions are obtained have led to a huge reduction in this thinking ability, that now when we (most Indian students, I generalize) have to, we find it really hard to, or just forsake the logical route in exchange for some random numerical substitutions, hoping the answer pops up. (Another aid/missed pathway are the coaching centres/tutions that students go to, where any questions you may have missed are drilled into you, with discipline (having to solve problems within a given time period) being forced upon you.)

Example scenario Dos: College exams
Schools in India offer precious little in terms of intellectual development and that can be scarily exposed in college. Unfortunately, examination systems in colleges are gamed too. The test, pass, the intended pathway and the skills being tested remain the same, but the problem is a slightly different one. The questions still repeat, but because, I assume, teachers are lazy or don't have the time (which doesn't really seem reasonable?) to think of new questions. So, they fall back upon questions they asked the previous year. This system is even easier to game, since it takes a few hours at most to go through a few question papers and solve those questions or learn only those concepts. It's tougher to game this system across the board, as a single teacher who sets original, innovative questions that test concepts learned through the course can hit your overall GPA/score by a startling amount.

Example scenario Tres: Interviews
Last semester, I was surprised(?) to and thrust into realizing that the interview system had been completely gamed too. Again, the problem rises from a limited number of questions, though the reason for that here is quite honestly, tough to gauge. Surely, companies can come up with new questions - specifically, assign people to the task - but even easier, for software jobs, they can just come up with questions to be programmed - for elimination rounds. Sites like Geeksforgeeks and Careercup, with books like Cracking the Coding Interview, however, have swept all possible question categories to the extent that going through just the interview sections of those sites and looking at previous questions asked will put you at a significant advantage. There really is no need to brush up your concepts, or read textbooks, for just a few hours/days of browsing through those sites should land you a cushy job. If it seems obvious that that should help, because, "Hey! it seems like that is preparation, right?", then you are missing the point of this post. The skill being tested is intelligence, not preparation/hard work, I would hope and companies that miss this point will end up getting hard workers, but no real innovators. If that is what they were going for in the first place, then it should be noted that there is no guarantee that the people selected are hard working by nature, just for the interview process, whereas if the system had not been gamed, it seems only natural that the selected candidates would be intelligent by nature, and not just "intelligent for the interview"(I guess the only way that would be possible is if the interviewee had a really good day on the day of the interview). One solution(?) adopted by companies is to ask interviewees to sign NDAs. With sites mentioned above, NDAs just don't work, especially when not enforced and when you consider that people who don't get through the interviews really have precious little to lose in this scenario.

Thinking about effective solutions to these problems is a good exercise, but due to the excuses listed above, I cannot think right now and will hopefully post to this later. [I actually do have a solution to point tres, but I will trackback to this in the future, with a consolidated list of solutions].

Wednesday, February 12, 2014

Why this blog?

I feel like I need to elaborate on why I have decided to blog. And today is a good day to answer this question because I came across Steve Yegge's reasons and some of Jeff Atwood's articles that I would want to comment on.

I feel, time and again, that I know more than people think I know about certain fields and know much lesser than people think I do about others*. With this blog I hope to actually illustrate what I do know, and hope to learn more about those topics. It should also add a sense of discipline to my daily life, something I sorely lack. It may get me to think more creatively, and will be an excellent place for me to jot down any thoughts I have. And lastly, I imagine it will keep me on track with what I would like to do and not get waylaid by the various bandwagons riding around me.

*: I ___ more than ___ and ___ less than ___. I feel this format has lent itself to a few quotes. One that pops into my head right away is Bilbo Baggins from The Lord of the Rings by Tolkien' has been repeated in many quotes, I wonder if I can find a few others.
 "I don't know half of you half as well as I should like; and I like less than half of you half as well as you deserve." - Bilbo
Well, didn't really fit the format, but close enough I guess.

Links:
Steve Yegge's article on why you should blog
Jeff Atwood on the one thing every programmer should know - how to market himself

Tuesday, February 11, 2014

Introduction

Let's begin with an introduction - the right way for everything to start I guess. (Maybe a preface? a foreword?) Well, I'll try to fit all that into this post. To start off with:

Q. What is this going to be about?
A. Anything I want to write about, but that is the pompous answer. I hope to write about my journey through the world of algorithms and computer science in general, posting about things that catch my eye, books I read, my ideas, and things that interest me and may interest you as well. I'll try to keep things to the point. I may also write about my thoughts on various topics, controversial and not, but mostly controversial or things I think are faulty and need to be fixed (there are a lot of things that fall into that category, blogging platforms, for one).

Q. Who are you/who is writing this?
A. I am writing it, a mere student who has struggled with the state of education and the mindsets of people. Not to sound too fancy, though, I am just an average joe at the end of the day.

Q. Why are you doing this?
A. I wish I knew myself, but I have always thought of cataloguing my thoughts - when I think I have great ideas just like everyone else - and noting down what I find impressive. Also, to share what I've learned and experiences I've gone through, for these may help others. If it turns out I was overestimating my experiences and ideas, at worst it will be an online diary taking up a few KBs on the internet. No harm done, right? ;)

Q. Where can I ask more questions?
A. In the comments below. I think they should be below.