# Latest

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

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

**Page:** 6

---

## [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',…

---

## [✨ 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

---

## [Spot the bug - #131: Centered Showcase Card](https://forum.kirupa.com/t/spot-the-bug-131-centered-showcase-card/683203)

<div class="topic-metadata">

**Author:** [@Quelly](https://forum.kirupa.com/u/Quelly)\
**Replies:** 2\
**Last updated:** [September 1, 2026, 8:00am UTC](https://forum.kirupa.com/t/spot-the-bug-131-centered-showcase-card/683203 "2026-09-01T08:00:14Z")

</div>

Why is my mystery treat card staying completely off center? .treat-stage { display: flex; width: 100vw; height: 100vh; align-items: center; text-align: center; background: #2b1055; } .mystery-card { width…

---

## [Coding Challenge - #11: Deep Object Merge](https://forum.kirupa.com/t/coding-challenge-11-deep-object-merge/683173)

<div class="topic-metadata">

**Author:** [@sarah\_connor](https://forum.kirupa.com/u/sarah_connor)\
**Replies:** 16\
**Last updated:** [August 31, 2026, 9:40am UTC](https://forum.kirupa.com/t/coding-challenge-11-deep-object-merge/683173 "2026-08-31T09:40:18Z")

</div>

Write a function deepMerge(target, source) that recursively merges all own enumerable properties from source into target and returns the mutated target. If both objects contain a property whose value is a plain object, m…

---

## [Coding Challenge - #12: Chunk An Array](https://forum.kirupa.com/t/coding-challenge-12-chunk-an-array/683192)

<div class="topic-metadata">

**Author:** [@Yoshiii](https://forum.kirupa.com/u/Yoshiii)\
**Replies:** 5\
**Last updated:** [August 31, 2026, 8:00am UTC](https://forum.kirupa.com/t/coding-challenge-12-chunk-an-array/683192 "2026-08-31T08:00:26Z")

</div>

Write a function chunk(arr, size) that splits an array into smaller sub-arrays of a specified length. For example, chunk(\[1, 2, 3, 4, 5\], 2) should return \[\[1, 2\], \[3, 4\], \[5\]\]. function chunk(arr, size) { // Your cod…

---

## [Spot the bug - #130: Security Vault Config](https://forum.kirupa.com/t/spot-the-bug-130-security-vault-config/683194)

<div class="topic-metadata">

**Author:** [@Yoshiii](https://forum.kirupa.com/u/Yoshiii)\
**Replies:** 2\
**Last updated:** [August 31, 2026, 8:00am UTC](https://forum.kirupa.com/t/spot-the-bug-130-security-vault-config/683194 "2026-08-31T08:00:16Z")

</div>

Why is my nested seal clone still modifying the master vault? function createSealedRecord(template) { const clone = Object.assign( Object.create(Object.getPrototypeOf(template)), template ); return Object.…

---

## [Coding Challenge - #10: Sort By Property](https://forum.kirupa.com/t/coding-challenge-10-sort-by-property/683148)

<div class="topic-metadata">

**Author:** [@WaffleFries](https://forum.kirupa.com/u/WaffleFries)\
**Replies:** 13\
**Last updated:** [August 30, 2026, 9:40am UTC](https://forum.kirupa.com/t/coding-challenge-10-sort-by-property/683148 "2026-08-30T09:40:18Z")

</div>

Write a function sortBy(arr, key, order) that returns a new array of objects sorted by the given key in either 'asc' (ascending, default) or 'desc' (descending) order without mutating the original array. For example, sor…

---

## [Spot the bug - #129: Retina Pixel Sampler](https://forum.kirupa.com/t/spot-the-bug-129-retina-pixel-sampler/683182)

<div class="topic-metadata">

**Author:** [@Ellen1979](https://forum.kirupa.com/u/Ellen1979)\
**Replies:** 7\
**Last updated:** [August 30, 2026, 8:00am UTC](https://forum.kirupa.com/t/spot-the-bug-129-retina-pixel-sampler/683182 "2026-08-30T08:00:17Z")

</div>

Why is my pixel snapshot reading from the wrong position? const ctx = canvas.getContext('2d'); ctx.scale(window.devicePixelRatio, window.devicePixelRatio); ctx.fillRect(20, 20, 50, 50); const pixel = ctx.getImageData(20…

---

## [Spot the bug - #128: Floating Balloon Element](https://forum.kirupa.com/t/spot-the-bug-128-floating-balloon-element/683160)

<div class="topic-metadata">

**Author:** [@VaultBoy](https://forum.kirupa.com/u/VaultBoy)\
**Replies:** 8\
**Last updated:** [August 28, 2026, 1:20pm UTC](https://forum.kirupa.com/t/spot-the-bug-128-floating-balloon-element/683160 "2026-08-28T13:20:19Z")

</div>

Why does my floating balloon speed up whenever I tab away? const balloon = document.querySelector("#balloon"); const physics = { posY: window.innerHeight - 80, speedY: -180, wobbleFreq: 0.005, wobbleAmp: 40, …

---

## [Spot the bug - #127: Spell Shelf List](https://forum.kirupa.com/t/spot-the-bug-127-spell-shelf-list/683142)

<div class="topic-metadata">

**Author:** [@sarah\_connor](https://forum.kirupa.com/u/sarah_connor)\
**Replies:** 6\
**Last updated:** [August 28, 2026, 11:20am UTC](https://forum.kirupa.com/t/spot-the-bug-127-spell-shelf-list/683142 "2026-08-28T11:20:17Z")

</div>

Why does my spell shelf only clear half the charms? function purgeDarkSpells(shelfElement) { const charms = shelfElement.getElementsByClassName("cursed"); for (let i = 0; i \< charms.length; i++) { const item …

---

## [When Should You Stop “Fixing” a UI?](https://forum.kirupa.com/t/when-should-you-stop-fixing-a-ui/683151)

<div class="topic-metadata">

**Author:** [@Apexcodes](https://forum.kirupa.com/u/Apexcodes)\
**Replies:** 0\
**Last updated:** [August 26, 2026, 2:44am UTC](https://forum.kirupa.com/t/when-should-you-stop-fixing-a-ui/683151 "2026-08-26T02:44:12Z")

</div>

I’ve noticed that sometimes a UI can become more complicated the more we try to improve it. For example, you start with a simple card layout, then add hover effects, animations, responsive adjustments, extra JavaScript,…

---

## [JavaScript Problem: Why Does This Return the Wrong Result?](https://forum.kirupa.com/t/javascript-problem-why-does-this-return-the-wrong-result/683116)

<div class="topic-metadata">

**Author:** [@Apexcodes](https://forum.kirupa.com/u/Apexcodes)\
**Replies:** 7\
**Last updated:** [August 25, 2026, 8:00am UTC](https://forum.kirupa.com/t/javascript-problem-why-does-this-return-the-wrong-result/683116 "2026-08-25T08:00:31Z")

</div>

I came across a small JavaScript bug that looks correct at first glance. function isAdult(age) { if (age = 18) { return true; } return false; } console.log(isAdult(16)); The code prints true, even though t…

---

## [Spot the bug - #126: Lunar Sky Painter](https://forum.kirupa.com/t/spot-the-bug-126-lunar-sky-painter/683134)

<div class="topic-metadata">

**Author:** [@Ellen1979](https://forum.kirupa.com/u/Ellen1979)\
**Replies:** 2\
**Last updated:** [August 25, 2026, 8:00am UTC](https://forum.kirupa.com/t/spot-the-bug-126-lunar-sky-painter/683134 "2026-08-25T08:00:17Z")

</div>

Why is my starry night sky drawing an invisible moon? const ctx = document.querySelector('canvas').getContext('2d'); ctx.fillStyle = '#fffa65'; ctx.arc(100, 100, 40, 0, Math.PI \* 2); ctx.fill(); Reply with what is brok…

---

## [✨ Archive Spotlight: Cheng Lou User Experience](https://forum.kirupa.com/t/archive-spotlight-cheng-lou-user-experience/683133)

<div class="topic-metadata">

**Author:** [@kirupaBot](https://forum.kirupa.com/u/kirupaBot)\
**Replies:** 1\
**Last updated:** [August 25, 2026, 7:20am UTC](https://forum.kirupa.com/t/archive-spotlight-cheng-lou-user-experience/683133 "2026-08-25T07:20:27Z")

</div>

Cheng Lou has a really interesting perspective on how we approach user experience design. You can listen to his full take on the subject here:.

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

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