Operations Research, optimization, algorithms, systems design. like programming languages. love rust.
- Middle East Technical University
- Singapore University of Technology and Design
- Now in Bonn, Germany
- | github | email | linkedin | cv | crates | nuget |
All things OR, optimization, networks, routing, algorithms, multi objective decision making.
Programming, algorithms, data structures, speed, efficiency and recently concurrency.
And I like programming languages:
- rust ❤️ every day
- c#, react, typescript 👍 often
- go, f# 👌🏽 zig, nim 🤔 watching
An expressive, efficient and productive mathematical programming / modeling crate for rust.
- macro-free and concise api which does not require more lines than model-on-paper has
- simple, solver agnostic, immutable, type safe
- with a separation of model and data, and hence, enable abstraction over inputs
- with reusable & composable model components
- below is a demo of my attempt in C# and here is the documentation
Working more and more on concurrent programming and parallel processing in rust. One thing lead to another, and I got more and more interested:
- Started with defining the PinnedVec trait and its implementations such as the SplitVec and FixedVec. A pinned vector is a vector which keeps its elements pinned in their memory locations.
- Turns out this feature is very useful in defining concurrent collections such as ConcurrentVec, ConcurrentBag or ConcurrentOrderedBag.
- On the counterpart of the concurrent collections, ConcurrentIter allows concurrent iterations.
- Having concurrent readers and concurrent writers, we can have a simple and performant parallel iterator Par.
Working on convenient and efficient self referential collections.
- Such collections are often used as core data structures for algorithms.
- The goal is to define sort of a core construct which would make it convenient to build and generate variants. SelfRefCol aims to fulfil this goal defining the collection variants and handling most of the work in providing safe and efficient storage where elements are referencing other elements.
- As it is the most simplest of them, worked on the linked list which turned out to be very efficient.
- Efficient & flexible trees 🌴 and graphs are the next steps.
- working on efficient data structures as I need in algorithms, such as PriorityQueue trait and efficient d-ary heap implementations.
- and whenever I have time, I am trying some experimental ideas such as Closure and FunVec.