Skip to content

JohnScience/my_com_projs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

74 Commits
 
 

Repository files navigation

My commercial programming story

Table of Contents

First commercial experience

My programming journey started rather early, at the age of 10 (2009). And only two years later (yes, at the age of 12) I started applying my nascent programming skills and knowledge commercially. I lived with grandparents who had a pension that was comparatively high but low in absolute numbers, so I had to work part-time to enjoy tarkhun, baikal, and pizza or simply even be able to buy water so that I could play soccer with my friends without suffering from thirst.

De jure, working even part-time in Russia is possible only at the age of 14, so I had to work on Onionland forums via Tor to circumvent the legal barrier that I consider unfair up to this day. My tools at the time were Cheat Engine with Lua scripts for dynamic analysis, custom-patched IDA Pro for static analysis, and a FLY-CODE Dr Web Unpacker for cracking then-state-of-the-art Armadillo Software Protection System. I deliberately never wrote, distributed, or in any way participated in the development of any malware.

Indirect proof

Not long ago, I discovered an old 512MB USB flash drive with my old documents for school. It preserved a book about Java by Shildt and Nouton whose installation by me dates back to 2012.

indirect proof

Early freelancing

In 2013, I created an account on no-longer-operational фриланс.рф where I started creating simple static landing pages with HTML, CSS, and a little bit of JavaScript (after approximately a half of a year of learning). Even at that point I did not have a GitHub or moreover GitLab account.

In 2015, I received a request from my friend employed by Advance Roleplay project to write a script that would help him and his colleagues perform their administrator duties easier and more effectively. He knew that admins on other projects used scripts written in C++-like AutoHotkey programming language. Fast-forward 2 years and in 2017 I become the top-2 on-demand AutoHotkey scripter among the small AutoHotkey programming community in Russia.

screenshot

The post reads "For feedback"

Skills: AutoHotkey · SAMPUDF · CheatEngine · Lua · WinApi · Reactive Programming · RegEx

Feedback

Максим Ивченко:

[I] agree with other commentators. The guy writes great scripts and what's the most important is that he doesn't get mad when asked for assistance.

Original: "Согласен с остальными комментаторами. Чел пишет отличные скрипты и что главное, не бомбит если просишь помощи.".

Google Translate's take: "Agree with other commentators. Chel writes excellent scripts and, most importantly, does not bomb if you ask for help.".

Skills: AutoHotkey · SAMPUDF · CheatEngine · Lua · WinApi · Reactive Programming

Feedback

Захар Алексеевич:

"[The author] completed the task in a short time, excellent work. [I] recommend.".

Original: "Сделал то, что требуется в короткие сроки, работа отличная. Советую обращаться.".

Google Translate's take: "He did what was required in a short time, the work is excellent. I advise you to apply.".

Руслан Завгородний

[The author is] a man who is professional in the field of programming. His profound foundational knowledge and extensive experience allow him to develop a wide variety of different scripts which amaze the audience.

Original: "Человек, который является профессионалом в сфере программирования. Огромная база знаний и богатый опыт позволяют ему создавать разноплановые скрипты, которые удивляют аудиторию.".

Google Translate's take: "A person who is a professional in the field of programming. A huge knowledge base and rich experience allow him to create diverse scripts that surprise the audience.".

Skills: AutoHotkey · SAMPUDF · CheatEngine · Lua · WinApi · Reactive Programming · RegEx · Socket Programming · PHP · MySQL · REST API

Technical details

This solution consisted of several components:

  • Admin ID Generator. The one-time executable that obtained the serial number of the hard drive, and requested the server to finalize giving the admin rights to the account on the active SAMP launcher. In the process, it also assigned the admin a unique ID, hence the name. It also had a simplistic GUI that displayed such information as IP, encrypted serial number of the hard-drive, and the nickname of the active SAMP account. Upon competion, the application displayed a congratulatory window and overwrote the clipboard with the new admin ID, which the new administrator was supposed to keep secret. Since the access to the Admin ID Generator was supposed to be provided via one-time link and only over a screen-sharing session on Skype and the application was fairly useless for anyone without the pre-authorization, the Admin ID Generator never received its own builder.
  • Minimal PHP & MySQL server implementing the necessary routing and handlers, including those for keeping the track of the admin data records, as well as those for providing REST API for verification of one-time passwords-hashes generated based on the serial numbers of the hard drives and time (for up to 3 secs difference).
  • Secure Admin Log-in application builder. This builder was supposed to build binary-wise distinct yet functionally equivalent applications for each new admin so that the leaks of the applications were identifiable. Functionally, any of these applications would notify the server about being ran on a particular hardware (serial number of the hard drive) and on a particular IP so that the server could instantly remove the admin rights of the suspected admin if their admin ID is compomised and so that the admin could log-in with dynamically-generated passwords hassle-free.
