Tiantian Ma
matianti.bsky.social
Tiantian Ma
@matianti.bsky.social
For @johnguerra.bsky.social's @northeasternu.bsky.social
#ProgramDesignParadigms class, I built an app called BalanceBoard - it helps you log your activities, energy, and emotions, then visualizes how they relate; like a self-reflection assistant. Try it out: observablehq.com/@tian5252/ba...
BalanceBoard
Documentation 1. What it does BalanceBoard is an application that allows users to log their engagement level, energy level, and emotions associated with an activity. Users can also add new activity re...
observablehq.com
April 22, 2025 at 6:37 PM
Reactivity in Observable notebooks is kind of similar to Makefiles: cell values update based on dependencies, but more automatic. You see visualized results immediately, but also the wrong ones. Forces you to write clean code, or crash visibly.
#ProgrammingParadigms @northeasternu.bsky.social
April 16, 2025 at 5:43 PM
For @johnguerra.bsky.social's @northeasternu.bsky.social #ProgramDesignParadigms class I built an @observablehq.com reactive input that allows users to log an emotion associated with a selected activity. See demo -> observablehq.com/@tian5252/em...
EmotionLogger
CS5010 Homework5 - Emotion Logger Widget 1. What it does This is an Emotion Logger widget that allows users to: Select an emotion (with emoji), Choose a related activity (from a database), Specify the...
observablehq.com
April 15, 2025 at 10:31 PM
The classic Rails demo shows how it uses templates to auto-generate controller, model, and view files - setting up MVC instantly. The framework feels declarative. With little code, one can build a lot of functionality. It still feels like magic today. #ProgrammingParadigms @northeasternu.bsky.social
April 8, 2025 at 3:33 AM
HTTP vs WebSocket is like texting vs calling. HTTP sends messages and waits at a time, while WebSocket enables real-time bi-directional talks. But WebSocket first connects via HTTP that upgrades to WebSocket, like texting "Let's talk" before a call. #ProgrammingParadigms @northeasternu.bsky.social
April 2, 2025 at 5:08 AM
One challenge in programming is the risk of regressing existing bugs when developing new features. With TDD, the existing test suite serves as a safety net, helping catch regressions early and reducing the risk of last-minute surprises in testing! #ProgrammingParadigms @northeasternu.bsky.social
March 26, 2025 at 5:15 PM
Jest is a testing tool that works across many JavaScript environments, but it’s not a panacea. When using it with ESLint, don’t forget to import Jest’s global helpers or configure the ESLint environment ahead. A small setup makes all the difference! #ProgrammingParadigms @northeasternu.bsky.social
March 19, 2025 at 10:02 AM
The communication of shared workers in JavaScript is like a transport layer protocol in networking: it uses ports (MessagePort) to enable messaging between the main script and the worker with multiple connected scripts (like different processes). #ProgrammingParadigms @northeasternu.bsky.social
March 12, 2025 at 9:59 PM
JavaScript: Promises are great for avoiding callback hell and support chaining, but .then() always hands me another Promise. await, on the other hand, feels more like synchronous code and lets me access the actual data directly. Prefer it now! #ProgrammingParadigms @northeasternu.bsky.social
February 26, 2025 at 10:56 PM
Asynchronous programming in JavaScript is like multi-threaded programming in C - but without threads 🤔. With ’Promise‘ implementation, 'then' brings success, and 'catch' handles failure. Straightaway! #ProgrammingParadigms @northeasternu.bsky.social
February 19, 2025 at 9:20 AM
To achieve purity, functional programming use more memory and sacrifice some performance. In return? More deterministic results. Compared to OOP, which excels in modularization, I think functional programming's strength lies in making debugging easier #ProgrammingParadigms @northeasternu.bsky.social
February 12, 2025 at 9:09 AM
/**
* What I learned about JSDoc (with JSDoc documention)
* @param {string} msg - a note from me
* @return {void}
*/
function learn(msg) {
console.log(`I learn: ${msg}`);
}
learn("Using JSDoc makes JavaScript feel a bit more strongly typed"); #ProgrammingParadigms @northeasternu.bsky.social
February 4, 2025 at 8:28 AM
Does a UML diagram help with refactoring? Not really. Refactoring requires examining the code to reduce redundancy. But does refactoring result in a better UML diagram? Yes! A good refactor leads to a clearer UML with more fields in the abstract class #ProgrammingParadigms @northeasternu.bsky.social
January 29, 2025 at 6:57 AM
Building a 3D scene in browser with Three.js is like an ad shoot:
1. Set the stage with a Scene and place the objects
2. Pick a wonderful angle with a Camera
3. Finally, produce the picture with a Renderer
Declarative, and see it instantly with Vite!
#ProgrammingParadigms @northeasternu.bsky.social
January 22, 2025 at 1:16 AM
JavaScript handles OOP inheritance with prototype chain, which is conceptually like a linked list. Using a property? It’s like asking each person in a line from the beginning, 'Hi, are you X?🙋' until you find one, or hit the end of the line.
#ProgrammingParadigms @northeasternu.bsky.social
January 15, 2025 at 10:36 PM