Desktop/Web/Mobile Developer

(But mostly i create Concurrent back-ends)

Download My CV
1.0 - Who am I?

hello!

My name is Ali Rezvani and I’m not your average Software engineer.

Proceeds to describe the most generic back story!

I started as a game developer but after a few years I began to write highly optimized back-ends in Rust, C# and NodeJS

I found programming interesting at the age of 14 with VB6 but soon enough I dropped that language in favor of using C++, since then it’s been true love between me and C style programming languages except for python I guess! I like to do new things, learn new frameworks every day, and simply improve my craft.

All of my work experiences are not included on my LinkedIn, but anyway, I’d love to have you check that out.

View My Linkedin

Skills

Things that I am good at

* No specific order is applied for these lists

First, let’s look at the Programming languages that I’m actively using at the moment.

[80%]
Rust
[90%]
C/C++
[100%]
Lua
[96%]
Node[JS+TS]
[70%]
VimL
[60%]
Bash

However, I’ve used many other technologies in the past!

[99%]
C#
[90%]
React
[93%]
[GLSL|HLSL|CG]
[75%]
Electron
[40%]
Haskell
[50%]
Scala
[50%]
Java
[100%]
Unity3D
[70%]
Ruby[On Rails]
[84%]
Python
[80%]
Vulkan
[60%]
[Qt/GTK#]
[55%]
Go
[70%]
Lisp[Elisp]

There are also some other technical things that I couldn’t put in any of those categories, The LLVM, Regex, Functional, Nginx, Docker, WASM, gdb, DirectX, OpenGL, VR/AR/XR, axum, CMake and SQL are among the most notable keywords associated with my work.

Here is some of my “none programming” skills

[110%]
VIM
[80%]
Linux
[94%]
GIT & SVN
[90%]
Scrum
[88%]
Design Patterns
[80%]
Fast Code
[100%]
R&D
[95%]
Clean Code
[100%]
Testing
[90%]
Teamwork
[92%]
Leadership

Going Indie

I’ve always wanted to be a giant space crab.

I love both the art and programming aspects of games; This is actually why I’m trying to go full Indie, The indie scene is great for experimenting and working on new mechanics. Right now I’m excited about working on STG games as everyone knows, This genre is stale currently, So it seems like a good place for experimenting with new gameplay mechanics.

2.0 - Open Source

Fuse

The Fuse Programming Language.

It is a staticly typed, garbage collected language with a similar syntax to Lua, Rust, TypeScript and Haskell.

Fuse code can transpile and target runtimes such as Lua 5.1 to 5.4, LuaJit, and Luau. The language itself is written in Rust and its focus is on extendability and performance. It comes with a compiler, parser, linter, formatter, testing suit, LSP, and package manager.

Here’s a quick peek:

struct Point
  x: number,
  y: number,
end

let point = Point { x: 10, y: 20 }
print("point x: ${point.x}, point y: ${point.y}")

View Fuse

NERDTree

A tree explorer plugin for vim.

The NERDTree is a file system explorer for the Vim editor. Using this plugin, users can visually browse complex directory hierarchies, quickly open files for reading or editing, and perform basic file system operations.

I’m currently the sole maintainer of this project, Although it is in a stable state and doesn’t need much attention.

View on Github

Tryumph

Bring the “Umph” back to the JavaScript error handling!

Tryumph is a cool little library written in TypeScript, Which can improve the error handling of both async and sync operations throughout your application.

Here is a quick peek!

  const result = await try$(itMayThrow(a, b, c));
  result.match(
    when(Ok, consumeResult),
    when(Err, handleError)
  );

Or even better, You can use the .dwait function call on the returned promise of try$ to get a DeferredPromise built using dwait library:

  const result = await try$(itMayThrow(a, b, c)).dwait().match(
    when(Ok, consumeResult),
    when(Err, handleError)
  ).await;

With the use of DeferredPromise we can keep chaining functions instead of awaiting each result, And we can defer all awaits to the last operation.

Does that seem too Rusty to you? What about something like this? Let’s Go!

  const [res, err] = await try$(itMayThrow(a, b, c));
  if (!!err) {
    handleError(err);
    return;
  }
  consumeResult(res);

You may say these are all async, What about sync operations? Here are the examples above but this time as sync functions.

  const result = tryFn$(itMayThrow, a, b, c);
  result.match(
    when(Ok, consumeResult),
    when(Err, handleError)
  );

Or

  const [res, err] = tryFn$(itMayThrow, a, b, c);
  if (!!err) {
    handleError(err);
    return;
  }
  consumeResult(res);

View on NPM

dwait

Deferred async operation made easy in JavaScript.

dwait is an alternative way of handling async tasks. The name stands for Deferred Await and it basically lets you defer multiple await operations to the end of the function chain, So you can stop writing things like this:

  const resp = await getUserAsync();
  const json = await resp.body.toJson();
  const username = json.username.trim();

And instead, write more readable(in my opinion) code like this:

  const username = await dwait(getUserAsync())
    .body
    .toJson()
    .username
    .trim()
    .await; // or .toPromise();

Or you can pass the function itself to the dwait function and get a deferred function you can use directly!

  const getUserDeferred = dwait(getUserAsync);
  const username = await getUserDeferred()
    .body
    .toJson()
    .username
    .trim()
    .await; // or .toPromise();

View on NPM

Xtory 2.0

A tool for writing branching nonlinear stories. But this time with plugins

This project started as simply wrapping Xtory 1.0 in an electron layer, For creating an out-of-the-box application experience, But after many purging and restarting the project, I’ve settled down on an electron app using ReactJS written in TypeScript This reincarnation of Xtory contains a plugin system for adding custom code to the application itself, For new Flows, Engine Integration, Custom Outputs and anything else that is needed for your pipeline.

View On Github

Xtory 1.0

A tool for writing branching nonlinear stories.

A small web app written in JS ECMAScript5 created for writing nonlinear stories using node graph editing and you can use it for writing both Story and Conversations, Supporting variables, and function calls inside of the engine at specific points of the story.

It can convert conversations to lightweight JSON for use in your game engine. This app also comes with a built-in Localization tool.

View On Github

Unity MVVM Framework

A way of making Unity UI more organized

This framework provides you with a reactive way of making UIs using UniRx, and you can use this to separate Logic and UI from each other.

This way you can have your logic written in normal C# code and This gives you the ability to easily write Test Cases and reusing logic on the server side for Input validation and Anti cheat strategies.

This framework is 100% async and it comes with Dependency Injection, Message Broker, Dialogue Service, Navigation Service for moving between scenes, Reactive Binding including One-way binding, Two-way binding, Event binding, Visibility binding and Collection binding which you can use converters to convert Input/Output values, and all of this is done in the editor without any code.

It’s have Binding Debugger for debugging all these reactive binds in edit mode or playing.

It also has a Localization Service supporting both JSON and CSV files as a translation table.

View On Github

3.0 - Work Experience

Infinite8

Technical Lead

Infinite8 is an awesome place to work, especially the Naxia team which to me felt like home, I’ve worked here on a wide range of problems, From fast prototyping to pipeline tool development, Both on the server and client side, Working together with other teams towards creating a uniform experience in the whole development cycle of our projects. We also had to switch to WebGL because we wanted to take full advantage of a web interface with all of its glory for user interactions, This way users could have a conventional user interface for interacting with the game, With beautiful 3D-rendered scenes integrated into it And all of this from the comfort of their web browser. This resulted in creating an architecture with embedded WebGL inside of our React front-end, Both talking to our Cluster of Micro-Services. Over at Infinite8 we focused on tackling many problems with Web3 and Play To Earn model in general. The SpeedFreaks game is our finest attempt to bring engaging NFT games with procedural 3D content, We tried our best to create a self-sustaining Economy with a functional positive loop growing its transactions organically. Right now SpeedFreaks project is in good hands, As the team over there landed a direct partnership with SplinterLands, And I’m excited for what is next for the great people working over there at Infinite8

Funomenal Games

Lead Software Engineer

Developed a 2D render pipeline for handling high amount of real-time lights in low end devices(Mobile for example), I also prototyped many gameplay features for their game, I’ve led other developers and my role was keeping track of their work and connecting Game designer to them and make sure that they do what was the designer’s idea. i’ve written Spine compatible shaders for our new pipeline, created necessary frameworks for the client and created server-side API using .NET core 2

IHP

Lead Software Engineer

IHP was a contract work company, we did lots of projects together and I actually don’t know what happened to them because it’s all was for clients, We worked on one game called Wits & Wagers it was a board game we did, we also did 2 Idle games one called “shir abaad” and the other One is “Ragbar”, I also worked a little on their in-house game called “Battle shoot”!

Ramand

Senior Unity Developer +Technical Director

They had an idea about a soccer-based game, it was a top-down strategic soccer game and it was fun to work on, we did 6 months of prototyping and testing different mechanics and controls there, I also wrote a node based project configuration manager and bootstrap code generator called Blocco sadly it’s a closed-source project. I did lots of Shaders for the Saychin game including a shader capable of doing lightweight subsurface scattering, cavity, triplanar texture mapping, very efficient Light cap implementation based on zBrush algorithms. and did Some maintenance work on Soccer champion, Implemented Asset bundles for their projects and other things.

NOA Games

Senior Software Engineer

I have worked on many of their projects and upcoming titles. Originally I hired there to work on their new title ProFC, This project has 3 parts, CakePHP back-end, C# unity Client and C++ game server. I did all 3 of them, for ProFC I wrote a cool tool for debugging C++, and PHP from Unity Editor and using PHP xdebug and C++ GDB. Then they moved me for some maintenance work on the Shadow Racer client and its back-end which was also written in PHP and used CakePHP MVC framework. I also did some work on their casual game Vaneti!

Mail: rzvxa at protonmail.com
(C) Ali Rezvani, under CC0.
Powered by Jekyll , View Source

X