Feedback

He executes all [feature-]requests with brilliance. [He posses] creativity and out-of-the-box approach to development, as well as great исполнительность (check notes) and responsibility. To sum it up, AMAZING!

Linguistic note: the word "исполнительность" is a noun that means the capability of an individual to get things done, often implying regardless of the circumstances and "black swans". It also has a strong connotation with self-discipline and/or diligence.

Original: "Справляется со всеми задачами на отлично. Креативность и нестандартный подход к делу, а также хорошая исполнительность и чувство ответственности. В общем, мо-ло-дец!".

Google Translate's take: "Copes with all tasks perfectly well. Creativity and a non-standard approach to business, as well as good diligence and a sense of responsibility. In general, mo-lo-dets!".

Feedback

[The author] helped with Google Authenticator Web API in short time. I'm very grateful, thanks.

Original: "Помог с Web API Google Authenticator за короткое время. I'm very blagodaren, thanks.".

Google Translate's take: "Helped with Google Authenticator Web API in a short time. I'm very grateful, thanks.".

Science Chat 1 0 Beta 1-31 screenshot

Science Chat 1.0 Beta

Skills: AutoHotkey · SAMPUDF · CheatEngine · Lua · WinApi · Component Object Model (COM) · Reactive Programming · RegEx · Socket Programming · PHP · MySQL · REST API · HTML · CSS · Payment Gateway APIs

Users of Science Chat reached out to me via Skype or VK that they learned from a topic on the Advance Roleplay forum. After paying the monthly fee, they were provided with unique-per-family clients with family logos as icons.

Technical details

Regardless of the family, these clients underwent the initialilizing procedure via a centralized PHP&MySQL server and after that established decentralized communication via UDP sockets using a simple custom binary protocol. The server was responsible for delivering the most important messages such as muting, unmuting, nickname change, etc, as well as for storing the financial information (expiry dates, client contacts, etc).

Feedback

Ярослав Тютин:

The author pays close attention to suggestions, criticism. The script is wonderful but still requires extra polishing.

Original: "Автор прислушивается к предложениям, критики. Скрипт отличный, но в какой-то степени требует доработки.".

Google Translate's take: "The author listens to suggestions and criticism. The script is great, but needs some work.".

Note: the criticism was related to the need to know which one of the four string encodings was used by their client of SAMP (e.g. ANSI). Since there were multiple popular SAMP clients and the string encodings used by the client of SAMP could differ from those used by the OS, I did not see an easy way to determine the string encodings. In addition, the hosting provider Fozzy had short daily downtimes, which happened during the prime time due to the time difference.

Иван Попов:

Good programmer, but he refused to create a [CS:GO skin] roulette.

Original: "Хороший программист, только рулетку писать отказался".

Google Translate's take: "Good programmer, only refused to write roulette".

Note: I refused to take up this job because gambling contravenes my principles.

Игорь Уткин:

Great script. Great author. [You got my] respect!

Original: "Отличный скрипт. Отличный автор. Респект!".

Google Translate's take: "Great script. Excellent author. Respect!".

Ванёк Менякин:

Skilled man who knows his trade well. He puts his [heart and] soul into the scripts.

Original: "Умелый человек, знает толк в своем деле. Все скриптв делает с душой.".

Google Translate's take: "Skilled man, knows a lot about his business. All scripts do with soul.".

Кирилл Ткач:

[He has] developed plenty of awesome scripts, which remain in use up to this day, [I can] recommend you to everyone. +rep.

Original: "Сделал множество отличных скриптов, которые используются по сей день, всем советую. +rep".

Google Translate's take: "I made a lot of great scripts that are used to this day, I advise everyone. +rep"

Дмитрий Казначеев:

Amazing person who can help anytime and does not get mad. [You should] contact [him] :)

Original: "Отличный человек, все время поможет и не бомбит. Обращайтесь)".

Google Translate's take: "A great person, he always helps and does not bomb. Contact)"&op=translate).

Рамиз Гасанлы:

I wish you success in the growth.

Original: "Желаю удачи в развитии".

Google Translate's take: "I wish you good luck in development".

Дмитрий Ляшик:

