Category: Hack/Doc Fest at Lafayette

Winter 2025 Hack/Doc Fest at Lafayette

CLAMP held its Winter 2025 Hack/Doc Fest at Lafayette College in Easton, Pennsylvania. The primary focus of the event was evaluating Moodle 4.5. We’re happy to report that we encountered no major issues and no blockers to upgrading to Moodle 4.5 this year, although you should take careful note of the new image redaction functionality. Please read on below for for details of the various issues we discussed.

Issues

Subsections

Sub-sections (mod_subsection) are a new feature in Moodle 4.5. This is a great way to organize materials within a topic block. In the past, you needed to use labels and indented items to group items within a section. With this feature, you can create a subsection that is collapsible within the section. We found it difficult to drag-and-drop items from a local folder directly into the subsection, but it is easy to move items into the subsection once they have been added to the topic block itself. You can click on “Add an activity or resource” within the subsection to add content directly to the subsection. You can have multiple subsections within the topic block, but you can’t nest another subsection within an existing subsection.

Scrolling across pages when annotating Assignments

Assignment annotation allows only for clicking through multiple pages. This is cumbersome when trying to flip across multiple pages when annotating. A proposal to allow scrolling instead made some headway in 2020 before the author abandoned it. CLAMP has updated and resubmitted the fix and will work with Moodle HQ to get this feature added.

Image redaction

There is a separate blog post discussing the new image redaction feature in Moodle 4.5. The short version: if you enable it, make sure that you also install exiftool and configure Moodle to use it.

Assignment submission default order

The first time you view submissions in an assignment, they’re sorted by the internal Moodle userid of the submitter. It appears non-deterministic and can confuse faculty. Once you’ve sorted by something else (last name, submission date) that choice persists through logout, but the initial presentation is confusing. CLAMP has submitted a feature request and patch to change this behavior to last name of the submitter.

New notifications

Moodle 4.5 adds new options to notify students of upcoming assignments and quizzes. By default, each user decides what notifications they want. Administrators can change this default. New notification options include the following:

  • Assignment due in 7 days
  • Upcoming assignment due (48 hours before the due date)
  • The assignment is overdue.
  • Quiz opens soon

There is no way for an individual instructor to configure these options or to force a push.

Optional questions for Quiz

Carleton was interested in a Quiz-like activity where students have the option to answer specific questions within a category. They would only be graded for the questions they answered. This is an example point system:

  • 15 multiple choice questions worth 2 points each
  • 5 essay questions about terms (only 3 are required)
  • 5 more essay questions (only 4 are required)

We looked at ways of accomplishing this:

  • A teacher can add a multiplier to the Quiz activity only if all questions are worth the same number of points
  • Changing the Maximum grade to be below the total number of points will only cause the question points to be recalculated in the Results page
    • It still counts all the optional questions
    • Unlimited Grading does not fix this issue
  • Workaround: Create Quiz questions listing all potential question prompts a student can answer.
    • Example: three essay questions with all five essay prompts.
    • Students have to write out what question they are answering

Other avenues to explore:

  • Try lesson activity
  • Maybe branching (conditional formatting)
    • Branching depends on whether want to give students the option to answer all questions for extra credit.
    • Branching is available within a Questionnaire, but not within a Quiz. However, the Questionnaire does not appear to have any auto-grading features (beyond assigning a grade for completion).

Exploring Competencies in Moodle

We took another look at Competencies, a perennial topic at these events. Coming out of Butler in 2016 we called them “a complicated new system with an inherent workflow that isn’t well documented.” Occidental published some documentation about them at Smith in 2019. We took another look at them as an offshoot from the optional Quiz questions work. Findingss:

  • Administrators can build a site-wide template: Site administration > General: Competencies > Competency frameworks
  • Taxonomies are just labels for nesting: 4 level options.
  • Teachers cannot create competencies; they can only pull competencies out of existing frameworks.
  • Teachers can assign competencies to specific activities and resources or just add the competencies to their course in general.
  • This could be useful for programs with a graduation requirement. An example is Carleton’s Writing Portfolio where students upload 3–5 pieces of writing from different courses plus a reflective essay.

We helped unearth two bugs while looking at Competencies this time around: MDL-84147 and MDL-84148.

UX changes to the assignment submissions page

