Skip to content
You must be logged in to sponsor orxfun

Become a sponsor to Ugur Arikan

Hi, I'm Uğur Arıkan

I am an operations research (OR) scientist, interested in optimization, algorithms and systems thinking & design.

me |> Middle East Technical University (Ankara)
   |> Singapore University of Technology and Design (Singapore)
   |> DHL Data & Analytics (Bonn)

| github | email | linkedin | cv | crates | nuget |

❤️ I like

I am very enthusiastic about all things OR; my interests include mathematical programming, optimization algorithms, networks, routing, multiobjective decision making and decision making under uncertainty.

I also like programming languages.

  • rust ❤️🦀
  • frequently c#, react and typescript 👍
  • curiously and closely watching go, f#, zig and mojo 🤔

🎯 𝙸'𝚖 𝚞𝚙 𝚝𝚘

Two mature goals (i) OR & rust, and (ii) concurrency; and exciting side quests.

OR & rust

Among the milesones, current focus with highest priority is developing a mathematical modeling crate:

  • expressive, solver-agnostic, type-safe, macro-free and concise with no more lines than model-on-paper
  • below is a demo in c# and here is the documentation

concurrent programming and parallel processing

This is an exciting and ongoing journey that started with working on pinned vectors; i.e., vectors with pinned elements guarantees.

see PinnedVec for the trait definition, and SplitVec and FixedVec for two implementations

When memory locations of elements do not implicitly change while the vector grows, providing memory safety in a concurrent program becomes much easier.

ConcurrentBag and ConcurrentOrderedBag are developed as two efficient concurrent grow-only collections aiming high performance concurrent collections.

Adding concurrent element safety through ConcurrentOption in addition to pinned element guarantees allows for a concurrent vector with grow & read & update functionalities, namely ConcurrentVec. The api of the concurrent vector will continue to grow with the objective to get closer to the standard vector and be its concurrent counterpart.

In another workstream, ConcurrentIter is defined. Considering concurrent iterator as a concurrent provider of inputs and concurrent bags as the collector of outputs, it has been straightforward to develop the parallel processing crate orx-parallel which is very efficient and conveniently configurable.

miscellaneous side quests

Some of the crates resulting from interesting side topics are as follows:

  • orx-iterable ➛ Defines and implements Iterable, Collection and CollectionMut traits to represent types that can be iterated over multiple times.
  • orx-linked-list ➛ A linked list implementation with unique features and an extended list of constant time methods providing high performance traversals and mutations.
  • orx-v ➛ Traits to unify all vectors!
  • orx-imp-vec ➛ ImpVec stands for immutable push vector 👿, it is a data structure which allows appending elements with a shared reference.
  • orx-priority-queue ➛ Priority queue traits and high performance d-ary heap implementations.
  • orx-pseudo-default ➛ PseudoDefault trait allows to create a cheap default instance of a type, which does not claim to be useful.

Also,

  • orxfun-notes ➛ articles on my observations & experiences

Mathematical Modeling Demo

knapsack

mathematical modeling in action 🔎

knapsack

@orxfun

five for five star motivation

Featured work

  1. orxfun/orx-priority-queue

    Priority queue traits and efficient d-ary heap implementations.

    Rust 3
  2. orxfun/orx-split-vec

    An efficient dynamic capacity vector with pinned element guarantees.

    Rust 2
  3. 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
  4. orxfun/orx-parallel

    A performant and configurable parallel computing library for computations defined as compositions of iterator methods.

    Rust 2
  5. orxfun/orx-concurrent-vec

    A thread-safe, efficient and lock-free vector allowing concurrent grow, read and update operations.

    Rust 3
  6. orxfun/orx-iterable

    Defines and implements Iterable, Collection and CollectionMut traits to represent types that can be iterated over multiple times.

    Rust 1

0% towards 5 monthly sponsors goal

Be the first to sponsor this goal!

Select a tier

$ one time

Choose a custom amount.

$200 one time

Select
  • One hour pair-programming session

$5,000 one time

Select
  • Large contract project – contact me!