So this program I threatened to make more than a year ago is finally in some state of completion.
Essentially, the Question Mixer is capable of parsing tossups or bonuses (you can't do both at the same time at the moment) in a manner so that questions get spread out throughout a packet. Users specify a spacing number that is the minimum number of questions that must come between questions of the same category (for example, a number of 3 means there must be at least 3 questions in between Literature questions in a packet when possible). Besides that rule, the packet is generated randomly.
Even if you like mixing your packets manually, this should give you a decent enough random starting point to start changing things around with. And it could potentially save a lot of time if it's getting late at night or early in the morning and questions haven't been mixed yet.
I'd appreciate it if people could test this program out and let me know about any bugs they find. Because I wanted to preserve formatting, I had to delve into the depths of the Real Text Format, which can get pretty ugly. I'm sure there are probably some cases I overlooked that could mess things up.
Potential feature updates:
-Create a special text box for tiebreakers, which will always go at the end of the packet.
-Create a special text box for trash questions, which will never appear in the last few questions of a packet.
-Create a better process for parsing questions into categories. Ideally, I'd like to let the user paste in all of the tossups at once and set some values for how many of each category there are. For instance, if the first four tossups in the packet were lit, you'd just set a text field to be four and it would know the first four questions are all in one category. This would speed things up a bit, especially if you could save these values.
(not so great looking at the moment. By the way it's in C# 2008)