Activity

Tony Hsu

Added interactive quizzes for every unit in the HTML and CSS courses on MacLearn! You can easily access these quizzes from either the sidebar, article navigation buttons, or the course homepage. You can go back/forward between each question and select the correct option. Once you finish the quiz, a result page will display your accuracy, whether you passed/failed, and the correct answers for each question. Most of the logic is the same as the old version’s, so all I did was copy the quizzes’ JSON data and the actual quiz over and modified some Tailwind and TypeScript stuff and improved core logic and state management but overall it was pretty easy and straightforward. The navigation and pagination were actually surprisingly difficult and took me some time to figure out because of all the different types, params, and stuff but I ended up finishing everything! Also added some icons and updated styling to improve UI and UX.

0
Tony Hsu

Finally integrated the MacWeb account/auth system to MacLearn as well as a working backend and database system. There’s now a sign in button on the nav bar that redirects you to the main MacWeb landing page, where you actually log in/sign up, and redirects you back to MacLearn logged in. This is basically an identical system with the one I built with MacVG a few weeks ago, so I only had to copy most of the files and edit a bit of stuff to make sure the cross-domain auth cookies and other annoying auth stuff actually work properly and sync to the database too. You can click on your profile picture in MacLearn to view your profile, switch light/dark mode, and log out. Logged in users can also favorite/unfavorite articles that are pinned on the homepage. Updated styling and dependencies as well. Added environment variables for auth stuff too.

0
Tony Hsu

Added a powerful and fast nav bar search for all articles across the HTML, CSS, and references courses that displays a list of links to the results that makes navigation across the whole platform and so many different pages a lot easier. Changed article routing params to slugs (words) instead of number ids so the URL is more readable and it boosts SEO as well. Added a share modal that pops up whenever you click on the article share button that shows a link copied message so you can easily share the article link with other people. Updated footer with new and fixed links and updated a bit of styling as well.

1

Comments

RespectableDot
RespectableDot 2 days ago

Awesome sauce🐵

Tony Hsu

Added embedded interactive labs with different tabs for HTML, CSS, JS, and output to articles so you can easily try out the code, experiment with it yourself, and immediately see the output to make learning more effective. Also added code snippets so code pops out more. Added the code playground which is basically just a glorified bigger version of the interactive lab mentioned earlier. Added a bunch of images for the courses so images now work and help with understanding better. The core logic for a lot of these components was basically copied from the old build, and all I had to do was write responsive Tailwind utilities and ensure everything works properly with TypeScript and Next since everything’s frontend React code.

0
Tony Hsu

Added a sidebar with all the article links in the selected course listed, grouped by different units for super easy navigation from the article. Also added proper styling for the basic article page layout from the old React Router app so the article is actually readable and usable. Added title, favorite/share/feedback icons (currently only feedback works), and other article metadata to the header as well. There will be interactive labs but they’re replaced by the lab placeholder for now. Also added back and next navigation buttons to jumps to the previous/next article easily after you finish reading the current one. Updated other styling and fixed Inter font not working.

0
Tony Hsu

Reorganized some files and folders so instead of hard coded folders for each course the main course tabs now generate content, fetch data, and generate SEO dynamically using router params. Added JSON data for all the courses, metadata, and articles so these pages actually have something to pull from. Added dynamic article pages that pull article content/SEO from the same JSON data, as well as animated accordions that group course articles by unit to make navigation a lot easier. Because these are mostly all server components, the app is extremely fast even with that much data. Added new types, updated styling, and fixed deployment as well.

0
Tony Hsu

I genuinely locked in so hard for this project I entered flowstate, finished the basic structure of the app with the homepage, main tabs, nav bar, footer, SEO, dependencies, light/dark mode, UI components, DNS, deployment, and other boilerplate setup all added and working. Because the structure of this app is pretty similar to MacVG, which I spent a lot of time working on a few weeks ago, so I just copied a lot of stuff/boilerplate over and modified accordingly for MacLearn. This is a rewrite as well, so I also copied some stuff from the original old MacLearn written in React Router, making this process a lot faster.

0
Tony Hsu

Shipped this project!

