Moscow Polytechnic University 2021
Thesis: \"Risk management in high-tech industry\""}],"skills":[{"class":"message-end","text":"Your tech stack?"},{"class":"message-start","text":"Core: Python 3.11, FastAPI, Flask, SQLAlchemy
Data: Postgres, Redis, Kafka, Pandas
Cloud: AWS (EC2, S3, Lambda), Docker, K8s
MLOps: MLflow, Airflow, PyTorch, TensorFlow"}],"contacts":[{"class":"message-end","text":"How to reach you?"},{"class":"message-start","text":"I would love to hear from you!
Email: nikita@nazarov.dev
Telegram: @nananazarov
LinkedIn: @nananazarov
Currently based in Danang, Vietnam ๐ป๐ณ"}],"career":[{"class":"message-end","text":"Career?"},{"class":"message-start","text":"Mazars - Moscow, Analyst (2019-2021)
• Financial data analysis
• Reporting
• Process automation
"},{"class":"message-start","text":"Ipsos - Moscow, Senior Analyst / Developer (2021-2024)
• BI system development
• Process automation
• System maintenance and development
"},{"class":"message-start","text":"Digital Finance International - Ho Chi Minh City, Risk-tech (2024-present)
• Risk solutions development
• Process automation
• System maintenance and development
"}],"one-more-thing":[{"class":"message-start","text":"Gotcha!"},{"class":"message-start","text":""}]};
const clickedChips = new Set();
async function makeOneMoreThingVisible() {
if (clickedChips.size == 4) {
const button = document.getElementById("one-more-thing");
button.style.display = "block";
}
}
async function showMessageWithDelay(message, delayMillis = 100) {
return new Promise((resolve) => {
setTimeout(function () {
const messageElement = document.createElement("div");
messageElement.classList.add("message", message.class);
messageElement.innerHTML = `
${message.text}
`; document.querySelector(".messenger").appendChild(messageElement); resolve(); }, delayMillis); }); } async function showNextMessages(id) { const messages = dialogMessages[id]; if (!messages) { return; } for (const message of messages) { if (message.class == "message-end") { await showMessageWithDelay(message); } else { await showMessageWithDelay(message, 800); } } } async function handleClick(event) { const { target } = event; if (target.classList.contains("message-input-chip")) { target.style.display = "none"; messageChips.removeEventListener("click", handleClick); await showNextMessages(target.id); messageChips.addEventListener("click", handleClick); clickedChips.add(target.id); await makeOneMoreThingVisible(); } } const messageChips = document.getElementById("message-input-list"); messageChips.addEventListener("click", handleClick); })();