afonsocrg's Avatar

afonsocrg

@afonsocrg

Building https://uni-feedback.com, https://reacttogether.dev and http://superttt.io I'm a software engineer eager to make this world a better place to live in.

30
Followers
13
Following
51
Posts
29.11.2024
Joined
Posts Following

Latest posts by afonsocrg @afonsocrg

Video thumbnail

After 5 years of daily workouts, I realized that streaks can hurt our progress.

It's easy to give too much importance to them, and it feels that all the progress is gone when we break them

Tracking the total days since I started keeps a healthier perspective on my habits.

#buildinpublic

03.10.2025 04:20 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Video thumbnail

Part 2: Our self improvement journey has to be gratifying even when we fail. Self compassion isn't soft, it's strategic

#buildinpublic #selfimprovement #mindset #selflove

28.09.2025 03:55 πŸ‘ 4 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0
TikTok - Make Your Day

vm.tiktok.com/ZGdaajga3/

26.09.2025 05:35 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

When we slip up, using circumstances as excuses protects us from feeling bad, but it keeps us away from progress.

One day someone asked me "If you had to catch a flight, would you use that excuse?". It was game changer

#selfimprovement #buildinpublic #mindset

26.09.2025 05:34 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

I've drafted a blog post about serendipity and why we should do this kinds of things! Haven't published it yet, but it shares a lot of the thought process that made me start sharing more. Would love to hear your thoughts on it!!

And good luck on that sharing journey!! We're in this together

23.09.2025 13:50 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
TikTok - Make Your Day

vm.tiktok.com/ZGda5JSvC/

23.09.2025 13:48 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

After a lot of resistance, I decided to post my first TikTok video

Realized I was avoiding it because it felt uncomfortable, but that's exactly why I needed to do it. Growth happens outside the comfort zone.

Good things can only happen if we put ourselves out there.

#buildinpublic

23.09.2025 13:44 πŸ‘ 2 πŸ” 0 πŸ’¬ 3 πŸ“Œ 0
Post image

Lately I've been working on "invisible" stuff for Uni Feedback:
- Built a whole admin dashboard to make it easier for me to maintain courses and feedback
- Built new scrapers get course bibliography, assessment and description

But it was finally time to make UI improvements.

Roast my design!

18.08.2025 15:30 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Preview
IndieBeers // Bangkok Meetup #2: Entrepreneur social (powered by Ramen Club) Β· Luma Hi everyone πŸ‘‹, welcome to the second IndieBeers in Bangkok! The goal is to help Indie Hackers / entrepreneurs & makers from across the city meet, exchange…

🍻 The 2nd IndieBeers Bangkok will be on the 20th May!

Join us to meet awesome builders in town, get inspired, charge your batteries and have a helluva productive week πŸ”₯πŸš€ (it's free!)

πŸ‘‰ lu.ma/lqk0f36j

See you there!

12.05.2025 02:19 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
GitHub - afonsocrg/multi-pong: Online Pong game using Croquet Online Pong game using Croquet. Contribute to afonsocrg/multi-pong development by creating an account on GitHub.

Just wrapped up the @multisynq.bsky.social "Multi Pong" workshop at 42 Porto! Built a multiplayer Pong game with Croquet.js without writing any backend or messaging code.

Guide with code available at github.com/afonsocrg/mu...

Feel free to PR with your own variation of the Pong game ;)

27.02.2025 15:22 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Post image

Last week I attended an indie builders co-working day in London. It's called @hackaditch, and it's just amazing!

Today we made something similar in Lisbon and it was awesome! We had a productive day, got good feedback and made new connections!

#coworking #lisbon #indie

30.01.2025 19:50 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

That is correct! React Together is basically a KV store on top of Croquet, but we're adding some hooks and components to improve developer experience

29.01.2025 20:46 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
React Together shared cursors. Synchronize cursors across multiple users or clients using the Cursors React component

React Together shared cursors. Synchronize cursors across multiple users or clients using the Cursors React component

Source Code of an example usage of the React Together Cursors component, to create shared and synchronized cursors in a React application.

Source Code of an example usage of the React Together Cursors component, to create shared and synchronized cursors in a React application.

πŸš€ React Together v0.3.3 is here!

Add real-time shared cursors to your React app with just ONE line of code! Want full control? The useCursors is here for you!

