commit 4a83f73946b5f2935381d7cb0d477aeb23a3db55 Author: Avraham Sakal Date: Sun Mar 17 08:57:16 2024 -0400 init diff --git a/common.css b/common.css new file mode 100644 index 0000000..98ff36f --- /dev/null +++ b/common.css @@ -0,0 +1,44 @@ +@import url("https://fonts.googleapis.com/css2?family=EB+Garamond:ital,wght@0,400..800;1,400..800&display=swap"); + +/* @font-face { + font-family: Lato; + src: url("Lato2OFL/Lato-Regular.ttf"); +} + +@font-face { + font-family: Lato; + src: url("Lato2OFL/Lato-Bold.ttf"); + font-weight: bold; +} + +@font-face { + font-family: Lato; + src: url("Lato2OFL/Lato-Italic.ttf"); + font-style: italic; +} + +@font-face { + font-family: Lato; + src: url("Lato2OFL/Lato-BoldItalic.ttf"); + font-style: italic; + font-weight: bold; +} */ + +/* @page { + @bottom-center { + content: "https://sakal.us"; + font-size: 0.8em; + color: #aaa; + font-family: Lato; + } + @top-center { + content: "CSS Paged Media Tutorial by Andreas Jung"; + font-size: 0.8em; + color: #aaa; + font-family: Lato; + } +} */ + +/* body { + font-family: Lato; +} */ diff --git a/contact.txt b/contact.txt new file mode 100644 index 0000000..7fba49a --- /dev/null +++ b/contact.txt @@ -0,0 +1,6 @@ +From Mr. Schlaeger: + +jeff kronisch +harris allied +jeff@harrisallied.com +212-904-1448 diff --git a/index.html b/index.html new file mode 100644 index 0000000..3965453 --- /dev/null +++ b/index.html @@ -0,0 +1,313 @@ + + + + + +
+

Brian Sakal

+
+
+
+ +
+ 225 Van Houten Ave.
+ Passaic, NJ 07055
+ (305) 930-0248
+
+
+ +
+
+
+ +
+
    +
  • +
    + Senior Full-Stack Developer, + TorahAnytime.com, Flushing, NY +
    +
    June 2022–Present
    +
    +
      +
    • + Fixed/troubleshooted bugs and added features across multiple + legacy codebases +
    • +
    • Consolidated cloud resources by using Kubernetes.
    • +
    • + Successfully transitioned a top-level domain from a + self-hosted legacy site frontend by Cloudflare and nginx, to + one hosted by Vercel, while maintaining custom routes that + were handled by nginx and keeping the legacy site online + under a subdomain. +
    • +
    • + Setup CI/CD pipelines with DroneCI and Gitlab; in addition + to locally-runnable deploy scripts which reduced + time-to-deployment from 5 minutes to 15 seconds. +
    • +
    • + Setup Clickhouse for analytics and as a read-only copy of + MySQL data. Reduced query times from minutes to fractions of + a second. +
    • +
    • + Implemented a revamped phone system using a finite-state + machine. Content from the site is available and browsable by + phone, dynamically. +
    • +
    • + Setup supporting services in Kubernetes, such as Gitlab, + OpenTelemetry, a private Docker registry, a private NPM + registry, Grafana, and others. Transcoder pipeline + troubleshooting time was halved using OpenTelemetry tracing, + with spans stored in self-hosted Clickhouse, visualized in + Grafana. +
    • +
    • + Worked with (in no particular order): Node.js, Redis, MySQL, + PostgreSQL, RethinkDB, Elasticsearch, Clickhouse, Docker, + Nomad, Consul, Kubernetes, Helm, nginx, DigitalOcean + Droplets, Vercel, S3, Cloudflare, Express.js, React, React + Native, Next.js, Swagger +
    • +
    +
    +
  • +
  • +
    + Assistant Manager, + Sureknit Inc. Property Management, East Flatbush, NY +
    +
    February 2020–June 2022
    +
    +
      +
    • Kept accurate records of tenant rent payments.
    • +
    • + Balanced bank account statements for all subsidiary + companies. +
    • +
    • + Monitored bank accounts of subsidiary companies to ensure + each had appropriate funding. +
    • +
    • + Provided necessary documentation for various real estate + operations, such as new leases, property sales, etc. +
    • +
    +
    +
  • + +
  • +
    + Operations Manager, + Tax Opportunities America, Flushing, NY +
    +
    April 2014–May 2015
    +
    +
      +
    • + Interfaced with clients to collect necessary information for + their applications to government programs. +
    • +
    • + Prepared necessary documentation and submitted applications + to the government on behalf of clients. +
    • +
    • + Monitored and accommodated deadlines, missing client data, + and when client promised to have the data available +
    • +
    +
    +
  • +
  • +
    + Representative, + Computer-Aided Engineering Network (CAEN) Hotline, U. of + Michigan +
    +
    2007–2009, 2010–2011
    +
    +
      +
    • + Provided first-response assistance to students experiencing + technical difficulties with the Engineering School's + computer resources. +
    • +
    • + Collected pertinent information from students to arrange for + involvement of specialized staff for more serious problems, + via the CAEN ticketing system. +
    • +
    +
    +
  • +
