We Are All BugMaster

by BugMaster, Sep 20, 2021, 2:46 PM

I hope that all has been going well for you with the new crew of BugMasters. I saw a bug report go through the queue a week or so ago where someone reported an editing error in the solution of a calculus problem that had last been edited many, many years ago. There are still bugs to be reported on some old problems, and the team is continuing to write new problems that might have bugs in them.

The team is also, slowly, working on a major upgrade to the homework system. Those of you who have seen the recent updates to the classroom may have a sense of some of the changes that are slated to come to the homework. They aren't going to be exactly the same features -- it's more about having a similar educational approach, especially when it comes to problems that benefit from an interactive component. When that happens, those might also have bugs, especially if you are using a really old browser.

Speaking of transitions, changes, and moving on, I wanted to let you know that the person who runs the BugMaster blog is leaving AoPS to take a (remote) position at a software company based in Texas. Like all software, their product probably also has bugs. I'll probably end up fixing some of them.

Remember, one of the most valuable skills that you can learn is how to write a quality bug report.

Bad at Blogging (and you have a new BugMaster)

by BugMaster, Mar 14, 2021, 3:40 AM

I've been terrible at keeping up with this blog. I've also been terrible at keeping up with my personal blog. Every now and then I get emails from LinkedIn saying "People are looking at your profile," and then I think that I should either unlink my personal blog from my LinkedIn profile or else I should write something. But I have not gotten around to either of those.

I managed to get to Level 40 in Pokémon Go before the December 31 deadline, which was nice. It took a fair amount of effort because I moved in October. Previously I lived in an apartment where I could reach both a stop and a gym when sitting on my couch. Now I live in the dread suburbs, and I have to travel several blocks in order to reach either a stop or a gym. My lack of access to Pokémon go resources is a direct result of the pandemic. My apartment was small and in an expensive area of town with a lot of restaurants and bars. When everything fun is closed and you need to work from home, a small and expensive apartment is less of a good idea. Now I live in a house. I spent today raking leaves because that is the sort of thing that you do on weekends when you live in a house.

San Diego County has pretty much given up on the tier system for the coronavirus vaccine. Starting on Monday, everyone with a BMI of 25 or higher is eligible. Over 70% of the people in the US would fall into that category and some people who are pretty close could fake it by wearing bulky clothes. Attention, userscript writers: This might be your chance for a fleeting moment of internet fame. With a heck of a lot (are we still allowed to say "heck"?) whole bunch of people all trying to make appointments, lots of people will be eager to find strategies that will keep refreshing the various vaccine appointment making sites so that they can find a slot. People can make appointments at the "My Turn" site (which covers many places in California, not just San Diego County). My Turn will show links to local providers (like the Vons Pharmacy) that have their own appointment system as well as County-run locations that are booking appointments via My Turn.

I've found that pharmacy websites tend to release all the appointments for the day in one clump late at night / early in the morning (during prime Reaper hours). The locations that book via My Turn are less predictable. Some of the appointments seem to be released in a batch by a computer, but some of them seem to become available when a human does something in the system -- at an unpredictable time. The My Turn system searches for these with a POST request -- where your userscript would come in. Once you've answered the screening questions, the site issues you a token, which I will call TOKEN for now. Each of the locations that are booking through My Turn also have a Location ID, which I will call LOCATIONID. The My Turn web page sends POST data of the form {"vaccineData": "TOKEN", "url":"https://myturn.ca.gov/appointment-select"} to an API endpoint of the form https://api.myturn.ca.gov/public/locations/LOCATIONID/date/2021-03-13/slots. The API then returns the appointment slots available on that day. The tricky part is finding the Location IDs. If a location has no availability, it won't show up in the payload from earlier calls, so you can't learn its ID. I think the one in Del Mar that is run by Scripps has ID a2ut0000006a8yeAAA. If you figure out how to write a userscript that helps people book vaccine appointments and then use it to help old people or poor people, you can probably write a college essay about that. Once you've helped the old people and the poor people, then you can promote yourself on social media and try to go viral. "Viral" might not be the right word in this situation. In any event, just an idea.

