A bit of everything

Today was a really good day, at least for summer break. I got to see my girlfriend again (second time in the last week… woot), got a long-standing WikiBench todo done, and found some pretty nasty bugs in Mono’s implementation of the 2.0 framework TryParse methods for integer types. Somewhere in there I sent a…

WikiBench: Persistence

One of the things I’d been dreading implementing in WikiBench is state persistence. This is, however, very important. When the user closes the application, they should find it in the same state they left it in when they open it later. This is a tricky one to get right, though. Because one of the goals…

JavaScript Queues

One of the most annoying parts of VandalSniper from a maintenance perspective was how the “JavaScript Queue” was run. To perform some complex action such as rolling back an article and posting a warning to the talk page of the editor required a sequence of JavaScript snippets to be run, one each time the browser…

What’s in a name?

Quite a bit, if you’re Gtk#. I’ve implemented the popup user menu in WikiBench.MediaWikiIntegration, along with the extension points for other addins to insert their own menu items into the menu. They can either provide a type extension using a class that derives Gtk.MenuItem, or a custom extension node provided by MediaWikiIntegration to add a…

Glue-free JSCall#

One of my goals during this rewriting of VandalSniper as a more general-purpose browser has been to reduce or eliminate the dependency on platform-specific glue libraries. JSCall# uses a C/C++ library to interact with the DOM, and this is just one more hurdle to be jumped over on the road to portability. Who wants to…

More on WikiBench

I’ve been hacking on WikiBench some more. The primary addition is the recent changes pad, which you can see in the screenshot. It is a separate addin that hooks into the WikipediaChangeStream addin to provide a list of changes to the user. Clicking a row in the list will display that diff in the browser,…

WikiBench

I’ve been fiddling around with Mono.Addins and have decided that I will be rewriting VandalSniper from the ground up. I’ve had a lot of ideas for it that have become way too complicated to implement with the current design. VandalSniper was my first C#/Gtk# project anyway, so it’s about due for a rewrite. I’ve learned…

WatchlistBot

Today I got around to implementing an idea I had for a while. I already had code in VandalSniper that would parse the IRC feed from browne.wikimedia.org into objects that represented each edit. So, I simply pulled out those pieces, and threw them in with two other libraries for accessing Jabber and MySQL, and the…

Wikipedia in The Andersonian

My school newspaper published an article about Wikipedia. The author used me as a source, so I thought I’d share it here. I only noticed one minor factual error — VandalSniper is used by many non-administrators too; it’s not limited to admins. Page 1 Page 6

VandalSniper and MonoDevelop

Today I decided to try converting my script-based build procedure to a MonoDevelop project. The process was pretty straightforward, although there were some pretty annoying glitches that saw me scrapping the project files several times before it was “just right.” Now that the conversion is done, my experience with MonoDevelop is so-so. The work that…