by Satwik

My experience portofolio. My experience portofolio.

Why me ?


Who Am I ?


I’m Satwik Rai, a Computer Science student at the Indian Institute of Information Technology, with over five years of self-taught programming experience, primarily in Python. I enjoy building innovative solutions from scratch—whether it's automation tools, backend systems, or game development. My work spans across various domains including web automation, cryptocurrency, and Web3 technologies.

I'm a hands-on learner who thrives on practical experience and believes in learning by doing. Over the years, I've created numerous projects, some of which have also generated revenue. I'm proficient in data structures and algorithms, holding a 5-star rating on CodeChef and an Expert title on Codeforces.

Outside of tech, I’m passionate about music and enjoy playing instruments like the guitar and ukulele. I'm always curious, constantly learning, and eager to take on new challenges that push the boundaries of my creativity and skill.

Join me on Discord Steam profile My Github


Languages that I use


What I offer
Automation

Backend & automation

I can make full responsive websites with complex backend (if required),can make predictors for you using ML models and can also fine tune them based on your data,i have experience in crypto space also(can automate payments on different networks), i use python as my backend language so i can do almost everything you want from complex backend softwares to advanced automation tools.Just HMU with what you need and you will have it !
My projects
Shelf Space Predictor

Shelf Space predictor which uses neural networks to train on old data.It has API integration for several tasks which can be used.Best thing is it is modular!

CFhelper.in

A website for competitive programmers who practise on codeforces.Analyses thousands of submissions and gives direct links to view exceptional Solutions.Take your learning to next level!

TF2Keys.trade

Platform that lets your convert your virtual items into 300+ crypto currencies and Vice-versa.Works using Nowpayments and gives realtime tracking to your payouts.Fast,secure and easy!