Finally finished making Relog, a simple full-stack daily activity tracker written in Next.js. You can add, star, edit, delete, search, and filtering custom activities with a title, date, and description of what you did that day! You can also log in with an account to sync and backup your data, or you can use the app in guest mode to keep your info private. There are also settings like dark/light mode toggle, importing/exporting data, and managing your account to make the app more powerful and functional. The app is fully responsive and accessible to everyone as well with optimized code and SEO.

Tony Hsu

Finally added data import and export options to the settings modal where you can import and export your entire log data as JSON files for backup or other purposes. You can enable and save data to guest mode automatically by importing existing data while being logged out, and it works with logged in accounts too (although it’ll overwrite existing data). Added smooth transition animation to modals so they actually pop up instead of just appearing. Added some quality of life features, updated styling, updated README, and fixed some minor issues as well.

0
Tony Hsu

Added responsive styling across the main app page, modals, and different UI components to ensure the app works and looks aesthetically pleasing on all devices and screens! Also updated styling so everything and the design look consistent. Added a landing page with a title and description, as well as better SEO for the app. Improved code and fixed some styling issues as well.

0
Tony Hsu

Added a settings modal that pops up when you click on the settings button on the nav bar. There are 4 different options (and credit), but currently you can only log out and delete your Relog account (they work for both logged in and guest mode users). Updated styling a bit and fixed a bug where activities got deleted due to a filtering issue.

0
Tony Hsu

This is my first time using the framework Astro, which is basically perfect for this project since it’s a static blog/content site with minimal interactivity. Spent some time learning the framework, including the folder/file structure, best practices, markdown content, routing, and the syntax of the framework. Used their blog template to set up the basic website but had to delete, reconfigure, and update a ton of stuff to customize the site.

Attachment
0
Tony Hsu

Added backend data storing, fetching, and syncing so the logs you add/edit/delete from Relog actually reflect on your account and you can access the same logs with the same account anywhere. Added frontend user auth session to show the actual app UI to logged in users and to check for identity. Added loading states so UX makes more sense and improved/optimized some code.

Attachment
0
Tony Hsu

Finally added a backend and set up Next Auth, OAuth providers, MongoDB database, and some other env variables. Since this is a very simple account system with only logging in and logging out, I copied a ton of boilerplate code for auth and some components from one of my other projects, and it was relatively easy compared to when I first manually set up everything. Spent some time configuring OAuth providers to make sure they work, added a sign in modal that pops up when you click the sign in button with Google, GitHub, and guest mode options. Also reorganized some files and updated styling so the UI actually makes sense and looks good.

0
Tony Hsu

Added starring and deleting activities so it’s easier to manage them. Added a filter option to filter the log by starred activities that works with search queries too to make it easier to browse all your activities. Also added an edit button that makes an edit activity modal pop up where you can edit the title, date, and description of the activity. Improved code and fixed some bugs as well.

0
Tony Hsu

Added actual working logic for logging new activities to both existing and new dates with a custom title, date, and description that currently only gets saved persistently to local storage since only guest mode is available. Had to use a hack to convert UTC time to local time zone, meaning time conversion might be a bit broken. Also added quality of life features like better keyboard navigation, clear search, and better sorting. Also optimized code and search to make the app faster.

0
Tony Hsu

Added guest mode session storage, basic logging logic for adding activities with a title, date, and description (broken because using placeholder data for now), log day/activity components, activity icons, add log button, add activity modal, search that filters only activities with a title containing search (super useful but laggy), basic sorting/filtering layout (they don’t work yet), and structural data types. Also updated some styling to fit the activity log layout. Fixed some visual bugs as well.

1

Comments

Tony Hsu
Tony Hsu 7 days ago

Yes the layout kinda sucks but I’ll fix it later

Tony Hsu

First devlog of Relog! Set up the basic Next.js project setup files, installed the necessary dependencies, and set up the folders and files. Added the nav bar with a horribly designed logo (will redesign soon hopefully), nav buttons and icons for GitHub source code, light/dark mode toggle, settings, and signing in (only GitHub and mode toggle work). Also added a 404 not found page and made the README with a custom template. Added signing in and guest mode options on the homepage as well.

0
Tony Hsu

Shipped this project!

Hours: 14.01
Cookies: 🍪 416
Multiplier: 29.71 cookies/hr

Finally rewriting MacVG to be a full-stack online gaming platform from scratch with Next.js, TypeScript, and MongoDB! Finished implementing all the features from the original old React Router build, added all 450 games, added cross domain auth system integration with the MacWeb account system, a ton of different settings and customizations, responsive design, comments, search, and more! Bought the official macweb.app domain and configured MacVG as a subdomain at macvg.macweb.app!

