profile
viewpoint
Glenn Willen gwillen SF Bay Area, California Have you tried turning it off and on again?

aldeka/herring 5

Modern Django and ReactJS based web application for puzzlehunt team management!

gwillen/herring 4

Modern Django and ReactJS based web application for puzzlehunt team management!

dspeyer/ritualEngine 3

An engine for performing communal rituals online

gwillen/Crypt-OpenPGP 1

Pure-Perl OpenPGP implementation

gwillen/geeknote 1

Console client for Evernote.

gwillen/irssi-scripts 1

Useful scripts for irssi.

gwillen/nalintmo 1

National Lisp Interpreter Month

gwillen/BeautifulDiscord 0

Adds custom CSS support to Discord.

gwillen/bips 0

Bitcoin Improvement Proposals

startedgwillen/herring

started time in 2 days

issue commentgwillen/herring

degrade more gracefully when we run out of channels in discord

yeah.... that happened. I wasn't expecting it either! But this was a BIG hunt. I think automatically deleting "oops" channels when a puzzle is deleted (because it was made wrong, or turned out to be the secret identity of something we already had) would help, like: if a puzzle is deleted, always delete its voice channel, and if its chat channel has literally nothing in it, go ahead and delete that too; and if it has something in it, ask a mod what to do about it.

But... maybe even that wouldn't help enough. This hunt was a bit unique in that we created (sometimes multiple) "non-puzzles" in every round for just "getting around the round area in the MMO", which were separate from the normal round metapuzzles. Plus the infinite round, which really would have been a disaster with automatic puzzle creation!!

gwillen

comment created time in 4 days

issue commentgwillen/herring

cleanup_channels won't create a missing voice channel if the text channel already exists

I think I fixed this just before hunt but didn't mark it fixed; sorry. It's easy to test, anyway; just delete a voice channel, and then cleanup_channels and see what happens. cleanup_channels should now treat text and voice channels more or less separately, I hope.

gwillen

comment created time in 4 days

issue commentgwillen/herring

the way we manage the bots is a bit fucked

HOWEVER, our timeout in do_in_loop is 20, whereas our redis mutex has a 10s timeout. So in practice what happens seems to be this: the discord announcer bot loses its server connection / gets throttled / gets sad / ???. This hangs our thread for 20 seconds. Then it throws an exception. Because we hung for 20s, the mutex times out and is released.

The log_to_discord feature is actually provoking this a LOT more than it would normally be, because without that nothing in the gather() would actually be calling into the announcer bot and hitting that 20s non-async hang (because certainly the listener bot has no need to make a cross-thread call to the announcer bot to do things in Discord; it can just.... do them). Adding do_in_loop_nonblocking() should have helped, and indeed seemed to, but I think you're right that this is just an insane way to manage the whole thing.

gwillen

comment created time in 4 days

issue commentgwillen/herring

Expose "who is working where on what" in a central location

I'm surprised you found this feature because I didn't really publicize it! I think I tossed it off in one sentence in the tech doc.

I think in general we need to do more to collapse the concepts of "working on a puzzle". We currently have four concepts, each exposed in different ways:

  • People currently subscribed to the discord channel: this is reported in hb!who as "watching"
  • People currently in the discord voice chat: this is reported in hb!who as "in voice chat"
  • The channel_count field in puzzle: this is reported as the light number in the Herring UI. In general the bot tries to make sure this matches "people currently subscribed" whenever it has reason to think about it (but it doesn't currently store who it's talking about, just a number)
  • People who have typed something in text chat in the last two hours: this is reported as the dark number in the Herring UI, and with the mouseover as you discovered.

I think at a minimum the recent-text-chat set and the voice-chat set should be merged into a single "active" value. I tried to figure out how to make the discord bot trap "people entering voice chat" so it could treat them as equivalent to people typing something; but I didn't try very hard, because I realized you'd probably want to treat people as still active if they're in voice chat continuously for 2 hours, even if they haven't typed anything, so it has a different model anyway. And there should be some representation of "people playing in spreadsheets recently" as well, which is now "maybe" possible if people use the same email in Herring as they do to get to the spreadsheet. But I don't understand how the spreadsheet activity detection works.

str4d

comment created time in 4 days

issue commentgwillen/herring

need a 'not a puzzle' flag

I know. I was thinking about both but especially when I saw the way you wrote that other one, I realized this is different. We had both puzzles marked "(placeholder)" and "(misc)" this year.

Of the two, I consider this one more important because the other can just be a normal puzzle without a url.

sparkyb

comment created time in 4 days

issue openedgwillen/herring

Expose "who is working where on what" in a central location

The Herring feature where mousing over the "active" half of the "Activity" column would show names of people currently working on a problem, was super useful to me! I would like it to be easier to find this information, to make it easier when remote-solving to figure out what puzzles are being worked on. We can get this by scrolling down the puzzle list, but e.g. if I've earlier collapsed several in-progress sections to focus on one round, I have to make multiple steps to get back the full view.

created time in 4 days

