Atamert Ölçgen

3D Artist & Software Developer


You can find software projects I have created or contributed on this page.

I wrote my first piece of code in 2003. My first language was Java (not a bad first language) but the first language I was actually productive with was Python. I wrote my first open source libraries using Python for Django framework.

Currently my favourite languages are Rust & Clojure. Rust, because it couples high-level language features (strong type system, safety, etc.) with a low-level language (high performance & low resource usage). Clojure, simply because of its elegance.

If you are a Blender user make sure you check out my addon meshstats.


Blender Addonactive
© 2020 – 2024

meshstats is a Blender addon that provides mesh statistics on face counts and poles. It can also highlight tris, ngons & poles on the mesh in 3D viewport.



Blender Addonunmaintained
© 2023

A pure-python UV packer that can pack concave and holed islands efficiently. Blender's built-in UV packer was using a (bounding box) bin packer algorithm when I first started this project. Around the time I have started getting results it is announced that a more advanced packer is in development. This new built-in algorithm is released with Blender 3.6. It works very well and it is much faster than than this addon. I suggest using the built-in packer.



Blender Addonactive
© 2022 – 2024

Simple Blender addon that applies the first mirror modifier in the stack without destroying it.



Blender Addonactive
© 2021 – 2024

LOD Instances Node Group allows instancing a low-poly version of a collection based on distance and frustum cone.



Web Applicationactive
© 2015 – 2024

Capitalize is a simple online tool that helps with title & subtitle capitalization.


Validation Benchmark

Web Applicationunmaintained
© 2016 – 2017

This is a benchmark to compare various Clojure validation libraries' performance. Click the link below to see latest results



© 2015 – 2024

After reading Entity Systems are the future of MMOG development, I was fascinated by the conceptual design of Entitiy-Component Systems. This was back in 2014, during our visit to SigFig headquarters in San Francisco. Once the trip ended I started working on a Clojure library.

I had two extra goals on top of achieving basic ECS behavior:

  • Allow safe parallelization of systems without extra syntax by the user.
  • Take advantage of CPU caches by increased data locality.

First goal was attainable, clecs design supports automatic parallelization by defining the components a system reads and writes with the systems. It is just a matter of writing a scheduler to run the systems respecting the dependencies. Components not defineds as readable or writable cannot be accessed within the system code anyway.

I have researched about how I can achieve the second goal. It turned out to be quite challenging. The difficulty had little to do with Clojure and everything to do with how JVM manages memory. To ensure your component data stored in memory in contiguous manner you would need to resort using native data model. This was the main reason why I did not continue development of clecs.\n\nIf you want to try out a simple ECS in Clojure, clecs is functional.