Tony Hsu

Updated some auth stuff to read the cross domain cookies properly. Bought a new official domain for MacWeb at macweb.app, configured a bunch of A and CNAME records and changed a lot of Vercel config and routing to get the domain, subdomains, environment variables, auth, OAuth clients, and everything else all working properly. The official domain is so good it’s starting to feel like an official platform, lowkey super proud of it.

Attachment
0
Tony Hsu

There was this really annoying issue where the root domain’s NextAuth’s getServerSession function kept returning null even when the cross domain sharing auth JWT cookies were perfectly fine and the subdomains were working too. I couldn’t figure out what was wrong about it, tried updating all the environment variables manually, renaming all the cookies, and redeploying multiple times. This wasted a ton of time and was super frustrating but I finally fixed it by passing in auth options to the function and now the cross domain system actually works properly.

Attachment
2

Comments

Tony Hsu
Tony Hsu 12 days ago

IDK why I forgot to mention this but I bought the macweb.app domain, set up a bunch of A and CNAME records and configured some Vercel config to finally get the root domain, subdomains, routing, env vars, OAuth clients, and everything else working with the new official domain.

chefpenguino
chefpenguino 12 days ago

hell yeah

Tony Hsu

Finally finished the MacVG rewrite in Next.js, TypeScript, and Tailwind! Basically migrated/rewrote all the features and content from the original React Router build to the new version except for the ads and analytics. In this update, I added lazy loading of 50 games at a time on the homepage games so the site runs smoothly on potatoes too. Finished making the cloaker so both tab title and favicon update smoothly and persist. Updated the commenting system based on the new account system, and fixed nav bar logged in user icon not displaying issue. Also updated styling and improved the code.

Attachment
0
Tony Hsu

Major update: finally integrated the MacWeb account system to MacVG with proper auth, backend data syncing, and other stuff all implemented so you can actually sign in to MacVG with a MacWeb account! When you are redirected from MacVG to MacWeb to signin using a MacWeb account, the signin modal automatically pops up where you can choose multiple methods to login, and after successfully logging in you will be automatically redirected back to the original subdomain that you came from, properly logged in with all your MacWeb account data synced over! I had to change my laptop’s hosts files and run a certain command to kind of trick the computer into thinking I have multiple subdomains to actually set up the local development server to simulate the actual future production domains. I also spent some time figuring out how this account redirect thing was gonna work and how to share the JWT cookie across subdomains using NextAuth. It was pretty frustrating but when it finally worked after like 2 hours it felt so satisfying. Also updated environment variables for local testing and changed OAuth redirect backlinks and NextAuth options to make sure everything works.

0
Tony Hsu

Major update: finally integrated the MacWeb account system to MacVG with proper auth, backend data syncing, and other stuff all implemented so you can actually sign in to MacVG with a MacWeb account! There’s a new sign in button that redirects you to the MacWeb root page (since I’m hosting MacVG on a subdomain) where you can choose multiple methods to login, and after successfully logging in you will be automatically redirected back to the MacVG subdomain properly logged in with all your MacWeb account data synced over! You can only view your account avatar, profile, switch dark/light modes, and log out for now but hopefully more backend features will be added soon. I had to change my laptop’s hosts files and run a certain command to actually set up the local development server to have subdomains working locally. I also spent some time figuring out how this account redirect thing was gonna work and how to share the JWT cookie across subdomains using NextAuth. It was pretty frustrating but when it finally worked after like 2 hours it felt so satisfying. Also added a tab cloaker that changes/disguises tab title across all MacVG pages that’s stored locally and uses custom events and an about:blank embedder for opening websites in about:blank to avoid history getting tracked. Also made some styling and dependency improvements.

1

Comments

Tony Hsu
Tony Hsu 15 days ago

This reason this major update only took 2 hours is because I spent most of the time working on the MacWeb landing page (not MacVG) to make sure signin and auth work properly across all subdomains.

Tony Hsu

