myself

Pragmatic Stacks

End-to-End Execution

Built to Scale.

👋 Hello, my name is

Tio Satria Wijaya

I'm an experienced Fullstack Software Engineer & IT Infrastructure Specialist with over 7 years of hands-on experience building high-performance systems, from sleek frontend interfaces to robust backend APIs and scalable infrastructure.

Frontend
Backend
Infra
Tip
you can fully interact with this window, just don't expect to write code in it though.
HowICode.cs
namespace HowICode
{
    // Real-world data processing pipeline demonstrating my coding principles in production code
    // This isn't academic theory - it's how I architect systems that scale and maintain themselves

    #region Core Abstractions - DIP & OCP in action

    /// <summary>
    /// Contract for data processing operations. This abstraction allows the system to work with any data source
    /// without coupling to specific implementations. Critical for testing and future extensibility.
    /// </summary>
    internal interface IDataProcessor<TInput, TOutput>
    {
        Task<TOutput> ProcessAsync(TInput input, CancellationToken cancellationToken = default);
    }

    /// <summary>
    /// Logging abstraction - prevents tight coupling to specific logging frameworks.
    /// Can swap from Console to Serilog to Application Insights without changing business logic.
    /// </summary>
    internal interface ILogger
    {
        void LogInfo(string message);
        void LogError(string message, Exception exception = null);
        void LogPerformance(string operation, TimeSpan duration);
    }

    /// <summary>
    /// Caching abstraction - allows switching between in-memory, Redis, or database caching
    /// without touching the business logic that depends on it.
    /// </summary>
    internal interface ICache
    {
        Task<T> GetAsync<T>(string key) where T : class;
        Task SetAsync<T>(string key, T value, TimeSpan expiration) where T : class;
        Task RemoveAsync(string key);
    }

    #endregion

    #region Domain Models - SRP demonstrated

    /// <summary>
    /// Represents user data with validation rules. Single responsibility: model user data correctly.
    /// Immutable by design - prevents accidental mutations that cause bugs in multi-threaded environments.
    /// </summary>
    internal sealed record UserData(
        string Email,
        string FirstName,
        string LastName,
        DateTime CreatedAt)
    {
        // Fail Fast: Validate immediately upon creation
        public UserData(string email, string firstName, string lastName, DateTime createdAt) : this(email, firstName, lastName, createdAt)
        {
            if (string.IsNullOrWhiteSpace(email) || !email.Contains('@'))
                throw new ArgumentException("Invalid email format", nameof(email));
            
            if (string.IsNullOrWhiteSpace(firstName))
                throw new ArgumentException("First name is required", nameof(firstName));
            
            if (string.IsNullOrWhiteSpace(lastName))
                throw new ArgumentException("Last name is required", nameof(lastName));
            
            if (createdAt > DateTime.UtcNow)
                throw new ArgumentException("Creation date cannot be in the future", nameof(createdAt));
        }

        public string FullName => $"{FirstName} {LastName}"; // Computed property - no stored redundant data (DRY)
    }

    /// <summary>
    /// Processing result with metadata. Encapsulates both success/failure state and performance metrics.
    /// This pattern eliminates the need for exception handling in normal flow control.
    /// </summary>
    internal sealed record ProcessingResult<T>(
        T Data,
        bool IsSuccess,
        string ErrorMessage = null,
        TimeSpan ProcessingTime = default)
    {
        public static ProcessingResult<T> Success(T data, TimeSpan processingTime) =>
            new(data, true, null, processingTime);

        public static ProcessingResult<T> Failure(string errorMessage, TimeSpan processingTime) =>
            new(default, false, errorMessage, processingTime);
    }

    #endregion

    #region Infrastructure - Composition Over Inheritance

    /// <summary>
    /// High-performance in-memory cache implementation. Uses concurrent dictionary for thread safety.
    /// Demonstrates composition: USES ConcurrentDictionary instead of INHERITING from it.
    /// </summary>
    internal sealed class MemoryCache : ICache
    {
        private readonly ConcurrentDictionary<string, (object Value, DateTime Expiration)> _cache = new();
        private readonly Timer _cleanupTimer;

