From f722d20725586ee4744d077770ef7a89ab05e360 Mon Sep 17 00:00:00 2001 From: Ahmed Abdelhalim Date: Thu, 10 Aug 2023 15:39:23 +0300 Subject: Migrate from brunch to hugo --- app/assets/android-chrome-192x192.png | Bin 4201 -> 0 bytes app/assets/apple-touch-icon.png | Bin 3392 -> 0 bytes app/assets/browserconfig.xml | 9 - app/assets/de.html | 310 ---------------------------------- app/assets/favicon-16x16.png | Bin 596 -> 0 bytes app/assets/favicon-32x32.png | Bin 958 -> 0 bytes app/assets/favicon.ico | Bin 1150 -> 0 bytes app/assets/index.html | 310 ---------------------------------- app/assets/key.asc | 20 --- app/assets/key.ssh | 1 - app/assets/mstile-150x150.png | Bin 3853 -> 0 bytes app/assets/safari-pinned-tab.svg | 35 ---- app/assets/site.webmanifest | 14 -- app/print.styl | 25 --- app/stylesheets/print/education.styl | 11 -- app/stylesheets/print/header.styl | 21 --- app/stylesheets/print/projects.styl | 7 - app/stylesheets/print/skills.styl | 17 -- app/stylesheets/print/summary.styl | 0 app/stylesheets/print/work.styl | 14 -- app/stylesheets/web/education.styl | 58 ------- app/stylesheets/web/header.styl | 45 ----- app/stylesheets/web/projects.styl | 21 --- app/stylesheets/web/skills.styl | 31 ---- app/stylesheets/web/summary.styl | 8 - app/stylesheets/web/work.styl | 81 --------- app/web.styl | 65 ------- 27 files changed, 1103 deletions(-) delete mode 100644 app/assets/android-chrome-192x192.png delete mode 100644 app/assets/apple-touch-icon.png delete mode 100644 app/assets/browserconfig.xml delete mode 100644 app/assets/de.html delete mode 100644 app/assets/favicon-16x16.png delete mode 100644 app/assets/favicon-32x32.png delete mode 100644 app/assets/favicon.ico delete mode 100644 app/assets/index.html delete mode 100644 app/assets/key.asc delete mode 100644 app/assets/key.ssh delete mode 100644 app/assets/mstile-150x150.png delete mode 100644 app/assets/safari-pinned-tab.svg delete mode 100644 app/assets/site.webmanifest delete mode 100644 app/print.styl delete mode 100644 app/stylesheets/print/education.styl delete mode 100644 app/stylesheets/print/header.styl delete mode 100644 app/stylesheets/print/projects.styl delete mode 100644 app/stylesheets/print/skills.styl delete mode 100644 app/stylesheets/print/summary.styl delete mode 100644 app/stylesheets/print/work.styl delete mode 100644 app/stylesheets/web/education.styl delete mode 100644 app/stylesheets/web/header.styl delete mode 100644 app/stylesheets/web/projects.styl delete mode 100644 app/stylesheets/web/skills.styl delete mode 100644 app/stylesheets/web/summary.styl delete mode 100644 app/stylesheets/web/work.styl delete mode 100644 app/web.styl (limited to 'app') diff --git a/app/assets/android-chrome-192x192.png b/app/assets/android-chrome-192x192.png deleted file mode 100644 index 0abde99..0000000 Binary files a/app/assets/android-chrome-192x192.png and /dev/null differ diff --git a/app/assets/apple-touch-icon.png b/app/assets/apple-touch-icon.png deleted file mode 100644 index 56687f2..0000000 Binary files a/app/assets/apple-touch-icon.png and /dev/null differ diff --git a/app/assets/browserconfig.xml b/app/assets/browserconfig.xml deleted file mode 100644 index b3930d0..0000000 --- a/app/assets/browserconfig.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - #da532c - - - diff --git a/app/assets/de.html b/app/assets/de.html deleted file mode 100644 index 37f4b9a..0000000 --- a/app/assets/de.html +++ /dev/null @@ -1,310 +0,0 @@ - - - - - A14M - - - - - - - - - - - - - - - - - - - -
-
- [EN] -

Ahmed AbdelHalim

- Plattform-Ingenieur · DevOps -
-
Berlin, Deutschland
- - - - - - - - -
-
- -
-

Summary

-