Added a search bar to the navigation bar that displays game card results for super convenient and fast game searching with a clear search button and simple UI/UX. Added the recent tab so you can quickly access recently played games (sorted by last played) that are stored locally in local storage with an option to clear your recent games. Added 5 custom color themes for the site that updates the entire color scheme for the platform, including primary colors, backgrounds, text, and the logo! This took a while to figure out and had to reconfigure some Tailwind stuff and manually add hex hue rotation filters for the logo but super worth it and the themes all look really nice!

1

Comments

Tony Hsu
Tony Hsu 16 days ago

And yes, the hollow theme is a jjk reference

Tony Hsu

Finally added a backend database connection to MacVG! Added a MongoDB connection URI to connect to the MacVG cluster of the MacWeb database to store user data, comments, settings, ratings, and more in the future! Wrote a script to prepopulate the database with all 450 games and empty comments so users can view/add new comments. You can add a username along with your comment to post a comment to a game (and the page revalidates automatically). Hopefully I’ll add likes and threading in the future. Also added local favorites (I’m too lazy to implement the MacWeb account system right now) so you can locally store your favorite games and access them quickly on the homepage.

0
Tony Hsu

Added the game page that contains an iframe displaying the game, a tool bar with the game’s icon and name and favorite, share, download, report, full screen features, and an about game section containing information related to the game and game description. I copied a lot of layout and logic from the original website so finished this part quickly. Added dynamic SEO for the game page and different MacVG tabs as well so each page has a different title/description. Added a modal component and a button that randomly suggests a game on the homepage. Added a 404 not found page with redirect options and updated styling as well.

0
Tony Hsu

Just like with the MacWeb landing page, I’m rewriting MacVG from scratch to be a full stack platform in Next.js, TypeScript, Tailwind, and MongoDB. I copied a lot of components and logic over from the original React code base so I got the basic UI layout set up pretty quickly, all I had to do was translate the CSS into Tailwind. Also set up the basic navigation of the page system and light/dark mode toggle with next-themes, as well as the new and trending tabs and basic SEO. I already have all the games hosted on a different GitHub repository so I just copied the games’ JSON data over to add all the games. Also added some icons and responsive styling so it’s consistent with the main landing page too.

0
Tony Hsu

Shipped this project!

Hours: 13.56
Cookies: 🍪 211
Multiplier: 15.55 cookies/hr

Finally finished rewriting the entire MacWeb landing page with Next.js, TypeScript, Tailwind, and MongoDB! The main focus of this project was adding a proper account and auth system that synced data to the backend and the database. Added proper credential and OAuth login with JWT session tokens and other auth stuff (super complicated to figure out) with NextAuth. Users can create a MacWeb account from many different options and fully customize their profile with a custom profile picture, display name, about information, username, and a lot more stuff coming in the future! The site also fully supports light/dark mode switching and responsive styling to ensure a smooth user experience across all screen sizes and devices. The main landing page also introduces MacWeb subapps and their related informaiton.

Tony Hsu

Added responsive design to the landing page so the site works and looks good on any device and screen size! Had to update a lot of Tailwind classes in almost every single component but it was worth it and the site functions very well on mobile devices as well. Also updated some styling to fit with the responsive design better. Added an option to update user account display name as well so you can customize your MacWeb profile better.

0
Tony Hsu

Added a public profile page of your profile that’s available for everyone to see even when they’re not logged in. This page displays all your saved information including profile picture, display name, about, achievements, and more. Also added an option that permanently deletes your MacWeb account upon verification and an option to copy and share your public profile URL. Added Next Themes for seamless light/dark mode toggle and added/edited Tailwind config as well so both modes work well everywhere (had to redo a lot of color styling for the components). Fixed some deployment and styling issues as well.

0
Tony Hsu

Added the profile page that shows up whenever you click on your user icon. The profile page has a sidebar on the left that displays your profile icon fetched from your OAuth provider, display name, username, email, account creation date, user ID, and provider along with their associated icons to make the UI more intuitive to understand. There are four main sections: about, achievements, favorite games, and favorite articles. Currently only the about section works, and you can edit/save your account’s about/bio. Updated styling and UI layout as well.

0
Tony Hsu

Added a bunch more OAuth options from Discord, Facebook, and GitHub and spent/wasted a lot of time researching and configuring out their OAuth application options. Finally got everything to work properly thanks to NextAuth and updated it so every time you log in with an OAuth service, a custom MacWeb account is created on the backend/database and it syncs whenver you log in again with the same service or email. This make it a lot more convenient to sign in with different services and actually store your user data. Also fixed some deployment, display, and styling bugs as well.

