Deeply happy
There are lots of things that make me happy. Here is one of them.
Several months ago, I treated myself and bought my very own copy of Probabilistic Graphical Models: Principles and Techniques by Daphne Koller and Nir Friedman. When I got it, of course I read thru the table of contents and delightfully skimmed through the book and figured out what I knew already (very little!) and what I did not know yet (most of the book!)
Anyway, this is what makes me happy: I was reading through somebody's work today and I observed that a discussion they had about the nature of human knowledge could be clarified with some analysis a la Russell and James (see previous blog entry, Cognitive Realism & Cognitive Relativism)
Then, I read a little further and noticed they had implemented an algorithm in a certain way, and I wanted to compare their way with a more general way (according to what I assumed I would take in an undergrad course), and so I pulled out the Koller and Friedman book, and I found what I wanted to find. While I was there, I browsed around the book again and some of the other pages jumped out at me, so I read them. The book speaks to me differently as months pass! Different things jump out.
This meandering, this reading and writing, this pushing and being pushed by knowledge is very enjoyable, and rare. It's like the whole universe of books and knowledge just wants to be EXPERIENCED. And that's what I'm doing. I'm "doing" the knowledge on my bookshelf by mixing it with my own thoughts.
This makes me deeply happy.
I also feel really lucky because most people in the world don't have access to books like I do, or the spare time to be able to read them, or a healthy body that is not preoccupied with hunger or illness or other physical challenges preventing them from enjoying intellectual things.
|
Posted by Frozone Permalink on May 05, 2012 05:03 PM
| Comments (0)
|
|
| Tweet | |
Giving the same talk over and over
Hello, blog! It's been a while. I would like to say two things.
First, this performance by Therion is awesome. (Via Nocturna) http://www.youtube.com/watch?v=BBZsbKFs-j8
Second, I am giving a talk tomorrow and I was thinking about how I could improve. I rehearsed in front of my husband and daughter and figured out a couple changes to make for the better. Then I thought, "wow, if I had to give a presentation on my work every month, I would get REALLY good at this". One of my weakest skills is thinking on my feet. I have to work very hard just to give an acceptable performance. But if I did it more often, maybe the material would become old news and it would be easier for me to talk about it while up on stage. (but it would also suck a lot of energy out of me if I had to do it every month.)
Thank heavens for blogs! ;) (Blogs allow people like me to express our thoughts when we are in our best environment - ALONE!)
That said, for some reason, I only have trouble with certain kinds of talks. Sometimes I find it very easy to get up on stage and talk about something. (For example, if I have to give an update in front dozens of people on a topic that I'm knowledgeable about, I can do this quite comfortably and easily without much preparation.) But for my talk tomorrow, I'm all worried about every nuance. Strange!
Or, teaching: I can run a 2 hour course just fine with some preparation. But why is a 10 minute talk so much more difficult? I guess, because when I run a course, I always have some breathing room where I get people to work on their own, and then I teach a little bit, and they work on their own or groups, etc. With a 10 minute talk, every word counts and and mistakes are much more costly. If I make a mistake in front of a class I am teaching, I just say oops and figure it out with students helping me with suggestions. With a talk, if I make a mistake I'm screwed. LOL!
|
Posted by Frozone Permalink on April 18, 2012 09:23 PM
| Comments (0)
|
|
| Tweet | |
Java Comparator
I am lovin this today:
(i.e. lovin' both the javadeveloper tutorial site as well as the java.util.Comparator itself -- howcome I didn't know about this before? LOL)
http://www.javadeveloper.co.in/java-example/java-comparator-example.html
|
Posted by Frozone Permalink on March 26, 2012 02:59 PM
| Comments (0)
|
|
| Tweet | |
Monte Carlo analysis in AnyLogic
I struggled for a long time to get my own Monte Carlo analysis working in AnyLogic. Here are the tricks I don't want to forget.
When you create a new experiment, be sure to pick the "Paramaters Variation" kind. This will let you set the number of replications you want (i.e. the number of times you want the simulation to run though and to average the results).
The other important part is to check out the Sample Model, "influenza", and look at the Advanced tab on the MonteCarlo experiment. See how they create a new dataSet after each run and fill the 2D dataset on the presentation stage? The 2D dataset, in turn, is hooked up to the grid display.
|
Posted by Frozone Permalink on March 17, 2012 12:25 PM
| Comments (0)
|
|
| Tweet | |
Saskatoon to Rosetown
Recently, a close relative told me about this old mnemonic. When I tell it to you, I think you may see why it becomes easy to remember this sequence of town names. If you would like to remember the names of the towns along the highway from Saskatoon to Rosetown, Saskatchewan, then remember:
Venereal Disease Leads to Hairy Zits.:
Vanscoy, Delisle, Laura, Harris, Zealandia.
|
Posted by Frozone Permalink on March 11, 2012 11:15 AM
| Comments (0)
|
|
| Tweet | |
Windows Server 2008 Ports
At work, a colleague and I were having trouble making a database connection to our server. We had php files on a developer's localhost and the test database was on a development server. But we kept getting:
Lost connection to MySQL server at 'reading initial communication packet', system error: 110
I thought, hum, is that port even listening? So I opened up my terminal and did this:
telnet my.server.ca 3306
and of course I got, "Operation timed out" and "telnet: Unable to connect to remote host".
So I went to the Windows Server 2008 Server Manager to check on the port: Go under Configuration, Windows Firewall with Advanced Security, Inbound Rules. It confused me at first because this came up blank and I thought I was in the wrong spot, but after a minute or so all of our ports show up and you can click on MySQL on 3306. It says it allows TCP connections from anyone. So..... Dude, it says the ports are open. What gives?
And here is the answer. There is a magical other secret window with MORE port configurations. Thanks, Microsoft for this bizarre obscurity. Here is what you do.
1. Go to Run and type in "firewall.cpl"
2. Click on the Exceptions tab, click Add Port, type in MySQL is 3306 on TCP, then OK
3. It works now
Alas. :)
|
Posted by Frozone Permalink on February 27, 2012 09:47 AM
| Comments (0)
|
|
| Tweet | |
Constraint Programming with Java
I was looking into how I could do some constraint satisfaction stuff using Java (because my simulation model is in Java). Here is a link to an awesome example that helped me get started. This uses a library called JaCoP (Java Constraint Programming solver); here's a link to the APIs.
|
Posted by Frozone Permalink on February 25, 2012 03:52 PM
| Comments (0)
|
|
| Tweet | |
MySQL privileges
GRANT ALL PRIVILEGES ON dbnam.tables TO 'username'@'whatev.edu or %' IDENTIFIED BY 'password'; FLUSH PRIVILEGES;
|
Posted by Frozone Permalink on February 24, 2012 02:04 PM
| Comments (0)
|
|
| Tweet | |
Beware of Filter Bubbles
My supervisor recently circulated a link to this TED talk by Eli Pariser, "Beware online 'filter bubbles'". Very good talk for someone like me to listen to, seeing as both my academic and industry life work is in personalization and eLearning!
I also wrote on a similar topic in the entry, "Ruttiness". Check out SoloGen's comment about how this is sometimes called exploration-exploitation tradeoff; he gives a good paper reference.
|
Posted by Frozone Permalink on February 24, 2012 12:02 PM
| Comments (0)
|
|
| Tweet | |
Applied Graph Theory - Education Prerequisites
Hi, I just invented an applied graph theory concept which I call "Prerequisite Connectivity". I have not done a literature survey, so I don't know if someone else has already invented this and uses a different name. Well, okay, fine, I did a *little" bit of research and cite the following as my literature review: "Graph Theory and its Applications in Educational Research: A Review and Integration" by Maurice M. Tatsuoka, published "Review of Educational Research", Fall 1986, Vol. 56, No. 3, Pp. 291-329. In this work, the author describes the use of graph theory for designing "hierarchies of test items, instructional materials, and so forth". This brief discussion appears in the Concluding Remarks of the paper. Perhaps later work expands on the idea, but i have not yet found it.
All I know is that I need a theoretical structure to give me quantitative distances between nodes in a prerequisite graph, and I couldn't find an existing thing to help me, so I invented my own. And I am self publishing this concept on my own blog. What kind of rogue academic am I? LOL
Regular Graph Connectivity means that in your graph there is a path to get from every node to every other node. In my case, my directed graph refers to Learning Objects as nodes, and directed edges indicating that the source edge A is a prerequisite to destination edge B. If there is a path from A to B, then my definition of "Prerequisite Connectedness" is the same as regular "Graph Connectedness" between the two nodes, i.e. their degree of connectedness is simply the number of hops to get from A to B.
This changes when there is NO path to get from A to B. In regular Graph Connectivity, if there are no edges that you can follow from A to get to B, the two nodes are simply disconnected, end of story. In Education, however, they CAN still be connected. For example, what if A and B share a common parent? Then Prerequisite Connectivity would say that there is 1 step required in order to get from an understanding of "A" to "B". That step is to visit the parent first. As you can see, the prerequisite connectivity will change the moment you have a student agent to compare to it. In fact, I would say that Prerequisite Connectivity is dependent on having agent involvement. I can give definitions for Prerequisite Connectivity assuming an imaginary student has NO history or background experience whatsoever. This is what I will do. But suppose I have a student who has already visited A, and I want to find the Prerequisite Distance to node B when there is no direct path from A to B, but A and B do share a parent. We can either assume that since the student agent as achieved A, then perhaps they have already achieved the parent concept, which means that there are 0 steps required in order to be eligible to work on B. Or, we can assume that the student has visited A, but has not yet viewed the parent concept, therefore, there is 1 step necessary for them to visit before being eligible for B, and, that is to visit the parent first.
My point is that the "Prerequisite Distance" is dependent on having a student model with knowledge of their browsing history and achievement levels on each learning object.
Here is my formal presentation of Prerequisite Connectivity".
Definition. "Prerequisite Connectivity" is a quantitative representation of learning distance between two nodes A and B, where nodes are Learning Objects in a prerequisite graph. (Do I have to define Prerequisite Graph, too? Look in my paragraphs above. It's a DAG.) In other words, Prerequisite Distance is the number of other Learning Objects that you must study first in order to get from A ("current Learning Object") to B ("destination / objective learning object").
Definition "Prerequisite Distance":
public int getPrerequisiteDistance(Node a, Node b) {
if (there is a path from a -> b) {
return plainOldPathLengthBetween(a,b);
} else {
if (b.hasNoParents()) {
return 0; //if b has no parents, this means there are no prerequisites, so you can jump in and start learning it anytime. that's why we return zero - there is nothing you have to do first.
} else {
//b has parents, so
if (a.hasCommonAncestor(b)) {
return 1; //well, actually we only return 1 if a and b are siblings under the same parent. Truthfully, if we want to allow for grandparents, then change the 1 to be like b.getNumberOfPrerequisitesToGetFromBUpToThatAncestor(); There is probably a great way to do this recursively, but alas, I have run out of time.
} else {
//then a and b have no common ancestors
return b.getNumberOfPrerequisites(); //if A and B have nothing in common, then the fact that the client is saying we are starting at A is actually not very relevant (but they didn't know that, so don't blame them), so we can just tell them that the number of steps necessary to get to B is just to visit all the prerequisites necessary for B alone.
}
}
}
}
|
Posted by Frozone Permalink on February 18, 2012 12:40 PM
| Comments (0)
|
|
| Tweet | |
Syndicate this site (XML)


