You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
188 lines
7.6 KiB
TypeScript
188 lines
7.6 KiB
TypeScript
export const contactInfo = {
|
|
name: "Brian Sakal",
|
|
email: "brian@sakal.us",
|
|
phone: "305-930-0248",
|
|
website: "https://git.sakal.us/avraham",
|
|
location: "Passaic, NJ",
|
|
};
|
|
|
|
export const mainSkills = [
|
|
"Javascript/Typescript",
|
|
"React",
|
|
"Next.js",
|
|
"Node.js",
|
|
"Express.js",
|
|
"Docker",
|
|
"MySQL",
|
|
"Clickhouse",
|
|
"DevOps",
|
|
"Kubernetes",
|
|
"Linux",
|
|
"Cloudflare",
|
|
"Vercel",
|
|
"S3",
|
|
];
|
|
|
|
export const exposedSkills = [
|
|
"PostgreSQL",
|
|
"Elasticsearch",
|
|
"Redis",
|
|
"RethinkDB",
|
|
"Helm",
|
|
"nginx",
|
|
"React Native",
|
|
"Swagger",
|
|
];
|
|
|
|
export const employment = [
|
|
{
|
|
title: "Lead Developer (Full-Stack)",
|
|
company: "TorahAnytime.com",
|
|
location: "Flushing, NY",
|
|
start: "June 2022",
|
|
end: "Present",
|
|
highlights: [
|
|
// From old resume:
|
|
// "Fixed/troubleshooted bugs and added features across multiple legacy codebases",
|
|
// "Consolidated cloud resources by using Kubernetes.",
|
|
// "Transitioned a legacy Cloudflare/nginx TLD site to Vercel, while maintaining custom nginx routes on the TLD, plus the entire legacy site under a subdomain.",
|
|
// "Reduced time-to-deployment from 5 minutes to 15 seconds with locally-runnable deploy scripts; besides setting up Drone/Gitlab CI/CD pipelines.",
|
|
// "Architected custom analytics backend w/ Clickhouse. Reduced query times from minutes to milliseconds.",
|
|
// "Implemented a custom IVR phone system to dynamically browse content.",
|
|
// "Deployed and configured various supporting/ancillary services in Kubernetes, including Gitlab, private Docker & NPM registries.",
|
|
// "Implemented OpenTelemetry tracing visualized in Grafana, decreasing transcoder troubleshooting by 50%.",
|
|
// "Implemented various asynchronous workflows, including a new video transcoder, in Temporal; thus completely severing our dependence on Vimeo, reducing costs by $40k/year.",
|
|
// From Otta resume:
|
|
"General full-stack work (frontend implementation in Next.js, adding endpoints to api, running database migrations in MySQL, updating Clickhouse with those schema changes, etc.)",
|
|
"Architected and implemented an in-house transcoding/content-delivery system based on Temporal, Cloudflare, and Backblaze B2 to replace Vimeo; saving $70k/year.",
|
|
"Setup generic events analytics system in Clickhouse to replace MySQL, Redis, and (eventually) Google Analytics, for faster and more granular analytics over arbitrary events and event payloads; significantly improving query times from minutes to milliseconds",
|
|
"Legacy code maintenance/incremental refactoring",
|
|
"Consolidated various async jobs (e.g. notifications, daily/weekly digest, delayed release, etc.) into type-safe Temporal workflows, enhancing developer experience and setting conventions for easy implementation of future workflows",
|
|
"Designed and deployed a multi-instance tRPC server for type-safe endpoints for the frontend",
|
|
`Adapted Agile/Scrum to accomodate stakeholder expectations of simultaneous planned and unplanned (i.e. during a Sprint) throughput and turnaround, while keeping longer-term goals predictable.`,
|
|
"Crafted multi-stage Dockerfiles to leverage layer caching in various projects",
|
|
"Reduced deployment time from 5 minutes to 15 seconds by implementing locally-runnable deploy scripts, besides setting up Github Actions CI/CD pipelines.",
|
|
"Developed a custom IVR phone system for dynamically browsing our content.",
|
|
"Deployed and configured various supporting services in Kubernetes such as Grafana, private Docker & NPM registries.",
|
|
"Implemented OpenTelemetry tracing visualized in Grafana, resulting in 50% decrease in legacy transcoder troubleshooting time.",
|
|
"Designed various parameterized Grafana dashboards for at-a-glance analysis of user stats.",
|
|
"Implemented two integrations: MySQL-Clickhouse sync (using Clickhouse primitives), and MySQL-Salesforce sync (on Temporal).",
|
|
"Transitioned legacy Cloudflare/nginx TLD site to Vercel, while maintaining custom nginx routes on the TLD and hosting the entire legacy site under a subdomain.",
|
|
],
|
|
},
|
|
// {
|
|
// title: "Assistant Manager",
|
|
// company: "Sureknit Inc. Property Management",
|
|
// location: "East Flatbush, NY",
|
|
// start: "February 2020",
|
|
// end: "June 2022",
|
|
// highlights: [
|
|
// "Kept accurate records of tenant rent payments.",
|
|
// "Balanced and monitored bank accounts for all subsidiary companies.",
|
|
// "Furnished necessary documentation for various real estate operations, such as new leases, property sales, etc.",
|
|
// ],
|
|
// },
|
|
// {
|
|
// title: "Architect Intern",
|
|
// company: "Sandy Hacohen",
|
|
// location: "Flushing, NY",
|
|
// start: "July 2018",
|
|
// end: "November 2018",
|
|
// highlights: [
|
|
// "Produced architectural drawings of various points-of-view based on given floorplans.",
|
|
// "Adjusted existing floorplans to spec.",
|
|
// ],
|
|
// },
|
|
// {
|
|
// title: "Operations Manager",
|
|
// company: "Tax Opportunities America",
|
|
// location: "Flushing, NY",
|
|
// start: "April 2014",
|
|
// end: "May 2015",
|
|
// highlights: [
|
|
// "Interfaced with clients, prepared necessary documentation and submitted applications to government programs on behalf of clients.",
|
|
// "Monitored and accommodated deadlines, missing client data, and when client promised to have the data available",
|
|
// ],
|
|
// },
|
|
// {
|
|
// title: "Representative",
|
|
// company: "Computer-Aided Engineering Network (CAEN) Hotline",
|
|
// location: "U. of Michigan",
|
|
// start: "2007",
|
|
// end: "2009, 2010",
|
|
// highlights: [
|
|
// "Provided first-response assistance to students and collecting pertinent information to arrange for involvement of specialized staff.",
|
|
// ],
|
|
// },
|
|
];
|
|
|
|
export const projectsHobbies = [
|
|
{
|
|
title: "Token-Efficient AI Chat",
|
|
highlights: ["Vike", "Hono", "React", "Cloudflare Pages"],
|
|
code: "https://git.sakal.us/avraham/context-efficient-ai",
|
|
deployment: "https://ai.sakal.us",
|
|
},
|
|
{
|
|
title: "Calendar Optimizer project",
|
|
highlights: [
|
|
"Stock options research platform",
|
|
"Preact",
|
|
"trpc",
|
|
"Clickhouse",
|
|
],
|
|
code: "https://git.sakal.us/avraham/calendar-optimizer",
|
|
deployment: "https://calendar-optimizer-frontend.sakal.us",
|
|
},
|
|
{
|
|
title: "Personal coding blog",
|
|
highlights: ["Astro", "Cloudflare Pages"],
|
|
code: "https://git.sakal.us/avraham/blog-astro",
|
|
deployment: "https://blog.sakal.us",
|
|
},
|
|
{
|
|
title: "Self-host email for the sakal.us domain",
|
|
highlights: ["Vultr-Hosted", "Postfix for SMTP", "Dovecot for IMAP"],
|
|
},
|
|
{
|
|
title: "Self-host a Kubernetes cluster",
|
|
highlights: [
|
|
"k3s",
|
|
"Private Docker image registry",
|
|
"cert-manager",
|
|
"Private coding projects",
|
|
],
|
|
},
|
|
{
|
|
title: "Self-host a Gitea code repository",
|
|
highlights: ["Deployed within the above Kubernetes cluster."],
|
|
deployment: "https://git.sakal.us",
|
|
},
|
|
// {
|
|
// title: "Custom From-Scratch Full-Stack eCommerce website",
|
|
// highlights: [
|
|
// "Previously at piazzaoptical.com",
|
|
// "mithril.js",
|
|
// "nginx as reverse proxy and TLS termination",
|
|
// "lua-http on LuaJIT",
|
|
// "LMDB",
|
|
// ],
|
|
// },
|
|
];
|
|
|
|
export const education = [
|
|
{
|
|
title: "B.S. in Aerospace Engineering",
|
|
location: "University of Michigan, Ann Arbor, MI",
|
|
start: "Sept. 2006",
|
|
end: "April 2009, Sept. 2010, April 2011",
|
|
gpa: "3.185",
|
|
},
|
|
// {
|
|
// title: "Ph.D. in Rabbinics",
|
|
// location: "Rabbinical Seminary of America, Flushing, NY",
|
|
// start: "April 2009",
|
|
// end: "April 2010, April 2011, January 2020",
|
|
// },
|
|
];
|