0
Tony Hsu

I’ve been working on this pretty massive project called MacWeb for about 2 years now and I’ve rewrote it several times with different technologies. After I learned Next.js and backend development a few months ago, I decided to rewrite MacWeb one more time in Next, TypeScript, Tailwind, and make it full stack. This is the landing home page that introduces all its subapps and provides more information about them. I set up the database, Vercel deployment, Google Cloud Console, NextAuth, and several other technologies (it was a pain having to learn all of them and debug through stuff) and finally got a proper account system working with credentials or with Google OAuth, with JWT tokens for session verification provided by NextAuth.

Attachment
Attachment
0
Tony Hsu

Added account analytics to the dashboard with numbers like total acounts, unique passwords, unique usernames, average password length, password uniqueness, and username uniqueness to help you keep track and manage your accounts better straight from the homepage. Also added four quick action options at the top of the dashbaord for adding a new subscription/account/project and logging out with customized icons. Also updated the layout with some placeholder text and fixed some display bugs as well. Now the dashboard is honestly beautiful I mean just look at the image.

Attachment
0
Tony Hsu

Finally started working on the dashboard where insights, analytics, suggestions, and more about your subscriptions/accounts/projects on Subtrack will be. Added the subscription stats section from the subscription page with an interactive custom insight that compares how many of a certain item you could’ve bought from the money you spent on monthly and annual subscriptions. You can click on the item to change to the next one to put the amount into perspective and hopefully make you cancel some of your extra subscriptions. Also spent some time adding a useful analytics pie chart from Chart.js that displays the proportion of each category of subscriptions you’re paying for, sorted by the number of subscriptions per category with different colors.

0
Tony Hsu

Pretty much finished the accounts page! Fixed the Vercel deployment issue (I forgot to add the secret encryption key to the environment) and also fixed the security loophole by requiring account get requests to provide a time stamp that must sync with the database time stamp (I’m still too lazy and noob to add a proper JWT auth token for this) so now the backend with encrypted passwords is more secure. Optimized accounts search, added accounts page and password insights, and fixed display issues as well.

Attachment
0
Tony Hsu

Major update!!! Finally completed the major features for the subscriptions tab by adding most of the popular subscription bundles, pricing plans, and more options. This meant I could finally move on to working on the accounts tab! Because the logic is mostly the same I just copied most of the code from the subscriptions tab over and changed/deleted some things to get the accounts tab working quickly. Added a lot of services and their assets for more accounts, as well as the custom service option so you can create your own account provider service. The accounts page supports both cloud database storage syncing and guest mode local storage, and the page displays the total number of your accounts, add account modal with detailed customization options, account search, edit, and deletion. Because Subtrack is storing very sensitive data like your passwords I had to spend a lot of time researching secure encryption/decription/cryptographic stuff to finally get everything securely encrypted and working (except there’s a major loophole where an attacker can just visit the API endpoint with a MongoDB user id and get all their decyrpted data that I’ll hopefully fix in the future by finally implementing proper JWT that I’ve been too lazy to add). Idk why but I always make dev logs near midnight and this one is way too long so yeah major update ok time to go to sleep now.
Edit: looks like Vercel prod deployment failed holy bro so much to fix tomorrow

0
Tony Hsu

The subscriptions tab for Subtrack is almost complete! In this update, I added different categories for the services so it’s easier to browse and filter specific categories while adding a new subscription or when viewing and filtering all your subscriptions with category tags. This makes it a lot easier to manage your subscriptions by category and sort them effectively. Also added a renewal date option so you can select when the subscription is going to renew as a reminder. The app automatically calculates the next renewal date based on subscription duration and current time with helpful renewal notifications that will hopefully get implemented in the future! Updated the data structure, cleaned up redundant code, refactored some inefficiencies, fixed some more bugs, and updated styling as well.

0
Tony Hsu

Added a custom service option that appears in the add subscription modal for when you’re adding a subscription from a service that doesn’t have a preset on Subtrack. You can name the custom service subscription whatever you want and completely fully customize it and edit it. This required a bit of refactoring and cleaning up of the add subscription modal so I did it and fixed some bugs related to custom plans and pricing as well. Also updated styling so more services can fit in one page. Added an account username label on the profile popup as well.

