javascript
32 Topics2025: The Year AI Landed
If you're hearing this message, the machines have won, and Instructional Design is dead as we know it... Hello! For this week's #ELearningChallenge I've created an interactive video portfolio to highlight four projects I built this year with the help of artificial intelligence. Despite the apocalyptic tone, I'm excited about the creative possibilities of generative AI. I certainly couldn't have made this last year. Videos created using Powtoon's AI Text to Video feature and edited with Camtasia. And just like my recent coffee-making demo, this is also fully accessible from the keyboard. Anywhere you see an underlined letter in a button, that key will perform its function. If you're wondering how I changed the colour of the captions from white to black, and back again, to improve legibility during the intro... Code to change captions to white // Stop any existing observer first if (window.captionObserver) { window.captionObserver.disconnect(); } // Monitor for caption changes and force white color window.captionObserver = new MutationObserver(function() { var allCaptionElements = document.querySelectorAll('[class*="caption"], [class*="acc-"]'); allCaptionElements.forEach(function(element) { element.style.setProperty('color', 'white', 'important'); var children = element.querySelectorAll('*'); children.forEach(function(child) { child.style.setProperty('color', 'white', 'important'); }); }); }); window.captionObserver.observe(document.body, { childList: true, subtree: true, attributes: true }); Code to change captions back to black // Stop the white observer if (window.captionObserver) { window.captionObserver.disconnect(); } // Apply black once var allCaptionElements = document.querySelectorAll('[class*="caption"], [class*="acc-"]'); allCaptionElements.forEach(function(element) { element.style.setProperty('color', 'black', 'important'); var children = element.querySelectorAll('*'); children.forEach(function(child) { child.style.setProperty('color', 'black', 'important'); }); }); And yes, AI helped me do this! Sift through the wreckage of my career here: https://bit.ly/elhc534 Oh, and shout out to any fans of SILO.
Learning Science Update
Challenge Submission – Minimal, Review-Friendly AI-Assisted Animation For this challenge, two slides from the Opportunity theme in the content library were selected as a focused demonstration of AI-assisted animation approaches. This submission explores how AI-assisted JavaScript prompting can be used to create effective motion design while remaining easy to review, understand, and reuse across projects. Slide 1 intentionally uses the first AI-suggested JavaScript animation without modification. The goal was to evaluate the quality of a default AI-generated timeline. From prompt to result, the animation was implemented in approximately two minutes, demonstrating how AI can quickly establish a clean, professional entrance sequence with minimal effort. Slide 2 introduces a hybrid animation approach, designed with readability and adaptability in mind: A simple JavaScript entrance animation handles the vertical timeline dots. Text boxes rely on lightweight opacity transitions. Manual time-shifting aligns text entrances with dot interactions. Instead of one complex JavaScript timeline controlling everything, the interaction logic is distributed: Motion is broken into small, understandable pieces. Timing relationships remain visible and adjustable. Reviewers can easily trace how each interaction affects the UI. The resulting experience still feels animated, but the perceived motion comes largely from: Delays and offsets Layer changes Consistent spatial relationships between dots and text This makes the approach easier to follow during review and simpler to apply to similar projects, especially compared to a single, tightly coupled JavaScript animation. The design demonstrates how thoughtful timing and minimal motion can deliver clarity, responsiveness, and polish—without increasing implementation complexity. View project here: #533_AI_Animations.story113Views2likes0CommentsRise notes utility
I added a global utility bar to my Rise course to add a simple 'notes' piece, data is kept in the browser's local storage and it will not write to SCORM. Because of the global nature of this addon, it can be a handy way to make the functionality, and even some branding, always available to users across your entire course.
472Views10likes12CommentsSimple Tabs
That’s probably the most accurate way to describe this submission, possibly the most boring interaction I’ve ever produced for an eLearning challenge. Ironically, it’s built around tabs, which can be pretty useful when done right (keep them simple, clean, and don’t overthink it). But here’s the twist: If you manage to stick around for 2 whole minutes, you’ll unlock a reward, a downloadable Storyline file. Because if you’ve got the stamina to survive two minutes of my "creativity," you deserve something. Inside: 🕒 A global timer built with JavaScript 🎞️ Image transitions powered by the Web Animation API 🎁 And who knows, maybe a surprise or two. LaunchAn AI-Powered Knowledge Check in Storyline
I've been wrestling with this challenge for a while: How do we get learners to reflect without relying on quiz after quiz? How can we use open-ended questions to encourage deeper thought? I've long considered AI for this, but there were hurdles... How do you integrate it into an Articulate Storyline course without paying for tokens or setting up contracts? And how do you do it without leaking credentials in the course itself? Can it be done without having to modify code after exporting the course? I learned recently that Hugging Face Transformers provide a solution. You can now download an AI model to the learner's machine and run it locally in their browser. I've managed to get this running reliably in Storyline, and you don't have to modify the code after export! In the final slide of the demo, your goal is to recall as much as possible from the podcast/summary. The AI will then check your response and give you a percentage score based on what you remembered. Live demo & tutorial here: https://insertknowledge.com/building-an-ai-powered-knowledge-check-in-storyline/ If you want to learn how I recommend starting with the sentiment analysis because it's easier to get started. I've also provided a file to download in that tutorial if you want to reverse engineer it.Spookily Accruate
Hello! For this challenge, I reused a character I created way back in 2020, for Challenge #292 (Using Variables). In case you wondered, Zardoz is a cross between Sean Connery and the Zoltan machine from Big. I've upgraded Zardoz with a few tricks I've learned in the meantime, including live polling, a speech animation cycle, and some sneaky Javascript. If Zardoz doesn't successfully read your mind, he can still surprise you with what he does know about you. Does Zardoz know what you're thinking? TRY IT OUT HERE
Microlearning 2: Electric Boogaloo
Hello! I've been taking part in these challenges for so long, sometimes I get to do a 'sequel' to an earlier demo. In the age of AI, witness the return of DOT - my 'microlearning companion' from 2020's 'Tiny E-Learning Challenge'. This time, she's a little bit more advanced, but no less sarcastic. DOT will respond to pre-filled questions with a range of randomised responses. Her code uses your web browser's built-in text-to-speech feature to read the dialog out loud. This week's demo is the result of a 4-hour 'vibe coding' session with Claude.ai, during which I shared images of my original demo for E-Learning Heroes Challenge 331. I'm still tinkering with DOT's code, so I won't be sharing that here. But if you'd like to know how I used two different fonts in the same course title, you'll find that code in the final section of this course. CHAT TO DOT HERE...105Views3likes1CommentPizzamama activity... Soooo tasty!
Hi! My name is Adèle. This is my first step in the challenge adventure. I’m quite proud to share with you my very first JS project. I’ve used JavaScript in previous projects, but only by “copying and pasting” code. This time, I managed to understand how to find the ID of an object and then customize the JS code myself :-) I hope you’ll find this little example fun!