Tom.Reding

Click here to start a new conversation. Thank you!
BarnstareditA barnstar for you!edit
A barnstar for you!edit
Thank you! :) ~ Tom.Reding & his 200-some-odd lines of regex (talk ⋅contribs ⋅dgaf) 02:03, 23 February 2015 (UTC) A barnstar for you!edit
A barnstar for you!edit
There's nothing quite like cleaning up a good, 'ol-fashioned clusterfuck. Thanks for pointing me in the right direction :) ~ Tom.Reding (talk ⋅dgaf) 04:17, 1 February 2016 (UTC) A barnstar for you!edit
Thank you for being one of Wikipedia's top medical contributors!edit
Thanks again :-) -- Doc James along with the rest of the team at Wiki Project Med Foundation 18:08, 3 May 2017 (UTC) Barnstar awardededit
A barnstar for you!edit
Another barnstar for you!edit
Editor of the Weekedit
User:Buster7 submitted the following nomination for Editor of the Week:
You can copy the following text to your user page to display a user box proclaiming your selection as Editor of the Week: {{User:UBX/EoTWBox}}
Thanks again for your efforts! ―Buster7 ☎ 20:38, 28 January 2018 (UTC)
The AWB Barnsteredit
A barnstar for you!edit
Thank you for being one of Wikipedia's top medical contributors!edit
Thanks again :-) -- Doc James along with the rest of the team at Wiki Project Med Foundation 18:08, 3 May 2017 (UTC) Congrats on joining the million edit club!edit
A barnstar for you!edit
A Dobos torte for you!edit
7&6=thirteen, thank you :) And I really should take the test, but I can't be bothered while editing...perhaps that is or should be one of the questions?? ~ Tom.Reding (talk ⋅dgaf) 16:49, 15 October 2018 (UTC) Thank you for being one of Wikipedia's top medical contributors!edit
Thanks again :-) -- Doc James along with the rest of the team at Wiki Project Med Foundation 17:41, 28 January 2019 (UTC) A barnstar for you!edit
Thank you for being one of Wikipedia's top medical contributors!edit
Thanks again :-) -- Doc James along with the rest of the team at Wiki Project Med Foundation 18:35, 5 March 2020 (UTC) A barnstar for your effortsedit
Preciouseditastronomy gnome Thank you for quality gnomish work on a large scale, making {{authority control}} available, creating redirects and talk pages, for writing and maintaining astronomy-related articles and categories such as Abell 665 and Category:Discoveries by Carl W. Hergenrother, - Tom, user conceived with a sploof in 2009, you are an awesome Wikipedian! You are recipient no. 2523 of Precious, a prize of QAI. --Gerda Arendt (talk) 19:49, 29 January 2021 (UTC)
A barnstar for you!edit
I see we both have OCD. I had no choice but to give you this barnstar. Scorpions13256 (talk) 23:27, 13 February 2021 (UTC)
A barnstar for you!edit
A barnstar for you!edit
A Barnstar for you!edit
A barnstar for you!edit
For improving Navseasoncatsedit
Barn!edit
A barnstar for you!edit
Another barnstar for you!edit
A barnstar for you!edit
A barnstar for you!edit
Have a pint.edit
A barnstar for you!edit
smiley award!edit(Explanation and Disclaimer) Some cookies for edit 1.25 billionedit
Precious anniversaryedit
A barnstar for you!edit
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
V Vescovo page question from subject
editHi Tom. Thank you for becoming involved in the page about me. I strongly avoid editing my own page (unless there is an ad hominem attack on it, as there was a couple of years ago). But looking for your advice, on an unusual matter. (The page is: Victor Vescovo, undersea explorer and investor)
For biographies of living persons, it is usual to have at least some mention of their 'Personal Relationships/Married Status.' Thankfully, I have been able to avoid that, but I had an ex-girlfriend I lived with for 7 years accuse me of being married to her via common law marriage law in Texas. It was a preposterous claim, and I took it all the way to a jury verdict after a 1.5 year trial. Jury found that, no, we weren't married in a 12-0 unanimous verdict in 30 minutes . . . but she keeps claiming that we were married on social media.
It would be very helpful to have a very simple, brief, section on my page that says I have never been married and have no kids. If it would be helpful, to clear up the confusion, to add that a "previous girlfriend" (I'd rater not name her which would give her prominence in the search engines) claimed she was married to me, but a Texas court ruled that the were not. I can provide a pdf of the jury and judge verdict and order dismissing the case. Just not sure how to work this within the rules of Wikipedia as I always want to do the right thing in terms of editing. I love your engineering background, and you seem very fair, so just looking for advice on how to handle this, as I think the information is now pertinent and Wikipedia is such an authoritative source on things like this.
Thank you for your time, Victor Vescovo 2600:100C:B24A:AAA3:9501:D4A:2F73:B66E (talk) 2600:100C:B24A:AAA3:9501:D4A:2F73:B66E (talk) 14:28, 23 May 2025 (UTC)
- @Vlvescovo: did you write this? If so, I'll move this discussion to Talk:Victor Vescovo, as that is the most relevant, centralized location. It is best to log in to Wikipedia before leaving a message (if possible), so that the message can be attributed to your verified account, and not a random IP address. ~ Tom.Reding (talk ⋅dgaf) 12:10, 25 May 2025 (UTC)
- Sorry, just saw this. Thank you sir. I am fine with the Personal Infoo section currently. It is accurate, and concise. Appreciate it. Best, Vlvescovo (talk) 19:55, 4 April 2026 (UTC)
Wiki page gone
editIt has been brought to my attention that my athlete wiki page “Barry Nobles” has been deleted. When I see the history, you’re the last one to have edited that page. I’m not sure how all of this works so I figured I’d reach out to you. Do you know how can I get this page back running? Thanks! Bikeman2000 (talk) 16:05, 29 May 2025 (UTC)
- Barry Nobles was redirected to Caroline Buchanan 4 years ago at this AfD discussion. For what you can do, see Help:My article got nominated for deletion!#What you can do after deletion? & Wikipedia:Why was the page I created deleted?#What you can do about it. ~ Tom.Reding (talk ⋅dgaf) 10:04, 30 May 2025 (UTC)
John James Mackintosh Shaw
editNote
editHello!
For the LoMP (which I thank you for your outstanding efforts on them), asteroids 811001 to 811552 were numbered but has not yet appeared on the LoMP. Can you please fix that? Also, it will be appreciated if the remaining info (group, diameter, categorization) are added to the recent batches! Thank you! Elios Peredhel (talk) 08:59, 26 June 2025 (UTC)
Help with Collaboration on Project?
editHello Tom would you be interested in contributing to an additional legal software page? Marktorres823 (talk) 02:04, 16 July 2025 (UTC)
Taxobox articles missing a taxonbar
editCategory:Taxobox articles missing a taxonbar is rather full. Many of the articles have the wikitext species of [[beetle]] of the family [[Chrysomelidae]] and were created by B33tleMania12, I assume using some kind of template which doesn't include {{Taxonbar}}. Could some kind of bot run fix these articles? Peter coxhead (talk) 10:04, 5 September 2025 (UTC)
Actually the same is true for Category:Taxobox articles possibly missing a taxonbar. Peter coxhead (talk) 10:06, 5 September 2025 (UTC)
Done for Category:Taxobox articles missing a taxonbar (18), but almost all of those listed in Category:Taxobox articles possibly missing a taxonbar either don't have a Wikidata item yet, or don't have a PID recognized by Taxonbar.- B33tleMania12 might want to collaborate with Edibobb/Qbugbot, who did a very good & thorough job after rigorous community discussions. ~ Tom.Reding (talk ⋅dgaf) 11:36, 5 September 2025 (UTC)
Cosmetic edits, again
editHi, you seem to have made a lot of edits like or which serve no purpose at all as far as I can see, but unnecessarily pollute watchlists and edit histories (and may even have a negative impact when pages get moved). I don't know how many times I have had to ask this already, but please don't make such edits (which are not allowed by the AWB rules of use anyway). Fram (talk) 08:51, 22 September 2025 (UTC)
To give an idea of the scale, of your latest 100 edits, only 3 needed a listas. Fram (talk) 08:57, 22 September 2025 (UTC)
- While the percentage of these has dropped, you still add many of these. Why? Fram (talk) 15:18, 29 September 2025 (UTC)
- To remove them from Category:Biography articles without listas parameter. Looks like Wizardman and I finished all the obvious cases. ~ Tom.Reding (talk ⋅dgaf) 15:25, 29 September 2025 (UTC)
- That's not a good reason. Cosmetic edits to remove things which don't need maintenance from maintenance categories indicates a mistake with the way the maintenance cat is populated, not countless edits that need to be made. We have plenty of maintenance cats where actual maintenance is necessary. Fram (talk) 15:30, 29 September 2025 (UTC)
- To remove them from Category:Biography articles without listas parameter. Looks like Wizardman and I finished all the obvious cases. ~ Tom.Reding (talk ⋅dgaf) 15:25, 29 September 2025 (UTC)
Wikipedia research
editHello I'm a student from LUISS university in Rome and I'm working on a presentation based on wikipedia's crowdsourcing process and one part of the work is to put myself in the shoes of a wikipedia contributor and find out some feeling he receives when editing or writing pages. The questions I would like to receive answers on are the following:
- What does the editor think and feel:
- What does the editor say and do:
- What does the editor hear and see (about its surroundings):
- What are his pains (what type of frustration does the user feel when contributing):
- What are his gains (what does make him feel good when contributing):
Active support is really needed so thanks in advance and have a great day Tartaluca (talk) 14:34, 11 November 2025 (UTC)
Porous Delays
editIt's all delayed, so don't worry that it's away from post ~2025-32830-71 (talk) 02:39, 14 November 2025 (UTC)
Tracking category issue
editMerry Christmas and a Prosperous 2026!
edit| Hello Tom.Reding, may you be surrounded by peace, success and happiness on this seasonal occasion. Spread the WikiLove by wishing another user a Merry Christmas and a Happy New Year, whether it be someone you have had disagreements with in the past, a good friend, or just some random person. Sending you heartfelt and warm greetings for Christmas and New Year 2026. Happy editing, Wishes from Vestrian24Bio |
Click here to see the Christmas message I wrote...💞! Vestrian24Bio 09:58, 25 December 2025 (UTC)
Happy New Year, Tom.Reding!
edit

Tom.Reding,
Have a prosperous, productive and enjoyable New Year, and thanks for your contributions to Wikipedia.
Abishe (talk) 17:07, 31 December 2025 (UTC)
Send New Year cheer by adding {{subst:Happy New Year fireworks}} to user talk pages.
Question
editGood afternoon,
I wanted to ask whether you would be willing to review and publish my Wikipedia article on the main page as a more experienced user.
Thank you in advance! E0004AA (talk) 03:53, 20 January 2026 (UTC)
Precious anniversary
edit| Five years! |
|---|
Qualitative Research + Documentary for Wikimedia
editHey Tom, I’m an independent researcher conducting qualitative research for Wikimedia about the motivations and work practices of top Wikipedia contributors. It would involve one interview (it could be in-person, we're in NY) and we would be happy to provide compensation for your time. The research may be used by Wikimedia to design new tools for Wikipedians. We may also edit the same interviews into something more akin to a documentary. Let me know if you’re interested and I'll provide more details. Thanks! Jonah Ginsburg (talk) 22:30, 20 February 2026 (UTC)
hello Tom.Reding.My name is Jay. I am an old friend of Newt Ewell. I lost touch with Newt years ago, and I am trying to contact him. You made a small edit to his Wikipedia page, so I thought it may be possible you know him. If this is so, I would be grateful if you can help me re-connect with Newt. If you know his current contact info, please respond here and I can give you my contact info. Thanks very much! Jwatt33 (talk) 23:11, 11 March 2026 (UTC)
- I don't know him. ~ Tom.Reding (talk ⋅dgaf) 23:24, 11 March 2026 (UTC)
Poe, Larkin (and others)
editI noticed that you had edited the Larkin Poe talk page to change the listas to "Poe, Larkin". This doesn't seem right to me, and doesn't match the listases for other bands named after people, like Jethro Tull and Bon Jovi. After fixing this, I went on to discover that you had done a general sweep of a bunch of similar pages. Leaving aside the question of when to list bands as "The Whatevers" or "Whatevers, The", it looks like you (accidentally?) swept up at least some other bands like Larkin Poe where I don't think listing by the last word is appropriate - for instance, White Miles. Porcelain Raft looks like another similar case. Do you agree those should be fixed? Brianyoumans (talk) 14:54, 19 March 2026 (UTC)
- I'm following
{{DEFAULTSORT:Poe, Larkin}}on Larkin Poe. If you don't agree with it, you should contact whoever set that. ~ Tom.Reding (talk ⋅dgaf) 15:00, 19 March 2026 (UTC)- Ah, I get it - if that's incorrect, then obviously your script won't do the right thing either. Well, I suppose there isn't any good way to correct errors like that except eyeballing each one. Thanks! Brianyoumans (talk) 15:05, 19 March 2026 (UTC)
- If you can demonstrate consensus, I can change bands'
{{DEFAULTSORT:Poe, Larkin}}→{{DEFAULTSORT:Larkin Poe}}and|listas=. ~ Tom.Reding (talk ⋅dgaf) 15:11, 19 March 2026 (UTC)- Eh, it's not an article that gets a lot of eyeballs, so asking for consensus would probably be futile. I just went ahead and changed it. If anyone complains we can discuss it. Brianyoumans (talk) 15:32, 19 March 2026 (UTC)
- I went and looked at the White Miles article more closely, and the defaultsort for it *is* "White Miles". I'm not sure how your script came up with "Miles, White" for that one. (I fixed it.) Brianyoumans (talk) 15:39, 19 March 2026 (UTC)
- Yeah, there are errors here. I just fixed the listases for Milk Cult and Moscow Art Trio as well. Both of them had correct defaultsorts on the main page but the listases you added were "Cult, Milk" and "Trio, Moscow Art".Brianyoumans (talk) 15:51, 19 March 2026 (UTC)
- I'll impose stricter checks for musical groups. ~ Tom.Reding (talk ⋅dgaf) 15:54, 19 March 2026 (UTC)
- Sounds good. Thanks!!! Sorry if I've been a pest. Brianyoumans (talk) 16:00, 19 March 2026 (UTC)
- I'll impose stricter checks for musical groups. ~ Tom.Reding (talk ⋅dgaf) 15:54, 19 March 2026 (UTC)
- Eh, it's not an article that gets a lot of eyeballs, so asking for consensus would probably be futile. I just went ahead and changed it. If anyone complains we can discuss it. Brianyoumans (talk) 15:32, 19 March 2026 (UTC)
- If you can demonstrate consensus, I can change bands'
- Ah, I get it - if that's incorrect, then obviously your script won't do the right thing either. Well, I suppose there isn't any good way to correct errors like that except eyeballing each one. Thanks! Brianyoumans (talk) 15:05, 19 March 2026 (UTC)
Another bug report. While fixing stuff, I noticed this odd one - your script added a listas for this band name, which didn't have a defaultsort at the time, but truncated it to just "Captain". (I fixed it.) Brianyoumans (talk) 16:42, 19 March 2026 (UTC)
Another bug report
editLooking through the past days' edits, I think you have almost completely fixed the problems I flagged. I only found 3 edits that I ended up correcting, and they were definitely edge cases. Two of them were like this one: Jeff & Sheri Easter. Since it is a musical group led by two actual persons (a married couple, even) using the last name of "Easter", it didn't seem quite right to classify them as a group named "Jeff and Sheri Easter", so I changed that to "Easter, Jeff and Sheri", which is what the defaultsort on the article page was. The third case was a person named Bartholomäus Bernhardi of Feldkirchen, which you had listas-ed as "Bartholomaus Bernhardi of Feldkirchen", which matched the defaultsort on the article page. I changed both of them to "Bernhardi, Bartholomaus, of Feldkirchen". In this case I think the defaultsort on the article page was just incorrect, or at least I disagreed with it.Brianyoumans (talk) 21:10, 20 March 2026 (UTC)
New GetHTML fix
editIdiotically, I applied the fixes to the WikiFunctions dll and then only uploaded the AWB exe. That'll teach me to try to fix something in short bursts from hotel rooms.
I have a new release in the full standard format at https://1drv.ms/u/c/468817188d6582db/IQDttgbZEGk4RZhThDMvaji_AbspdCX2Ub8-uTZ5HAP7TZY?e=IcNd2h. If you still want to try it. I think it qualifies as "if it does no good it'll do no harm", but (as I suggested on MW talk) it's possible that the response can make your code quietly wait for hours. David Brooks (talk) 14:47, 25 March 2026 (UTC)
- Just tried it and it's an improvement! I hit error 429, and your AWB kept processing (waiting) on the page until the error cleared, which only lasted for a little over 1 minute. Fortunately, this is something that can be easily handled by a custom module via
System.Threading.Thread.Sleep(THROTTLE);. It's better imo to leave this throttling to the user, and not incorporate it into a dll, to give the user more optionality on how to handle the error.- The code paths in the AWB exec don't use the WikiFunctions Tools, and I implemented and checked in their retries a while ago. I did put them up on github, but the official maintainers haven't released a new version for a while. If you are seeing a countdown in the status bar, or it is happening when making a List, then it's the old code. I did it in response to some phabricator discussions. The new code, all in WikiFunctions, does indeed silently sleep the thread by the requested number of seconds. I only just became aware today of the "Wikimedia APIs" discussion; in my haste I didn't follow the link you provided at the time. I'll give some more thought to your suggestion of exposing a new API. The AWB and WikiFunctions code are old, issue HTTP requests in different ways and in different places, so it may not be that simple. David Brooks (talk) 15:34, 25 March 2026 (UTC)
- Do you think there will be a permanent solution available, one where GetHTML requests within an authenticated AWB instance are also authenticated, as opposed to currently being treated as "anon" & thus rate-limited? ~ Tom.Reding (talk ⋅dgaf) 15:15, 25 March 2026 (UTC)
- I only understand itty-bitty places of the whole codebase, but as WikiFunctions is intended to exist independent of the exe (does anyone actually use it that way?) it may be more of a lift to transmit the authentication across that gap. David Brooks (talk) 15:34, 25 March 2026 (UTC)
- I've been thinking about your first suggestion. Leaving the throttling to the user is actually the current status quo - you have to wrap the GetHTML() call in a try/catch WebException, analyze the exception and do what you want where appropriate, or rethrow the exception. That is the change I made inside GetHTML, to do that analysis, and sleep/retry. It seems like too much extra code for the API caller, and easy to get wrong. The downside is that it can silently sleep for an arbitrarily long time.
- I only understand itty-bitty places of the whole codebase, but as WikiFunctions is intended to exist independent of the exe (does anyone actually use it that way?) it may be more of a lift to transmit the authentication across that gap. David Brooks (talk) 15:34, 25 March 2026 (UTC)
- My initial thought is to add
bool TryGetHTML(string url, out int retryAfter)where true means it worked, and false means the server has requested a retry after retryAfter seconds. This method is responsible for analyzing the status code and the retry header. You can then sleep and retry, or report to the user. Any other WebException would be rethrown. Not a huge amount of code but simpler for the caller. You don't get to know whether it was a 429 or a 503 however. I agree copying authentication would be more robust, but not sure it would avoid all rate-limiting. David Brooks (talk) 01:45, 26 March 2026 (UTC)- Is
retryAfterstored in the caught exception object? If so, that would be very useful. ~ Tom.Reding (talk ⋅dgaf) 01:58, 26 March 2026 (UTC)- Are you asking about the first paragraph or the second? In the first case, yes, but according to the MW guys, right now it's possible that it may be a 429 (too many requests) with no Retry-After, which should default to 5. Also you need to re-cast the exception. IOW you could do that today but the code is non-obvious. I handle that (and more) in my new code.
- In the second case, the design would drop any Retry-After into the out parameter - again defaulting to 5 if called for. When I said "any other WebException would be re-thrown" I meant to add "or any other class of exception". You just get added flexibility that way. David Brooks (talk) 03:12, 26 March 2026 (UTC)
- I was asking more about the 1st paragraph, and suggesting that
GetHTMLbe changed such thatretryAfteris returned in some way in the exception object, like appended toexception.Message, for example. That gives the user the most flexibility and can be incorporated into existing code easily. - If that's not possible, then the 2nd paragraph,
TryGetHTML(), sounds like the next best thing. ~ Tom.Reding (talk ⋅dgaf) 11:16, 26 March 2026 (UTC)- My own thinking is that if another user starts to experience an exception thrown on GetHTML (does anyone else use it?) they will first wonder what they did wrong and then maybe post on AWB Talk. I really don't think "change your code" is the most friendly response when we have a backward compatible solution at hand, with the admitted downside that it can in principle silently stall the app for up to 24 hours. Also, Exception.Message is readonly, so the handler would have to throw a new Exception, which is generally frowned on because it discards the original caller's stack frame.
- I think the MWF has handled this rollout badly, and we keep discovering new changes the hard way. Also I only just realized that the fixes I made to the AWB app itself were unnecessary because it has a compliant User-Agent and I think but am not sure that gives it complete immunity. For now. Adding a User-Agent to GetHTTP might be workable (I can think of a reason why not), but the Foundation would later realize that anyone could get a free pass that way and lock it down some more. Who knows. I do have some sympathy while they are getting overwhelmed by AI trainers though.
- Also, they have not, as far as as I know, completely ruled out the possibility of the Reply-After header having a date/time parameter instead of integer seconds (see RFC 2616 and 6586), or included with some other error status code such as 3xx; I have coded defensively here.
- I also think it's time to put this discussion in a phabricator ticket so the official maintainers have visibility, although they don't seem too concerned yet. David Brooks (talk) 18:26, 26 March 2026 (UTC)
- I was asking more about the 1st paragraph, and suggesting that
- Is
- My initial thought is to add
Well, that TryGetHTML() definition won't work, because its actual function in the absence of error is to return the response body as a string, duh. We could return null as a retry signal, but I don't like using a function result to mean two different things (which the .NET libraries often do, of course). Time to think some more.
To answer your question way up thread about the exception's content: yes, it does contain the retry information, but you have to dig. First cast the WebException's Response property to an HttpWebResponse, then extract its StatusCode and look up "Retry-After" in its header collection, then do some sanity checking. If nothing comes of that, rethrow the WebException. There are slightly cleaner ways of doing it, but would require a bigger rewrite. David Brooks (talk) 03:12, 27 March 2026 (UTC)
- You could overload
retryAfterinstring TryGetHTML(string url, out int retryAfter)to return 0 if the request is successful. Any value != 0 would mean the request failed (> 0 would mean that the error returned an actual retryAfter value, and -1 would mean any other error). ~ Tom.Reding (talk ⋅dgaf) 09:54, 27 March 2026 (UTC)- Much more sensible, I think. I'm a little uncomfortable with the "Try" prefix, as in established practice that pattern returns a boolean, but I can get over that. But "any other error" will be an thrown exception (usually WebException other than a 429/503), and the caller might want to wrap this in a try/catch to further analyze and decide whether to write a log and/or bug out. I can set retryAfter to -1 before re-throwing that exception, but you would still need an outer try/catch somewhere on the stack (the AWB app has a general-purpose one). But as you are the only known customer I'll defer to you. David Brooks (talk) 12:36, 27 March 2026 (UTC)
- I'm surprised no one else has run into this limit yet, or at least not noticed these discussions & responded.
- I'm afraid I don't know what you mean by suggesting
I can set retryAfter to -1 before re-throwing that exception
. To me that sounds identical to-1 would mean any other error
, so yes, good. - I always try/catch GetHTMLs in my custom modules (I'm assuming that's what you mean by "an outer try/catch"), and I think that is (or should be) a best-practice, so any fix should assume the user is doing so, but also work if the user does not. But I would wait on creating a TryGetHTML actually, since your auto-retryAfter fix at the top is good for me at the moment. If/when more people come out of the woodwork as having rate-limit issues, and your auto-retryAfter fix isn't good for them, then we can discuss what would work best for everyone. Until then, I think effort is best spent on how to authenticate users within GetHTML, to hopefully avoid the need for a work-around. ~ Tom.Reding (talk ⋅dgaf) 14:18, 27 March 2026 (UTC)
- Thanks; that makes sense and also lets me off some more coding work. I'll open a phab ticket in any case just to open the discussion a little more. Should we report back to AWB Talk? I'd say no, unless the woodwork thing happens.
- On authentication, I think the rules are still a little muddled, but it may be sufficient to add a compliant User-Agent to the GetHTML request, without needing login cookies. Or not. But if that is the case, it's not much of a barrier to the bad guys, and anyway it may just relax the limits without removing them. But it would only be fake-compliant; the guidelines require the UA to contain contact information and that certainly won't be me. David Brooks (talk) 14:36, 27 March 2026 (UTC)
- I'll just leave a link to here for continuity/the curious.
- Contact info? Well that's my talk page.
- I'm surprised there isn't a way for GetHTML to piggyback/reuse/duplicate/etc. AWB's authentication for wiki urls, since I thought AWB uses the same API. Could you point me to the GetHTML code and to AWB's page content request code? ~ Tom.Reding (talk ⋅dgaf) 15:28, 27 March 2026 (UTC)
- Because it's in the WikiFunctions namespace/DLL, which is at a lower level than AWB proper and is intended to be independent (yes, they use the same HTTP MediaWiki API constructs but build the query independently). You can look at WikiFunctions/Tools.cs and AWB/Main.cs on sourceforge if you want. WikiFunctions doesn't have access to the current session data, which would include the cookies and username. But now I've given a quick look, code in AWB proper may be able to pass the current Session object as an additional parameter to a new GetHTML overload, which can then pick out what it needs from that object. That may work. An even quicker look at plugins suggests they can grab the current Session object if they have implemented Initialise(). David Brooks (talk) 17:01, 27 March 2026 (UTC)
- Much more sensible, I think. I'm a little uncomfortable with the "Try" prefix, as in established practice that pattern returns a boolean, but I can get over that. But "any other error" will be an thrown exception (usually WebException other than a 429/503), and the caller might want to wrap this in a try/catch to further analyze and decide whether to write a log and/or bug out. I can set retryAfter to -1 before re-throwing that exception, but you would still need an outer try/catch somewhere on the stack (the AWB app has a general-purpose one). But as you are the only known customer I'll defer to you. David Brooks (talk) 12:36, 27 March 2026 (UTC)
- I'm running a script now that checks and/or extracts info from multiple pages, on average 5 requests per page, so I run into the anon limit very quickly. Your fix is at least allowing that to go more smoothly, letting me wait for the minimum time necessary (this time it's much more than 1 minute), instead of me flying blind and retrying periodically (and possibly extending the time until the window reopens?). Thanks for that! ~ Tom.Reding (talk ⋅dgaf) 10:18, 27 March 2026 (UTC)
- Good to hear. TryGetHTML wouldn't necessarily speed that up, but it gives you the option to checkpoint and come back later. David Brooks (talk) 12:39, 27 March 2026 (UTC)
- Also: some clarifications: https://www.mediawiki.org/wiki/Talk:Wikimedia_APIs/Rate_limits#Retry_semantics_clarifications_requested.
- I'll future-proof accordingly. When it's done I'll look more into authenticating. We may need to add an additional parameter so the function can reach out and grab some cookies from inside AWB proper. David Brooks (talk) 13:07, 27 March 2026 (UTC)
- I just noticed on the Rate Limits talk page, in one of the long discussionn about perceived mishandling of rate limit introduction:
you should authenticate. For now, that would remove all limits, but only until we deploy the next set of limits (probably mid April)
. So perhaps more people around here will be running into limits. We may also find out the hard way that the default User-Agent string needs updating (it already isn't acceptable for with bots). But, mainly, that means extending GetHTML to provide authentication is no panacea. David Brooks (talk) 21:27, 28 March 2026 (UTC)- Anomie posted there recently about being affected that I just saw. I'm glad they did. ~ Tom.Reding (talk ⋅dgaf) 22:16, 28 March 2026 (UTC)
- Anomie is righteously mad. "Perceived mishandling" was me being polite. And I can't find this User-Agent regex they keep talking about. David Brooks (talk) 22:25, 28 March 2026 (UTC)
- I don't think the regex has been posted anywhere. It may be buried somewhere in operations/puppet, or they may have done it in some other repo. wmf:Special:Diff/564169 changed the User-Agent policy to hopefully reflect the patterns their regexes are looking for. P.S. By "authenticated" they actually mean "either logged in by browser, or using OAuth 2 (not owner-only)"; they say they'll eventually add the same sort of "sessionJWT" cookie for BotPasswords and OAuth 1 so those more common methods for authenticating a bot or tool can be considered "authenticated" too, but I don't know when. Anomie⚔ 23:31, 28 March 2026 (UTC)
- Anomie is righteously mad. "Perceived mishandling" was me being polite. And I can't find this User-Agent regex they keep talking about. David Brooks (talk) 22:25, 28 March 2026 (UTC)
- Anomie posted there recently about being affected that I just saw. I'm glad they did. ~ Tom.Reding (talk ⋅dgaf) 22:16, 28 March 2026 (UTC)
- I just noticed on the Rate Limits talk page, in one of the long discussionn about perceived mishandling of rate limit introduction:
- Good to hear. TryGetHTML wouldn't necessarily speed that up, but it gives you the option to checkpoint and come back later. David Brooks (talk) 12:39, 27 March 2026 (UTC)
- Thanks for noticing our bewildered discussion, Anomie, and thanks for the insights. Our context is AutoWikiBrowser, a 20-year-old Windows Forms app, only maintained as-needed (OAuth would be a big lift), and into which I recently jumped to fix the problems I could understand. It uses a .NET DLL that is conceptually independent of the app, so some gyrations will be needed to make it grab authentication cookies. And then maybe some also decades-old code will have to be updated if it wants more than 500/hr. Maintenance sucks (preaching to the choir here). And I'm old enough I sometimes dream in COBOL and PDP-7 assembler.
- Tom, I opened T421588 to alert the official maintainers. David Brooks (talk) 00:34, 29 March 2026 (UTC)
- And, dammit, there is so much to read, and the situation on the ground keeps changing. On the Rate Limits page, Limits table, second line, the limit for "User-Agent only", assuming the UA is compliant with the policy (which ours can't be) is "low", whatever that means. So that means existing GetHTML calls will fall under the 500/hour limit. The only way of escaping that will be to implement the credential smuggling and change existing plugins to use it. Then the limit will be 10,000/hr. David Brooks (talk) 22:52, 28 March 2026 (UTC)
- Hi - I'm about ready to implement the auth smuggling by adding a parameter. There are 4 overloads of Tools.GetHTML() and I'm loth to add 5 more (adding an optional parameter breaks binary compatibility). Do you use
GetHTML(string url)? If so I'll add that and postpone the others. David Brooks (talk) 23:20, 1 April 2026 (UTC)- Yes. I use it quite a lot. ~ Tom.Reding (talk ⋅dgaf) 23:27, 1 April 2026 (UTC)
- Hi - I'm about ready to implement the auth smuggling by adding a parameter. There are 4 overloads of Tools.GetHTML() and I'm loth to add 5 more (adding an optional parameter breaks binary compatibility). Do you use
Try this: https://1drv.ms/u/c/468817188d6582db/IQDttgbZEGk4RZhThDMvaji_AbspdCX2Ub8-uTZ5HAP7TZY?e=Lpdgw3. It's a draft; there are some details to work on. To use it - and I never asked if you are using a plugin or a module, but if a plugin - in your ProcessArticle(sender, eventargs) add a second parameter eventargs to your GetHTML(url), and recompile. Also make sure the new WikiFunctions dll is in the same runtime directory as the exe. It works for me; what I can't verify is whether it satisfies the server. Also, I don't know if it will handle the current problem at all.
If it's a module, simply add awb as the second argument. David Brooks (talk) 15:39, 2 April 2026 (UTC)
- I only use the module. I just hit the limit (on purpose) while using
GetHTML(url), and got stuck in 429 limbo, as expected. Then, I recompiled my module withGetHTML(url, out awb), and am still in 429 limbo. I wanted to see if the new authentication would circumvent a currently active rate limit (it can not). After I'm able to GetHTML again, I'll useGetHTML(url, out awb)exclusively to see if I still hit the limit. ~ Tom.Reding (talk ⋅dgaf) 16:33, 2 April 2026 (UTC)- I'm not sure what is happening. The signature is
string GetHTML(string url, IAutoWikiBrowser awb). There is another overloadstring GetHTML(string url, out string responseURL)but I don't see how that can work at runtime unless there is an implicit awb.ToString() somewhere. Are you sure the new DLL is being accessed at runtime? Also I didn't test a module in my hurry so I'll do that now. David Brooks (talk) 16:44, 2 April 2026 (UTC)- I first tried compiling
GetHTML(url, awb)(where awb is a string), but received an error sayingGetHTML(url, out awb)was expected (where awb is still a string). - My previous rate limit period expired. I ran
GetHTML(url, out awb)exclusively, but have entered 429 limbo again, so it appears there was an authentication failure. ~ Tom.Reding (talk ⋅dgaf) 17:12, 2 April 2026 (UTC) - I'm not sure how to check if the DLL is being accessed at runtime. I'm using a separate folder for the above zip. ~ Tom.Reding (talk ⋅dgaf) 17:15, 2 April 2026 (UTC)
- In a module, awb is a WikiFunctions.Plugin.IAutoWikiBrowser field which is set by the CustomModule constructor. So I don't know how it got to be a string, but it's understandable that it linked to that other signature. If you use that awb object it should only succeed to compile with the new DLL. But I can put a trace in if you want to be sure you are linking it.
- Which reminds me, please remove TestPlug.dll from the folder you are using. It will throw an exception, which will I hope be discarded. Sorry about the carelessness. David Brooks (talk) 17:27, 2 April 2026 (UTC)
- Oh, I see. I was mistakenly assigning
string awb = "";prior to the GetHTML call (I assumed, since I was able to do that without any errors, that was the right thing to do). I removed that and was able to compile & runGetHTML(url, awb)as you originally suggested. - Anyway...SUCCESS!!! I've called GetHTML over 2,000 times now with no error 429 limbo! ~ Tom.Reding (talk ⋅dgaf) 18:34, 2 April 2026 (UTC)
- Great! And thanks for persisting. Downside: I don't know whether the User-Agent or the auth cookies did the trick (i.e. did I get one of them wrong). User-Agent alone increases the bar to an as yet undefined value. I guess we can only tell by producing versions that only implement one or the other, but for now I'll take the W.
- Anyway I'll add a few necessary embellishments before checking in. David Brooks (talk) 19:08, 2 April 2026 (UTC)
- Uploaded the embellishments (cookie cross-host security and a compliant User-Agent) to:
- https://1drv.ms/u/c/468817188d6582db/IQCz15h0JK1qQZt38PZeaurxAaS4B9N2r-yfKx7cRVIbdns?e=biRvvw
- I'd appreciate if you could make sure it works for you, but I think I'll check it in anyway as I've asked Reedy to wait on his bot fix. David Brooks (talk) 21:11, 4 April 2026 (UTC)
- Tested again with over 2000 requests and no problems. Thank you very much for your maintenance. ~ Tom.Reding (talk ⋅dgaf) 02:09, 5 April 2026 (UTC)
- Oh, I see. I was mistakenly assigning
- I first tried compiling
- I'm not sure what is happening. The signature is
Use My Dates
editI notice you're updating Use my Dates to 2026
Am I supposed to amend these at each edit?
Martin Ojsyork (talk) 14:43, 13 April 2026 (UTC)
- The date refers to the last time the entire page was checked to conform to the {{Use dmy dates}}, {{Use mdy dates}}, etc. format. It's an infrequent process (several years+), so there's no need to amend them frequently. If you see an old date, though, like 10+ years old, it would be good to check, confirm, make corrections if necessary, and update the template. ~ Tom.Reding (talk ⋅dgaf) 15:07, 13 April 2026 (UTC)
Zero-padding of numeric sortkeys
editHi, edits like this have not been necessary for almost nine and a half years, see m:Community Tech/Numerical sorting in categories - specifically, since 22:07, 20 October 2016. More at mw:Manual:$wgCategoryCollation#Numeric sorting. --Redrose64 🌹 (talk) 13:06, 18 April 2026 (UTC)
Talk:Kai Newkirk#Peer review invitation
editThank you for helping as this article was getting started. I invite you to look at Talk:Kai_Newkirk#Peer_review when you have a moment, even if just casually. Tom Haws (talk) 22:43, 3 May 2026 (UTC)
A suggestion of DYK
editHi, I created a page about Léo Lins and I'd like you to create a DYK with the phrase "that a Brazilian comedian had his visa to Japan canceled after making jokes about the 2011 tsunami?" I thank. Cassilvwikis (talk) 15:17, 9 May 2026 (UTC)
Inconsequential AWB edits
editEdits like this, this and many others, where the only result is that a maintenance category is moved from one month to another, do nothing but clutter up watchlists and recent changes, and are arguable against at least the spirit of the AWB rules. Fram (talk) 16:19, 13 May 2026 (UTC)
- Fram: This editor is simply following the long-standing practice described in the documentation for {{Use dmy dates}}. If you object to these edits, the right place to do so is Template talk:Use dmy dates. Note that I have no opinion on the validity of these edits, but they have been happening for over a decade. – Jonesey95 (talk) 04:29, 23 May 2026 (UTC)
Vincelord
editWhilst I understand that typos can be frustrating I do not think that making comments like "This is an open book test. I don't understand how you're failing. Genuine question: are you dyslexic? If so, this is a terrible area to work in."
is an appropriate way to talk to people who make them. Or indeed anyone. FOARP (talk) 15:31, 14 May 2026 (UTC)
AWB
editHey, Tom,
You have been very busy emptying categories. I saw that another editor used AWB to handle the CSD C1 tagging but I've never used that tool before. Is it complicated? Thanks for any guidance you can offer. Liz Read! Talk! 21:55, 23 May 2026 (UTC)
- P.S. We get our list of empty categories from this tool on toolforgeC. Thanks. Liz Read! Talk! 21:57, 23 May 2026 (UTC)
- That's a useful tool. Thanks. I'll bookmark it.
- For using AWB to
CSDCFD tag, I usually do the 1stCSDCFD manually via Twinkle, then I copy theCSDCFD code (making sure to generalize any category-specific variables), then I prepend the code using the "More..." tab at the bottom of AWB (making sure there's a blank line between the end of theCSDCFD code and the previously existing category text). I used to use my own C# module to do this, but it was more complicated than it needed to be, so I haven't used it in a long time, plus I haven't done muchCSDCFD tagging in a while either, so caveat lector. - I didn't realize I was emptying cats (unfortunate, but it is what it is). I'll be done with my edits soon. Tomorrow I can take care of what's left that needs CSD'ing, if anything. ~ Tom.Reding (talk ⋅dgaf) 22:23, 23 May 2026 (UTC)
- Oh, this sounds more complicated and involved than I expected. This is why I haven't used AWB in the past. Yesterday was unreal, there were about 1500 empty categories to handle. Another admin took care of most of them using AWB but I wanted to see if I could learn to use it, too. If you could handle the rest of them tomorrow, that would be great. Pace yourself! Thanks again. Liz Read! Talk! 22:40, 23 May 2026 (UTC)
Done - a few dozen were left to CSD this morning.- My above advice is actually for CFDs & not CSDs. CSDs are considerably simpler. For these empty relations cats, all that's needed is to prepend
{{db-catempty|help=off}}to the top of the page, so what you do (from scratch) for other C1's in the future is:- open AWB
- make sure nothing is checked in the "Options" tab at the bottom
- in the "More..." tab next to it check "Enabled" & click "Prepend"
- paste the CSD template with no trailing whitespace
- select "Use 1 newlines" below
- in the "Skip" tab, make sure "Page" > "Doesn't exist" is selected at the bottom
- in the "Start" tab, next to "Default Summary" paste
Requesting speedy deletion ([[WP:C1|CSD C1]]).to mimic Twinkle's edit summary - under the "Options" menu at the top, make sure "Follow redirects" is unchecked
- under the "File" menu > "Save settings as..." > "AWB - C1.xml" or whatever you'd like so you don't have to recreate these settings in the future
- save separate AWB settings files for different CSD types - the only thing different between them are what you prepend (4) & the edit summary (7)
- Hope this helps. ~ Tom.Reding (talk ⋅dgaf) 12:13, 24 May 2026 (UTC)
- Thank you, Tom, I'll give it a try. I truly was just asking for advice, I didn't mean to put a damper on this big project of yours, removing all of the "X-B relations" categories. They really mushroomed into a mess and I'm glad we have editors like you ready to take on getting them under control. Maybe when I learn more about AWB, I can help out, too. Keep going! Many thanks. Liz Read! Talk! 19:04, 25 May 2026 (UTC)
- As you can see from Category:Empty categories awaiting deletion we have eliminated all of the extra empty categories from around 2800 to just around 200 which is normal for the project. If you want to continue on your "eliminating X-B relations subcategories", please continue. Have a good week. Liz Read! Talk! 15:58, 31 May 2026 (UTC)
- Thank you, Tom, I'll give it a try. I truly was just asking for advice, I didn't mean to put a damper on this big project of yours, removing all of the "X-B relations" categories. They really mushroomed into a mess and I'm glad we have editors like you ready to take on getting them under control. Maybe when I learn more about AWB, I can help out, too. Keep going! Many thanks. Liz Read! Talk! 19:04, 25 May 2026 (UTC)
- Oh, this sounds more complicated and involved than I expected. This is why I haven't used AWB in the past. Yesterday was unreal, there were about 1500 empty categories to handle. Another admin took care of most of them using AWB but I wanted to see if I could learn to use it, too. If you could handle the rest of them tomorrow, that would be great. Pace yourself! Thanks again. Liz Read! Talk! 22:40, 23 May 2026 (UTC)
OOM errors
editContinuing here because I've been getting too specific on the AWB talk page... I'm still assuming the change to RemoveSelected is the culprit. First, I don't see any comments suggesting changes to the actual preparse logic. Second, can I confirm that whatever you are doing results in a lot of titles being skipped in quick sequence?
If that's so, I can see two things. First, the current logic has some inefficiencies that consume (and release for asynchronous garbage collection) significant amounts of memory and time given your long article list, which can be easily mitigated somewhat, although one of them may need a bit of a workaround. But the big thing is that (I believe) the overwhelming majority of calls will have only one item selected at a time, so that should be shortcut as a special case. The Forms ListBox implementation does some dancing to make sure it's as inexpensive as possible.
Second, the distinction between removing or keeping duplicates of the removed items is, I think, moot. I don't see any way of there being any duplicates to begin with if that checkbox is already set on entry. And I don't see the point of removing them in any case, but I'll inspect the callers of this method first.
So, if you agree that the list items are usually removed just one at a time, I'll code that shortcut. I'll do those efficiency fixes too. They do require understanding of what happens under the hood of the LINQ set operations. David Brooks (talk) 00:16, 1 June 2026 (UTC)
- Yes, a lot of titles are being skipped in quick sequence. ~99% are skipped & discarded (logging turned off), one at a time. Also, the way I make the list is Source: Category, paste category name, Make list, Start. I never used the List Filter window, nor any right click features, for these OOM runs. ~ Tom.Reding (talk ⋅dgaf) 09:30, 1 June 2026 (UTC)
- Thanks. I have various versions of the code and will do some timings and try to do some memory analysis on a 20K list. David Brooks (talk) 20:50, 1 June 2026 (UTC)
- Try this: zipfile. As usual, unlock the zip before extracting. It only contains the quick fix for "remove single item"; I'll test the other changes before checking in. David Brooks (talk) 15:06, 2 June 2026 (UTC)
- Unfortunately, this requires .NET Framework 4.8.1, which isn't supported on Windows 7. All of my older AWB versions run on .NET 4.0.30319.42000. ~ Tom.Reding (talk ⋅dgaf) 15:45, 2 June 2026 (UTC)
- Well, that's annoying, because even 6.4.0.0 was released requiring 4.8.1. Reedy had changed it from 4.7.2, I think because of some security fixes. For now, try this. I don't know what to suggest long term. David Brooks (talk) 16:41, 2 June 2026 (UTC)
- Thanks, I was able to run AutoWikiBrowser6501-longlist-4.8.zip. It is still leaky & slowly processing pages. ~ Tom.Reding (talk ⋅dgaf) 17:27, 2 June 2026 (UTC)
- I just woke up to the implications of the above. Previously, were you still using AWB 63xx because of the framework version change? The unfortunate "fix" to the remove code was introduced in the 6400 version. In any case, can you remove the first article from the list? On my machine using a 100K article list it takes 4.5 seconds in the released version and 20ms with the fix.
- I may have been barking up the wrong tree, and the problem is somewhere in the preparsing code after all. On my new build, on my machine, preparsing a large list doesn't seem to chew memory, and it does a sequence of skips in about two seconds per item. Do you have any settings I should know about? David Brooks (talk) 18:16, 2 June 2026 (UTC)
- The framework was irrelevant to me until AutoWikiBrowser6501-longlist.zip required that I download .NET 4.8.1. I have been able to run all my AWB versions up to and including 6.5.0.0 using .NET 4.0.30319.42000 (per AWB's Help > About menu).
- Settings / steps to reproduce:
- File > Reset settings to original default settings
- Options > Preferences > uncheck "Enable Logging"
- Options > Use pre-parse mode
- Source > Category > Year of birth missing > Make list
- Options tab > uncheck "Auto tag" & uncheck "Unicodify whole page"
- Options tab > Auto changes skip options > check "Human category changes"
- Skip tab > uncheck "Only genfixes"
- Start tab > Start
- Using your AutoWikiBrowser6501-longlist-4.8.zip, I just performed the above steps and added a step 7.5, where I removed the 1st page as requested (I used the "Remove" button below the list). Unfortunately, the leak is still present. ~ Tom.Reding (talk ⋅dgaf) 19:37, 2 June 2026 (UTC)
- OK, I agree, it leaks, and so does 6.4.0.0 - only more slowly, because my one-line fix speeds up deleting the top item. I stopped it with just over 14,000 pages left and 3 of them pre-processed, and nearly 1 GB private memory (this ARM device uses more memory because it "compiles" x86 code into ARM64 code as it goes). But it kept 4 of my 10 cores busy, so there's that... But I just recalled you already said 6.4.0.0 leaks, so I'll have to look through the checkins before that release. Maybe tomorrow. Or, as a last resort, run it under the .NET heap analyzer in VS. There must be a chain of references to abandoned objects somewhere.
- I had expected that 6.3.1.1 would also be fast. I Rob changed the Remove logic just before the 6.4 release, but I guess he didn't fix what he thought he had.
- I only asked you to delete an item by hand to check if you noticed the performance difference.
- Also I'm weirded out by your 4.8.1 issues. I built this version exactly as I built the 6.5.0.0 release, with only one line of code and one character of text different. And my systems built on 4.8.1 and 4.8 all report 4.0.30319.42000 in About. David Brooks (talk) 19:20, 3 June 2026 (UTC)
- A couple more runs show that (a) skipping all except a few articles without preprocessing and (b) preprocessing without skipping more than a few articles both leak at about the same rate. I may have to look hard at the checkins or even run the heap debugger.
- I still stand by the remove-one-item optimization. I have no idea why Rob made that change, and the checkin comment doesn't help. I may have to ask if he remembers. I find it hard to believe the difference is ARM64 versus x86 performance. David Brooks (talk) 23:04, 4 June 2026 (UTC)
- Thanks, I was able to run AutoWikiBrowser6501-longlist-4.8.zip. It is still leaky & slowly processing pages. ~ Tom.Reding (talk ⋅dgaf) 17:27, 2 June 2026 (UTC)
- Well, that's annoying, because even 6.4.0.0 was released requiring 4.8.1. Reedy had changed it from 4.7.2, I think because of some security fixes. For now, try this. I don't know what to suggest long term. David Brooks (talk) 16:41, 2 June 2026 (UTC)
- Unfortunately, this requires .NET Framework 4.8.1, which isn't supported on Windows 7. All of my older AWB versions run on .NET 4.0.30319.42000. ~ Tom.Reding (talk ⋅dgaf) 15:45, 2 June 2026 (UTC)
- Try this: zipfile. As usual, unlock the zip before extracting. It only contains the quick fix for "remove single item"; I'll test the other changes before checking in. David Brooks (talk) 15:06, 2 June 2026 (UTC)
- Thanks. I have various versions of the code and will do some timings and try to do some memory analysis on a 20K list. David Brooks (talk) 20:50, 1 June 2026 (UTC)