- Plattform-Ingenieur mit - 10+ Jahre Erfahrung in der Software-Entwicklung (Backend/API-fokussiert), - 5+ Jahre Erfahrung in Infrastruktur-Automatisierung und DevOps, - Hobby-Sicherheitsanalytiker und -tester. - Ein begeisterter Fan von Automatisierung, Nachhaltigkeit, Design Patterns und sauberem Code. - Immer daran interessiert, eine bessere Problemlösungsmethode für anspruchsvolle Aufgaben zu finden, - und sinnvolle neue Technologien und Tools zu erlernen (wenn die Notwendigkeit besteht). -

-
-
-

Kenntnisse

-
-
DevOps
-
Kubernetes, Terraform, Docker, Ansible, CloudFoundry, Helm, Fastly, Vault, - Concourse, Artifactory, ... -
- -
Telemetrie
-
Grafana, Prometheus, Loki, ELK, - Sentry, Tempo. -
- -
Kodierung
-
Go, Ruby, Python, Bash, Rust.
- -
Paradigmen
-
- Design Patterns, Test Driven Development (TDD), Behavior Driven Development (BDD), - Continuous Integration and Delivery (CI/CD), Infrastructure as Code (IaC), - Configuration as Code, RESTful APIs, Micro-Services. -
- -
Tools
-
- vim, git, tmux, ssh, bash, kubectl, kubevela, ansible, helmfile, vagrant, docker, certbot, dig, bosh, vault, - nc, nmap, curl, ffuf, gobuster, sqlmap, xxd, searchsploit, meta-sploit, commix, gdb, ltrace, ... -
- -
Plattformen
-
- Amazon Web Services (AWS), DigitalOcean, Heroku, Google Cloud Platform (GCP), - Linux. -
- -
Sprachen
-
Englisch (C2), Deutsch (B1), Arabisch (Muttersprache).
-
-
- -
-

Berufserfahrungen

-
-
-

- Springer Nature AG & Co. KGaA -

- Platform Engineer - Feb. 2022 - Aug. 2022 - Berlin, Germany -
-

Arbeiten als Teil des Engineering Enablement-Teams, das Infrastruktur bereitstellt, - interne Tools, Dokumente, CloudFoundry-Plattform und Kubernetes-Cluster, - um die Entwicklungsteams bei ihren täglichen Aufgaben zu unterstützen.

-
    -
  • Arbeitete an interner (Halfpipe) - Tools zum Erstellen von CI/CD-Pipelines auf Github-Aktionen und Concourse.
  • -
  • Implementierte wiederverwendbare GitHub Actions-Workflows für die Bereitstellung in CloudFoundry, Kubernetes und - Docker-Registrierungen.
  • -
  • Implementierte Tools zum Anzeigen und Melden des Kubernetes-Bereitstellungsstatus (von CI/CD) an die jeweiligen Teams, - und benachrichtigen Sie sie bei Fehlern. -
  • -
  • Implementierter Alert-Routing-Service zur Integration mit Prometheus - Alert-Manager. - Und sendet Benachrichtigungen an verschiedene Teams/Projekte und vorkonfigurierte Slack-Kanäle oder E-Mails.
  • -
  • Gepflegte Teamdokumente, die von anderen Entwicklungsteams verwendet werden, um sie in interne Plattformen zu integrieren und zu verwenden.
  • -
  • Wartung der von Terraform bereitgestellten Infrastruktur verschiedener Teile der Plattformen.
  • -
-
-
-
-

Sapera GmbH.

- Senior Developer/DevOps - Apr. 2018 - Nov. 2021 - Berlin, Germany -
-
    -
  • - Implementierte Infrastruktur als Code (IaC) für verschiedene Projekte mit Terraform und Ansible. -
  • -
  • Standardisierung des Bereitstellungsprozesses (und Pflege der Prozessdokumentation).
  • -
  • Erstellte Vorlagen zur Bereitstellung von Infrastruktur auf verschiedenen Cloud-Anbietern und in Entwicklungsstadien.
  • -
  • - Aufbau standardisierter Workflows mit CircleCI zur Automatisierung von Bereitstellungen (für interne und externe Projekte). -
  • -
  • - Implementierung und Wartung der (Rails 5) JSON-API für unsere - Infografik-Portal[1]. -
  • -
  • - Gepflegt 99+% Dokumentationsabdeckung des Infografik-Portals[1]. API - und 90+% Testabdeckung. -
  • -
  • Arbeitete mit Docker zusammen, um Ergebnisse für einige unserer externen Projekte bereitzustellen.
  • -
  • - Unterstützung und Anleitung zur Arbeit mit unseren standardmäßigen Bereitstellungsworkflows (intern und extern). -
  • -
  • Arbeitete eng mit unserem Systemingenieur zusammen, um ihn bei verschiedenen DevOps-Aufgaben zu unterstützen.
  • -
  • - Einige der Datenpipelines wurden neu geschrieben, gewartet und bereitgestellt, um bessere Sicherheitsstandards einzuhalten. -
  • -
-

- [1] Eine funktionierende Version des Infografik-Portals wurde erworben von - Scrolly Telling GmbH und noch von ihnen bearbeitet wie gesehen bei - Five-Times. -

-
-
-
-

LIQID GmbH.

- Senior Backend Developer - Mar. 2016 - Dec. 2017 - Berlin, Germany -
-
    -
  • Wartung der RESTful-API (von Administratoren und Front-End verwendet).
  • -
  • Umsetzung und Pflege der Integration mit der Deutschen Bank.
  • -
  • - Implementierung und Wartung der Integration mit Intercom - CRM. -
  • -
  • Implementierung und Wartung des Rechnungssystems.
  • -
  • - Implementiert die neue Authentifizierungsschicht mit - (RFC7519: JWT). -
  • -
  • Die Zwei-Faktor-Authentifizierung (2FA) für die Benutzer-/Client-Anmeldung implementiert.
  • -
  • Integrierte andere Dienste wie DocuSign, PostIdent,...
  • -
  • Umgesetzte tägliche Geschäfts-/Marketing-/technische Anforderungen.
  • -
-
-
-
-

PrioriData GmbH.

- Full Stack Developer - Jul. 2015 - Feb. 2016 - Berlin, Germany -
-

Wurde von Airnow Data Ltd. übernommen.

-
    -
  • Wartung der Rails-Web-App (Dashboard).
  • -
  • Der Scraping-Prozess zum Abrufen der Daten aus Apple- und GooglePlay-Stores wurde optimiert.
  • -
  • Warteschlangen und Überwachung rund um die Scraper neu implementiert.
  • -
  • Migrierte erfasste Daten aus verschiedenen Ressourcen zu Google BigQuery.
  • -
  • - Wartung und Bereitstellung von VM-Instanzen für verschiedene Zwecke bei Google - Cloud-Plattform (mit chef). -
  • -
  • - “Extract” Schritt in die - ETL-Prozess (unter Verwendung eines API-basierten Crawlers anstelle von phantomJS - Browser). -
  • -
-
-
-
-

AskNative

- Backend Developer/DevOps - May. 2013 - Jul. 2015 - Remote, Egypt -
-
    -
  • Implementierte die Testsuite für die API.
  • -
  • Veranstaltungsbuchungsfunktion über Stripe implementiert.
  • -
  • Neu implementiertes Caching für bessere Antwortzeiten.
  • -
  • Wartung der Heroku-Stacks für Staging/Produktion.
  • -
  • - Große Teile der API neu implementiert, um besseren Designmustern zu folgen - (Sechseckige Architektur und Pub/Sub-Muster). -
  • -
-
-
- -
-

Schreiben

- -
-

Clean Code and the Art of Exception Handling

-

- Ein - - Toptal veröffentlichter Blogbeitrag - - über verschiedene Taktiken und Strategien für die Ausnahmebehandlung und wie man sie einsetzt, um saubereren Code zu schreiben. -

-
- - -
- -
-

Projekte

-
-

- Conway's Game of Life -

-

- Ein Mono-Repo mit verschiedenen Implementierungen der Befehlszeilenschnittstelle (CLI) für die - Spiel des Lebens in mehreren Sprachen - (derzeit Ruby/Rust), mit der Automatisierung zum Veröffentlichen von Updates für verschiedene Paketmanager mit a - Gitarrischer Workflow. -

-
-
-

- a14m.srht.site -

-

Der Quellcode und die Bereitstellungsskripte für diese Website/diesen Lebenslauf.

-
-
- -
-

Ausbildung

-
-

B.E. in Computer Science and Engineering

-

Arab Academy for Science and Technology

-

GPA 3.1/4.0 (B - Sehr Gut)

