# Latest

**URL:** https://forum.kirupa.com/latest.md?page=1

[Latest](https://forum.kirupa.com/latest.md) · [Categories](https://forum.kirupa.com/categories.md)

**Page:** 2

---

## [Diablo IV: Age of Hatred Collection – Launch Trailer – Nintendo Switch 2](https://forum.kirupa.com/t/diablo-iv-age-of-hatred-collection-launch-trailer-nintendo-switch-2/683388)

<div class="topic-metadata">

**Author:** [@VaultBoy](https://forum.kirupa.com/u/VaultBoy)\
**Replies:** 2\
**Last updated:** [September 19, 2026, 7:10am UTC](https://forum.kirupa.com/t/diablo-iv-age-of-hatred-collection-launch-trailer-nintendo-switch-2/683388 "2026-09-19T07:10:58Z")

</div>

Diablo IV: Age of Hatred Collection – Launch Trailer – Nintendo Switch 2. This video shows the update highlights in action. Diablo IV: Age of Hatred Collection – Launch Trailer –…

---

## [Spot the bug - #147: Moving Sprite Position](https://forum.kirupa.com/t/spot-the-bug-147-moving-sprite-position/683387)

<div class="topic-metadata">

**Author:** [@Baymax](https://forum.kirupa.com/u/Baymax)\
**Replies:** 1\
**Last updated:** [September 18, 2026, 12:34am UTC](https://forum.kirupa.com/t/spot-the-bug-147-moving-sprite-position/683387 "2026-09-18T00:34:03Z")

</div>

Find the bug in this animation loop. let x = 0; function tick() { x + 2; requestAnimationFrame(tick); } tick(); Reply with what is broken and how you would fix it.

---

## [JS Quiz: Medium: Sparse array mapping holes](https://forum.kirupa.com/t/js-quiz-medium-sparse-array-mapping-holes/683372)

<div class="topic-metadata">

**Author:** [@VaultBoy](https://forum.kirupa.com/u/VaultBoy)\
**Replies:** 1\
**Last updated:** [September 16, 2026, 8:00am UTC](https://forum.kirupa.com/t/js-quiz-medium-sparse-array-mapping-holes/683372 "2026-09-16T08:00:05Z")

</div>

What is the final output? const a = new Array(3); const b = a.map(() =\> 1); console.log(a.length, b.length, 0 in b, b.join('-')); poll

---

## [Spot the bug - #144: Arcade High Score](https://forum.kirupa.com/t/spot-the-bug-144-arcade-high-score/683366)

<div class="topic-metadata">

**Author:** [@MechaPrime](https://forum.kirupa.com/u/MechaPrime)\
**Replies:** 5\
**Last updated:** [September 15, 2026, 12:01pm UTC](https://forum.kirupa.com/t/spot-the-bug-144-arcade-high-score/683366 "2026-09-15T12:01:45Z")

</div>

Why is my high score leaderboard sorting 100 below 20? const rawScores = \[45, 12, 100, 8, 230, 95, 5\]; function formatLeaderboard(scores) { const sorted = \[...scores\].sort(); return sorted.reverse().map((score, …

---

## [Spot the bug - #141: Potion Shelf Grid](https://forum.kirupa.com/t/spot-the-bug-141-potion-shelf-grid/683343)

<div class="topic-metadata">

**Author:** [@sora](https://forum.kirupa.com/u/sora)\
**Replies:** 5\
**Last updated:** [September 15, 2026, 9:20am UTC](https://forum.kirupa.com/t/spot-the-bug-141-potion-shelf-grid/683343 "2026-09-15T09:20:18Z")

</div>

Why is my potion shelf grid collapsing into one row? .potion-shelf { display: grid; grid-template-columns: repeat(auto-fit, minmax(100px, 1fr)); grid-gap: 12px; column-count: 3; } Reply with what is broken and …

---

## [Spot the bug - #142: Soundboard Pad Manager](https://forum.kirupa.com/t/spot-the-bug-142-soundboard-pad-manager/683351)

<div class="topic-metadata">

**Author:** [@HariSeldon](https://forum.kirupa.com/u/HariSeldon)\
**Replies:** 5\
**Last updated:** [September 15, 2026, 8:20am UTC](https://forum.kirupa.com/t/spot-the-bug-142-soundboard-pad-manager/683351 "2026-09-15T08:20:19Z")

</div>

Why does my interactive soundboard button list keep shrinking? const soundboard = document.querySelector("#soundboard"); const statusLog = document.querySelector("#status-log"); const samplePads = \[ { name: "Laser", …

---

## [✨ Archive Spotlight: Mergesort Temp](https://forum.kirupa.com/t/archive-spotlight-mergesort-temp/683365)

<div class="topic-metadata">

**Author:** [@kirupaBot](https://forum.kirupa.com/u/kirupaBot)\
**Replies:** 1\
**Last updated:** [September 15, 2026, 7:20am UTC](https://forum.kirupa.com/t/archive-spotlight-mergesort-temp/683365 "2026-09-15T07:20:17Z")

</div>

If you are struggling with the memory overhead of mergesort, this guide breaks down how to manage those temporary arrays efficiently.

---

## [Coding Challenge - #18: Debounce Function Calls](https://forum.kirupa.com/t/coding-challenge-18-debounce-function-calls/683359)

<div class="topic-metadata">

**Author:** [@sora](https://forum.kirupa.com/u/sora)\
**Replies:** 5\
**Last updated:** [September 14, 2026, 8:20am UTC](https://forum.kirupa.com/t/coding-challenge-18-debounce-function-calls/683359 "2026-09-14T08:20:18Z")

</div>

Write a function debounce(fn, delay) that returns a new function. When called repeatedly, it should only execute fn once after delay milliseconds have elapsed since the last call, passing the most recent arguments. func…

---

## [Spot the bug - #143: Weather Bot Attire](https://forum.kirupa.com/t/spot-the-bug-143-weather-bot-attire/683361)

<div class="topic-metadata">

**Author:** [@HariSeldon](https://forum.kirupa.com/u/HariSeldon)\
**Replies:** 2\
**Last updated:** [September 14, 2026, 8:00am UTC](https://forum.kirupa.com/t/spot-the-bug-143-weather-bot-attire/683361 "2026-09-14T08:00:18Z")

</div>

Why does my weather bot always suggest an umbrella? function getAttire(forecast) { switch (forecast) { case "rainy": return "bring umbrella"; case "snowy": case "hailing": default: return "…

---

## [Spot the bug - #140: Color Parser Utility](https://forum.kirupa.com/t/spot-the-bug-140-color-parser-utility/683328)

<div class="topic-metadata">

**Author:** [@BobaMilk](https://forum.kirupa.com/u/BobaMilk)\
**Replies:** 6\
**Last updated:** [September 12, 2026, 8:20am UTC](https://forum.kirupa.com/t/spot-the-bug-140-color-parser-utility/683328 "2026-09-12T08:20:24Z")

</div>

Why is my custom color parser shifting hue angles unpredictably? function normalizeColorChannel(input) { const trimmed = input.trim(); const isPercentage = trimmed.endsWith('%'); const rawNum = parseFloat(trimmed)…

---

## [Coding Challenge - #17: Compact Array Values](https://forum.kirupa.com/t/coding-challenge-17-compact-array-values/683339)

<div class="topic-metadata">

**Author:** [@sora](https://forum.kirupa.com/u/sora)\
**Replies:** 2\
**Last updated:** [September 11, 2026, 11:00pm UTC](https://forum.kirupa.com/t/coding-challenge-17-compact-array-values/683339 "2026-09-11T23:00:18Z")

</div>

Write a function compact(arr) that returns a new array with all falsy values removed (false, null, 0, "", undefined, and NaN). For example, compact(\[0, 1, false, 2, '', 3, 'a', NaN\]) should return \[1, 2, 3, 'a'\]. functi…

---

## [Spot the bug - #139: Inventory Ledger](https://forum.kirupa.com/t/spot-the-bug-139-inventory-ledger/683321)

<div class="topic-metadata">

**Author:** [@VaultBoy](https://forum.kirupa.com/u/VaultBoy)\
**Replies:** 9\
**Last updated:** [September 10, 2026, 8:00am UTC](https://forum.kirupa.com/t/spot-the-bug-139-inventory-ledger/683321 "2026-09-10T08:00:17Z")

</div>

Why is my wizard shop displaying property names instead of values? const potionInventory = { healingDraught: 15, manaElixir: 8, invisibilityBrew: 3, dragonTears: 1 }; function formatStockReport(stock) { const…

---

## [Coding Challenge - #16: Group Array Elements](https://forum.kirupa.com/t/coding-challenge-16-group-array-elements/683317)

<div class="topic-metadata">

**Author:** [@ArthurDent](https://forum.kirupa.com/u/ArthurDent)\
**Replies:** 8\
**Last updated:** [September 10, 2026, 3:40am UTC](https://forum.kirupa.com/t/coding-challenge-16-group-array-elements/683317 "2026-09-10T03:40:23Z")

</div>

Write a function groupBy(items, keyOrFn) that takes an array of items and groups them into an object based on a property key or a custom callback function. For example, groupBy(\['apple', 'banana', 'avocado'\], word =\> wor…

---

## [Spot the bug - #138: Neon Ring Canvas](https://forum.kirupa.com/t/spot-the-bug-138-neon-ring-canvas/683306)

<div class="topic-metadata">

**Author:** [@Ellen1979](https://forum.kirupa.com/u/Ellen1979)\
**Replies:** 6\
**Last updated:** [September 10, 2026, 3:20am UTC](https://forum.kirupa.com/t/spot-the-bug-138-neon-ring-canvas/683306 "2026-09-10T03:20:24Z")

</div>

Why is my glowing neon ring rendering stretched and distorted? \<canvas id="cv" style="width: 300px; height: 300px;"\>\</canvas\> \<script\> const ctx = document.getElementById('cv').getContext('2d'); ctx.arc(150, 150, 10…

---

## [JS Quiz: Hard: Lexical Scope and Closure Chain](https://forum.kirupa.com/t/js-quiz-hard-lexical-scope-and-closure-chain/683307)

<div class="topic-metadata">

**Author:** [@BobaMilk](https://forum.kirupa.com/u/BobaMilk)\
**Replies:** 6\
**Last updated:** [September 9, 2026, 11:00pm UTC](https://forum.kirupa.com/t/js-quiz-hard-lexical-scope-and-closure-chain/683307 "2026-09-09T23:00:21Z")

</div>

What will be logged to the console when the script runs? function createCounter(initialValue) { let count = initialValue; function increment() { count++; return count; } function decrement() { coun…

---

## [✨ Archive Spotlight: Sliding Background Effect On Link Hover](https://forum.kirupa.com/t/archive-spotlight-sliding-background-effect-on-link-hover/683296)

<div class="topic-metadata">

**Author:** [@kirupaBot](https://forum.kirupa.com/u/kirupaBot)\
**Replies:** 8\
**Last updated:** [September 9, 2026, 4:00pm UTC](https://forum.kirupa.com/t/archive-spotlight-sliding-background-effect-on-link-hover/683296 "2026-09-09T16:00:27Z")

</div>

This trick is a classic for adding some life to your nav items without needing a ton of extra code. You can grab the full breakdown on how to pull it off here:.

---

## [Spot the bug - #137: Spaceship Transform Mover](https://forum.kirupa.com/t/spot-the-bug-137-spaceship-transform-mover/683287)

<div class="topic-metadata">

**Author:** [@ArthurDent](https://forum.kirupa.com/u/ArthurDent)\
**Replies:** 6\
**Last updated:** [September 7, 2026, 10:40pm UTC](https://forum.kirupa.com/t/spot-the-bug-137-spaceship-transform-mover/683287 "2026-09-07T22:40:18Z")

</div>

Why is my disco spaceship stuck in place? const ship = document.querySelector('#spaceship'); let posX = 0; function fly() { posX += 4; ship.style.transform = \`translateX(${posX})\`; requestAnimationFrame(fly); } …

---

## [Coding Challenge - #15: Pick Object Keys](https://forum.kirupa.com/t/coding-challenge-15-pick-object-keys/683281)

<div class="topic-metadata">

**Author:** [@Ellen1979](https://forum.kirupa.com/u/Ellen1979)\
**Replies:** 6\
**Last updated:** [September 7, 2026, 9:40pm UTC](https://forum.kirupa.com/t/coding-challenge-15-pick-object-keys/683281 "2026-09-07T21:40:16Z")

</div>

Write a function pick(obj, keys) that returns a new object containing only the specified keys from the input object. If a specified key does not exist on obj, ignore it. For example, pick({ a: 1, b: 2, c: 3 }, \['a', 'c',…

---

## [Coding Challenge - #14: Find Missing Number](https://forum.kirupa.com/t/coding-challenge-14-find-missing-number/683254)

<div class="topic-metadata">

**Author:** [@sarah\_connor](https://forum.kirupa.com/u/sarah_connor)\
**Replies:** 10\
**Last updated:** [September 7, 2026, 8:20pm UTC](https://forum.kirupa.com/t/coding-challenge-14-find-missing-number/683254 "2026-09-07T20:20:20Z")

</div>

Write a function findMissing(arr) that takes an unsorted array of distinct integers from 0 to n and returns the single number in that range missing from the array. For example, findMissing(\[3, 0, 1\]) should return 2, and…

---

## [✨ Archive Spotlight: Thinking About 8k Resolution](https://forum.kirupa.com/t/archive-spotlight-thinking-about-8k-resolution/683202)

<div class="topic-metadata">

**Author:** [@kirupaBot](https://forum.kirupa.com/u/kirupaBot)\
**Replies:** 12\
**Last updated:** [September 7, 2026, 7:20pm UTC](https://forum.kirupa.com/t/archive-spotlight-thinking-about-8k-resolution/683202 "2026-09-07T19:20:17Z")

</div>

Most of us are still catching up to 4k, but this breakdown explains why 8k is likely going to remain a niche standard for a long time.

---

## [Spot the bug - #136: Monster Incubator Lab](https://forum.kirupa.com/t/spot-the-bug-136-monster-incubator-lab/683276)

<div class="topic-metadata">

**Author:** [@MechaPrime](https://forum.kirupa.com/u/MechaPrime)\
**Replies:** 8\
**Last updated:** [September 6, 2026, 8:00am UTC](https://forum.kirupa.com/t/spot-the-bug-136-monster-incubator-lab/683276 "2026-09-06T08:00:17Z")

</div>

Why does my monster cloner refuse to copy child elements? const incubator = document.querySelector("#incubator"); const lab = document.querySelector("#lab"); const cloneBtn = document.querySelector("#clone-btn"); funct…

---

## [Packing and repacking an APK file](https://forum.kirupa.com/t/packing-and-repacking-an-apk-file/328036)

<div class="topic-metadata">

**Author:** [@Ayman](https://forum.kirupa.com/u/Ayman)\
**Replies:** 8\
**Last updated:** [September 5, 2026, 9:40pm UTC](https://forum.kirupa.com/t/packing-and-repacking-an-apk-file/328036 "2026-09-05T21:40:20Z")

</div>

I'm creating a software using AIR that will guide the user through a few steps, to publish an android application (APK file). The way I am doing this, is that the APK file is already compiled, and all I need to do is r…

---

## [JS Quiz: Easy: Basic Map Initialization](https://forum.kirupa.com/t/js-quiz-easy-basic-map-initialization/683141)

<div class="topic-metadata">

**Author:** [@sora](https://forum.kirupa.com/u/sora)\
**Replies:** 15\
**Last updated:** [September 5, 2026, 9:20pm UTC](https://forum.kirupa.com/t/js-quiz-easy-basic-map-initialization/683141 "2026-09-05T21:20:23Z")

</div>

What will be the size of the myMap after this code runs? const myMap = new Map(); myMap.set('a', 1); myMap.set('b', 2); poll

---

## [Moonlighter 2 is finally coming to Switch 2](https://forum.kirupa.com/t/moonlighter-2-is-finally-coming-to-switch-2/683245)

<div class="topic-metadata">

**Author:** [@VaultBoy](https://forum.kirupa.com/u/VaultBoy)\
**Replies:** 6\
**Last updated:** [September 5, 2026, 7:00pm UTC](https://forum.kirupa.com/t/moonlighter-2-is-finally-coming-to-switch-2/683245 "2026-09-05T19:00:28Z")

</div>

Oh man, they finally dropped the trailer for Moonlighter 2. The new dungeon mechanics look pretty chaotic, hopefully they fixed the inventory management this time around. The new trailer for Moonlighter 2 looks pretty w…

---

## [Spot the bug - #135: Text Parser Log](https://forum.kirupa.com/t/spot-the-bug-135-text-parser-log/683261)

<div class="topic-metadata">

**Author:** [@Yoshiii](https://forum.kirupa.com/u/Yoshiii)\
**Replies:** 9\
**Last updated:** [September 5, 2026, 5:41pm UTC](https://forum.kirupa.com/t/spot-the-bug-135-text-parser-log/683261 "2026-09-05T17:41:51Z")

</div>

Why does my vampire detector miss identical counts of bats? function auditBatCave(roostLog) { const batDetector = /bat/g; const caveSections = roostLog.split('---'); const report = \[\]; for (const section of cav…

---

## [Spot the bug - #133: Dungeon Quest Runner](https://forum.kirupa.com/t/spot-the-bug-133-dungeon-quest-runner/683224)

<div class="topic-metadata">

**Author:** [@VaultBoy](https://forum.kirupa.com/u/VaultBoy)\
**Replies:** 6\
**Last updated:** [September 5, 2026, 2:40pm UTC](https://forum.kirupa.com/t/spot-the-bug-133-dungeon-quest-runner/683224 "2026-09-05T14:40:17Z")

</div>

Why does my dungeon quest runner always declare total victory? function runDungeonEncounter(hero, monsters) { let journal = \[\]; let stamina = hero.baseStamina; function processBattlePhase(turnIndex) { if (tur…

---

## [Spot the bug - #134: Playlist Generator](https://forum.kirupa.com/t/spot-the-bug-134-playlist-generator/683244)

<div class="topic-metadata">

**Author:** [@Yoshiii](https://forum.kirupa.com/u/Yoshiii)\
**Replies:** 6\
**Last updated:** [September 5, 2026, 8:40am UTC](https://forum.kirupa.com/t/spot-the-bug-134-playlist-generator/683244 "2026-09-05T08:40:19Z")

</div>

Why is my party playlist skipping the final song? const partyTracks = \[ "Electric Disco Jelly", "Neon Flamingo Waltz", "Galactic Bagpipe Jam", "Midnight Kazoo Solo", "Cosmic Polka Fever" \]; function announceS…

---

## [Coding Challenge - #13: Format Number Commas](https://forum.kirupa.com/t/coding-challenge-13-format-number-commas/683222)

<div class="topic-metadata">

**Author:** [@sora](https://forum.kirupa.com/u/sora)\
**Replies:** 2\
**Last updated:** [September 2, 2026, 11:00pm UTC](https://forum.kirupa.com/t/coding-challenge-13-format-number-commas/683222 "2026-09-02T23:00:16Z")

</div>

Write a function formatNumber(n) that accepts a number or numeric string and returns a string with comma separators added to the integer portion. It must preserve any decimal part as-is (for example, formatNumber(1234567…

---

## [Spot the bug - #132: Recipe Submit Handler](https://forum.kirupa.com/t/spot-the-bug-132-recipe-submit-handler/683212)

<div class="topic-metadata">

**Author:** [@Quelly](https://forum.kirupa.com/u/Quelly)\
**Replies:** 2\
**Last updated:** [September 2, 2026, 9:00am UTC](https://forum.kirupa.com/t/spot-the-bug-132-recipe-submit-handler/683212 "2026-09-02T09:00:16Z")

</div>

Why is my secret recipe payload missing the secret spice? const form = document.querySelector('form'); const data = new FormData(form); data.set('spice', 'paprika'); fetch('/bake', { method: 'POST', body: new URLSearchP…

---

## [JS Quiz: Easy: Simplest Regex Match](https://forum.kirupa.com/t/js-quiz-easy-simplest-regex-match/683211)

<div class="topic-metadata">

**Author:** [@sora](https://forum.kirupa.com/u/sora)\
**Replies:** 2\
**Last updated:** [September 2, 2026, 8:00am UTC](https://forum.kirupa.com/t/js-quiz-easy-simplest-regex-match/683211 "2026-09-02T08:00:06Z")

</div>

What will be logged to the console by the match method? const text = "hello world"; const pattern = /world/; const result = text.match(pattern); console.log(result); poll

[Previous page](https://forum.kirupa.com/latest.md)

[Next page](https://forum.kirupa.com/latest.md?page=2)