Did I mention that you have a new BugMaster? You have a new BugMaster. In fact, you have many new BugMasters. BugMastering has become one of the tasks that now rotates through several people on a weekly basis. I wrote up eight pages (single-spaced) on how to be the BugMaster, so you will continue to get the same high-quality and consistent replies to your homework bug reports. Students will still need to submit all answers in simplest form, using the notation that was requested in the problem or specified in class. Students will still need to submit the exact value of the answer and not an estimate or an approximation (unless specifically requested by the problems). It still shocks me to learn how many AoPS students think that 1/7 is equal to its decimal approximation to some number of decimal places. Students will still need to use interval notation correctly and not their own invented notations that somewhat resemble interval notation. Sometimes I wish that I could run a weekend special seminar on interval notation because there are a lot of students who have trouble with it. However, I am busy raking leaves on weekends, so I am not available to talk about interval notation.

One of the reason why you have new BugMasters is because there are going to be new bugs, and I am not involved in the project that is creating these new bugs. Those of you involved in online classes may have seen that we have developed a new classroom. The class homepages are slated to get some improvements. Keep in mind that they have not undergone any major changes in the past six years, so they are due for a refresh. These updates are going to come with new bugs, and the people doing the BugMastering should be the ones who know what the new pages are supposed to do. Since I am not involved with either designing nor coding that project, I am not going to be the right person to deal with those bug reports. When is this project going to become a reality? Pretty far in the future. The team that would normally work on this sort of stuff is totally swamped with stuff relating to the AMCs and other contests (USABO, Putnam, MATHCOUNTS, etc.).

I will continue to be the Beast Academy BugMaster. The other day I fielded a bug report that was submitted by the child of someone who I knew in high school. This happens every now and then. The BA bug reports, unlike the AoPS ones, have the parent's contact information rather than the student's AoPS username -- this is because if you want to get more information out of a 7-year-old, you probably should be dealing with a parent. What this means, however, is that instead of seeing that the bug report was submitted by drmatrix1729 (not a real user) it shows up with the parent's name. Enough of my friends have distinctive names that I know that it is them. (This happens in my family as well -- one of my relatives has a part-Asian part-European combination of names that is sufficiently uncommon that he is probably the only person on Earth with this name.)

I also spend a certain amount of my time at work chasing wild geese (metaphorically). Some people ask somewhat speculative questions that can't be answered exactly. I spend a bunch of time trying to work technological magic in order to answer their questions. For me, the technology is more interesting than the particular things that they are asking about. Yesterday I was working with a particular large dataset (full of unstructured data), and it was not immediately obvious how to store or organize the data in a way that would allow me to get results in a reasonable amount of time. It turns out that the answer was 142.

ps. Stop breaking our website. The thing that users were doing by putting a script tag inside an HTML comment turned out to be based on a legacy "feature" of browsers based on a ridiculous workaround from 1999 when not all browsers supported JavaScript. Next time someone finds something that breaks our site, please report it by email instead of sowing chaos. Instead of putting out fires when things go haywire, we would much rather spend our days replacing old bugs with new bugs and chasing after wild geese.

Small Updates

by BugMaster, May 27, 2020, 7:29 PM

Not much to report publicly. We've been doing a bunch of stuff behind the scenes.

As always, we spend far more time on sales taxes than you could possibly imagine. Sales tax rules are fussy, and we have to rely on some third party services in order to make sure that everything works correctly. There is a lot of stuff that goes into making sure that the customers are charged the correct amount of sales tax.

Speaking of sales tax, once I ordered a cold sandwich to go via a restaurant's app. In California you do not pay sales tax on cold sandwiches to go. I added extra avocado (a cold ingredient), which cost a dollar, to my cold sandwich to go. The app charged me sales tax on the avocado. This was a mistake.

There has been talk of freshening up some of our math-learning parts of the site. There are plans in the works to make some improvements to our classes. Some people taking classes might have seen some of our early experiments with changing up the homework a bit. Some of the teachers are reviewing the lesson plans and revising some of the problems. A lot more is being considered, including some things that will take a fair amount of time from the software development team. You might hear more in a Math Jam. Don't know what will actually happen, but a bunch of people are working on it.