[He] creates amazing scripts and even knows something [advanced] in programming, while being a great friend with whom you can discuss [anything and] whenever.

Original: "Делает отличные скрипты и даже что-то знает в программировании, а так отличный друг с которым можно всегда поговорить".

Google Translate's take: "Makes great scripts and even knows something in programming, otherwise a great friend with whom you can always talk".

Денис Перцев:

I am a layman when it comes to programming [so I cannot appreciate the technical merit] but I loved the application [he had developed].

Original: "Я в программирование ноль, но сама программа мне сильно понравилась".

Google Translate's take: "I am zero in programming, but I really liked the program itself".

Александр Громов:

He's the GOAT. 🤗

Original: "Топовый чел ин зе ворлд 🤗".

Google Translate's take: "Top person in the world 🤗".

  • Test coverage and debugging of a chat bot for VK.

[He] helped me with testing of a mini-project, and found important defects, thank you.

Original: "Помог протестировать мини-проект, заметил важные недочеты, благодарствую".

Google Translate's take: "Helped to test a mini-project, noticed important shortcomings, thank you".

  • Consultation and implementation of a menu app for a waiter-less restaurant in Kyiv. Client: Евгений.
Feedback

During the discussion of several projects [he] proposed a plethora of interesting ideas, which soon were implemented by himself. Long story short, +rep.

Original:"В процессе обсуждения нескольких проектов выдвигал множество интересных идей, которые вскоре были реализованы им же. +rep короче.".

Google Translate's take: "In the process of discussing several projects, he put forward many interesting ideas, which were soon implemented by him. +rep shorter".

Feedback

Максим Декусаров:

He helped [me] to write the programs [that I needed] and explained how to do this. I am immensely grateful.

Original: "Помог написать программы и объяснил как это делать. Превелико благодарствую.".

Google Translate's take: "Helped write programs and explained how to do it. Thank you very much.".


At this point, I started readying for the ЕГЭ (Unified State Exams, similar to gaokao or A-Levels) and putting extra time into competitive programming preparations. After that, by the summer of 2017, I graduated from Perm School of Profound Study of Physics, Mathematics and Informatics No. 146 and moved to Calgary, Canada for the time of evaluation of my education documents. However, the school I attended was a GAT (gifted-and-talented) eduction institution and it came not only with perks but also with challenges, such as those pertaining to the evaluation of the diploma. For example, we had Linear Algebra in our curriculum, which is a university-level subject in many countries, including Russia and Canada. These legal details delayed the evaluation of my documents and, consequently, my enrollment into a university. So I was left with a choice either to have a sabbatical or to study in a secondary school again while my documents were evaluated. I chose to attend a high school, improve my English, and get immersed into the new environment in Canada.

Even though I did relatively well in a new school, e.g. I had 95+ for Computer Science, I did not experience as much growth as I expected or desired. For instance, I did not do that great in English Language Arts (~60) and I could not get comprehensible feedback about my essays. I hardly could get anything more precise than "Your essays lacked flow". As a result, I had no single thing to meaningfully focus on at the new high school, so I switched my focus to search for a part-time or contract jobs in Software Development while I waited for the evaluation of my documents.

Mobile Legends: scaling from thousands to millions

In the summer of 2018, I got remotely hired by SHANGHAI MOONTON TECHNOLOGY CO., LTD. Here is an excerpt from my LinkedIn profile that summarizes my experience there:

When I only started working there, I was placed in the Forum Development Dpt. My main responsibilities were to locate possible problems in the working website and suggest solutions for elimination of these problems. Since the success of Mobile Legends was unpredictably great, the small company (at that time, only around 20 employees) had to review their approaches and the code base on the run because the fan base rapidly grew in numbers. Having an expertise in V8 allowed me to locate problems and provide elaborate reports about the issues.

When I deserved the company's trust and respect, I was placed in the Discord Dpt. where I was given access to ML API under the non-disclosure agreement in order to develop a multipurpose bot which processed natural language, gathered relevant information and prepared a ground for better monetization. In January of 2019 I had to give up my position and postpone studying altogether because I had issues with my cognitive health after a head injury.

Screenshots

Screenshot1 Screenshot2 Screenshot3

Note: the highlighted member merely caused a trouble in prod

Screenshot4

Skills: C++ · Kanban · Web Development · Linux · SQL · HTML · jQuery · REST · PostgreSQL · JIRA · Git · JavaScript · SCSS · Node.js · Handlebars.js · n-api · V8 · Discord API · SQLite3 · CMake · Markdown · NLTK

