Jach's personal blog

(Largely containing a mind-dump to myselves: past, present, and future)
Current favorite quote: "Supposedly smart people are weirdly ignorant of Bayes' Rule." William B Vogt, 2010

Response to: The Perils of Java Schools

I read this good article here: It is a very good rant, you should read it! While you don't need to read it to make sense of my response, it is still a response/thoughts about. Anyway, here is my response I initially wrote as an email to a former high school CS teacher.


First, I think he has many good and strong points. We should be teaching recursion and pointers and threading much earlier than we are. If I had any suggestions for your [my old teacher's] AP CS class this year, it would be to teach it faster, especially if many of the students have passed your C++ class and should have a pretty decent grasp of the OOP material, if not a better one. (Also teach Researching by, for example, giving a somewhat challenging final problem on tests/quizzes requiring them to write code and give the students access to the internet. They are expected to only be able to solve it if they do research, so nothing so simple it comes up completed as a Yahoo Answer.)

See Full Post and Comments

How to turn an agnostic

This is a tongue-in-cheek mini-tutorial for how one might go about converting an agnostic to some theistic religion. It may work on some atheists. It may not work on anyone. I probably won't ever try this since it probably falls under my category of abuse.

Step One: Stay away from mainstream religion, pick a relatively unknown one. This means no simple Christianity (Catholic, Protestant), no Judaism, no Islam. Acceptable alternatives include Mormonism (which is technically Christian but weirdly so, it's at such odds with the rest) and any far-Eastern religion.

Step Two: Pick some stereotype or misconception about the chosen religion and wash it away with Knowledge. For example, many people still believe Mormons practice polygamy. In fact, only an illegal sect does so, that is unrecognized by the official Church, and indeed the Church denounced such practices years ago. Also, there is a concept of "levels" in heaven. I can't remember the specifics, but if you're really holy and I think you may have to achieve some level of priesthood, you go to the highest level of heaven and you can then go off and create your own worlds. Pretty cool and futuristic-y eh?

See Full Post and Comments

Thinking In Groups

This is perhaps my least favorite form of religious thinking, simply because it afflicts many an Atheist as well. It's a useful heuristic of classification built into our brains, but nevertheless I also consider it a very harmful bias simply because of all the baggage it carries. Allow me.

Can you spot the difference between these two quotes?

I am a scientist.
I am an Objectivist.

See Full Post and Comments

Power Levels

I realized a few days ago that it's been a bit over a year since I started writing on this blog. Wow, time flies a lot quicker now that I'm older. I still remember the summer after Kindergarten, not because of anything I did, but just because it felt oh so long. And every year after that, time has consistently seemed to go faster than the last.

For the past few years, I've been trying to push myself more, trying to increase my level of knowledge and ability. I've consistently applied my "learn a new programming language / paradigm per year" mentality, which I think is great. I figure I've got at least two or three more languages to go before I can slow down that one.

Brief personal history: I started HTML at the end of 2004, and I consider myself starting to really program in 2005, so by the end of this year I'll have had 5 full years of programming experience. I've learned PHP (the whole LAMP stack), Java (which I'm now really mastering), Python, C, C++ (really mastering later this year), JavaScript, ActionScript, and while I 'know' Scheme and Common Lisp I still haven't finished working through SICP. Still, not bad eh? I've done Assembly and am taking an entire course on it next semester. J, R, and FORTH are on my list of languages to study next.

See Full Post and Comments

Teaching Programming

I've thought a lot about methods of teaching, specifically programming. While I don't immediately see myself writing a book or becoming a teacher, I nevertheless see those as two highish possibilities simply because I think about that sort of stuff a lot.

Reading this post, I found myself agreeing, and I've already had mostly the same thoughts before. Teach by example, not by going through a reference and writing the same math functions over and over.

I've been going to my school the last couple of days for a focused work environment (since working from home sometimes proves to be distracting), and they're doing a summer project for kids where they teach them about using a piece of Software DigiPen developed called Project Fun to make basic video games. The software uses C++ as the main language, but also supports Lua and C#. The kids must use C++.

See Full Post and Comments

Just-in-time Learning

One of my favorite ways of learning is just-in-time learning. That is, you learn something when you need it. Splines are cool and all, but you don't really need to learn them until you're doing something with cubic interpolation. (Like path definitions in video games.)

When I learned about splines, however, I recognized that my just-in-time learning strategy would have failed me, had my other team member not known about splines. Just-in-time learning only works when you have a broad enough knowledge base to know what you need to learn. If you have no idea what sorts of problems calculus can solve, you will not even consider needing to learn calculus to solve a particular problem. Put me back in that situation of ignorance of splines, give me the same problem, and I would have suggested doing some basic Newtonian physics to come up with a standard function for a parabola. But how to unitize it... No clue. It was a problem I was brick walled against, and a spline-less solution would have been inelegant and ugly. It would not have been a good solution. This is why teams can be beneficial: you draw from each other's knowledge pools, and just-in-time-learn the specifics when someone knows generally what is needed.

Also, for a side-note, just-in-time learning isn't for everyone. I suspect my high IQ helps me in this aspect, but people with very average or below average IQ's would struggle to take up my learning methods. IQ is a fairly reliable test to measure how easily a person can learn new things, and the reason they have geometric and pattern matching questions on it isn't because knowledge of such things is more useful than, say, knowledge about car engines, but because humans are known to suck at holding shapes and figures and calculations and patterns in their heads, no matter how smart they are. How well you can do it versus someone else is a key thing the IQ test measures.

See Full Post and Comments