Work on that is somewhat slowed by the fact that a lot of the team is thinking about how to take the in-person lessons from AoPS Academy and make sure they will work well online. For example, if a lesson calls for some sort of two-player game, then they need to make sure that it can be played via Zoom.

I heard that there is an online game on our site that some students are very fond of. These students are concerned that one of the underlying technologies that the game depends on is being discontinued. We are aware of this. We are discussing what to do about this. My impression -- which might be mistaken -- is that the primary goal of this game is for students to solve math problems.

Oh, there seem to be a bunch of contests happening on our site. A lot of my colleagues spent a lot of time in the middle of the night trying to get all of that in place in time to run the contests.

In terms of the contests, there is a lot of discussion about their names. Someone I know calls the AOIME the Ay-Oh-Me (like Naomi). Someone else I know has a child whose name shares four letters in common with AOIME; the kid's name has an "F" where AOIME has an "M." Thus, one could make an argument that they should rhyme. You don't know how to say the kid's name? Hint: It uses an Irish pronunciation. There is also the USO(J)MO, which, in my opinion, should most definitely have been named the USA(J)MOO. I don't think that we have a cow emoji in the AoPS community, so we can not emphasize the "-moo" part with a cow, which is a shame. And even more a shame that the "-moo" is just wishful thinking.

And in unrelated news, my friend's cousin has a final project for some class and needs to have people fill in a survey.
https://docs.google.com/forms/d/e/1FAIpQLScj8MU4-eNkcAKjLcJ31pHekZznjZlSiaWrFYxgN5rLEPn3GQ/viewform
If online surveys are the sort of thing that you are OK with, then think about filling it out. It's about school and different types of schools and what you learn in school and if you think that school was worth your time. If you would rather keep your thoughts to yourself, that is fine, too.

Isn't It Ironic?

by BugMaster, May 6, 2020, 3:32 PM

True facts.
Attachments:

Congratulations, yuxiao!

by BugMaster, May 4, 2020, 10:41 PM

Thanks to user yuxiao for submitting a regex that does a better job of matching the cube roots and other non-square roots pattern.

