SVG Path Commands
SVG paths are the most flexible way to draw shapes in SVG. A path consists of one or more commands stored in the d attribute. Each command moves the current point, draws straight lines, curves, or arcs, and together they define the final shape. Almost every SVG shape (<rect>, <circle>, <ellipse>, <line>, <polyline>, and <polygon>) can be represented as a path, making paths the most general drawing primitive in SVG. A single path may contain multiple subpaths. Each M (Move To) command starts a new subpath, which may be left open or closed using the Z command. Every drawing command updates the current point (sometimes called the pen position). Relative commands (l, h, v, c, q, etc.) interpret
Read moreBuilding an Assessment Platform Without Building One
I was working on our hiring workflow when we needed an online assessment platform for candidates. The requirements themselves were fairly straightforward: Support both multiple-choice and short-answer questions. Allow candidates to start the assessment only within a specified time window. Enforce a fixed test duration. Allow only one attempt. Present each candidate with a different set of questions. Normally, the answer would have been to purchase an assessment platform or build one ourselves. Unfortunately, neither option was realistic. We couldn't find a third-party service that met our needs, and our team didn't have enough bandwidth to develop a dedicated platform. Instead of asking, "
Read moreThrowback: A Simple Browser-Based VTuber for an Office Sharing Session
About a year ago, I gave a sharing session at my workplace. We were free to present any topic we were interested in, so I chose something I'd been following for a while: VTubers. If you're not familiar with them, VTubers (Virtual YouTubers) are content creators who use animated virtual avatars instead of appearing on camera. These avatars are usually controlled in real time through face tracking, expression tracking, and lip-sync, making them feel like they're speaking naturally to the audience. Since the session itself was about VTubers, I thought it would be fun to present it with a virtual avatar instead of standing in front of the slides myself. Rather than using dedicated VTubing s
Read moreReviving My Blog, Without Reviving the Backend
After years of being offline, I'm finally bringing my blog back. My first blog was powered by NibbleBlog, a lightweight PHP blog engine that I absolutely loved. It was refreshingly simple, no MySQL, no complicated setup. Just PHP, a few required modules, and everything (posts, configuration, media) was stored as files. Unfortunately, the project is now archived and no longer actively maintained. The blog itself lived on a free PHP hosting provider. It served me well for years, until the free hosting service was discontinued. Without a proper migration plan, my blog quietly disappeared with it. This time, I wanted to build something that could last longer. Instead of looking for another blog
Read more