+
+
+
+ +
+
    +
  • +
    + Self-host email for the sakal.us domain + Hosted on Vultr, uses Postfix for SMTP and Dovecot for + IMAP. +
    +
  • +
  • +
    + Self-host a Kubernetes cluster + Uses the k3s implementation. Various services are deployed + within, including a private Docker image registry. TLS + certificates for the Ingresses are handled by + cert-manager. Private coding projects are also + deployed within. +
    +
  • +
  • +
    + Self-host a Gitea code repository + Deployed within the above Kubernetes cluster. Available at + https://git.sakal.us +
    +
  • +
  • +
    + Calendar Optimizer project + The beginnings of a stock options research platform. Frontend + uses Preact, backend application layer uses trpc, database is + Clickhouse. Available at + https://calendar-optimizer-frontend.sakal.us. +
    +
  • +
  • +
    + Custom Full-Stack eCommerce website + Created custom e-commerce website, both front-end and + back-end, from scratch; was at piazzaoptical.com (code at + https://git.sakal.us/avraham/piazzaoptical.com). Frontend was implemented in + mithril.js. For the + backend, nginx was setup as reverse proxy and TLS termination; + but the application code was implemented with + LuaJIT using + lua-http. The database was an + LMDB KV store library + running as part of the LuaJIT app server using + lightningmdb + Lua bindings; rolled-my-own wrapper around this so as to store + JSON objects (in the form of compressed Lua tables using + bitser). +
    +
  • +
+
+
+
+ +
+
    +
  • Docker
  • +
  • DevOps (Logging, Monitoring, Grafana, CI/CD)
  • +
  • Kubernetes
  • +
  • Node JS
  • +
  • Javascript/Typescript
  • +
  • React
  • +
  • MySQL/PostgreSQL
  • +
  • Elasticsearch
  • +
  • Clickhouse
  • +
  • Linux
  • +
  • Cloudflare
  • +
+
+
+
+ +
+
    +
  • +
    + B.S. in Aerospace Engineering, + University of Michigan, Ann Arbor, MI +
    +
    + Sept. 2006–April 2009, Sept. 2010–April 2011 +
    +
    GPA 3.185
    +
  • +
  • +
    + Ph.D. in Rabbinics, + Rabbinical Seminary of America, Flushing, NY +
    +
    + April 2009–April 2010, April 2011–January 2020 +
    +
  • +
+
+
+
+ + diff --git a/letter.css b/letter.css new file mode 100644 index 0000000..3a1759e --- /dev/null +++ b/letter.css @@ -0,0 +1,5 @@ +@import url("./common.css"); +@page { + size: letter; + margin: 1in; +} diff --git a/styles.css b/styles.css new file mode 100644 index 0000000..42ae3c1 --- /dev/null +++ b/styles.css @@ -0,0 +1,93 @@ +@import url("./letter.css"); + +body { + font-family: "EB Garamond", serif; + font-optical-sizing: auto; + font-weight: 400; + font-style: normal; + font-size: 0.9em; +} + +.lg { + font-size: 1.5em; +} + +.sm { + font-size: 0.75em; +} + +.bold { + font-weight: 600; +} + +.italic { + font-style: italic; +} + +.right { + text-align: right; +} + +.no-bullet { + list-style-type: none; + margin: 0; + padding: 0; +} + +.fit-content { + width: fit-content; +} + +section.header { + text-align: center; +} + +section.contact-info { + display: flex; + justify-content: space-between; +} + +section.sections { + margin-top: 3em; + + display: flex; + flex-direction: column; + justify-content: flex-start; + + gap: 2em; +} + +section.sections > section { + display: flex; + justify-content: flex-start; +} + +section.sections > section > label { + width: 25%; +} + +section.sections > section > div { + width: 75%; +} + +ul.inline { + padding-inline-start: 0px; + margin-block-start: 0px; + margin-block-end: 0px; +} +ul.inline li { + list-style: none; + display: inline; +} +ul.inline li:after { + content: " \00b7"; +} +ul.inline li:last-child:after { + content: none; +} + +a { + color: cadetblue; + font-weight: 500; + text-decoration: none; +}