Become a sponsor to Ugur Arikan
Hi, I'm Uğur Arıkan
👋 𝙰𝚋𝚘𝚞𝚝 𝙼𝚎
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 |
🤟 I like
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
🎈 𝙸'𝚖 currently 𝚞𝚙 𝚝𝚘
mathematical programming / modeling
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
concurrent programming and parallel processing
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.
self referential collections
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.
also
- 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.
Mathematical Modeling Demo
Featured work
-
orxfun/orx-mathprog-gallery
Gallery of mathematical models by orx-mathprog of well-known problems.
HTML -
orxfun/orx-priority-queue
Priority queue traits and efficient d-ary heap implementations.
Rust 3 -
orxfun/orx-split-vec
An efficient constant access time vector with dynamic capacity and pinned elements.
Rust 2 -
orxfun/orx-pinned-vec
PinnedVec trait defines the interface for vectors which guarantee that elements added to the vector are pinned to their memory locations unless explicitly changed.
Rust 1 -
orxfun/orx-linked-list
A linked list implementation with unique features and an extended list of constant time methods providing high performance traversals and mutations.
Rust 6 -
orxfun/orx-selfref-col
`SelfRefCol` is a core data structure to conveniently build safe and efficient self referential collections, such as linked lists and trees.
Rust 1