- Alexandria, Egypt - Sep. 2005 - Jan. 2011 -
-
-
- - - diff --git a/app/assets/favicon-16x16.png b/app/assets/favicon-16x16.png deleted file mode 100644 index fdf8171..0000000 Binary files a/app/assets/favicon-16x16.png and /dev/null differ diff --git a/app/assets/favicon-32x32.png b/app/assets/favicon-32x32.png deleted file mode 100644 index a321a58..0000000 Binary files a/app/assets/favicon-32x32.png and /dev/null differ diff --git a/app/assets/favicon.ico b/app/assets/favicon.ico deleted file mode 100644 index a81b32b..0000000 Binary files a/app/assets/favicon.ico and /dev/null differ diff --git a/app/assets/index.html b/app/assets/index.html deleted file mode 100644 index f40a7bc..0000000 --- a/app/assets/index.html +++ /dev/null @@ -1,310 +0,0 @@ - - - - - A14M - - - - - - - - - - - - - - - - - - - -
-
- [DE] -

Ahmed AbdelHalim

- Platform Engineer · DevOps -
-
Berlin, Germany
- - - - - - - - -
-
- -
-

Summary

-

- Platform engineer with - 10+ years of experience in software development (backend/API focused), - 5+ years in infrastructure automation and DevOps, - hobbyist security analyst and tester. - An avid fan of automation, sustainability, design patterns, and clean code. - Always interested in deriving a better problem-solving method for challenging tasks, - and learning sensible new technologies and tools (when the need arises). -

-
-
-

Skills

-
-
DevOps
-
Kubernetes, Terraform, Docker, Ansible, CloudFoundry, Helm, Fastly, Vault, - Concourse, Artifactory, ... -
- -
Telemetry
-
Grafana, Prometheus, Loki, ELK, - Sentry, Tempo. -
- -
Coding
-
Go, Ruby, Python, Bash, Rust.
- -
Paradigms
-
- Design Patterns, Test Driven Development (TDD), Behavior Driven Development (BDD), - Continuous Integration and Delivery (CI/CD), Infrastructure as Code (IaC), - Configuration as Code, RESTful APIs, Micro-Services. -
- -
Tools
-
- vim, git, tmux, ssh, bash, kubectl, kubevela, ansible, helmfile, vagrant, docker, certbot, dig, bosh, vault, - nc, nmap, curl, ffuf, gobuster, sqlmap, xxd, searchsploit, meta-sploit, commix, gdb, ltrace, ... -
- -
Platforms
-
- Amazon Web Services (AWS), DigitalOcean, Heroku, Google Cloud Platform (GCP), - Linux. -
- -
Languages
-
English (Professional), German (Basic), Arabic (Native).
-
-
- -
-

Work Experience

-
-
-

- Springer Nature AG & Co. KGaA -

- Platform Engineer - Feb. 2022 - Aug. 2022 - Berlin, Germany -
-

Working as part of the Engineering Enablement team, that provides infrastructure, - internal tooling, docs, CloudFoundry platform, and Kubernetes clusters, - to help the development teams with their daily tasks.

-
    -
  • Worked on internal (halfpipe) - tooling for building CI/CD pipelines on Github actions and Concourse.
  • -
  • Implemented reusable GitHub Actions workflows for deploying to CloudFoundry, Kubernetes, and - Docker Registries.
  • -
  • Implemented tooling to show and report Kubernetes deployment status (from CI/CD) to respective teams, - and notify them on failure. -
  • -
  • Implemented alert-routing service, to integrate with Prometheus - alert-manager. - And sends alerts to different teams/projects, and preconfigured Slack channels or emails.
  • -
  • Maintained team docs used by other development teams, to integrate with and use internal platforms.
  • -
  • Maintained terraform-provisioned infrastructure of different parts of the platforms.
  • -
-
-
-
-

Sapera GmbH.

- Senior Developer/DevOps - Apr. 2018 - Nov. 2021 - Berlin, Germany -
-
    -
  • - Implemented infrastructure as code (IaC) for different projects using Terraform and Ansible. -
  • -
  • Standardized the deployment process (and maintained the process documentation).
  • -
  • Built templates to provision infrastructure on different cloud providers and development stages.
  • -
  • - Built standardized workflows using CircleCI to automate deployments (for internal and external projects). -
  • -
  • - Implemented and maintained the (Rails 5) JSON API serving our - infographics portal[1]. -
  • -
  • - Maintained 99+% documentation coverage of the infographics portal[1]. API - and 90+% test coverage. -
  • -
  • Worked with Docker to provide deliverables for some of our external projects.
  • -
  • - Provided support and tutoring to work with our standard deployment workflows (internally and externally). -
  • -
  • Worked closely with our Systems Engineer to support with various DevOps tasks.
  • -
  • - Rewrote, maintained and provisioned some of the data pipelines to adhere to a better security standards. -
  • -
-

- [1] A working version of the infographics portal was acquired by - Scrolly Telling GmbH and still worked on by them as seen at - Five-Times. -

-
-
-
-

LIQID GmbH.

- Senior Backend Developer - Mar. 2016 - Dec. 2017 - Berlin, Germany -
-
    -
  • Maintained the RESTful API (used by admins and front-end).
  • -
  • Implemented and maintained the integration with Deutsche Bank.
  • -
  • - Implemented and maintained the integration with Intercom - CRM. -
  • -
  • Implemented and maintained the Invoicing system.
  • -
  • - Implemented the new authentication layer using - (RFC7519: JWT). -
  • -
  • Implemented the Two-Factor Authentication (2FA) for user/client login.
  • -
  • Integrated other services like DocuSign, PostIdent,...
  • -
  • Implemented day to day business/marketing/technical requirements.
  • -
-
-
-
-

PrioriData GmbH.

- Full Stack Developer - Jul. 2015 - Feb. 2016 - Berlin, Germany -
-

Was acquired by Airnow Data Ltd.

-
    -
  • Maintained the Rails web (dashboard) app.
  • -
  • Optimized the scraping process of getting the data from Apple and GooglePlay stores.
  • -
  • Reimplemented the queueing and monitoring around the scrapers.
  • -
  • Migrated acquired data from different resources to Google BigQuery.
  • -
  • - Maintained and provisioned different purpose VM instances on Google - Cloud Platform (using chef). -
  • -
  • - Reimplemented the “Extract” step in the - ETL process (using an API based crawler instead of phantomJS - browser). -
  • -
-
-
-
-

AskNative

- Backend Developer/DevOps - May. 2013 - Jul. 2015 - Remote, Egypt -
-
    -
  • Implemented the test suite for the API.
  • -
  • Implemented events booking feature via Stripe.
  • -
  • Reimplemented caching for better response times.
  • -
  • Maintained the Heroku stacks for staging/production.
  • -
  • - Reimplemented large portions of the API to follow better design patterns - (Hexagonal Architecture, and Pub/Sub pattern). -
  • -
-
-
- -
-

Writing

- -
-

Clean Code and the Art of Exception Handling

-

- A - - Toptal published blog post - - on different tactics and strategies for exception handling and how to employ them to write cleaner code. -

-
- - -
- -
-

Projects

-
-

- Conway's Game of Life -

-

- A mono-repo with different command line interface (CLI) implementations for the - Game of Life in multiple languages - (currently Ruby/Rust), with the automation for publishing updates to different package managers using a - git-ish workflow. -

-
-
-

- a14m.srht.site -

-

The source code, and deployment scripts for this website/CV.

-
-
- -
-

Education

-
-

B.E. in Computer Science and Engineering

-

Arab Academy for Science and Technology

-

GPA 3.1/4.0 (B - Very Good)