yuxiao's regex
(?!.*\^[({]1\/2[)}])\^[({](\d+\/\d+)[)}]
is better than our existing one
(\^.*(frac|.+\/.+))
which matches too many things and has an error in the way that it deals with curly braces. (Ours does try to deal with "frac", but the actual problems in homework don't have "frac" typed into their answers, so there is no need to try to match it. That's something that the parser handles with students' submissions.)

Congratulations! Let me know in the comments if you want me to change the name of a character in one of our word problems to your username (or another name of your choosing, I suppose) and which course.
This post has been edited 1 time. Last edited by BugMaster, May 4, 2020, 10:45 PM

MATHCOUNTS Week!

by BugMaster, Apr 30, 2020, 11:08 PM

Side note 1: I will check all your regexes next week. There is still time to submit a suggestion!

Side note 2: Niantic has also increased the radius for Pokéstops, which means that I now also have a steady stream of field research opportunities! If this keeps up, I have a good chance of making it to level 39... eventually. I've also tried to make a point of keeping my phone in my pocket all day so that all of my trips from my desk to the kitchen and then back to my desk will contribute to my step count for egg-hatching.

But, enough of that. MATHCOUNTS week is coming! My colleagues have a terrifyingly short time to finish up the code to make the AoPS side of it work. It's going pretty well, and some of the team works best while on deadline. Sorry to everyone who wanted us to spend that time fixing a scrollbar glitch that only happens for banned users in the community while using obscure browsers at 90% zoom and scrolling one way with the trackpad and the other way with a USB mouse. I'm sure that's still on our list somewhere!

Are you excited? We are excited! And, admittedly, a little bit nervous about the size of the Math Jam Countdown Round that is planned for Friday, May 15.

The Parser, the Previewer, and the Auto-Tipper

by BugMaster, Apr 27, 2020, 2:22 AM

Quick off-topic note: Ever since Niantic doubled the range for gyms in Pokémon Go, I can now reach the gym in the alley while sitting on my couch. Game. Changer. It turns out that playing Pokémon Go while sitting on your couch gets pretty boring after a while.

But enough of that, let me tell you about three small pieces of software that do not get enough love. They are the parser, the previewer, and the auto-tipper. They weren't very high on the priority list before, but now that a LOT of developer time is being put into providing educational resources to help students learn math while schools are closed, these have moved even further down the list.

The parser takes the answer that a student submits (either for Alcumus or a Challenge Problem) and compares it to the right answer that our team has provided. The parser tries really hard to decide if the quantities really are the same and whether the student's submission really is in the form that the problem requested. The parser is just a piece of software, though, and not a human, and it is not able to do all of the various algebraic manipulations that a human can do in order to see that two quantities are equal. The parser tries really hard, though. When the team checks on the health of the server, it's pretty clear that the parser is doing a lot of work.

Fun fact! The parser is written in Python. It might be the only part of the AoPS site that is written in Python. Nobody is sure why it is written in Python. Some people say it is because the previous version of the parser was written in Python. Other people say that this is not true and that the previous version of the parser was written in Lisp. Nobody really knows.

The previewer tries to take what a student has submitted and display it in LaTeX to help students determine if what they are saying is what they really meant. The previewer and the parser do not always agree. In fact, the previewer and the parser have very different opinions about what the submissions in calculus classes mean, so the previewer has been turned off in calculus classes. Because it lies. Lies! Yes, we should fix it.

Yes, there are a lot of things that should be fixed. Yes, other things keep moving ahead of this one. For example, physics classes need answers typed in different ways from math classes. Math classes hate it when you type units with your answers; physics classes require it. Math classes insist on exact answers; physics classes want numbers approximated to a particular number of decimal places. So in order to get basic stuff working at all for physics classes, we have to move it ahead of some of the math stuff that is only somewhat broken.

But let me tell you about the auto-tipper! Just like how there is an auto-tagger in the community that suggests tags for your posts, there is an auto-tipper in the homework system so that we don't need to specify all the formatting tips by hand for all of the problems.

There is a quote attributed to Jamie Zawinski that says:
Quote:
Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.

The auto-tipper uses regular expressions (you may also hear them referred to as "regexes"). You might not know what regular expressions are. They are a form of black magic that we use to tell a computer to match a particular pattern of text. For example,
[ab]\d.\d
would match anything that starts with the character a or b, then has a digit, then has any character, then has any digit. So it would match to a2(3 but not to c2(3. It would match a989 but not a98g.

Are you bored? Need more things to keep you busy? You should learn more about regular expressions! You can practice using regular expressions and test them out at the site http://regex101.com.

Let me tell you why: The auto-tipper for cube roots and other non-square roots has a small mistake in it. While fixing all of the other broken software is going to take people working full-time for a significant amount of time, fixing this mistake in the auto-tipper involves writing a new regular expression (something that you could do) and then putting it in the place where it belongs.

So here is my task for you: Write a regex that matches algebraic expressions that include roots other than square roots. When we're writing the answers to problems, we use fractional exponents in order to denote roots other than square roots. So your regex should match an algebraic expression that contains fractional exponents (so that the auto-tipper will suggest the cube roots and other non-square roots tip) and should not match algebraic expressions that do not contain fractional exponents. That is, your regex should match something like $2^{\frac{1}{3}}$ (which we should type as 2^(1/3) in the homework system) or $(x^2 + 6)^{\frac{3}{5}}$, typed as (x^2 + 6)^(3/5), but it should not match something like $\frac{(x^2 + 6)^3}{5x}$, which would be typed as (x^2 + 6)^3/(5x). Added wrinkle: I think that some of the problem-writers use LaTeX for writing the answers. But for now, let's stick to plain text.

This is Round 1 of the BugMaster regex challenge. In Round 2 we'll see if we also need to match LaTeX in order to make this work. Once we have a winner (or winners) and an excellent regex that always suggests the cube roots and other non-square roots tip at the right time and never at the wrong time, I will try to sneak the winner's (or winners') name(s) (by which I mean username(s)) into a word problem in the course of their choice. Do note that this is not a promise, especially as there is a daily email that rats out all changes to homework problems.

Submit your regexes in the comments! Peer review the other submissions and let the author know if you've found mistakes: Are there situations with fractional exponents that get missed? Situations without fractional exponents that get matched by mistake?

Some Brief Thoughts on Public Health

by BugMaster, Mar 11, 2020, 6:02 PM

These days everyone is talking about SARS-CoV-2. I have a few small facts to share with you.

1. If you are interested in bioinformatics, researchers have published the entire genome of the virus here: https://www.ncbi.nlm.nih.gov/nuccore/MN908947

2. There is a lot of cool math involved in bioinformatics.

3. Middle school and high school students are typically not experts in epidemiology, no matter how much they have recently read on the internet.

4. The mathematics of epidemiology is more sophisticated than calculating percentages.

5. Wash your hands. You should be doing that anyway.

6. Listen to the adults in your family and the experts in your community for the information that most likely applies to you and your situation.

Fun New Puzzles!

by BugMaster, Feb 27, 2020, 8:55 PM

I think that I mentioned before that we had a bunch of cool things coming this year. One of them is a new book! It's in the Beast Academy series, but it is fun for the whole family.

It's a puzzle book! In each section, the early puzzles are pretty easy (good for elementary school kids). However, the puzzles at the end of each section can be pretty devious. Highly recommended as something to keep you busy when you are waiting around somewhere with no internet. And puzzles are fun!

You can print off the samples and have some wholesome family fun today!

Tales from the Bug Reports: Language edition

by BugMaster, Feb 20, 2020, 6:17 PM

I try to be careful about which bug reports I post on the blog. I don't want to make fun of any students for being confused about math.

However, this bug report is of note.

First off, it's about language arts at AoPS Academy, which is dealt with by a different BugMaster persona (the Language Arts Bugmaster). So it's impossible for me to criticize the student's understanding of mathematics in this case.

The student wrote the same statement 374 times. In German. Also, it is not a polite statement.

The beginning of it translates to "You are a..." The word that finishes the statement would be caught by the language filter if I translated it to English. Enough people know the German word* that it would not be right for me to write it here.

I don't know how many of you speak German, but in German there are three different words for "you."** There is "du" which is used to address one person in a friendly setting. You would use du to talk to a relative or to a pet. Adults would use du to speak to a child (typically elementary school age). There is also the word "ihr" which is used in similar contexts but when talking to several people. In English ihr would roughly translate to y'all. And, finally, there is "Sie" which is used in formal situations (both in the singular and the plural). You use Sie when talking to strangers (especially if you are in northern Germany). Students use Sie when talking to teachers. A friend from Germany gave me the guideline that if someone is wearing a tie, you should use Sie when talking to him.

This student phrased this bug report as "du bist ein..." when that is not appropriate for the situation. One should write something more along the lines of, "Sehr geehrte Doktor BugMaster, Sie sind ...."


*A note about polite vs. impolite words in German and English. There is an English word that we would never say on this site because it would be caught in the language filter and it is not polite. It is used to describe an incident that has kind of spiraled out of control with bad things. A storm of badness, as it were. This word has been brought -- unchanged -- into German where it is not considered impolite. In fact, you will sometimes hear this word on the national news in Germany! Note that if you want to learn these German words, you should hang out with people from Germany.

**Dear language purists, I am talking about the second person in the nominative case. I understand that English also uses "you" in the objective case while German also has dich, dir, euch, and Ihnen in the accusative and dative cases.
This post has been edited 1 time. Last edited by BugMaster, Feb 20, 2020, 6:20 PM

Rants and Musings from BugMaster

avatar

BugMaster
Archives
- September 2021
+ April 2018
+ December 2017
+ August 2017
+ October 2016
Search Blog