0
Tony Hsu

Added a lot of services (30+), subscriptions, and memberships from websites and retailers to make subscription options more complete. Also fixed some bugs related to the add subscription modal and updated styling.

Attachment
0
Tony Hsu

Shipped this project!

Hours: 19.33
Cookies: 🍪 569
Multiplier: 29.43 cookies/hr

I finally finished most major features for the subscription tab of Subtrack!!!
You can use the app by either creating an account with user/password, using Google OAuth, or enabling guest mode that stores your data in local storage. You can customize your profile and different account settings. You can add subscriptions from default service templates or completely customize everything about the subscription to effectively keep track of them! There are a lot of features like searching, sorting, editing, deleting, clearing, and adding subscriptions with different UI components like modals and buttons that make the app easy to use. This is my first real app built with Next.js, TypeScript, and other modern languages so I learned a lot of best practices and architectural patterns for these technologies. Can’t wait to implement more features to Subtrack with future ships!

Tony Hsu

I added a statistics section at the top of the subscriptions page that tells you how much you’re spending across your services per month and per year, with the total number of subscriptions. Also, I finally spent time to actually learn Markdown, and with the help of GitHub README examples, I wrote the README file with a lot of sections and information about the app, how to set it up locally, and contribution guidelines. It genuinely looks pretty professional. Also fixed some bugs and improved backend performance.

Attachment
0
Tony Hsu

Merry Christmas guys! In this update, I added backend API endpoints for storing your subscription data to the database everytime you add, edit, or delete a subscription so your data is synced and backed up everywhere. I also added an option to change your account display name and improved some backend logic.

0
Tony Hsu

I finally added a proper account system with working (although not very secure) auth and backend API endpoints for logins and signups with both username/password and Google OAuth working. Now, you can use the signin and signup popup modals on the landing page to create an account and access the app. Made a MongoDB cluster that currently only stores user data but will hopefully store actual subscription and app data. Also added the first 10 services for subscriptions with all their plans and correct pricing. Added some quality of life features like a confirm popup warning, logout button, and an option to clear subscriptions. I refactored and cleaned up some code as well.

0
Tony Hsu

Reorganized files and folders in my project because it was kind of all over the place (my first time using Next on a big project), added a placeholder logo so things don’t look so boring, added metadata and title for each page, updated sidebar with placeholder tabs, and updated styling (hopefully major redesign will come soon because it looks kinda buns right now)

Attachment
1

Comments

jalalum78
jalalum78 about 1 month ago

so tuff

Tony Hsu

Added guest mode that stores data in local storage so you can actually use the app instead of being stuck on the landing page, logged in state stored in session storage, profile customization for username and password, subscription sorting with different options, subscription editing with a custom modal, license markdown, and code of conduct markdown for GitHub, updated styling and types, and optimized code so it’s kind of slightly performant.

1

Comments

Tony Hsu
Tony Hsu about 1 month ago

Forgot to mention this but I also made the landing page, login modal with custom auth and Google OAuth, and added an auth gate so only logged in users can access the app interface.

Tony Hsu

Refactored code so TypeScript is happy, data is stored properly, and everything works smoothly. Also made a new UI that lists the details of each description with a new option menu to edit and delete the subscription. The site currently only supports frontend localStorage data storage but other than that everything is coming together. Also fixed some bugs and updated styling for the multipage modal for adding a new subscription.

Attachment
0
Tony Hsu

A modal now pops up when you click on add subscription that displays available subscriptions that you can select. You can also move between different pages of the modal and customize the subscription (the modal doesn’t do anyhting yet). Also updated icons, added new subscription services, added a user nav dropdown (that doesn’t work), and updated styling.

Attachment
0
Tony Hsu

My first actual project on Flavortown! I set up basic deployment and Next.js dependencies for the project and added basic frontend UI with icons, cards, navigation, and text for the subscriptions tab.

Attachment
0
Tony Hsu

67 lowkenuinely so tuff 🥹✌️

Attachment
4

Comments

Eli Ozcan
Eli Ozcan about 1 month ago

how on earth did you time this lmao

Tony Hsu
Tony Hsu about 1 month ago

IDK just got lucky

jmw
jmw 22 days ago

i was also wondering this

jmw
jmw 22 days ago

also what is that image :heavysob: