2024-06-19 17:04:45 +07:00
#import "template.typ": *
#set page(margin: (
left: 10mm,
right: 10mm,
top: 15mm,
bottom: 15mm,
))
#let linkify(lnk, txt, color: "#4273B0") = {
underline(link(lnk, text(rgb(color), txt)))
}
#set text(font: "Mulish")
#show: project.with(
theme: rgb("#0F83C0"),
name: "Tigor Hutasuhut",
title: "Software Engineer",
contact: (
contact(
text: "tigor.hutasuhut@gmail.com",
link: "mailto:tigor.hutasuhut@gmail.com",
),
contact(
text: "GitHub.com/tigorlazuardi",
link: "https://www.github.com/tigorlazuardi",
),
contact(
2024-06-19 19:15:36 +07:00
text: "LinkedIn.com/in/tigor-hutasuhut",
link: "https://www.linkedin.com/in/tigor-hutasuhut",
2024-06-19 17:04:45 +07:00
),
contact(
text: "git.tigor.web.id",
link: "https://git.tigor.web.id",
),
),
main: (
section(
title: "Work Experience",
content: (
subSection(
title: "Bareksa Marketplace Indonesia",
titleEnd: "Jakarta, Indonesia",
subTitle: "Software Engineer",
subTitleEnd: [*November 2019 - Present*],
),
subSection(
title: [#underline[Stock Project]],
content: list(
[
Developed *high performance and cheap to scale _stateful_* Market Data streams infrastructure that can hold against
*thousands of connections* without noticeable delay from IDX Burse data to consumer’ s devices and can hold against
irregular conditions like Market Panics.
],
[ Implemented high performance aggregators and runners for Market Data that can serve final data to users without delay. ],
[ Collaborated with Frontend and Product teams to implement HTTP API and WebSocket for Stock Platform ],
[ Main researcher and MVP provider to demo and integrate new technology stack to existing ones. ],
),
),
subSection(
title: [#underline[Internal Toolings]],
content: list(
[
Developed and Maintain library for standardized logging, http body responses, metrics, and tracing integration to
support faster debugs and performance review.
],
[
Developed integration tool and library for easy integration of apps with secure secret management
#underline(link("https://vault.hashicorp.com",text(rgb("#4273B0"),"Vault Hashicorp"))).
],
),
),
subSection(
title: [#underline[SBN Project]],
content: list(
[ Implement HTTP APIs for integration with *_Kemenkeu_*],
[ Create Cron Jobs to ensure the internal system is as close as possible to *_Kemenkeu_* system state. ],
2024-06-19 20:40:46 +07:00
[ Transform *Sync* operation Purchase process to *_Async_* infrastructure to support _backpressure_ when consumers rush to purchase new SBN products. ],
2024-06-19 17:04:45 +07:00
[ Create batch job runners to integrate and syncs data with *_Bina Artha_*. ],
),
),
subSection(
title: [#underline[Gold Project]],
content: list(
[ Implement HTTP APIs for integration with *_Pegadaian_*],
[ Create Cron Jobs to ensure the internal system is as close as possible to *_Pegadaian_*'s open-loop system state. ],
),
),
),
),
section(
title: "Projects",
content: (
subSection(
title: underline(
link(
"https://git.tigor.web.id/tigor/redmage",
text(rgb("#4273B0"), "Redmage [WIP]"),
),
),
content: list(
[
A performant image scraper and downloader for Reddit using Go for the backend and a
combination of #linkify("https://github.com/a-h/templ", "templ"), #linkify("https://tailwindcss.com/", "Tailwind") #linkify("https://alpinejs.dev/", "AlpineJS"), and #linkify("https://htmx.org", "HTMX")
for the interactive frontend.
],
[Designed with simplicity and easy deployments in-mind like output single binary and using SQLite for the database.],
[Fault tolerant system with #underline(link("https://watermill.io/",text(rgb("#4273B0"),"Watermill"))) Pub/Sub library.],
[Easy management of Schedulers, Devices, and Subreddits via it's Web UI.],
[Demo: #linkify("https://redmage-demo.tigor.web.id", "https://redmage-demo.tigor.web.id")],
),
),
subSection(
title: underline(
link(
"https://git.tigor.web.id/tigor/nixos",
text(rgb("#4273B0"), "Homeserver"),
),
),
content: list(
[
A self-host, on-prem machine. Using #linkify("https://podman.io/", "Podman") for the containerization,
#linkify("https://caddyserver.com", "Caddy") for the reverse proxy
2024-06-19 20:37:09 +07:00
and #linkify("https://nixos.org", "NixOS") for the OS to set
2024-06-19 17:04:45 +07:00
#linkify("https://git.tigor.web.id/tigor/NixOS/src/branch/main/system/podman", "declarative configuration of Podman containers and Caddy virtual hosts").
],
[
Hosts over many services, like
#linkify("https://git.tigor.web.id", "Git Server and its CI Runners (Forgejo)"),
#linkify("https://nextcloud.tigor.web.id", "Nextcloud"),
#linkify("https://qbittorrent.tigor.web.id", "Seedbox (Qbittorrent)").
#linkify("https://pihole.tigor.web.id", "Pihole (DNS Management, Ad Blocker, and DHCP Server)"),
#linkify("https://jellyfin.tigor.web.id", "Mediaserver (Jellyfin)"),
OpenVPN.
],
),
),
subSection(
title: underline(
link(
"https://git.tigor.web.id/tigor/nixos",
text(rgb("#4273B0"), "NixOS"),
),
),
content: list(
[
#linkify("https://nixos.org", "NixOS") Configuration for homeserver and devices.
],
[
The declarative nature of NixOS allows for easy reproducibility on hardware failures,
lock-file system to ensure the same dependencies installed across instances,
and a generation system allows rollback on os failures, thus ensuring a very robust and stable system.
],
),
),
),
),
section(
title: "Skills",
content: (
subSection(
title: "Languages",
content: (
"Go",
"Typescript",
"Javascript",
"Lua",
"Nix",
"Rust",
"Java",
"SQL",
"HTML",
"CSS",
).join(" • "),
),
subSection(
title: "Technologies",
content: (
"Kafka",
"Postgresql",
2024-06-19 20:38:20 +07:00
"SQLite",
2024-06-19 17:04:45 +07:00
"MongoDB",
"InfluxDB",
"Docker",
"Kubernetes",
"Gitlab CI/CD",
"Github Actions",
"NixOS",
"Neovim",
"NodeJS",
"Git",
"Hashicorp Vault",
"Redis",
"HTMX",
"Tailwind",
"React",
"NextJS",
"WebExtension",
).join(" • "),
),
),
),
section(
title: "Education",
content: (
subSection(
title: [
#set par(justify: false)
University of Indonesia
],
subTitle: "Bachelor of Economics",
content: [
],
),
subSection(
title: [
#set par(justify: false)
Hacktiv8 Indonesia
],
subTitle: "Fullstack Javascript Immersive Bootcamp",
content: [
],
),
),
),
),
)