        public MemoryCache()
        {
            // Background cleanup every 5 minutes - prevents memory leaks
            _cleanupTimer = new Timer(CleanupExpiredEntries, null, TimeSpan.FromMinutes(5), TimeSpan.FromMinutes(5));
        }

        public Task<T> GetAsync<T>(string key) where T : class
        {
            if (_cache.TryGetValue(key, out var entry) && entry.Expiration > DateTime.UtcNow)
            {
                return Task.FromResult(entry.Value as T);
            }

            _cache.TryRemove(key, out _); // Remove expired entry immediately
            return Task.FromResult<T>(null);
        }

        public Task SetAsync<T>(string key, T value, TimeSpan expiration) where T : class
        {
            var expirationTime = DateTime.UtcNow.Add(expiration);
            _cache.AddOrUpdate(key, (value, expirationTime), (_, _) => (value, expirationTime));
            return Task.CompletedTask;
        }

        public Task RemoveAsync(string key)
        {
            _cache.TryRemove(key, out _);
            return Task.CompletedTask;
        }

        private void CleanupExpiredEntries(object state)
        {
            var now = DateTime.UtcNow;
            var expiredKeys = _cache
                .Where(kvp => kvp.Value.Expiration <= now)
                .Select(kvp => kvp.Key)
                .ToList();

            foreach (var key in expiredKeys)
            {
                _cache.TryRemove(key, out _);
            }
        }

