So I took a little bit of time to celebrate the holidays with my family, but today marks the day when I hope to get back on track for my work with Rust. Most of my commits lately haven’t had much new content, but rather, I’m wrestling with git. It’s difficult to use at first! And worse yet, all of my git mistakes are displayed publicly on Github. Now, you would think this has an easy enough solution: don’t push bad commits to my public repository! However, this is less easy than you think–I know little enough about git that I don’t always know when I’m making a large and embarrassing mistake. Sometimes, I even look at what I’ve done on Github and don’t realize that my commits are unusable, even though the evidence of their failure is right in front of me. Needless to say, I’m a little bit *over* git right now.
At least I’m at the stage with git where I’m not scared of accidentally losing content. If messing with git has taught me anything, it’s that everything can be fixed somehow–it’s just really difficult sometimes. I suppose a good resolution for the upcoming year would be to make fewer mistakes with git and be more careful so the helpful people who work with Rust can spend more time actually reviewing my code for content, rather than silly mistakes.
I chose to work on the B-tree library because it sounded a lot like the projects I used to work on in my freshman-year intro computer science class. And it is, in a way: I’m using a recursively-defined data structure to hold the B-tree’s information, but instead of two levels of recursion, I have four! What I mean by this is, rather than having an empty tree and a “full” tree under the heading of a binary search tree, with the B-tree, I have the tree structure, the node contained at each level, whether the node is a branch or a leaf, and what’s inside the node. This sounds confusing at first, and it was definitely hard to keep track of in the beginning, but I definitely appreciate the trickle-down I get. That is to say, if I want to test a to_str() method for the top-level tree, I can, in the same test, look at the to_str() method for all of the nested data structures also. It seems like it’s going to save me a lot of typing.
In funny and unrelated news: my competitive programming partner and I received free flash drives for having the last submitted answer (with less than five minutes on the clock) for the ACM ECNA contest. We placed 50th overall, which was the last place for all teams solving two or more problems…but we were the only team from our school to solve more than one problem! I’m still proud about this, and the contest happened over a month ago.
I guess today’s the day! Today my internship with Mozilla begins. I prepared by partitioning my hard drive and installing the latest developer version of Rust. The workstation I was using will suddenly become inaccessible to me when I graduate, so I have to turn my recreational laptop into a viable workstation. I usually use Mac OSX (and still do on my primary partition–just upgraded to Mavericks!) but I’m excited to be using Ubuntu 12.04 on my work partition. It’s taking some getting used to with the trackpad, but other than that, it’s fantastic so far.
I haven’t gotten the chance to meet with my mentor yet–that happens tomorrow. For now, all I can do is prepare and get as much of my schoolwork out of the way as possible. I graduate next week, and classes end on Thursday. I’m just hoping I won’t have too much work to do on my final projects once classes are over! Tomorrow, I suppose we’ll discuss what I’m doing, which will very likely be a continuation of the B-tree I started implementing as my application to the project. There’s still so much left to be done–it makes me kind of nervous thinking about it, but I suppose I do have three months to finish it.
More updates to come as my work starts! Get excited!
I’m excited to announce that I have been chosen for GNOME’s OPW Internship, round 7 (December 2013-March 2014)! I will be working with Mozilla on developing B-tree library functionality for the Rust programming language. Check back here in a few weeks for updates on my work, which starts December 10th.