StackBlitz Demo: stackblitz.com/edit/react-t...

#ReactJS #WebDev

29.01.2025 16:59 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Post image

Had a blast giving the "Multi Pong" workshop at 42 Lisboa this morning! We built a multiplayer Pong game without writing any backend!

Full guide at github.com/afonsocrg/multi-pong

#workshop #croquet

29.01.2025 13:17 πŸ‘ 3 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0
Preview
Portugal Vue #3 Meetup, Thu, Jan 16, 2025, 6:30 PM | Meetup LisboaJS partnered with Portugal.Vue, and we are co-organizing this next event, focused on Vue!! The next [Portugal.Vue Meetup](https://www.meetup.com/portugal-vue/events/

We're just two days away from our first event of the year, in collaboration with Vue.js Portugal!

🎟️ π—¬π—Όπ˜‚π—Ώ 𝗳𝗿𝗲𝗲 π˜π—Άπ—°π—Έπ—²π˜: meetup.com/lisboajs/eve...

A huge thanks to Remote Crew, Infraspeak and Le Wagon Portugal for making this event possible!!

#vue #lisbon

14.01.2025 21:17 πŸ‘ 4 πŸ” 2 πŸ’¬ 0 πŸ“Œ 0
Post image Post image

πŸš€ React Together v0.3.2 drops with instant chat integration! Add real-time chat to your site with our <Chat/> component, or build your own with useChat hook. Fully customizable.

Try it β†’ reacttogether.dev/chat

#react #reactjs

14.01.2025 10:43 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Example usage of yacli_menu

```
from yacli_menu import command, run_menu

@command("Add Numbers")
def add():
    a = float(input("Enter first number: "))
    b = float(input("Enter second number: "))
    print(f"Result: {a + b}")
    return True

@command("Subtract Numbers")
def subtract():
    a = float(input("Enter first number: "))
    b = float(input("Enter second number: "))
    print(f"Result: {a - b}")
    return True

@command("Multiply Numbers")
def multiply():
    a = float(input("Enter first number: "))
    b = float(input("Enter second number: "))
    print(f"Result: {a * b}")
    return True

if __name__ == "__main__":
    run_menu() 
```

Example usage of yacli_menu ``` from yacli_menu import command, run_menu @command("Add Numbers") def add(): a = float(input("Enter first number: ")) b = float(input("Enter second number: ")) print(f"Result: {a + b}") return True @command("Subtract Numbers") def subtract(): a = float(input("Enter first number: ")) b = float(input("Enter second number: ")) print(f"Result: {a - b}") return True @command("Multiply Numbers") def multiply(): a = float(input("Enter first number: ")) b = float(input("Enter second number: ")) print(f"Result: {a * b}") return True if __name__ == "__main__": run_menu() ```

Example output of a yacli_menu program:

```
$ python3 example.py
1. Add Numbers
2. Subtract Numbers
3. Multiply Numbers
0. Exit
Enter choice: 
Enter choice: 6
Invalid choice. Try again.
Enter choice: asdf
Invalid choice. Try again.
Enter choice: 1
Enter first number: 19
Enter second number: 23
Result: 42.0
1. Add Numbers
2. Subtract Numbers
3. Multiply Numbers
0. Exit
Enter choice: 0
Exiting..
```

Example output of a yacli_menu program: ``` $ python3 example.py 1. Add Numbers 2. Subtract Numbers 3. Multiply Numbers 0. Exit Enter choice: Enter choice: 6 Invalid choice. Try again. Enter choice: asdf Invalid choice. Try again. Enter choice: 1 Enter first number: 19 Enter second number: 23 Result: 42.0 1. Add Numbers 2. Subtract Numbers 3. Multiply Numbers 0. Exit Enter choice: 0 Exiting.. ```

Just published my first python package: yacli_menu.

A few years ago I had to create some python CLI menus. Didn't like what was out there at the time, so decided to build my own :)

Hope it helps someone!

github.com/afonsocrg/ya...

#python

11.01.2025 20:46 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Stoked to be part of the organizing team! Thanks Rui Posse and @piara.bsky.social for making this fun!!

See you there πŸ”₯

