Thoughts and Notes

Thoughts and Notes

Here you can find all my thoughts and notes on various topics regarding this website.

Lets get the W's out of the way first ...

Why

Honestly the reason for me making this website is not that interesting but its also not that obvious. In December I noticed that my programming skills were getting Rusty, so I wanted a project I could work on, it all started after I talked with a coworker about social media like to follow ratios, so this tool became the first that I built. Thereafter I quickly came up with the Idea to make a lot of tools on this website.

What

What is this website about? Well, its a collection of tools that I have built, and will build in the future. I have a lot of ideas for tools that I want to build, and I will build them all here. I will also write about my thoughts and notes on various topics regarding this website.

When

When did I start this project? I started this project in December 2024, and I have been working on it ever since. I have built a lot of tools, and I have a lot of ideas for tools that I want to build in the future.

Where

Where can you find the tools? You can find all the tools a the root of the website. The website is hosted at vercel and the domain/subdomain resides at hostpoint.ch.

How

How did I build this website? I built this website using Svelte/SvelteKit, TailwindCSS, and Vercel. An of course not to forget the many helpful packages that made the tools possible in the first place, if I used such a tool it will say so at the bottom of the tool ("Courtesy Of").

Who

Who am I? I am Maxim Maeder, a programmer from Switzerland. I have been programming since 2021 and I'm having a lot of fun, you can read more about me on my Blog.

Now for some other thoughts and notes ...

Tool Chains

While browsing the web for inspiration for new tools to add to my website, I came across https://onlinetools.com/, where they not only have a lot of smaller utilities, but also a feature that allows you to chain tools together. I found this astonishing and wanted to implement something similar on my website. However, at the moment, the code is not structured in a way that would make this easy to implement. Maybe in the future. Such Inputs would most likely utilize something like https://svelteflow.dev/. Each tool would define Input and Outputs with their respective types (String, Number, Date, Float, StringArray, NumberArray, DateArray, FloatArray, Coordinates, CoordinateArray). Of course these tools would still work on their own while they are part of the chain of tools that transforms data as the user wishes. I would also implement logic like If, Else If, Else, Loops and so on. (26.02.2025).

Quickly loading the Tools

To dynamically create a sitemap for my SvelteKit project, I have opted to use https://github.com/jasongitmail/super-sitemap. I quickly came up with the idea to further utilize this package to retrieve the paths of all my tools along with their metadata.

All production-ready tools are located in /t/, so while developing the website, I have a Node script running that parses all the +page.svelte files located in the immediate subfolders of /t/. You can find all the parsed data as JSON here: https://tools.maximmaeder.com/tool_infos.json.

This way, I can quickly access information about all the tools without having to regenerate a sitemap for the thousands of possible pages. (27.02.2025)

New and Updated Tools

... will show either a New or Updated badge next to the tool description, if this date is less than 7 Days behind. (12.03.2025) It will also show the last 6 updated and new tools.

Tips

This website will show tips for small functionalities. (4.4.2025)

At the moment the tips are enabled. Also some of the tips are dynamically generated for example the new and updated tools.

Input Element(s)

I build a single Input component which does most of the heavy lifting (4.4.2025)

All Input Element Variants

Text is too short

Text is too short

Value is below minimum

Value is below minimum

0 % 100

Icons

The Icons for the tools and the UI in general are mostly from https://lucide.dev/ and https://icones.js.org/ (13.2.2025)

Permalinks

Permalinks are available, it was somewhat easy to implement since I mostly use peristend local storage stores in the background, so I can get the data for any page in the layout, it also uses https://github.com/zerodevx/zipurl. (16.3.2025) Later on I noticed that that this also enables me to create a reset buttons on all the pages with persistent data. (20.4.2025)

Inspiration

Here are some websites that have inspired me to create my own tools:

Placeholder Image

This image of the Alps is used for placeholder purposes (13.3.2025)

Mont Blanc and Dome du Gouter

Reused Components

To make the development of the tools easier, I have created a lot of reusable components that I can use in multiple tools. (13.03.2025)

Showcase of the Components

Convert

to

Unit Based Translator Units

UnitSymbolDescription
Unit 1 ()
Unit 2 ()
1 lines of "js"
console.log('Ich bin cool')
rgb(0% 0% 0%)
Mont Blanc and Dome du Gouter

Resulting List

Meta data

KeyValue
original_length1
deduplicated_length1
without_empty_lines_length1
resulting_length1

Extracted

Full Screen Container

Mask-Image with linear gradient is awesome

At several locations throughout the website, I wanted to include gradients to create smooth transitions between different sections or to conceal hidden overflowing elements. Initially, I used a separate <div> element that was absolutely positioned and had a semi-transparent background gradient. However, over time, this approach led to some issues—mainly that I had to be very careful with the background of the underlying element. After some research, I came across the mask-image property, which allowed me to apply gradients as masks without needing to worry about the background. (17.5.2025)

Here are some examples where this came in useful:

The description and tags can overflow.

The progress bar is masked behind the % indicator.

The mask creates a smooth transition between the moving gradient and the rest of the page.

Ads are disabled, if you wish to support me please consider disabling your ad blocker.