This summer has not been what I had planned. Well, part of it has– I’ve been spending lots of time with my baby, which has been wonderful, but that has really been the only thing that has happened the way I expected.
First, I had to have my gallbladder out, so I had a planned surgery. Then, it turned out that I should have had it out earlier, because I had a gallstone in my bile duct, so I had a second surgery on the next day. I took it easy for a week or so, and then was planning on starting work on the materials for my online classes in the fall, when I realized that they never actually made it onto the schedule for students to register for. I may have spent some time just being frustrated and angry about that. I have no idea if the math department intends to support freshman-level online courses in the future. Oh well.
Then I spent a little bit of time just being a mommy, which was fun but I realized quickly that I am a better mom if I get to spend some part of my week doing some kind of intellectual work. So I decided to pick up an old programming project again. There’s an open-source python library called sympy that is basically a computer algebra system. It’s fabulous, and I use it as the basis for a practice problem/test generator that I wrote, among other things, but it does have one hinky bit. It automatically distributes constants. You can see what I mean if you go to SymPy Live and see the difference when you enter
3*(x+y). This frankly is annoying. There are workarounds: you can enter
Mul(3,x+y,evaluate=False), but I find that really tedious, and if you enter
Mul(3,x+y,evaluate=False) + x, you get
4x + 3y. When you’re creating learning materials, you just need 3(x+y)+x to show up as 3(x+y)+x. The team that works on it acknowledges that it’s a problem, but it was a decision that was made back at the beginning of the project, and everything depends on it. It’s actually easy to change this behavior– you can just delete a couple dozen lines of code. But changing this behavior breaks lots of other stuff. Like, LOTS of stuff. 315 tests break. And so I have taken on the project of actually fixing this. There are a bunch of different modules, including ones for combinatorics, geometry, matrices, and quantum physics. So this is kind of a big project, that requires me to refresh my skills in a wide variety of topics. The sad thing is that I worked on this two years ago, and got it down to less than 50 tests failing. But even though it was partly broken, it worked for everything that I would ever use it for, so I just used my crippled version. Part of the reason I didn’t go back and ask the main devs for help was that the master branch was under rapid development, so by the time I got to this point, master had changed significantly, and I really didn’t have the energy at that point in the semester for rebasing.
But this software has been so incredibly useful (even in its broken state) that I would really like to contribute back to it. So this time, when I reach the limits of what I can do, I’m going to ask for help.
Next week, I’m starting that workshop on effective technology integration for teaching. That should be interesting. Yeah, I really shouldn’t leave things as drafts for so long. The two-week workshop is halfway over, but probably deserves its own post. Or posts. Let’s see how much time I have to write.