% This CV layout copied from Oleg Goldshmidt's
% cv.tex. <ogoldshmidt@computer.org> if you need a resident TeX guru.

\documentclass{article}

\usepackage{xspace}
\usepackage{hyperref}

% Page formatting magic. Potentially unsafe, but works so far

\setlength{\textheight}{10in}
\setlength{\textwidth}{6.5in}
\addtolength{\oddsidemargin}{-1.2in}
\addtolength{\topmargin}{-50pt}

% Page header - with my name and current date

\newcommand{\cvheader}{{\bf MULI BEN-YEHUDA \hfill \today}\medskip}

%ection headers

\newcommand{\cvsection}[1]{\begin{flushleft} {\bf #1} \end{flushleft}}

% We need a bit of whitespace to separate between entries

\newlength{\cvspace}
\setlength{\cvspace}{2pt}

\newcommand{\cvskip}{\vspace*{\cvspace}}
\newcommand{\cvnext}{\cvskip\\}

% Abstract sections of CV, such as personal info, skills summary,
% employment, education, into separate environments. This will allow
% tinkering with each one separately if need arises, while preserving
% uniformity of presentation for each one, in case it consists of
% several entries.

% For personal info entries use cvpersonal environment, with entries
% of the form \cvpersentry{key}{data}

\newenvironment{cvpersonal} {\begin{tabular*}{\textwidth}[t]{ll}}
  {\end{tabular*}}

\newcommand{\cvpersentry}[2]{{\bf #1:} & #2\cvnext}

% For skill categories use cvskills environment, with entries
% of the form \cvskillcat{category}{description}

% Description is a parbox, since it is likely to span multiple lines.
% We do some black magic with parbox width to format it properly. This
% is a quick hack, but it does more or less what I want.

\newlength{\cvskillwidth}
\newlength{\cvskillcatwidth}
\newlength{\cvskilldeswidth}

\setlength{\cvskillwidth}{\textwidth}
\setlength{\cvskilldeswidth}{\cvskillwidth}
\settowidth{\cvskillcatwidth}{\bf Communication:}
\addtolength{\cvskillcatwidth}{30pt}
\addtolength{\cvskilldeswidth}{-\cvskillcatwidth}

\newenvironment{cvskills}
{\begin{tabular*}{\cvskillwidth}[t]{ll}}
{\end{tabular*}}

\newcommand{\cvskillcat}[2]{
  {\bf #1:}&\parbox[t]{\cvskilldeswidth}{#2}\cvnext}

% for Objective, we just want to format it properly.

\newlength{\cvobjectivewidth}
\setlength{\cvobjectivewidth}{\textwidth}

\newenvironment{cvobjective}
{\begin{tabular*}{\cvobjectivewidth}[t]{ll}}
{\end{tabular*}}

\newcommand{\cvobjectiveentry}[1]{
  \parbox[t]{\cvobjectivewidth}{#1}\cvnext}

% For education entries use cveducation environment, with entries
% of the form \cveduentry{dates}{degree}

% Similarly to skills summary, degree description may need more than
% one line, so we go through the length setup here, too.

\newlength{\cveduwidth}
\newlength{\cvedudateswidth}
\newlength{\cvedudegreewidth}

\setlength{\cveduwidth}{\textwidth}
\settowidth{\cvedudateswidth}{\bf 1991 --- 1995}
\addtolength{\cvedudateswidth}{15pt}
\setlength{\cvedudegreewidth}{\cveduwidth}
\addtolength{\cvedudegreewidth}{-\cvedudateswidth}

\newenvironment{cveducation}
{\begin{tabular*}{\cveduwidth}[t]{ll}}
{\end{tabular*}}

\newcommand{\cveduentry}[2]{
  {\bf #1} & \parbox[t]{\cvedudegreewidth}{#2}\cvnext}

% For employment history entries use cvemployment environment, with entries
% of the form \cvemplentry{dates}{position}{duties}

% The multiline duties description for each position is presented as a
% multicolumn entry, and all we need is the full text width (actually
% abstracted out).

\newlength{\cvemplwidth}
\setlength{\cvemplwidth}{\textwidth}

\newenvironment{cvemployment}
{\begin{tabular*}{\cvemplwidth}[t]{ll}}
{\end{tabular*}}

\newcommand{\cvemplentry}[3]{
  {\bf #1} & {\it #2}\cvnext
  \multicolumn{2}{l}{\parbox[t]{\cvemplwidth}{#3}}\cvskip\cvnext}

\newlength{\cvpubwidth}
\newlength{\cvpubshortnamewidth}
\newlength{\cvpubfullnamewidth}

\setlength{\cvpubwidth}{\textwidth}
\settowidth{\cvpubshortnamewidth}{\textbf{tcpaccel06}}
\addtolength{\cvpubshortnamewidth}{15pt}
\setlength{\cvpubfullnamewidth}{\cvpubwidth}
\addtolength{\cvpubfullnamewidth}{-\cvpubshortnamewidth}

\newenvironment{cvpubs}
{\begin{tabular*}{\cvpubwidth}[t]{ll}}
{\end{tabular*}}

\newcommand{\cvpubentry}[3]
  {\texttt{[#1]}:&
   \parbox[t]{\cvpubfullnamewidth}{\textbf{#2}, #3}\cvnext}

\newcommand{\cvcite}[1] {
  {\bf {\tt [#1]}}}

\newlength{\cvservicewidth}
\newlength{\cvservicecatwidth}
\newlength{\cvservicedeswidth}

\setlength{\cvservicewidth}{\textwidth}
\setlength{\cvservicedeswidth}{\cvservicewidth}
\settowidth{\cvservicecatwidth}{\bf PC and General Co-Chair:}
\addtolength{\cvservicecatwidth}{15pt}
\addtolength{\cvservicedeswidth}{-\cvservicecatwidth}

\newenvironment{cvservice}
{\begin{tabular*}{\cvservicewidth}[t]{ll}}
{\end{tabular*}}

\newcommand{\cvservicecat}[2]{
  {\bf #1:}&\parbox[t]{\cvservicedeswidth}{#2}\cvnext}


% End of preamble. Here it goes...

\begin{document}

\pagestyle{empty}

\large

\cvheader

\begin{center}
{\underline{\bf CURRICULUM VITAE}}
\end{center}

\cvsection{CONTACT INFORMATION}

\begin{cvpersonal}
\cvpersentry{Address}{27 Yakinton St., Haifa, Israel}
\cvpersentry{Telephone}{+972-4-8257062 (home), +972-52-5951080 (cellular)}
\cvpersentry{E-mail}{{\sf mulix@mulix.org, muli@il.ibm.com}}
\cvpersentry{Web}{{\url{http://www.mulix.org}}}
\cvpersentry{Blog}{{\url{http://mulix.livejournal.com}}}
\end{cvpersonal}

\cvsection{OBJECTIVE}

\begin{cvobjective}

  \cvobjectiveentry{A technical leadership position in systems
  research, working on challenging research problems at the
  intersection of operating systems, virtual machines, and computer
  architecture.}

\end{cvobjective}

\cvsection{EMPLOYMENT HISTORY}

\begin{cvemployment}

  \cvemplentry{2003 --- Current} {Researcher and Master Inventor---IBM
  Haifa Research Lab, Israel.}  {As a researcher in HRL's systems
  department, I conceived, researched, designed and implemented
  systems alone, as part of a team, and while leading a team. For
  example, I:
  \begin{itemize}
  \item Researched, designed, implemented, and optimized operating
    system (Linux) and hypervisor (Xen) support for IBM's Calgary
    PCI-X and CalIOC2 PCI-e IOMMUs on the x86-64
    platform~\cvcite{iommu06}.
  \item Led a team of researchers working in the areas of I/O
    for virtualized systems (e.g., evaluating IOMMU
    performance~\cvcite{iommu07}) and core hypervisor technologies.
  \item Designed and implemented embedded firmware for the ``IP Only
    Server''~\cvcite{iponly06}, which had only CPU, memory and a
    network interface but could run standard, unmodified x86 operating
    systems.
  \item Worked on a flexible architecture for TCP
    acceleration~\cvcite{tcpaccel06}, machine learning for monitoring
    virtual machines~\cvcite{vigilant08}, combined memory and storage
    checkpointing of VMs~\cvcite{cdpvm08}, and on operating system
    support for programmable devices~\cvcite{hydra08}.
  \item Developed a proof-of-concept Linux network driver for an
    experimental ethernet adapter and embedded system software for the
    IBM DS6000 storage controller.
  \end{itemize}}

  \cvemplentry{2002} {Linux kernel Engineer - Qlusters, Inc., Tel
  Aviv, Israel.}  {As part of Qlusters' core kernel team I developed
  and maintained the core OS components of Qlusters' single system
  image Linux based cluster OS. I kept the code in sync with the
  latest Linux kernel, fixed bugs, and developed new features, such as
  distributed shared memory.}

  \cvemplentry{2000 --- 2001} {Programmer and Systems
  Analyst---Pointer Software Systems, Israel.}  {As a member of
  Pointer's team of consultants, I was responsible for designing and
  implementing creative solutions to customers' problems. For example,
  I designed and implemented an object serialization framework, an
  embedded database component for a large C++ application, and a cross
  platform library for communicating with GSM modems.}

  \cvemplentry{1997 --- 2000} {Programmer and Programming Team
  Leader---IDF, Intelligence Corps.}  {As a programmer and programming
  team leader in the IDF's Intelligence corps. I designed and
  implemented several projects dealing with parsing, understanding and
  representing large amounts of data.}

\end{cvemployment}

\newpage

\cvsection{SKILLS SUMMARY}

\begin{cvskills}

  \cvskillcat{Operating Systems}{Excellent knowledge of
     the Linux kernel, system libraries and software. Core Linux
     developer. Familiarity with several other operating systems and
     hypervisors.}

  \cvskillcat{Programming}{Excellent knowledge of C. Varying levels of
     proficiency in C++, Java, Perl, Python, ML, Pascal, Lisp, shells,
     x86 and PPC asm.}

  \cvskillcat{SW Engineering}{Well versed in all aspects of
     the software engineering process, including research, analysis,
     design, review, development, QA and verification.}

  \cvskillcat{Management}{Experienced in technical management of small
     groups of developers and managing geographically distributed
     software projects.}

  \cvskillcat{Communication}{Excellent oral and written communication
    skills, teaching and training experience. Frequent lecturer on
    technical subjects.}

\end{cvskills}

\cvsection{SELECTED PUBLICATIONS}

\begin{cvpubs}

  % hack
  \cvpubentry{hydra08}{Tapping into the Fountain of CPUs---On
     Operating Systems Support for Programmable Devices}{Weinsberg~Y.,
     Dolev~D., Anker~T., Ben-Yehuda~M., and Wyckoff~P, In ASPLOS~'08.}

  \cvpubentry{vigilant08}{Vigilant---Out-of-band Detection of
     Failures in Virtual Machines}{Pelleg~D., Ben-Yehuda~M., Harper~R.,
     Spainhower~L., and Adeshiyan~T., In ACM SIGOPS Operating Systems
     Review, 42(1): 26-31 (2008).}

  \cvpubentry{cdpvm08}{Virtual Machine Time Travel Using Continuous
     Data Protection and Checkpointing}{Ta-Shma~P., Laden~G.,
     Ben-Yehuda~M., and Factor~M., In ACM SIGOPS Operating Systems
     Review, 42(1): 127-134 (2008).}

  \cvpubentry{osr08}{Open Source as a Foundation for Systems
     Research}{Ben-Yehuda~M. and Van~Hensbergen~E., In ACM SIGOPS
     Operating Systems Review, 42(1): 2-4 (2008).}
    
  \cvpubentry{iommu07}{The Price of Safety: Evaluating IOMMU
     Performance}{Ben-Yehuda~M., Xenidis~J., Mostrows~M., Rister~K.,
     Bruemmer~A., Van~Doorn~L., In OLS ~'07, p. 9-20.}

  \cvpubentry{iponly06}{IP Only Server}{Ben-Yehuda~M., Goldshmidt~O.,
     Kolodner~E.~K., Machulsky~Z., Makhervaks~V., Satran~J., Segal~M.,
     Shalev~L., Shimony~I., In Proceedings of the 2006 USENIX Systems
     Practice and Experience Track (USENIX ~'06), p. 381-386.}

  \cvpubentry{iommu06}{Utilizing IOMMUs for Virtualization in Linux and
     Xen}{Ben-Yehuda~M., Mason~J., Krieger~O., Xenidis~J.,
     Van~Doorn~L., Mallick~A., Nakajima~J., Wahlig~E., In OLS ~'06,
     p. 71-86.}

  \cvpubentry{tcpaccel06}{Loosely Coupled TCP Acceleration
     Architecture}{Shalev~L., Makhervaks~V., Machulsky~Z., Biran~G.,
     Satran~J., Ben-Yehuda~M., Shimony~I., In HOTI~'06, p. 3-8.}

  \cvpubentry{Patents}{Patent disclosures}{Author of 16
    patent disclosures which have been submitted for filing to the
    USPTO. Full list is available upon request.}

\end{cvpubs}

\newpage

\cvsection{PROFESSIONAL SERVICE}

\begin{cvservice}

  \cvservicecat{PC \& General Co-Chair}{SYSTOR '07 virtualization workshop.}
  \cvservicecat{PC \& General Co-Chair}{WIOV '08 (First Workshop on I/O
  Virtualization).}
  \cvservicecat{Journal guest editor}{ACM SIGOPS Operating Systems Review,
  special issue on Research and Developments in the Linux kernel.}
  \cvservicecat{Publicity Chair}{SYSTOR '09.}
  \cvservicecat{PC Member}{SYSTOR '07, Xen Summit '08, WIOV '08, SYSTOR '09.}
  \cvservicecat{Member}{USENIX, ACM SIGOPS, EuroSys.}

\end{cvservice}

\cvsection{FREE SOFTWARE}

% we use the employment format for free software entries
\begin{cvemployment}

   \cvemplentry{Linux Kernel} {\url{http://www.mulix.org/kernel.html}}
   {I am an active Linux kernel developer, maintaining the Calgary
     IOMMU and contributing to other areas of the kernel.}
   \cvemplentry{KVM Hypervisor}
   {\url{http://kvm.qumranet.com/kvmwiki}} {I
     am an active KVM hypervisor developer. I am working on IOMMU
     support for KVM, and also contribute to other areas of the
     hypervisor.}
   \cvemplentry{Xen Hypervisor}
   {\url{http://www.cl.cam.ac.uk/research/srg/netos/xen/}} {I developed
     IOMMU support for Xen, and also contributed to other
     areas of the hypervisor.}
   \cvemplentry{syscalltrack}{\url{http://syscalltrack.sf.net}}
   {I co-founded the syscalltrack project, led it and was its most
      active developer. syscalltrack is a Linux kernel 2.4 based tool
      for debugging and monitoring a Linux system. I designed and
      implemented large parts of the kernel modules, the configuration
      and control utilities, the libraries and the testing framework.}
   \cvemplentry{ADSL/pptp}{\url{http://www.mulix.org/adsl.html}}
   {I reverse-engineered the pptp protocol and wrote patches to the
     pptp client to allow Linux users in Israel to connect to Bezeq's
     ADSL service.}
   \cvemplentry{Various}{\url{http://www.mulix.org/code.html}}
   {I contributed patches to several other free software projects.}
	
\end{cvemployment}

\cvsection{EDUCATION}

% use something that doesn't show the years...

\begin{cvobjective}

  \cvobjectiveentry{Partial studies in Computer Science in the
  Technion and the Open University, Haifa, Israel.}

\end{cvobjective}

\cvsection{LANGUAGES}

Fluent in Hebrew and English.

\cvsection{REFERENCES}

Available upon request.

\end{document}

%%% Local Variables:
%%% mode: latex
%%% TeX-master: t
%%% End:

