Sign in

Alex Grad

@grad.dev
140 followers 128 following 90 posts

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

PostsRepliesMedia
Alex Grad @grad.dev · 20/03/2025
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
040
Alex Grad @grad.dev · 21/02/2025
Ported dkaraush's rotating ASCII donut GLSL shader to Metal + SwiftUI 🙃 Repo: github.com/graddotdev/S...
0112
Alex Grad @grad.dev · 19/02/2025
Just open-sourced NeoShadow, a SwiftUI component for creating smooth shadows! Perfect for neumorphic interfaces. Check it out: github.com/graddotdev/S...
250
Alex Grad @grad.dev · 18/02/2025
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.
010
Alex Grad @grad.dev · 14/02/2025
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.
120
Alex Grad @grad.dev · 25/12/2024
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?
120
Alex Grad @grad.dev · 25/12/2024
The festivitas.app by @simonbs.dev is awesome!
1122
Alex Grad @grad.dev · 25/12/2024
140
Alex Grad @grad.dev · 25/12/2024
I've completed day 25 of #AdventOfTypeScript. Merry Christmas!
290
Alex Grad @grad.dev · 24/12/2024
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.
270
Alex Grad @grad.dev · 23/12/2024
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.
050
Alex Grad @grad.dev · 21/12/2024
I've completed day 21 of #AdventOfTypeScript. Last year's tasks were much harder. I miss those days 😔 adventofts.com/events/2024/21
260
Alex Grad @grad.dev · 20/12/2024
However, using an accumulator is more efficient.
030
Alex Grad @grad.dev · 20/12/2024
I've completed day 20 of #AdventOfTypeScript. Same task, same solution. Déjà vu. adventofts.com/events/2024/20
260
Alex Grad @grad.dev · 19/12/2024
I've completed day 19 of #AdventOfTypeScript. adventofts.com/events/2024/19
260
Alex Grad @grad.dev · 18/12/2024
I've completed day 18 of #AdventOfTypeScript. Easy one if you know about `NoInfer`. adventofts.com/events/2024/18
260
Alex Grad @grad.dev · 17/12/2024
I also found a new way to bypass the test cases. 🙃
380
Alex Grad @grad.dev · 17/12/2024
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
2120
Alex Grad @grad.dev · 16/12/2024
Here's the fixed solution, as the previous one was not working correctly. Thanks to @andarist.bsky.social for pointing out the problem.
040
Alex Grad @grad.dev · 16/12/2024
Oh, now I see what you mean. I just need to move one line up to fix it.
100
Alex Grad @grad.dev · 16/12/2024
Here's a "brute force" solution as a bonus:
240
Alex Grad @grad.dev · 16/12/2024
I've completed day 16 of #AdventOfTypeScript. I had type-safe and working solution, but it fails t4. This test case forced me to rewrite my solution and wasted a lot of my time. I don't think that test case belongs there. adventofts.com/events/2024/16
3130
Alex Grad @grad.dev · 15/12/2024
There is also a "brute force solution":
140
Alex Grad @grad.dev · 15/12/2024
I've submitted the solution for day 15 of #AdventOfTypeScript using the cmd + y shortcut. The problem is that submitting using this shortcut accepts any solution, even a blank one. I hope today's scores don't count for the leaderboard. #AdventOfTypeScript adventofts.com/events/2024/15
3140
Alex Grad @grad.dev · 15/12/2024
I just can't submit the solution today, so my leaderboard position is fucked. There are a lot of errors in the console. What a nice way to start the day. 😡 #AdventOfTypeScript adventofts.com/events/2024/15
350
Alex Grad @grad.dev · 14/12/2024
I've completed day 14 of #AdventOfTypeScript. Today's task was simple, but I felt too groggy to complete it quickly. 😔 adventofts.com/events/2024/14
1140
Alex Grad @grad.dev · 13/12/2024
Alternatively, here's another way to solve it:
170
Alex Grad @grad.dev · 13/12/2024
I've completed day 13 of #AdventOfTypeScript. Today's task was actually pretty easy. You just need to add `in out` before `T`. adventofts.com/events/2024/13
5160
Alex Grad @grad.dev · 13/12/2024
Got first place on today's #AdventOfTypeScript challenge! Feeling amazing 😂
1170
Alex Grad @grad.dev · 12/12/2024
I've completed day 12 of #AdventOfTypeScript. Spent 40 minutes mostly trying to figure out NaughtyOrNice. In the end, I hardcoded the rating by name. If hardcoding is the only solution, then this task is just nonsense. adventofts.com/events/2024/12
7170
Alex Grad @grad.dev · 11/12/2024
And here’s the shortest and hackiest solution:
170
Alex Grad @grad.dev · 11/12/2024
If you don’t like extra generic parameters, here’s a neat solution I like:
180
Alex Grad @grad.dev · 11/12/2024
I've completed day 11 of #AdventOfTypeScript. Among the many ways to solve this, this is my favorite: not the shortest, but simple and clear. adventofts.com/events/2024/11
5200
Alex Grad @grad.dev · 10/12/2024
The first two bitwise operations are redundant and can be removed for simplicity.
170
Alex Grad @grad.dev · 10/12/2024
Exactly. I wrote something like this on the first try and didn't understand why it was not allowed to be sent.
000
Alex Grad @grad.dev · 10/12/2024
I've completed day 10 of #AdventOfTypeScript, but I was slower than usual today and dropped on the leaderboard. adventofts.com/events/2024/10
3210
Alex Grad @grad.dev · 09/12/2024
I placed 10th in today's #AdventOfTypeScript task 🎉
0210
Alex Grad @grad.dev · 09/12/2024
I've completed day 9 of #AdventOfTypeScript!
1130
Alex Grad @grad.dev · 08/12/2024
You can hover your cursor over a variable to view the namespace it belongs to.
120
Alex Grad @grad.dev · 08/12/2024
I've completed day 8 of #AdventOfTypeScript!
1120
Alex Grad @grad.dev · 07/12/2024
I've completed day 7 of #AdventOfTypeScript! The task took me 5 minutes because I wasn't familiar with const generics, but I'm glad I learned something new, and even so, I placed 20th for this task today 😂
1110
Alex Grad @grad.dev · 06/12/2024
Day 5 of #AdventOfTypeScript is done.
290
Alex Grad @grad.dev · 05/12/2024
Day 5 of #AdventOfTypeScript is complete. It's getting more interesting!
060
Alex Grad @grad.dev · 04/12/2024
Just `number | string` works as well, so I think I overcomplicated it.
120
Alex Grad @grad.dev · 04/12/2024
Day 4 of #AdventOfTypeScript is complete!
140
Alex Grad @grad.dev · 03/12/2024
Day 3 of #AdventOfTypeScript is complete! Those test cases with @ts-expect-error are still pretty confusing.
020
Alex Grad @grad.dev · 02/12/2024
I was able to submit this solution successfully as well. It is an acceptable solution for both days. @trash.supplies, is this behavior expected?
210
Alex Grad @grad.dev · 02/12/2024
Day 2 of #AdventOfTypeScript is complete. The task was straightforward, but ironically, I spent more time overthinking it than solving it.
210
Alex Grad @grad.dev · 01/12/2024
Day 1 of #AdventOfTypeScript was an easy one, as expected.
030
Alex Grad @grad.dev · 25/11/2024
Just started experimenting with #threejs — absolutely loving it!
060