Alex Grad's Avatar

Alex Grad

@grad.dev.bsky.social

Building macOS & iOS apps in public and sharing everything I learn.

140 Followers  |  128 Following  |  90 Posts  |  Joined: 14.11.2024  |  1.7645

Latest posts by grad.dev on Bluesky

Post image

Finally built my dream custom keyboard! Really happy with the result. The feel and sound are super satisfying!

PCB: @wooting.io 60HE+ Module
Case: Tofu60 Redux in Meteorite Gray
Keycaps: GMK MTNU Graphite
Switches: GEON Raw HE

20.03.2025 12:54 β€” πŸ‘ 4    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Video thumbnail

Ported dkaraush's rotating ASCII donut GLSL shader to Metal + SwiftUI πŸ™ƒ

Repo: github.com/graddotdev/S...

21.02.2025 10:31 β€” πŸ‘ 11    πŸ” 2    πŸ’¬ 0    πŸ“Œ 0

These buttons are also inspired by the Braun TG 60 πŸ™ƒ

19.02.2025 11:25 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Video thumbnail

Just open-sourced NeoShadow, a SwiftUI component for creating smooth shadows! Perfect for neumorphic interfaces.

Check it out: github.com/graddotdev/S...

19.02.2025 10:33 β€” πŸ‘ 5    πŸ” 0    πŸ’¬ 2    πŸ“Œ 0
Video thumbnail

Ported Figma's "Beautiful Shadows" plugin by Alex Widua to SwiftUI. Considering making this open source – would love to hear if there's interest from the SwiftUI community.

18.02.2025 12:26 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Thank you!

16.02.2025 15:42 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

I've quit my job to build macOS and iOS apps full-time. Excited to build in public, share my learnings, and connect with others on this journey. Wish me luck! πŸ™ƒ

16.02.2025 14:19 β€” πŸ‘ 6    πŸ” 0    πŸ’¬ 3    πŸ“Œ 0

Worth mentioning how smoothly @zed.dev runs on ProMotion displays. Scrolling and resizing windows are just so satisfying.

14.02.2025 12:27 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Post image

10 days since upgrading from 16" MBP (Intel, 2019) to 14" MBP (M4 Pro, 2024). Hard to express how awesome this machine is β€” lightweight, beautiful, powerful and truly portable. Perfect for working from the couch.

14.02.2025 12:27 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Post image

The only minor complaint I have is how dark (nearly black) the bulbs appear when they're off in the shimmering animation. This is particularly noticeable on a white background. @simonbs.dev, any chance you can add an option for this?

25.12.2024 05:57 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Post image

The festivitas.app by @simonbs.dev is awesome!

25.12.2024 05:57 β€” πŸ‘ 12    πŸ” 3    πŸ’¬ 1    πŸ“Œ 0
Post image 25.12.2024 05:08 β€” πŸ‘ 4    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Post image

I've completed day 25 of #AdventOfTypeScript.

Merry Christmas!

25.12.2024 05:06 β€” πŸ‘ 9    πŸ” 0    πŸ’¬ 2    πŸ“Œ 0
Post image

I've completed the main part of day 24 of #AdventOfTypeScript but decided not to finish it since it focuses more on reverse engineering rather than type system knowledge. I've attached that part of the solution for anyone who's interested.

24.12.2024 13:59 β€” πŸ‘ 7    πŸ” 0    πŸ’¬ 2    πŸ“Œ 0
Post image

Day 23 of #AdventOfTypescript required me to look at HotScript's repo to solve the task. Really like this approach. Definitely learned something new today.

23.12.2024 14:25 β€” πŸ‘ 6    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Yesterday was busy, so I brute-forced Day 22 of #AdventOfTypeScript. It wasn't hard, just a lot of coding, and I don't want to do that today.

23.12.2024 14:01 β€” πŸ‘ 4    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Post image

I've completed day 21 of #AdventOfTypeScript. Last year's tasks were much harder. I miss those days πŸ˜”

adventofts.com/events/2024/21

21.12.2024 05:52 β€” πŸ‘ 6    πŸ” 0    πŸ’¬ 2    πŸ“Œ 0

Your template string differs from mine. In my solution you can replace `string` with `"var" | "let" | "const"` and it will work fine.

20.12.2024 10:53 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

What do you mean? I just replaced `"let" | "const" | "var"` with `string`. There is no need to overcomplicate it.

20.12.2024 09:58 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Post image

However, using an accumulator is more efficient.

20.12.2024 07:10 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Post image

I've completed day 20 of #AdventOfTypeScript.
Same task, same solution. DΓ©jΓ  vu.

adventofts.com/events/2024/20

20.12.2024 07:10 β€” πŸ‘ 6    πŸ” 0    πŸ’¬ 2    πŸ“Œ 0
Post image

I've completed day 19 of #AdventOfTypeScript.

adventofts.com/events/2024/19

19.12.2024 07:11 β€” πŸ‘ 6    πŸ” 0    πŸ’¬ 2    πŸ“Œ 0

Thank you. I used @figma.com to create it.

18.12.2024 13:05 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Yeah, it's sort of a brute force solution.

18.12.2024 10:06 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Post image

I've completed dayΒ 18 of #AdventOfTypeScript. Easy one if you know about `NoInfer`.

adventofts.com/events/2024/18

18.12.2024 07:00 β€” πŸ‘ 6    πŸ” 0    πŸ’¬ 2    πŸ“Œ 0

@trash.supplies, will solutions like this be penalized and excluded from the leaderboard?

17.12.2024 08:55 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Post image

I also found a new way to bypass the test cases. πŸ™ƒ

17.12.2024 07:37 β€” πŸ‘ 8    πŸ” 0    πŸ’¬ 3    πŸ“Œ 0
Post image

I've completed day 17 of #AdventOfTypeScript. It took me some time to realize that `x[0]` is not working with the `string` type.

adventofts.com/events/2024/17

17.12.2024 07:31 β€” πŸ‘ 12    πŸ” 0    πŸ’¬ 2    πŸ“Œ 0
Post image

Here's the fixed solution, as the previous one was not working correctly. Thanks to @andarist.bsky.social for pointing out the problem.

16.12.2024 13:16 β€” πŸ‘ 4    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

They need to write better tests instead. Check yesterday's brute-force solution. It doesn't have any `any` πŸ˜‚

16.12.2024 13:11 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

@grad.dev is following 19 prominent accounts