ibm plex mono locally, so there are no external font requests anymore.overall, the build feels way lighter, faster, and cleaner now.
and yeah, the alignment is finally actually right.
I built a minimalist portfolio from the ground up, focusing entirely on strict layout control and a raw “hacker-document” aesthetic. I originally had a 3D particle system running in the background, but I ended up removing Three.js completely and replaced it with a much lighter, pure CSS dot-grid that uses a custom mouse-tracking spotlight mask to keep the load times near zero.The core of the build involved creating a precise CSS state-machine for a sticky-scroll landing sequence and using CSS Grid to achieve pixel-perfect absolute centering across the viewport. For typography, I used Google Fonts with IBM Plex Mono instead of adding the font directly into the stylesheet. Everything is tied together with a warm, vintage parchment color palette, strict flex-aligned project cards, and smooth hover-state GitHub reveals.It’s completely self-contained, lightweight, lightning fast, and matches exactly the aesthetic I was going for.
Status: CAD Complete | Ready for Slicing & 3D Printing
Finally completed the custom enclosure for HackPad1.
The enclosure is a simple two-piece design that houses the 9-key switch matrix, OLED display, rotary encoder, and the USB-C microcontroller. Since this was my first proper CAD project in Fusion 360, I spent a good amount of time understanding the workflow while designing it.
The biggest issue I faced was creating the top plate.
Fusion 360 kept selecting the PCB and switch bodies instead of the sketch, making it difficult to select the regions between the switches for extrusion.
To work around this, I first created a solid 1.5mm plate covering the entire top. Then I turned the sketch back on and used a -1.5mm cut extrusion to create all nine switch cutouts. This approach worked well and saved a lot of time.
Next, I worked on the USB-C opening.
I projected the USB connector onto the back wall and added some clearance so that different USB-C cables would fit comfortably.
While checking the design, I realized the back wall was too thick. A standard USB-C cable wouldn’t be able to fully connect because it would hit the plastic before reaching the port.
To fix this, I created a recessed pocket around the USB opening, reducing the wall thickness only in that area. This allows the cable to plug in properly while keeping the rest of the enclosure strong.
Once everything was in place, I saved the project as a Standard Design and exported both the top plate and bottom enclosure as mesh files for printing.
Unfortunately, I couldn’t track today’s work on Hackatime because I couldn’t find a Hackatime extension for Fusion 360.
Although today’s work won’t appear in my Hackatime stats, it took a considerable amount of time. Since I’m completely new to CAD and Fusion 360, a large part of the process involved learning the software, understanding different tools, and refining the design through multiple iterations.
Alright, so the custom macropad PCB is finally done! We finished routing the entire board, fixed all the DRC errors, and exported the final manufacturing files. Huge W for the team.
First, one painful confession.
I completely forgot to start the KiCad WakaTime plugin before working. 😭 Every single hour spent routing traces, fixing footprints, solving DRC errors, and figuring things out… none of it got tracked. My stats are absolutely gone.
Anyways, here’s how everything went.
After finishing the schematic, it was finally time to route the PCB.
Since the LEDs draw a decent amount of current, I couldn’t just use the default trace widths everywhere. So I created custom Net Classes in KiCad.
Routing itself took way longer than I expected. Some traces were straightforward, but others needed multiple attempts before everything fit properly without creating new issues.
Once the routing was done, I ran the DRC check.
That’s when KiCad decided to throw a whole list of errors at me. 😭
Most of them were Board Edge Clearance Violations because a few traces had gone too close to the Edge.Cuts boundary.
So I went through them one by one, removed the problematic traces, routed them again properly, and kept checking until every single error disappeared.
Definitely one of those “fix one thing, two more things break” moments.
Next came the ground plane.
I added a Copper Pour on the bottom layer (B.Cu) so that all the GND connections could be made properly.
Funny thing is, I first clicked on the Non-Copper Zone tool by mistake and spent a couple of minutes wondering why nothing was happening. 😭
After selecting the correct tool, the entire bottom layer got filled with ground copper.
That created another issue though.
Some traces were too close to a few switch pads, so the copper couldn’t connect properly and KiCad started showing Thermal Relief errors.
A little bit of manual routing later, I created enough space, refilled the copper, and everything connected perfectly.
A custom PCB without custom artwork doesn’t feel complete.
Adding text was easy, but adding our logo took way more effort than expected.
Here’s what went wrong:
.sym) instead of a footprint (.kicad_mod).So I resized it again using the Bitmap Converter, opened it in the Footprint Editor, and copied the artwork directly onto the PCB.
Bit of a jugaad solution, but if it works, it works. 😌
Devlog #1
Macropad Schematic Finally Coming Together!Alright, so here’s the update on my 3x3 macropad project for the upcoming hardware event. This is literally my first electronics project, so I honestly expected the KiCad schematic to be a complete mess with wires going everywhere. Surprisingly, I managed to keep it clean and organized, and it actually looks pretty professional.What I’ve finished so far:3x3 Switch Matrix:Instead of using nine separate GPIO pins for all the switches, I made a proper switch matrix. I connected the MX-style switches using 1N4148 diodes to prevent ghosting. I also used Global Labels for the rows and columns, so the schematic stays clean without random wires crossing everywhere.The Brain (Seeed XIAO RP2040):I added the Seeed XIAO RP2040 and mapped the switch matrix to it. The columns are connected to D0, D1, and D2, while the rows are connected to D3, D6, and D7.OLED Display:I finished wiring the 0.91-inch OLED display. I made sure the pin order matches the actual module (GND - VCC - SCL - SDA) so I don’t accidentally mess it up while designing the PCB. It’s powered using 3.3V, and the I2C lines (SCL and SDA) are connected to D4 and D5.What’s left to do:2 EC11 Rotary Encoders:I still need to add both rotary encoders to the schematic. I’ll map their A/B channels for things like volume and brightness control, along with the push-button pins.20 SK6812 MINI-E RGB LEDs:Next is the RGB lighting. I need to daisy-chain all the LEDs properly and connect the data line to D8.So yeah, the main functionality is pretty much done. The switch matrix, RP2040, and OLED are all sorted. Once I finish adding the rotary encoders and the RGB LEDs, the schematic will be complete and I can finally start routing the PCB.
Devlog #3 – Spotify Glass Widget v1.0.2This week was mostly about fixing problems and improving the overall experience instead of adding flashy features.The biggest change was adding a proper System Tray Edition. The widget can now run quietly in the Windows system tray instead of taking up space on the taskbar, and it also starts automatically when Windows boots. This makes it feel much more like a real desktop utility.I also added a proper application icon. In the previous version, reopening the widget after minimizing was annoying because it didn’t have its own icon. That’s fixed now.Another feature I added is a built-in volume slider, so you can control your system volume directly from the widget without opening the Windows volume controls.Behind the scenes, I reworked the media controls to make them much more responsive. Play, Pause, Next and Previous now react almost instantly. I also improved the volume slider animation and polished the overall UI to make everything feel smoother.I removed the Copy button as well since almost nobody was using it. Keeping the interface simple makes the widget cleaner and easier to use.This update is available in two versions:Classic Edition – Runs like a normal Windows application.System Tray Edition – Runs from the Windows system tray and starts automatically with Windows.Overall, this update wasn’t about adding lots of new features—it was about making the widget feel polished, faster, and something I can actually keep running every day.Next up, I’ll be working on adding more customization options and improving the overall Glass UI experience.
Devlop#2
added volume option and removed the copy option.
need the implement the functinality for voume. it has been a hard way to make the css work
okay so i making a spotify widget app which is a mini player(This player also works for local, web music)
Devlog #8
Finally deployed my OS(Limux).
(vercel)
link: https://ownos.vercel.app/
devlog #7
just updated the music player app. after spending soo much time debugging. i updated it with a clean ui which slides down as a widget
devlog#6
stuck at making my own mp3 player.spent around 1 and half hour only working on this. i’m still new on storing the local mp3 player and play them. i’ll be hosting the od after i resolved the issue.
devlop#5
so today i made some changes in the os.
will be focusing on making each app now.
devlog #4
just changed the time disaplay to centre. that’s it for today
devlop #3
today i created a live calendar widget at top right, also added 2 app functionalities.
1.about me app
2.terminal (going to add more functions tomorrow)
i’m thinking of making my about me container to glass finish maybe terminal too(but i want the terminal to be linux type) lets see :)
comment if you have any suggestions. Thanks.
just added task bar with only hover function. will be creating the first app-about me.
This is my first devlog. I just started building my OwnOs and completed part2 in the guide. it’s a normal website with just clock function for now.