Melvin
Hadi Kusuma

Background

Self taught. Currently using a Wacom Cintiq Pro 13, proficient with Photoshop and Clip Studio Paint.

Favourites

Some of my artwork that I particularly like; click to enlarge:

catter lady with a parasol spathiphyllum bird housing rest heir bouquet monosplit

Interests

Mostly drawing, but learning to paint. When drawing, I enjoy making smooth-flowing linework.

. . .



AI Art's Value

I am of the fundamental belief that things passionately handcrafted by humans and their tools are valuable. They hold more value than things that weren't passionately created and/or weren't crafted by humans.

AI image generation isn't a tool that humans use. It's a black box with an input and an output. It isn't an artist's 30cm ruler, a fan brush, a digital brush, or an AI auto-selection lasso tool. It's something that they ask from. A vending machine of probability, its currency and stock being the environment and the artists that it trains off of.

Its a stunning piece of technology. But such models shouldn't be used in the areas of human entertainment and recreation. Let it be contained in the world of corporations and advertising where efficiency and consumption is key. But we shouldn't let it pollute the spaces where humans share their passionate creations and works, where we admire what humans are capable of. We admire sports played by athletes and their awesome display of physical skill, not the CPUs in FIFA video games. We admire the musicians who share their interpretations of the world, not the music box that replays it. We admire the imagination and experiences told by writers in their books, not the printer that mass produced them. We admire and hold value to what we've personally created. AI art, let it be art, but don't let it hold more value over a preschooler's finger paintings.

Background

Proficient in TypeScript/JavaScript. Some experience with: C#, Java, and SQL. Other familiar technologies: React, Node.JS, Vercel, MongoDB Atlas, Firebase.

Javascript

FFXIV Furniture Lister

A web app for FFXIV players to create furniture item lists. Quantifies total resources needed, such as crafting materials, and monetary expense. Import lists from .json housing interior files. Use it here!

Final Fantasy XIV (FFXIV) is an MMORPG. One of the things that players can do is own and decorate houses. Purchasing or crafting furniture requires resources. For players who like to plan ahead or want to decorate huge interiors/exteriors, it becomes difficult to manage what and how much of things are needed. You'd have to resort to manual spreadsheeting or constant look-ups on wikis. This web app solves this specfic use case of helping players outline the resources required for their furnitures.

Additionally, it supports file importing of a popular third-party interior/exterior design program (ReMakePlace) that players use to create mockups. In it, they can export a JSON list of all the furniture items that they've placed. This file can then be imported into the web app to populate lists. The web app is featured in ReMakePlace's Discord which has around 7000 users.

Anime Streaming Website

A personal site that scrapes and proxies anime streams from websites to avoid page bloat, ads, and for a better video player. Episode navigation whilst in full screen, caching, pre-loading of the next episode when the current is close to ending. Convenient mobile gestures, such as full swiping left/right to navigate between episodes. Includes a bookmarks/history list.

Anime can be watched online via third-party websites that may or may not have license over the content that they're streaming. Nevertheless, it's the easiest way to watch anime. This project stemmed from one common complaint that I had across all of those sites that I've used: why can't I go to the next episode while staying in fullscreen? I'm wasting my time watching anime, why can't they at least let me waste it efficiently? This was the main theme of development with this project it seems.

Scraping and proxying the data was a big challenge. The better sites to scrape from (higher quality streams, fast updates) had anti-scraping measures in place, mainly code obfuscation and data encoding. One of these better sites have data that's encoded before request, and then decoded using obfuscated client functions, so scraping the data can't be done through just network requests. The client decoder functions had regularly rotating keys which invalidated the use of past functions, so it was also not as simple as manually copying/pasting these functions to my backend. To circumvent this, the website bundle was fetched and deobfuscated using WebCrack, then Babel to parse the required functions, then written to a file on the backend which are imported for use in Express. This process was executed hourly via GitHub actions.

Unfortunately, scraping from that website is currently broken as their code obfuscation has increased to unreadable levels and not even WebCrack can help deobfuscate anything. The next step would be to use a headless browser such as Puppeteer and simply relay the stream data. This may result in very slow initial loading times, but the already implemented caching and pre-loading could remedy this.

Live Stream Chat Filter

A web app that connects to a twitch.tv channel's chat room. Filter messages and users, save settings, highlight random message, view average messages/sec. Use it here!

This was my first project that involved using an external API. I made this little app because I wanted to only be able to see a certain user's chat messages during a livestream; they were an English translator in a popular Korean livestream.

Bored Board

A full-stack forum website developed with React and Firebase. Account creation, user authentication, post threads/comments, upload images. This was a full-stack CRUD study project. I learned a lot about modular component based frontend development, such as using a component recursively to display nested comments.

Porfolio Site

This website, made using plain HTML, Javascript, CSS. It emulates a SPA website by toggling the visibility of pages depending on the current hash route. I had to make it like this so that the little mascot below didn't reset during navigation.

Games

Yacht Dice

Yacht dice made using plain HTML and Javascript. Rules inspired by the version in Nintendo's 1-2-Switch. Play it here!

. . .

MelvinHK

Hello!

This site showcases some of my programming and art.

A software developer graduate from the University of Technology Sydney (2023).

The sprite below is based off of my character from Final Fantasy XIV. In my spare time I wish to create and publish my own video game...

. . .

melvinhkusuma@gmail.com
little flower on the footer