I love building stuff, currently working as a Principal Engineer in Careem on experimentation, optimization and machine learning platforms. Prior to Careem, I worked as Head of Data Science in AirAsia and as a Principal Engineer in Grab, the super app of South East Asia where we built Product Insights & Experimentation Platforms amongst other things. I also obtained a PhD in Computer Science and Human-Computer Interaction with Trinity College Dublin & IBM Research, and worked as an engineer at various successful companies in Europe, building things like online gaming platforms, autonomous helicopters, or particle/matter collision simulators!
π Distributed Systems I have designed and open-sourced
- emitter-io/emitter - high performance, distributed and low latency publish-subscribe platform
- kelindar/talaria - distributed, highly available, and low latency time-series database for Presto
π¦ Golang Libraries I made to help me in building software faster or explore a certain idea
- kelindar/async - concurrency patterns library using promises for Go
- kelindar/approx - probabilistic data structures (e.g. morris counting, count-min sketch, topk) in Go
- kelindar/binary - generic and fast binary serializer for Go
- kelindar/bitmap - zero-allocation dense bitmap index for Go
- kelindar/column - columnar in-memory db (structures-of-arrays) with querying and indexing in Go
- kelindar/folio - automatically create web-based CMS based on Go structs
- kelindar/goap - goal oriented action planning library in Go
- kelindar/intmap - fast uint32-to-uint32 hash map, about 20-50% faster than Go map
- kelindar/tile - 2D grid engine, built with data and cache friendly ways, includes pathfinding and observers
- kelindar/timeline - Scheduler of events for near real-time systems in Go
- kelindar/evolve - Go implementation of a binary genetic algorithm with random binary crossover & mutation
- kelindar/loader - Go library that allows for downloading things from a URL (http, s3, ...)
- kelindar/ecs - high-performance entity component system in pure Go
- kelindar/event - simple internal event bus for Go applications
- kelindar/lua - wrapper around LUA script executor for long-running scripts
- kelindar/tcp - simple TCP server in Go
- kelindar/process - Go library for process usage retrieval
- kelindar/search - Go library for embedded vector search and semantic embeddings with llama.cpp
- kelindar/simd - auto-vectorized SIMD math functions for Go
- kelindar/smutex - simple sharded mutual exclusion in Go
- kelindar/xxrand - XXH3-Based Pseudorandom Number Generator
- kelindar/iostream - Simple binary reader and writer for io.Reader/io.Writer streams
- kelindar/simplex - Simplex noise in Go
- emitter-io/address - Go library providing a set of utilities for dealing with network addressing
- emitter-io/stats - high-performance library for stats and metric aggregation
- emitter-io/config - library for hierarchical config management
π§ͺ Experiments in which I tried with various ideas
- kelindar/bert - wrapper for bert.cpp library in Go, using dynamic linking
- kelindar/gocc - tool to transpile C to Go assembly using clang & objdump
- kelindar/hashbench - benchmarking various hash functions in Go
- kelindar/etop - command-line utility for emitter.io cluster status
- kelindar/spiral - procedurally generating a spiral galaxy in Go
- kelindar/markov - experimenting with markov-chain procgen in Go
- kelindar/pmml2lua - trying to convert PMML decision trees into LUA code
- kelindar/spike-box - what if we can data-bind js/DOM transparently over the network?
- kelindar/misakai-baker - static site generator for C# / .Net people
- manycore/dashboard - profiling your parallelized app by categorizing issues and visually browsing them
- manycore/matmul - matrix multiplication benchmark suite for parallel performance measurement
- manycore/harvester - operating system and hardware performance counter collector utility
π¨ Emitter Demos I have prepared for the project
- chat - building a chat with emitter
- actor - distributed actor model with emitter
- client-server - how to create a client/server application with emitter
- platformer - making an online platformer with emitter
- retain - how to use message retention in emitter
- share - how to use shared subscriptions in emitter
- iss - tracking international space station in real-time
- presence - demo of the channel presence for emitter
π Blogs & Papers I have written in the past
- Technical Blog - My random blog posts around experimentation, performance and open source
- Ph.D Thesis - Supporting visual diagnosis of performance problems in multi-core and parallel software
- SIGCHI'14 Paper - Design considerations for parallel performance tools
- IEEE Journal Paper - Parallel Performance Problems on Shared-Memory Multicore Systems: Taxonomy and Observation