230 lines
7.8 KiB
Plaintext
230 lines
7.8 KiB
Plaintext
#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(
|
||
text: "LinkedIn.com/in/tigor-hutasuhut",
|
||
link: "https://www.linkedin.com/in/tigor-hutasuhut",
|
||
),
|
||
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. ],
|
||
[ Transform *Sync* operation Purchase process to *_Async_* infrastructure to support _backpressure_ when consumers rush to purchase new SBN products. ],
|
||
[ 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
|
||
and #linkify("https://nixos.org", "NixOS") for the OS to set
|
||
#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",
|
||
"SQLite",
|
||
"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: [
|
||
],
|
||
),
|
||
),
|
||
),
|
||
),
|
||
)
|
||
|