- Alexandria, Egypt - Sep. 2005 - Jan. 2011 -
-
-
- - - diff --git a/app/assets/key.asc b/app/assets/key.asc deleted file mode 100644 index 9ff0781..0000000 --- a/app/assets/key.asc +++ /dev/null @@ -1,20 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -mDMEZBDEPxYJKwYBBAHaRw8BAQdAMQDR6x4wOUF/16fEy0A+f4K0YkFYwLrKH7f6 -tOCh9gG0HUFobWVkIEFiZGVsSGFsaW0gPHBtQGExNG0ubWU+iJMEExYKADsCGwMF -CwkIBwMFFQoJCAsFFgIDAQACHgECF4AWIQSDeGtI9zTE98LO7DDZ/dKd4epkBQUC -ZBDEhgIZAQAKCRDZ/dKd4epkBXgJAP9NwuudTDOTA8pJIP1NBbbWBciwqZPOxo+4 -VktU8EHyhwD9G0lRbrH2aapTKuQyHWbngxCQn110vbMr369D2gkAVQS0HUFobWVk -IEFiZGVsSGFsaW0gPGExNG1AcG0ubWU+iJAEExYKADgWIQSDeGtI9zTE98LO7DDZ -/dKd4epkBQUCZBDEeAIbAwULCQgHAwUVCgkICwUWAgMBAAIeAQIXgAAKCRDZ/dKd -4epkBeCYAQD5wXKyF2d3qiiKnJ+CO5Yg3oBZo8V1C89bfBM6RA27IQD/bsFyqmUY -vQCZAGtPgUk/F7ZaJLm7vs02ndplkyPFDwC4OARkEMQ/EgorBgEEAZdVAQUBAQdA -Z6mZwv5y+thLJn6SNQDkBoked0gGVKAjdgX1qo5ydjADAQgHiHgEGBYKACAWIQSD -eGtI9zTE98LO7DDZ/dKd4epkBQUCZBDEPwIbDAAKCRDZ/dKd4epkBQEtAP9RLo0I -uz+o9l42vMV/f8ed91uHCFUlgM+x8RifyDkrvQEAm5JCgXV5AZVCN3jvj5NnaQpM -qG24V0Gqh4RXtnO/HAG4MwRkEMSPFgkrBgEEAdpHDwEBB0CPyTphZb5jUR9FPCqB -M8FvwhthJ90+z0USyI8KQwX424h4BBgWCgAgFiEEg3hrSPc0xPfCzuww2f3SneHq -ZAUFAmQQxI8CGyAACgkQ2f3SneHqZAWinAEAnmvc20NnEnzo+ex6d3LFknv4W0nt -RFPfX3ptbzOHJ8YA/jUYRLKGHekJRrJM7kE+ihUFXS3sNpU7KOQthW0DpgwH -=pdo1 ------END PGP PUBLIC KEY BLOCK----- diff --git a/app/assets/key.ssh b/app/assets/key.ssh deleted file mode 100644 index 1a338cf..0000000 --- a/app/assets/key.ssh +++ /dev/null @@ -1 +0,0 @@ -ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII/JOmFlvmNRH0U8KoEzwW/CG2En3T7PRRLIjwpDBfjb cardno:19_707_974 diff --git a/app/assets/mstile-150x150.png b/app/assets/mstile-150x150.png deleted file mode 100644 index 350bca4..0000000 Binary files a/app/assets/mstile-150x150.png and /dev/null differ diff --git a/app/assets/safari-pinned-tab.svg b/app/assets/safari-pinned-tab.svg deleted file mode 100644 index be8fc4f..0000000 --- a/app/assets/safari-pinned-tab.svg +++ /dev/null @@ -1,35 +0,0 @@ - - - - -Created by potrace 1.14, written by Peter Selinger 2001-2017 - - - - - - - - - - diff --git a/app/assets/site.webmanifest b/app/assets/site.webmanifest deleted file mode 100644 index e532fa7..0000000 --- a/app/assets/site.webmanifest +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "A14m", - "short_name": "A14m", - "icons": [ - { - "src": "/android-chrome-192x192.png", - "sizes": "192x192", - "type": "image/png" - } - ], - "theme_color": "#ffffff", - "background_color": "#ffffff", - "display": "standalone" -} diff --git a/app/print.styl b/app/print.styl deleted file mode 100644 index 41ca616..0000000 --- a/app/print.styl +++ /dev/null @@ -1,25 +0,0 @@ -@page { - margin-left: 1cm - margin-right: 1cm -} - -body { - font-size: 9pt - line-height: 1.3 -} - -a:link, a:visited, a:hover, a:active { - text-decoration-thickness: 1px -} - -.section-header { - font-size: 18pt - margin-bottom: -0.6em -} - -@require "stylesheets/print/header.styl" -@require "stylesheets/print/summary.styl" -@require "stylesheets/print/skills.styl" -@require "stylesheets/print/work.styl" -@require "stylesheets/print/projects.styl" -@require "stylesheets/print/education.styl" diff --git a/app/stylesheets/print/education.styl b/app/stylesheets/print/education.styl deleted file mode 100644 index ebefd27..0000000 --- a/app/stylesheets/print/education.styl +++ /dev/null @@ -1,11 +0,0 @@ -.education { - // avoid page breaks inside the education section - page-break-inside: avoid - margin-top: 75px - // remove the extra space added for the website - margin-bottom: 0 -} - -.education__details { - margin-top: 0.3em -} diff --git a/app/stylesheets/print/header.styl b/app/stylesheets/print/header.styl deleted file mode 100644 index 7b982c2..0000000 --- a/app/stylesheets/print/header.styl +++ /dev/null @@ -1,21 +0,0 @@ -.header__name { - margin-bottom: 0.1em -} - -.header__language { - display: none -} - -.header__tel -.header__website -.header__email -.header__srht -.header__github -.header__stackoverflow -.header__linkedin { - display: inline -} - -.header__pgp { - display: none -} diff --git a/app/stylesheets/print/projects.styl b/app/stylesheets/print/projects.styl deleted file mode 100644 index be9dd75..0000000 --- a/app/stylesheets/print/projects.styl +++ /dev/null @@ -1,7 +0,0 @@ -.projects { - margin-top: 75px - page-break-inside: avoid -} - -.project { -} diff --git a/app/stylesheets/print/skills.styl b/app/stylesheets/print/skills.styl deleted file mode 100644 index e5bba67..0000000 --- a/app/stylesheets/print/skills.styl +++ /dev/null @@ -1,17 +0,0 @@ -.skills { - margin-top: 75px -} - -.skills__content { - margin-top: 1.5em -} - -.skills__title { - min-width: 12% - margin-left: 15px -} - -.skills__items { - margin-bottom: 0.1em - margin-left: 15px -} diff --git a/app/stylesheets/print/summary.styl b/app/stylesheets/print/summary.styl deleted file mode 100644 index e69de29..0000000 diff --git a/app/stylesheets/print/work.styl b/app/stylesheets/print/work.styl deleted file mode 100644 index 63368ae..0000000 --- a/app/stylesheets/print/work.styl +++ /dev/null @@ -1,14 +0,0 @@ -.work { - margin-top: 75px -} - -.work__experience { - page-break-inside: avoid -} - -// Style the Company name links in the PDF with thicker underline -.job-position__company { - a:link, a:visited, a:hover, a:active { - text-decoration-thickness: 2px - } -} diff --git a/app/stylesheets/web/education.styl b/app/stylesheets/web/education.styl deleted file mode 100644 index cf54f19..0000000 --- a/app/stylesheets/web/education.styl +++ /dev/null @@ -1,58 +0,0 @@ -.education { - // add empty space to the end of page (as big as the header) - margin-bottom: 150px -} - -.education__details { - display: flex - flex-flow: row wrap - justify-content: space-between - @media screen and (max-width: 780px) { - flex-flow: column wrap - } -} - -.education__degree { - min-width: 100% - align-self: center - font-size: 1.1em - margin-bottom: 0 -} - -.education__university -.education__gpa -.education__duration -.education__location { - min-width: 50% - margin: 0 -} - -.education__university { -} - -.education__gpa { - order: 3 - @media screen and (max-width: 780px) { - order: 2 - } -} - -.education__duration { - order: 2 - text-align: right - align-self: flex-end - @media screen and (max-width: 780px) { - text-align: left - align-self: flex-start - } -} - -.education__location { - order: 4 - text-align: right - align-self: flex-end - @media screen and (max-width: 780px) { - text-align: left - align-self: flex-start - } -} diff --git a/app/stylesheets/web/header.styl b/app/stylesheets/web/header.styl deleted file mode 100644 index 056db86..0000000 --- a/app/stylesheets/web/header.styl +++ /dev/null @@ -1,45 +0,0 @@ -.header { - text-align: center - font-style: normal -} - -.header__language { - float: right - margin-top: 1em - margin-bottom: -0.3em -} - -.header__name { - font-size: 3.3em - margin-bottom: -0.2em - clear: right -} - -.header__job-title { - font-style: italic -} - -.header__contact-info { - font-style: normal -} - -.header__location { - display: block - font-style: italic - margin-bottom: 1em -} - -.header__tel -.header__website { - display: none -} - -.header__email -.header__srht -.header__github -.header__stackoverflow -.header__pgp -.header__linkedin { - display: inline-block - margin: 8px; -} diff --git a/app/stylesheets/web/projects.styl b/app/stylesheets/web/projects.styl deleted file mode 100644 index f3889af..0000000 --- a/app/stylesheets/web/projects.styl +++ /dev/null @@ -1,21 +0,0 @@ -.projects { -} - -.projects__header { -} - -.project { -} - -.project__title { - margin-bottom: 0 - font-size: 1.1em - -} - -.project__content { - margin-left: 1.2em - margin-right: 1.2em - margin-top: 0.3em - margin-bottom: 1.5em -} diff --git a/app/stylesheets/web/skills.styl b/app/stylesheets/web/skills.styl deleted file mode 100644 index 29e9fd3..0000000 --- a/app/stylesheets/web/skills.styl +++ /dev/null @@ -1,31 +0,0 @@ -.skills { -} - -.skills__header { -} - -.skills__content { - display: flex - flex-flow: row wrap - -} - -.skills__title { - min-width: 14% - text-align: right - font-weight: 900 - @media screen and (max-width: 780px) { - text-align: left - } -} - -.skills__items { - width: 80% - margin-bottom: 0.1em - margin-left: 25px - - @media screen and (max-width: 780px) { - margin-bottom: 1em - width: 100% - } -} diff --git a/app/stylesheets/web/summary.styl b/app/stylesheets/web/summary.styl deleted file mode 100644 index dfcb412..0000000 --- a/app/stylesheets/web/summary.styl +++ /dev/null @@ -1,8 +0,0 @@ -.section-header.summary__header { - display: none -} - -.summary__content { - text-align: justify - margin-top: 1.5em -} diff --git a/app/stylesheets/web/work.styl b/app/stylesheets/web/work.styl deleted file mode 100644 index a989349..0000000 --- a/app/stylesheets/web/work.styl +++ /dev/null @@ -1,81 +0,0 @@ -.work { -} - -.work__header { -} - -.work__experience { -} - -.work__experience { - &:after { - display: flex - content: "" - border-bottom: 1px solid - margin: auto - max-width: 30% - } - &:last-of-type:after { - // remove the extra horizontal line after the last work__experience - display: none - } -} - -.job-position { - display: flex - flex-flow: row wrap - justify-content: space-between - @media screen and (max-width: 780px) { - flex-flow: column wrap - } -} - -.job-position__company -.job-position__title -.job-position__duration -.job-position__location { - min-width: 50% -} - -.job-position__company { - order: 0 - margin-bottom: 0 - font-size: 1.4em -} - -.job-position__title { - order: 2 - @media screen and (max-width: 780px) { - order: 1 - } -} - -.job-position__duration { - order: 1 - text-align: right - align-self: flex-end - @media screen and (max-width: 780px) { - order: 2 - text-align: left - align-self: flex-start - } -} - -.job-position__location { - order: 3 - text-align: right - align-self: flex-end - @media screen and (max-width: 780px) { - text-align: left - align-self: flex-start - } -} - -.note { - margin-top: 0.4em - margin-bottom: 0.4em -} - -.tasks { - margin-top: 0.4em -} diff --git a/app/web.styl b/app/web.styl deleted file mode 100644 index 7320840..0000000 --- a/app/web.styl +++ /dev/null @@ -1,65 +0,0 @@ -secondaryColor = #DB0A16 - -@media (prefers-color-scheme: dark) { - html { - color: #FFFFFF - background-color: #181818 - } -} - -@media (prefers-color-scheme: light) { - html { - color: #000000 - background-color: #FFFFFF - } -} - -body { - font-family: "PT Sans", "Kohinoor Bangla", sans-serif - max-width: 1024px - min-width: 375px - margin: 0 auto - float: none - line-height: 1.5 -} - -main { - margin-left: 1cm - margin-right: 1cm -} - -a:link, a:visited, a:hover, a:active { - text-decoration-color: secondaryColor - text-decoration-thickness: 2px - text-underline-offset: 2px - color: inherit -} - -.section-header { - display: flex - flex-direction: row - margin-bottom: -0.3em - - &:before { - content: ""; - border-bottom: 1px solid - margin: auto; - margin-right: 0.5em - flex: 5 5; - } - - &:after { - content: ""; - border-bottom: 1px solid - margin: auto; - margin-left: 0.5em - flex: 100 0; - } -} - -@require "stylesheets/web/header.styl" -@require "stylesheets/web/summary.styl" -@require "stylesheets/web/skills.styl" -@require "stylesheets/web/work.styl" -@require "stylesheets/web/projects.styl" -@require "stylesheets/web/education.styl" -- cgit v1.2.3