08.01.2025 16:44 πŸ‘ 2 πŸ” 2 πŸ’¬ 0 πŸ“Œ 0
Preview
Stop sharing your screen, start sharing your website Remember the last time you had to screen share during a call? Perhaps you were walking someone...

Screen sharing is the digital version of looking over someone's shoulder. How often do we end up asking others to scroll down, or to click somewhere?

I believe the internet needs to evolve towards collaboration by default. Thoughts on this? πŸ€”

#webdev #ux

dev.to/afonsocrg/st...

06.01.2025 13:01 πŸ‘ 0 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0
Preview
Add Real-Time Collaboration to Your React App in 10 Minutes The other day, someone I know messaged: "I found myself over the holiday trying to explain to my...

Have you ever thought of making your website bring your users together? Just like Google Docs, but on your website.

Yes, it's possible, and it's extremely easy! Here's how:

dev.to/afonsocrg/ad...

#react #javascript #web #frontend #webdev

03.01.2025 13:16 πŸ‘ 6 πŸ” 2 πŸ’¬ 1 πŸ“Œ 1
Post image

AoC 2024 - Day 25 "Code Chronicle" - ⭐️⭐️

Yey, it's done! To reduce search, I stored the locks in a tree of HashMaps, indexed by pin size.

Thanks @was.tl and team for these challenges, it's been a fun journey!! Merry Christmas to everyone

Code: github.com/afonsocrg/AoC
#AdventOfCode #rust

25.12.2024 10:08 πŸ‘ 4 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Merry Christmas! I was very tempted to do it manually... And then coded what I would end up doing manually. Doing that check is very clever, thanks for sharing!

25.12.2024 08:50 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Preview
GitHub - afonsocrg/AoC: My solutions to Advent of Code My solutions to Advent of Code. Contribute to afonsocrg/AoC development by creating an account on GitHub.

AoC 2024 - Day 24 "Crossed Wires" - ⭐️⭐️

For Part 2, I checked which gates broke addition circuit rules: XOR outputs must feed into AND+XOR gates, and so on... Got a messy code, but found the 8 swapped wires!

Code: github.com/afonsocrg/AoC
#AdventOfCode #rust

24.12.2024 22:19 πŸ‘ 4 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Post image

AoC 2024 - Day 23 "LAN Party" - ⭐️⭐️

Got a fast solution by checking for complete subgraphs (TIL they're also known as cliques) while processing each edge.

Used HashMaps and HashSets for faster lookup and intersections.

Code: github.com/afonsocrg/AoC
#AdventOfCode #rust

23.12.2024 12:13 πŸ‘ 6 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Post image

AoC 2024 - Day 22 "Monkey Market" - ⭐️⭐️

Used bit-wise operators to make the next number generation faster. For Part 2, stored diff sequences as 20 bit integers for faster lookup.

Times:
Part 1: 11.6ms
Part 2: 147.8ms

Code: github.com/afonsocrg/AoC
#AdventOfCode #rust

22.12.2024 19:24 πŸ‘ 7 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Post image

AoC 2024 - Day 21 "Keypad Conundrum" - ⭐️⭐️

Defined the problem recursively and used caching to avoid re-computation of intermediate results. This one was a real conundrum.

Happy with my execution times:

Code: github.com/afonsocrg/AoC
#AdventOfCode #rust

22.12.2024 17:35 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Post image Post image

AoC 2024 - Day 20 "Race Condition" - ⭐️⭐️

Got a O(n) solution by storing the distance from each position to the end, and by checking for shortcuts in each position vicinity. Did a "diamond" for-loop for the first time, it was fun.

Code: github.com/afonsocrg/AoC
#AdventOfCode #rust

20.12.2024 15:32 πŸ‘ 4 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Super cool idea :D

19.12.2024 17:56 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

That last approach is interesting, but even if the shortest path at timestep X is blocked, there may be alternative ones πŸ€”

19.12.2024 16:59 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Code implementation for Advent of Code 2024 day 19

Code implementation for Advent of Code 2024 day 19

AoC 2024 - Day 19 "Linen Layout" - ⭐️⭐️

Memoization did the trick for this problem!!

Also, instead of checking one pattern at a time, I checked if prefixes with different lengths existed in the pattern set, which sped up my solution by 4x.

Code: github.com/afonsocrg/AoC
#AdventOfCode #rust

19.12.2024 16:55 πŸ‘ 5 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0