issue openedgwillen/herring

Create alternate non-spreadsheet collaboration documents on demand

Jamboard, AWWApp, Docs?, Slides??, something else???

I don't expect that people should just be able to say "I want this random tool!" but a larger fixed list of "tools we can create on demand" would be useful. Sheets is a good default most of the time but sometimes we want something instead or in addition. As an escape hatch we could allow just an arbitrary URL to be added.

created time in 4 days

issue openedgwillen/herring

need a 'not a puzzle' flag

It would be nice to be able to have a way to make a herring entry in a round for a thing/activity that wasn't a puzzle with a puzzle page or answer. So it could get a discord channel and sheet. But shouldn't accept an answer and shouldn't stop a round from auto-collapsing.

created time in 4 days

issue commentgwillen/herring

Should be a way to mark rounds collapsed, even if not all puzzles are solved

Probably we should just save your collapse/expand state per-user in your localstorage. May need an collapse/expand all.

gwillen

comment created time in 4 days

issue commentgwillen/herring

make it possible to disable / mute / lower volume of applause noises.

The local storage solution currently used by "use app links" already expects to find an arbitrary object, which it pulls specific keys out of (but there's only one right now). So it should be trivial to add more things controlled by this.

Or we could put it in user profile, if we expect that people will want this setting to follow them around to other devices.

gwillen

comment created time in 4 days

startedgwillen/solstice-audio-test

started time in 5 days

startedgwillen/solstice-audio-test

started time in 5 days

issue commentgwillen/herring

Change format of hb!who to hide solved puzzles

The dark "active solvers" icon actually has a mouseover with... sort of the same information. Actually there are kind of a lot of concepts of "activity" which should probably be merged.

Zahariel

comment created time in 6 days

startedgwillen/solstice-audio-test

started time in 6 days

issue openedgwillen/herring

Change format of hb!who to hide solved puzzles

No one really cares who is in a solved puzzle, probably. Maybe leave a hook or flag or something to get it if you really want to.

created time in 6 days

CommitCommentEvent

startedgwillen/solstice-audio-test

started time in 7 days

startedgwillen/solstice-audio-test

started time in 8 days

delete branch gwillen/herring

delete branch : dependabot/pip/django-3.0.7

delete time in 10 days

PR closed gwillen/herring

Bump django from 3.0.2 to 3.0.7 dependencies

Bumps django from 3.0.2 to 3.0.7. <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/django/django/commit/44da7abda848f05caaed74f6a749038c87dedfda"><code>44da7ab</code></a> [3.0.x] Bumped version for 3.0.7 release.</li> <li><a href="https://github.com/django/django/commit/84b2da5552e100ae3294f564f6c862fef8d0e693"><code>84b2da5</code></a> [3.0.x] Fixed CVE-2020-13254 -- Enforced cache key validation in memcached ba...</li> <li><a href="https://github.com/django/django/commit/1f2dd37f6fcefdd10ed44cb233b2e62b520afb38"><code>1f2dd37</code></a> [3.0.x] Fixed CVE-2020-13596 -- Fixed potential XSS in admin ForeignKeyRawIdW...</li> <li><a href="https://github.com/django/django/commit/256d29710193f7a2f1e92abe96c94d036f73edc6"><code>256d297</code></a> [3.0.x] Added release date for 2.2.13 and 3.0.7.</li> <li><a href="https://github.com/django/django/commit/8734a02f5d70d3d324edc96aaa763a6e8b4eb371"><code>8734a02</code></a> [3.0.x] Updated link to Celery.</li> <li><a href="https://github.com/django/django/commit/d22f67848ca1b5b34eb09b58c866a80eae3c7da1"><code>d22f678</code></a> [3.0.x] Refs <a href="https://github-redirect.dependabot.com/django/django/issues/31485">#31485</a> -- Backported jQuery upgrade to 3.5.1.</li> <li><a href="https://github.com/django/django/commit/b9db04178939bb737f1343089af021ede0da50d9"><code>b9db041</code></a> [3.0.x] Adjusted URL example in tutorial.</li> <li><a href="https://github.com/django/django/commit/caf7c4630da304474115a7c41cbb1df930593a73"><code>caf7c46</code></a> [3.0.x] Fixed <a href="https://github-redirect.dependabot.com/django/django/issues/31643">#31643</a> -- Changed virtualenv doc references to Python 3 venv.</li> <li><a href="https://github.com/django/django/commit/9297a3e6275ed13bfaecc147644960906ed5063b"><code>9297a3e</code></a> [3.0.x] Fixed typo in docs/ref/templates/language.txt.</li> <li><a href="https://github.com/django/django/commit/2638627db45766a300279197b2d6f299a5ea841f"><code>2638627</code></a> [3.0.x] Fixed <a href="https://github-redirect.dependabot.com/django/django/issues/31570">#31570</a> -- Corrected translation loading for apps providing terr...</li> <li>Additional commits viewable in <a href="https://github.com/django/django/compare/3.0.2...3.0.7">compare view</a></li> </ul> </details> <br />

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


<details> <summary>Dependabot commands and options</summary> <br />

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
  • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
  • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
  • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

You can disable automated security fix PRs for this repo from the Security Alerts page.

</details>

+1 -1

1 comment

1 changed file

dependabot[bot]

pr closed time in 10 days

pull request commentgwillen/herring

Bump django from 3.0.2 to 3.0.7

Looks like django is up-to-date now, so this is no longer needed.

dependabot[bot]

comment created time in 10 days

PR opened gwillen/herring

Bump django from 3.0.2 to 3.0.7

Bumps django from 3.0.2 to 3.0.7. <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/django/django/commit/44da7abda848f05caaed74f6a749038c87dedfda"><code>44da7ab</code></a> [3.0.x] Bumped version for 3.0.7 release.</li> <li><a href="https://github.com/django/django/commit/84b2da5552e100ae3294f564f6c862fef8d0e693"><code>84b2da5</code></a> [3.0.x] Fixed CVE-2020-13254 -- Enforced cache key validation in memcached ba...</li> <li><a href="https://github.com/django/django/commit/1f2dd37f6fcefdd10ed44cb233b2e62b520afb38"><code>1f2dd37</code></a> [3.0.x] Fixed CVE-2020-13596 -- Fixed potential XSS in admin ForeignKeyRawIdW...</li> <li><a href="https://github.com/django/django/commit/256d29710193f7a2f1e92abe96c94d036f73edc6"><code>256d297</code></a> [3.0.x] Added release date for 2.2.13 and 3.0.7.</li> <li><a href="https://github.com/django/django/commit/8734a02f5d70d3d324edc96aaa763a6e8b4eb371"><code>8734a02</code></a> [3.0.x] Updated link to Celery.</li> <li><a href="https://github.com/django/django/commit/d22f67848ca1b5b34eb09b58c866a80eae3c7da1"><code>d22f678</code></a> [3.0.x] Refs <a href="https://github-redirect.dependabot.com/django/django/issues/31485">#31485</a> -- Backported jQuery upgrade to 3.5.1.</li> <li><a href="https://github.com/django/django/commit/b9db04178939bb737f1343089af021ede0da50d9"><code>b9db041</code></a> [3.0.x] Adjusted URL example in tutorial.</li> <li><a href="https://github.com/django/django/commit/caf7c4630da304474115a7c41cbb1df930593a73"><code>caf7c46</code></a> [3.0.x] Fixed <a href="https://github-redirect.dependabot.com/django/django/issues/31643">#31643</a> -- Changed virtualenv doc references to Python 3 venv.</li> <li><a href="https://github.com/django/django/commit/9297a3e6275ed13bfaecc147644960906ed5063b"><code>9297a3e</code></a> [3.0.x] Fixed typo in docs/ref/templates/language.txt.</li> <li><a href="https://github.com/django/django/commit/2638627db45766a300279197b2d6f299a5ea841f"><code>2638627</code></a> [3.0.x] Fixed <a href="https://github-redirect.dependabot.com/django/django/issues/31570">#31570</a> -- Corrected translation loading for apps providing terr...</li> <li>Additional commits viewable in <a href="https://github.com/django/django/compare/3.0.2...3.0.7">compare view</a></li> </ul> </details> <br />

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


<details> <summary>Dependabot commands and options</summary> <br />

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
  • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
  • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
  • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

You can disable automated security fix PRs for this repo from the Security Alerts page.

</details>

+1 -1

0 comment

1 changed file

pr created time in 10 days

create barnchgwillen/herring

branch : dependabot/pip/django-3.0.7

created branch time in 10 days

issue commentgwillen/herring

Race condition: can't create puzzle when creating round.

I pushed a fix for this to zahariel/master, maybe. It's not very straightfoward to test right now, if it ever was.

If you're nervous about cleanup_channels it does have a dry run mode that just tells you that it plans to do anything potentially destructive, instead of actually doing it.

gwillen

comment created time in 15 days

push eventgwillen/solstice-audio-test

Jeff Kaufman

commit sha ccc9d57229dadcfc48a14e1ae39f504e04d1d86c

Play a chime when a user joins. Fixes #155

view details

push time in 16 days

issue closedgwillen/solstice-audio-test

It should play a chime on someone joining

Unless you're currently in a song

closed time in 16 days

jeffkaufman

push eventgwillen/solstice-audio-test

Jeff Kaufman

commit sha 07e952a8b17331398de938a8ce0b5931b3ec9aa3

twilio: Use selective microphone. Fixes #167

view details

push time in 16 days

issue closedgwillen/solstice-audio-test

Twilio should respect microphone choice

Both because it is the right thing to do and because if we don't we will get "NotReadableError: Concurrent mic process limit." in Firefox

closed time in 16 days

jeffkaufman

push eventBlockchainCommons/Airgapped-Wallet-Community

Shannon Appelcline

commit sha 1e98b3a064abedc7e93c636c931caf9758f5e59f

Update README.md

view details

push time in 16 days

more