# Yaroslav Markin > Entrepreneur, fractional CTO, consultant ### Yaroslav Markin # Yaroslav Markin ## Entrepreneur, fractional CTO, consultant [Available for projects](#contact)
Worldwide remote from Dubai, UAE **Previously**: founded [Evil Martians](https://evilmartians.com) in 2006 and served as CTO. > Evil Martians transform growth-stage startups into unicorns, build developer tools, and create open source products. > > Over the last 18 years, we've helped startups solve their technical challenges, ship faster and more reliably, build their teams, and raise new rounds of funding. 8 of them became unicorns. > > Across more than 100 open source projects, we have 25B+ total downloads. ## Recent posts - [Inkmark: a very fast, feature-packed, AI-first Markdown gem for Ruby](/posts/inkmark-fast-ai-first-markdown.md) — Markdown is the lingua franca of the AI internet. Inkmark is a very fast Rust-backed Ruby Markdown gem, has features galore, and comes with first-class support for LLM/RAG pipelines. - [Bundlebun bundles Bun, and a tour of asset pipelines and JavaScript runtimes Rails has been through](/posts/bundlebun-bundles-bun.md) — Bundlebun is a Bun bundler for Rails. The why, the how, and a tour of every asset pipeline and JavaScript runtime Rails has been through to get here. ## Open Source - [Kino](/opensource/kino.md) — A high-performance Ractor web server for Ruby 4.0+: Rack 3-based, with a Rust Tokio/Hyper front end, Ractor-parallel Ruby workers, and a threaded fallback mode. - [Bundlebun](/opensource/bundlebun.md) — Bundles Bun—a fast JavaScript runtime, package manager, and builder—with Ruby and Rails applications. - [Carbon Fiber](/opensource/carbon_fiber.md) — A high-performance Ruby Fiber scheduler powered by Zig and libxev. ## Press - [Evil Martians: How developers help startups to take off (and how much they earn doing that)](https://web.archive.org/web/20200318152645/https://incrussia.ru/fly/evil-martians/) (Inc. Russia) - [IT specialist on how the Internet will survive the Crisis: Remote work, skills development, and automation of everything](http://www.lookatme.ru/mag/how-to/tops/211105-it-expert) (Look At Me magazine) - [Evil Martians: the journey from two people in a cafe to offices in NYC, SF, and Osaka](https://vc.ru/life/147200-zlye-marsiane-put-ot-dvuh-chelovek-v-kafe-do-ofisov-v-nyu-iorke-san-francisko-moskve-i-osake) (VC.ru) ### Open Source # Open Source - [Kino](/opensource/kino.md) — A high-performance Ractor web server for Ruby 4.0+: Rack 3-based, with a Rust Tokio/Hyper front end, Ractor-parallel Ruby workers, and a threaded fallback mode. - [Bundlebun](/opensource/bundlebun.md) — Bundles Bun—a fast JavaScript runtime, package manager, and builder—with Ruby and Rails applications. - [Carbon Fiber](/opensource/carbon_fiber.md) — A high-performance Ruby Fiber scheduler powered by Zig and libxev. - [Inkmark](/opensource/inkmark.md) — A very fast, feature-packed, AI-first Markdown (CommonMark/GFM) gem for Ruby, built on pulldown-cmark. - [nosj](/opensource/nosj.md) — Pull, push, and fused-cursor JSON parsers plus a streaming writer, SIMD-accelerated (NEON, SSE2, runtime-detected AVX2), for hosts that build native values during the parse. - [gem nosj](/opensource/nosj-ruby.md) — A fast, json-gem-compatible JSON parser and generator for Ruby—Rust and SIMD via the first-party nosj crate, precompiled PGO platform gems, lazy documents and partial parsing, and a one-line JSON drop-in. - [Audition](/opensource/audition.md) — Auditions Ruby scripts, gems, Rack apps, and Rails applications for Ractor-readiness—static analysis of isolation violations plus dynamic in-Ractor probing, with explanations and fixes. - [Callback Hell](/opensource/callback_hell.md) — Analyzes Rails application models and provides actionable insights on callbacks and validations. - [astro-slop](/opensource/astro-slop.md) — Astro integration for LLMs: markdown versions of every page, llms.txt, and alternate links. - [astro-nice-asset-filenames](/opensource/astro-nice-asset-filenames.md) — Astro integration for short, readable asset URLs. ### astro-nice-asset-filenames Astro integration for short, readable asset URLs. **Before:** By default, Astro's static build emits client-script chunks named after the synthetic module ID, with all the URL boilerplate replaced by underscores: ``` _astro/ThemeToggle.astro_astro_type_script_index_0_lang.BhEhlh7m.js _astro/BaseLayout.Pt3ADYuj.css ``` **After:** This integration shortens the script-block boilerplate and converts `PascalCase` to `snake_case` (or `kebab-case`): ``` _astro/theme_toggle.BhEhlh7m.js _astro/base_layout.Pt3ADYuj.css ``` ## Install ```sh npm install astro-nice-asset-filenames # or: bun add, pnpm add, yarn add ``` ## Usage ```js // astro.config.mjs import { defineConfig } from "astro/config"; import niceAssetFilenames from "astro-nice-asset-filenames"; export default defineConfig({ integrations: [ niceAssetFilenames() ], }); ``` ## Options | Option | Type | Default | Description | | ----------- | --------- | ------- | ------------------------------------------------------------------------------------------------------ | | `enabled` | `boolean` | `true` | When `false`, the integration is a no-op. Handy for env-flag toggling while debugging. | | `separator` | `string` | `"_"` | Separator passed to [`decamelize`](https://github.com/sindresorhus/decamelize). Use `"-"` for kebab. | ```js niceAssetFilenames({ enabled: process.env.NICE_FILENAMES !== "0", separator: "-", }); ``` ## What it does Three transforms, layered: 1. **Strips Astro's script-block URL boilerplate.** `<script>alert(1)</script>
\n" ``` Enable pass-through with `raw_html: true`; _only do this for trusted input_: ```ruby Inkmark.to_html("keep me", options: { raw_html: true }) # => "keep me
\n" ``` > **Your responsibility.** With `raw_html: true` you are fully > responsible for every `