        public void Dispose() => _cleanupTimer?.Dispose();
    }
        // partial code
        // to check full code click on green circle or click expand, you should not see this anyway, i triggered route redirect on 50%

How I Think

I build for the future, designing systems that are:

Composable

Easily assembled like LEGO blocks

Modular

Every piece knows its job, nothing more

Observable

Logs, metrics, alerts - I don't like black boxes

Automated

Manual processes are anti-flow

Technical Stack

A comprehensive overview of my technical expertise and toolbelt, built through years of hands-on experience in enterprise environments.

Tip
You may click individual Technology or Technology Category to see the implementation of project.

Frontend

8 Technologies

Guna UI

Winform Frontend framework to scaffold fast, beautiful UI. i use it with winform, makes me efficient to deliver fast, but still lowkey good looking.

Applied In1 Observable Project
FamiliarityProduction Grade

HeroUI

this portofolio site is using this design system, i usually choose this for user/client-side because its elegant looking and has a very good typography out of the box without setting up lots of typography settings.

Applied In2 Observable Project
FamiliarityMaster Craft

Mantine

UI library I use heavily for internal tools & admin panel. Fast to build, good accessibility, and easy to extend.

Applied In6 Observable Project
FamiliarityMaster Craft

NextJS

My go-to Frontend React Framework to built User Interface. This thing is fast, has a very good ecosystem, dev-base, support both Client & Server side rendering (One thing that makes me keep coming back).

Applied In7 Observable Project
FamiliarityMaster Craft

React

I do not use this without framework as there is alot of boiler plate need to be setup before we can ship a product. i mainly use this along with NextJs

Applied In2 Observable Project
FamiliarityUsed Sparingly

Tailwind CSS

For frontend, it is non-negotiable. always been my first choice, it can clutter code sometimes, but if you cluttered it, you usually design it wrong.

Applied In3 Observable Project
FamiliarityProduction Grade

TypeScript

Non-negotiable for frontend work. coming from backend-heavy, this thing lets me sleep well and able to work with funny javascript.

Applied In4 Observable Project
FamiliarityMaster Craft

Windows Form

When more control is needed, like full IO control, memory management, and system level execution. i will resort using this. it is very quick to prototype and develop, and its native on windows.

Applied In5 Observable Project
FamiliarityProduction Grade

Database

7 Technologies

Dapper

My go-to framework for sql-based data. this always come first before considering Entity Framework. It is platform agnostic and can be used in many DBMS. Wrote a custom version to keep it strongly typed, as default version work mostly with string. i condemn raw usage. you can easily slip up.

Applied In3 Observable Project
FamiliarityMaster Craft

Entity Framework

If Dapper can't handle it, then fine — I’ll bring out EF. But 9 out of 10 times, it's unnecessary. Even then, I’ll still pair it with Dapper for performance.

Applied In1 Observable Project
FamiliarityProduction Grade

MongoDB

Good for document-heavy or unstructured data. I use it when speed, flexibility, and fast iteration matter more than strict schema.

Applied In3 Observable Project
FamiliarityProduction Grade

MS SQL Server

Used mostly when stuck with enterprise or legacy windows stack. It’s powerful, but bloated and not my first pick unless forced.

Applied In1 Observable Project
FamiliarityUsed Sparingly

MySql

My go-to database management system (DBMS). Offers solid performance, broad community support, and has strong compatibility with legacy app. it is ideal for modern and transitional stacks.

Applied In8 Observable Project
FamiliarityProduction Grade

PostgreSQL

Best choice when I need strict relational integrity, custom functions, or JSONB. Great for complex queries and when data structure matters more than speed.

Applied In0 Observable Project
FamiliarityUsed Sparingly

Redis

i used it mainly as a fast distributedd in-memory cache. Useful for session stores, rate limiting, or pub/sub. Simple and stupid fast. But i prefer IMemoryCache if the scope is not distributed

Applied In3 Observable Project
FamiliarityProduction Grade

Infrastructure

15 Technologies

Access Points

Configured enterprise APs (TP-LINK, Cisco, & Mikrotik). Focused on coverage, channels, and secure access.

Applied In3 Observable Project
FamiliarityUsed Sparingly

Building Automation System

Handled integration and maintenance project at Hangnadim International Airport . Mostly relay-based control systems, DALI, basic I/O automation.

Applied In1 Observable Project
FamiliarityUsed Sparingly

CCTV Systems

Setup and managed IP-based surveillance systems. NVR, remote access, and network planning.

Applied In2 Observable Project
FamiliarityUsed Sparingly

Digital Addressable Lighting Interface

Handled New installation & Integration to Building Automation System

Applied In1 Observable Project
FamiliarityUsed Sparingly

Deos Control System

Oversee, Help Integration to Network Configuration & As built Drawing

Applied In1 Observable Project
FamiliarityUsed Sparingly

Docker

Used for dev, deployment, and env consistency. Solves the “works on my machine” bullshit. A must-have for any serious project.

Applied In6 Observable Project
FamiliarityProduction Grade

Fiber Optic

Handled deployments & setup for a massive project in Hangnadim International Airport. Backbone of enterprise networking.

Applied In1 Observable Project
FamiliarityUsed Sparingly

Flight Information Display

Handled replacement, Integration to BAS & New Installation.

Applied In1 Observable Project
FamiliarityUsed Sparingly

Git

my primary versioning control.

Applied In2 Observable Project
FamiliarityMaster Craft

Local Area Connection

Installation, Mapping, Configuration & Security. Could technically built WAN, MAN, depending on infra budget & scope.

Applied In2 Observable Project
FamiliarityProduction Grade

Linux

my go-to OS for servers and some local work. Familiar with bash, systemd, and common CLI tooling. its cheaper than windows server

Applied In2 Observable Project
FamiliarityProduction Grade

Master Clock

Handled New Installation, Existing Replacement & Integrate to existing network

Applied In1 Observable Project
FamiliarityUsed Sparingly

Radio System

Gain an experience from working closely with infrastructure guy at hang nadim airport. Re-applied my knowledge in audit & consulting project for an oil rig.

Applied In1 Observable Project
FamiliarityUsed Sparingly

Smoke Detector & Fire Alarm

Gain an experience from working closely with infrastructure guy at hang nadim airport. Re-applied my knowledge in audit & consulting project for an oil rig.

Applied In1 Observable Project
FamiliarityUsed Sparingly

Windows Server

Used in enterprise setups. Comfortable with IIS, RDP, and Active Directory basics.

Applied In3 Observable Project
FamiliarityUsed Sparingly

Ready to Get Started?

Got a complex technical challenge? Need someone who can handle full-stack development AND infrastructure? Let's discuss your project.