The assignment submissions page has new menus, filters, and headers (See https://moodledev.io/general/releases/4.5#assignment-improvements—phase-1 for a full list). More changes are planned. We liked the new assignment options. All the selection options moved to the top. You can filter by submission status (i.e. submitted, not submitted, draft).

Moodle assignment interface with filters active

AI subsystem

There is a separate blog post discussing the new AI subsystem in Moodle 4.5. OpenAI and AzureAI are supported; we were able to evaluate OpenAI.

Open Badges 3.0

Moodle is working toward supporting Open Badges 3.0. This work will be spread across multiple releases. Two improvements landed in Moodle 4.5:

  • MDL-43938: The uniqueness requirement for badge names has been removed.
  • MDL-82057: Badges can be imported from one course to another using Course Reuse> Import. The imported badge has all the metadata of the first badge, but none of the issuing criteria. It’s also not active. The image is properly deduplicated.

Report Builder

We evaluated numerous improvements to Moodle’s Report Builder, all of which worked as advertised. The biggest is the ability to delete multiple cohorts at once:

  • MDL-52046: this is the option for deleting multiple cohorts at one time.
  • MDL-81330: can now filter based on the cohort within the class participants window.
  • MDL-80123: admin preset reports now work correctly (previously, there was a bug around deleting presets).
  • MDL-82331: time filtering can now go down to the minute (previously could only go down to the hour). It passes.
  • MDL-82529: adding the option to filter cohorts by custom fields.
  • MDL-81399: The relational database now has fields for users’ time zones and languages. As a result, it’s possible to use these to filter custom reports.
  • MDL-82114: Can now filter by the plugin when creating a custom report from the “Files” source.
  • MDL-82512: Can now filter by the plugin when creating a custom report from the “Author” source.

Audio-video recording in TinyMCE

Tiny MCE offers built-in features for recording audio and video. These updates expand the offerings so users can create screen recordings and recordings can be paused and resumed.

  • MDL-81212: Tiny/RecordRTC: Add Screen-recorder button.
  • MDL-81111: Tiny/RecordRTC: TinyMCE conversion – add a “Pause” button for recording A/V.

Completion tracking

Restoring old courses brings up a weird assortment of completion tracking settings. Sharon Strauss from Haverford created this short video about completion tracking to show people what these settings are and how they can quickly change the settings:

What’s next?

Save the date! The Summer 2025 Hack/Doc Fest will be at Swarthmore College in Swarthmore, Pennsylvania, from June 10-12.

AI Subsystem in Moodle 4.5

One of the many new features in Moodle 4.5 is the AI Subsystem. Given the buzz around AI development and the wild pace of change with LLM based tools it isn’t a surprise to see the beginnings of AI incorporated into Moodle. At the Lafeyette College-hosted Winter Hack/Doc 2025 I spent some time exploring the functionality. The development task for AI was documented by Moodle as “AI subsystem MVP”. The functionality released in Moodle 4.5 consists of three primary user facing interfaces into AI tools, “Generate Text”, “Generate Image,” and “Summarize”.

AI Implementation

For the new features to be available an admin needs to visit the AI section of the Site Administration menu. In Moodle 4.5, two AI providers are supported, OpenAI and AzureAI. Without a valid configuration, UI elements regarding AI are not shown.

AI Provider Configuration

The configuration for the AI providers is broken down into two areas. The first involves configuring the API keys and other requirements for your connection.

Image of the configuration options for Azure AI inside Moodle 4.5 the options. The Options are: Azure AI API Key, Azure AI API Endpoint, a checkbox to enable/disable a site-wide rate limit (default: off), the field for the maximum site wide requests per hour (default if enabled: 100), a checkbox to enable/disable user limits (default: off), and the field for the user requests per hour limit (default if enabled: 10).
Azure AI Configuration options

You can enable a maximum number of requests per person and/or at the server level for communications with the AI provider.

Below the AI provider configuration there are three configurations for each of the user facing interfaces. In addition to individual toggles these include configuration of API versions (these vary slightly between providers, OpenAI screenshot provided below), but also contain an area for a set of System Instructions. These are instructions passed along to the AI Model prior to the content of the user’s prompt:

Screenshot of the configuration of the Generate Text for ChatGPT under Moodle 4.5 showing the 3 configuration options. Those options are: AI model, the AI endpoint and System Instructions. The default for system instructions are: "You will receive a text input from the user. Your task is to generate text based on their request. Follow these important instructions: 1. Return the summary in plain text only. 2. Do not include any markdown formatting, greetings, or platitudes."
Generate Text Settings

AI Placement Configuration

Located below the provider configuration are AI Placement configurations. These allow for UI based control over enabling/disabling of AI elements in the text editor (generate text/image) and course pages (summarize).

User Experience with AI Tools enabled in Moodle

The “universal” sparkle/diamonds symbol indicating AI are added to the toolbar when Text Editor placement is enabled (and an API provider is configured). In further confirmation that Atto editor is being deprecated the Atto editor doesn’t have the AI buttons. Under the sparkles the user experiences two options if everything is enabled: Generate Text, Generate Image. If one or the other is disabled, the sparkles are replaced by a pictogram indicating the one remaining enabled option instead of pure sparkles.

The first time a user first clicks any of the AI tool options, an AI Usage Policy appears. If the user declines, the AI dialog closes. If they accept they are allowed to proceed into the tool.

Screen shot of the AI policy default settings in Moodle 4.5: <h4><strong>Welcome to the new AI feature!</strong></h4> <p>This Artificial Intelligence (AI) feature is based solely on external Large Language Models (LLM) to improve your learning and teaching experience. Before you start using these AI services, please read this usage policy.</p> <h4><strong>Accuracy of AI-generated content</strong></h4> <p>AI can give useful suggestions and information, but its accuracy may vary. You should always double-check the information provided to make sure it's accurate, complete, and suitable for your specific situation.</p> <h4><strong>How your data is processed</strong></h4> <p>This AI feature uses external Large Language Models (LLM). If you use this feature, any information or personal data you share will be handled according to the privacy policy of those LLMs. We recommend that you read their privacy policy to understand how they will handle your data. Additionally, a record of your interactions with the AI features may be saved in this site.</p> <p>If you have questions about how your data is processed, please check with your teachers or learning organisation.</p> <p>By continuing, you acknowledge that you understand and agree to this policy.</p>

The policy text lives in the language pack under core > ai.php. It’s named “userpolicy”.

The summarize button appears in lots of places by default but the portion of the page that it sends to the AI provider for summary doesn’t always make sense. For example, on this quiz page with a description of the assignment (well, sort of) the student doesn’t get any useful information from the quiz description that the instructor “provided”.

A bad AI summary of a Quiz

Limiting AI availability inside Moodle to specific courses

In the event that your institution has the appropriate subscriptions and you think someone might need to access the functionality in Moodle but you don’t want to make it available to your whole community we suggest the following implementation.

Set the following permissions to PREVENT at the site level for the teacher, student, and other roles at your institution that shouldn’t see the tools:

  • aiplacement/courseassist:summarise_text: controls access to the Summarize text button
  • aiplacement/editor:generate_text: Controls access to the generate text button in the TinyMCE interface
  • aiplacement/editor:generate_image: Controls access to the generate image button in the TinyMCE interface

Once they are set to prevent you can override these capabilities to ALLOW at the course (instructor capability under Participants -> Permissions) or category level where appropriate.

Note: CLAMP didn’t have access to both providers so I can’t provide insight into what happens if both providers are enabled. Do users get two “generate image buttons/summarize/etc” or a choice after clicking the button? If you experiment with this let us know!

Image redaction and orientation in Moodle 4.5

Moodle 4.5 introduces many new features which we’ll be covering in the forthcoming report out of the 2025 Winter Hack/Doc Fest. Here, I’m going to highlight one in particular: image redaction. This is a new security feature that will automatically strip out geolocation data from uploaded images. It’s important that you configure it correctly, because at the moment there’s a bug that could cause many images that have a portrait orientation to display in landscape.

Exif and GPS data

Exif is a metadata standard implemented by images. You can specify a dizzying array of information, but we’re concerned here with just a few fields: geographic coordinates, image width and height, and orientation. When smartphones take images they include latitude and longitude unless you disable that behavior on your phone. For example, here’s a photo I took from the rear of the California Zephyr in 2018:

Railroad tracks disappear into the horizonMy notes say that I took it in Utah. The encoded GPS information says that I took in near Mt. Elliott, about twenty miles northwest of Green River. Here’s what that data looks like:

GPS Altitude  : 1419 m Above Sea Level
GPS Date/Time : 2018:10:21 00:14:56Z
GPS Latitude  : 39 deg 9' 39.62" N
GPS Longitude : 110 deg 20' 33.62" W
GPS Position  : 39 deg 9' 39.62" N, 110 deg 20' 33.62" W

This is pretty useful for knowing where I when I took this! This might be less useful if I’d taken this picture somewhere private–say from a dorm room when I’m uploading an assignment to Moodle. Location data can be a major privacy risk if disclosed inadvertently.

Exif and Orientation

Another use of Exif data is to store the width and height of the image and its orientation (portrait or landscape). Some smartphones, particularly the iPhones we tested at Hack/Doc, store all images in the landscape format but then set the orientation to indicate that they should be displayed in portrait mode:

Orientation  : Rotate 90 CW
Image Width  : 5712
Image Height : 4284
Image Size   : 5712x4284

An image with the width greater than the height would imply landscape except that Orientation is set to “Rotate 90 CW”: rotate ninety degrees clockwise. When you view that image, you’ll see it in portrait mode so long as the browser or image software respects that Exif data.

Redaction

Moodle 4.5 adds a new feature called EXIF remover to strip out GPS information. It’s located in Site administration > Server > File redaction > EXIF remover. If you’re installing a new 4.5 instance it’s enabled by default; if you’re upgrading an existing instance to Moodle 4.5 it’s off by default and you have to choose to turn it on. By default, it uses the GD library to reprocess the image. GD doesn’t have special features for managing Exif metadata; GD will remove all fields, including Orientation! That’s undesirable at best, and probably a bug (see MDL-84128).

Moodle HQ doesn’t recommend running this way and CLAMP doesn’t either. The recommended approach is to install exiftool on your server and configure your Moodle instance to use it. Exiftool is a common command-line application; it’s available for Windows and Mac and most Linux distributions. I used it to extract the Exif examples in this post. Once you’ve installed it (or your hosting provider has), you need to configure the path in Site administration. Below is an example of a working configuration:

Moodle configuration page. Enable EXIF remover is checked. Path to ExifTool is set to "/usr/bin/exiftool". The EXIF tags that will be removed is set to GPS only.

Exiftool will output a new image with the given Exif tags removed but won’t change anything else. I assume that the GD option was provided as a fallback since it doesn’t require new external tools or new PHP libraries, but I don’t think it should be enabled by default because of the real possibility that it breaks image uploads from smartphones.

Registration open for Winter 2025 Hack/Doc Fest

The “Free Bridge” links Easton, Pennsylvania, with Phillipsburg, New Jersey

Registration is now open for the Winter 2025 Hack/Doc Fest, which will be held at Lafayette College from January 7 through January 9, 2025. CLAMP’s Hack/Doc Fests are twice-yearly unconference-style events dedicated to improving the Moodle experience for liberal arts colleges.

For CLAMP schools, CLAMP will reimburse your first night’s stay at the Grand Eastonian. There is no group rate for lodging.

Summer 2023 Hack/Doc at Lafayette

Smiling man with can of Diet Coke and Mac laptop
Jim Nicnick, hybrid coordinator and manager of the Diet Coke inventory

CLAMP spent three pleasant days at Lafayette College evaluating Moodle 4.2. The group’s impression was favorable; Moodle 4.2 addresses several issues from Moodle 4.1 (see the Swarthmore report for details on 4.1) and improves the user experience. CLAMP also held a roundtable discussion on the present state of integrating Moodle with Banner, facilitated by Eric Merrill. Read on below for details of the various issues we discussed. CLAMP’s next Hack/Doc Fest will be held this coming January at Connecticut College in New London, Connecticut.

Issues

Banner

Ellucian will deprecate support for traditional flatfile Banner extract generation (ICGORLDI) in June 2024. While the tool will not be removed, the end of support requires a rethink of integrating Banner with Moodle. The discussion at Hack/Doc identified four options:

  1. Switch to using Ellucian’s cloud-hosted ILP offering. This will require paying an additional yearly licensing fee and changing to a different Moodle enrollment plugin. In addition, Ellucian’s current implementation does not support all the features LMB supports. Schools would need to discuss this with their Ellucian representatives to determine possible loss of functionality.
  2. Build an alternative ILP integration using the Ethos and Person APIs. Oakland University already has a working implementation and is willing to collaborate with other institutions. This would allow real-time enrollment updates.
  3. Write a script that queries Banner and generates XML files that can be used by the existing LMB plugin, acting as a drop-in replacement for ICGORLDI. Swarthmore College already does a version of this and shared their scripts.
  4. Continue to use ICGORLDI, given that deprecated tools tend to continue working for years on end.

Several schools expressed interest in option 3 as a short-term step and will collaborate within CLAMP to produce a generalizable solution.

Indentation

Moodle 4.2 restored the ability to indent items on the course page, albeit you may only ident one level. You do need to enable this behavior for the topics and weekly course formats in the site administration. In general, resources that were indented pre-4.0 are intended again in 4.2. The indenting was also backported to Moodle 4.1. As a further enhancement, the indenting is now reflected in the course index at left. Moodle HQ has also opened a new issue to discuss further improvements around creating a “hierarchy” within a course.

Plugin name on course page

Moodle no longer displays the plugin type (e.g. “Forum” or “Quiz”) under the name of the activity on the course page. This information is still available when editing is turned on. This change was also backported to the most recent 4.0 and 4.1 releases.

Student notifications

We looked into whether you stop students from disabling all notifications. The answer appears to be no: it is possible to disable the “moodle/user:editownmessageprofile” capability for a given role. This prevents the user from editing their messaging (User Menu > Preferences > Message preferences, /message/edit.php) and notification (User Menu > Preferences > Notification preferences, /message/notificationpreferences.php) preferences. This is a severe restriction and not advisable. CLAMP recommends setting up a report in the Ad-hoc database queries plugin to detect users who have all notifications disabled:

SELECT u.id, u.firstname, u.lastname, u.email FROM prefix_user u WHERE u.emailstop = 1

Old assignment module removed

In 4.2, Moodle removed the Moodle 2.2 and older assignment (mod_assignment). This had been retained for compatibility with old backups; old assignments were converted to the new assignment activity (mod_assign). The module is published on GitHub if anyone encounters this need in the future. We successfully restored an old backup into 4.2 using the module.

Text editors

At Swarthmore, we flagged an issue with the “new” TinyMCE editor integration and embedding links to documents and images. This is now fixed and the new TinyMCE is the default text editor on new installations. The “old” TinyMCE has been removed.

H5P

We reviewed the state of H5P and its integration with Moodle. CLAMP recommends that you review H5P’s content types recommendations to see which modules have accessibility challenges.

Grading interface

Table with rows and columns
Grader report with significant whitespace

A number of interface improvements for the grade book landed in 4.2. New editing features include collapsing, sorting, lock, and hide indicators to clearly show the current status of each grade category and item. If you nest a category within a category, there are a ton of extra empty cells at the top of the grader report which makes the table awful to look at/scroll through.

Messaging within assignments

Assignments now have a new ability in 4.2 that allows instructors to send a message to specific students. For example, you may easily message all the students who haven’t submitted an assignment. Messages sent are in the sender’s private messages. Messages received also are in the receiver’s private messages. Activity in the messaging system is logged in the admin log but isn’t obvious.

Permalinks to Moodle course sections

Context menu with list of options
Get a permalink to a section

Moodle 4.2 added the ability to permalink to a course section within a Moodle course. The permalink does not change if the course sections are reordered. It works with all course formats that we tested but isn’t very useful with the Grid format.

Moodle Mobile

CLAMP undertook another thorough review of the Moodle Mobile app. Hampshire enabled the app for evaluation; there were specific concerns about how well the app would support some of Hampshire’s customizations, such as support for monoymous names and pronouns. Findings included:

  • The app adequately supports mononymity and external user images, but none of our other front-end hacks like pronouns.
  • The app does not display custom blocks.
    The app is clearly designed primarily for students, since editing capabilities are slim to nonexistent.
    The free version can only send push notifications to up to 50 devices. The paid version is $218/year for 500 devices, $534/year for unlimited devices. Hampshire sees the push notifications as the primary advantage.
  • SSO logins are well supported, you can configure the app to just open whatever SSO you use in an embedded browser (Site Admin > Mobile authentication > Type of login).

Never submitted quizzes

Lafayette had a problem last year where a professor set an expiration/closer to a quiz and a student’s computer crashed and they were kicked out of their quiz attempt and were unable to submit the quiz. Moodle 4.2 addresses this by allowing a teacher to “re-open” a “never submitted” attempt, which will then be immediately submitted for grading.

Blocks–what is to be done?

Moodle 4.2 refactored the block drawer, reducing the default visibility of blocks. We surveyed participating schools to see how they’re handling blocks going forward:

  • Lafayette: went “blockless” by default when it switched to Boost; uses the main or secondary navigation for additional links.
  • Swarthmore: using default Boost with blocks in the drawer, but have experimented with Learnr, which allows for defined block regions.
  • Macalester: using default Boost with blocks in the drawer. Has default blocks at the dashboard level, not the course level.
  • Hampshire: using default Boost, blocks in the drawer, plus a “Course Information” block at the top of sections (core hack for that region). We use a lot of blocks (added to courses by default) including Filtered Course List, custom “Library Info”, “Learning Collaboratives”, and “Study Tools” info blocks, and Quickmail.
  • Connecticut: similar to Hampshire. Default blocks in course-level drawer include calendar, library/ARC, upcoming events, Quickmail. Default blocks in the dashboard drawer include student resources (accessibility), calendar. Courses will also have a block linked to a book hidden on dashboard moving forward.

Bulk actions

Moodle 4.2 adds a “bulk actions” feature for teachers. A “Bulk edit” button at the top of the page displays the user menu at the bottom with options to move, duplicate, delete, or change availability. It doesn’t do dates, so CLAMP still includes the “Edit Dates” plugin in the LAE. A few notes about the behavior:

  • If you select multiple things to duplicate, they will duplicate separately immediately under their respective original item.
  • If an entire topic is selected, the duplicate option goes away
  • Bulk moving only works using the “move” icon, can’t drag them even though the nav cross-hatch icon shows up when you hover

Independent of this feature, you can duplicate an entire section from that section’s context menu.

MoodleNet

MoodleNet seems to be Moodle’s answer to the growing call for open educational resources (OER). It is meant to serve as a repository for individual resources (PDFs, URLs, etc.), modules (activities, quizzes, etc.), and entire Moodle courses that anyone can acquire and utilize. Users can upload a backup file from Moodle of any of these items if they wish to share it with a larger community. The website lets you browse openly for resources, though options are fairly limited at the moment. In order to actually put MoodleNet material into your Moodle site, one can simply click the “or browse for content on MoodleNet” icon at the bottom of the “Add an activity or resource” menu.

There doesn’t seem to be much moderation; there empty sites and some inferior resources. We were able to find a course that was populated with activities and was able to import it pretty seamlessly directly from MoodleNet (no download needed). Uploading open resources for others to use is also pretty straightforward. We’ll need to see how this develops.

Learnr

The Learnr theme had a pretty significant update for Moodle 4.2. The developers recommend uninstalling Learnr prior to installing 4.2r6 or higher. Things that seem to have changed since 4.1:

  • “Boxes” in the navigation menu (left-hand) separate the topics
  • Course management bar at the top replaced old top block drawer
  • Less white space, even less than 4.1 Learnr
  • Big unavoidable banners present at top of page when course is hidden from students or if you are in a role other than your own
  • If you are in a hidden site as a student it does NOT immediately kick you out – it lets you look at the site as a student!
Warning banner
Learnr warns you if you’re student

Boost Dark Mode

There’s a long-standing proposal to add a dark mode to Moodle’s Boost theme. Boost is based on the Bootstrap framework; Bootstrap 5 supports dark mode, but Boost is still based on Bootstrap 4.

Kaltura navigation in 4.2

The latest Kaltura Video Package release updates the internal navigation for Moodle 4.2.  The “My Media” link is now in the main site navigation across the top. There is a configuration option for displaying the course gallery in the course settings or in the Kaltura Course Gallery block.

Hidden group membership

Moodle 4.2 allows hiding group memberships from certain roles (for example, for data privacy reasons). This worked as expected.

Moodle 4.2 Liberal Arts Edition

CLAMP has released the Liberal Arts Edition of Moodle 4.2.1. This includes the usual package of contributed modules and core modifications; we encountered no surprises in preparing it.

And in conclusion…

Whew! A big thank you to everyone who participated in this June’s Hack/Doc Fest, whether in person or online, and to those who couldn’t make it but sent in suggestions/ideas anyway. We’re looking forward to seeing you all in New London in January.