Integrate CV in website
All checks were successful
/ build (push) Successful in 5s

This commit is contained in:
David Gonzalez Martin 2025-03-20 21:37:02 +01:00
parent 53177b18c5
commit 6b0ef9e1b3
15 changed files with 205 additions and 8 deletions

2
.gitignore vendored
View File

@ -1,3 +1,5 @@
/index.html
/public/
/generate
.gdb_history
/intermediate

View File

@ -1,7 +1,18 @@
#!/usr/bin/env bash
set -eu
mkdir -p bin
clang src/generate.c -o bin/generate -std=gnu2x -g
rm -rf public || true
./bin/generate
cp -r pdf public/pdf
OWD=$PWD
INTERMEDIATE_DIR=$OWD/intermediate
export WEB_PUBLIC_DIRECTORY=$OWD/public
HT_LATEX_INTERMEDIATE_DIR=$INTERMEDIATE_DIR/htlatex
PDF_LATEX_INTERMEDIATE_DIR=$INTERMEDIATE_DIR/pdflatex
mkdir -p $HT_LATEX_INTERMEDIATE_DIR
mkdir -p $PDF_LATEX_INTERMEDIATE_DIR
clang src/generate.c -o $INTERMEDIATE_DIR/generate -std=gnu2x -g
rm -rf || true
cd src/resume
make4ht resume.tex $HT_LATEX_INTERMEDIATE_DIR -d $WEB_PUBLIC_DIRECTORY/resume
pdflatex resume.tex
cp resume.pdf $WEB_PUBLIC_DIRECTORY/resume
cd $OWD
$INTERMEDIATE_DIR/generate
cp -r pdf $WEB_PUBLIC_DIRECTORY/pdf

View File

@ -7,6 +7,7 @@
#include <stdint.h>
#include <errno.h>
#include <string.h>
#include <stdlib.h>
#define global_variable static
#define strlit_len(s) (sizeof(s) - 1)
@ -342,6 +343,12 @@ fn void write_body(Writer* writer)
{
write_line(writer, strlit("<body>"));
write_line(writer, strlit("This is my personal website"));
write_line(writer, strlit("<h2>Resume</h2>"));
write_line(writer, strlit("<ul>"));
write_line(writer, strlit("<li><a href=\"resume/resume.pdf\" target=\"_blank\">PDF</a></li>"));
write_line(writer, strlit("<li><a href=\"resume/resume.html\" target=\"_blank\">HTML (autogenerated from LaTeX)</a></li>"));
write_line(writer, strlit("</ul>"));
write_line(writer, strlit("</body>"));
}
@ -364,11 +371,30 @@ fn void write_document(Writer* writer)
html_end(writer);
}
fn const char* join_path2(const char* p1, const char* p2)
{
let(p1_length, strlen(p1));
let(p2_length, strlen(p2));
let(length, p1_length + p2_length + 2);
char* allocation = malloc(length);
size_t index = 0;
memcpy(&allocation[index], p1, p1_length);
index += p1_length;
allocation[index] = '/';
index += 1;
memcpy(&allocation[index], p2, p2_length);
index += p2_length;
allocation[index] = 0;
return allocation;
}
int main()
{
let(mkdir_result, mkdir("public", 0755));
assert(mkdir_result == 0);
int fd = open("public/index.html", O_TRUNC | O_WRONLY | O_CREAT, 0644);
char* public_directory = getenv("WEB_PUBLIC_DIRECTORY");
const char* index_html_path = join_path2(public_directory, "index.html");
int fd = open(index_html_path, O_TRUNC | O_WRONLY | O_CREAT, 0644);
assert(fd >= 0);
Writer writer = {};
write_document(&writer);

15
src/resume/.gitignore vendored Normal file
View File

@ -0,0 +1,15 @@
*.log
*.pdf
*.aux
*.cls
*.out
*.synctex.gz
*.4ct
*.4tc
*.css
*.html
*.idv
*.lg
*.tmp
*.xref
*.dvi

17
src/resume/about.tex Normal file
View File

@ -0,0 +1,17 @@
\section*{|| About me ||}
\paragraph{}I am extremely passionate about systems programming, always eager to learn and self-taught at several areas of computer science in general. I love to invest all my spare time into having a better picture of how computers work and programming my many hobby projects. I care about performance, simplicity and quality.
\begin{itemize}
\item[] \faPhone \space +34 674 874 862
\item[] \faPhone \space +52 221 706 7433
\item[] \faMailReply \space \href{mailto:davidgm94.work@protonmail.com}{davidgm94.work@protonmail.com}
\item[] \faLinkedin \space \href{https://linkedin.com/in/davidglezmar94}{https://linkedin.com/in/davidglezmar94}
\item[] \faGithub \space \href{https://github.com/davidgm94}{https://github.com/davidgm94}. Here's where you can keep track of all my personal development work.
\item[] Nationality: Spanish.
\item[] Current location: Spain, although I frequently visit Mexico.
\item[] Languages:
\begin{itemize}
\item Spanish (native).
\item English (full professional competence, Linguaskill certificate with C1 CEFR level. Score 180+).
\end{itemize}
\end{itemize}

View File

View File

@ -0,0 +1,4 @@
\paragraph*{}
I am extremely passionate about programming. I am always eager to learn and I am self-taught at several areas of computer science in general. I love to invest all my spare time into having a better picture of how computers work and programming my many hobby projects.
\paragraph*{}
I am looking for a remote programming role which cares about performance, simplicity and quality.

5
src/resume/education.tex Normal file
View File

@ -0,0 +1,5 @@
\section*{|| Education ||}
\subsection*{\underline{Bachelor degree in Computer science}}
\subsubsection*{(Open University of Catalonia, ended in 2024)}
\subsection*{\underline{Private mentorship with Andreas Fredriksson}}
The Principal Engineer at Unity volunteered to mentor me. We discussed professional career and explored low-level programming topics with a focus in speed, data and simplicity. He taught me how to properly face engineering problems that I considered interesting and complicated. In general he made me grow very much as a programmer.

View File

@ -0,0 +1,9 @@
\section*{|| Professional experience ||}
\subsection*{\underline{Game programmer at Casual Brothers (March 2022 - March 2024)}}
Freelance AAA programming with Unreal Engine 4 and 5. Evil Dead and unannounced title from Saber Interactive. AI programming and gameplay implementations (animations, movement, collision, navigation mesh, attacks, behavior trees, etc.), bug hunting and performance debugging in C++. Tools employed apart from the engine were Perforce, Visual Studio and several profilers, like Superluminal, Unreal and Microsoft tools.
\subsection*{\underline{Embedded software engineer at iGrid T\&D (August 2020 - January 2021)}}
Real-time systems programming. Architectures to be supported were x86 and ARM. The software must run both in desktop and embedded software, meeting the RAM and CPU constraints of the lowest-end hardware. Developed file transfer through serial port communication using IEC 60870-5-103 and REST web services for the software which the protection-monitoring devices in the electrical substations run.
\subsection*{\underline{Back-end developer at Koedia (September 2019 - August 2020)}}
Developed and maintain a hotel booking engine. I was in charge of integrating the driver for the top hotel chain in the UK and did most of the work for the project transition from Ant to Maven. Technologies used: Java, Spring, Tomcat, Hibernate, MySQL, GNU/Linux, Git, Ansible, etc.

12
src/resume/projects.tex Normal file
View File

@ -0,0 +1,12 @@
\section*{|| Most interesting personal projects ||}
\subsection*{\underline{Compiler from scratch: \href{https://github.com/birth-software/nativity}{\textbf{https://github.com/birth-software/nativity}}}}
\paragraph{}Nativity is the last of the three compilers I have written on my my spare time. The first and the last use LLVM, while the one in the middle was fully written by me. I have also tinkered with C transpiling, primitive register allocation and very simple optimization passes. Lexer, parser and semantic analysis were always written from scratch, so no generators were used. Nativity is the most ambitious one of the three. It can run and compile on x86\_64 and aarch64, Linux and MacOS. Windows support is planned after self-hosting. Currently it also embeds clang so LLVM can be compiled with Nativity itself, with an eye on restricting dependencies as much as possible.
\subsection*{\underline{Kernel from scratch: \href{https://github.com/birth-software/birth}{https://github.com/birth-software/birth}}}
Several very basic kernels written from scratch, from which Birth is the most advanced. It supports x86\_64 and aims to be an efficient, simple and secure multikernel. There are plans to port to aarch64 and riscv64. Currently it's on hold waiting for the compiler to be ready as the operating system is planned to be rewritten in Nat.
\subsection*{\underline{Metal bindings for Zig: \href{https://github.com/davidgm94/zig-metal}{https://github.com/davidgm94/zig-metal}}}
Project prototype to support Apple's Metal graphics API in Zig, interoperating with C and Objective-C for the purpose.
\subsection*{\underline{Game engine sketch: \href{https://github.com/davidgm94/glez}{https://github.com/davidgm94/glez}}}
Very basic game engine in which 3D model rendering and GUI debugging was implemented.

23
src/resume/resume.tex Normal file
View File

@ -0,0 +1,23 @@
\documentclass[10pt]{article}
\usepackage{hyperref}
\usepackage[margin=2.0cm]{geometry}
\usepackage{fontawesome}
\title{\vspace{-2.5cm}\textbf{David González Martín}}
\date{\vspace{-5ex}}
\begin{document}
\maketitle{\vspace{-1.5cm}}
\input{about.tex}
\input{experience.tex}
\input{projects.tex}
\input{skills.tex}
\input{soft_skills.tex}
\input{education.tex}
\end{document}

View File

@ -0,0 +1,24 @@
\documentclass[10pt]{article}
\usepackage{hyperref}
\usepackage[margin=2.0cm]{geometry}
\title{\vspace{-2.5cm}\textbf{David González Martín}}
\date{\vspace{-5ex}}
\begin{document}
\maketitle{\vspace{-1.5cm}}
\input{description_java.tex}
\input{about.tex}
\input{experience.tex}
\input{projects.tex}
\input{skills_java.tex}
\input{soft_skills.tex}
\input{education.tex}
\end{document}

26
src/resume/skills.tex Normal file
View File

@ -0,0 +1,26 @@
\section*{|| Technical skills ||}
\begin{itemize}
\item I have been programming in C and C++ for almost 3 years professionally and 7 years on my spare time as an enthuastic hobby programmer. I aim for simplicity, safety and speed when programming. Fairly good understanding of assembly language (x86-64). Thorough experience integrating and using libraries, such as LLVM, GLFW, Dear ImGUI, STB single-header libraries, sokol, meshoptimizer, Volk, Raylib, Qt, Expat, JSMN...
\item Comfortable in both command-line and graphical environments and qualified in systems programming, both Windows (Batch, Win32) and Unix (Bash, POSIX).
\item Fond of data-oriented programming. You have to know the platform and the data you are working with in order to obtain the solution of your problem. Passion for computer architecture and hardware understanding in order to get the most out of it. Object-oriented design understanding. Professional experience in both of them.
\item Compiler engineering experience developing several toy programming languages with a tendency to restrict dependencies, own the code and respect compile times.
\item Very brief personal experience with low-level graphics APIs, such as Vulkan, OpenGL and DirectX (11, 12), having practiced more with the open-source ones. Fairly good understanding of game engines and the GPU pipeline.
\item Fairly in-depth understanding of how an operating system kernel works, performance constraints and hardware-software interaction details. Developed some operating system kernels from scratch with very primitive functionality.
\item Expertise working with files, parsing and generating them, both text and binary formats.
\item Language interoperability based on the C ABI. Binding creation to interoperate between C, C++, Objective-C, Rust and Zig. More than decent understanding of how linkers work.
\item API design and project organization.
\item Use of build systems like CMake, MSBuild, Makefile, Zig Build, Maven and Ant, both professionally and personally.
\item Use of version control systems such as Git, Perforce or CVS, both professionally and personally.
\item Experience with other programming languages, like Zig, Java, Rust and Python.
\end{itemize}

View File

@ -0,0 +1,14 @@
\section*{|| Technical skills ||}
\begin{itemize}
\item Comfortable in Java with more than 2 years of experience, being able to maintain and expand big back-end systems and write web services. Knowledge of Spring, Hibernate, Tomcat, MySQL, Ant, Maven...
\item Proficient in C and C++ with over 4 fully-dedicated years of programming experience in them. Assembly understanding. Thorough experience integrating and using static and dynamic libraries. Qualified in systems programming, both Unix (POSIX) and Windows (Win32).
\item Comfortable in command-line environments and scripting, both Windows (Batch) and Unix (Bash, Fish)
\item Professional experience with both object-oriented programming, data-oriented programming.
\item Personal experience developing toy compilers, kernels and game engines from scratch.
\item Expertise working with files, parsing and generating them, both text and binary formats.
\item Binding creation to interoperate between C, C++, Objective-C and Zig.
\item API design and project organization.
\item Use of build systems like Maven, Ant, CMake, MSBuild and Makefile.
\item Use of version control systems such as Git or CVS, both professionally and personally.
\item Experience with other programming languages, like Rust and Python.
\end{itemize}

View File

@ -0,0 +1,9 @@
\section*{|| Soft skills ||}
\begin{itemize}
\item Fast development and experience having in charge projects started from scratch.
\item Quick adaption to new challenges and willingness and ability to learn new development technologies.
\item Problem-solving mentality and critical thinking.
\item Used to deal with large and legacy codebases.
\item Proven ability to work and coordinate with teammates.
\item I always carry a smile with me.
\end{itemize}