Remix has quite the back story. Created by the duo behind React Router in 2020 and seen as an alternative to Next.js, Remix was acquired by Shopify in 2022 and its core ideas folded into React Router v7 in 2024. Now, a new direction: a full-stack, web standards-first framework with its own UI component model and⦠no React.
Michael Jackson (Remix)
Please open Telegram to view this post
VIEW IN TELEGRAM
β€8π3π₯3
CHALLENGE
const compose = (...fns) => (x) => fns.reduceRight((acc, fn) => fn(acc), x);
const pipe = (...fns) => (x) => fns.reduce((acc, fn) => fn(acc), x);
const double = (x) => x * 2;
const addTen = (x) => x + 10;
const square = (x) => x ** 2;
const negate = (x) => -x;
const transform1 = compose(negate, square, addTen, double);
const transform2 = pipe(double, addTen, square, negate);
const memoize = (fn) => {
const cache = new Map();
return (x) => {
if (!cache.has(x)) cache.set(x, fn(x));
return cache.get(x);
};
};
const memoTransform1 = memoize(transform1);
console.log(transform1(3));
console.log(transform2(3));
console.log(memoTransform1(3) === transform1(3));
β€1π1
What is the output?
Anonymous Quiz
22%
256 -256 true
36%
-256 256 false
22%
-64 -256 true
19%
-256 -256 true
β€2
At ten years old, the βanimate anything from JavaScriptβ library continues to get even better with a new scrambleText effect and auto-grid layout mode for stagger grids. The docs for Anime are truly top-tier and packed with examples.
Julian Garnier
Please open Telegram to view this post
VIEW IN TELEGRAM
β€5π2π₯1π€©1
CHALLENGE
function processData(value) {
let result = "start";
try {
result += " -> try";
if (value === null) throw new TypeError("Null value");
if (value < 0) throw new RangeError("Negative value");
result += " -> success";
return result;
} catch (e) {
result += ` -> catch(${e.constructor.name})`;
return result;
} finally {
result += " -> finally";
console.log(result);
}
}
console.log(processData(null));β€4π1π₯1π€©1
What is the output?
Anonymous Quiz
30%
start -> try -> catch(TypeError) start -> try -> catch(TypeError) -> finally
26%
start -> try -> success -> finally start -> try -> success
32%
start -> try -> catch(TypeError) -> finally start -> try -> catch(TypeError)
12%
start -> try -> finally start -> try -> catch(TypeError)
β€3π₯2π€1
CHALLENGE
function createCounter() {
let count = 0;
return {
increment() { count++; },
decrement() { count--; },
getCount() { return count; },
reset: () => { count = 0; }
};
}
const counter = createCounter();
counter.increment();
counter.increment();
counter.increment();
counter.decrement();
const { getCount, reset } = counter;
console.log(counter.getCount());
reset();
console.log(getCount());
β€5π1
β€2π€2π€©1
CHALLENGE
class Pipeline {
#value;
#log = [];
constructor(value) {
this.#value = value;
}
map(fn) {
this.#value = fn(this.#value);
this.#log.push(`map:${this.#value}`);
return this;
}
filter(fn) {
if (Array.isArray(this.#value)) {
this.#value = this.#value.filter(fn);
this.#log.push(`filter:${this.#value}`);
}
return this;
}
reduce(fn, init) {
if (Array.isArray(this.#value)) {
this.#value = this.#value.reduce(fn, init);
this.#log.push(`reduce:${this.#value}`);
}
return this;
}
result() {
console.log(this.#log.join(' | '));
return this.#value;
}
}
new Pipeline([1, 2, 3, 4, 5, 6])
.filter(n => n % 2 === 0)
.map(arr => arr.map(n => n ** 2))
.reduce((acc, n) => acc + n, 0)
.result();π5β€4π₯4
Volume I of this in-depth guide is now complete with eight chapters of advanced material covering topics like event loop internals, what V8 does, buffer allocation, streams, module resolution, async/await, and the process lifecycle.
Ishtmeet Singh
Please open Telegram to view this post
VIEW IN TELEGRAM
π7β€6π€©3π₯2
CHALLENGE
const name = "Taylor";
const age = 28;
const role = "engineer";
const user = {
name,
age,
role,
greet() {
return `Hi, I'm ${this.name}, age ${this.age}`;
},
get info() {
return `${this.role.toUpperCase()} @ ${this.age}`;
}
};
const { name: userName, info, greet } = user;
console.log(userName);
console.log(info);
console.log(greet.call({ name: "Jordan", age: 35 }));
β€3π₯3π1
Another mammoth Bun release. Bun.Image is a new built-in image processing API which can replace Sharp in many cases. Bunβs package manager has added a global virtual store (akin to pnpmβs), Bun.serve has experimental HTTP/3 over QUIC support, and fetch gets HTTP/2 and HTTP/3 support. Plus the usual raft of Node.js compatibility improvements.
Jarred Sumner
Please open Telegram to view this post
VIEW IN TELEGRAM
β€8π5π₯1π€1
CHALLENGE
const handler = {
get(target, prop, receiver) {
if (prop in target) {
const value = Reflect.get(target, prop, receiver);
return typeof value === "number" ? value * 2 : value;
}
return `Property "${prop}" not found`;
},
set(target, prop, value) {
if (typeof value !== "number") {
throw new TypeError("Only numbers allowed");
}
Reflect.set(target, prop, value ** 2);
return true;
},
has(target, prop) {
return prop.startsWith("_") ? false : prop in target;
},
};
const store = new Proxy({ _secret: 99, score: 5 }, handler);
store.level = 3;
console.log(store.score);
console.log(store.level);
console.log("_secret" in store);
console.log("score" in store);
console.log(store._secret);π₯2β€1π1
What is the output?
Anonymous Quiz
29%
10 18 false true 198
36%
5 9 false true 198
31%
10 9 false true Property "_secret" not found
4%
10 9 true false 198
CHALLENGE
class Range {
constructor(start, end, step = 1) {
this.start = start;
this.end = end;
this.step = step;
}
[Symbol.iterator]() {
let current = this.start;
const { end, step } = this;
return {
next() {
if (current <= end) {
const value = current;
current += step;
return { value, done: false };
}
return { value: undefined, done: true };
}
};
}
}
const range = new Range(1, 10, 3);
const result = [...range].map(n => n ** 2);
console.log(result);
β€5π₯2
What is the output?
Anonymous Quiz
20%
[ 1, 9, 25, 49 ]
50%
[ 1, 16, 49, 100 ]
16%
[ 1, 9, 49 ]
14%
[ 1, 9, 25, 49, 81 ]
β€4π€1
CHALLENGE
const p1 = new Promise((resolve) => {
console.log("A");
resolve("B");
});
const p2 = p1.then((val) => {
console.log(val);
return "C";
});
p2.then((val) => console.log(val));
console.log("D");
β€3π1
β€4π€3