Skill application breadkdown

Skill application breadkdown

Responsibilities
  • Provided brief weekly written reports of the conducted work using Google Sheets.
  • Performed various programming tasks requested on Trello board using JavaScript (web/Node.js), Handlebars, EJS, SQL (sqlite3), redis, Google APIs, and internal APIs.
  • Developed and refined the internal analytics website using HTML, SCSS, JavaScript, and chart.js for the frontend, and JavaScript (Node.js), EJS templating engine, SQL (sqlite3), and internal APIs for the backend.
  • Implemented urgently needed handler of the Halpo assistant that became responsible for automated answering of F.A.Q., using JavaScript (Node.js) and RegEx (regular expressions).
  • Created a monitoring Discord bot that became responsible for addressing user analytics needs using Python (Flask), Discord API, and nltk for Natural Language Processing (sentiment analysis and topic analysis at a sub-sentence level).
  • Optimized an OLTP database access by implementing caching with redis.
  • Developed a V8-friendly native C++ Node.js module to address the surge in traffic using C++17, CMake, napi.
  • Due to low gains of automation in the short term, produced a step-by-step documentation of a complex installation process for the built toolchain for Linux, Windows, MacOS, and MinGW using Markdown + Mermaid.
  • Manually rolled out the updates of the Halpo Discord bot-assistant using SSH, CentOS, and pm2.
  • In the first two weeks, identified and located i18n, CSS, and JS problems in the forum website, and suggested solutions for elimination these problems.

The dark times after the head injury

For almost 1.5 of a year after the incident I was unable to walk on my own and to talk without heavy stuttering. However, I persevered despite the difficulty. Further, I'll detail my journey to recovery and the projects I worked on during that time.

Even though initially I was barely able even to help myself, four months after the incident (April of 2019) I started slowly but surely working on the programming project that would eventually turn first into a product, and then into a short-lived but still a company. However, it did not happen immediately.

After two months of work, in the July of 2019, I got contacted by my friend Сергей Гонин ( VK | LinkedIn ) who was running low on time to meet the deadline. He requested my assistance, which I agreed to provide while warning about the situation.

  • An android app for a water delivery company in the city of Perm.

Fellow-contractor: Сергей Гонин ( VK | LinkedIn ).

