Work, day 9

Yeah, so today I met with one of the research programmers working on MinorThird. The more I try and understand how the hell to use M3 with this project, the more confused I get. From my impressions today, it looks like I’m going to have to more or less scrap the stuff I’ve done this week and start over with an M3 implementation…. and I have to figure out how to get it to do what I want it to do.
I mean like, I understand on a conceptual level what I have to do. I understand what needs to happen and, more or less, how to make it happen. I’m just confused about specifics… like how to create samples to train the classifiers with… how to call the classifiers… how to deal with their output… how to write code utilizing M3 classes… that kind of stuff.
Oh well. I am confident in my skills, and I’m sure I can understand this stuff. I just need some time to mess with it. I mean, this is hard stuff… I’m actually kind of impressed with myself that I’ve even gotten this far.
And no big deal about scrapping what I currently have. It runs slow as hell, and I’ve learned a lot from doing it, so it was a good experience nonetheless. I mean, worst case, I don’t get M3 working and I have what I’ve already written, which works on many, many cases (something like 74% of inputs).

You get three photos today, because yay.
OSC, more blown up!

Flowers…. love the colors… and omg depth of field!! *drools*
Isn’t it interesting how, when they’re in focus, they look light purple… but then when they blur they turn darker? Amazing…

Orbit! It just looked so out of place there… I love the contrast of it against the rest of the scene. In the full-sized picture, the background is more noticibly out-of-focus, which draws your attention more to the gum… so yeah.

Why is the world so beautiful? There’s just so much to photograph and look at and enjoy.

Um, so yeah.
Life is good.

Edit: Recipe for what I had for dinner today… it was surprisingly good
Alan’s college-style spinach salad
Ingredients: One package ready-to-eat spinach (whole leaf), 1/2 cup parmesan cheese, 2 single-serving size boxes of raisins, 1 cup Cheerios (optional).
Directions: Pour cheese and raisins into bag of spinach. Shake until throughly mixed and spinach leaves are covered with cheese. Enjoy. Add Cheerios to the salad for a nice crunch.

More feelings?

Hmm… yeah so, over the last few days, my mood has been continuously improving. All of today, I’ve felt a lot better than I have in a while…
It’s strange, this is the first time since high school when I’ve really felt good about myself… confident in what I do… it actually feels like I’m good enough, for once. Despite work kinda sucking still, I’m feeling more and more confident that I can do it.
And that’s a really good place to be, being completely happy with yourself.

I’ve also been doing a lot of creative photography lately (as I’ve mentioned in my previous posts).
Blurry tree with leaves in foreground

Greg

Oh god playing with depth of field makes me spontaneously orgasm whee!
I don’t know, I’m personally a huge fan of a lot of these pictures (they do look a lot better larger though).
Photography makes me happy. Part of me really wishes I had been a photo major. The other (bigger) part is glad that I’m a CS major.

Workwise, things are going okay. I’ve gotten the primary tokenizer and classifier working… it works on simple things like “How far did she drive if she drove for 5 hours?” and “If she made $50, how long did she work?” Going to need to mess around more with MinorThird to get it working on more complicated things. Spent a lot of time today getting the tokenizer to tokenize things like “how many students got As and Bs” into “how many LABEL2″… figured out an algorithm to do so yesterday on the bus ride home, and implemented it today, and it seems to be working. My only worry is that its runtime is exponential to the length of the input substrings plus linear to the input label sizes… I think
O(2^n + m) == O(2^n) BLEH
Luckily, the input substrings will never be very long, but still. I should definetly find a way to optimize that after I have stuff working better.

Meh. I’m really considering starting a page for my more artsy photography. There’s a lot of it that I’d love to share in a bigger size (the ones I post in this journal are just too tiny to be effective) and such. I should later sometime or something.

I am also the proud new owner of $25 worth of iTunes downloads of Kelly Clarkson’s “Walk Away” and “Because of You” remixes, and Carrie Underwood’s AOL Live session downloads (see today’s “Listening to”). See, we get a lot of money each week for food from my job… about twice as much as I could possibly eat in a week. It’s also in plaid cash. Geagle takes plaid cash. Geagle sells gift cards. I think I win.
Last week I bought a $70 jacket from the CMU bookstore (using my “food money”) because I really needed a jacket (and it’s a really nice one; I’m glad I bought it). Whee. I also bought really good conditioner and shampoo (like, the expensive kind that I wouldn’t normally buy for myself). It’s kinda nice.
So I guess then this money pays for entertainment and necessities for me as well as for food. Whee.

So yeah, life is good right now.

Threading ahh

Yeah, so I finished 312 finally. We implemented threading in ML (and used it to implement speculative memory). It is horrific, but it works.
The last error I had was a stupid one too, and it’s one that I really should have caught.

We have a function scheduler that goes through a list of threads and runs them, one at a time.
Its type should be 'data * 'data state -> 'b since the function never returns, it just calls the next thread when one is done executing.
The type of mine was 'data * 'data state -> 'data * 'data state
This should have been a tipoff for me that something was wrong with the function.
It wasn’t.
I spent like two days trying to figure out why things were encountering empty thread lists and trying to release locks twice.

As Dan said, “You are 8 characters away from being correct.” I had forgotten to do a recursive call to scheduler inside scheduler, which meant I was returning the result of computations instead of running the next computation, as desired.
GAAH.

Oh well, it works now, so I’m happy.

Um, not much else. I really should be studying for 21301 and 18100. Meh. And I have 18100 lab tonight, which sucks. Meh.

Wheee

It’s looking like this will be my final schedule for next semester. I need to find some alternatives for photo history (I probably won’t get it), but the two CS classes have pretty much been guarenteed to me by Mark, and I shouldn’t have any trouble with the two math.

I’ve been having the weirdest food cravings lately. Two nights ago, at India Garden, I had a craving for paneer (cheese cubes). You have to understand, the only thing I hate about Indian food is the cheese cubes… and meh. I’ve been snacking on a lot of junk food lately. And today I actually had a craving for Schatz and/or Taste of India buffet. And right now I’m sitting here wanting doughnuts, fried eggs, and salami. Meeeh. I think I’m pregnant :(

Classes are going relatively well. Got a 73/75 on my 213 exam, and finished malloc: the problem I was stuck on wasn’t in malloc or free…. it was in realloc where I was dereferencing a char* instead of an int*… stupid stupid stupid! Got a 67.5/70 on my 80180 exam. Doing fine in 18100. Photo is fun. Whee.

Guess my music wheee

Internship

Well, I guess someone does like me after all :D
I got the PSLC internship/research thing I applied for. I’ll be working here (in Pittsburgh/around CMU) this summer on “Automated Understanding of Algebra Word Problems,” which sounds amazing. The best part is meals and housing (and plane tickets to/from Pittsburgh) are provided… and I get a rather modest stipend for my work… as in more than I made all last summer, and this is much more interesting work.

So yeah, between that and the website I’m working on for the outreach center, I’m pretty much set work-wise.

Oh yeah, I also (finally) got my 312 elaborator working. I was just misinterpreting the rules for type matching. I was reading the left triangle as “the term on the right evaluates/checks to the left,” when it’s exactly the opposite (the list of types on the right is what the function needs to return). Once Keith explained that to me, it all made sense was was quite easy to write. Whee.
Blah, I always get hung up on notation.

Wheeee! So happy!