Logo
Copyright (c) 2024 Satwik
#version 300 es #ifdef GL_ES precision mediump float; #endif precision mediump float; uniform vec2 u_resolution; uniform vec2 u_mouse; uniform float u_time; uniform vec3 u_colors[4]; // Fixed array size uniform int u_layers; // Number of layers (min: 1, max: 20) uniform float u_scale; // Scale (normalized to 0.0–1.0) out vec4 FragColor; mat2 roat(float a) { float s = sin(a); float c = cos(a); return mat2(c, -s, s, c); } float Star(vec2 uv, float flare) { float d = length(uv); float m = 0.05 / d; float rays = max(0.0, 1.0 - abs(uv.x * uv.y * 1000.0)); m += rays * flare; uv *= roat(3.1415 / 4.0); rays = max(0.0, 1.0 - abs(uv.x * uv.y * 1000.0)); m += rays * 0.3 * flare; m *= smoothstep(1.0, 0.2, d); return m; } float Hash21(vec2 p) { p = fract(p * vec2(123.34, 456.21)); p += dot(p, p + 45.32); return fract(p.x * p.y); } vec3 StarLayer(vec2 uv, vec3 c1) { vec3 col = vec3(0.0); vec2 gv = fract(uv) - 0.5; vec2 id = floor(uv); for (int y = -1; y <= 1; y++) { for (int x = -1; x <= 1; x++) { vec2 offs = vec2(x, y); float n = Hash21(id + offs); float size = fract(n * 1345.32); float star = Star(gv - offs - vec2(n, fract(n * 34.0)) + 0.5, smoothstep(0.9, 1.0, size) * 0.6); vec3 color = sin(c1 * fract(n * 2345.2) * 12.283) * 0.5 + 0.5; color = color * vec3(1.0, 0.5, 1.0 + size); star *= sin(u_time * 3.0 + n * 6.323) * 0.5 + 1.0; col += star * size * c1; } } return col; } void main() { vec2 uv = (gl_FragCoord.xy - 0.5 * u_resolution.xy) / u_resolution.y; vec2 M = (u_mouse.xy - 0.5 * u_resolution.xy) / u_resolution.y; uv *= (3.0 * (1.0 - u_scale)) - 0.5; float t = u_time * 0.05; uv *= roat(t); vec3 col = vec3(0.0); for (int i = 0; i < 5; i++) { vec3 c = u_colors[i % 4]; float depth = fract(float(i) / float(u_layers) + t); float scale = mix(20.0, 0.5, depth); float fade = depth * smoothstep(1.0, 0.9, depth); col += StarLayer(uv * scale + float(i) * 455.2, c) * fade; } FragColor = vec4(col, 0.8); } precision mediump float; uniform vec2 u_resolution; uniform float u_time; uniform vec4 u_colors[4]; uniform float u_blur; uniform float u_animate_speed; uniform float u_frequency; uniform float alpha; uniform bool uFlip; #define S(a,b,t) smoothstep(a,b,t) #ifndef SRGB_EPSILON #define SRGB_EPSILON 0.00000001 #endif #ifndef FNC_SRGB2RGB #define FNC_SRGB2RGB float srgb2rgb(float channel) { return (channel < 0.04045) ? channel * 0.0773993808 : pow((channel + 0.055) * 0.947867298578199, 2.4); } vec3 srgb2rgb(vec3 srgb) { return vec3(srgb2rgb(srgb.r + SRGB_EPSILON), srgb2rgb(srgb.g + SRGB_EPSILON), srgb2rgb(srgb.b + SRGB_EPSILON)); } vec4 srgb2rgb(vec4 srgb) { return vec4(srgb2rgb(srgb.rgb), srgb.a); } #endif #if !defined(FNC_SATURATE) && !defined(saturate) #define FNC_SATURATE #define saturate(x) clamp(x, 0.0, 1.0) #endif #ifndef SRGB_EPSILON #define SRGB_EPSILON 0.00000001 #endif #ifndef FNC_RGB2SRGB #define FNC_RGB2SRGB float rgb2srgb(float channel) { return (channel < 0.0031308) ? channel * 12.92 : 1.055 * pow(channel, 0.4166666666666667) - 0.055; } vec3 rgb2srgb(vec3 rgb) { return saturate(vec3(rgb2srgb(rgb.r - SRGB_EPSILON), rgb2srgb(rgb.g - SRGB_EPSILON), rgb2srgb(rgb.b - SRGB_EPSILON))); } vec4 rgb2srgb(vec4 rgb) { return vec4(rgb2srgb(rgb.rgb), rgb.a); } #endif #ifndef FNC_MIXOKLAB #define FNC_MIXOKLAB vec3 mixOklab( vec3 colA, vec3 colB, float h ) { #ifdef MIXOKLAB_COLORSPACE_SRGB colA = srgb2rgb(colA); colB = srgb2rgb(colB); #endif const mat3 kCONEtoLMS = mat3( 0.4121656120, 0.2118591070, 0.0883097947, 0.5362752080, 0.6807189584, 0.2818474174, 0.0514575653, 0.1074065790, 0.6302613616); const mat3 kLMStoCONE = mat3( 4.0767245293, -1.2681437731, -0.0041119885, -3.3072168827, 2.6093323231, -0.7034763098, 0.2307590544, -0.3411344290, 1.7068625689); vec3 lmsA = pow( kCONEtoLMS * colA, vec3(1.0/3.0) ); vec3 lmsB = pow( kCONEtoLMS * colB, vec3(1.0/3.0) ); vec3 lms = mix( lmsA, lmsB, h ); vec3 rgb = kLMStoCONE*(lms*lms*lms); #ifdef MIXOKLAB_COLORSPACE_SRGB return rgb2srgb(rgb); #else return rgb; #endif } vec4 mixOklab( vec4 colA, vec4 colB, float h ) { return vec4( mixOklab(colA.rgb, colB.rgb, h), mix(colA.a, colB.a, h) ); } #endif mat2 Rot(float a) { float s = sin(a); float c = cos(a); return mat2(c, -s, s, c); } // Created by inigo quilez - iq/2014 // License Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. // Modifications made by TheLSTV vec2 hash( vec2 p ) { p = vec2( dot(p,vec2(2127.1,81.17)), dot(p,vec2(1269.5,283.37)) ); return fract(sin(p)*43758.5453); } float noise( in vec2 p ) { vec2 i = floor( p ); vec2 f = fract( p ); vec2 u = f*f*(3.0-2.0*f); float n = mix( mix( dot( -1.0+2.0*hash( i + vec2(0.0,0.0) ), f - vec2(0.0,0.0) ), dot( -1.0+2.0*hash( i + vec2(1.0,0.0) ), f - vec2(1.0,0.0) ), u.x), mix( dot( -1.0+2.0*hash( i + vec2(0.0,1.0) ), f - vec2(0.0,1.0) ), dot( -1.0+2.0*hash( i + vec2(1.0,1.0) ), f - vec2(1.0,1.0) ), u.x), u.y); return 0.5 + 0.5*n; } void main(){ vec2 uv = gl_FragCoord.xy/u_resolution.xy; if (uFlip) { uv.y = 1.0 - uv.y; } float ratio = u_resolution.x / u_resolution.y; vec2 tuv = uv; tuv -= .5; float speed = u_time * 10. * u_animate_speed; float degree = noise(vec2(speed/100.0, tuv.x*tuv.y)); tuv.y *= 1./ratio; tuv *= Rot(radians((degree-.5)*720.+180.)); tuv.y *= ratio; float frequency = 20. * u_frequency; float amplitude = 30. * (10.*(0.01+u_blur)); tuv.x += sin(tuv.y*frequency+speed)/amplitude; tuv.y += sin(tuv.x*frequency*1.5+speed)/(amplitude*.5); vec4 layer1 = mixOklab(u_colors[0], u_colors[1], S(-.3, .2, (tuv*Rot(radians(-5.))).x)); vec4 layer2 = mixOklab(u_colors[2], u_colors[3], S(-.3, .2, (tuv*Rot(radians(-5.))).x)); vec4 finalComp = mixOklab(layer1, layer2, S(.5, -.3, tuv.y)); gl_FragColor = vec4(finalComp.rgb, alpha); } #version 300 es precision mediump float; out vec4 fragColor; uniform vec2 iResolution; uniform float iTime; vec3 hash(vec3 p) { p = vec3(dot(p, vec3(127.1, 311.7, 74.7)), dot(p, vec3(269.5, 183.3, 246.1)), dot(p, vec3(113.5, 271.9, 124.6))); return -1.0 + 2.0 * fract(sin(p) * 43758.5453123); } float noise(vec3 p) { vec3 i = floor(p); vec3 f = fract(p); vec3 u = f * f * (3.0 - 2.0 * f); return mix( mix( mix(dot(hash(i + vec3(0.0, 0.0, 0.0)), f - vec3(0.0, 0.0, 0.0)), dot(hash(i + vec3(1.0, 0.0, 0.0)), f - vec3(1.0, 0.0, 0.0)), u.x), mix(dot(hash(i + vec3(0.0, 1.0, 0.0)), f - vec3(0.0, 1.0, 0.0)), dot(hash(i + vec3(1.0, 1.0, 0.0)), f - vec3(1.0, 1.0, 0.0)), u.x), u.y), mix( mix(dot(hash(i + vec3(0.0, 0.0, 1.0)), f - vec3(0.0, 0.0, 1.0)), dot(hash(i + vec3(1.0, 0.0, 1.0)), f - vec3(1.0, 0.0, 1.0)), u.x), mix(dot(hash(i + vec3(0.0, 1.0, 1.0)), f - vec3(0.0, 1.0, 1.0)), dot(hash(i + vec3(1.0, 1.0, 1.0)), f - vec3(1.0, 1.0, 1.0)), u.x), u.y), u.z); } void main() { vec2 uv = gl_FragCoord.xy / iResolution.xy; uv = uv * 2.0 - 1.0; uv.x *= iResolution.x / iResolution.y; vec3 stars_direction = normalize(vec3(uv, 1.0)); float stars_threshold = 10.0; float stars_exposure = 500.0; float stars = pow(clamp(noise(stars_direction * 1000.0), 0.0, 1.0), stars_threshold) * stars_exposure; stars *= mix(0.4, 1.4, noise(stars_direction * 100.0 + vec3(iTime))); float alpha = clamp(stars, 0.0, .15); fragColor = vec4(vec3(1.0), alpha); }