Screenshot ![Screenshot](https://sun9-25.userapi.com/impf/c850124/v850124158/181867/2BVEKOWcNcs.jpg?size=496x743&quality=96&sign=1ba8d2f751acfc1cf767359fa3fbe16a&type=album)

Skills: Java · RxJava · SQLite · Dagger · Gradle · Lombok

Together, we managed to meet the deadline, and I continued to work on the project that I had in mind.

The rise and fall of Mobile Legends Hub

After helping out my friend Sergey Gonin, I was finally able to focus on the project that I had in mind.

The idea of the project was to bridge content creators and companies that wanted to organize marketing campaigns for gamers.

Based on what I learned from many streamers (mostly those of Mobile Legends),

List of streamers who filled out the questionaire
  • Тимур "tpabomah" Хафизов ( VK | YouTube )
  • Пётр "Wonderbelka" Самошкин ( VK | YouTube )
  • Андрей "Chiilstream" Горячев ( VK | YouTube )
  • ...

they all to some extent experienced a lack of time. This was especially true for more popular streamers, while smaller streamers did not get any sponsored content or ads. Streamers of all audience sizes also disliked if not hated the discussion of terms of native ads on live streams and in videos. They wanted to focus on creating content instead of doing the negotiations. That's why I decided to create a platform that would help streamers monetize their influence without hassle while offering companies an easy and cheap way to create marketing campaigns targeting the aduiences of the partnered streamers.

Organizational details

After four months of work, the basic functionality of the platform was implemented, the next step was to start getting the content creators onboard. Even though the setup was designed to be very easy, convincing the streamers to add a third-party component to their OBS was a task requiring great care and thorough preparations.

That's when I decided to cooperate with my previous employer, Moonton, to create some value for the streamers that would help get them on board. As a previous employee at a Discord department, I had experience of working with ML API, which notably exposed rank (also colloquially known as MMR or "stars").

After negotiations with my previous superior, my use of the API for small-scale testing was approved and in a couple of days the rank-displaying OBS component was ready and synchronized with the ML API via the relay that hid the actual ML API endpoints for the users.

Screenshot1

Screenshot2

And soon the access to the component would be provided to the first big streamer, Jimahn "Gosu General" Park, who at the time had 10,000+ concurrent viewers on his streams in prime time.

Screenshot

With around 20,000 concurrent viewers, we got our first marketing campaigns and first expansion of the team.

screenshot

Everything about Claude Guide (Build, Emblem, Tips)ㅣMobile Legends | Gosu General TV

Want to learn more?

Unfortunately, the API was not prepared for such a broad use and got whitelisted. And getting access to the code even for the purpose of improvement and even with demonstrable financial gains was non-negotiable for non-residents of Shanghai. The operation was quickly halted as soon as the last contract would end, leaving the company in a sizable net-profit.

Rising from the ashes: R&D, Rust, and full-time study

In October of 2019, I was offered a part-time position in R&D (Rust) for a small startup DBChase founded by an MIT graduate, Adil Mac. Details of the work there are protected by a NDA. I left the company in April 2020.


In November of 2020, I started studying remotely at Athabasca University (at the time, the only university in Canada accredited for delivering fully remote university programs) because attending a university in person was still challenging and I needed a reduced load.

Going low-level: cross-language interoperability and performance engineering

In November of 2022, I accepted a contract for Repalab, a Russian-based startup building the software for analysis of images of lungs in DICOM and NIFTI-1 formats.

screenshot

Skills: Git · HTML · CSS · Rust · cargo-make · thiserror · serde · wasm-bindgen · image · Tauri · serde_json · futures · anyhow · pyo3 · dunce · nifti · ndarray · clap · clap-verbosity-flag · log · tracing-subscriber · arrayvec · heapless · js-sys · wasm-bindgen-futures · serde-wasm-bindgen · console_error_panic_hook · gloo-utils · bytemuck · dicom · tl · neon · Python · click · pydicom · Pillow (PIL) · numpy · patool · scikit-image · JavaScript · Node.js · Electron · electron-forge

Technical details

Before I even contracted the startup, they already had core functionality written in Go programming language. They had an ML-powered server that generated "masks" (matrices of 1s and 0s) where 0 meant that the area of lung suffered from ground-glass opacity. And, according to the plan, the next stage of the project was to create a web application that would allow the radiologists to correct the masks as necessary, thereby semi-automating this worfklow (so that eventually this step could be fully automated). However, as the result of the research they conducted, they discovered several challenges:

  1. Work with the host filesystem was complicated by safety measures in browsers.
  2. These file formats (DICOM and NIFTI-1) were too niche and weren't supported by any JavaScript library.
  3. The prototype experienced performance issues because the files were multi-dimensional, often bit-deep to reflect Houndsfield scale, and not always Euclidean (i.e. the collective "shape" of the voxels was not a orthotope).

At this point they started looking for candidates with WebAssembly experience.

Even though I didn't know the intricate details of WebAssembly bytecode, I programmed in Rust, which at the time of writing the document had the highest support for WebAssembly among all programming languages at the time due to wasm_pack, wasm_bindgen, web_sys, js_sys, wapm and others. As a result, I was accepted for a paid probationary period.

Within the first two-week sprint I managed to implement the most basic paint-like interface.

screenshot

After some challenges with DICOM/NIFTI-1 to PNG/JPEG/BMP/... conversions

actual

expected

I discovered that jmtyszka/atlaskit/nifti2png.py was flawed in numerous and sometimes unexpected ways when converting it into Rust using pyo3.

Once the most basic functionality was ready, we collectively decided to ship our static frontend as an Electron app in order to avoid challenges with safety in browsers. However, later in the development we decided to switch to Tauri because I discovered that electron-forge did not support local dependencies on Windows. In addition, switching to Tauri allowed using Rust for the development of the core process, which is analogous to the main process in Electron, without neon bindings.

During the testing, the app started crashing during the initialization. After debugging, I identified that the problem was the issue with std::fs::canonicalize, which on Windows could return a UNC-path.

When we changed the default image from 512x512x101 to a higher quality image, the image underneath the canvas in the WebView process started experiencing slow initialization time. Initially, I had a presupposition that the cause of the slow initialization was the slowness of the reimplmenetation of the script from AtlasKit because it was dealing with the non-volatile drives (SSD/HDD), which are known to be hundreds of thousands times slower than in-memory processing. However, after benchmarking I discovered that the real cause of the slowness was the IPC. From this issue I learned an alternative, which drastically alleviated the slowness, bringing it down to the tolerable levels.

For the data transfer, I decided to implement a custom protocol in order to fully utilize ReadableStreamBYOBReader and ReadableStreamDefaultReader interfaces and provide smooth user experience.

More screenshots

Screenshot (477) Screenshot (478)

By August of 2023, the product was complete and the maintenance had been passed over. Due to the war in Ukraine, the investments started targeting the technology for military applications, and I had no choice but to part my ways with the team.


Rather quickly, I joined my friends at a startup called Group Labs and started creating a prototype for a cross-platform betting app (https://github.com/JohnScience/betting_app) that was meant to be the off-chain part of the software solution for transparent betting over NOSTR & Lighting protocols. Unfortunately, the client disappeared.


With massive layoffs in the tech sector and crypto winter, I found myself competing against droves of other developers. My mom has been affected by the layoffs as well despite being one of the best business analysts in Rife Resources Ltd and despite staying with them for 11 years. All this and frequent mentions of "focus on efficiency" made me question whether the shift in the economy is structural or is a fluctuation. Despite 12 years of commercial experience at this point, I started considering pivoting into Construction or Drilling Rig jobs, since these jobs could be more resilient towards automation due to higher costs of the hardware and due to these fields being the two most technologically lagging.


Luckily, thanks to my hard work, I had a track record of delivering a wide variety of high quality software quickly, so I was very competitive on the freelance market. I started landing conracts very soon, and the very first client (Kirill) became my regular.

It happened on September 24 and started with a simple proof-of-concept of a launcher for the game of Rust written in Rust programming language with Tauri cross-platform application framework. My client had a team of frontend developers. so he needed me only to write the code for the Core process of Tauri. More precisely, he wanted to launch Rust by calling into a DLL. And I implemented and tested the functionality in 1.5h (https://github.com/JohnScience/tauri-dll-example).


After this, I had a bit more time and another person requested to write a simple MRP system featuring a multi-timer for construction processes and audio notifications. I've made a prototype within a day after accepting an offer but the client disappeared.


By that time, Kirill (my regular client) had another task for me. He wanted me to write the code that would download the missing/changed files from the remote server. After considerable struggles with error handling and absence of async/fallible drops in Rust, I settled on a blocking yet maintainable and reasonably fast solution.


After that, I worked on several projects with Sergey Vlasov as a tech consultant and/or Tech Lead. Notably, I implemented

As the first batch of work...

  • a Rust wrapper around a Python module with FEM logic.
  • a minimalistic, multi-environment (browser or Tauri WebView) JSX React + Vite frontend.
  • a Dockerized cross-platform Tauri desktop application with embedded Python for computations without Internet access.

As the second batch of work...

  • a high-performance, zero-panic (~noexcept) Rust library for multi-model computation of properties of materials (elastic modules, thermal expansion, thermal conductivitiy, etc) in unidirectional composites and honeycomb structures. The library offered a C-compatible interface, allowing it to be reused in Rust, Python and/or nearly any other programming language.
  • a Rust-powered WASM module for exporting remotely computed properties of materials in Excel .xlsx spreadsheets.
  • a FlatBuffers-inspired, binary, zero-copy, field-order (alignment, padding, and compute-order-relevance) optimized, endianness-optimized, rigid-schema protocol with client-side code generation for Python and TypeScript/JavaScript. The logic related to the protocol heavily relied on Rust macros for the client-side code generation and the generation of the Swagger UI documentation for the binary message communication. Adding a new computation routine requires adding only two messages (for request and response), the function itself, and examples of request and response messages (as values). All the remaining code and documentation, including Python and JS/TS code, gets generated by the Rust macros.
  • a minimalistic, multi-environment (browser or TauriWebview) TSX React + Vite frontend using the WASM module for exporting the computed properties and using the code-generated client for the backend that performs remote computation of properties of materials.
  • a backend application for remote computations of properties of materials that used the Protocol.
  • a multi-container docker-compose application for local testing and individual docker containers for distribution of the frontend and the backend software components.

In the meantime, I also overwatched the development of the C++ 20 application for viewing, construction, modification, and analysis of systems with arbitrary geometry and materials.


On February 11 (2024), I received a request from Kirill (my regular client) to eliminate the installation step of Tauri application. By February 29, the solution of the problem resulted in the development of https://github.com/JohnScience/tauriless/. However, to make up for the limitations of the Tauri-less approach, there was a need in a reflective loader for DLLs. By April 5, the solution of the problem resulted in the development of https://github.com/JohnScience/reflective_pe_dll_loader/.

About

My commercial programming story

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published