chapdo
chapdo-dev.bsky.social
chapdo
@chapdo-dev.bsky.social
Frontend Developer who builds what I love
October 31, 2025 at 2:48 AM
October 29, 2025 at 2:56 PM
October 28, 2025 at 1:05 PM
October 27, 2025 at 2:17 PM
At the beginning, I honestly wasn’t sure if I could handle this.
Everything felt overwhelming and unfamiliar.
April 28, 2025 at 4:00 PM
While working on the note editing feature, I ran into a state management issue.
April 26, 2025 at 5:20 AM
Global state management works best for app-wide state that’s shared across multiple features,
whereas the Context API fits local-ish state that doesn’t change frequently and is tied to component lifecycle.
April 24, 2025 at 3:54 PM
• Promise: Represents an async operation
→ Use .then() / .catch() to handle result
• async/await: Syntactic sugar for Promise
→ Makes async code look like sync
April 23, 2025 at 3:43 PM
MediaRecorder, MIME type, and keyframe chunks
• Learned that MediaRecorder is a Web API used for recording screen, mic, or system audio.
• It outputs data in chunks, typically with MIME type video/webm, which is a container format for video/audio streams.
April 22, 2025 at 2:13 PM
TIL: WebSocket in Electron
• Managed connection via a global WebSocket provider
• Unified message format: type + payload
• Modular handlers: onopen, onmessage, etc.
• Separated UI from WebSocket logic for better maintainability
• Auto-reconnect coming next

#Electron #WebSocket #DevLog #TIL
April 21, 2025 at 3:49 PM
Today I explored different approaches to state management in frontend applications by comparing XState and Zustand.
April 16, 2025 at 4:23 PM
- Don’t rely on updated state right after setState.
- UseRef + debounce is a reliable pattern for autosave.
- Avoid calling mutate directly in onChange when state isn’t synced yet.
April 15, 2025 at 4:58 PM
Today I ran into an issue where opening a dialog from within a popover resulted in the dialog instantly closing. After some debugging, I realized that the dialog trigger was unmounted as soon as the popover closed — which makes sense, because the trigger was part of the popover content.
April 14, 2025 at 4:33 PM
Let‘s manage environment variables well.
April 11, 2025 at 4:56 PM
Today, I spent a lot of time understanding and organizing the Google OAuth login flow in an Electron environment.
April 10, 2025 at 4:29 PM
Today was all about video editing — I worked on two different videos.

It made me realize how much my past experience with editing is paying off now.

I also learned how to better prepare videos specifically for Google reviews, which was a useful insight.
April 9, 2025 at 3:23 PM
Today, I realized the importance of focusing more on myself rather than worrying about how others perceive me.

I started thinking more deeply about the tasks I’m responsible for — what I expected in terms of time and effort, and how long it actually took.
April 8, 2025 at 3:37 PM
Today, I didn’t do much coding and instead spent some time reviewing a business planning document.

It reminded me of when I worked on a similar document back in university — I realized that the overall structure and approach haven’t changed much, though I can now appreciate the details more.
April 7, 2025 at 4:39 PM
I used to confuse infinite scroll and virtualized scroll, but now I clearly understand the difference.
April 4, 2025 at 3:49 PM
One particular challenge was handling a button that appears on hover and triggers a popover on click. The tricky part was ensuring that the popover remains visible even after the hover state disappears.
April 3, 2025 at 3:37 PM
I’ve always deployed web projects using Vercel or Cloudflare, but today, I tried deploying with AWS S3 for the first time. It was as simple as uploading the dist files, but doing this helped me better understand the build output and how things come together.
April 2, 2025 at 3:36 PM