Skip to content
View orxfun's full-sized avatar

Block or report orxfun

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.

Please don't include any personal information such as legal names or email addresses. Maximum 100 characters, markdown supported. This note will be visible to only you.
Report abuse

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

Report abuse
orxfun/README.md

Hi, I'm Uğur Arıkan

👋 𝙰𝚋𝚘𝚞𝚝 𝙼𝚎

  • Operations Research (OR) Scientist / Practitioner (wiki)
  • Middle East Technical University & Singapore University of Technology and Design
  • Located in Bonn Germany, working at DHL
  • | 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.

Also love programming languages:

  • rust 🤟 every day, to stay for a long time
  • c#, react, typescript 👍 quiet often
  • go, f# 👌🏽 zig, nim 🤔 watching closely

🎈 𝙸'𝚖 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
  • concise, 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:

  • First, worked on defining the PinnedVec trait and its implementations such as the SplitVec and FixedVec. A pinned vector is nothing but a vector which keeps its elements pinned in their memory locations.
  • Turns out this feature is very useful in defining concurrent collections such as ConcurrentBag, ConcurrentVec or ConcurrentOrderedBag. This allows to write outputs of a computation concurrently.
  • Then, the missing piece is to provide inputs concurrently with the convenience of an iterator. And hence, the ConcurrentIter.
  • Having concurrent readers and concurrent writers, we can have a very simple yet very performant parallel iterator Par.

self referential collections

Working on convenient and efficient self referential collections.

  • Such collections are common building blocks of data structures used in many algorithms, but they are tricky to build in rust, certainly trickier than garbage collected languages.
  • The goal is to define how to create such collections safely and efficiently in rust.
  • Again the PinnedVec serves as the starting point since we want our references to stay valid.
  • Second goal is to define and provide core functionalities of such collections. SelfRefCol aims to serve as the core structure for self referential collection.
  • As the first consumer, worked on building the famously tricky LinkedList on top of SelfRefCol, which turned out to be very efficient.
  • Efficient & flexible trees 🌴 and graphs are in progress. To continue with graphs.

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

knapsack

mathematical modeling in action 🔎

knapsack

Pinned Loading

  1. orx-priority-queue orx-priority-queue Public

    Priority queue traits and efficient d-ary heap implementations.

    Rust 3 1

  2. orx-linked-list orx-linked-list Public

    An efficient and recursive singly and doubly linked list implementation.

    Rust 5

  3. orx-split-vec orx-split-vec Public

    An efficient constant access time vector with dynamic capacity and pinned elements.

    Rust 2 2

  4. orx-concurrent-iter orx-concurrent-iter Public

    A thread-safe, ergonomic and lightweight concurrent iterator trait and efficient implementations.

    Rust 2

  5. orx-parallel orx-parallel Public

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

    Rust 1

  6. orx-concurrent-bag orx-concurrent-bag Public

    An efficient, convenient and lightweight grow-only concurrent data structure allowing high performance concurrent collection.

    Rust 1