Skip to content
View sajith-jeewantha's full-sized avatar
🏠
Working from home
🏠
Working from home

Block or report sajith-jeewantha

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
sajith-jeewantha/README.md

✝

Sajith Jeewantha

Software Engineer · WSO2

Software Engineer at WSO2 · Building reliable integration software · Exploring Machine Learning and Deep Learning · Ad Maiorem Dei Gloriam

Οἴδαμεν δὲ ὅτι τοῖς ἀγαπῶσιν τὸν θεὸν πάντα συνεργεῖ εἰς ἀγαθόν, τοῖς κατὰ πρόθεσιν κλητοῖς οὖσιν.

We know that in everything God works for good with those who love him, who are called according to his purpose.

— Romans 8:28

Ad Maiorem Dei Gloriam — For the greater glory of God


Website LinkedIn GitHub followers


👋 About Me

I'm a software engineer at WSO2, where I build integration software that connects systems reliably at scale. I enjoy turning complex problems into clean, well-designed solutions and working with teams that value clear communication. Outside of day-to-day engineering, I explore machine learning, deep learning, and AI agents. Right now I'm learning more about the Model Context Protocol (MCP), agentic systems, and modern deep learning architectures. I believe good work is a form of service — and I try to do mine with care and gratitude.


🎯 Areas of Interest

Area Focus
Software Engineering Designing maintainable, well-tested systems that are easy to reason about.
Machine Learning Building models that learn useful patterns from real-world data.
Deep Learning Neural network architectures for vision, language, and representation learning.
AI Agents & MCP Connecting language models to tools and data through open protocols.
Software Architecture & Integration APIs, microservices, and the glue that makes systems work together.
Research & Development Prototyping new ideas and turning experiments into production-ready software.

🛠️ Technologies

Languages

Java Ballerina Python JavaScript C# C++ PHP

AI, ML & Data

PyTorch TensorFlow scikit-learn NumPy Pandas

Frameworks

Spring React Angular Node.js

Cloud & Platforms

WSO2 Integration AWS Google Cloud Oracle Cloud Docker

Tools & Databases

Git GitHub Actions Postman MySQL MongoDB Redis


💻 Code Showcase

A small feed-forward neural network in PyTorch

import torch
import torch.nn as nn

class MLP(nn.Module):
    """A simple multi-layer perceptron for classification."""

    def __init__(self, in_features: int, hidden: int, num_classes: int):
        super().__init__()
        self.net = nn.Sequential(
            nn.Linear(in_features, hidden),
            nn.ReLU(),
            nn.Dropout(0.2),              # light regularization
            nn.Linear(hidden, num_classes),
        )

    def forward(self, x: torch.Tensor) -> torch.Tensor:
        return self.net(x)                # raw logits; CrossEntropyLoss applies softmax

model = MLP(in_features=784, hidden=128, num_classes=10)
optimizer = torch.optim.Adam(model.parameters(), lr=1e-3)
loss_fn = nn.CrossEntropyLoss()

x, y = torch.randn(32, 784), torch.randint(0, 10, (32,))  # one dummy batch
loss = loss_fn(model(x), y)
optimizer.zero_grad(); loss.backward(); optimizer.step()
print(f"loss: {loss.item():.4f}")

A scikit-learn classification pipeline

from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler

# Load a small, well-known dataset
X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, stratify=y, random_state=42
)

# Scaling + model in one pipeline keeps preprocessing consistent
clf = make_pipeline(
    StandardScaler(),
    RandomForestClassifier(n_estimators=100, random_state=42),
)
clf.fit(X_train, y_train)

# Evaluate on held-out data
print(classification_report(y_test, clf.predict(X_test)))

💡 Inspiration

"The only way to do great work is to love what you do." — Steve Jobs

"Your most unhappy customers are your greatest source of learning." — Bill Gates

"Someone's sitting in the shade today because someone planted a tree a long time ago." — Warren Buffett

"The best way to predict the future is to invent it." — Alan Kay


📊 GitHub Activity

GitHub profile statistics Most used programming languages GitHub contribution streak GitHub contribution activity graph

🤝 Connect With Me

Website LinkedIn GitHub Instagram Facebook


✝

ὁ θεὸς ἀγάπη ἐστίν
God is love. — 1 John 4:8

May the Lord bless you and keep you. Thanks for stopping by!

Pinned Loading

  1. face-recognition face-recognition Public

    Face Identification using InsightFace ArcFace embeddings — enroll, recognise, annotate.

    Python

  2. commercehub-microservices commercehub-microservices Public

    Enterprise-grade E-Commerce platform built with Spring Boot Microservices architecture, RabbitMQ messaging, API Gateway, MySQL, Redis, Load Balancing, Service Registry, JWT and Angular frontend.

    Java