├── .gitignore ├── default.nix ├── shell.nix ├── README.md ├── LICENSE ├── cv.tex └── cv.typ /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | *.fls 3 | *.fdb_latexmk 4 | *.pdf 5 | *.xdv 6 | *.gz 7 | *.pyg 8 | *.log 9 | *.aux 10 | *.synctex(busy) 11 | *.out 12 | -------------------------------------------------------------------------------- /default.nix: -------------------------------------------------------------------------------- 1 | # nix-shell --command 'lualatex -interaction=nonstopmode cv.tex' 2 | let 3 | nixpkgs = import {}; 4 | in 5 | nixpkgs.callPackage ./shell.nix {} -------------------------------------------------------------------------------- /shell.nix: -------------------------------------------------------------------------------- 1 | { pkgs ? import {} }: with pkgs; 2 | 3 | mkShell { 4 | FONTCONFIG_FILE = makeFontsConf { fontDirectories = [ libertine ]; }; 5 | buildInputs = [ 6 | (texlive.combine { 7 | inherit (texlive) 8 | scheme-medium 9 | fontawesome 10 | preprint 11 | lastpage 12 | titlesec 13 | libertine; 14 | }) 15 | ]; 16 | } 17 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Contains the LaTeX source for my CV, as well as a [Nix environment](https://nixos.org/nix/) to build it. 2 | 3 | Adapted from [Professional CV](https://www.sharelatex.com/templates/cv-or-resume/professional-cv) by Alessandro Plasmati. 4 | 5 | StackOverflow-like tags taken from https://tex.stackexchange.com/a/311949/142692 6 | 7 | Compiled with `lualatex` due to some known issues with FontAwesome. 8 | 9 | #### Preview 10 | 11 | Page 1 | Page 2 12 | :--------------:|:---------------: 13 | ![cv1](https://user-images.githubusercontent.com/601206/90032741-60de3780-dcc7-11ea-9c31-b450fffbc12a.png)| ![c2](https://user-images.githubusercontent.com/601206/90032750-6471be80-dcc7-11ea-9456-bb7a26605571.png) 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Igal Tabachnik 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /cv.tex: -------------------------------------------------------------------------------- 1 | % !TEX TS-program = lualatex 2 | 3 | \documentclass[a4paper,11pt]{article} 4 | 5 | \usepackage[usenames,dvipsnames]{xcolor} 6 | \usepackage{libertine} 7 | \usepackage{fontawesome} 8 | \usepackage{longtable} 9 | \usepackage[cm]{fullpage} 10 | \usepackage{amssymb} 11 | 12 | % headers and footers 13 | \usepackage{fancyhdr} 14 | \usepackage{lastpage} 15 | \pagestyle{fancy} 16 | \fancyfoot[L]{Igal Tabachnik} 17 | \fancyfoot[C]{Page \thepage\ of \pageref*{LastPage}} 18 | \fancyfoot[R]{\today} 19 | \renewcommand{\footrulewidth}{0.4pt}% default is 0pt 20 | \fancyhead{} 21 | \renewcommand{\headrulewidth}{0pt} 22 | 23 | % StackOverflow-like tags 24 | % https://tex.stackexchange.com/a/311949/142692 25 | % https://tex.stackexchange.com/questions/387499/how-to-create-a-border-that-looks-like-a-tag 26 | \usepackage{tikz} 27 | \definecolor{tagbg}{RGB}{225,236,244} 28 | \definecolor{tagtxt}{RGB}{88,115,159} 29 | \newcommand{\sotag}[1]{\tikz[baseline]{\node[anchor=base, rounded corners=0.5ex, text height=1.5ex, text depth=.25ex, fill=tagbg, draw=tagbg, text=tagtxt] {#1};}} 30 | 31 | % Helpers for adding job entries 32 | \newcommand{\job}[2]{\large\sffamily \textbf{#1} at \textbf{#2}} 33 | \newcommand{\sep}{\multicolumn{2}{c}{}\\} 34 | 35 | % tweak the url colors 36 | \usepackage{hyperref} 37 | \definecolor{linkcolor}{rgb}{0,0.2,0.6} 38 | \hypersetup{colorlinks,breaklinks,urlcolor=linkcolor, linkcolor=linkcolor} 39 | 40 | % nicer-looking section titles 41 | \usepackage{titlesec} 42 | \titleformat{\section}{\Large\scshape\raggedright}{}{0em}{}[\titlerule] 43 | \titlespacing{\section}{0pt}{1em}{3pt} 44 | 45 | \begin{document} 46 | 47 | % --------------------TITLE------------- 48 | \par{\centering 49 | {\Huge \textsc{Igal Tabachnik} 50 | }\bigskip\par} 51 | 52 | \hrule 53 | \vspace{0.5em} 54 | \begin{tabular}{rl} 55 | \textsc{Phone:} & +972 54 4766343\\ 56 | \textsc{Email:} & \href{mailto:hmemcpy@gmail.com}{hmemcpy@gmail.com}\\ 57 | \textsc{Socials:} & \faHome{} \href{https://hmemcpy.com}{hmemcpy.com} 58 | | $\mathbb{X}$ \href{https://twitter.com/hmemcpy}{@hmemcpy} 59 | | \faGithub{} \href{https://github.com/hmemcpy}{github} 60 | | \faLinkedin{} \href{https://www.linkedin.com/in/igaltabachnik/}{linkedin} 61 | | \faStackOverflow{} \href{https://stackoverflow.com/users/8205/igal-tabachnik}{stackoverflow} 62 | \end{tabular} 63 | 64 | \section{Summary} 65 | \begin{tabular}{p{0.9\textwidth}} 66 | I am a seasoned software developer with nearly 20 years of professional experience across various domains and technologies.\\\ 67 | 68 | My current focus is on functional programming, specifically in Scala, using foundational libraries such as ZIO and Cats. I firmly believe that typed functional programming is the ``secret ingredient'' and a means to developing robust and correct software that is highly resistant to bugs.\\\ 69 | 70 | I am an open-source contributor and guest speaker at conferences and local meetups. I also have a keen interest in Developer Experience (DX) and have developed compiler and IDE plugins that substantially enhance developer productivity. I love teaching and helping others become ``unstuck''. 71 | \end{tabular} 72 | 73 | \section{Work Experience} 74 | \begin{longtable}{r|p{0.72\textwidth}} 75 | 76 | \textsc{Apr 2020--Mar 2024} & \job{Founding Engineer and Tech Lead}{Unit}, Israel \\(4 years) 77 | &\sotag{scala} \sotag{zio} \sotag{infrastructure} \sotag{microservices} \sotag{tooling} \\&\\ 78 | &As the first employee at Unit, I helped build the engineering team from the ground up, and over the years held various responsibilities and positions across multiple teams.\\&\\ 79 | &Designed and created most of the core backend infrastructure, such as the data access and serialization layers, service architectures, domain models, testing infrastructure and more.\\&\\ 80 | &Implemented various payment protocols (ACH, Wires, Cards, etc.), APIs and corresponding services end-to-end.\\&\\ 81 | &Served as the primary resource for supporting and mentoring team members, troubleshooting issues, and developing educational materials and hands-on workshops, engineering guidelines and testing specifications.\\\sep 82 | 83 | \hline 84 | \multicolumn{2}{r}{\footnotesize\itshape (abbreviated work history below, see the LinkedIn profile for full details)}\\\sep 85 | 86 | \textsc{Jun 2016--Aug 2019} & \job{Senior Software Engineer}{Wix.com}, Israel \\(3 years, 3 months) 87 | &\sotag{scala} \sotag{functional-programming} \sotag{bazel} \sotag{intellij-plugins}\\&\\ 88 | &Worked in the build infrastructure team, supporting the migration to the \textit{Bazel} build system. Main responsibilities included adding Scala support and contributing fixes to the \textit{Bazel IntelliJ plugin} (maintained by Google), as well as creating internal tools for Wix-specific functionality.\\\sep 89 | 90 | \textsc{Jul 2015--May 2016} & \job{Software Developer}{Particular Software}, Israel \\(11 months) 91 | &\sotag{c\#} \sotag{nservicebus}\\&\\ 92 | &Building NServiceBus and the Particular Platform products.\\\sep 93 | 94 | \textsc{Jul 2012--Jan 2015} & \job{Lead Developer}{OzCode} (a CodeValue company), Israel \\(2 years, 7 months) 95 | &\sotag{c\#} \sotag{roslyn} \sotag{debugging-api} \sotag{visual-studio-extensions}\\&\\ 96 | &OzCode is a Visual Studio extension for debugging productivity. I was responsible for the entire stack, from core product development to prioritizing features and issues, research, as well as marketing and content creation, branding, and artwork direction.\\\sep 97 | 98 | \textsc{Mar 2010--Nov 2011} & \job{Senior Software Developer}{Typemock}, Israel \\(1 year, 9 months) 99 | &\sotag{c\#} \sotag{.net-internals} \sotag{il-weaving} \sotag{aop} \sotag{api-design} \sotag{code-generation}\\&\\ 100 | &Developed a unit testing suite of products for software developers. Mainly responsible for the isolation (mocking) framework, based on the unmanaged \emph{CLR Profiling API} to perform runtime inspection and IL weaving to allow runtime code modifications.\\\sep 101 | 102 | \textsc{Oct 2008--Mar 2010} & \job{Software Developer}{Eternix}, Israel \\(1 year, 6 months) 103 | &\sotag{c\#} \sotag{webdav} \sotag{winforms} \sotag{unit-testing} \sotag{tdd}\\&\\ 104 | &Lead developer of a WebDAV based file server, implementing and maintaining features such as file encryption, versioning, quota, and user management.\\\sep 105 | 106 | \textsc{Oct 2007--Oct 2008} & \job{Software Developer}{InfoGin}, Israel \\(1 year, 1 month) 107 | &\sotag{c\#} \sotag{asp.net} \sotag{mobile-web} \sotag{wap}\\&\\ 108 | &Developer in the professional services team, created web applications for mobile devices, based on the specifications provided by customers.\\\sep 109 | 110 | \textsc{Jun 2005--Sep 2007} & \job{Software Developer}{PrizmaSoft}, Israel \\(2 years, 4 months) 111 | &\sotag{c\#} \sotag{winforms} \sotag{continuous-integration}\\&\\ 112 | &Developed client applications for a business process management system, maintained build and deployment scripts.\\\sep 113 | \end{longtable} 114 | 115 | \section{Programming Proficiency} 116 | \begin{tabular}{rl} 117 | \textsc{Languages:}& Scala (expert), C\#, Java (proficient), Haskell (intermediate), Rust, TypeScript (learning)\\ 118 | \textsc{Patterns:}& ES/CQRS, DDD, OOP, TDD, Property-based testing\\ 119 | \textsc{Technologies:}& ZIO and Typelevel libraries, Postgres, Redis, Docker, Kubernetes, Kafka, TestContainers\\ 120 | \textsc{Tools:}& Scala macros, sbt plugins, Pants/Bazel, IntelliJ SDK\\ 121 | \end{tabular} 122 | 123 | \section{Skills and Accomplishments} 124 | \begin{tabular}{rl} 125 | \textsc{Languages:}& Hebrew, English, Russian\\ 126 | \textsc{Publications:}& Category Theory for Programmers by Bartosz Milewski (\href{https://github.com/hmemcpy/milewski-ctfp-pdf}{PDF}, \href{https://www.blurb.com/b/9621951-category-theory-for-programmers-new-edition-hardco}{hardcover book})\\ 127 | \textsc{Open-source:}&Contributor: ZIO, IntelliJ IDEA. Created the ZIO plugin for IntelliJ, zio-clippy (see GitHub) 128 | \end{tabular} 129 | 130 | \section{Speaking} 131 | \begin{tabular}{rl} 132 | \textsc{Video:}&\href{https://www.youtube.com/watch?v=eILoMm9t4rI}{The Business of Scala} (Scala Matters Meetup @ HiBob, 2023)\\ 133 | &\href{https://www.youtube.com/watch?v=qBmZJwmd0CA}{Everything you (didn't) want to know about implicits (Hebrew)} (Unit Engineering, 2022)\\ 134 | &\href{https://www.youtube.com/watch?v=N6ZJwnvTjLA}{Zero to FP (Hebrew)} (Underscore Meetup, 2018)\\ 135 | &\href{https://www.youtube.com/watch?v=g1EvM4CbUvM}{Journey to Functional Programming} (Wix Engineering, 2017)\\ 136 | \end{tabular} 137 | 138 | \end{document} 139 | -------------------------------------------------------------------------------- /cv.typ: -------------------------------------------------------------------------------- 1 | // FontAwesome icons replaced with Unicode symbols 2 | 3 | // Color definitions 4 | #let tagbg = rgb(225, 236, 244) 5 | #let tagtxt = rgb(88, 115, 159) 6 | #let linkcolor = rgb(0, 51, 153) 7 | 8 | // Custom tag function (equivalent to \sotag) 9 | #let sotag(content) = { 10 | box( 11 | fill: tagbg, 12 | stroke: tagbg, 13 | radius: 3pt, 14 | inset: (x: 6pt, y: 3pt), 15 | text(fill: tagtxt, content) 16 | ) 17 | } 18 | 19 | // Job entry helper 20 | #let job(title, company) = { 21 | text(size: 12pt, weight: "bold")[#title at #company] 22 | } 23 | 24 | // Set document properties 25 | #set document( 26 | title: "Igal Tabachnik - CV", 27 | author: "Igal Tabachnik" 28 | ) 29 | 30 | // Page setup 31 | #set page( 32 | paper: "a4", 33 | margin: (left: 2cm, right: 2cm, top: 2.5cm, bottom: 2.5cm), 34 | footer: [ 35 | #line(length: 100%) 36 | #v(5pt) 37 | #grid( 38 | columns: (1fr, 1fr, 1fr), 39 | align: (left, center, right), 40 | [Igal Tabachnik], 41 | context [Page #counter(page).display() of #counter(page).final().first()], 42 | [#datetime.today().display()] 43 | ) 44 | ] 45 | ) 46 | 47 | // Text settings 48 | #set text(size: 11pt) 49 | #set par(justify: true) 50 | 51 | // Link styling 52 | #show link: set text(fill: linkcolor) 53 | 54 | // Section heading styling 55 | #show heading.where(level: 1): it => [ 56 | #set text(size: 14pt, weight: "bold") 57 | #smallcaps[#it.body] 58 | #v(3pt) 59 | #line(length: 100%) 60 | #v(8pt) 61 | ] 62 | 63 | // Title 64 | #align(center)[ 65 | #text(size: 36pt, weight: "bold")[IGAL TABACHNIK] 66 | #v(10pt) 67 | ] 68 | 69 | #line(length: 100%) 70 | #v(8pt) 71 | 72 | // Contact information 73 | #grid( 74 | columns: (auto, 1fr), 75 | column-gutter: 20pt, 76 | row-gutter: 5pt, 77 | 78 | [*Phone:*], [+972 54 4766343], 79 | [*Email:*], [#link("mailto:hmemcpy@gmail.com")], 80 | [*Socials:*], [ 81 | 🏠 #link("https://hmemcpy.com")[hmemcpy.com] | 82 | 𝕏 #link("https://twitter.com/hmemcpy")[\@hmemcpy] | 83 | 🔗 #link("https://github.com/hmemcpy")[github] | 84 | 💼 #link("https://www.linkedin.com/in/igaltabachnik/")[linkedin] | 85 | 📚 #link("https://stackoverflow.com/users/8205/igal-tabachnik")[stackoverflow] 86 | ] 87 | ) 88 | 89 | #v(15pt) 90 | 91 | = Summary 92 | 93 | I am a seasoned software developer with nearly 20 years of professional experience across various domains and technologies. 94 | 95 | My current focus is on functional programming, specifically in Scala, using foundational libraries such as ZIO and Cats. I firmly believe that typed functional programming is the "secret ingredient" and a means to developing robust and correct software that is highly resistant to bugs. 96 | 97 | I am an open-source contributor and guest speaker at conferences and local meetups. I also have a keen interest in Developer Experience (DX) and have developed compiler and IDE plugins that substantially enhance developer productivity. I love teaching and helping others become "unstuck". 98 | 99 | = Work Experience 100 | 101 | #table( 102 | columns: (auto, 1fr), 103 | stroke: none, 104 | column-gutter: 15pt, 105 | row-gutter: 8pt, 106 | 107 | [*Apr 2020--Mar 2024*\ (4 years)], 108 | [ 109 | #job("Founding Engineer and Tech Lead", "Unit"), Israel \ 110 | #sotag("scala") #sotag("zio") #sotag("infrastructure") #sotag("microservices") #sotag("tooling") 111 | 112 | As the first employee at Unit, I helped build the engineering team from the ground up, and over the years held various responsibilities and positions across multiple teams. 113 | 114 | Designed and created most of the core backend infrastructure, such as the data access and serialization layers, service architectures, domain models, testing infrastructure and more. 115 | 116 | Implemented various payment protocols (ACH, Wires, Cards, etc.), APIs and corresponding services end-to-end. 117 | 118 | Served as the primary resource for supporting and mentoring team members, troubleshooting issues, and developing educational materials and hands-on workshops, engineering guidelines and testing specifications. 119 | ], 120 | 121 | [], [#line(length: 100%)], 122 | [], [#align(right)[#text(style: "italic", size: 9pt)[(abbreviated work history below, see the LinkedIn profile for full details)]]], 123 | [], [], 124 | 125 | [*Jun 2016--Aug 2019*\ (3 years, 3 months)], 126 | [ 127 | #job("Senior Software Engineer", "Wix.com"), Israel \ 128 | #sotag("scala") #sotag("functional-programming") #sotag("bazel") #sotag("intellij-plugins") 129 | 130 | Worked in the build infrastructure team, supporting the migration to the _Bazel_ build system. Main responsibilities included adding Scala support and contributing fixes to the _Bazel IntelliJ plugin_ (maintained by Google), as well as creating internal tools for Wix-specific functionality. 131 | ], 132 | 133 | [*Jul 2015--May 2016*\ (11 months)], 134 | [ 135 | #job("Software Developer", "Particular Software"), Israel \ 136 | #sotag("c#") #sotag("nservicebus") 137 | 138 | Building NServiceBus and the Particular Platform products. 139 | ], 140 | 141 | [*Jul 2012--Jan 2015*\ (2 years, 7 months)], 142 | [ 143 | #job("Lead Developer", "OzCode") (a CodeValue company), Israel \ 144 | #sotag("c#") #sotag("roslyn") #sotag("debugging-api") #sotag("visual-studio-extensions") 145 | 146 | OzCode is a Visual Studio extension for debugging productivity. I was responsible for the entire stack, from core product development to prioritizing features and issues, research, as well as marketing and content creation, branding, and artwork direction. 147 | ], 148 | 149 | [*Mar 2010--Nov 2011*\ (1 year, 9 months)], 150 | [ 151 | #job("Senior Software Developer", "Typemock"), Israel \ 152 | #sotag("c#") #sotag(".net-internals") #sotag("il-weaving") #sotag("aop") #sotag("api-design") #sotag("code-generation") 153 | 154 | Developed a unit testing suite of products for software developers. Mainly responsible for the isolation (mocking) framework, based on the unmanaged _CLR Profiling API_ to perform runtime inspection and IL weaving to allow runtime code modifications. 155 | ], 156 | 157 | [*Oct 2008--Mar 2010*\ (1 year, 6 months)], 158 | [ 159 | #job("Software Developer", "Eternix"), Israel \ 160 | #sotag("c#") #sotag("webdav") #sotag("winforms") #sotag("unit-testing") #sotag("tdd") 161 | 162 | Lead developer of a WebDAV based file server, implementing and maintaining features such as file encryption, versioning, quota, and user management. 163 | ], 164 | 165 | [*Oct 2007--Oct 2008*\ (1 year, 1 month)], 166 | [ 167 | #job("Software Developer", "InfoGin"), Israel \ 168 | #sotag("c#") #sotag("asp.net") #sotag("mobile-web") #sotag("wap") 169 | 170 | Developer in the professional services team, created web applications for mobile devices, based on the specifications provided by customers. 171 | ], 172 | 173 | [*Jun 2005--Sep 2007*\ (2 years, 4 months)], 174 | [ 175 | #job("Software Developer", "PrizmaSoft"), Israel \ 176 | #sotag("c#") #sotag("winforms") #sotag("continuous-integration") 177 | 178 | Developed client applications for a business process management system, maintained build and deployment scripts. 179 | ] 180 | ) 181 | 182 | = Programming Proficiency 183 | 184 | #grid( 185 | columns: (auto, 1fr), 186 | column-gutter: 20pt, 187 | row-gutter: 5pt, 188 | 189 | [*Languages:*], [Scala (expert), C\#, Java (proficient), Haskell (intermediate), Rust, TypeScript (learning)], 190 | [*Patterns:*], [ES/CQRS, DDD, OOP, TDD, Property-based testing], 191 | [*Technologies:*], [ZIO and Typelevel libraries, Postgres, Redis, Docker, Kubernetes, Kafka, TestContainers], 192 | [*Tools:*], [Scala macros, sbt plugins, Pants/Bazel, IntelliJ SDK] 193 | ) 194 | 195 | = Skills and Accomplishments 196 | 197 | #grid( 198 | columns: (auto, 1fr), 199 | column-gutter: 20pt, 200 | row-gutter: 5pt, 201 | 202 | [*Languages:*], [Hebrew, English, Russian], 203 | [*Publications:*], [Category Theory for Programmers by Bartosz Milewski (#link("https://github.com/hmemcpy/milewski-ctfp-pdf")[PDF], #link("https://www.blurb.com/b/9621951-category-theory-for-programmers-new-edition-hardco")[hardcover book])], 204 | [*Open-source:*], [Contributor: ZIO, IntelliJ IDEA. Created the ZIO plugin for IntelliJ, zio-clippy (see GitHub)] 205 | ) 206 | 207 | = Speaking 208 | 209 | #grid( 210 | columns: (auto, 1fr), 211 | column-gutter: 20pt, 212 | row-gutter: 5pt, 213 | 214 | [*Video:*], [ 215 | #link("https://www.youtube.com/watch?v=eILoMm9t4rI")[The Business of Scala] (Scala Matters Meetup \@ HiBob, 2023) \ 216 | #link("https://www.youtube.com/watch?v=qBmZJwmd0CA")[Everything you (didn't) want to know about implicits (Hebrew)] (Unit Engineering, 2022) \ 217 | #link("https://www.youtube.com/watch?v=N6ZJwnvTjLA")[Zero to FP (Hebrew)] (Underscore Meetup, 2018) \ 218 | #link("https://www.youtube.com/watch?v=g1EvM4CbUvM")[Journey to Functional Programming] (Wix Engineering, 2017) 219 | ] 220 | ) 221 | --------------------------------------------------------------------------------